Memorable and reasonably collision-resistant identifiers with corresponding hashes; built using Node v12.13.0 and Typescript.
npm i --save @shovelandsandbox/humanid
or yarn add @shovelandsandbox/humanid
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
(prefix)-(color attribute)-[color]-[adjective]-[animal]-(suffix)
option | type | default |
---|---|---|
prefix | `string | (...args: any) => string` |
suffix | `string | (...args: any) => string` |
includeColorAttribute | boolean |
false |
separator | string |
- |
// 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;
};
randomHexSeed
- Allow dictionary overrides
- Expand
randomHexSeed
to allow overriding the generated buffer, format, and length
bitjson/typescript-starter—for providing such a painless tsc library starter kit and hashing