@venizia/ignis-helpers 0.2.0-37 → 0.2.0-39

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.
Files changed (133) hide show
  1. package/dist/cjs/modules/base.d.ts +4 -1
  2. package/dist/cjs/modules/base.d.ts.map +1 -1
  3. package/dist/cjs/modules/base.js +12 -4
  4. package/dist/cjs/modules/base.js.map +1 -1
  5. package/dist/cjs/modules/logger/resolver.d.ts.map +1 -1
  6. package/dist/cjs/modules/logger/resolver.js +6 -0
  7. package/dist/cjs/modules/logger/resolver.js.map +1 -1
  8. package/dist/cjs/modules/logger/slot.d.ts +27 -0
  9. package/dist/cjs/modules/logger/slot.d.ts.map +1 -0
  10. package/dist/cjs/modules/logger/slot.js +68 -0
  11. package/dist/cjs/modules/logger/slot.js.map +1 -0
  12. package/dist/cjs/modules/socket/websocket/server/helper.d.ts.map +1 -1
  13. package/dist/cjs/modules/socket/websocket/server/helper.js +2 -1
  14. package/dist/cjs/modules/socket/websocket/server/helper.js.map +1 -1
  15. package/dist/cjs/modules/uid/index.d.ts +1 -1
  16. package/dist/cjs/modules/uid/index.d.ts.map +1 -1
  17. package/dist/cjs/modules/uid/index.js +1 -1
  18. package/dist/cjs/modules/uid/index.js.map +1 -1
  19. package/dist/cjs/modules/uid/request-id.d.ts +5 -12
  20. package/dist/cjs/modules/uid/request-id.d.ts.map +1 -1
  21. package/dist/cjs/modules/uid/request-id.js +7 -44
  22. package/dist/cjs/modules/uid/request-id.js.map +1 -1
  23. package/dist/cjs/modules/uid/uuid/common/constants.d.ts +27 -0
  24. package/dist/cjs/modules/uid/uuid/common/constants.d.ts.map +1 -0
  25. package/dist/cjs/modules/uid/uuid/common/constants.js +31 -0
  26. package/dist/cjs/modules/uid/uuid/common/constants.js.map +1 -0
  27. package/dist/cjs/modules/uid/uuid/common/index.d.ts +3 -0
  28. package/dist/cjs/modules/uid/uuid/common/index.d.ts.map +1 -0
  29. package/dist/cjs/modules/uid/uuid/common/index.js +24 -0
  30. package/dist/cjs/modules/uid/uuid/common/index.js.map +1 -0
  31. package/dist/cjs/modules/uid/uuid/common/types.d.ts +6 -0
  32. package/dist/cjs/modules/uid/uuid/common/types.d.ts.map +1 -0
  33. package/dist/cjs/modules/uid/uuid/common/types.js +3 -0
  34. package/dist/cjs/modules/uid/uuid/common/types.js.map +1 -0
  35. package/dist/cjs/modules/uid/uuid/helper.d.ts +33 -0
  36. package/dist/cjs/modules/uid/uuid/helper.d.ts.map +1 -0
  37. package/dist/cjs/modules/uid/uuid/helper.js +56 -0
  38. package/dist/cjs/modules/uid/uuid/helper.js.map +1 -0
  39. package/dist/cjs/modules/uid/uuid/index.d.ts +6 -0
  40. package/dist/cjs/modules/uid/uuid/index.d.ts.map +1 -0
  41. package/dist/cjs/modules/uid/uuid/index.js +22 -0
  42. package/dist/cjs/modules/uid/uuid/index.js.map +1 -0
  43. package/dist/cjs/modules/uid/uuid/sha1.d.ts +19 -0
  44. package/dist/cjs/modules/uid/uuid/sha1.d.ts.map +1 -0
  45. package/dist/cjs/modules/uid/uuid/sha1.js +105 -0
  46. package/dist/cjs/modules/uid/uuid/sha1.js.map +1 -0
  47. package/dist/cjs/modules/uid/uuid/v4.d.ts +5 -0
  48. package/dist/cjs/modules/uid/uuid/v4.d.ts.map +1 -0
  49. package/dist/cjs/modules/uid/uuid/v4.js +49 -0
  50. package/dist/cjs/modules/uid/uuid/v4.js.map +1 -0
  51. package/dist/cjs/modules/uid/uuid/v5.d.ts +15 -0
  52. package/dist/cjs/modules/uid/uuid/v5.d.ts.map +1 -0
  53. package/dist/cjs/modules/uid/uuid/v5.js +84 -0
  54. package/dist/cjs/modules/uid/uuid/v5.js.map +1 -0
  55. package/dist/cjs/modules/uid/uuid/v7.d.ts +5 -0
  56. package/dist/cjs/modules/uid/uuid/v7.d.ts.map +1 -0
  57. package/dist/cjs/modules/uid/uuid/v7.js +91 -0
  58. package/dist/cjs/modules/uid/uuid/v7.js.map +1 -0
  59. package/dist/cjs/uuid.d.ts +2 -0
  60. package/dist/cjs/uuid.d.ts.map +1 -0
  61. package/dist/cjs/uuid.js +19 -0
  62. package/dist/cjs/uuid.js.map +1 -0
  63. package/dist/esm/modules/base.d.ts +4 -1
  64. package/dist/esm/modules/base.d.ts.map +1 -1
  65. package/dist/esm/modules/base.js +12 -4
  66. package/dist/esm/modules/base.js.map +1 -1
  67. package/dist/esm/modules/logger/resolver.d.ts.map +1 -1
  68. package/dist/esm/modules/logger/resolver.js +6 -0
  69. package/dist/esm/modules/logger/resolver.js.map +1 -1
  70. package/dist/esm/modules/logger/slot.d.ts +27 -0
  71. package/dist/esm/modules/logger/slot.d.ts.map +1 -0
  72. package/dist/esm/modules/logger/slot.js +62 -0
  73. package/dist/esm/modules/logger/slot.js.map +1 -0
  74. package/dist/esm/modules/socket/websocket/server/helper.d.ts.map +1 -1
  75. package/dist/esm/modules/socket/websocket/server/helper.js +2 -1
  76. package/dist/esm/modules/socket/websocket/server/helper.js.map +1 -1
  77. package/dist/esm/modules/uid/index.d.ts +1 -1
  78. package/dist/esm/modules/uid/index.d.ts.map +1 -1
  79. package/dist/esm/modules/uid/index.js +1 -1
  80. package/dist/esm/modules/uid/index.js.map +1 -1
  81. package/dist/esm/modules/uid/request-id.d.ts +5 -12
  82. package/dist/esm/modules/uid/request-id.d.ts.map +1 -1
  83. package/dist/esm/modules/uid/request-id.js +7 -44
  84. package/dist/esm/modules/uid/request-id.js.map +1 -1
  85. package/dist/esm/modules/uid/uuid/common/constants.d.ts +27 -0
  86. package/dist/esm/modules/uid/uuid/common/constants.d.ts.map +1 -0
  87. package/dist/esm/modules/uid/uuid/common/constants.js +27 -0
  88. package/dist/esm/modules/uid/uuid/common/constants.js.map +1 -0
  89. package/dist/esm/modules/uid/uuid/common/index.d.ts +3 -0
  90. package/dist/esm/modules/uid/uuid/common/index.d.ts.map +1 -0
  91. package/dist/esm/modules/uid/uuid/common/index.js +5 -0
  92. package/dist/esm/modules/uid/uuid/common/index.js.map +1 -0
  93. package/dist/esm/modules/uid/uuid/common/types.d.ts +6 -0
  94. package/dist/esm/modules/uid/uuid/common/types.d.ts.map +1 -0
  95. package/dist/esm/modules/uid/uuid/common/types.js +2 -0
  96. package/dist/esm/modules/uid/uuid/common/types.js.map +1 -0
  97. package/dist/esm/modules/uid/uuid/helper.d.ts +33 -0
  98. package/dist/esm/modules/uid/uuid/helper.d.ts.map +1 -0
  99. package/dist/esm/modules/uid/uuid/helper.js +52 -0
  100. package/dist/esm/modules/uid/uuid/helper.js.map +1 -0
  101. package/dist/esm/modules/uid/uuid/index.d.ts +6 -0
  102. package/dist/esm/modules/uid/uuid/index.d.ts.map +1 -0
  103. package/dist/esm/modules/uid/uuid/index.js +6 -0
  104. package/dist/esm/modules/uid/uuid/index.js.map +1 -0
  105. package/dist/esm/modules/uid/uuid/sha1.d.ts +19 -0
  106. package/dist/esm/modules/uid/uuid/sha1.d.ts.map +1 -0
  107. package/dist/esm/modules/uid/uuid/sha1.js +101 -0
  108. package/dist/esm/modules/uid/uuid/sha1.js.map +1 -0
  109. package/dist/esm/modules/uid/uuid/v4.d.ts +5 -0
  110. package/dist/esm/modules/uid/uuid/v4.d.ts.map +1 -0
  111. package/dist/esm/modules/uid/uuid/v4.js +45 -0
  112. package/dist/esm/modules/uid/uuid/v4.js.map +1 -0
  113. package/dist/esm/modules/uid/uuid/v5.d.ts +15 -0
  114. package/dist/esm/modules/uid/uuid/v5.d.ts.map +1 -0
  115. package/dist/esm/modules/uid/uuid/v5.js +80 -0
  116. package/dist/esm/modules/uid/uuid/v5.js.map +1 -0
  117. package/dist/esm/modules/uid/uuid/v7.d.ts +5 -0
  118. package/dist/esm/modules/uid/uuid/v7.d.ts.map +1 -0
  119. package/dist/esm/modules/uid/uuid/v7.js +87 -0
  120. package/dist/esm/modules/uid/uuid/v7.js.map +1 -0
  121. package/dist/esm/uuid.d.ts +2 -0
  122. package/dist/esm/uuid.d.ts.map +1 -0
  123. package/dist/esm/uuid.js +3 -0
  124. package/dist/esm/uuid.js.map +1 -0
  125. package/package.json +7 -1
  126. package/dist/cjs/modules/uid/uuid-v7.d.ts +0 -35
  127. package/dist/cjs/modules/uid/uuid-v7.d.ts.map +0 -1
  128. package/dist/cjs/modules/uid/uuid-v7.js +0 -110
  129. package/dist/cjs/modules/uid/uuid-v7.js.map +0 -1
  130. package/dist/esm/modules/uid/uuid-v7.d.ts +0 -35
  131. package/dist/esm/modules/uid/uuid-v7.d.ts.map +0 -1
  132. package/dist/esm/modules/uid/uuid-v7.js +0 -106
  133. package/dist/esm/modules/uid/uuid-v7.js.map +0 -1
@@ -1,35 +0,0 @@
1
- import { BaseHelper } from '../base';
2
- /**
3
- * RFC 9562 UUID version 7: 48-bit unix milliseconds, then randomness. Ids sort as text in creation
4
- * order, so a primary-key B-tree appends instead of splitting pages - measured on PGlite, 200k
5
- * inserts ran 11-36% faster with a 27% smaller index than version 4.
6
- *
7
- * Bun's native `randomUUIDv7` when present (monotonic, fastest); elsewhere - a browser - the same
8
- * shape from `getRandomValues`, with a 12-bit counter keeping ids ordered inside one millisecond.
9
- */
10
- export declare class UuidV7Generator extends BaseHelper {
11
- /** Realm-keyed: a dual CJS+ESM build puts two copies of this class in one process, and two counters would interleave out of order. */
12
- private static readonly SHARED_SLOT;
13
- private static readonly HEX_OCTETS;
14
- /** 256 ids of entropy per `getRandomValues` call. */
15
- private static readonly POOL_SIZE;
16
- private static readonly MAX_COUNTER;
17
- private readonly generate;
18
- private readonly pool;
19
- private offset;
20
- private lastMs;
21
- private counter;
22
- /** `xxxxxxxx-xxxx-` for `lastMs`, rebuilt only when the millisecond changes. */
23
- private prefix;
24
- constructor(opts?: {
25
- scope?: string;
26
- });
27
- /** One sequence per realm: ids from every caller stay ordered against each other, across both module copies. */
28
- static getInstance(): UuidV7Generator;
29
- nextId(): string;
30
- private fromEntropy;
31
- /** Seeds below 0x800, leaving at least 2048 increments inside the millisecond. */
32
- private drawCounterSeed;
33
- private renderPrefix;
34
- }
35
- //# sourceMappingURL=uuid-v7.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uuid-v7.d.ts","sourceRoot":"","sources":["../../../../src/modules/uid/uuid-v7.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;GAOG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,sIAAsI;IACtI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAA0D;IAE7F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAEhC;IAEF,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAW;IAE5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAS;IAE5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6C;IAClE,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB,gFAAgF;IAChF,OAAO,CAAC,MAAM,CAAM;gBAER,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAUrC,gHAAgH;IAChH,MAAM,CAAC,WAAW,IAAI,eAAe;IAcrC,MAAM,IAAI,MAAM;IAIhB,OAAO,CAAC,WAAW;IA2CnB,kFAAkF;IAClF,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;CAkBrB"}
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UuidV7Generator = void 0;
4
- const base_1 = require("../base");
5
- /**
6
- * RFC 9562 UUID version 7: 48-bit unix milliseconds, then randomness. Ids sort as text in creation
7
- * order, so a primary-key B-tree appends instead of splitting pages - measured on PGlite, 200k
8
- * inserts ran 11-36% faster with a 27% smaller index than version 4.
9
- *
10
- * Bun's native `randomUUIDv7` when present (monotonic, fastest); elsewhere - a browser - the same
11
- * shape from `getRandomValues`, with a 12-bit counter keeping ids ordered inside one millisecond.
12
- */
13
- class UuidV7Generator extends base_1.BaseHelper {
14
- /** Realm-keyed: a dual CJS+ESM build puts two copies of this class in one process, and two counters would interleave out of order. */
15
- static { this.SHARED_SLOT = Symbol.for('@venizia/ignis-helpers:uuid-v7-generator'); }
16
- static { this.HEX_OCTETS = Array.from({ length: 256 }, (_, value) => (value + 0x100).toString(16).slice(1)); }
17
- /** 256 ids of entropy per `getRandomValues` call. */
18
- static { this.POOL_SIZE = 8 * 256; }
19
- static { this.MAX_COUNTER = 0xfff; }
20
- constructor(opts) {
21
- super({ scope: opts?.scope ?? UuidV7Generator.name });
22
- this.pool = new Uint8Array(UuidV7Generator.POOL_SIZE);
23
- this.offset = UuidV7Generator.POOL_SIZE;
24
- this.lastMs = -1;
25
- this.counter = 0;
26
- /** `xxxxxxxx-xxxx-` for `lastMs`, rebuilt only when the millisecond changes. */
27
- this.prefix = '';
28
- // Through `globalThis`: a member access on the bare global survives into a browser bundle and
29
- // the purity gate rejects the whole entry for it.
30
- const runtime = Reflect.get(globalThis, 'Bun');
31
- const native = runtime?.randomUUIDv7;
32
- this.generate = typeof native === 'function' ? native : () => this.fromEntropy();
33
- }
34
- /** One sequence per realm: ids from every caller stay ordered against each other, across both module copies. */
35
- static getInstance() {
36
- const shared = Reflect.get(globalThis, UuidV7Generator.SHARED_SLOT);
37
- if (shared) {
38
- return shared;
39
- }
40
- const created = new UuidV7Generator();
41
- Reflect.set(globalThis, UuidV7Generator.SHARED_SLOT, created);
42
- return created;
43
- }
44
- nextId() {
45
- return this.generate();
46
- }
47
- fromEntropy() {
48
- const now = Date.now();
49
- if (now > this.lastMs) {
50
- this.lastMs = now;
51
- this.counter = this.drawCounterSeed();
52
- this.prefix = this.renderPrefix({ ms: now });
53
- }
54
- else if (++this.counter > UuidV7Generator.MAX_COUNTER) {
55
- // Counter spent, or the clock stepped back: borrow the next millisecond rather than repeat.
56
- this.lastMs += 1;
57
- this.counter = this.drawCounterSeed();
58
- this.prefix = this.renderPrefix({ ms: this.lastMs });
59
- }
60
- if (this.offset > UuidV7Generator.POOL_SIZE - 8) {
61
- globalThis.crypto.getRandomValues(this.pool);
62
- this.offset = 0;
63
- }
64
- const pool = this.pool;
65
- const at = this.offset;
66
- this.offset = at + 8;
67
- const hex = UuidV7Generator.HEX_OCTETS;
68
- const counter = this.counter;
69
- return (this.prefix +
70
- hex[0x70 | (counter >>> 8)] +
71
- hex[counter & 0xff] +
72
- '-' +
73
- hex[(pool[at] & 0x3f) | 0x80] +
74
- hex[pool[at + 1]] +
75
- '-' +
76
- hex[pool[at + 2]] +
77
- hex[pool[at + 3]] +
78
- hex[pool[at + 4]] +
79
- hex[pool[at + 5]] +
80
- hex[pool[at + 6]] +
81
- hex[pool[at + 7]]);
82
- }
83
- /** Seeds below 0x800, leaving at least 2048 increments inside the millisecond. */
84
- drawCounterSeed() {
85
- if (this.offset > UuidV7Generator.POOL_SIZE - 2) {
86
- globalThis.crypto.getRandomValues(this.pool);
87
- this.offset = 0;
88
- }
89
- const seed = ((this.pool[this.offset] << 8) | this.pool[this.offset + 1]) & 0x7ff;
90
- this.offset += 2;
91
- return seed;
92
- }
93
- renderPrefix(opts) {
94
- const { ms } = opts;
95
- const hex = UuidV7Generator.HEX_OCTETS;
96
- // 48 bits exceed the 32-bit bitwise range: split at 24 bits with arithmetic first.
97
- const high = Math.floor(ms / 0x1000000);
98
- const low = ms % 0x1000000;
99
- return (hex[(high >>> 16) & 0xff] +
100
- hex[(high >>> 8) & 0xff] +
101
- hex[high & 0xff] +
102
- hex[(low >>> 16) & 0xff] +
103
- '-' +
104
- hex[(low >>> 8) & 0xff] +
105
- hex[low & 0xff] +
106
- '-');
107
- }
108
- }
109
- exports.UuidV7Generator = UuidV7Generator;
110
- //# sourceMappingURL=uuid-v7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uuid-v7.js","sourceRoot":"","sources":["../../../../src/modules/uid/uuid-v7.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import { BaseHelper } from '../base.js';
2
- /**
3
- * RFC 9562 UUID version 7: 48-bit unix milliseconds, then randomness. Ids sort as text in creation
4
- * order, so a primary-key B-tree appends instead of splitting pages - measured on PGlite, 200k
5
- * inserts ran 11-36% faster with a 27% smaller index than version 4.
6
- *
7
- * Bun's native `randomUUIDv7` when present (monotonic, fastest); elsewhere - a browser - the same
8
- * shape from `getRandomValues`, with a 12-bit counter keeping ids ordered inside one millisecond.
9
- */
10
- export declare class UuidV7Generator extends BaseHelper {
11
- /** Realm-keyed: a dual CJS+ESM build puts two copies of this class in one process, and two counters would interleave out of order. */
12
- private static readonly SHARED_SLOT;
13
- private static readonly HEX_OCTETS;
14
- /** 256 ids of entropy per `getRandomValues` call. */
15
- private static readonly POOL_SIZE;
16
- private static readonly MAX_COUNTER;
17
- private readonly generate;
18
- private readonly pool;
19
- private offset;
20
- private lastMs;
21
- private counter;
22
- /** `xxxxxxxx-xxxx-` for `lastMs`, rebuilt only when the millisecond changes. */
23
- private prefix;
24
- constructor(opts?: {
25
- scope?: string;
26
- });
27
- /** One sequence per realm: ids from every caller stay ordered against each other, across both module copies. */
28
- static getInstance(): UuidV7Generator;
29
- nextId(): string;
30
- private fromEntropy;
31
- /** Seeds below 0x800, leaving at least 2048 increments inside the millisecond. */
32
- private drawCounterSeed;
33
- private renderPrefix;
34
- }
35
- //# sourceMappingURL=uuid-v7.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uuid-v7.d.ts","sourceRoot":"","sources":["../../../../src/modules/uid/uuid-v7.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;GAOG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,sIAAsI;IACtI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAA0D;IAE7F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAEhC;IAEF,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAW;IAE5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAS;IAE5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6C;IAClE,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB,gFAAgF;IAChF,OAAO,CAAC,MAAM,CAAM;gBAER,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAUrC,gHAAgH;IAChH,MAAM,CAAC,WAAW,IAAI,eAAe;IAcrC,MAAM,IAAI,MAAM;IAIhB,OAAO,CAAC,WAAW;IA2CnB,kFAAkF;IAClF,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;CAkBrB"}
@@ -1,106 +0,0 @@
1
- import { BaseHelper } from '../base.js';
2
- /**
3
- * RFC 9562 UUID version 7: 48-bit unix milliseconds, then randomness. Ids sort as text in creation
4
- * order, so a primary-key B-tree appends instead of splitting pages - measured on PGlite, 200k
5
- * inserts ran 11-36% faster with a 27% smaller index than version 4.
6
- *
7
- * Bun's native `randomUUIDv7` when present (monotonic, fastest); elsewhere - a browser - the same
8
- * shape from `getRandomValues`, with a 12-bit counter keeping ids ordered inside one millisecond.
9
- */
10
- export class UuidV7Generator extends BaseHelper {
11
- /** Realm-keyed: a dual CJS+ESM build puts two copies of this class in one process, and two counters would interleave out of order. */
12
- static { this.SHARED_SLOT = Symbol.for('@venizia/ignis-helpers:uuid-v7-generator'); }
13
- static { this.HEX_OCTETS = Array.from({ length: 256 }, (_, value) => (value + 0x100).toString(16).slice(1)); }
14
- /** 256 ids of entropy per `getRandomValues` call. */
15
- static { this.POOL_SIZE = 8 * 256; }
16
- static { this.MAX_COUNTER = 0xfff; }
17
- constructor(opts) {
18
- super({ scope: opts?.scope ?? UuidV7Generator.name });
19
- this.pool = new Uint8Array(UuidV7Generator.POOL_SIZE);
20
- this.offset = UuidV7Generator.POOL_SIZE;
21
- this.lastMs = -1;
22
- this.counter = 0;
23
- /** `xxxxxxxx-xxxx-` for `lastMs`, rebuilt only when the millisecond changes. */
24
- this.prefix = '';
25
- // Through `globalThis`: a member access on the bare global survives into a browser bundle and
26
- // the purity gate rejects the whole entry for it.
27
- const runtime = Reflect.get(globalThis, 'Bun');
28
- const native = runtime?.randomUUIDv7;
29
- this.generate = typeof native === 'function' ? native : () => this.fromEntropy();
30
- }
31
- /** One sequence per realm: ids from every caller stay ordered against each other, across both module copies. */
32
- static getInstance() {
33
- const shared = Reflect.get(globalThis, UuidV7Generator.SHARED_SLOT);
34
- if (shared) {
35
- return shared;
36
- }
37
- const created = new UuidV7Generator();
38
- Reflect.set(globalThis, UuidV7Generator.SHARED_SLOT, created);
39
- return created;
40
- }
41
- nextId() {
42
- return this.generate();
43
- }
44
- fromEntropy() {
45
- const now = Date.now();
46
- if (now > this.lastMs) {
47
- this.lastMs = now;
48
- this.counter = this.drawCounterSeed();
49
- this.prefix = this.renderPrefix({ ms: now });
50
- }
51
- else if (++this.counter > UuidV7Generator.MAX_COUNTER) {
52
- // Counter spent, or the clock stepped back: borrow the next millisecond rather than repeat.
53
- this.lastMs += 1;
54
- this.counter = this.drawCounterSeed();
55
- this.prefix = this.renderPrefix({ ms: this.lastMs });
56
- }
57
- if (this.offset > UuidV7Generator.POOL_SIZE - 8) {
58
- globalThis.crypto.getRandomValues(this.pool);
59
- this.offset = 0;
60
- }
61
- const pool = this.pool;
62
- const at = this.offset;
63
- this.offset = at + 8;
64
- const hex = UuidV7Generator.HEX_OCTETS;
65
- const counter = this.counter;
66
- return (this.prefix +
67
- hex[0x70 | (counter >>> 8)] +
68
- hex[counter & 0xff] +
69
- '-' +
70
- hex[(pool[at] & 0x3f) | 0x80] +
71
- hex[pool[at + 1]] +
72
- '-' +
73
- hex[pool[at + 2]] +
74
- hex[pool[at + 3]] +
75
- hex[pool[at + 4]] +
76
- hex[pool[at + 5]] +
77
- hex[pool[at + 6]] +
78
- hex[pool[at + 7]]);
79
- }
80
- /** Seeds below 0x800, leaving at least 2048 increments inside the millisecond. */
81
- drawCounterSeed() {
82
- if (this.offset > UuidV7Generator.POOL_SIZE - 2) {
83
- globalThis.crypto.getRandomValues(this.pool);
84
- this.offset = 0;
85
- }
86
- const seed = ((this.pool[this.offset] << 8) | this.pool[this.offset + 1]) & 0x7ff;
87
- this.offset += 2;
88
- return seed;
89
- }
90
- renderPrefix(opts) {
91
- const { ms } = opts;
92
- const hex = UuidV7Generator.HEX_OCTETS;
93
- // 48 bits exceed the 32-bit bitwise range: split at 24 bits with arithmetic first.
94
- const high = Math.floor(ms / 0x1000000);
95
- const low = ms % 0x1000000;
96
- return (hex[(high >>> 16) & 0xff] +
97
- hex[(high >>> 8) & 0xff] +
98
- hex[high & 0xff] +
99
- hex[(low >>> 16) & 0xff] +
100
- '-' +
101
- hex[(low >>> 8) & 0xff] +
102
- hex[low & 0xff] +
103
- '-');
104
- }
105
- }
106
- //# sourceMappingURL=uuid-v7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uuid-v7.js","sourceRoot":"","sources":["../../../../src/modules/uid/uuid-v7.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;GAOG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,sIAAsI;aAC9G,gBAAW,GAAG,MAAM,CAAC,GAAG,CAAC,0CAA0C,CAAC,AAAzD,CAA0D;aAErE,eAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAC5E,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACtC,AAFiC,CAEhC;IAEF,qDAAqD;aAC7B,cAAS,GAAG,CAAC,GAAG,GAAG,AAAV,CAAW;aAEpB,gBAAW,GAAG,KAAK,AAAR,CAAS;IAW5C,YAAY,IAAyB;QACnC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QARvC,SAAI,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC1D,WAAM,GAAG,eAAe,CAAC,SAAS,CAAC;QACnC,WAAM,GAAG,CAAC,CAAC,CAAC;QACZ,YAAO,GAAG,CAAC,CAAC;QACpB,gFAAgF;QACxE,WAAM,GAAG,EAAE,CAAC;QAKlB,8FAA8F;QAC9F,kDAAkD;QAClD,MAAM,OAAO,GAAgD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,OAAO,EAAE,YAAY,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnF,CAAC;IAED,gHAAgH;IAChH,MAAM,CAAC,WAAW;QAChB,MAAM,MAAM,GAAgC,OAAO,CAAC,GAAG,CACrD,UAAU,EACV,eAAe,CAAC,WAAW,CAC5B,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAEO,WAAW;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;YACxD,4FAA4F;YAC5F,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAChD,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;QAErB,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,OAAO,CACL,IAAI,CAAC,MAAM;YACX,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;YAC3B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;YACnB,GAAG;YACH,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,GAAG;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAClB,CAAC;IACJ,CAAC;IAED,kFAAkF;IAC1E,eAAe;QACrB,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAChD,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAClF,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,IAAoB;QACvC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC;QACvC,mFAAmF;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC;QAE3B,OAAO,CACL,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;YACzB,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;YACxB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;YACxB,GAAG;YACH,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;YACvB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;YACf,GAAG,CACJ,CAAC;IACJ,CAAC"}