/pwgen

A password generator compiled as Wasm for use on the CLI, in a custom element, or as a module.

Primary LanguageHTMLGNU Affero General Public License v3.0AGPL-3.0

A password generator compiled as Wasm for use on the CLI, in a custom element, or as a module.

Use with the CLI on Mac, Windows, and Linux

npm version wapm version

With npx

npx pwgen -sy 20 1

With npm, as a global package

npm i -g pwgen
pwgen -sy 20 1

With wapm

wapm install kherrick/pwgen
wapm run pwgen -sy 20 1

Use in HTML (demo)

<x-pwgen
  composed
  flags="-sy"
  length="20"
  number="1"
></x-pwgen>

<script type="module">
  import 'https://unpkg.com/pwgen'

  document.addEventListener(
    'x-pwgen-handle-password',
    ({ detail }) => {
      console.log(detail.msg)
    }
  )
</script>

Use in React

npm i pwgen
import React from 'react';
import 'pwgen';

const App: React.FC = () => {
  return (
    <x-pwgen></x-pwgen>
  )
}

Use in Angular

npm i pwgen

Within the component:

import { Component, OnInit } from '@angular/core';
import { pwgen } from 'pwgen';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
  password: string = '';

  ngOnInit() {
    pwgen({
      arguments: ['-sy', '20', '1'],
      print: (password: string) => (
        this.password = password
      ),
    });
  }
}

Within the template:

<ng-container>{{ password }}</ng-container>

Use in Node.js

npm i pwgen
const pwgen = require('pwgen')

const flags = '-1sy'
const length = '20'
const number = '10'

pwgen({
  arguments: [ flags, length, number ],
  print: stdout => {
    console.log(`Password: ${stdout}`)
  }
})

Test the experimental web bundle

Download pwgen.wbn

Read more about web packaging

Develop

Requirements

Clone the project and submodules

git clone https://github.com/kherrick/pwgen \
  && cd pwgen \
  && git submodule update --init --recursive

Start

npm start

Build

npm run build

Get Help

Show command line usage and available options (flags):

npx pwgen --help
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]

Options supported by pwgen:

  -c or --capitalize
  Include at least one capital letter in the password

  -A or --no-capitalize
  Don't include capital letters in the password

  -n or --numerals
  Include at least one number in the password

  -0 or --no-numerals
  Don't include numbers in the password

  -y or --symbols
  Include at least one special symbol in the password

  -r <chars> or --remove-chars=<chars>
  Remove characters from the set of characters to generate passwords

  -s or --secure
  Generate completely random passwords

  -B or --ambiguous
  Don't include ambiguous characters in the password

  -h or --help
  Print a help message

  -H or --sha1=path/to/file[#seed]
  Use sha1 hash of given file as a (not so) random generator

  -C
  Print the generated passwords in columns

  -1
  Don't print the generated passwords in columns

  -v or --no-vowels
  Do not use any vowels so as to avoid accidental nasty words