@tabsircg/snowflake 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -23
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -11,20 +11,8 @@ export type SnowflakeId<T extends boolean> = T extends true ? string : bigint;
|
|
|
11
11
|
* const id = generator(); // 1234567890123456789n
|
|
12
12
|
* const stringId = generator(true); // "1234567890123456789"
|
|
13
13
|
*/
|
|
14
|
-
export declare const createSnowflakeGenerator: <T extends boolean = false>(workerId: number, datacenterId: number, returnAsString?: T) =>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* @param timestamp - Unix timestamp in milliseconds
|
|
19
|
-
* @param workerId - Worker ID (default: 0 for minimum possible ID)
|
|
20
|
-
* @param datacenterId - Datacenter ID (default: 0 for minimum possible ID)
|
|
21
|
-
* @param sequence - Sequence number (default: 0 for minimum possible ID)
|
|
22
|
-
* @returns Snowflake ID as BigInt
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* // Get threshold for deleting records older than 30 days
|
|
26
|
-
* const thirtyDaysAgo = Date.now() - (30 * 24 * 60 * 60 * 1000);
|
|
27
|
-
* const threshold = generateTimestampSnowflake(thirtyDaysAgo);
|
|
28
|
-
*/
|
|
29
|
-
export declare const generateTimestampSnowflake: (timestamp: number, workerId: number, datacenterId: number, sequence: number) => bigint;
|
|
14
|
+
export declare const createSnowflakeGenerator: <T extends boolean = false>(workerId: number, datacenterId: number, returnAsString?: T) => {
|
|
15
|
+
generateId: () => SnowflakeId<T>;
|
|
16
|
+
generateIdWithTimestamp: (timestamp: number, workerIdOverride?: number, datacenterIdOverride?: number, sequenceOverride?: number) => SnowflakeId<T>;
|
|
17
|
+
};
|
|
30
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9E;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,OAAO,GAAG,KAAK,EAChE,UAAU,MAAM,EAChB,cAAc,MAAM,EACpB,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9E;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,OAAO,GAAG,KAAK,EAChE,UAAU,MAAM,EAChB,cAAc,MAAM,EACpB,iBAAiB,CAAC;sBA4CK,WAAW,CAAC,CAAC,CAAC;yCAlBxB,MAAM,qBACE,MAAM,yBACF,MAAM,qBACX,MAAM,KACvB,WAAW,CAAC,CAAC,CAAC;CAkDlB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -45,7 +45,17 @@ export const createSnowflakeGenerator = (workerId, datacenterId, returnAsString)
|
|
|
45
45
|
}
|
|
46
46
|
return timestamp;
|
|
47
47
|
};
|
|
48
|
-
|
|
48
|
+
const generateIdWithTimestamp = (timestamp, workerIdOverride, datacenterIdOverride, sequenceOverride = 0) => {
|
|
49
|
+
const finalWorkerId = workerIdOverride ?? workerId;
|
|
50
|
+
const finalDatacenterId = datacenterIdOverride ?? datacenterId;
|
|
51
|
+
const id = (BigInt(timestamp - SNOWFLAKE_EPOCH) <<
|
|
52
|
+
BigInt(SNOWFLAKE_SHIFTS.TIMESTAMP)) +
|
|
53
|
+
(BigInt(finalDatacenterId) << BigInt(SNOWFLAKE_SHIFTS.DATACENTER_ID)) +
|
|
54
|
+
(BigInt(finalWorkerId) << BigInt(SNOWFLAKE_SHIFTS.WORKER_ID)) +
|
|
55
|
+
BigInt(sequenceOverride);
|
|
56
|
+
return (returnAsString ? id.toString() : id);
|
|
57
|
+
};
|
|
58
|
+
const generateId = () => {
|
|
49
59
|
let timestamp = getCurrentTimestamp();
|
|
50
60
|
if (timestamp < lastTimestamp) {
|
|
51
61
|
throw new Error(`Clock moved backwards. Refusing to generate id for ${lastTimestamp - timestamp} milliseconds`);
|
|
@@ -67,27 +77,9 @@ export const createSnowflakeGenerator = (workerId, datacenterId, returnAsString)
|
|
|
67
77
|
BigInt(sequence);
|
|
68
78
|
return (returnAsString ? id.toString() : id);
|
|
69
79
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
* @param timestamp - Unix timestamp in milliseconds
|
|
75
|
-
* @param workerId - Worker ID (default: 0 for minimum possible ID)
|
|
76
|
-
* @param datacenterId - Datacenter ID (default: 0 for minimum possible ID)
|
|
77
|
-
* @param sequence - Sequence number (default: 0 for minimum possible ID)
|
|
78
|
-
* @returns Snowflake ID as BigInt
|
|
79
|
-
*
|
|
80
|
-
* @example
|
|
81
|
-
* // Get threshold for deleting records older than 30 days
|
|
82
|
-
* const thirtyDaysAgo = Date.now() - (30 * 24 * 60 * 60 * 1000);
|
|
83
|
-
* const threshold = generateTimestampSnowflake(thirtyDaysAgo);
|
|
84
|
-
*/
|
|
85
|
-
export const generateTimestampSnowflake = (timestamp, workerId, datacenterId, sequence) => {
|
|
86
|
-
const id = (BigInt(timestamp - SNOWFLAKE_EPOCH) <<
|
|
87
|
-
BigInt(SNOWFLAKE_SHIFTS.TIMESTAMP)) +
|
|
88
|
-
(BigInt(datacenterId) << BigInt(SNOWFLAKE_SHIFTS.DATACENTER_ID)) +
|
|
89
|
-
(BigInt(workerId) << BigInt(SNOWFLAKE_SHIFTS.WORKER_ID)) +
|
|
90
|
-
BigInt(sequence);
|
|
91
|
-
return id;
|
|
80
|
+
return {
|
|
81
|
+
generateId,
|
|
82
|
+
generateIdWithTimestamp,
|
|
83
|
+
};
|
|
92
84
|
};
|
|
93
85
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,cAAc,GAAG;IACrB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,CAAC;CACR,CAAC;AAEX,MAAM,gBAAgB,GAAG;IACvB,SAAS,EAAE,cAAc,CAAC,QAAQ;IAClC,aAAa,EAAE,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,SAAS;IACjE,SAAS,EACP,cAAc,CAAC,QAAQ;QACvB,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,aAAa;CACtB,CAAC;AAEX,MAAM,eAAe,GAAG;IACtB,QAAQ,EAAE,CAAC,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;CACpC,CAAC;AAIX;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,QAAgB,EAChB,YAAoB,EACpB,cAAkB,EAClB,EAAE;IACF,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAEhE,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,uCAAuC,eAAe,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;IAEvB,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7C,MAAM,iBAAiB,GAAG,CAAC,aAAqB,EAAE,EAAE;QAClD,IAAI,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACtC,OAAO,SAAS,IAAI,aAAa,EAAE,CAAC;YAClC,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,GAAmB,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|