README
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 |
null |
suffix | string | (...args: any) => string |
randomHexSeed() |
includeColorAttribute | boolean |
false |
separator | string |
- |
Dictionaries
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