semantic-password-generator
TypeScript icon, indicating that this package has built-in type declarations

6.4.0 • Public • Published

semantic-password-generator

Build Status dependencies Status Code Climate JavaScript Style Guide

Secure passwords that humans can read 🔒💬

Install

// pick up your style!
yarn add semantic-password-generator
npm install semantic-password-generator

Usage

The Semantic Password Generator (spg) uses the official Wikipedia API to get random articles which are transformed into the passwords. Hence, to allow a better usage of the network bandwich spg generates the password in 2 steps:

  1. Load a generator with a Wikipedia article
  2. Use the generator to get passwords
import spg from 'semantic-password-generator'
 
const generator = await spg()
const password = generator()

You can then safely generate multiple (similar) passwords with the same generator.

while (passwords.length < 50) {
  passwords.push(generator())
}

The generator accepts a length argument. Note that the length won't be enforced. This means that if you want, say, a 10 chars length password. spg probably will return a bit longer one that you can trim if you want to. This is because spg tries to keep a logic sentences as much as possible and forcing a hard length will cut the last word almost all the times.

const spg = require('semantic-password-generator')
 
spg().then((generator) => {
  const password = generator(32)
})

Notice that internally spg ensures a minimum password length of 8. And a maximum as large as the Wikipedia article can provide. If you need less than 8 (please don't) you can trim it. If you want a larger one you can combine multiple generated passwords.

Demo

To explore the lib and explore it check out the /demo directory. Here's a snapshot of the final component:

import React from 'react'
import spg from 'semantic-password-generator'
 
class App extends React.Component {
  constructor (props) {
    super(props)
    this.renewGenerator()
    this.state = { password: '' }
  }
 
  async renewGenerator () {
    this.generator = await spg()
  }
 
  onClickGenerate () {
    return () => {
      if (this.generator) {
        // always renew the generator to get 100% different passwords
        this.renewGenerator()
        // using the current generator create a new one with default values
        this.setState({
          password: this.generator()
        })
      }
    }
  }
 
  render () {
    return (
      <div>
        <p>{this.state.password}</p>
        <button onClick={this.onClickGenerate()}>
          Generate
        </button>
      </div>
    )
  }
}

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 6.4.0
    2
    • latest

Version History

Package Sidebar

Install

npm i semantic-password-generator

Weekly Downloads

2

Version

6.4.0

License

MIT

Unpacked Size

66.6 kB

Total Files

35

Last publish

Collaborators

  • sospedra