sparkid 1.0.0 → 1.1.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.mts +3 -4
- package/dist/index.d.ts +3 -4
- package/dist/index.js +2 -3
- package/dist/index.mjs +2 -3
- package/package.json +4 -1
package/dist/index.d.mts
CHANGED
|
@@ -3,17 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Each ID is composed of:
|
|
5
5
|
* - 8-char timestamp prefix (milliseconds, Base58-encoded, sortable)
|
|
6
|
-
* - 14-char random suffix (rejection-sampled from crypto.
|
|
6
|
+
* - 14-char random suffix (rejection-sampled from crypto.getRandomValues, no modulo bias)
|
|
7
7
|
*
|
|
8
8
|
* Properties:
|
|
9
9
|
* - 22 characters, fixed length
|
|
10
10
|
* - Lexicographically sortable by creation time
|
|
11
11
|
* - URL-safe, no ambiguous characters
|
|
12
12
|
* - ~58^14 (~1.8 x 10^24) random combinations per millisecond
|
|
13
|
-
* - Cryptographically secure randomness (
|
|
13
|
+
* - Cryptographically secure randomness (crypto.getRandomValues)
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
* module instance, so the module-level state is naturally isolated.
|
|
15
|
+
* Works in Node.js (>=15), browsers, Deno, Bun, and Cloudflare Workers.
|
|
17
16
|
*/
|
|
18
17
|
declare function generateId(): string;
|
|
19
18
|
|
package/dist/index.d.ts
CHANGED
|
@@ -3,17 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Each ID is composed of:
|
|
5
5
|
* - 8-char timestamp prefix (milliseconds, Base58-encoded, sortable)
|
|
6
|
-
* - 14-char random suffix (rejection-sampled from crypto.
|
|
6
|
+
* - 14-char random suffix (rejection-sampled from crypto.getRandomValues, no modulo bias)
|
|
7
7
|
*
|
|
8
8
|
* Properties:
|
|
9
9
|
* - 22 characters, fixed length
|
|
10
10
|
* - Lexicographically sortable by creation time
|
|
11
11
|
* - URL-safe, no ambiguous characters
|
|
12
12
|
* - ~58^14 (~1.8 x 10^24) random combinations per millisecond
|
|
13
|
-
* - Cryptographically secure randomness (
|
|
13
|
+
* - Cryptographically secure randomness (crypto.getRandomValues)
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
* module instance, so the module-level state is naturally isolated.
|
|
15
|
+
* Works in Node.js (>=15), browsers, Deno, Bun, and Cloudflare Workers.
|
|
17
16
|
*/
|
|
18
17
|
declare function generateId(): string;
|
|
19
18
|
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,6 @@ __export(index_exports, {
|
|
|
23
23
|
generateId: () => generateId
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(index_exports);
|
|
26
|
-
var import_crypto = require("crypto");
|
|
27
26
|
var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
28
27
|
var BASE = ALPHABET.length;
|
|
29
28
|
var RANDOM_CHAR_COUNT = 14;
|
|
@@ -33,7 +32,7 @@ var RANDOM_LOOKUP = Array.from({ length: 256 }, (_, byte) => {
|
|
|
33
32
|
const value = byte & 63;
|
|
34
33
|
return value < BASE ? ALPHABET[value] : null;
|
|
35
34
|
});
|
|
36
|
-
var randomRawBuffer =
|
|
35
|
+
var randomRawBuffer = new Uint8Array(RANDOM_BATCH_SIZE);
|
|
37
36
|
var timestampCacheMs = 0;
|
|
38
37
|
var timestampCachePrefix = "";
|
|
39
38
|
var randomCharBuffer = "";
|
|
@@ -65,7 +64,7 @@ function encodeTimestamp(timestamp) {
|
|
|
65
64
|
timestampCachePrefix = TIMESTAMP_LOOKUP[timestamp] + char1 + char2 + char3 + char4 + char5 + char6 + char7;
|
|
66
65
|
}
|
|
67
66
|
function refillRandom() {
|
|
68
|
-
|
|
67
|
+
crypto.getRandomValues(randomRawBuffer);
|
|
69
68
|
const lookup = RANDOM_LOOKUP;
|
|
70
69
|
let result = "";
|
|
71
70
|
for (let i = 0; i < RANDOM_BATCH_SIZE; i++) {
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { randomFillSync } from "crypto";
|
|
3
2
|
var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
4
3
|
var BASE = ALPHABET.length;
|
|
5
4
|
var RANDOM_CHAR_COUNT = 14;
|
|
@@ -9,7 +8,7 @@ var RANDOM_LOOKUP = Array.from({ length: 256 }, (_, byte) => {
|
|
|
9
8
|
const value = byte & 63;
|
|
10
9
|
return value < BASE ? ALPHABET[value] : null;
|
|
11
10
|
});
|
|
12
|
-
var randomRawBuffer =
|
|
11
|
+
var randomRawBuffer = new Uint8Array(RANDOM_BATCH_SIZE);
|
|
13
12
|
var timestampCacheMs = 0;
|
|
14
13
|
var timestampCachePrefix = "";
|
|
15
14
|
var randomCharBuffer = "";
|
|
@@ -41,7 +40,7 @@ function encodeTimestamp(timestamp) {
|
|
|
41
40
|
timestampCachePrefix = TIMESTAMP_LOOKUP[timestamp] + char1 + char2 + char3 + char4 + char5 + char6 + char7;
|
|
42
41
|
}
|
|
43
42
|
function refillRandom() {
|
|
44
|
-
|
|
43
|
+
crypto.getRandomValues(randomRawBuffer);
|
|
45
44
|
const lookup = RANDOM_LOOKUP;
|
|
46
45
|
let result = "";
|
|
47
46
|
for (let i = 0; i < RANDOM_BATCH_SIZE; i++) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sparkid",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Fast, time-sortable, 22-char Base58 unique ID generator",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
"ksuid"
|
|
29
29
|
],
|
|
30
30
|
"license": "MIT",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=19"
|
|
33
|
+
},
|
|
31
34
|
"devDependencies": {
|
|
32
35
|
"@types/node": "^25.5.0",
|
|
33
36
|
"tsup": "^8.0.0",
|