UNPKG

omgopass

Version:

A tiny memorable password generator for Node.js and browsers

97 lines (71 loc) 4.34 kB
# omgopass [![npm](https://img.shields.io/npm/v/omgopass.svg?color=%2356C838)](https://www.npmjs.com/package/omgopass) [![Build Status](https://travis-ci.com/omgovich/omgopass.svg?branch=master)](https://travis-ci.com/omgovich/omgopass) ![Dependencies](https://img.shields.io/david/omgovich/omgopass) A tiny memorable password generator - **Fast**: [600 times](#benchmark) faster than `password-generator` - **Small**: 322 bytes (minified and gzipped) - **Secure**: Uses [cryptographically strong random API](https://nodejs.org/api/crypto.html) instead of `Math.random` - **No dependencies** - Supports Node.js and browsers Why you should consider using **omgopass** in your project? The library's goal is to provide the fastest and the smallest (in terms of the bundle size) password generation solution. We have performed a bunch of [benchmarks](#benchmark) against popular password generation libraries, and omgopass currently beats them all. ### [Generate password online](https://omgovich.github.io/omgopass/) <img src="https://omgovich.github.io/omgopass/demo.gif" width="400"> ### Install ``` npm install omgopass --save ``` ### Usage ```js import generatePassword from "omgopass"; const password = generatePassword(); // "Tu6Log5Bam4" ``` #### Advanced Usage ```js generatePassword({ hasNumbers: false }); // "MunBedKod" generatePassword({ syllablesCount: 5 }); // "Rot2Ba5Vim1My8Red4" generatePassword({ titlecased: false }); // "si5co3ve8" generatePassword({ syllablesCount: 4, minSyllableLength: 3, maxSyllableLength: 4, hasNumbers: false, titlecased: true, separators: "-_", vowels: "аеиоуэюя", consonants: "бвгджзклмнпрстчш" }); // "Зер_Коти-Лов_Меч" ``` #### Recipe: Generate random passphrase Looking for long passwords that are easy to remember but hard to guess? Try to generate random passphrase instead. ```js generatePassword({ minSyllableLength: 4, maxSyllableLength: 6, hasNumbers: false, titlecased: false, separators: " " }); // "goferu lipeba cyzex" ``` #### Available options | Name | Description | Default | | ------------------- | --------------------------------------- | -------------------- | | `syllablesCount` | Integer, count of syllables | `3` | | `minSyllableLength` | Integer, minimal length of a syllable | `2` | | `maxSyllableLength` | Integer, max length of a syllable | `3` | | `hasNumbers` | Boolean, put numbers in the password | `true` | | `titlecased` | Boolean, use titlecase | `true` | | `vowels` | String, vowel alphabet | `'aeiouy'` | | `consonants` | String, consonant alphabet | `'bcdfghklmnprstvz'` | | `separators` | String, symbols that separate syllables | `''` | ### Benchmark | name | ops/sec | size (bytes) | memorable | browser | node | | ---------------------- | ------------- | ------------ | --------- | ------- | ---- | | omgopass | **1 430 233** | **322** | true | true | true | | password-generator | 2 163 | 644 | true | true | true | | generate-password | 696 006 | 740 | false | false | true | | randomatic | 29 796 | 1 740 | false | true | true | | secure-random-password | 7 622 | 8 939 | false | true | true | | niceware | 327 805 | 195 584 | true | true | true | | xkpasswd | 793 456 | 732 160 | true | false | true | Benchmark results were generated on a MBP 2018, 2,3 GHz Intel Core i5. To perform these tests, execute `npm run benchmark` in the library folder. ### Supporting IE11 and obsolete platforms This library uses features like [destructuring assignment](https://kangax.github.io/compat-table/es6/#test-destructuring,_assignment) and [`const/let` declarations](https://kangax.github.io/compat-table/es6/#test-const) and doesn't ship with ES5 transpiled sources. If you aim to support browsers like IE11 and below → make sure you run Babel over your `node_modules`