The trimid is an identifier generation system which provide mongodb's ObjectId system with following modifications.
- 5 bytes to store timestamp value (which will result in the date of 36812-02-20 UTC)
- 4 bytes to store machine id (which is a fnv1a32 hash of hostname by default)
- 4 bytes to store process / subprocess / thread identifier (which is a fnv1a32 hash of the process/thread ids)
- 3 bytes to store incrementing counter, which is randomly initialized
Use the following command to install the module:
npm install trimid
// Grab trimid module
const TrimId = require('trimid');
// Generate new trimid
const new_id = TrimId.NEW;
// Convert id to a comparable string (base32hex format)
const string_id = new_id.toString(); //01i20mgo1b3toqjm7oa21erbis
// Restore an trimid instance from base32hex string
const restore_id = TrimId.from('01i20mgo1b3toqjm7oa21erbis');
// Use the following statment if you want to change machine id and session id
TrimId._base('some hostname', `new_session_id,${process.pid}.${process.ppid}`);
// The generated id's machine id and session id will be changed
const id_with_new_machine_id = Trim.NEW;
This module also provides a command that allow user generates a new uniqid string via CLI. To use the command, install the module globally first.
npm install -g trimid
The use the following command to generate base32hex uniqid string
uniqid
Or if you want to generate binanry stream and perform custom encoding yourself.
uniqid --binary | base64