node-verification-code
Advanced tools
+6
-4
@@ -20,3 +20,3 @@ { | ||
| }, | ||
| "version": "1.1.5", | ||
| "version": "1.1.6", | ||
| "license": "MIT", | ||
@@ -33,5 +33,6 @@ "keywords": [ | ||
| "prebundle": "rm -rf dist", | ||
| "bundle": "yarn run ts:types && node bundle.js", | ||
| "pretest": "yarn run bundle", | ||
| "test": "node test", | ||
| "bundle": "npm run ts:types && node bundle.js", | ||
| "pretest": "npm run bundle", | ||
| "test": "NODE_V8_COVERAGE=coverage node --test test/*.test.js", | ||
| "coverage": "npm run test && c8 report --temp-directory=coverage", | ||
| "lint": "eslint ./lib/**/*.ts", | ||
@@ -47,2 +48,3 @@ "prepare": "is-ci || husky install" | ||
| "@typescript-eslint/parser": "^5.30.5", | ||
| "c8": "^10.1.2", | ||
| "esbuild": "^0.14.23", | ||
@@ -49,0 +51,0 @@ "eslint": "^8.19.0", |
+26
-8
@@ -18,3 +18,3 @@ # Verification code generator for Node.js | ||
| If digital codes is only what you need - just use **getDigitalCode** | ||
| If digital codes is only what you need - just use shortcut **getDigitalCode** | ||
@@ -28,4 +28,13 @@ ```js | ||
| You can create custom generator in two ways. Simpliest - using **sequenceFromAlphabet** helper function as follows: | ||
| ## Own alphabet | ||
| Library is built on two entites: | ||
| * **generator** - function which generates `Buffer` with random content any length. It utilises sequence-function to produce random sequences | ||
| * **sequence-function** - function which provides sequence of random elements (*up to 10 symbols*) | ||
| > Although sequence size is limited to 10 symbols, it doesn't mean you cannot generate longer codes. Generator will call sequence-function multiple times to get code with desired length. | ||
| So, to create own code generator you will need to create your own sequence-function. To do so you can simply use **sequenceFromAlphabet** shortcut as follows: | ||
| ```js | ||
@@ -40,6 +49,6 @@ const { sequenceFromAlphabet, createGenerator } = require('node-verification-code') | ||
| getEmojiCode(4) // -> for example: 🐹🐭🐹🐰 | ||
| getEmojiCode(4).toString() // -> for example: 🐹🐭🐹🐰 | ||
| ``` | ||
| You can also create your sequence function by hand: | ||
| Also, you can create your own sequence function by hand, just implement `(number) => string` contract and pass it to `createGenerator`: | ||
@@ -49,6 +58,15 @@ ```js | ||
| // only shown as example, don't do this in real code - crypto module produces better results | ||
| const mathRandomSequence = (charCount) => Math.floor(Math.random() * charCount) | ||
| /* | ||
| !!! only shown as example, don't do this in real code - crypto module produces better results | ||
| Sequence-function contract implementation: | ||
| (number) => string | ||
| */ | ||
| const mathRandomSequence = (charCount) => '0'.repeat(charCount).replaceAll('0', () => Math.floor(Math.random() * 10)) | ||
| // Create code generator from sequence | ||
| const makeMyOwnVerificationCode = createGenerator(mathRandomSequence) | ||
| // Generate code | ||
| makeMyOwnVerificationCode(4).toString() // -> for example: '2108' | ||
| ``` | ||
@@ -59,3 +77,3 @@ | ||
| ```sh | ||
| yarn add node-verification-code | ||
| npm install node-verification-code | ||
| ``` | ||
@@ -66,3 +84,3 @@ | ||
| ```sh | ||
| yarn test | ||
| npm run test | ||
| ``` | ||
@@ -69,0 +87,0 @@ |
-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)_ |
96
23.08%9138
-25.25%10
11.11%5
-16.67%