Files
Snowflakey/tests/snowflake.test.ts
2019-08-05 19:26:05 +02:00

41 lines
1.5 KiB
TypeScript

// require & generate the instance
import * as Snowflake from '../lib/snowflakey';
const master = new Snowflake.Master();
const worker = new Snowflake.Worker({
name: 'starling',
epoch: 1420070400000,
workerId: process.env.CLUSTER_ID || 31,
processId: process.pid || undefined,
workerBits: 8,
processBits: 0,
incrementBits: 14
});
master.addWorkers(worker);
// Using the worker directly
const flake = worker.generate();
console.log('----------[ Worker ]----------')
console.log(`Created snowflake: ${flake}`);
console.log(`Creation date : ${Snowflake.lookup(flake, worker.options.epoch).toLocaleString()}`);
console.log(`Deconstructed : ${worker.deconstruct(flake).timestamp.valueOf()}`);
// Using the master to get events
console.log('----------[ Master ]----------')
master.on('newSnowflake', (data) => {
console.log(`created snowflake: ${data.snowflake.toString()} by Worker ${data.worker.options.name || data.worker.options.workerId}`)
console.log(`Creation date : ${Snowflake.lookup(flake, data.worker.options.epoch).toLocaleString()}`);
data.worker.deconstruct(data.snowflake);
});
master.on('deconstructedFlake', (data) => {
console.log(`Deconstructed : ${data.timestamp.valueOf()} by Worker ${data.worker.options.name || data.worker.options.workerId}`);
});
worker.generate();
console.log(`Workers before : ${master.listWorkers().length}`);
master.removeWorkers(worker.options.name);
console.log(`Workers after : ${master.listWorkers().length}`);