Skip to content

shovelandsandbox/humanid

Repository files navigation

Human ID

Memorable and reasonably collision-resistant identifiers with corresponding hashes; built using Node v12.13.0 and Typescript.

Installation

npm i --save @shovelandsandbox/humanid or yarn add @shovelandsandbox/humanid

Usage

import { humanid, isSegmentGenerator } from '@shovelandsandbox/humanid'

const getSuffix = () => 'randomSuffix'
const [id, hash] = humanid()
const [id2] = humanid({ suffix: getSuffix })

console.log(isSegmentGenerator(getSuffix)) // true
console.log(id) // magenta-jealous-deer-b17de
console.log(hash) // befb40615238054022dd92934aa65cc14ead1c0812e6c05830aef6aa1b4bfeba
console.log(id2) // gold-acute-beaver-randomSuffix

Identifier Anatomy

(prefix)-(color attribute)-[color]-[adjective]-[animal]-(suffix)

Options

option type default
prefix `string (...args: any) => string`
suffix `string (...args: any) => string`
includeColorAttribute boolean false
separator string -

Dictionaries

animals

adjectives

color-attributes

colors

Other Exports/Utilities

Types

// string generator function
export type SegmentGenerator = (...args: any) => string;

// type guard
export const isSegmentGenerator = (v: any): v is SegmentGenerator =>
  v !== null && (v as SegmentGenerator).call !== undefined;

export type Configuration = {
  prefix?: string | SegmentGenerator;
  suffix?: string | SegmentGenerator;
  separator?: string;
  includeColorAttribute?: boolean;
};

Functions

randomHexSeed

Roadmap

  • Allow dictionary overrides
  • Expand randomHexSeed to allow overriding the generated buffer, format, and length

Credits & Thanks

bitjson/typescript-starter—for providing such a painless tsc library starter kit and hashing

About

Memorable and reasonably collision-resistant identifiers with corresponding hashes

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published