uniku 0.0.13 → 0.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/README.md CHANGED
@@ -28,6 +28,7 @@ console.log(first < second && second < third) // true
28
28
  |--------------------|:-----:|:----:|:------:|:----:|:-----:|:-----:|
29
29
  | UUID v4 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
30
30
  | UUID v7 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
31
+ | TypeID | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
31
32
  | ULID | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
32
33
  | CUID2 | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
33
34
  | Nanoid | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
@@ -64,6 +65,8 @@ Uses `globalThis.crypto` (Web Crypto API) — no Node.js-specific APIs.
64
65
  | KSUID | **1.5× faster** |
65
66
  | UUID v7 | **1.1× faster** |
66
67
  | Nanoid | **~comparable speed** |
68
+ | Nanoid (10 chars) | npm is 1.1× faster |
69
+ | TypeID | **2.6× faster** |
67
70
  | UUID v4 | npm is 1.1× faster |
68
71
 
69
72
  ## Which ID Should I Use?
@@ -73,10 +76,12 @@ Uses `globalThis.crypto` (Web Crypto API) — no Node.js-specific APIs.
73
76
  | Use Case | Recommended | Why |
74
77
  |----------|-------------|-----|
75
78
  | Database primary keys | **UUID v7** or **ULID** | Time-ordered for index efficiency |
79
+ | API/domain identifiers | **TypeID** | UUID v7 with readable type prefixes like `user_...` |
76
80
  | URL shorteners | **Nanoid** | Compact, URL-safe characters |
77
81
  | Prevent enumeration | **CUID2** | Non-sequential, secure |
78
82
  | Maximum compatibility | **UUID v4** | Universal standard |
79
- | Distributed systems (high entropy) | **KSUID** | 128-bit payload, second precision |
83
+ | Distributed systems needing sortable, URL-safe IDs | **ULID** | Millisecond ordering + 80-bit entropy |
84
+ | Very high-volume distributed systems | **KSUID** | Time-ordered with 128-bit entropy |
80
85
 
81
86
  ### Detailed Guide
82
87
 
@@ -98,6 +103,12 @@ Uses `globalThis.crypto` (Web Crypto API) — no Node.js-specific APIs.
98
103
  - 80-bit random entropy per millisecond
99
104
  - Best for: APIs, URLs, distributed systems needing sortability
100
105
 
106
+ **TypeID** — Use when API IDs should expose their entity type.
107
+ - Prefix plus 26-character UUID v7 suffix, e.g. `user_01h2xcejqtf2nbrexx3vqjhp41`
108
+ - Empty prefix support for canonical 26-character TypeIDs
109
+ - Time-ordered through UUID v7, with lowercase snake_case type prefixes
110
+ - Best for: Public API identifiers, logs, debugging, domain-specific IDs
111
+
101
112
  **KSUID** — Use when you need highest collision resistance.
102
113
  - 27 characters, time-ordered with second precision
103
114
  - URL-safe, 128-bit random entropy (highest of all formats)
@@ -147,6 +158,7 @@ const id = uuidv7.fromBytes(row.id)
147
158
  |--------|--------------|-------------|---------|
148
159
  | UUID v4/v7 | 36 chars | 16 bytes | 56% |
149
160
  | ULID | 26 chars | 16 bytes | 38% |
161
+ | TypeID | prefix + 27 chars | 16 bytes | prefix-dependent |
150
162
  | KSUID | 27 chars | 20 bytes | 26% |
151
163
  | Nanoid | 21 chars | N/A | - |
152
164
  | CUID2 | 24 chars | N/A | - |
@@ -179,6 +191,7 @@ deno install npm:uniku
179
191
  | `uniku/uuid/v4` | ~1.1 KB |
180
192
  | `uniku/uuid/v7` | ~1.4 KB |
181
193
  | `uniku/ulid` | ~1.8 KB |
194
+ | `uniku/typeid` | ~1.6 KB |
182
195
  | `uniku/cuid2` | ~1007 B* |
183
196
  | `uniku/nanoid` | ~1.1 KB |
184
197
  | `uniku/ksuid` | ~1.3 KB |
@@ -226,6 +239,21 @@ const bytes = ulid.toBytes(id)
226
239
  const str = ulid.fromBytes(bytes)
227
240
  ```
228
241
 
242
+ ### TypeID (prefixed UUID v7)
243
+
244
+ ```ts
245
+ import { typeid } from 'uniku/typeid'
246
+
247
+ const id = typeid('user')
248
+ // => "user_01h2xcejqtf2nbrexx3vqjhp41"
249
+
250
+ const uuid = typeid.toUuid(id)
251
+ const restored = typeid.fromUuid('user', uuid)
252
+
253
+ const canonical = typeid('')
254
+ // => "01h2xcejqtf2nbrexx3vqjhp41"
255
+ ```
256
+
229
257
  ### CUID2 (secure, non-time-ordered)
230
258
 
231
259
  ```ts
@@ -361,6 +389,22 @@ ulid.NIL // "00000000000000000000000000"
361
389
  ulid.MAX // "7ZZZZZZZZZZZZZZZZZZZZZZZZZ"
362
390
  ```
363
391
 
392
+ ### `typeid` (from `uniku/typeid`)
393
+
394
+ ```ts
395
+ typeid(prefix: string, options?: TypeidOptions): string
396
+ typeid.toBytes(id: string): Uint8Array
397
+ typeid.fromBytes(prefix: string, bytes: Uint8Array): string
398
+ typeid.toUuid(id: string): string
399
+ typeid.fromUuid(prefix: string, uuid: string): string
400
+ typeid.timestamp(id: string): number
401
+ typeid.prefix(id: string): string
402
+ typeid.suffix(id: string): string
403
+ typeid.isValid(id: unknown): id is string
404
+ ```
405
+
406
+ Use an empty prefix (`typeid('')`) to generate Jetify-compatible prefixless TypeIDs.
407
+
364
408
  ### `cuid2` (from `uniku/cuid2`)
365
409
 
366
410
  ```ts
@@ -403,6 +447,7 @@ Third-party libraries that inspired this project:
403
447
 
404
448
  - [uuid](https://github.com/uuidjs/uuid): the most popular UUID library for JavaScript
405
449
  - [ulid](https://github.com/ulid/javascript): the reference ULID implementation for JavaScript
450
+ - [TypeID](https://github.com/jetify-com/typeid): type-safe UUID v7 extension with readable prefixes
406
451
  - [@paralleldrive/cuid2](https://github.com/paralleldrive/cuid2): secure, collision-resistant IDs
407
452
  - [@owpz/ksuid](https://github.com/owpz/ksuid): K-Sortable Unique Identifier
408
453
  - [nanoid](https://github.com/ai/nanoid): tiny, URL-friendly unique string ID generator
@@ -1,2 +1,2 @@
1
1
  function e(e){for(let t=e.length-1;t>=0;--t){if(e[t]<255)return e[t]+=1,!0;e[t]=0}return!1}function t(e,t,n){e[t]=n/1099511627776&255,e[t+1]=n/4294967296&255,e[t+2]=n/16777216&255,e[t+3]=n/65536&255,e[t+4]=n/256&255,e[t+5]=n&255}function n(e,t,n){e[t]=n>>>24&255,e[t+1]=n>>>16&255,e[t+2]=n>>>8&255,e[t+3]=n&255}export{n,t as r,e as t};
2
- //# sourceMappingURL=bytes-NRtBOHK5.mjs.map
2
+ //# sourceMappingURL=bytes-DzcOKIx1.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bytes-NRtBOHK5.mjs","names":[],"sources":["../src/common/bytes.ts"],"sourcesContent":["/**\n * Common byte manipulation utilities shared across ID generators.\n */\n\n/**\n * Increment a byte array by 1 in-place, propagating carry from LSB to MSB.\n * Mutates the input array directly - no allocation.\n *\n * Used by ULID and KSUID for monotonic ordering within the same time unit.\n *\n * @returns true if increment succeeded, false if all bytes overflowed to 0\n */\nexport function incrementBytesInPlace(bytes: Uint8Array): boolean {\n for (let i = bytes.length - 1; i >= 0; i -= 1) {\n if (bytes[i] < 255) {\n bytes[i] += 1\n return true\n }\n bytes[i] = 0\n }\n\n // All bytes overflowed to 0 - astronomically unlikely (1 in 2^80 for ULID, 1 in 2^128 for KSUID)\n return false\n}\n\n/**\n * Write a 48-bit timestamp as big-endian bytes.\n * Used by UUID v7 and ULID for millisecond-precision timestamps.\n *\n * @param buf - Target buffer\n * @param offset - Starting byte offset\n * @param msecs - Milliseconds since Unix epoch (must fit in 48 bits)\n */\nexport function writeTimestamp48(buf: Uint8Array, offset: number, msecs: number): void {\n buf[offset] = (msecs / 0x10000000000) & 0xff\n buf[offset + 1] = (msecs / 0x100000000) & 0xff\n buf[offset + 2] = (msecs / 0x1000000) & 0xff\n buf[offset + 3] = (msecs / 0x10000) & 0xff\n buf[offset + 4] = (msecs / 0x100) & 0xff\n buf[offset + 5] = msecs & 0xff\n}\n\n/**\n * Write a 32-bit timestamp as big-endian bytes.\n * Used by KSUID for second-precision timestamps.\n *\n * `writeTimestamp32(buf, offset, timestamp)` is equivalent to `new DataView(buf.buffer, offset, 4).setUint32(offset, timestamp, false)`,\n * but it's faster because it doesn't require creating a DataView object.\n *\n * @param buf - Target buffer\n * @param offset - Starting byte offset\n * @param secs - Seconds (must fit in 32 bits)\n */\nexport function writeTimestamp32(buf: Uint8Array, offset: number, secs: number): void {\n buf[offset] = (secs >>> 24) & 0xff\n buf[offset + 1] = (secs >>> 16) & 0xff\n buf[offset + 2] = (secs >>> 8) & 0xff\n buf[offset + 3] = secs & 0xff\n}\n"],"mappings":"AAYA,SAAgB,EAAsB,EAA4B,CAChE,IAAK,IAAI,EAAI,EAAM,OAAS,EAAG,GAAK,EAAG,IAAQ,CAC7C,GAAI,EAAM,GAAK,IAEb,MADA,GAAM,IAAM,EACL,GAET,EAAM,GAAK,EAIb,MAAO,GAWT,SAAgB,EAAiB,EAAiB,EAAgB,EAAqB,CACrF,EAAI,GAAW,EAAQ,cAAiB,IACxC,EAAI,EAAS,GAAM,EAAQ,WAAe,IAC1C,EAAI,EAAS,GAAM,EAAQ,SAAa,IACxC,EAAI,EAAS,GAAM,EAAQ,MAAW,IACtC,EAAI,EAAS,GAAM,EAAQ,IAAS,IACpC,EAAI,EAAS,GAAK,EAAQ,IAc5B,SAAgB,EAAiB,EAAiB,EAAgB,EAAoB,CACpF,EAAI,GAAW,IAAS,GAAM,IAC9B,EAAI,EAAS,GAAM,IAAS,GAAM,IAClC,EAAI,EAAS,GAAM,IAAS,EAAK,IACjC,EAAI,EAAS,GAAK,EAAO"}
1
+ {"version":3,"file":"bytes-DzcOKIx1.mjs","names":[],"sources":["../src/common/bytes.ts"],"sourcesContent":["/**\n * Common byte manipulation utilities shared across ID generators.\n */\n\n/**\n * Increment a byte array by 1 in-place, propagating carry from LSB to MSB.\n * Mutates the input array directly - no allocation.\n *\n * Used by ULID and KSUID for monotonic ordering within the same time unit.\n *\n * @returns true if increment succeeded, false if all bytes overflowed to 0\n */\nexport function incrementBytesInPlace(bytes: Uint8Array): boolean {\n for (let i = bytes.length - 1; i >= 0; i -= 1) {\n if (bytes[i] < 255) {\n bytes[i] += 1\n return true\n }\n bytes[i] = 0\n }\n\n // All bytes overflowed to 0 - astronomically unlikely (1 in 2^80 for ULID, 1 in 2^128 for KSUID)\n return false\n}\n\n/**\n * Write a 48-bit timestamp as big-endian bytes.\n * Used by UUID v7 and ULID for millisecond-precision timestamps.\n *\n * @param buf - Target buffer\n * @param offset - Starting byte offset\n * @param msecs - Milliseconds since Unix epoch (must fit in 48 bits)\n */\nexport function writeTimestamp48(buf: Uint8Array, offset: number, msecs: number): void {\n buf[offset] = (msecs / 0x10000000000) & 0xff\n buf[offset + 1] = (msecs / 0x100000000) & 0xff\n buf[offset + 2] = (msecs / 0x1000000) & 0xff\n buf[offset + 3] = (msecs / 0x10000) & 0xff\n buf[offset + 4] = (msecs / 0x100) & 0xff\n buf[offset + 5] = msecs & 0xff\n}\n\n/**\n * Write a 32-bit timestamp as big-endian bytes.\n * Used by KSUID for second-precision timestamps.\n *\n * `writeTimestamp32(buf, offset, timestamp)` is equivalent to `new DataView(buf.buffer, offset, 4).setUint32(offset, timestamp, false)`,\n * but it's faster because it doesn't require creating a DataView object.\n *\n * @param buf - Target buffer\n * @param offset - Starting byte offset\n * @param secs - Seconds (must fit in 32 bits)\n */\nexport function writeTimestamp32(buf: Uint8Array, offset: number, secs: number): void {\n buf[offset] = (secs >>> 24) & 0xff\n buf[offset + 1] = (secs >>> 16) & 0xff\n buf[offset + 2] = (secs >>> 8) & 0xff\n buf[offset + 3] = secs & 0xff\n}\n"],"mappings":"AAYA,SAAgB,EAAsB,EAA4B,CAChE,IAAK,IAAI,EAAI,EAAM,OAAS,EAAG,GAAK,EAAG,IAAQ,CAC7C,GAAI,EAAM,GAAK,IAEb,MADA,GAAM,IAAM,EACL,GAET,EAAM,GAAK,EAIb,MAAO,GAWT,SAAgB,EAAiB,EAAiB,EAAgB,EAAqB,CACrF,EAAI,GAAW,EAAQ,cAAiB,IACxC,EAAI,EAAS,GAAM,EAAQ,WAAe,IAC1C,EAAI,EAAS,GAAM,EAAQ,SAAa,IACxC,EAAI,EAAS,GAAM,EAAQ,MAAW,IACtC,EAAI,EAAS,GAAM,EAAQ,IAAS,IACpC,EAAI,EAAS,GAAK,EAAQ,IAc5B,SAAgB,EAAiB,EAAiB,EAAgB,EAAoB,CACpF,EAAI,GAAW,IAAS,GAAM,IAC9B,EAAI,EAAS,GAAM,IAAS,GAAM,IAClC,EAAI,EAAS,GAAM,IAAS,EAAK,IACjC,EAAI,EAAS,GAAK,EAAO"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"../random-CWCVvNLb.mjs";import{InvalidInputError as t,UniqueIdError as n}from"../errors.mjs";import{sha3_512 as r}from"@noble/hashes/sha3.js";const i=/^[a-z][0-9a-z]+$/,a=`0123456789abcdefghijklmnopqrstuvwxyz`,o=new TextEncoder,s={counter:void 0,fingerprint:void 0};function c(){return e()%476782368}function l(e){let t=0n;for(let n of e)t=t*256n+BigInt(n);return t}function u(e){if(e===0n)return`0`;let t=[];for(;e>0n;)t.push(a[Number(e%36n)]),e/=36n;return t.reverse().join(``)}function d(e){return`abcdefghijklmnopqrstuvwxyz`[Math.floor(e()*26)]}function f(e,t){let n=Array(e);for(let r=0;r<e;r++)n[r]=a[Math.floor(t()*36)];return n.join(``)}function p(e){return r(o.encode(e))}function m(){let e=h;return u(l(p(Object.keys(globalThis).toString()+f(32,e)))).slice(1,33)}function h(){return e()/4294967296}function g(e){if(e){if(e.length===0)throw new t(`CUID2_RANDOM_BYTES_EMPTY`,`Random byte array cannot be empty`);let n=0;return()=>{let t=e[n%e.length]/256;return n+=1,t}}return h}function _(e){let n=e?.length??24;if(n<2||n>32)throw new t(`CUID2_LENGTH_OUT_OF_RANGE`,`CUID2 length must be between 2 and 32. Received: ${n}`);let r=g(e?.random);s.counter===void 0&&(s.counter=c()),s.fingerprint===void 0&&(s.fingerprint=m());let i=d(r),a=Date.now().toString(36);s.counter+=1;let o=s.counter.toString(36);return i+u(l(p(a+f(n,r)+o+s.fingerprint))).slice(1,n)}function v(e){return typeof e==`string`&&e.length>=2&&e.length<=32&&i.test(e)}const y=Object.assign(_,{isValid:v});export{t as InvalidInputError,n as UniqueIdError,y as cuid2};
1
+ import{t as e}from"../random-CGMm8owG.mjs";import{InvalidInputError as t,UniqueIdError as n}from"../errors.mjs";import{sha3_512 as r}from"@noble/hashes/sha3.js";const i=/^[a-z][0-9a-z]+$/,a=`0123456789abcdefghijklmnopqrstuvwxyz`,o=new TextEncoder,s={counter:void 0,fingerprint:void 0};function c(){return e()%476782368}function l(e){let t=0n;for(let n of e)t=t*256n+BigInt(n);return t}function u(e){if(e===0n)return`0`;let t=[];for(;e>0n;)t.push(a[Number(e%36n)]),e/=36n;return t.reverse().join(``)}function d(e){return`abcdefghijklmnopqrstuvwxyz`[Math.floor(e()*26)]}function f(e,t){let n=Array(e);for(let r=0;r<e;r++)n[r]=a[Math.floor(t()*36)];return n.join(``)}function p(e){return r(o.encode(e))}function m(){let e=h;return u(l(p(Object.keys(globalThis).toString()+f(32,e)))).slice(1,33)}function h(){return e()/4294967296}function g(e){if(e){if(e.length===0)throw new t(`CUID2_RANDOM_BYTES_EMPTY`,`Random byte array cannot be empty`);let n=0;return()=>{let t=e[n%e.length]/256;return n+=1,t}}return h}function _(e){let n=e?.length??24;if(n<2||n>32)throw new t(`CUID2_LENGTH_OUT_OF_RANGE`,`CUID2 length must be between 2 and 32. Received: ${n}`);let r=g(e?.random);s.counter===void 0&&(s.counter=c()),s.fingerprint===void 0&&(s.fingerprint=m());let i=d(r),a=Date.now().toString(36);s.counter+=1;let o=s.counter.toString(36);return i+u(l(p(a+f(n,r)+o+s.fingerprint))).slice(1,n)}function v(e){return typeof e==`string`&&e.length>=2&&e.length<=32&&i.test(e)}const y=Object.assign(_,{isValid:v});export{t as InvalidInputError,n as UniqueIdError,y as cuid2};
2
2
  //# sourceMappingURL=cuid2.mjs.map
@@ -1,2 +1,2 @@
1
- import{n as e}from"../random-CWCVvNLb.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a}from"../bytes-NRtBOHK5.mjs";const o=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,s=62n,c=(1n<<160n)-1n,l=new Uint8Array(65536);l.fill(255);for(let e=0;e<62;e+=1)l[o.charCodeAt(e)]=e;function u(e){if(e.length<20)throw new t(`KSUID_BYTES_TOO_SHORT`,`KSUID bytes must be at least 20 bytes, got ${e.length}`);let n=0n;for(let t=0;t<20;t+=1)n=n<<8n|BigInt(e[t]);let r=``;for(;n>0n;){let e=n%s;n/=s,r=o[Number(e)]+r}return r.padStart(27,`0`)}function d(e){if(e.length!==27)throw new r(`KSUID_INVALID_LENGTH`,`KSUID string must be 27 characters, got ${e.length}`);let t=0n;for(let n=0;n<27;n+=1){let i=l[e.charCodeAt(n)];if(i===255)throw new r(`KSUID_INVALID_CHAR`,`Invalid KSUID character: ${e[n]}`);t=t*s+BigInt(i)}if(t>c)throw new r(`KSUID_OVERFLOW`,`KSUID string exceeds 160-bit range`);let n=new Uint8Array(20);for(let e=19;e>=0;--e)n[e]=Number(t&255n),t>>=8n;return n}const f=14e8;f+4294967295;const p=u(new Uint8Array(20).fill(255)),m=/^[0-9A-Za-z]{27}$/;function h(e,n,r,i=0){if(!r)r=new Uint8Array(20),i=0;else if(i<0||i+20>r.length)throw new t(`KSUID_BUFFER_OUT_OF_BOUNDS`,`KSUID byte range ${i}:${i+20-1} is out of buffer bounds`);a(r,i,e);for(let e=0;e<16;e+=1)r[i+4+e]=n[e];return r}function g(t,r,i=0){let a=t?.random;if(a&&a.length<16)throw new n(`KSUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16 for KSUID`);let o,s=t?.secs;if(s!==void 0){if(s<f)throw new n(`KSUID_TIMESTAMP_TOO_LOW`,`Timestamp must be >= KSUID epoch`);if(s>5694967295)throw new n(`KSUID_TIMESTAMP_TOO_HIGH`,`Timestamp must be <= maximum KSUID timestamp`);o=s-f}else o=Math.floor(Date.now()/1e3)-f;let c=a??e();return r?(h(o,c,r,i),r):u(h(o,c))}function _(e){return d(e)}function v(e){return u(e)}function y(e){let t=d(e);return(((t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0)+f)*1e3}function b(e){return typeof e==`string`&&e.length===27&&m.test(e)&&e<=p}const x=Object.assign(g,{toBytes:_,fromBytes:v,timestamp:y,isValid:b,NIL:`000000000000000000000000000`,MAX:p});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,x as ksuid};
1
+ import{n as e}from"../random-CGMm8owG.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a}from"../bytes-DzcOKIx1.mjs";const o=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,s=62n,c=(1n<<160n)-1n,l=new Uint8Array(65536);l.fill(255);for(let e=0;e<62;e+=1)l[o.charCodeAt(e)]=e;function u(e){if(e.length<20)throw new t(`KSUID_BYTES_TOO_SHORT`,`KSUID bytes must be at least 20 bytes, got ${e.length}`);let n=0n;for(let t=0;t<20;t+=1)n=n<<8n|BigInt(e[t]);let r=``;for(;n>0n;){let e=n%s;n/=s,r=o[Number(e)]+r}return r.padStart(27,`0`)}function d(e){if(e.length!==27)throw new r(`KSUID_INVALID_LENGTH`,`KSUID string must be 27 characters, got ${e.length}`);let t=0n;for(let n=0;n<27;n+=1){let i=l[e.charCodeAt(n)];if(i===255)throw new r(`KSUID_INVALID_CHAR`,`Invalid KSUID character: ${e[n]}`);t=t*s+BigInt(i)}if(t>c)throw new r(`KSUID_OVERFLOW`,`KSUID string exceeds 160-bit range`);let n=new Uint8Array(20);for(let e=19;e>=0;--e)n[e]=Number(t&255n),t>>=8n;return n}const f=14e8;f+4294967295;const p=u(new Uint8Array(20).fill(255)),m=/^[0-9A-Za-z]{27}$/;function h(e,n,r,i=0){if(!r)r=new Uint8Array(20),i=0;else if(i<0||i+20>r.length)throw new t(`KSUID_BUFFER_OUT_OF_BOUNDS`,`KSUID byte range ${i}:${i+20-1} is out of buffer bounds`);a(r,i,e);for(let e=0;e<16;e+=1)r[i+4+e]=n[e];return r}function g(t,r,i=0){let a=t?.random;if(a&&a.length<16)throw new n(`KSUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16 for KSUID`);let o,s=t?.secs;if(s!==void 0){if(s<f)throw new n(`KSUID_TIMESTAMP_TOO_LOW`,`Timestamp must be >= KSUID epoch`);if(s>5694967295)throw new n(`KSUID_TIMESTAMP_TOO_HIGH`,`Timestamp must be <= maximum KSUID timestamp`);o=s-f}else o=Math.floor(Date.now()/1e3)-f;let c=a??e();return r?(h(o,c,r,i),r):u(h(o,c))}function _(e){return d(e)}function v(e){return u(e)}function y(e){let t=d(e);return(((t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0)+f)*1e3}function b(e){return typeof e==`string`&&e.length===27&&m.test(e)&&e<=p}const x=Object.assign(g,{toBytes:_,fromBytes:v,timestamp:y,isValid:b,NIL:`000000000000000000000000000`,MAX:p});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,x as ksuid};
2
2
  //# sourceMappingURL=ksuid.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"nanoid.d.mts","names":["nanoid: Nanoid"],"sources":["../../src/nanoid/nanoid.ts"],"sourcesContent":[],"mappings":";;;;cAGa,YAAA;KAyBD,aAAA;EAzBZ;AAyBA;AAkBA;AAqMA;;WAjNW;;;;;;;;;;;KAYC,MAAA;;;;;;YAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+LCA,QAAQ"}
1
+ {"version":3,"file":"nanoid.d.mts","names":["nanoid: Nanoid"],"sources":["../../src/nanoid/nanoid.ts"],"sourcesContent":[],"mappings":";;;;cAGa,YAAA;KAmCD,aAAA;EAnCZ;AAmCA;AAkBA;AAoMA;;WAhNW;;;;;;;;;;;KAYC,MAAA;;;;;;YAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8LCA,QAAQ"}
@@ -1,2 +1,2 @@
1
- import{InvalidInputError as e,UniqueIdError as t}from"../errors.mjs";const n=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-`,r=2048,i=/^[A-Za-z0-9_-]+$/;let a,o=0;function s(e){let t=e*128;!a||a.length<t?(a=new Uint8Array(t),crypto.getRandomValues(a),o=0):o+e>a.length&&(crypto.getRandomValues(a),o=0),o+=e}function c(t){if(t.length<2)throw new e(`NANOID_ALPHABET_TOO_SHORT`,`Alphabet must contain at least 2 characters`);if(t.length>256)throw new e(`NANOID_ALPHABET_TOO_LONG`,`Alphabet must not exceed 256 characters`);let n=new Set;for(let r of t){let t=r.charCodeAt(0);if(t<32||t>126)throw new e(`NANOID_ALPHABET_INVALID_CHAR`,`Alphabet must contain only printable ASCII characters (32-126)`);if(n.has(r))throw new e(`NANOID_ALPHABET_DUPLICATE`,`Duplicate character in alphabet: "${r}"`);n.add(r)}}function l(t){if(!Number.isInteger(t)||t<0)throw new e(`NANOID_SIZE_INVALID`,`Size must be a non-negative integer`);if(t>r)throw new e(`NANOID_SIZE_TOO_LARGE`,`Size must not exceed ${r}`)}function u(t){if(t===void 0){s(21);let e=``;for(let t=o-21;t<o;t++)e+=n[a[t]&63];return e}let r=21,i=n,u;if(typeof t==`number`?r=t:(r=t.size??21,i=t.alphabet??n,u=t.random,t.alphabet!==void 0&&c(i)),l(r),r===0)return``;let d=i.length;if(!(d&d-1)){let t=d-1;if(u&&u.length<r)throw new e(`NANOID_RANDOM_BYTES_INSUFFICIENT`,`Insufficient random bytes: need ${r}, have ${u.length}`);let n=u?.subarray(0,r)??globalThis.crypto.getRandomValues(new Uint8Array(r)),a=``;for(let e=0;e<r;e++)a+=i[n[e]&t];return a}let f=(2<<31-Math.clz32(d-1|1))-1,p=Math.ceil(1.6*f*r/d),m=``,h=0;for(;m.length<r;){let t;if(u){if(u.length-h<p)throw new e(`NANOID_RANDOM_BYTES_INSUFFICIENT`,`Insufficient random bytes: need at least ${p} more, have ${u.length-h}`);t=u.subarray(h,h+p),h+=p}else t=globalThis.crypto.getRandomValues(new Uint8Array(p));for(let e=0;e<t.length&&m.length<r;e++){let n=t[e]&f;n<d&&(m+=i[n])}}return m}function d(e){return typeof e==`string`&&e.length>0&&i.test(e)}const f=Object.assign(u,{isValid:d});export{e as InvalidInputError,n as URL_ALPHABET,t as UniqueIdError,f as nanoid};
1
+ import{InvalidInputError as e,UniqueIdError as t}from"../errors.mjs";const n=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-`,r=2048,i=/^[A-Za-z0-9_-]+$/;let a,o=0;function s(e){let t=Math.min(e*128,65536);!a||a.length<t?(a=new Uint8Array(t),crypto.getRandomValues(a),o=0):o+e>a.length&&(crypto.getRandomValues(a),o=0),o+=e}function c(e){s(e);let t=``;for(let r=o-e;r<o;r++)t+=n[a[r]&63];return t}function l(t){if(t.length<2)throw new e(`NANOID_ALPHABET_TOO_SHORT`,`Alphabet must contain at least 2 characters`);if(t.length>256)throw new e(`NANOID_ALPHABET_TOO_LONG`,`Alphabet must not exceed 256 characters`);let n=new Set;for(let r of t){let t=r.charCodeAt(0);if(t<32||t>126)throw new e(`NANOID_ALPHABET_INVALID_CHAR`,`Alphabet must contain only printable ASCII characters (32-126)`);if(n.has(r))throw new e(`NANOID_ALPHABET_DUPLICATE`,`Duplicate character in alphabet: "${r}"`);n.add(r)}}function u(t){if(!Number.isInteger(t)||t<0)throw new e(`NANOID_SIZE_INVALID`,`Size must be a non-negative integer`);if(t>r)throw new e(`NANOID_SIZE_TOO_LARGE`,`Size must not exceed ${r}`)}function d(t){if(t===void 0)return c(21);let r=21,i=n,a;if(typeof t==`number`?r=t:(r=t.size??21,i=t.alphabet??n,a=t.random,t.alphabet!==void 0&&l(i)),u(r),r===0)return``;if(i===n&&a===void 0)return c(r);let o=i.length;if(!(o&o-1)){let t=o-1;if(a&&a.length<r)throw new e(`NANOID_RANDOM_BYTES_INSUFFICIENT`,`Insufficient random bytes: need ${r}, have ${a.length}`);let n=a?.subarray(0,r)??globalThis.crypto.getRandomValues(new Uint8Array(r)),s=``;for(let e=0;e<r;e++)s+=i[n[e]&t];return s}let s=(2<<31-Math.clz32(o-1|1))-1,d=Math.ceil(1.6*s*r/o),f=``,p=0;for(;f.length<r;){let t;if(a){if(a.length-p<d)throw new e(`NANOID_RANDOM_BYTES_INSUFFICIENT`,`Insufficient random bytes: need at least ${d} more, have ${a.length-p}`);t=a.subarray(p,p+d),p+=d}else t=globalThis.crypto.getRandomValues(new Uint8Array(d));for(let e=0;e<t.length&&f.length<r;e++){let n=t[e]&s;n<o&&(f+=i[n])}}return f}function f(e){return typeof e==`string`&&e.length>0&&i.test(e)}const p=Object.assign(d,{isValid:f});export{e as InvalidInputError,n as URL_ALPHABET,t as UniqueIdError,p as nanoid};
2
2
  //# sourceMappingURL=nanoid.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"nanoid.mjs","names":["pool: Uint8Array | undefined","id","randomBytes: Uint8Array | undefined","mask","bytes: Uint8Array","nanoid: Nanoid"],"sources":["../../src/nanoid/nanoid.ts"],"sourcesContent":["import { InvalidInputError } from '../errors'\n\n/** Default URL-safe alphabet (64 characters): A-Z, a-z, 0-9, underscore, hyphen */\nexport const URL_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-'\n\nconst DEFAULT_SIZE = 21\nconst MAX_SIZE = 2048\nconst NANOID_REGEX = /^[A-Za-z0-9_-]+$/\n\n// Keep Nanoid's private pool for its default hot path. It consumes `size`\n// bytes directly without the shared helper's UUID/CUID2-oriented branches.\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool: Uint8Array | undefined\nlet poolOffset = 0\n\nfunction fillPool(bytes: number): void {\n const size = bytes * POOL_SIZE_MULTIPLIER\n if (!pool || pool.length < size) {\n pool = new Uint8Array(size)\n crypto.getRandomValues(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.getRandomValues(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\n\nexport type NanoidOptions = {\n /**\n * Random bytes for deterministic output (testing).\n * For power-of-2 alphabets (2, 4, 8, 16, 32, 64, 128, 256): exactly `size` bytes needed.\n * For other alphabets: ~size * 2 bytes needed (rejection sampling).\n */\n random?: Uint8Array\n /**\n * Custom alphabet to use. Default: URL-safe A-Za-z0-9_-\n * Must be 2-256 printable ASCII characters (32-126) with no duplicates.\n */\n alphabet?: string\n /**\n * Length of generated ID. Default: 21. Maximum: 2048.\n */\n size?: number\n}\n\nexport type Nanoid = {\n /** Generate nanoid with default settings */\n (): string\n /** Generate nanoid with custom size */\n (size: number): string\n /** Generate nanoid with options */\n (options: NanoidOptions): string\n /**\n * Validate a nanoid string against the default URL-safe alphabet.\n * Note: Does not validate IDs generated with custom alphabets.\n */\n isValid(id: unknown): id is string\n}\n\n/**\n * Validate alphabet: 2-256 printable ASCII chars, no duplicates\n */\nfunction validateAlphabet(alphabet: string): void {\n if (alphabet.length < 2) {\n throw new InvalidInputError('NANOID_ALPHABET_TOO_SHORT', 'Alphabet must contain at least 2 characters')\n }\n if (alphabet.length > 256) {\n throw new InvalidInputError('NANOID_ALPHABET_TOO_LONG', 'Alphabet must not exceed 256 characters')\n }\n const seen = new Set<string>()\n for (const char of alphabet) {\n const code = char.charCodeAt(0)\n if (code < 32 || code > 126) {\n throw new InvalidInputError(\n 'NANOID_ALPHABET_INVALID_CHAR',\n 'Alphabet must contain only printable ASCII characters (32-126)',\n )\n }\n if (seen.has(char)) {\n throw new InvalidInputError('NANOID_ALPHABET_DUPLICATE', `Duplicate character in alphabet: \"${char}\"`)\n }\n seen.add(char)\n }\n}\n\n/**\n * Validate size parameter\n */\nfunction validateSize(size: number): void {\n if (!Number.isInteger(size) || size < 0) {\n throw new InvalidInputError('NANOID_SIZE_INVALID', 'Size must be a non-negative integer')\n }\n if (size > MAX_SIZE) {\n throw new InvalidInputError('NANOID_SIZE_TOO_LARGE', `Size must not exceed ${MAX_SIZE}`)\n }\n}\n\n// Overloads\nfunction nanoidFn(): string\nfunction nanoidFn(size: number): string\nfunction nanoidFn(options: NanoidOptions): string\nfunction nanoidFn(sizeOrOptions?: number | NanoidOptions): string {\n // ULTRA-FAST PATH: No arguments = default nanoid\n // Uses simple pooled random bytes (npm nanoid style) for best performance\n if (sizeOrOptions === undefined) {\n fillPool(DEFAULT_SIZE)\n let id = ''\n for (let i = poolOffset - DEFAULT_SIZE; i < poolOffset; i++) {\n id += URL_ALPHABET[pool![i] & 63]\n }\n return id\n }\n\n let size = DEFAULT_SIZE\n let alphabet = URL_ALPHABET\n let randomBytes: Uint8Array | undefined\n\n if (typeof sizeOrOptions === 'number') {\n size = sizeOrOptions\n } else {\n size = sizeOrOptions.size ?? DEFAULT_SIZE\n alphabet = sizeOrOptions.alphabet ?? URL_ALPHABET\n randomBytes = sizeOrOptions.random\n if (sizeOrOptions.alphabet !== undefined) {\n validateAlphabet(alphabet)\n }\n }\n\n validateSize(size)\n\n if (size === 0) return ''\n\n const alphabetLen = alphabet.length\n\n // FAST PATH: Power-of-2 alphabet (includes default 64-char)\n // No rejection needed - each byte maps directly to a character\n if ((alphabetLen & (alphabetLen - 1)) === 0) {\n const mask = alphabetLen - 1\n if (randomBytes && randomBytes.length < size) {\n throw new InvalidInputError(\n 'NANOID_RANDOM_BYTES_INSUFFICIENT',\n `Insufficient random bytes: need ${size}, have ${randomBytes.length}`,\n )\n }\n const bytes = randomBytes?.subarray(0, size) ?? globalThis.crypto.getRandomValues(new Uint8Array(size))\n let id = ''\n for (let i = 0; i < size; i++) {\n id += alphabet[bytes[i] & mask]\n }\n return id\n }\n\n // SLOW PATH: Rejection sampling for non-power-of-2 alphabets\n // Calculate mask: smallest power-of-2 minus 1 that covers alphabet size\n const mask = (2 << (31 - Math.clz32((alphabetLen - 1) | 1))) - 1\n // Calculate step: random bytes per batch (1.6x accounts for rejection)\n const step = Math.ceil((1.6 * mask * size) / alphabetLen)\n\n let id = ''\n let randomOffset = 0\n\n while (id.length < size) {\n let bytes: Uint8Array\n if (randomBytes) {\n if (randomBytes.length - randomOffset < step) {\n throw new InvalidInputError(\n 'NANOID_RANDOM_BYTES_INSUFFICIENT',\n `Insufficient random bytes: need at least ${step} more, have ${randomBytes.length - randomOffset}`,\n )\n }\n bytes = randomBytes.subarray(randomOffset, randomOffset + step)\n randomOffset += step\n } else {\n bytes = globalThis.crypto.getRandomValues(new Uint8Array(step))\n }\n\n for (let i = 0; i < bytes.length && id.length < size; i++) {\n const index = bytes[i] & mask\n if (index < alphabetLen) {\n id += alphabet[index]\n }\n // Otherwise reject and continue (no modulo bias)\n }\n }\n\n return id\n}\n\n/**\n * Validate a nanoid string against the default URL-safe alphabet.\n * Note: Does not validate IDs generated with custom alphabets.\n */\nfunction isValid(id: unknown): id is string {\n return typeof id === 'string' && id.length > 0 && NANOID_REGEX.test(id)\n}\n\n/**\n * Generate a URL-friendly unique string ID.\n *\n * Nanoid is a tiny, secure, URL-friendly unique string ID generator.\n * It uses a URL-safe alphabet (A-Za-z0-9_-) and generates 21-character\n * IDs by default with 126 bits of entropy.\n *\n * Unlike UUID v7 or ULID, nanoid is NOT time-ordered. Use it for:\n * - URL shorteners\n * - Session tokens\n * - Invite codes\n * - Any case where you need short, random IDs\n *\n * @example Basic usage\n * ```ts\n * import { nanoid } from 'uniku/nanoid'\n *\n * const id = nanoid()\n * // => \"V1StGXR8_Z5jdHi6B-myT\"\n * ```\n *\n * @example Custom size\n * ```ts\n * const shortId = nanoid(10)\n * // => \"IRFa-VaY2b\"\n * ```\n *\n * @example Custom alphabet (hex)\n * ```ts\n * const hexId = nanoid({ alphabet: '0123456789abcdef', size: 12 })\n * // => \"4f90d13a42bc\"\n * ```\n *\n * @example Validation\n * ```ts\n * const maybeId: unknown = getUserInput()\n * if (nanoid.isValid(maybeId)) {\n * // TypeScript knows maybeId is string\n * console.log(maybeId.length)\n * }\n * ```\n *\n * @throws {InvalidInputError} Size must be between 0 and 2048\n * @throws {InvalidInputError} Alphabet must contain 2-256 unique printable ASCII characters\n * @throws {InvalidInputError} Insufficient random bytes for requested size\n */\nexport const nanoid: Nanoid = Object.assign(nanoidFn, {\n isValid,\n})\n\nexport { InvalidInputError, UniqueIdError } from '../errors'\n"],"mappings":"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"}
1
+ {"version":3,"file":"nanoid.mjs","names":["pool: Uint8Array | undefined","randomBytes: Uint8Array | undefined","mask","id","bytes: Uint8Array","nanoid: Nanoid"],"sources":["../../src/nanoid/nanoid.ts"],"sourcesContent":["import { InvalidInputError } from '../errors'\n\n/** Default URL-safe alphabet (64 characters): A-Z, a-z, 0-9, underscore, hyphen */\nexport const URL_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-'\n\nconst DEFAULT_SIZE = 21\nconst MAX_SIZE = 2048\nconst NANOID_REGEX = /^[A-Za-z0-9_-]+$/\n\n// Keep Nanoid's private pool for its default hot path. It consumes `size`\n// bytes directly without the shared helper's UUID/CUID2-oriented branches.\nconst POOL_SIZE_MULTIPLIER = 128\nconst MAX_POOL_SIZE = 65_536\nlet pool: Uint8Array | undefined\nlet poolOffset = 0\n\nfunction fillPool(bytes: number): void {\n const size = Math.min(bytes * POOL_SIZE_MULTIPLIER, MAX_POOL_SIZE)\n if (!pool || pool.length < size) {\n pool = new Uint8Array(size)\n crypto.getRandomValues(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.getRandomValues(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\n\nfunction defaultAlphabetFromPool(size: number): string {\n fillPool(size)\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += URL_ALPHABET[pool![i] & 63]\n }\n return id\n}\n\nexport type NanoidOptions = {\n /**\n * Random bytes for deterministic output (testing).\n * For power-of-2 alphabets (2, 4, 8, 16, 32, 64, 128, 256): exactly `size` bytes needed.\n * For other alphabets: ~size * 2 bytes needed (rejection sampling).\n */\n random?: Uint8Array\n /**\n * Custom alphabet to use. Default: URL-safe A-Za-z0-9_-\n * Must be 2-256 printable ASCII characters (32-126) with no duplicates.\n */\n alphabet?: string\n /**\n * Length of generated ID. Default: 21. Maximum: 2048.\n */\n size?: number\n}\n\nexport type Nanoid = {\n /** Generate nanoid with default settings */\n (): string\n /** Generate nanoid with custom size */\n (size: number): string\n /** Generate nanoid with options */\n (options: NanoidOptions): string\n /**\n * Validate a nanoid string against the default URL-safe alphabet.\n * Note: Does not validate IDs generated with custom alphabets.\n */\n isValid(id: unknown): id is string\n}\n\n/**\n * Validate alphabet: 2-256 printable ASCII chars, no duplicates\n */\nfunction validateAlphabet(alphabet: string): void {\n if (alphabet.length < 2) {\n throw new InvalidInputError('NANOID_ALPHABET_TOO_SHORT', 'Alphabet must contain at least 2 characters')\n }\n if (alphabet.length > 256) {\n throw new InvalidInputError('NANOID_ALPHABET_TOO_LONG', 'Alphabet must not exceed 256 characters')\n }\n const seen = new Set<string>()\n for (const char of alphabet) {\n const code = char.charCodeAt(0)\n if (code < 32 || code > 126) {\n throw new InvalidInputError(\n 'NANOID_ALPHABET_INVALID_CHAR',\n 'Alphabet must contain only printable ASCII characters (32-126)',\n )\n }\n if (seen.has(char)) {\n throw new InvalidInputError('NANOID_ALPHABET_DUPLICATE', `Duplicate character in alphabet: \"${char}\"`)\n }\n seen.add(char)\n }\n}\n\n/**\n * Validate size parameter\n */\nfunction validateSize(size: number): void {\n if (!Number.isInteger(size) || size < 0) {\n throw new InvalidInputError('NANOID_SIZE_INVALID', 'Size must be a non-negative integer')\n }\n if (size > MAX_SIZE) {\n throw new InvalidInputError('NANOID_SIZE_TOO_LARGE', `Size must not exceed ${MAX_SIZE}`)\n }\n}\n\n// Overloads\nfunction nanoidFn(): string\nfunction nanoidFn(size: number): string\nfunction nanoidFn(options: NanoidOptions): string\nfunction nanoidFn(sizeOrOptions?: number | NanoidOptions): string {\n // ULTRA-FAST PATH: No arguments = default nanoid\n // Uses simple pooled random bytes (npm nanoid style) for best performance\n if (sizeOrOptions === undefined) {\n return defaultAlphabetFromPool(DEFAULT_SIZE)\n }\n\n let size = DEFAULT_SIZE\n let alphabet = URL_ALPHABET\n let randomBytes: Uint8Array | undefined\n\n if (typeof sizeOrOptions === 'number') {\n size = sizeOrOptions\n } else {\n size = sizeOrOptions.size ?? DEFAULT_SIZE\n alphabet = sizeOrOptions.alphabet ?? URL_ALPHABET\n randomBytes = sizeOrOptions.random\n if (sizeOrOptions.alphabet !== undefined) {\n validateAlphabet(alphabet)\n }\n }\n\n validateSize(size)\n\n if (size === 0) return ''\n\n if (alphabet === URL_ALPHABET && randomBytes === undefined) {\n return defaultAlphabetFromPool(size)\n }\n\n const alphabetLen = alphabet.length\n\n // FAST PATH: Power-of-2 alphabet (includes default 64-char)\n // No rejection needed - each byte maps directly to a character\n if ((alphabetLen & (alphabetLen - 1)) === 0) {\n const mask = alphabetLen - 1\n if (randomBytes && randomBytes.length < size) {\n throw new InvalidInputError(\n 'NANOID_RANDOM_BYTES_INSUFFICIENT',\n `Insufficient random bytes: need ${size}, have ${randomBytes.length}`,\n )\n }\n const bytes = randomBytes?.subarray(0, size) ?? globalThis.crypto.getRandomValues(new Uint8Array(size))\n let id = ''\n for (let i = 0; i < size; i++) {\n id += alphabet[bytes[i] & mask]\n }\n return id\n }\n\n // SLOW PATH: Rejection sampling for non-power-of-2 alphabets\n // Calculate mask: smallest power-of-2 minus 1 that covers alphabet size\n const mask = (2 << (31 - Math.clz32((alphabetLen - 1) | 1))) - 1\n // Calculate step: random bytes per batch (1.6x accounts for rejection)\n const step = Math.ceil((1.6 * mask * size) / alphabetLen)\n\n let id = ''\n let randomOffset = 0\n\n while (id.length < size) {\n let bytes: Uint8Array\n if (randomBytes) {\n if (randomBytes.length - randomOffset < step) {\n throw new InvalidInputError(\n 'NANOID_RANDOM_BYTES_INSUFFICIENT',\n `Insufficient random bytes: need at least ${step} more, have ${randomBytes.length - randomOffset}`,\n )\n }\n bytes = randomBytes.subarray(randomOffset, randomOffset + step)\n randomOffset += step\n } else {\n bytes = globalThis.crypto.getRandomValues(new Uint8Array(step))\n }\n\n for (let i = 0; i < bytes.length && id.length < size; i++) {\n const index = bytes[i] & mask\n if (index < alphabetLen) {\n id += alphabet[index]\n }\n // Otherwise reject and continue (no modulo bias)\n }\n }\n\n return id\n}\n\n/**\n * Validate a nanoid string against the default URL-safe alphabet.\n * Note: Does not validate IDs generated with custom alphabets.\n */\nfunction isValid(id: unknown): id is string {\n return typeof id === 'string' && id.length > 0 && NANOID_REGEX.test(id)\n}\n\n/**\n * Generate a URL-friendly unique string ID.\n *\n * Nanoid is a tiny, secure, URL-friendly unique string ID generator.\n * It uses a URL-safe alphabet (A-Za-z0-9_-) and generates 21-character\n * IDs by default with 126 bits of entropy.\n *\n * Unlike UUID v7 or ULID, nanoid is NOT time-ordered. Use it for:\n * - URL shorteners\n * - Session tokens\n * - Invite codes\n * - Any case where you need short, random IDs\n *\n * @example Basic usage\n * ```ts\n * import { nanoid } from 'uniku/nanoid'\n *\n * const id = nanoid()\n * // => \"V1StGXR8_Z5jdHi6B-myT\"\n * ```\n *\n * @example Custom size\n * ```ts\n * const shortId = nanoid(10)\n * // => \"IRFa-VaY2b\"\n * ```\n *\n * @example Custom alphabet (hex)\n * ```ts\n * const hexId = nanoid({ alphabet: '0123456789abcdef', size: 12 })\n * // => \"4f90d13a42bc\"\n * ```\n *\n * @example Validation\n * ```ts\n * const maybeId: unknown = getUserInput()\n * if (nanoid.isValid(maybeId)) {\n * // TypeScript knows maybeId is string\n * console.log(maybeId.length)\n * }\n * ```\n *\n * @throws {InvalidInputError} Size must be between 0 and 2048\n * @throws {InvalidInputError} Alphabet must contain 2-256 unique printable ASCII characters\n * @throws {InvalidInputError} Insufficient random bytes for requested size\n */\nexport const nanoid: Nanoid = Object.assign(nanoidFn, {\n isValid,\n})\n\nexport { InvalidInputError, UniqueIdError } from '../errors'\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  const e=globalThis.crypto.getRandomValues.bind(globalThis.crypto),t=new Uint8Array(256);let n=256;function r(){e(t),n=0}function i(){n>252&&r();let e=t[n]*16777216+t[n+1]*65536+t[n+2]*256+t[n+3]>>>0;return n+=4,e}function a(){n>240&&r();let e=n;return n+=16,t.subarray(e,n)}export{a as n,i as t};
2
- //# sourceMappingURL=random-CWCVvNLb.mjs.map
2
+ //# sourceMappingURL=random-CGMm8owG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"random-CWCVvNLb.mjs","names":[],"sources":["../src/common/random.ts"],"sourcesContent":["const randomFill = /*@__PURE__*/ globalThis.crypto.getRandomValues.bind(globalThis.crypto)\n\n/**\n * Simple random byte pool for ID generation.\n *\n * Module-level state is per JavaScript isolate, so SharedArrayBuffer and Atomics\n * only add overhead here. Returned views are consumed synchronously by callers.\n */\n\nconst POOL_SIZE = 256\nconst pool = new Uint8Array(POOL_SIZE)\nlet poolOffset = POOL_SIZE\n\nfunction refillPool(): void {\n randomFill(pool)\n poolOffset = 0\n}\n\n/**\n * Return a view of `count` random bytes from the pool.\n */\nexport function randomBytes(count: number): Uint8Array {\n if (count > POOL_SIZE) {\n return randomFill(new Uint8Array(count))\n }\n\n if (poolOffset + count > POOL_SIZE) {\n refillPool()\n }\n\n const start = poolOffset\n poolOffset += count\n return pool.subarray(start, poolOffset)\n}\n\n/**\n * Generate a random unsigned 32-bit integer from the shared pool.\n */\nexport function randomUint32(): number {\n if (poolOffset > POOL_SIZE - 4) {\n refillPool()\n }\n\n const value =\n (pool[poolOffset] * 0x1000000 +\n pool[poolOffset + 1] * 0x10000 +\n pool[poolOffset + 2] * 0x100 +\n pool[poolOffset + 3]) >>>\n 0\n poolOffset += 4\n return value\n}\n\n/**\n * Generate 16 bytes of cryptographically strong random data.\n * Uses a pre-filled pool to minimize crypto API calls.\n */\nexport function rng(): Uint8Array {\n if (poolOffset > POOL_SIZE - 16) {\n refillPool()\n }\n\n const start = poolOffset\n poolOffset += 16\n return pool.subarray(start, poolOffset)\n}\n"],"mappings":"AAAA,MAAM,EAA2B,WAAW,OAAO,gBAAgB,KAAK,WAAW,OAAO,CAUpF,EAAO,IAAI,WAAW,IAAU,CACtC,IAAI,EAAa,IAEjB,SAAS,GAAmB,CAC1B,EAAW,EAAK,CAChB,EAAa,EAuBf,SAAgB,GAAuB,CACjC,EAAa,KACf,GAAY,CAGd,IAAM,EACH,EAAK,GAAc,SAClB,EAAK,EAAa,GAAK,MACvB,EAAK,EAAa,GAAK,IACvB,EAAK,EAAa,KACpB,EAEF,MADA,IAAc,EACP,EAOT,SAAgB,GAAkB,CAC5B,EAAa,KACf,GAAY,CAGd,IAAM,EAAQ,EAEd,MADA,IAAc,GACP,EAAK,SAAS,EAAO,EAAW"}
1
+ {"version":3,"file":"random-CGMm8owG.mjs","names":[],"sources":["../src/common/random.ts"],"sourcesContent":["const randomFill = /*@__PURE__*/ globalThis.crypto.getRandomValues.bind(globalThis.crypto)\n\n/**\n * Simple random byte pool for ID generation.\n *\n * Module-level state is per JavaScript isolate, so SharedArrayBuffer and Atomics\n * only add overhead here. Returned views are consumed synchronously by callers.\n */\n\nconst POOL_SIZE = 256\nconst pool = new Uint8Array(POOL_SIZE)\nlet poolOffset = POOL_SIZE\n\nfunction refillPool(): void {\n randomFill(pool)\n poolOffset = 0\n}\n\n/**\n * Return a view of `count` random bytes from the pool.\n */\nexport function randomBytes(count: number): Uint8Array {\n if (count > POOL_SIZE) {\n return randomFill(new Uint8Array(count))\n }\n\n if (poolOffset + count > POOL_SIZE) {\n refillPool()\n }\n\n const start = poolOffset\n poolOffset += count\n return pool.subarray(start, poolOffset)\n}\n\n/**\n * Generate a random unsigned 32-bit integer from the shared pool.\n */\nexport function randomUint32(): number {\n if (poolOffset > POOL_SIZE - 4) {\n refillPool()\n }\n\n const value =\n (pool[poolOffset] * 0x1000000 +\n pool[poolOffset + 1] * 0x10000 +\n pool[poolOffset + 2] * 0x100 +\n pool[poolOffset + 3]) >>>\n 0\n poolOffset += 4\n return value\n}\n\n/**\n * Generate 16 bytes of cryptographically strong random data.\n * Uses a pre-filled pool to minimize crypto API calls.\n */\nexport function rng(): Uint8Array {\n if (poolOffset > POOL_SIZE - 16) {\n refillPool()\n }\n\n const start = poolOffset\n poolOffset += 16\n return pool.subarray(start, poolOffset)\n}\n"],"mappings":"AAAA,MAAM,EAA2B,WAAW,OAAO,gBAAgB,KAAK,WAAW,OAAO,CAUpF,EAAO,IAAI,WAAW,IAAU,CACtC,IAAI,EAAa,IAEjB,SAAS,GAAmB,CAC1B,EAAW,EAAK,CAChB,EAAa,EAuBf,SAAgB,GAAuB,CACjC,EAAa,KACf,GAAY,CAGd,IAAM,EACH,EAAK,GAAc,SAClB,EAAK,EAAa,GAAK,MACvB,EAAK,EAAa,GAAK,IACvB,EAAK,EAAa,KACpB,EAEF,MADA,IAAc,EACP,EAOT,SAAgB,GAAkB,CAC5B,EAAa,KACf,GAAY,CAGd,IAAM,EAAQ,EAEd,MADA,IAAc,GACP,EAAK,SAAS,EAAO,EAAW"}
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/errors.ts","../src/common/bytes.ts","../src/common/random.ts","../../../node_modules/.pnpm/@noble+hashes@2.0.1/node_modules/@noble/hashes/utils.d.ts","../../../node_modules/.pnpm/@noble+hashes@2.0.1/node_modules/@noble/hashes/sha3.d.ts","../src/cuid2/cuid2.ts","../src/ksuid/base62.ts","../src/ksuid/ksuid.ts","../src/nanoid/nanoid.ts","../src/uuid/common/hex.ts","../src/uuid/common/uuid.ts","../src/uuid/v7.ts","../src/typeid/typeid.ts","../src/ulid/crockford.ts","../src/ulid/ulid.ts","../src/uuid/v4.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/ksuid.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/base62.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/uint128.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/sequence.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/sort.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/compressed-set.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/errors.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/index.d.ts","../../../node_modules/.pnpm/@paralleldrive+cuid2@3.3.0/node_modules/@paralleldrive/cuid2/index.d.ts","../../../node_modules/.pnpm/nanoid@5.1.6/node_modules/nanoid/index.d.ts","../../../node_modules/.pnpm/typeid-js@1.2.0/node_modules/typeid-js/dist/index.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/types.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/ulid.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/uuid.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/crockford.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/error.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/constants.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/index.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/types.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/max.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/nil.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/parse.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/stringify.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v1.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v1ToV6.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v35.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v3.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v5.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v6.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v6ToV1.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v7.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/validate.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/version.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.9/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.9/node_modules/@vitest/runner/dist/tasks.d-DEYaIMIu.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.9/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.9/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.9/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.9/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.9/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.9/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.9/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.9/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/index.d.ts","../__tests__/bench/compat.bench.ts","../__tests__/bench/id.bench.ts","../__tests__/helpers/assertions.ts","../__tests__/helpers/randomness.ts","../__tests__/integration/compat.test.ts","../scripts/bench-results.ts","../__tests__/unit/bench-results.test.ts","../__tests__/unit/bytes.test.ts","../__tests__/unit/crockford.test.ts","../__tests__/unit/cuid2.test.ts","../__tests__/unit/ksuid.test.ts","../__tests__/unit/nanoid.test.ts","../__tests__/unit/random.test.ts","../__tests__/unit/typeid.test.ts","../__tests__/unit/ulid.test.ts","../__tests__/unit/uuid.codec.test.ts","../__tests__/unit/uuid.v4.test.ts","../__tests__/unit/uuid.v7.test.ts","../scripts/bench-compare.ts","../scripts/bench-summary.ts","../../../node_modules/.pnpm/ansis@4.2.0/node_modules/ansis/index.d.ts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/shared/logging-BpAvp7KV.d.mts","../../../node_modules/.pnpm/@oxc-project+types@0.103.0/node_modules/@oxc-project/types/types.d.ts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/shared/binding-CDyF6W3D.d.mts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.d.ts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.d.ts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.d.ts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/filter/index.d.ts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/index.d.ts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/shared/define-config-kYHtCO-M.d.mts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/index.d.mts","../../../node_modules/.pnpm/hookable@6.0.1/node_modules/hookable/dist/index.d.mts","../../../node_modules/.pnpm/rolldown-plugin-dts@0.20.0_rolldown@1.0.0-beta.57_typescript@6.0.3/node_modules/rolldown-plugin-dts/dist/filename.d.mts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/shared/constructors-BnPlw43Q.d.mts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/experimental-index.d.mts","../../../node_modules/.pnpm/get-tsconfig@4.13.0/node_modules/get-tsconfig/dist/index.d.mts","../../../node_modules/.pnpm/rolldown-plugin-dts@0.20.0_rolldown@1.0.0-beta.57_typescript@6.0.3/node_modules/rolldown-plugin-dts/dist/index.d.mts","../../../node_modules/.pnpm/typescript@5.6.1-rc/node_modules/typescript/lib/typescript.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/types.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/utils.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/createPackage.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/checkPackage.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/index.d.ts","../../../node_modules/.pnpm/publint@0.3.17/node_modules/publint/src/index.d.ts","../../../node_modules/.pnpm/tsdown@0.18.4_@arethetypeswrong+core@0.18.2_publint@0.3.17_typescript@6.0.3/node_modules/tsdown/dist/index-BfO1W_C3.d.mts","../../../node_modules/.pnpm/tsdown@0.18.4_@arethetypeswrong+core@0.18.2_publint@0.3.17_typescript@6.0.3/node_modules/tsdown/dist/config-NHDK5cAy.d.mts","../../../node_modules/.pnpm/tsdown@0.18.4_@arethetypeswrong+core@0.18.2_publint@0.3.17_typescript@6.0.3/node_modules/tsdown/dist/index.d.mts","../scripts/bundle-summary.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/globals.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/quic.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/util/types.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/globals.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/s3.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/fetch.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/jsx.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/bun.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/extensions.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/devserver.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/ffi.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/html-rewriter.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/jsc.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/sqlite.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/utils.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/overloads.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/branding.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/messages.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/index.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/test.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/wasm.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/overrides.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/deprecated.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/redis.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/shell.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/serve.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/sql.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/security.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/bundle.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/bun.ns.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/index.d.ts","../../../node_modules/.pnpm/@types+bun@1.3.8/node_modules/@types/bun/index.d.ts"],"fileIdsList":[[227,229,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[228,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[227,229,230,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[226,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[227,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[92,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,377,378,379,380,381,382,383],[105,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,377,378,379,380,381,382,383],[105,106,107,108,109,110,111,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[105,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[213,214,215,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[216,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383,386],[168,169,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,261,262,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,263,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,303,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,265,270,272,275,276,279,281,282,283,285,295,300,312,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,265,266,272,275,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,267,272,276,279,281,282,283,295,313,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,268,269,272,276,279,281,282,283,286,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,295,300,309,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,270,272,275,276,279,281,282,283,285,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,263,264,271,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,273,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,274,275,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,263,264,272,275,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,277,279,281,282,283,295,300,312,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,275,276,277,279,281,282,283,295,300,303,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,275,276,278,279,281,282,283,285,295,300,312,358,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,278,279,281,282,283,285,295,300,309,312,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,278,279,280,281,282,283,295,300,309,312,359,360,361,363,365,376,377,378,379,380,381,382,383],[241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,284,295,312,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,285,295,300,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,286,295,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,287,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,290,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,292,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,293,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,285,295,303,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,295,296,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,297,313,316,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,295,300,302,303,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,301,303,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,303,313,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,304,359,360,361,363,365,376,378,379,380,381,382,383],[243,261,264,272,276,279,281,282,283,295,300,306,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,305,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,295,307,308,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,307,308,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,285,295,300,309,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,310,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,285,295,311,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,278,279,281,282,283,293,295,312,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,313,314,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,295,314,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,315,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,284,295,316,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,317,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,267,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,313,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,358,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,318,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,290,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,303,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,308,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,277,279,281,282,283,290,295,300,303,312,315,316,318,358,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,319,359,360,361,363,365,376,378,379,380,381,382,383],[141,147,165,166,167,170,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[177,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[177,178,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[145,147,148,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[145,147,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[145,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,145,156,157,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,145,156,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[164,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,146,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[142,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,141,142,143,144,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,278,279,281,282,283,295,309,313,318,358,359,360,361,362,365,366,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,358,359,360,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,290,295,300,303,309,313,318,358,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,320,359,360,361,363,364,365,366,367,368,369,375,376,377,378,379,380,381,382,383,384,385],[243,264,267,269,272,276,277,279,281,282,283,286,295,303,309,312,319,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,369,376,378,379,380,381,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,374,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,370,371,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,370,371,372,373,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,370,372,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,370,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,378,379,380,381,382,383],[183,184,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[183,184,185,186,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[183,185,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[183,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[219,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[219,221,223,224,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[212,218,222,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[210,212,218,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[211,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[212,218,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[210,211,212,217,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[233,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[209,219,220,225,231,232,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[219,233,234,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[116,117,118,119,120,121,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[116,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[116,243,264,269,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,324,327,330,331,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,312,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,327,331,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,321,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,325,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,323,324,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,285,295,309,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,320,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,320,321,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,285,295,312,323,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[238,239,240,243,264,272,275,276,279,281,282,283,295,300,312,322,326,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,335,343,359,360,361,363,365,376,378,379,380,381,382,383],[239,243,264,272,276,279,281,282,283,295,325,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,352,353,359,360,361,363,365,376,378,379,380,381,382,383],[239,243,264,272,276,279,281,282,283,295,303,312,320,322,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,320,321,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,323,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[238,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,321,322,323,325,326,327,328,329,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,353,354,355,356,357,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,345,348,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,335,336,337,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,325,327,336,338,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,326,359,360,361,363,365,376,378,379,380,381,382,383],[239,243,264,272,276,279,281,282,283,295,321,327,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,331,336,338,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,331,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,325,327,330,359,360,361,363,365,376,377,378,379,380,381,382,383],[239,243,264,272,276,279,281,282,283,295,323,327,335,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,345,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,338,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,303,318,320,321,327,352,359,360,361,363,365,376,377,378,379,380,381,382,383],[123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[123,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[123,130,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[151,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[151,152,153,154,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[153,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,172,173,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,150,162,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,147,149,150,158,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[155,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,149,150,158,171,174,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,150,155,158,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,172,173,174,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,155,159,160,161,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,145,147,149,150,155,158,159,160,161,162,163,165,171,172,173,174,175,176,179,180,181,182,187,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,147,149,150,158,159,172,173,174,175,180,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[188,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[94,96,97,100,101,103,104,112,113,114,115,122,139,188,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[94,96,97,100,101,103,104,188,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[94,96,97,100,103,104,112,113,114,122,139,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[194,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[90,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[102,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[94,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[96,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[97,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[91,188,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[100,101,104,191,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[103,188,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[99,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[104,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[100,188,191,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[194,243,264,272,276,279,281,282,283,287,295,359,360,361,363,365,376,378,379,380,381,382,383],[235,243,264,272,276,279,281,282,283,287,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,91,93,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,90,91,95,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,100,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,90,91,102,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,98,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,91,99,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},"2071aeb41835ec5186707ca3c13b018f765490be78b4d406afb025694e0d74fb","c4b4044febc32f26a37238a099e5604d5ce00cb79c84f9d2a323bb95b060c2ca","b71b56f5ae7073a5c9726499ff6df85c0ba1744923f57e60d9c5780c89dfdd22",{"version":"79766c737b0a94c9d47424412054f0193d78dbfd3b71cfe2ec4f5efce419c081","impliedFormat":99},{"version":"ca8eb419554fb53a9a08c43b2f52b97fa880aa6fa9158dbba3b446b6a0843c77","impliedFormat":99},"b17343eeacc988370c241b262a7ad52f5db1fbafb59aa0fa5fb9d6a04113ad59","e4889c281d48c7a7501b2de7aa9952bf62fd27c5b00c64bd317612e9786bc0ba","e4269513d95288e3e7298300dae37931a555bcee43a48068a42105bb5a0d730c","62c772a0dcc0f64806d9d4f01b79d0a4677288f4cd2f42e9aea57bb2706ddb7a","161ccf3cf6d7cc3cae0e41cd47377524ceae1226366c484e39f2740fe1bd47a5","7e4c25650d6fb543b17fb3ed52dee88c023772d3a5392370a80cc111c8612be2","0b1aa34ea27a399b039986dc8961cb1c9439ec5df9a7f7af1bdc3a0fb1fc4938","f5a65ece4873c4cada3d21ced3a2f7830e0ee5f2ee4d688400096ad69fba3698","1d004c95aa29ee7baccbbf06ffe17ec86b24d1ab29496ab55b15607d155a8f7b","7693cbd5e7a0558e0ac67645e5acc3967c51de4dbfc820539619b967136031e7","4f3a485fe6a4e461e3aed2f4a7ee1a6d59b499a78397adb78915e4c9767b48eb",{"version":"88d1969f696ef8774a2027f993b4abc3727a2a6a7e35a405d4e0a49907533479","impliedFormat":1},{"version":"d101f81d3c7d799be7a675e56fc95efad531cf175c544c949a45ec830d64e034","impliedFormat":1},{"version":"dda5c530ade2da59efada3fe348f1f353c14253add8945de8a957249554ad84f","impliedFormat":1},{"version":"7acbf1f34eae6220491aa3074b6df443c3430510a855e044a37a4a87cee4aca0","impliedFormat":1},{"version":"38648b91220418198ab5572df6c39fce0617184380758a1b187fe1183ff3533b","impliedFormat":1},{"version":"c65df921afdcf942f95502f5ab1e662347c4700cd3b557c796b63767a6653a0b","impliedFormat":1},{"version":"e0d293ff5526bd757d3286ae43b52942c507dba11290648ce6e8faec5df776ed","impliedFormat":1},{"version":"154c6809ab81c1780157e6a202a7131c1b3d742bb7d1e86f2e96b78763e0b9e1","impliedFormat":1},{"version":"addd3530f4c5e62e0ac3e59088f512a820c02033d112c6a65dfb0e720a207253","impliedFormat":99},{"version":"fa4f7a50d9bf0f0848a6606ded81436678f64b3b7977a3a806ac5386573c7c88","impliedFormat":99},{"version":"be79291850df988e29e6a72fcec3703dbf85caec078d9631311f0b97d451094a","impliedFormat":1},{"version":"0828dd60d0ea50ec9edc32fedd4ac30dc4af97fc1b3e3ce07c9640ce1103d92a","impliedFormat":99},{"version":"607819aaa6c0016edc1760e120070a00689114a0e2812bfc8fc8d892a6c75c9a","impliedFormat":99},{"version":"76150b701d3d784a30b1fd081ed8e0a34b6da836129ba5539dc0c8221a9338d6","impliedFormat":99},{"version":"22960e9371a7d32f0a1c4492e3ff6c7ca6fdba7e2e73b0cbc7ab73e479e63d6a","impliedFormat":99},{"version":"d866d597fb9fb5c1361c12e3defcdc8b3166ac1c65f1ba6c653ed98513dcf522","impliedFormat":99},{"version":"b8b0748b78f316e47137b598294e78e815d8b5f87ddbf376dbefdda89435091d","impliedFormat":99},{"version":"c69bde68870dfad4077824357acfc599c564b063232d740229ca61b9fb3c1ccb","impliedFormat":99},{"version":"cff399d99c68e4fafdd5835d443a980622267a39ac6f3f59b9e3d60d60c4f133","impliedFormat":99},{"version":"6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","impliedFormat":99},{"version":"e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","impliedFormat":99},{"version":"73e8dfd5e7d2abc18bdb5c5873e64dbdd1082408dd1921cad6ff7130d8339334","impliedFormat":99},{"version":"fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","impliedFormat":99},{"version":"4f041ef66167b5f9c73101e5fd8468774b09429932067926f9b2960cc3e4f99d","impliedFormat":99},{"version":"31501b8fc4279e78f6a05ca35e365e73c0b0c57d06dbe8faecb10c7254ce7714","impliedFormat":99},{"version":"7bc76e7d4bbe3764abaf054aed3a622c5cdbac694e474050d71ce9d4ab93ea4b","impliedFormat":99},{"version":"ff4e9db3eb1e95d7ba4b5765e4dc7f512b90fb3b588adfd5ca9b0d9d7a56a1ae","impliedFormat":99},{"version":"f205fd03cd15ea054f7006b7ef8378ef29c315149da0726f4928d291e7dce7b9","impliedFormat":99},{"version":"d683908557d53abeb1b94747e764b3bd6b6226273514b96a942340e9ce4b7be7","impliedFormat":99},{"version":"7c6d5704e2f236fddaf8dbe9131d998a4f5132609ef795b78c3b63f46317f88a","impliedFormat":99},{"version":"d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","impliedFormat":99},{"version":"b6436d90a5487d9b3c3916b939f68e43f7eaca4b0bb305d897d5124180a122b9","impliedFormat":99},{"version":"04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","impliedFormat":99},{"version":"57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","impliedFormat":99},{"version":"badcc9d59770b91987e962f8e3ddfa1e06671b0e4c5e2738bbd002255cad3f38","impliedFormat":99},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"10073cdcf56982064c5337787cc59b79586131e1b28c106ede5bff362f912b70","impliedFormat":99},{"version":"72950913f4900b680f44d8cab6dd1ea0311698fc1eefb014eb9cdfc37ac4a734","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"ff0a83c9a0489a627e264ffcb63f2264b935b20a502afa3a018848139e3d8575","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},"abe173ca7163b5f4e3ffeb0dae7013e22d6785d2eb4c6c2cd65f7ebbb762e926","5a1cc4877a03ae23d477928567cdaa431c9c03c8ed795c3fa3353b7e13c6f2df","f4cbf2116019d282482650488baec04b7cd3bca023c4d9198540292574f29d19","c27347e0b2045875b05389f1fa32f1b2c1cdadc574cd7e5088f6b4a6dceeaa8f","46c6894dc535c3f778ecd22b8f144f3b04063694a3559a31b357841b77b43dce","f138e0e33046dc428e0d9b0b9331013c1313af509fbc56f7c2e6abdad1eeac2b","c2437370f8359b1e4fa3560e4c1aa8fe28c8334c025d4fe3628b9f90f862bb1c","d93c1d139c6fbb7a52b0ed5960753f3fec07f1176bf81c8575364f83f2888ccc","57d9188e1e702be8dbdae6d5ea039d3f3362dd90a6f4aed81f695933e80a706f","8fa465c9908ca27cc40b18deb0412a94e56938d806a0e64cee4e99ab358addb5","0efa9a2bdec6277e820881c655adc295103d6e88935288cc696e6dc41b2fe0db","f4e6e75dd452375b6628db3614d53e08e1863a8a0d88a3a069bab602be3cf468","5fdffc7054cb1b76cf0005ef9e39bd238ce2340ae8e48acdb62dda557b66099f","f161a1daf66ec7b87dcf5c8be784c4c439c2c7c0c379e746f6e9ad25ca43e908","5bace53a9961623d749b02fbb0da0981a10c8ac12fb710654b04a9d787518c21","d9559f1a646e2eee7afe2949a92743b64e0d78615d8efb8586f7caa7565aeba5","32bfe8f8b331adc1591d4c87470dbb9be700a7e62cd74bdf658c0c6f02f4bcad","ae2d586c9d92afe1a762dd6484b00a750414c0dfde02e7757502cc3c73d25d0f","f540b6e2ca342dc3892ee9a0898e98d138e18622074afdab2ebac37e84cdbea0","30558e5850530dcf605e14c29aba868d0c73f0a8ed1258c085c5cf425cf81404",{"version":"a977fdb5392b77b576741ec4a239aa43304d78e5a260a6eee161a0da8b3b6535","impliedFormat":99},{"version":"c12c8c5cd9d4e7c0c478d2817485effeda603049e4b12f055842a70606e0c272","impliedFormat":99},{"version":"029088dbf6c4a83397cdd141d56f52927e8f099771203423683d4429208a8c93","impliedFormat":99},{"version":"8735b138d3f183410b06defb54d3d25525e002a340a5189903a8c85301d9d3ab","impliedFormat":99},{"version":"148debd12783ded0a60d115daeacd8136f77757ae89a05c4e18de6dd77646fd2","impliedFormat":99},{"version":"0088b02dca63c47b273a140d0a3944bdc6dc2eb765fff0ca98e3c3a2786b3a5a","impliedFormat":99},{"version":"a651d06b780fa354231f19b040cbcde484bede3218885752b4f9e9a8f72d3b5f","impliedFormat":99},{"version":"06e26f75bed4c8389a8a63f0e6d6a9068038873dc95d8d1338e8c370a0ae8bc3","impliedFormat":99},{"version":"a2155e2675fd1af52b0b70779371c28611cdd1076b29d0f68bf93b983e5ddce0","impliedFormat":99},{"version":"17bbd2d9f37bc18e00e5e77a10dc391161155cd92fc203275db766ef7450e5ff","impliedFormat":99},{"version":"945a117bbcd7038be748ed8f6ff317d0a789ef4101c5980d705000e01c3f5ade","impliedFormat":99},{"version":"8ca46f1b5f42358f35d944f34f7d5c0eeb6133ac8dac0e9ede6d8c8cf76b9b4c","affectsGlobalScope":true,"impliedFormat":99},{"version":"f2e887b706189648f258f15a7c6945bddfb4bae78dc06bf13e6bb40bb68b3c94","impliedFormat":99},{"version":"a8942160b7d16fdb000480a6463537aab15816f214807c86b9354c9f274bbc79","impliedFormat":99},{"version":"679a787fe9c1fea13921f2044aad8166c4d203234927908087a0e10ff7a257f5","impliedFormat":99},{"version":"83de03c3bc0bf6247fa576dd1ffaade6a2a4703d367b634fab0b81de0d89a9d1","impliedFormat":99},{"version":"63d363266f95ec0e28fc8218c93a16fafeef5429f5594a1f2d565bc6c8ae5e70","impliedFormat":99},{"version":"c66ffde3b8ce430c9cbfe345ea0418892b37f3258a67dd8dd6dec81be1a49eb7","impliedFormat":1},{"version":"872b85add4bf5f8939cf931062cac61fa55eceb364d6dbad754d83698cdd91eb","impliedFormat":99},{"version":"a46b644ee5497126e83ff1dfe09d565cf8a7b6c6798375a4890f4a7bd6b3db21","impliedFormat":99},{"version":"704d4661600867b1637927c236c8ab5cf417ab3218d5ca0e3c1cf04a2a710dd1","impliedFormat":99},{"version":"2d435196adf82be71769d429f1b1ae8bcd3daaf30ba660d1d3ad5083eaaa6ad5","impliedFormat":99},{"version":"b7a28c89d5aaa019d2d9d1f580acba0c46afc8628a857975f85912ac3922ea05","impliedFormat":99},{"version":"4fc892d424005fefe7446026dc6b6e12a814725df3844c7e698e16344287cec1","impliedFormat":99},{"version":"c2f3fbb10dde4f61253d1c7227ecdf1502a05cc86fc36260e4b1f90a0f73b9d0","impliedFormat":99},{"version":"88ecfd64b5b12d8cfd53d7e911c93d0924b52c977f2d3473d0d2e8cbbcc9d8a6","impliedFormat":99},{"version":"71f8cb65143f82b649a10892cab09710cccf3c0f9f4eaa03cfb8e54cd480d3c1","impliedFormat":99},"9b7d483f653753eebaaca45af36538cba9cbf136ddcbc361b75e55081259bd65",{"version":"8d7cbeea0454e05a3cdf3370c5df267072c4f1dc6c48a45a9ad750d7890443d7","affectsGlobalScope":true,"impliedFormat":99},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"dd0109710de4cd93e245121ab86d8c66d20f3ead80074b68e9c3e349c4f53342","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"cf83d90d5faf27b994c2e79af02e32b555dbfe42cd9bd1571445f2168d1f4e2d","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"0e28335ac43f4d94dd2fe6d9e6fa6813570640839addd10d309d7985f33a6308","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"e6f370b5c1d52edabb93ef055d0c0c396a98be77db8aa022fcc3670787b8b5f5","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"9d96a7ce809392ff2cb99691acf7c62e632fe56897356ba013b689277aca3619","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"27c0a08e343c6a0ae17bd13ba6d44a9758236dc904cd5e4b43456996cd51f520","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"6f80e51ba310608cd71bcdc09a171d7bbfb3b316048601c9ec215ce16a8dcfbc","impliedFormat":1},{"version":"10947bb49601aeec9ea1dddf61ef6e4f8442f949bd40a8008e12b129deb037be","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"1641d32611fc7aa82cdd9fa38ff18349aac4eda9e032ced76b21943673887f9a","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"17d06eb5709839c7ce719f0c38ada6f308fb433f2cd6d8c87b35856e07400950","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"2a00d005e3af99cd1cfa75220e60c61b04bfb6be7ca7453bfe2ef6cca37cc03c","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"586eaf66bace2e731cee0ddfbfac326ad74a83c1acfeac4afb2db85ad23226c7","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"d1a14d87cedcf4f0b8173720d6eb29cc02878bf2b6dabf9c9d9cee742f275368","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"b37f83e7deea729aa9ce5593f78905afb45b7532fdff63041d374f60059e7852","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"6e215dac8b234548d91b718f9c07d5b09473cd5cabb29053fcd8be0af190acb6","affectsGlobalScope":true,"impliedFormat":1},{"version":"dbecf494aac7d3ee1b23cdaafae0d0bfea8590567fc153db58fe00ed9fa66c24","impliedFormat":1},{"version":"f3d3e999a323c85c8a63ce90c6e4624ff89fe137a0e2508fddc08e0556d08abf","impliedFormat":1},{"version":"314607151cc203975193d5f44765f38597be3b0a43f466d3c1bfb17176dd3bd3","impliedFormat":1},{"version":"13b67080c26e140e8521f2cb7de76fd55af4ed4aaadffea8fd8be9e260c186fd","impliedFormat":1},{"version":"f40aad6c91017f20fc542f5701ec41e0f6aeba63c61bbf7aa13266ec29a50a3b","impliedFormat":1},{"version":"fc9e630f9302d0414ccd6c8ed2706659cff5ae454a56560c6122fa4a3fac5bbd","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa0a44af370a2d7c1aac988a17836f57910a6c52689f52f5b3ac1d4c6cadcb23","impliedFormat":1},{"version":"0ac74c7586880e26b6a599c710b59284a284e084a2bbc82cd40fb3fbfdea71ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"2ce12357dadbb8efc4e4ec4dab709c8071bf992722fc9adfea2fe0bd5b50923f","impliedFormat":1},{"version":"b5a907deaba678e5083ccdd7cc063a3a8c3413c688098f6de29d6e4cefabc85f","impliedFormat":1},{"version":"ffd344731abee98a0a85a735b19052817afd2156d97d1410819cd9bcd1bd575e","impliedFormat":1},{"version":"475e07c959f4766f90678425b45cf58ac9b95e50de78367759c1e5118e85d5c3","impliedFormat":1},{"version":"a524ae401b30a1b0814f1bbcdae459da97fa30ae6e22476e506bb3f82e3d9456","impliedFormat":1},{"version":"7375e803c033425e27cb33bae21917c106cb37b508fd242cccd978ef2ee244c7","impliedFormat":1},{"version":"eeb890c7e9218afdad2f30ad8a76b0b0b5161d11ce13b6723879de408e6bc47a","impliedFormat":1},{"version":"561c795984d06b91091780cebeac616e9e41d83240770e1af14e6ec083b713d5","impliedFormat":1},{"version":"dfbcc400ac6d20b941ccc7bd9031b9d9f54e4d495dd79117334e771959df4805","affectsGlobalScope":true,"impliedFormat":1},{"version":"944d65951e33a13068be5cd525ec42bf9bc180263ba0b723fa236970aa21f611","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b386c7b6ce6f369d18246904fa5eac73566167c88fb6508feba74fa7501a384","affectsGlobalScope":true,"impliedFormat":1},{"version":"592a109e67b907ffd2078cd6f727d5c326e06eaada169eef8fb18546d96f6797","impliedFormat":1},{"version":"f2eb1e35cae499d57e34b4ac3650248776fe7dbd9a3ec34b23754cfd8c22fceb","impliedFormat":1},{"version":"fbed43a6fcf5b675f5ec6fc960328114777862b58a2bb19c109e8fc1906caa09","impliedFormat":1},{"version":"9e98bd421e71f70c75dae7029e316745c89fa7b8bc8b43a91adf9b82c206099c","impliedFormat":1},{"version":"fc803e6b01f4365f71f51f9ce13f71396766848204d4f7a1b2b6154434b84b15","impliedFormat":1},{"version":"f3afcc0d6f77a9ca2d2c5c92eb4b89cd38d6fa4bdc1410d626bd701760a977ec","impliedFormat":1},{"version":"c8109fe76467db6e801d0edfbc50e6826934686467c9418ce6b246232ce7f109","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6f803e4e45915d58e721c04ec17830c6e6678d1e3e00e28edf3d52720909cea","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be812b06e518320ba82e2aff3ac2ca37370a9df917db708f081b9043fa3315","impliedFormat":1}],"root":[[89,91],[94,104],[189,208],236],"options":{"allowJs":false,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"isolatedDeclarations":true,"module":99,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"strict":true,"target":99,"verbatimModuleSyntax":true},"referencedMap":[[230,1],[229,2],[231,3],[227,4],[228,5],[93,6],[92,7],[106,8],[110,9],[111,7],[112,10],[105,8],[108,11],[109,11],[107,8],[211,7],[113,7],[213,7],[214,7],[216,12],[215,7],[217,13],[167,7],[387,14],[170,15],[168,7],[261,16],[262,16],[263,17],[243,18],[264,19],[265,20],[266,21],[241,7],[267,22],[268,23],[269,24],[270,25],[271,26],[272,27],[273,27],[274,28],[275,29],[276,30],[277,31],[244,7],[242,7],[278,32],[279,33],[280,34],[320,35],[281,36],[282,37],[283,36],[284,38],[285,39],[286,40],[287,41],[288,41],[289,41],[290,42],[291,43],[292,44],[293,45],[294,46],[295,47],[296,47],[297,48],[298,7],[299,7],[300,49],[301,50],[302,49],[303,51],[304,52],[305,53],[306,54],[307,55],[308,56],[309,57],[310,58],[311,59],[312,60],[313,61],[314,62],[315,63],[316,64],[317,65],[245,36],[246,7],[247,66],[248,67],[249,7],[250,68],[251,7],[252,69],[253,70],[254,71],[255,71],[256,72],[257,7],[258,73],[259,74],[260,70],[318,75],[319,76],[171,77],[178,78],[179,79],[177,7],[140,7],[149,80],[148,81],[172,80],[156,82],[158,83],[157,84],[165,85],[164,7],[147,86],[141,87],[143,88],[145,89],[144,7],[146,87],[142,7],[209,7],[169,7],[363,90],[385,7],[384,7],[378,91],[365,92],[364,7],[361,93],[366,7],[359,94],[367,7],[386,95],[368,7],[362,7],[377,96],[379,97],[360,98],[383,99],[381,100],[380,101],[382,102],[369,7],[375,103],[372,104],[374,105],[373,106],[371,107],[370,7],[376,108],[185,109],[187,110],[186,111],[184,112],[183,7],[224,7],[220,7],[114,7],[232,7],[221,113],[225,114],[223,115],[219,116],[212,117],[222,118],[218,119],[210,7],[173,7],[166,7],[234,120],[233,121],[235,122],[115,7],[226,7],[87,7],[88,7],[14,7],[16,7],[15,7],[2,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[24,7],[3,7],[25,7],[26,7],[4,7],[27,7],[31,7],[28,7],[29,7],[30,7],[32,7],[33,7],[34,7],[5,7],[35,7],[36,7],[37,7],[38,7],[6,7],[42,7],[39,7],[40,7],[41,7],[43,7],[7,7],[44,7],[49,7],[50,7],[45,7],[46,7],[47,7],[48,7],[8,7],[54,7],[51,7],[52,7],[53,7],[55,7],[9,7],[56,7],[57,7],[58,7],[60,7],[59,7],[61,7],[62,7],[10,7],[63,7],[64,7],[65,7],[11,7],[66,7],[67,7],[68,7],[69,7],[70,7],[71,7],[12,7],[72,7],[73,7],[74,7],[75,7],[76,7],[1,7],[77,7],[78,7],[13,7],[79,7],[80,7],[81,7],[82,7],[83,7],[84,7],[85,7],[86,7],[121,7],[119,7],[120,7],[122,123],[116,7],[117,124],[118,125],[335,126],[347,127],[333,128],[348,129],[357,130],[324,131],[325,132],[323,133],[356,134],[351,135],[355,136],[327,137],[344,138],[326,139],[354,140],[321,141],[322,142],[328,143],[329,7],[334,144],[332,143],[239,145],[358,146],[349,147],[338,148],[337,143],[339,149],[342,150],[336,151],[340,152],[352,134],[330,153],[331,154],[343,155],[240,156],[346,157],[345,143],[341,158],[350,7],[238,7],[353,159],[139,160],[124,7],[125,7],[126,7],[127,7],[123,7],[128,161],[129,7],[131,162],[130,161],[132,161],[133,162],[134,161],[135,7],[136,161],[137,7],[138,7],[152,163],[155,164],[153,163],[151,7],[154,165],[174,166],[163,167],[159,168],[160,82],[181,169],[175,170],[161,171],[180,172],[150,7],[162,173],[188,174],[182,175],[237,176],[176,7],[189,177],[190,178],[191,7],[192,7],[193,179],[195,180],[196,181],[197,182],[198,183],[199,184],[200,185],[201,186],[202,187],[203,188],[204,189],[205,190],[206,191],[207,192],[194,7],[208,192],[236,193],[90,7],[91,7],[94,194],[89,7],[95,195],[96,196],[97,195],[101,197],[102,195],[103,198],[98,7],[99,199],[104,200],[100,200]],"affectedFilesPendingEmit":[[189,48],[190,48],[191,48],[192,48],[193,48],[195,48],[196,48],[197,48],[198,48],[199,48],[200,48],[201,48],[202,48],[203,48],[204,48],[205,48],[206,48],[207,48],[194,48],[208,48],[236,48],[90,48],[91,48],[94,48],[89,48],[95,48],[96,48],[97,48],[101,48],[102,48],[103,48],[98,48],[99,48],[104,48],[100,48]],"emitSignatures":[89,90,91,94,95,96,97,98,99,100,101,102,103,104,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,236],"version":"6.0.3"}
@@ -0,0 +1,38 @@
1
+ import { BufferError, InvalidInputError, ParseError, UniqueIdError } from "../errors.mjs";
2
+ import { UuidV7Options } from "../uuid/v7.mjs";
3
+
4
+ //#region src/typeid/typeid.d.ts
5
+ type TypeidOptions = UuidV7Options;
6
+ type Typeid = {
7
+ (prefix: string, options?: TypeidOptions): string;
8
+ toBytes(id: string): Uint8Array;
9
+ fromBytes(prefix: string, bytes: Uint8Array): string;
10
+ toUuid(id: string): string;
11
+ fromUuid(prefix: string, uuid: string): string;
12
+ timestamp(id: string): number;
13
+ prefix(id: string): string;
14
+ suffix(id: string): string;
15
+ isValid(id: unknown): id is string;
16
+ };
17
+ /**
18
+ * Generate a TypeID string backed by UUID v7.
19
+ *
20
+ * TypeID combines a lowercase snake_case type prefix with a 26-character
21
+ * modified base32 encoding of a UUID v7, producing sortable domain identifiers
22
+ * such as `user_01h2xcejqtf2nbrexx3vqjhp41`.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { typeid } from 'uniku/typeid'
27
+ *
28
+ * const id = typeid('user')
29
+ * // => "user_01h2xcejqtf2nbrexx3vqjhp41"
30
+ *
31
+ * const uuid = typeid.toUuid(id)
32
+ * const restored = typeid.fromUuid('user', uuid)
33
+ * ```
34
+ */
35
+ declare const typeid: Typeid;
36
+ //#endregion
37
+ export { BufferError, InvalidInputError, ParseError, Typeid, TypeidOptions, UniqueIdError, typeid };
38
+ //# sourceMappingURL=typeid.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeid.d.mts","names":["typeid: Typeid"],"sources":["../../src/typeid/typeid.ts"],"sourcesContent":[],"mappings":";;;;KAIY,aAAA,GAAgB;KAEhB,MAAA;6BACiB;EAH7B,OAAY,CAAA,EAAA,EAAA,MAAA,CAAA,EAIW,UAJK;EAE5B,SAAY,CAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAGuB,UAHvB,CAAA,EAAA,MAAA;EACiB,MAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA,MAAA;EACN,QAAA,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA;EACY,SAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA,MAAA;EAAA,MAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA,MAAA;EAsQnC,MAAaA,CAAAA,EAAAA,EAAAA,MAAQ,CAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;;cAARA,QAAQ"}
@@ -0,0 +1,2 @@
1
+ import{BufferError as e,InvalidInputError as t,ParseError as n,UniqueIdError as r}from"../errors.mjs";import{uuidv7 as i}from"../uuid/v7.mjs";const a=`0123456789abcdefghjkmnpqrstvwxyz`,o=Array.from({length:128},()=>-1);for(let e=0;e<32;e+=1)o[a.charCodeAt(e)]=e;function s(e){if(e.length!==0){if(e.length>63)throw new t(`TYPEID_PREFIX_TOO_LONG`,`TypeID prefix must be at most 63 characters`);for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n),i=r>=97&&r<=122;if(!i&&r!==95)throw new t(`TYPEID_PREFIX_INVALID_CHARACTER`,`TypeID prefix must contain only lowercase ASCII letters and underscores`);if((n===0||n===e.length-1)&&!i)throw new t(`TYPEID_PREFIX_INVALID_BOUNDARY`,`TypeID prefix must start and end with a-z`)}}}function c(e,t){let r=e.charCodeAt(t),i=r<o.length?o[r]:-1;if(i===-1)throw new n(`TYPEID_SUFFIX_INVALID_CHARACTER`,`TypeID suffix contains invalid character at position ${t}`);return i}function l(e){if(e.length!==26)throw new n(`TYPEID_SUFFIX_INVALID_LENGTH`,`TypeID suffix must be 26 characters, got ${e.length}`);if(e[0]>`7`)throw new n(`TYPEID_SUFFIX_OVERFLOW`,`TypeID suffix must encode a 128-bit value`)}function u(e){if(e.length!==16)throw new t(`TYPEID_UUID_BYTES_INVALID_LENGTH`,`UUID bytes must be 16 bytes, got ${e.length}`);return a[(e[0]&224)>>5]+a[e[0]&31]+a[(e[1]&248)>>3]+a[(e[1]&7)<<2|(e[2]&192)>>6]+a[(e[2]&62)>>1]+a[(e[2]&1)<<4|(e[3]&240)>>4]+a[(e[3]&15)<<1|(e[4]&128)>>7]+a[(e[4]&124)>>2]+a[(e[4]&3)<<3|(e[5]&224)>>5]+a[e[5]&31]+a[(e[6]&248)>>3]+a[(e[6]&7)<<2|(e[7]&192)>>6]+a[(e[7]&62)>>1]+a[(e[7]&1)<<4|(e[8]&240)>>4]+a[(e[8]&15)<<1|(e[9]&128)>>7]+a[(e[9]&124)>>2]+a[(e[9]&3)<<3|(e[10]&224)>>5]+a[e[10]&31]+a[(e[11]&248)>>3]+a[(e[11]&7)<<2|(e[12]&192)>>6]+a[(e[12]&62)>>1]+a[(e[12]&1)<<4|(e[13]&240)>>4]+a[(e[13]&15)<<1|(e[14]&128)>>7]+a[(e[14]&124)>>2]+a[(e[14]&3)<<3|(e[15]&224)>>5]+a[e[15]&31]}function d(e){l(e);let t=Array(26);for(let n=0;n<26;n+=1)t[n]=c(e,n);let n=new Uint8Array(16);return n[0]=t[0]<<5|t[1],n[1]=t[2]<<3|t[3]>>2,n[2]=(t[3]&3)<<6|t[4]<<1|t[5]>>4,n[3]=(t[5]&15)<<4|t[6]>>1,n[4]=(t[6]&1)<<7|t[7]<<2|t[8]>>3,n[5]=(t[8]&7)<<5|t[9],n[6]=t[10]<<3|t[11]>>2,n[7]=(t[11]&3)<<6|t[12]<<1|t[13]>>4,n[8]=(t[13]&15)<<4|t[14]>>1,n[9]=(t[14]&1)<<7|t[15]<<2|t[16]>>3,n[10]=(t[16]&7)<<5|t[17],n[11]=t[18]<<3|t[19]>>2,n[12]=(t[19]&3)<<6|t[20]<<1|t[21]>>4,n[13]=(t[21]&15)<<4|t[22]>>1,n[14]=(t[22]&1)<<7|t[23]<<2|t[24]>>3,n[15]=(t[24]&7)<<5|t[25],n}function f(e){if(e.length!==16)throw new t(`TYPEID_UUID_BYTES_INVALID_LENGTH`,`UUID bytes must be 16 bytes, got ${e.length}`);if(e[6]>>4!=7||(e[8]&192)!=128)throw new t(`TYPEID_UUID_NOT_V7`,`TypeID UUID bytes must encode a UUID v7 value`)}function p(e){let t=d(e);return f(t),t}function m(e){if(!i.isValid(e))throw new t(`TYPEID_UUID_NOT_V7`,`TypeID can only wrap UUID v7 values`);return i.toBytes(e)}function h(e){let t=e.lastIndexOf(`_`);if(t===0)throw new n(`TYPEID_INVALID_FORMAT`,`TypeID must not start with "_"`);let r=t===-1?``:e.slice(0,t),i=t===-1?e:e.slice(t+1);return s(r),{prefix:r,suffix:i,bytes:p(i)}}function g(e,t){return e===``?t:`${e}_${t}`}function _(e,t){return s(e),f(t),g(e,u(t))}function v(e){let t=0;for(let n=0;n<6;n+=1)t=t*256+e[n];return t}function y(e,t){return _(e,i(t,new Uint8Array(16)))}function b(e){return h(e).bytes}function x(e,t){return _(e,t)}function S(e){return i.fromBytes(b(e))}function C(e,t){return _(e,m(t))}function w(e){return v(h(e).bytes)}function T(e){return h(e).prefix}function E(e){return h(e).suffix}function D(e){if(typeof e!=`string`)return!1;try{h(e)}catch{return!1}return!0}const O=Object.assign(y,{toBytes:b,fromBytes:x,toUuid:S,fromUuid:C,timestamp:w,prefix:T,suffix:E,isValid:D});export{e as BufferError,t as InvalidInputError,n as ParseError,r as UniqueIdError,O as typeid};
2
+ //# sourceMappingURL=typeid.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeid.mjs","names":["BASE32_DECODE: number[]","prefix","suffix","typeid: Typeid"],"sources":["../../src/typeid/typeid.ts"],"sourcesContent":["import { InvalidInputError, ParseError } from '../errors'\nimport type { UuidV7Options } from '../uuid/v7'\nimport { uuidv7 } from '../uuid/v7'\n\nexport type TypeidOptions = UuidV7Options\n\nexport type Typeid = {\n (prefix: string, options?: TypeidOptions): string\n toBytes(id: string): Uint8Array\n fromBytes(prefix: string, bytes: Uint8Array): string\n toUuid(id: string): string\n fromUuid(prefix: string, uuid: string): string\n timestamp(id: string): number\n prefix(id: string): string\n suffix(id: string): string\n isValid(id: unknown): id is string\n}\n\nconst TYPEID_SUFFIX_LENGTH = 26\nconst TYPEID_UUID_BYTE_LENGTH = 16\nconst TYPEID_ALPHABET = '0123456789abcdefghjkmnpqrstvwxyz'\n\nconst BASE32_DECODE: number[] = Array.from({ length: 128 }, () => -1)\nfor (let i = 0; i < TYPEID_ALPHABET.length; i += 1) {\n BASE32_DECODE[TYPEID_ALPHABET.charCodeAt(i)] = i\n}\n\ntype ParsedTypeid = {\n prefix: string\n suffix: string\n bytes: Uint8Array\n}\n\nfunction assertValidPrefix(prefix: string): void {\n if (prefix.length === 0) {\n return\n }\n\n if (prefix.length > 63) {\n throw new InvalidInputError('TYPEID_PREFIX_TOO_LONG', 'TypeID prefix must be at most 63 characters')\n }\n\n for (let i = 0; i < prefix.length; i += 1) {\n const code = prefix.charCodeAt(i)\n const isLowercaseLetter = code >= 97 && code <= 122\n const isUnderscore = code === 95\n\n if (!isLowercaseLetter && !isUnderscore) {\n throw new InvalidInputError(\n 'TYPEID_PREFIX_INVALID_CHARACTER',\n 'TypeID prefix must contain only lowercase ASCII letters and underscores',\n )\n }\n\n if ((i === 0 || i === prefix.length - 1) && !isLowercaseLetter) {\n throw new InvalidInputError('TYPEID_PREFIX_INVALID_BOUNDARY', 'TypeID prefix must start and end with a-z')\n }\n }\n}\n\nfunction decodeSuffixValue(suffix: string, index: number): number {\n const code = suffix.charCodeAt(index)\n const value = code < BASE32_DECODE.length ? BASE32_DECODE[code] : -1\n\n if (value === -1) {\n throw new ParseError(\n 'TYPEID_SUFFIX_INVALID_CHARACTER',\n `TypeID suffix contains invalid character at position ${index}`,\n )\n }\n\n return value\n}\n\nfunction assertValidSuffixShape(suffix: string): void {\n if (suffix.length !== TYPEID_SUFFIX_LENGTH) {\n throw new ParseError('TYPEID_SUFFIX_INVALID_LENGTH', `TypeID suffix must be 26 characters, got ${suffix.length}`)\n }\n\n if (suffix[0] > '7') {\n throw new ParseError('TYPEID_SUFFIX_OVERFLOW', 'TypeID suffix must encode a 128-bit value')\n }\n}\n\nfunction encodeBytesToSuffix(bytes: Uint8Array): string {\n if (bytes.length !== TYPEID_UUID_BYTE_LENGTH) {\n throw new InvalidInputError('TYPEID_UUID_BYTES_INVALID_LENGTH', `UUID bytes must be 16 bytes, got ${bytes.length}`)\n }\n\n return (\n TYPEID_ALPHABET[(bytes[0] & 0xe0) >> 5] +\n TYPEID_ALPHABET[bytes[0] & 0x1f] +\n TYPEID_ALPHABET[(bytes[1] & 0xf8) >> 3] +\n TYPEID_ALPHABET[((bytes[1] & 0x07) << 2) | ((bytes[2] & 0xc0) >> 6)] +\n TYPEID_ALPHABET[(bytes[2] & 0x3e) >> 1] +\n TYPEID_ALPHABET[((bytes[2] & 0x01) << 4) | ((bytes[3] & 0xf0) >> 4)] +\n TYPEID_ALPHABET[((bytes[3] & 0x0f) << 1) | ((bytes[4] & 0x80) >> 7)] +\n TYPEID_ALPHABET[(bytes[4] & 0x7c) >> 2] +\n TYPEID_ALPHABET[((bytes[4] & 0x03) << 3) | ((bytes[5] & 0xe0) >> 5)] +\n TYPEID_ALPHABET[bytes[5] & 0x1f] +\n TYPEID_ALPHABET[(bytes[6] & 0xf8) >> 3] +\n TYPEID_ALPHABET[((bytes[6] & 0x07) << 2) | ((bytes[7] & 0xc0) >> 6)] +\n TYPEID_ALPHABET[(bytes[7] & 0x3e) >> 1] +\n TYPEID_ALPHABET[((bytes[7] & 0x01) << 4) | ((bytes[8] & 0xf0) >> 4)] +\n TYPEID_ALPHABET[((bytes[8] & 0x0f) << 1) | ((bytes[9] & 0x80) >> 7)] +\n TYPEID_ALPHABET[(bytes[9] & 0x7c) >> 2] +\n TYPEID_ALPHABET[((bytes[9] & 0x03) << 3) | ((bytes[10] & 0xe0) >> 5)] +\n TYPEID_ALPHABET[bytes[10] & 0x1f] +\n TYPEID_ALPHABET[(bytes[11] & 0xf8) >> 3] +\n TYPEID_ALPHABET[((bytes[11] & 0x07) << 2) | ((bytes[12] & 0xc0) >> 6)] +\n TYPEID_ALPHABET[(bytes[12] & 0x3e) >> 1] +\n TYPEID_ALPHABET[((bytes[12] & 0x01) << 4) | ((bytes[13] & 0xf0) >> 4)] +\n TYPEID_ALPHABET[((bytes[13] & 0x0f) << 1) | ((bytes[14] & 0x80) >> 7)] +\n TYPEID_ALPHABET[(bytes[14] & 0x7c) >> 2] +\n TYPEID_ALPHABET[((bytes[14] & 0x03) << 3) | ((bytes[15] & 0xe0) >> 5)] +\n TYPEID_ALPHABET[bytes[15] & 0x1f]\n )\n}\n\nfunction decodeSuffixToBytes(suffix: string): Uint8Array {\n assertValidSuffixShape(suffix)\n\n const values = new Array<number>(TYPEID_SUFFIX_LENGTH)\n for (let i = 0; i < TYPEID_SUFFIX_LENGTH; i += 1) {\n values[i] = decodeSuffixValue(suffix, i)\n }\n\n const bytes = new Uint8Array(TYPEID_UUID_BYTE_LENGTH)\n bytes[0] = (values[0] << 5) | values[1]\n bytes[1] = (values[2] << 3) | (values[3] >> 2)\n bytes[2] = ((values[3] & 0x03) << 6) | (values[4] << 1) | (values[5] >> 4)\n bytes[3] = ((values[5] & 0x0f) << 4) | (values[6] >> 1)\n bytes[4] = ((values[6] & 0x01) << 7) | (values[7] << 2) | (values[8] >> 3)\n bytes[5] = ((values[8] & 0x07) << 5) | values[9]\n bytes[6] = (values[10] << 3) | (values[11] >> 2)\n bytes[7] = ((values[11] & 0x03) << 6) | (values[12] << 1) | (values[13] >> 4)\n bytes[8] = ((values[13] & 0x0f) << 4) | (values[14] >> 1)\n bytes[9] = ((values[14] & 0x01) << 7) | (values[15] << 2) | (values[16] >> 3)\n bytes[10] = ((values[16] & 0x07) << 5) | values[17]\n bytes[11] = (values[18] << 3) | (values[19] >> 2)\n bytes[12] = ((values[19] & 0x03) << 6) | (values[20] << 1) | (values[21] >> 4)\n bytes[13] = ((values[21] & 0x0f) << 4) | (values[22] >> 1)\n bytes[14] = ((values[22] & 0x01) << 7) | (values[23] << 2) | (values[24] >> 3)\n bytes[15] = ((values[24] & 0x07) << 5) | values[25]\n\n return bytes\n}\n\nfunction assertUuidV7Bytes(bytes: Uint8Array): void {\n if (bytes.length !== TYPEID_UUID_BYTE_LENGTH) {\n throw new InvalidInputError('TYPEID_UUID_BYTES_INVALID_LENGTH', `UUID bytes must be 16 bytes, got ${bytes.length}`)\n }\n\n if (bytes[6] >> 4 !== 7 || (bytes[8] & 0xc0) !== 0x80) {\n throw new InvalidInputError('TYPEID_UUID_NOT_V7', 'TypeID UUID bytes must encode a UUID v7 value')\n }\n}\n\nfunction uuidV7BytesFromSuffix(suffix: string): Uint8Array {\n const bytes = decodeSuffixToBytes(suffix)\n assertUuidV7Bytes(bytes)\n return bytes\n}\n\nfunction uuidV7BytesFromUuid(uuid: string): Uint8Array {\n if (!uuidv7.isValid(uuid)) {\n throw new InvalidInputError('TYPEID_UUID_NOT_V7', 'TypeID can only wrap UUID v7 values')\n }\n\n return uuidv7.toBytes(uuid)\n}\n\nfunction parseTypeid(id: string): ParsedTypeid {\n const separatorIndex = id.lastIndexOf('_')\n\n if (separatorIndex === 0) {\n throw new ParseError('TYPEID_INVALID_FORMAT', 'TypeID must not start with \"_\"')\n }\n\n const prefix = separatorIndex === -1 ? '' : id.slice(0, separatorIndex)\n const suffix = separatorIndex === -1 ? id : id.slice(separatorIndex + 1)\n\n assertValidPrefix(prefix)\n const bytes = uuidV7BytesFromSuffix(suffix)\n\n return { prefix, suffix, bytes }\n}\n\nfunction joinPrefixAndSuffix(prefix: string, suffix: string): string {\n return prefix === '' ? suffix : `${prefix}_${suffix}`\n}\n\nfunction formatTypeidFromUuidV7Bytes(prefix: string, bytes: Uint8Array): string {\n assertValidPrefix(prefix)\n assertUuidV7Bytes(bytes)\n return joinPrefixAndSuffix(prefix, encodeBytesToSuffix(bytes))\n}\n\nfunction timestampFromUuidV7Bytes(bytes: Uint8Array): number {\n let msecs = 0\n for (let i = 0; i < 6; i += 1) {\n msecs = msecs * 256 + bytes[i]\n }\n return msecs\n}\n\nfunction typeidFn(prefix: string, options?: TypeidOptions): string {\n const bytes = uuidv7(options, new Uint8Array(TYPEID_UUID_BYTE_LENGTH))\n return formatTypeidFromUuidV7Bytes(prefix, bytes)\n}\n\nfunction typeidToBytes(id: string): Uint8Array {\n return parseTypeid(id).bytes\n}\n\nfunction typeidFromBytes(prefix: string, bytes: Uint8Array): string {\n return formatTypeidFromUuidV7Bytes(prefix, bytes)\n}\n\nfunction typeidToUuid(id: string): string {\n return uuidv7.fromBytes(typeidToBytes(id))\n}\n\nfunction typeidFromUuid(prefix: string, uuid: string): string {\n return formatTypeidFromUuidV7Bytes(prefix, uuidV7BytesFromUuid(uuid))\n}\n\nfunction timestamp(id: string): number {\n return timestampFromUuidV7Bytes(parseTypeid(id).bytes)\n}\n\nfunction prefix(id: string): string {\n return parseTypeid(id).prefix\n}\n\nfunction suffix(id: string): string {\n return parseTypeid(id).suffix\n}\n\nfunction isValid(id: unknown): id is string {\n if (typeof id !== 'string') {\n return false\n }\n\n try {\n parseTypeid(id)\n } catch {\n return false\n }\n\n return true\n}\n\n/**\n * Generate a TypeID string backed by UUID v7.\n *\n * TypeID combines a lowercase snake_case type prefix with a 26-character\n * modified base32 encoding of a UUID v7, producing sortable domain identifiers\n * such as `user_01h2xcejqtf2nbrexx3vqjhp41`.\n *\n * @example\n * ```ts\n * import { typeid } from 'uniku/typeid'\n *\n * const id = typeid('user')\n * // => \"user_01h2xcejqtf2nbrexx3vqjhp41\"\n *\n * const uuid = typeid.toUuid(id)\n * const restored = typeid.fromUuid('user', uuid)\n * ```\n */\nexport const typeid: Typeid = Object.assign(typeidFn, {\n toBytes: typeidToBytes,\n fromBytes: typeidFromBytes,\n toUuid: typeidToUuid,\n fromUuid: typeidFromUuid,\n timestamp,\n prefix,\n suffix,\n isValid,\n})\n\nexport { BufferError, InvalidInputError, ParseError, UniqueIdError } from '../errors'\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{n as e}from"../random-CWCVvNLb.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{r as a,t as o}from"../bytes-NRtBOHK5.mjs";const s=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,c=new Uint8Array(65536);c.fill(255);for(let e=0;e<32;e+=1){let t=s.charCodeAt(e),n=s[e].toLowerCase().charCodeAt(0);c[t]=e,c[n]=e}function l(e,t){return new r(`ULID_INVALID_CHAR`,`Invalid ULID character: ${e[t]}`)}function u(){return new r(`ULID_TIMESTAMP_OVERFLOW`,`ULID timestamp exceeds 48 bits`)}function d(e){let t=c[e.charCodeAt(0)];if(t===255)throw l(e,0);if(t>7)throw u();let n=t;for(let t=1;t<10;t+=1){let r=c[e.charCodeAt(t)];if(r===255)throw l(e,t);n=n*32+r}return n}function f(e){return s[Math.floor(e/35184372088832)&31]+s[Math.floor(e/1099511627776)&31]+s[Math.floor(e/34359738368)&31]+s[Math.floor(e/1073741824)&31]+s[Math.floor(e/33554432)&31]+s[Math.floor(e/1048576)&31]+s[Math.floor(e/32768)&31]+s[Math.floor(e/1024)&31]+s[Math.floor(e/32)&31]+s[e&31]}function p(e){return s[e[0]>>3&31]+s[(e[0]<<2|e[1]>>6)&31]+s[e[1]>>1&31]+s[(e[1]<<4|e[2]>>4)&31]+s[(e[2]<<1|e[3]>>7)&31]+s[e[3]>>2&31]+s[(e[3]<<3|e[4]>>5)&31]+s[e[4]&31]+s[e[5]>>3&31]+s[(e[5]<<2|e[6]>>6)&31]+s[e[6]>>1&31]+s[(e[6]<<4|e[7]>>4)&31]+s[(e[7]<<1|e[8]>>7)&31]+s[e[8]>>2&31]+s[(e[8]<<3|e[9]>>5)&31]+s[e[9]&31]}function m(e){if(e.length!==26)throw new r(`ULID_INVALID_LENGTH`,`ULID string must be 26 characters`);return d(e)}function h(e){if(e.length!==26)throw new r(`ULID_INVALID_LENGTH`,`ULID string must be 26 characters`);let t=new Uint8Array(16),n=c[e.charCodeAt(0)],i=c[e.charCodeAt(1)],a=c[e.charCodeAt(2)],o=c[e.charCodeAt(3)],s=c[e.charCodeAt(4)],d=c[e.charCodeAt(5)],f=c[e.charCodeAt(6)],p=c[e.charCodeAt(7)],m=c[e.charCodeAt(8)],h=c[e.charCodeAt(9)],g=c[e.charCodeAt(10)],_=c[e.charCodeAt(11)],v=c[e.charCodeAt(12)],y=c[e.charCodeAt(13)],b=c[e.charCodeAt(14)],x=c[e.charCodeAt(15)],S=c[e.charCodeAt(16)],C=c[e.charCodeAt(17)],w=c[e.charCodeAt(18)],T=c[e.charCodeAt(19)],E=c[e.charCodeAt(20)],D=c[e.charCodeAt(21)],O=c[e.charCodeAt(22)],k=c[e.charCodeAt(23)],A=c[e.charCodeAt(24)],j=c[e.charCodeAt(25)];if((n|i|a|o|s|d|f|p|m|h|g|_|v|y|b|x|S|C|w|T|E|D|O|k|A|j)&128){for(let t=0;t<26;t+=1)if(c[e.charCodeAt(t)]===255)throw l(e,t)}if(n>7)throw u();return t[0]=n<<5|i,t[1]=a<<3|o>>2,t[2]=o<<6|s<<1|d>>4,t[3]=d<<4|f>>1,t[4]=f<<7|p<<2|m>>3,t[5]=m<<5|h,t[6]=g<<3|_>>2,t[7]=_<<6|v<<1|y>>4,t[8]=y<<4|b>>1,t[9]=b<<7|x<<2|S>>3,t[10]=S<<5|C,t[11]=w<<3|T>>2,t[12]=T<<6|E<<1|D>>4,t[13]=D<<4|O>>1,t[14]=O<<7|k<<2|A>>3,t[15]=A<<5|j,t}function g(e){if(e.length<16)throw new t(`ULID_BYTES_TOO_SHORT`,`Byte array must be at least 16 bytes`);let n=0;for(let t=0;t<6;t+=1)n=n*256+e[t];return f(n)+p(e.subarray(6,16))}const _=/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i,v={msecs:-1/0,lastRandom:new Uint8Array(10)};function y(e,n,r,i=0){if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw new t(`ULID_BUFFER_OUT_OF_BOUNDS`,`ULID byte range ${i}:${i+15} is out of buffer bounds`);a(r,i,e);for(let e=0;e<10;e+=1)r[i+6+e]=n[e];return r}function b(t,r,i=0){let a,s,c=Date.now();if(t)if(a=t.msecs??c,t.random){if(t.random.length<10)throw new n(`ULID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 10 for ULID`);s=t.random}else s=e();else if(a=c,a>v.msecs)s=e(),v.msecs=a,v.lastRandom.set(s.subarray(0,10));else{if(a=v.msecs,!o(v.lastRandom))throw v.lastRandom.fill(255),new n(`ULID_RANDOM_OVERFLOW`,`ULID random component overflowed while preserving monotonic order`);s=v.lastRandom}return r?(y(a,s,r,i),r):f(a)+p(s)}function x(e){return typeof e==`string`&&_.test(e)}const S=Object.assign(b,{toBytes:e=>h(e),fromBytes:e=>g(e),timestamp:e=>m(e),isValid:x,NIL:`00000000000000000000000000`,MAX:`7ZZZZZZZZZZZZZZZZZZZZZZZZZ`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,S as ulid};
1
+ import{n as e}from"../random-CGMm8owG.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{r as a,t as o}from"../bytes-DzcOKIx1.mjs";const s=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,c=new Uint8Array(65536);c.fill(255);for(let e=0;e<32;e+=1){let t=s.charCodeAt(e),n=s[e].toLowerCase().charCodeAt(0);c[t]=e,c[n]=e}function l(e,t){return new r(`ULID_INVALID_CHAR`,`Invalid ULID character: ${e[t]}`)}function u(){return new r(`ULID_TIMESTAMP_OVERFLOW`,`ULID timestamp exceeds 48 bits`)}function d(e){let t=c[e.charCodeAt(0)];if(t===255)throw l(e,0);if(t>7)throw u();let n=t;for(let t=1;t<10;t+=1){let r=c[e.charCodeAt(t)];if(r===255)throw l(e,t);n=n*32+r}return n}function f(e){return s[Math.floor(e/35184372088832)&31]+s[Math.floor(e/1099511627776)&31]+s[Math.floor(e/34359738368)&31]+s[Math.floor(e/1073741824)&31]+s[Math.floor(e/33554432)&31]+s[Math.floor(e/1048576)&31]+s[Math.floor(e/32768)&31]+s[Math.floor(e/1024)&31]+s[Math.floor(e/32)&31]+s[e&31]}function p(e){return s[e[0]>>3&31]+s[(e[0]<<2|e[1]>>6)&31]+s[e[1]>>1&31]+s[(e[1]<<4|e[2]>>4)&31]+s[(e[2]<<1|e[3]>>7)&31]+s[e[3]>>2&31]+s[(e[3]<<3|e[4]>>5)&31]+s[e[4]&31]+s[e[5]>>3&31]+s[(e[5]<<2|e[6]>>6)&31]+s[e[6]>>1&31]+s[(e[6]<<4|e[7]>>4)&31]+s[(e[7]<<1|e[8]>>7)&31]+s[e[8]>>2&31]+s[(e[8]<<3|e[9]>>5)&31]+s[e[9]&31]}function m(e){if(e.length!==26)throw new r(`ULID_INVALID_LENGTH`,`ULID string must be 26 characters`);return d(e)}function h(e){if(e.length!==26)throw new r(`ULID_INVALID_LENGTH`,`ULID string must be 26 characters`);let t=new Uint8Array(16),n=c[e.charCodeAt(0)],i=c[e.charCodeAt(1)],a=c[e.charCodeAt(2)],o=c[e.charCodeAt(3)],s=c[e.charCodeAt(4)],d=c[e.charCodeAt(5)],f=c[e.charCodeAt(6)],p=c[e.charCodeAt(7)],m=c[e.charCodeAt(8)],h=c[e.charCodeAt(9)],g=c[e.charCodeAt(10)],_=c[e.charCodeAt(11)],v=c[e.charCodeAt(12)],y=c[e.charCodeAt(13)],b=c[e.charCodeAt(14)],x=c[e.charCodeAt(15)],S=c[e.charCodeAt(16)],C=c[e.charCodeAt(17)],w=c[e.charCodeAt(18)],T=c[e.charCodeAt(19)],E=c[e.charCodeAt(20)],D=c[e.charCodeAt(21)],O=c[e.charCodeAt(22)],k=c[e.charCodeAt(23)],A=c[e.charCodeAt(24)],j=c[e.charCodeAt(25)];if((n|i|a|o|s|d|f|p|m|h|g|_|v|y|b|x|S|C|w|T|E|D|O|k|A|j)&128){for(let t=0;t<26;t+=1)if(c[e.charCodeAt(t)]===255)throw l(e,t)}if(n>7)throw u();return t[0]=n<<5|i,t[1]=a<<3|o>>2,t[2]=o<<6|s<<1|d>>4,t[3]=d<<4|f>>1,t[4]=f<<7|p<<2|m>>3,t[5]=m<<5|h,t[6]=g<<3|_>>2,t[7]=_<<6|v<<1|y>>4,t[8]=y<<4|b>>1,t[9]=b<<7|x<<2|S>>3,t[10]=S<<5|C,t[11]=w<<3|T>>2,t[12]=T<<6|E<<1|D>>4,t[13]=D<<4|O>>1,t[14]=O<<7|k<<2|A>>3,t[15]=A<<5|j,t}function g(e){if(e.length<16)throw new t(`ULID_BYTES_TOO_SHORT`,`Byte array must be at least 16 bytes`);let n=0;for(let t=0;t<6;t+=1)n=n*256+e[t];return f(n)+p(e.subarray(6,16))}const _=/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i,v={msecs:-1/0,lastRandom:new Uint8Array(10)};function y(e,n,r,i=0){if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw new t(`ULID_BUFFER_OUT_OF_BOUNDS`,`ULID byte range ${i}:${i+15} is out of buffer bounds`);a(r,i,e);for(let e=0;e<10;e+=1)r[i+6+e]=n[e];return r}function b(t,r,i=0){let a,s,c=Date.now();if(t)if(a=t.msecs??c,t.random){if(t.random.length<10)throw new n(`ULID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 10 for ULID`);s=t.random}else s=e();else if(a=c,a>v.msecs)s=e(),v.msecs=a,v.lastRandom.set(s.subarray(0,10));else{if(a=v.msecs,!o(v.lastRandom))throw v.lastRandom.fill(255),new n(`ULID_RANDOM_OVERFLOW`,`ULID random component overflowed while preserving monotonic order`);s=v.lastRandom}return r?(y(a,s,r,i),r):f(a)+p(s)}function x(e){return typeof e==`string`&&_.test(e)}const S=Object.assign(b,{toBytes:e=>h(e),fromBytes:e=>g(e),timestamp:e=>m(e),isValid:x,NIL:`00000000000000000000000000`,MAX:`7ZZZZZZZZZZZZZZZZZZZZZZZZZ`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,S as ulid};
2
2
  //# sourceMappingURL=ulid.mjs.map
package/build/uuid/v4.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{n as e}from"../random-CWCVvNLb.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a,t as o}from"../uuid-QysI8pWE.mjs";const s=globalThis.crypto.randomUUID.bind(globalThis.crypto),c=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function l(e,r,i=0){if(e.length<16)throw new n(`UUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16`);if(e[6]=e[6]&15|64,e[8]=e[8]&63|128,!r)return e;if(i<0||i+16>r.length)throw new t(`UUID_BUFFER_OUT_OF_BOUNDS`,`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let t=0;t<16;t+=1)r[i+t]=e[t];return r}function u(e,t,n){return!t&&!e?s():d(e,t,n)}function d(t,n,r){let i=l(t?.random??e(),n,r);return n??o(i)}function f(e){return typeof e==`string`&&c.test(e)}const p=Object.assign(u,{toBytes:a,fromBytes:o,isValid:f,NIL:`00000000-0000-0000-0000-000000000000`,MAX:`ffffffff-ffff-ffff-ffff-ffffffffffff`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,p as uuidv4};
1
+ import{n as e}from"../random-CGMm8owG.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a,t as o}from"../uuid-Ub6ladEr.mjs";const s=globalThis.crypto.randomUUID.bind(globalThis.crypto),c=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function l(e,r,i=0){if(e.length<16)throw new n(`UUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16`);if(e[6]=e[6]&15|64,e[8]=e[8]&63|128,!r)return e;if(i<0||i+16>r.length)throw new t(`UUID_BUFFER_OUT_OF_BOUNDS`,`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let t=0;t<16;t+=1)r[i+t]=e[t];return r}function u(e,t,n){return!t&&!e?s():d(e,t,n)}function d(t,n,r){let i=l(t?.random??e(),n,r);return n??o(i)}function f(e){return typeof e==`string`&&c.test(e)}const p=Object.assign(u,{toBytes:a,fromBytes:o,isValid:f,NIL:`00000000-0000-0000-0000-000000000000`,MAX:`ffffffff-ffff-ffff-ffff-ffffffffffff`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,p as uuidv4};
2
2
  //# sourceMappingURL=v4.mjs.map
package/build/uuid/v7.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{n as e}from"../random-CWCVvNLb.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a,t as o}from"../uuid-QysI8pWE.mjs";const s=/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,c=new Uint8Array(16),l={msecs:-1/0,seq:0};function u(e,r,i,a,o=0){if(e.length<16)throw new n(`UUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16`);if(o<0||o+16>a.length)throw new t(`UUID_BUFFER_OUT_OF_BOUNDS`,`UUID byte range ${o}:${o+15} is out of buffer bounds`);return r??=Date.now(),i??=e[6]<<23|e[7]<<16|e[8]<<8|e[9],a[o++]=r/1099511627776&255,a[o++]=r/4294967296&255,a[o++]=r/16777216&255,a[o++]=r/65536&255,a[o++]=r/256&255,a[o++]=r&255,a[o++]=112|i>>>28&15,a[o++]=i>>>20&255,a[o++]=128|i>>>14&63,a[o++]=i>>>6&255,a[o++]=i<<2&255|e[10]&3,a[o++]=e[11],a[o++]=e[12],a[o++]=e[13],a[o++]=e[14],a[o++]=e[15],a}function d(t,n,r){let i;if(t)i=u(t.random??e(),t.msecs,t.seq,n??c,n?r:0);else{let t=Date.now(),a=e();t>l.msecs?(l.seq=a[6]<<23|a[7]<<16|a[8]<<8|a[9],l.msecs=t):(l.seq=l.seq+1|0,l.seq<0&&(l.seq=0,l.msecs++)),i=u(a,l.msecs,l.seq,n??c,n?r:0)}return n?i:o(i)}function f(e){let t=a(e),n=0;for(let e=0;e<6;e+=1)n=n*256+t[e];return n}function p(e){return typeof e==`string`&&s.test(e)}const m=Object.assign(d,{toBytes:a,fromBytes:o,timestamp:f,isValid:p,NIL:`00000000-0000-0000-0000-000000000000`,MAX:`ffffffff-ffff-ffff-ffff-ffffffffffff`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,m as uuidv7};
1
+ import{n as e}from"../random-CGMm8owG.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a,t as o}from"../uuid-Ub6ladEr.mjs";const s=/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,c=new Uint8Array(16),l={msecs:-1/0,seq:0};function u(e,r,i,a,o=0){if(e.length<16)throw new n(`UUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16`);if(o<0||o+16>a.length)throw new t(`UUID_BUFFER_OUT_OF_BOUNDS`,`UUID byte range ${o}:${o+15} is out of buffer bounds`);return r??=Date.now(),i??=e[6]<<23|e[7]<<16|e[8]<<8|e[9],a[o++]=r/1099511627776&255,a[o++]=r/4294967296&255,a[o++]=r/16777216&255,a[o++]=r/65536&255,a[o++]=r/256&255,a[o++]=r&255,a[o++]=112|i>>>28&15,a[o++]=i>>>20&255,a[o++]=128|i>>>14&63,a[o++]=i>>>6&255,a[o++]=i<<2&255|e[10]&3,a[o++]=e[11],a[o++]=e[12],a[o++]=e[13],a[o++]=e[14],a[o++]=e[15],a}function d(t,n,r){let i;if(t)i=u(t.random??e(),t.msecs,t.seq,n??c,n?r:0);else{let t=Date.now(),a=e();t>l.msecs?(l.seq=a[6]<<23|a[7]<<16|a[8]<<8|a[9],l.msecs=t):(l.seq=l.seq+1|0,l.seq<0&&(l.seq=0,l.msecs++)),i=u(a,l.msecs,l.seq,n??c,n?r:0)}return n?i:o(i)}function f(e){let t=a(e),n=0;for(let e=0;e<6;e+=1)n=n*256+t[e];return n}function p(e){return typeof e==`string`&&s.test(e)}const m=Object.assign(d,{toBytes:a,fromBytes:o,timestamp:f,isValid:p,NIL:`00000000-0000-0000-0000-000000000000`,MAX:`ffffffff-ffff-ffff-ffff-ffffffffffff`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,m as uuidv7};
2
2
  //# sourceMappingURL=v7.mjs.map
@@ -1,2 +1,2 @@
1
1
  import{ParseError as e}from"./errors.mjs";function t(e){return e>=48&&e<=57?e-48:e>=65&&e<=70?e-65+10:e>=97&&e<=102?e-97+10:-1}const n=[0,0,1,1,2,2,3,3,-1,4,4,5,5,-1,6,6,7,7,-1,8,8,9,9,-1,10,10,11,11,12,12,13,13,14,14,15,15],r=[!0,!1,!0,!1,!0,!1,!0,!1,!1,!0,!1,!0,!1,!1,!0,!1,!0,!1,!1,!0,!1,!0,!1,!1,!0,!1,!0,!1,!0,!1,!0,!1,!0,!1,!0,!1],i=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function a(e){return i[e[0]]+i[e[1]]+i[e[2]]+i[e[3]]+`-`+i[e[4]]+i[e[5]]+`-`+i[e[6]]+i[e[7]]+`-`+i[e[8]]+i[e[9]]+`-`+i[e[10]]+i[e[11]]+i[e[12]]+i[e[13]]+i[e[14]]+i[e[15]]}function o(i){if(i.length!==36)throw new e(`UUID_INVALID_LENGTH`,`UUID string must be 36 characters, got ${i.length}`);if(i[8]!==`-`||i[13]!==`-`||i[18]!==`-`||i[23]!==`-`)throw new e(`UUID_INVALID_SEPARATORS`,`UUID string has invalid separators at positions 8, 13, 18, 23. Received: "${i}"`);let a=new Uint8Array(16);for(let o=0;o<36;o+=1){let s=n[o];if(s===-1)continue;let c=t(i.charCodeAt(o));if(c===-1)throw new e(`UUID_INVALID_HEX_CHAR`,`UUID string contains invalid hex character at position ${o}`);r[o]?a[s]=c<<4:a[s]|=c}return a}export{o as n,a as t};
2
- //# sourceMappingURL=uuid-QysI8pWE.mjs.map
2
+ //# sourceMappingURL=uuid-Ub6ladEr.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuid-QysI8pWE.mjs","names":["UUID_CHAR_TO_BYTE: number[]","UUID_CHAR_IS_HIGH: boolean[]","HEX_TABLE: string[]"],"sources":["../src/uuid/common/hex.ts","../src/uuid/common/uuid.ts"],"sourcesContent":["// ASCII code ranges for hex character validation\nconst ASCII_0 = 48 // '0'\nconst ASCII_9 = 57 // '9'\nconst ASCII_A = 65 // 'A'\nconst ASCII_F = 70 // 'F'\nconst ASCII_a = 97 // 'a'\nconst ASCII_f = 102 // 'f'\n\n/**\n * Convert a hex character ASCII code to its numeric value (0-15).\n * Returns -1 for invalid hex characters.\n */\nexport function hexValue(code: number): number {\n if (code >= ASCII_0 && code <= ASCII_9) {\n return code - ASCII_0\n }\n if (code >= ASCII_A && code <= ASCII_F) {\n return code - ASCII_A + 10\n }\n if (code >= ASCII_a && code <= ASCII_f) {\n return code - ASCII_a + 10\n }\n return -1 // Invalid hex character\n}\n","import { ParseError } from '../../errors'\nimport { hexValue } from './hex'\n\nconst UUID_BYTE_LENGTH = 16\nconst UUID_STRING_LENGTH = 36\n\n// Mapping from UUID string position to byte index.\n// -1 indicates a dash position that should be skipped.\n// This avoids intermediate string allocations during parsing.\nconst UUID_CHAR_TO_BYTE: number[] = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3, // chars 0-7 → bytes 0-3\n -1, // char 8 is '-'\n 4,\n 4,\n 5,\n 5, // chars 9-12 → bytes 4-5\n -1, // char 13 is '-'\n 6,\n 6,\n 7,\n 7, // chars 14-17 → bytes 6-7\n -1, // char 18 is '-'\n 8,\n 8,\n 9,\n 9, // chars 19-22 → bytes 8-9\n -1, // char 23 is '-'\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15, // chars 24-35 → bytes 10-15\n]\n\n// Whether each position is the high nibble (true) or low nibble (false)\nconst UUID_CHAR_IS_HIGH: boolean[] = [\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false, // chars 0-7\n false, // dash (ignored)\n true,\n false,\n true,\n false, // chars 9-12\n false, // dash\n true,\n false,\n true,\n false, // chars 14-17\n false, // dash\n true,\n false,\n true,\n false, // chars 19-22\n false, // dash\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false, // chars 24-35\n]\n\n// Pre-computed lookup table for byte-to-hex conversion (0x00 -> \"00\", 0xff -> \"ff\")\n//\n// Note: this table must remain defined in the same module as `formatUuid`, otherwise the v8 optimizer\n// will cause a performance drop of ~36%.\nconst HEX_TABLE: string[] = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'))\n\nexport function formatUuid(bytes: Uint8Array): string {\n // Direct string concatenation - optimized for V8's string builder.\n // This approach avoids loop overhead and intermediate allocations.\n // See: https://github.com/uuidjs/uuid/pull/434\n return (\n HEX_TABLE[bytes[0]] +\n HEX_TABLE[bytes[1]] +\n HEX_TABLE[bytes[2]] +\n HEX_TABLE[bytes[3]] +\n '-' +\n HEX_TABLE[bytes[4]] +\n HEX_TABLE[bytes[5]] +\n '-' +\n HEX_TABLE[bytes[6]] +\n HEX_TABLE[bytes[7]] +\n '-' +\n HEX_TABLE[bytes[8]] +\n HEX_TABLE[bytes[9]] +\n '-' +\n HEX_TABLE[bytes[10]] +\n HEX_TABLE[bytes[11]] +\n HEX_TABLE[bytes[12]] +\n HEX_TABLE[bytes[13]] +\n HEX_TABLE[bytes[14]] +\n HEX_TABLE[bytes[15]]\n )\n}\n\nexport function parseUuid(value: string): Uint8Array {\n if (value.length !== UUID_STRING_LENGTH) {\n throw new ParseError('UUID_INVALID_LENGTH', `UUID string must be 36 characters, got ${value.length}`)\n }\n\n // Validate separator positions directly (more efficient than full loop)\n if (value[8] !== '-' || value[13] !== '-' || value[18] !== '-' || value[23] !== '-') {\n throw new ParseError(\n 'UUID_INVALID_SEPARATORS',\n `UUID string has invalid separators at positions 8, 13, 18, 23. Received: \"${value}\"`,\n )\n }\n\n // Parse bytes directly from UUID string without intermediate string allocations.\n // This avoids the 9 allocations (5 slices + 4 concatenations) of the naive approach.\n const bytes = new Uint8Array(UUID_BYTE_LENGTH)\n\n for (let i = 0; i < UUID_STRING_LENGTH; i += 1) {\n const byteIdx = UUID_CHAR_TO_BYTE[i]\n if (byteIdx === -1) continue // Skip dash positions\n\n const nibble = hexValue(value.charCodeAt(i))\n if (nibble === -1) {\n throw new ParseError('UUID_INVALID_HEX_CHAR', `UUID string contains invalid hex character at position ${i}`)\n }\n\n if (UUID_CHAR_IS_HIGH[i]) {\n bytes[byteIdx] = nibble << 4\n } else {\n bytes[byteIdx] |= nibble\n }\n }\n\n return bytes\n}\n"],"mappings":"0CAYA,SAAgB,EAAS,EAAsB,CAU7C,OATI,GAAQ,IAAW,GAAQ,GACtB,EAAO,GAEZ,GAAQ,IAAW,GAAQ,GACtB,EAAO,GAAU,GAEtB,GAAQ,IAAW,GAAQ,IACtB,EAAO,GAAU,GAEnB,GCnBT,MAMMA,EAA8B,CAClC,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CAGKC,EAA+B,CACnC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CAMKC,EAAsB,MAAM,KAAK,CAAE,OAAQ,IAAK,EAAG,EAAG,IAAM,EAAE,SAAS,GAAG,CAAC,SAAS,EAAG,IAAI,CAAC,CAElG,SAAgB,EAAW,EAA2B,CAIpD,OACE,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAIpB,SAAgB,EAAU,EAA2B,CACnD,GAAI,EAAM,SAAW,GACnB,MAAM,IAAI,EAAW,sBAAuB,0CAA0C,EAAM,SAAS,CAIvG,GAAI,EAAM,KAAO,KAAO,EAAM,MAAQ,KAAO,EAAM,MAAQ,KAAO,EAAM,MAAQ,IAC9E,MAAM,IAAI,EACR,0BACA,6EAA6E,EAAM,GACpF,CAKH,IAAM,EAAQ,IAAI,WAAW,GAAiB,CAE9C,IAAK,IAAI,EAAI,EAAG,EAAI,GAAoB,GAAK,EAAG,CAC9C,IAAM,EAAU,EAAkB,GAClC,GAAI,IAAY,GAAI,SAEpB,IAAM,EAAS,EAAS,EAAM,WAAW,EAAE,CAAC,CAC5C,GAAI,IAAW,GACb,MAAM,IAAI,EAAW,wBAAyB,0DAA0D,IAAI,CAG1G,EAAkB,GACpB,EAAM,GAAW,GAAU,EAE3B,EAAM,IAAY,EAItB,OAAO"}
1
+ {"version":3,"file":"uuid-Ub6ladEr.mjs","names":["UUID_CHAR_TO_BYTE: number[]","UUID_CHAR_IS_HIGH: boolean[]","HEX_TABLE: string[]"],"sources":["../src/uuid/common/hex.ts","../src/uuid/common/uuid.ts"],"sourcesContent":["// ASCII code ranges for hex character validation\nconst ASCII_0 = 48 // '0'\nconst ASCII_9 = 57 // '9'\nconst ASCII_A = 65 // 'A'\nconst ASCII_F = 70 // 'F'\nconst ASCII_a = 97 // 'a'\nconst ASCII_f = 102 // 'f'\n\n/**\n * Convert a hex character ASCII code to its numeric value (0-15).\n * Returns -1 for invalid hex characters.\n */\nexport function hexValue(code: number): number {\n if (code >= ASCII_0 && code <= ASCII_9) {\n return code - ASCII_0\n }\n if (code >= ASCII_A && code <= ASCII_F) {\n return code - ASCII_A + 10\n }\n if (code >= ASCII_a && code <= ASCII_f) {\n return code - ASCII_a + 10\n }\n return -1 // Invalid hex character\n}\n","import { ParseError } from '../../errors'\nimport { hexValue } from './hex'\n\nconst UUID_BYTE_LENGTH = 16\nconst UUID_STRING_LENGTH = 36\n\n// Mapping from UUID string position to byte index.\n// -1 indicates a dash position that should be skipped.\n// This avoids intermediate string allocations during parsing.\nconst UUID_CHAR_TO_BYTE: number[] = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3, // chars 0-7 → bytes 0-3\n -1, // char 8 is '-'\n 4,\n 4,\n 5,\n 5, // chars 9-12 → bytes 4-5\n -1, // char 13 is '-'\n 6,\n 6,\n 7,\n 7, // chars 14-17 → bytes 6-7\n -1, // char 18 is '-'\n 8,\n 8,\n 9,\n 9, // chars 19-22 → bytes 8-9\n -1, // char 23 is '-'\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15, // chars 24-35 → bytes 10-15\n]\n\n// Whether each position is the high nibble (true) or low nibble (false)\nconst UUID_CHAR_IS_HIGH: boolean[] = [\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false, // chars 0-7\n false, // dash (ignored)\n true,\n false,\n true,\n false, // chars 9-12\n false, // dash\n true,\n false,\n true,\n false, // chars 14-17\n false, // dash\n true,\n false,\n true,\n false, // chars 19-22\n false, // dash\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false, // chars 24-35\n]\n\n// Pre-computed lookup table for byte-to-hex conversion (0x00 -> \"00\", 0xff -> \"ff\")\n//\n// Note: this table must remain defined in the same module as `formatUuid`, otherwise the v8 optimizer\n// will cause a performance drop of ~36%.\nconst HEX_TABLE: string[] = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'))\n\nexport function formatUuid(bytes: Uint8Array): string {\n // Direct string concatenation - optimized for V8's string builder.\n // This approach avoids loop overhead and intermediate allocations.\n // See: https://github.com/uuidjs/uuid/pull/434\n return (\n HEX_TABLE[bytes[0]] +\n HEX_TABLE[bytes[1]] +\n HEX_TABLE[bytes[2]] +\n HEX_TABLE[bytes[3]] +\n '-' +\n HEX_TABLE[bytes[4]] +\n HEX_TABLE[bytes[5]] +\n '-' +\n HEX_TABLE[bytes[6]] +\n HEX_TABLE[bytes[7]] +\n '-' +\n HEX_TABLE[bytes[8]] +\n HEX_TABLE[bytes[9]] +\n '-' +\n HEX_TABLE[bytes[10]] +\n HEX_TABLE[bytes[11]] +\n HEX_TABLE[bytes[12]] +\n HEX_TABLE[bytes[13]] +\n HEX_TABLE[bytes[14]] +\n HEX_TABLE[bytes[15]]\n )\n}\n\nexport function parseUuid(value: string): Uint8Array {\n if (value.length !== UUID_STRING_LENGTH) {\n throw new ParseError('UUID_INVALID_LENGTH', `UUID string must be 36 characters, got ${value.length}`)\n }\n\n // Validate separator positions directly (more efficient than full loop)\n if (value[8] !== '-' || value[13] !== '-' || value[18] !== '-' || value[23] !== '-') {\n throw new ParseError(\n 'UUID_INVALID_SEPARATORS',\n `UUID string has invalid separators at positions 8, 13, 18, 23. Received: \"${value}\"`,\n )\n }\n\n // Parse bytes directly from UUID string without intermediate string allocations.\n // This avoids the 9 allocations (5 slices + 4 concatenations) of the naive approach.\n const bytes = new Uint8Array(UUID_BYTE_LENGTH)\n\n for (let i = 0; i < UUID_STRING_LENGTH; i += 1) {\n const byteIdx = UUID_CHAR_TO_BYTE[i]\n if (byteIdx === -1) continue // Skip dash positions\n\n const nibble = hexValue(value.charCodeAt(i))\n if (nibble === -1) {\n throw new ParseError('UUID_INVALID_HEX_CHAR', `UUID string contains invalid hex character at position ${i}`)\n }\n\n if (UUID_CHAR_IS_HIGH[i]) {\n bytes[byteIdx] = nibble << 4\n } else {\n bytes[byteIdx] |= nibble\n }\n }\n\n return bytes\n}\n"],"mappings":"0CAYA,SAAgB,EAAS,EAAsB,CAU7C,OATI,GAAQ,IAAW,GAAQ,GACtB,EAAO,GAEZ,GAAQ,IAAW,GAAQ,GACtB,EAAO,GAAU,GAEtB,GAAQ,IAAW,GAAQ,IACtB,EAAO,GAAU,GAEnB,GCnBT,MAMMA,EAA8B,CAClC,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CAGKC,EAA+B,CACnC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CAMKC,EAAsB,MAAM,KAAK,CAAE,OAAQ,IAAK,EAAG,EAAG,IAAM,EAAE,SAAS,GAAG,CAAC,SAAS,EAAG,IAAI,CAAC,CAElG,SAAgB,EAAW,EAA2B,CAIpD,OACE,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAIpB,SAAgB,EAAU,EAA2B,CACnD,GAAI,EAAM,SAAW,GACnB,MAAM,IAAI,EAAW,sBAAuB,0CAA0C,EAAM,SAAS,CAIvG,GAAI,EAAM,KAAO,KAAO,EAAM,MAAQ,KAAO,EAAM,MAAQ,KAAO,EAAM,MAAQ,IAC9E,MAAM,IAAI,EACR,0BACA,6EAA6E,EAAM,GACpF,CAKH,IAAM,EAAQ,IAAI,WAAW,GAAiB,CAE9C,IAAK,IAAI,EAAI,EAAG,EAAI,GAAoB,GAAK,EAAG,CAC9C,IAAM,EAAU,EAAkB,GAClC,GAAI,IAAY,GAAI,SAEpB,IAAM,EAAS,EAAS,EAAM,WAAW,EAAE,CAAC,CAC5C,GAAI,IAAW,GACb,MAAM,IAAI,EAAW,wBAAyB,0DAA0D,IAAI,CAG1G,EAAkB,GACpB,EAAM,GAAW,GAAU,EAE3B,EAAM,IAAY,EAItB,OAAO"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "uniku",
4
- "version": "0.0.13",
5
- "description": "Minimal, tree-shakeable UUID utilities for every JavaScript runtime",
4
+ "version": "0.1.0",
5
+ "description": "Minimal, tree-shakeable unique ID generators for every JavaScript runtime",
6
6
  "author": {
7
7
  "name": "Alberto Schiabel",
8
8
  "email": "alberto.schiabel@gmail.com",
@@ -23,6 +23,7 @@
23
23
  "uuidv4",
24
24
  "uuidv7",
25
25
  "ulid",
26
+ "typeid",
26
27
  "cuid2",
27
28
  "nanoid",
28
29
  "ksuid",
@@ -70,6 +71,11 @@
70
71
  "import": "./build/ulid/ulid.mjs",
71
72
  "default": "./build/ulid/ulid.mjs"
72
73
  },
74
+ "./typeid": {
75
+ "types": "./build/typeid/typeid.d.mts",
76
+ "import": "./build/typeid/typeid.mjs",
77
+ "default": "./build/typeid/typeid.mjs"
78
+ },
73
79
  "./cuid2": {
74
80
  "types": "./build/cuid2/cuid2.d.mts",
75
81
  "import": "./build/cuid2/cuid2.mjs",
@@ -100,6 +106,7 @@
100
106
  "@paralleldrive/cuid2": "^3.3.0",
101
107
  "@types/bun": "^1.3.8",
102
108
  "nanoid": "^5.1.6",
109
+ "typeid-js": "1.2.0",
103
110
  "ulid": "3.0.2",
104
111
  "uuid": "13.0.0"
105
112
  },
@@ -10,11 +10,12 @@ const NANOID_REGEX = /^[A-Za-z0-9_-]+$/
10
10
  // Keep Nanoid's private pool for its default hot path. It consumes `size`
11
11
  // bytes directly without the shared helper's UUID/CUID2-oriented branches.
12
12
  const POOL_SIZE_MULTIPLIER = 128
13
+ const MAX_POOL_SIZE = 65_536
13
14
  let pool: Uint8Array | undefined
14
15
  let poolOffset = 0
15
16
 
16
17
  function fillPool(bytes: number): void {
17
- const size = bytes * POOL_SIZE_MULTIPLIER
18
+ const size = Math.min(bytes * POOL_SIZE_MULTIPLIER, MAX_POOL_SIZE)
18
19
  if (!pool || pool.length < size) {
19
20
  pool = new Uint8Array(size)
20
21
  crypto.getRandomValues(pool)
@@ -26,6 +27,15 @@ function fillPool(bytes: number): void {
26
27
  poolOffset += bytes
27
28
  }
28
29
 
30
+ function defaultAlphabetFromPool(size: number): string {
31
+ fillPool(size)
32
+ let id = ''
33
+ for (let i = poolOffset - size; i < poolOffset; i++) {
34
+ id += URL_ALPHABET[pool![i] & 63]
35
+ }
36
+ return id
37
+ }
38
+
29
39
  export type NanoidOptions = {
30
40
  /**
31
41
  * Random bytes for deterministic output (testing).
@@ -104,12 +114,7 @@ function nanoidFn(sizeOrOptions?: number | NanoidOptions): string {
104
114
  // ULTRA-FAST PATH: No arguments = default nanoid
105
115
  // Uses simple pooled random bytes (npm nanoid style) for best performance
106
116
  if (sizeOrOptions === undefined) {
107
- fillPool(DEFAULT_SIZE)
108
- let id = ''
109
- for (let i = poolOffset - DEFAULT_SIZE; i < poolOffset; i++) {
110
- id += URL_ALPHABET[pool![i] & 63]
111
- }
112
- return id
117
+ return defaultAlphabetFromPool(DEFAULT_SIZE)
113
118
  }
114
119
 
115
120
  let size = DEFAULT_SIZE
@@ -131,6 +136,10 @@ function nanoidFn(sizeOrOptions?: number | NanoidOptions): string {
131
136
 
132
137
  if (size === 0) return ''
133
138
 
139
+ if (alphabet === URL_ALPHABET && randomBytes === undefined) {
140
+ return defaultAlphabetFromPool(size)
141
+ }
142
+
134
143
  const alphabetLen = alphabet.length
135
144
 
136
145
  // FAST PATH: Power-of-2 alphabet (includes default 64-char)
@@ -0,0 +1,283 @@
1
+ import { InvalidInputError, ParseError } from '../errors'
2
+ import type { UuidV7Options } from '../uuid/v7'
3
+ import { uuidv7 } from '../uuid/v7'
4
+
5
+ export type TypeidOptions = UuidV7Options
6
+
7
+ export type Typeid = {
8
+ (prefix: string, options?: TypeidOptions): string
9
+ toBytes(id: string): Uint8Array
10
+ fromBytes(prefix: string, bytes: Uint8Array): string
11
+ toUuid(id: string): string
12
+ fromUuid(prefix: string, uuid: string): string
13
+ timestamp(id: string): number
14
+ prefix(id: string): string
15
+ suffix(id: string): string
16
+ isValid(id: unknown): id is string
17
+ }
18
+
19
+ const TYPEID_SUFFIX_LENGTH = 26
20
+ const TYPEID_UUID_BYTE_LENGTH = 16
21
+ const TYPEID_ALPHABET = '0123456789abcdefghjkmnpqrstvwxyz'
22
+
23
+ const BASE32_DECODE: number[] = Array.from({ length: 128 }, () => -1)
24
+ for (let i = 0; i < TYPEID_ALPHABET.length; i += 1) {
25
+ BASE32_DECODE[TYPEID_ALPHABET.charCodeAt(i)] = i
26
+ }
27
+
28
+ type ParsedTypeid = {
29
+ prefix: string
30
+ suffix: string
31
+ bytes: Uint8Array
32
+ }
33
+
34
+ function assertValidPrefix(prefix: string): void {
35
+ if (prefix.length === 0) {
36
+ return
37
+ }
38
+
39
+ if (prefix.length > 63) {
40
+ throw new InvalidInputError('TYPEID_PREFIX_TOO_LONG', 'TypeID prefix must be at most 63 characters')
41
+ }
42
+
43
+ for (let i = 0; i < prefix.length; i += 1) {
44
+ const code = prefix.charCodeAt(i)
45
+ const isLowercaseLetter = code >= 97 && code <= 122
46
+ const isUnderscore = code === 95
47
+
48
+ if (!isLowercaseLetter && !isUnderscore) {
49
+ throw new InvalidInputError(
50
+ 'TYPEID_PREFIX_INVALID_CHARACTER',
51
+ 'TypeID prefix must contain only lowercase ASCII letters and underscores',
52
+ )
53
+ }
54
+
55
+ if ((i === 0 || i === prefix.length - 1) && !isLowercaseLetter) {
56
+ throw new InvalidInputError('TYPEID_PREFIX_INVALID_BOUNDARY', 'TypeID prefix must start and end with a-z')
57
+ }
58
+ }
59
+ }
60
+
61
+ function decodeSuffixValue(suffix: string, index: number): number {
62
+ const code = suffix.charCodeAt(index)
63
+ const value = code < BASE32_DECODE.length ? BASE32_DECODE[code] : -1
64
+
65
+ if (value === -1) {
66
+ throw new ParseError(
67
+ 'TYPEID_SUFFIX_INVALID_CHARACTER',
68
+ `TypeID suffix contains invalid character at position ${index}`,
69
+ )
70
+ }
71
+
72
+ return value
73
+ }
74
+
75
+ function assertValidSuffixShape(suffix: string): void {
76
+ if (suffix.length !== TYPEID_SUFFIX_LENGTH) {
77
+ throw new ParseError('TYPEID_SUFFIX_INVALID_LENGTH', `TypeID suffix must be 26 characters, got ${suffix.length}`)
78
+ }
79
+
80
+ if (suffix[0] > '7') {
81
+ throw new ParseError('TYPEID_SUFFIX_OVERFLOW', 'TypeID suffix must encode a 128-bit value')
82
+ }
83
+ }
84
+
85
+ function encodeBytesToSuffix(bytes: Uint8Array): string {
86
+ if (bytes.length !== TYPEID_UUID_BYTE_LENGTH) {
87
+ throw new InvalidInputError('TYPEID_UUID_BYTES_INVALID_LENGTH', `UUID bytes must be 16 bytes, got ${bytes.length}`)
88
+ }
89
+
90
+ return (
91
+ TYPEID_ALPHABET[(bytes[0] & 0xe0) >> 5] +
92
+ TYPEID_ALPHABET[bytes[0] & 0x1f] +
93
+ TYPEID_ALPHABET[(bytes[1] & 0xf8) >> 3] +
94
+ TYPEID_ALPHABET[((bytes[1] & 0x07) << 2) | ((bytes[2] & 0xc0) >> 6)] +
95
+ TYPEID_ALPHABET[(bytes[2] & 0x3e) >> 1] +
96
+ TYPEID_ALPHABET[((bytes[2] & 0x01) << 4) | ((bytes[3] & 0xf0) >> 4)] +
97
+ TYPEID_ALPHABET[((bytes[3] & 0x0f) << 1) | ((bytes[4] & 0x80) >> 7)] +
98
+ TYPEID_ALPHABET[(bytes[4] & 0x7c) >> 2] +
99
+ TYPEID_ALPHABET[((bytes[4] & 0x03) << 3) | ((bytes[5] & 0xe0) >> 5)] +
100
+ TYPEID_ALPHABET[bytes[5] & 0x1f] +
101
+ TYPEID_ALPHABET[(bytes[6] & 0xf8) >> 3] +
102
+ TYPEID_ALPHABET[((bytes[6] & 0x07) << 2) | ((bytes[7] & 0xc0) >> 6)] +
103
+ TYPEID_ALPHABET[(bytes[7] & 0x3e) >> 1] +
104
+ TYPEID_ALPHABET[((bytes[7] & 0x01) << 4) | ((bytes[8] & 0xf0) >> 4)] +
105
+ TYPEID_ALPHABET[((bytes[8] & 0x0f) << 1) | ((bytes[9] & 0x80) >> 7)] +
106
+ TYPEID_ALPHABET[(bytes[9] & 0x7c) >> 2] +
107
+ TYPEID_ALPHABET[((bytes[9] & 0x03) << 3) | ((bytes[10] & 0xe0) >> 5)] +
108
+ TYPEID_ALPHABET[bytes[10] & 0x1f] +
109
+ TYPEID_ALPHABET[(bytes[11] & 0xf8) >> 3] +
110
+ TYPEID_ALPHABET[((bytes[11] & 0x07) << 2) | ((bytes[12] & 0xc0) >> 6)] +
111
+ TYPEID_ALPHABET[(bytes[12] & 0x3e) >> 1] +
112
+ TYPEID_ALPHABET[((bytes[12] & 0x01) << 4) | ((bytes[13] & 0xf0) >> 4)] +
113
+ TYPEID_ALPHABET[((bytes[13] & 0x0f) << 1) | ((bytes[14] & 0x80) >> 7)] +
114
+ TYPEID_ALPHABET[(bytes[14] & 0x7c) >> 2] +
115
+ TYPEID_ALPHABET[((bytes[14] & 0x03) << 3) | ((bytes[15] & 0xe0) >> 5)] +
116
+ TYPEID_ALPHABET[bytes[15] & 0x1f]
117
+ )
118
+ }
119
+
120
+ function decodeSuffixToBytes(suffix: string): Uint8Array {
121
+ assertValidSuffixShape(suffix)
122
+
123
+ const values = new Array<number>(TYPEID_SUFFIX_LENGTH)
124
+ for (let i = 0; i < TYPEID_SUFFIX_LENGTH; i += 1) {
125
+ values[i] = decodeSuffixValue(suffix, i)
126
+ }
127
+
128
+ const bytes = new Uint8Array(TYPEID_UUID_BYTE_LENGTH)
129
+ bytes[0] = (values[0] << 5) | values[1]
130
+ bytes[1] = (values[2] << 3) | (values[3] >> 2)
131
+ bytes[2] = ((values[3] & 0x03) << 6) | (values[4] << 1) | (values[5] >> 4)
132
+ bytes[3] = ((values[5] & 0x0f) << 4) | (values[6] >> 1)
133
+ bytes[4] = ((values[6] & 0x01) << 7) | (values[7] << 2) | (values[8] >> 3)
134
+ bytes[5] = ((values[8] & 0x07) << 5) | values[9]
135
+ bytes[6] = (values[10] << 3) | (values[11] >> 2)
136
+ bytes[7] = ((values[11] & 0x03) << 6) | (values[12] << 1) | (values[13] >> 4)
137
+ bytes[8] = ((values[13] & 0x0f) << 4) | (values[14] >> 1)
138
+ bytes[9] = ((values[14] & 0x01) << 7) | (values[15] << 2) | (values[16] >> 3)
139
+ bytes[10] = ((values[16] & 0x07) << 5) | values[17]
140
+ bytes[11] = (values[18] << 3) | (values[19] >> 2)
141
+ bytes[12] = ((values[19] & 0x03) << 6) | (values[20] << 1) | (values[21] >> 4)
142
+ bytes[13] = ((values[21] & 0x0f) << 4) | (values[22] >> 1)
143
+ bytes[14] = ((values[22] & 0x01) << 7) | (values[23] << 2) | (values[24] >> 3)
144
+ bytes[15] = ((values[24] & 0x07) << 5) | values[25]
145
+
146
+ return bytes
147
+ }
148
+
149
+ function assertUuidV7Bytes(bytes: Uint8Array): void {
150
+ if (bytes.length !== TYPEID_UUID_BYTE_LENGTH) {
151
+ throw new InvalidInputError('TYPEID_UUID_BYTES_INVALID_LENGTH', `UUID bytes must be 16 bytes, got ${bytes.length}`)
152
+ }
153
+
154
+ if (bytes[6] >> 4 !== 7 || (bytes[8] & 0xc0) !== 0x80) {
155
+ throw new InvalidInputError('TYPEID_UUID_NOT_V7', 'TypeID UUID bytes must encode a UUID v7 value')
156
+ }
157
+ }
158
+
159
+ function uuidV7BytesFromSuffix(suffix: string): Uint8Array {
160
+ const bytes = decodeSuffixToBytes(suffix)
161
+ assertUuidV7Bytes(bytes)
162
+ return bytes
163
+ }
164
+
165
+ function uuidV7BytesFromUuid(uuid: string): Uint8Array {
166
+ if (!uuidv7.isValid(uuid)) {
167
+ throw new InvalidInputError('TYPEID_UUID_NOT_V7', 'TypeID can only wrap UUID v7 values')
168
+ }
169
+
170
+ return uuidv7.toBytes(uuid)
171
+ }
172
+
173
+ function parseTypeid(id: string): ParsedTypeid {
174
+ const separatorIndex = id.lastIndexOf('_')
175
+
176
+ if (separatorIndex === 0) {
177
+ throw new ParseError('TYPEID_INVALID_FORMAT', 'TypeID must not start with "_"')
178
+ }
179
+
180
+ const prefix = separatorIndex === -1 ? '' : id.slice(0, separatorIndex)
181
+ const suffix = separatorIndex === -1 ? id : id.slice(separatorIndex + 1)
182
+
183
+ assertValidPrefix(prefix)
184
+ const bytes = uuidV7BytesFromSuffix(suffix)
185
+
186
+ return { prefix, suffix, bytes }
187
+ }
188
+
189
+ function joinPrefixAndSuffix(prefix: string, suffix: string): string {
190
+ return prefix === '' ? suffix : `${prefix}_${suffix}`
191
+ }
192
+
193
+ function formatTypeidFromUuidV7Bytes(prefix: string, bytes: Uint8Array): string {
194
+ assertValidPrefix(prefix)
195
+ assertUuidV7Bytes(bytes)
196
+ return joinPrefixAndSuffix(prefix, encodeBytesToSuffix(bytes))
197
+ }
198
+
199
+ function timestampFromUuidV7Bytes(bytes: Uint8Array): number {
200
+ let msecs = 0
201
+ for (let i = 0; i < 6; i += 1) {
202
+ msecs = msecs * 256 + bytes[i]
203
+ }
204
+ return msecs
205
+ }
206
+
207
+ function typeidFn(prefix: string, options?: TypeidOptions): string {
208
+ const bytes = uuidv7(options, new Uint8Array(TYPEID_UUID_BYTE_LENGTH))
209
+ return formatTypeidFromUuidV7Bytes(prefix, bytes)
210
+ }
211
+
212
+ function typeidToBytes(id: string): Uint8Array {
213
+ return parseTypeid(id).bytes
214
+ }
215
+
216
+ function typeidFromBytes(prefix: string, bytes: Uint8Array): string {
217
+ return formatTypeidFromUuidV7Bytes(prefix, bytes)
218
+ }
219
+
220
+ function typeidToUuid(id: string): string {
221
+ return uuidv7.fromBytes(typeidToBytes(id))
222
+ }
223
+
224
+ function typeidFromUuid(prefix: string, uuid: string): string {
225
+ return formatTypeidFromUuidV7Bytes(prefix, uuidV7BytesFromUuid(uuid))
226
+ }
227
+
228
+ function timestamp(id: string): number {
229
+ return timestampFromUuidV7Bytes(parseTypeid(id).bytes)
230
+ }
231
+
232
+ function prefix(id: string): string {
233
+ return parseTypeid(id).prefix
234
+ }
235
+
236
+ function suffix(id: string): string {
237
+ return parseTypeid(id).suffix
238
+ }
239
+
240
+ function isValid(id: unknown): id is string {
241
+ if (typeof id !== 'string') {
242
+ return false
243
+ }
244
+
245
+ try {
246
+ parseTypeid(id)
247
+ } catch {
248
+ return false
249
+ }
250
+
251
+ return true
252
+ }
253
+
254
+ /**
255
+ * Generate a TypeID string backed by UUID v7.
256
+ *
257
+ * TypeID combines a lowercase snake_case type prefix with a 26-character
258
+ * modified base32 encoding of a UUID v7, producing sortable domain identifiers
259
+ * such as `user_01h2xcejqtf2nbrexx3vqjhp41`.
260
+ *
261
+ * @example
262
+ * ```ts
263
+ * import { typeid } from 'uniku/typeid'
264
+ *
265
+ * const id = typeid('user')
266
+ * // => "user_01h2xcejqtf2nbrexx3vqjhp41"
267
+ *
268
+ * const uuid = typeid.toUuid(id)
269
+ * const restored = typeid.fromUuid('user', uuid)
270
+ * ```
271
+ */
272
+ export const typeid: Typeid = Object.assign(typeidFn, {
273
+ toBytes: typeidToBytes,
274
+ fromBytes: typeidFromBytes,
275
+ toUuid: typeidToUuid,
276
+ fromUuid: typeidFromUuid,
277
+ timestamp,
278
+ prefix,
279
+ suffix,
280
+ isValid,
281
+ })
282
+
283
+ export { BufferError, InvalidInputError, ParseError, UniqueIdError } from '../errors'