Package Exports
- scuid
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (scuid) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
scuid
Collision-resistant IDs optimized for horizontal scaling and performance.
A slim, alternative, and compatible implementation of cuid for node, also featuring a wide range of options, as well as custom random number generator support. It can serve as a drop-in replacement, and is also faster than cuid.
Install via npm
$ npm install --save scuidUsage
var scuid = require( 'scuid' )Generate an ID
var id = scuid()
> 'ciux3hs0x0000io10cusdm8r2'Generate a slug
var slug = scuid.slug()
> '6x1i0r0'Get the process' fingerprint
var fingerprint = scuid.fingerprint()
> 'io10'Use a custom (P)RNG
// Create a random number generator;
// It has to have a method called `random`
var generator = {
random: function() {
return 5 // chosen by fair dice roll
}
}
// Create a custom scuid instance
var scuid = require( 'scuid' ).create({
rng: generator
})Use other custom options
Note that fiddeling with these might make your IDs incompatible with cuid's guarantees.
var scuid = require( 'scuid' ).create({
prefix: 'c', // the ID's prefix
base: 36, // radix used in .toString() calls (2-36)
blockSize: 4, // block size to pad and trim to
fill: '0', // block padding character
pid: process.pid, // process ID
fingerprint: scuid.createFingerprint( [pid], [hostname] ), // Machine fingerprint
rng: Math, // Random number generator
})Tests
Just like cuid, collision resistance for both – slugs and IDs – is tested
over 1 million and 2 million iterations respectively.
To run the tests, run:
$ npm testBenchmarks
$ npm run benchmarkscuid
id ............................................. 573,618 op/s
slug ........................................... 673,732 op/s
fingerprint .................................... 131,156,394 op/s
cuid
id ............................................. 445,260 op/s
slug ........................................... 531,770 op/s
fingerprint .................................... 125,159,685 op/s