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 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.randomFillSync, no modulo bias)
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 (os.urandom / crypto.randomFillSync)
13
+ * - Cryptographically secure randomness (crypto.getRandomValues)
14
14
  *
15
- * Thread safety: Node.js is single-threaded. Worker threads get their own
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.randomFillSync, no modulo bias)
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 (os.urandom / crypto.randomFillSync)
13
+ * - Cryptographically secure randomness (crypto.getRandomValues)
14
14
  *
15
- * Thread safety: Node.js is single-threaded. Worker threads get their own
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 = Buffer.alloc(RANDOM_BATCH_SIZE);
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
- (0, import_crypto.randomFillSync)(randomRawBuffer);
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 = Buffer.alloc(RANDOM_BATCH_SIZE);
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
- randomFillSync(randomRawBuffer);
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.0.0",
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",