snowflake-based invite generation

This commit is contained in:
Erkin Alp Güney
2021-11-28 11:25:41 +03:00
parent fc7df1718c
commit 6d2ae89a3b
2 changed files with 26 additions and 4 deletions

View File

@@ -21,7 +21,7 @@ export class Snowflake {
}
/**
* A Twitter snowflake, except the epoch is 2015-01-01T00:00:00.000Z
* A Twitter-like snowflake, except the epoch is 2015-01-01T00:00:00.000Z
* ```
* If we have a snowflake '266241948824764416' we can represent it as binary:
*
@@ -83,14 +83,17 @@ export class Snowflake {
return dec;
}
static generate() {
static generateWorkerProcess() { // worker process - returns a number
var time = BigInt(Date.now() - Snowflake.EPOCH) << BigInt(22);
var worker = Snowflake.workerId << 17n;
var process = Snowflake.processId << 12n;
var increment = Snowflake.INCREMENT++;
return (time | worker | process | increment).toString();
return BigInt(time | worker | process | increment);
}
static generate() {
return Snowflake.generateWorkerProcess().toString();
}
/**
* A deconstructed snowflake.
* @typedef {Object} DeconstructedSnowflake