@shovelandsandbox/humanid
v0.2.2
Published
Memorable and reasonably collision-resistant identifiers
Downloads
3
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