node-verification-code
Advanced tools
+80
| # Node.js библиотека для генерации кодов подтверждения | ||
|  | ||
| [](#) | ||
| > Простая библиотека без зависимостей для генерации случайных кодов для Node.js | ||
| Эта библиотека использует встроенный в Node.js модуль `crypto` для эффективной генерации случайных цифровых последовательностей, также вы можете написать собственную функцию для генерации последовательностей используя простой контракт: `function (charCount: number <MAX 10>) => string` | ||
| ## Использование | ||
| Если вам нужны исключительно цифровые коды - вы можете просто использовать функцию **getDigitalCode** | ||
| ```js | ||
| const { getDigitalCode } = require('node-verification-code') | ||
| const smsVerificationCodeBuffer = getDigitalCode(4) // Возвращает nodejs буфер, содержащий 4 случайных цифры | ||
| // sendSms(phone, smsVerificationCodeBuffer.toString()) | ||
| ``` | ||
| ## Собственный алфавит | ||
| Библиотека работает на базе двух сущностей: | ||
| * генератор - функция для генерации буферов с случайным содержимым произвольной длины использующая функцию-последовательность | ||
| * последовательность - функция для построения строк из случайных элементов (до 10 символов) | ||
| Библиотека предоставляет несколько вспомогательных функций для изменения поведения под ваши задачи. | ||
| Например, если вам нужно использовать собственный алфавит, то самый простой способ - использовать вспомогательную функцию **sequenceFromAlphabet**, как показано в примере ниже: | ||
| ```js | ||
| const { sequenceFromAlphabet, createGenerator } = require('node-verification-code') | ||
| // Создаём последовательность из алфавита - массива с символами | ||
| const emojiSequence = sequenceFromAlphabet(['🐶', '🐱', '🐭', '🐹', '🐰']) | ||
| // Создаём генератор на основе последовательности | ||
| const getEmojiCode = createGenerator(emojiSequence) | ||
| // Генерируем случайные последовательности символов алфавита | ||
| getEmojiCode(4) // -> Например: 🐹🐭🐹🐰 | ||
| ``` | ||
| Кроме того, вы можете составить собственную функцию-последовательность вручную: | ||
| ```js | ||
| const { createGenerator } = require('node-verification-code') | ||
| // Не используйте Math.random, показано только в демонстративных целях | ||
| const mathRandomSequence = (charCount) => Math.floor(Math.random() * charCount) | ||
| // Создаём генератор | ||
| const makeMyOwnVerificationCode = createGenerator(mathRandomSequence) | ||
| ``` | ||
| ## Установка | ||
| ```sh | ||
| yarn add node-verification-code | ||
| ``` | ||
| ## Модульное тестирование | ||
| ```sh | ||
| yarn test | ||
| ``` | ||
| ## Автор | ||
| 👤 **Томинов Сергей** | ||
| * Website: https://ikfi.ru | ||
| * Dzen: [@tominoff](https://dzen.ru/tominoff) | ||
| * Github: [@ikenfin](https://github.com/ikenfin) | ||
| ## Поддержите проект | ||
| Поставьте ⭐️ этому репозиторию, если проект помог вам! | ||
| *** | ||
| _This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_ |
+1
-0
| /// <reference types="node" /> | ||
| declare module "lib/types" { | ||
| import type { Buffer } from 'node:buffer'; | ||
| export type RandomSequenceGeneratorFn = (charCount: number) => string; | ||
@@ -4,0 +5,0 @@ export type ChunkedCodeGeneratorFn = (charCount: number) => Buffer; |
@@ -47,7 +47,7 @@ var __defProp = Object.defineProperty; | ||
| // lib/sequence.ts | ||
| var import_crypto = require("crypto"); | ||
| var numericSequence = (size) => (0, import_crypto.randomInt)(0, Math.pow(10, size) - 1).toString().padStart(size, "0"); | ||
| var sequenceFromAlphabet = (alphabet = []) => (charCount) => Array(charCount).fill("").map(() => alphabet[(0, import_crypto.randomInt)(0, alphabet.length)]).join(""); | ||
| var import_node_crypto = require("node:crypto"); | ||
| var numericSequence = (size) => (0, import_node_crypto.randomInt)(0, Math.pow(10, size) - 1).toString().padStart(size, "0"); | ||
| var sequenceFromAlphabet = (alphabet = []) => (charCount) => Array(charCount).fill("").map(() => alphabet[(0, import_node_crypto.randomInt)(0, alphabet.length)]).join(""); | ||
| // lib/generators.ts | ||
| var getDigitalCode = createGenerator(numericSequence); |
@@ -19,3 +19,3 @@ // lib/createGenerator.ts | ||
| // lib/sequence.ts | ||
| import { randomInt } from "crypto"; | ||
| import { randomInt } from "node:crypto"; | ||
| var numericSequence = (size) => randomInt(0, Math.pow(10, size) - 1).toString().padStart(size, "0"); | ||
@@ -22,0 +22,0 @@ var sequenceFromAlphabet = (alphabet = []) => (charCount) => Array(charCount).fill("").map(() => alphabet[randomInt(0, alphabet.length)]).join(""); |
+1
-1
@@ -20,3 +20,3 @@ { | ||
| }, | ||
| "version": "1.1.3", | ||
| "version": "1.1.4", | ||
| "license": "MIT", | ||
@@ -23,0 +23,0 @@ "keywords": [ |
+0
-2
| # Verification code generator for Node.js | ||
|  | ||
| [](#) | ||
| [](https://twitter.com/realtominoff) | ||
@@ -65,3 +64,2 @@ > Simple library to generate verification codes without dependencies for Node.js. | ||
| * Website: https://ikfi.ru | ||
| * Twitter: [@realtominoff](https://twitter.com/realtominoff) | ||
| * Github: [@ikenfin](https://github.com/ikenfin) | ||
@@ -68,0 +66,0 @@ |
12032
49.28%6
20%102
0.99%72
-2.7%