2020-10-24 15:00:42 +00:00
|
|
|
export class Snowflake {
|
|
|
|
snowflake: bigint
|
|
|
|
constructor (id: string) {
|
|
|
|
this.snowflake = BigInt.asUintN(64, BigInt(id))
|
|
|
|
}
|
|
|
|
|
2020-10-25 17:03:53 +00:00
|
|
|
get timestamp (): string {
|
|
|
|
return ((this.snowflake >> 22n) + 1420070400000n).toString()
|
2020-10-24 15:00:42 +00:00
|
|
|
}
|
|
|
|
|
2020-10-25 17:03:53 +00:00
|
|
|
get workerID (): string {
|
|
|
|
return ((this.snowflake & 0x3e0000n) >> 17n).toString()
|
2020-10-24 15:00:42 +00:00
|
|
|
}
|
|
|
|
|
2020-10-25 17:03:53 +00:00
|
|
|
get processID (): string {
|
|
|
|
return ((this.snowflake & 0x1f00n) >> 12n).toString()
|
2020-10-24 15:00:42 +00:00
|
|
|
}
|
|
|
|
|
2020-10-25 17:03:53 +00:00
|
|
|
get increment (): string {
|
|
|
|
return (this.snowflake & 0xfffn).toString()
|
2020-10-24 15:00:42 +00:00
|
|
|
}
|
|
|
|
}
|