@kattebak/typespec-drizzle-orm-generator 5.0.0 → 5.0.1
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 +4 -2
- package/dist/assembler.js +0 -3
- package/dist/assembler.js.map +1 -1
- package/dist/generators/dialect.d.ts +0 -1
- package/dist/generators/dialect.d.ts.map +1 -1
- package/dist/generators/dialect.js +4 -28
- package/dist/generators/dialect.js.map +1 -1
- package/dist/generators/types-generator.d.ts.map +1 -1
- package/dist/generators/types-generator.js +4 -8
- package/dist/generators/types-generator.js.map +1 -1
- package/dist/generators/uuid-codec.d.ts +4 -0
- package/dist/generators/uuid-codec.d.ts.map +1 -0
- package/dist/generators/uuid-codec.js +128 -0
- package/dist/generators/uuid-codec.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -399,7 +399,9 @@ options:
|
|
|
399
399
|
|
|
400
400
|
`canonical` is the default when the decorator names no encoding. PostgreSQL stores its native `uuid` type as 16 bytes, so `canonical` and `raw` are the same column there and only the SQLite side has a compact form to choose. SQLite has no native UUID type; `raw` is where a large table wins, at 16 bytes against 36.
|
|
401
401
|
|
|
402
|
-
Each encoding is backed by its own generated custom type — `canonicalUuid`, `base36Uuid`, `rawUuid` — exported from `types.ts` alongside `generateBase36Id()`, which mints a fresh base36 id for any of them.
|
|
402
|
+
Each encoding is backed by its own generated custom type — `canonicalUuid`, `base36Uuid`, `rawUuid` — exported from `types.ts` alongside `generateBase36Id()`, which mints a fresh base36 id for any of them. The conversion is emitted into the package, so a generated package has no runtime dependencies.
|
|
403
|
+
|
|
404
|
+
`base36` stores the id verbatim and converts nothing. `canonical` and `raw` convert every value in both directions, at about a microsecond each: a query passing 25,000 ids spends roughly 25 ms encoding them and 25 ms decoding the result.
|
|
403
405
|
|
|
404
406
|
```typespec
|
|
405
407
|
@pk @uuid("raw", true)
|
|
@@ -435,7 +437,7 @@ See [src/fixtures/bookstore.tsp](src/fixtures/bookstore.tsp) for a complete 9-en
|
|
|
435
437
|
|
|
436
438
|
```bash
|
|
437
439
|
npm install
|
|
438
|
-
npm test # type-check +
|
|
440
|
+
npm test # type-check + 461 tests
|
|
439
441
|
npm run lint:fix # auto-fix with Biome
|
|
440
442
|
```
|
|
441
443
|
|
package/dist/assembler.js
CHANGED
package/dist/assembler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembler.js","sourceRoot":"","sources":["../src/assembler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAW5D;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkB,EAClB,KAAgB,EAChB,MAAqB,EACA;IACrB,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;IAE9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;QACpB,CAAC,cAAc,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,eAAe,EAAE,gBAAgB,EAAE,CAAC;QACrC,CAAC,UAAU,EAAE,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC,WAAW,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9E,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,KAAK,CAAC;AAAA,CACd;AAED,SAAS,mBAAmB,CAAC,MAAqB,EAAU;IAC1D,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,MAAM,CAAC,WAAW;QACxB,OAAO,EAAE,MAAM,CAAC,cAAc;QAC9B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE;YACP,GAAG,EAAE;gBACH,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,iBAAiB;gBACzB,OAAO,EAAE,iBAAiB;aAC3B;SACF;QACD,OAAO,EAAE;YACP,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,KAAK;SACf;QACD,
|
|
1
|
+
{"version":3,"file":"assembler.js","sourceRoot":"","sources":["../src/assembler.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,6 @@ export interface DialectConfig {
|
|
|
23
23
|
tableFn: string;
|
|
24
24
|
enumFn: string | null;
|
|
25
25
|
uuidTypes: readonly UuidTypeDef[];
|
|
26
|
-
uuidHelpers: readonly string[];
|
|
27
26
|
nullableWrappers: readonly NullableWrapperDef[];
|
|
28
27
|
mapFieldType(field: FieldDef): string;
|
|
29
28
|
mapNullableFieldType(field: FieldDef): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../../src/generators/dialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC;IAClC,
|
|
1
|
+
{"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../../src/generators/dialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC;IAClC,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACtC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9C,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5D,mBAAmB,IAAI,WAAW,CAAC;CACpC;AAQD,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAE3D;AAOD,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAO9D"}
|
|
@@ -8,31 +8,9 @@ const uuidTypeNames = {
|
|
|
8
8
|
export function uuidTypeName(encoding) {
|
|
9
9
|
return uuidTypeNames[encoding];
|
|
10
10
|
}
|
|
11
|
-
const uuidToBytesHelper = [
|
|
12
|
-
"function uuidToBytes(uuid: string): Uint8Array {",
|
|
13
|
-
' const hex = uuid.replace(/-/g, "");',
|
|
14
|
-
" const bytes = new Uint8Array(16);",
|
|
15
|
-
" for (let i = 0; i < 16; i += 1) {",
|
|
16
|
-
" bytes[i] = Number.parseInt(hex.slice(i * 2, i * 2 + 2), 16);",
|
|
17
|
-
" }",
|
|
18
|
-
" return bytes;",
|
|
19
|
-
"}",
|
|
20
|
-
].join("\n");
|
|
21
|
-
const bytesToUuidHelper = [
|
|
22
|
-
"function bytesToUuid(bytes: Uint8Array): string {",
|
|
23
|
-
' const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");',
|
|
24
|
-
" return [",
|
|
25
|
-
" hex.slice(0, 8),",
|
|
26
|
-
" hex.slice(8, 12),",
|
|
27
|
-
" hex.slice(12, 16),",
|
|
28
|
-
" hex.slice(16, 20),",
|
|
29
|
-
" hex.slice(20, 32),",
|
|
30
|
-
' ].join("-");',
|
|
31
|
-
"}",
|
|
32
|
-
].join("\n");
|
|
33
11
|
const canonicalDrivers = {
|
|
34
|
-
toDriver: "(value: string): string =>
|
|
35
|
-
fromDriver: "(value: string): string =>
|
|
12
|
+
toDriver: "(value: string): string => bytesToUuid(base36ToBytes(value))",
|
|
13
|
+
fromDriver: "(value: string): string => bytesToBase36(uuidToBytes(value))",
|
|
36
14
|
};
|
|
37
15
|
export function resolveDialect(dialect) {
|
|
38
16
|
switch (dialect) {
|
|
@@ -99,7 +77,6 @@ function pgDialect() {
|
|
|
99
77
|
tableFn: "pgTable",
|
|
100
78
|
enumFn: "pgEnum",
|
|
101
79
|
uuidTypes: pgUuidTypes,
|
|
102
|
-
uuidHelpers: [],
|
|
103
80
|
nullableWrappers: pgNullableWrappers,
|
|
104
81
|
mapTimestampDefault: () => ({ method: "defaultNow" }),
|
|
105
82
|
nullableWrapperName(kind) {
|
|
@@ -187,8 +164,8 @@ const sqliteUuidTypes = [
|
|
|
187
164
|
dataType: "blob",
|
|
188
165
|
driverType: "Uint8Array",
|
|
189
166
|
doc: "UUID column stored as a 16-byte blob, reads/writes as base36",
|
|
190
|
-
toDriver: "(value: string): Uint8Array =>
|
|
191
|
-
fromDriver: "(value: Uint8Array): string =>
|
|
167
|
+
toDriver: "(value: string): Uint8Array => base36ToBytes(value)",
|
|
168
|
+
fromDriver: "(value: Uint8Array): string => bytesToBase36(value)",
|
|
192
169
|
},
|
|
193
170
|
];
|
|
194
171
|
function sqliteDialect() {
|
|
@@ -198,7 +175,6 @@ function sqliteDialect() {
|
|
|
198
175
|
tableFn: "sqliteTable",
|
|
199
176
|
enumFn: null,
|
|
200
177
|
uuidTypes: sqliteUuidTypes,
|
|
201
|
-
uuidHelpers: [uuidToBytesHelper, bytesToUuidHelper],
|
|
202
178
|
nullableWrappers: sqliteNullableWrappers,
|
|
203
179
|
mapTimestampDefault: () => ({ method: "$defaultFn", args: ["() => new Date()"] }),
|
|
204
180
|
nullableWrapperName(kind) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialect.js","sourceRoot":"","sources":["../../src/generators/dialect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"dialect.js","sourceRoot":"","sources":["../../src/generators/dialect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-generator.d.ts","sourceRoot":"","sources":["../../src/generators/types-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAmC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"types-generator.d.ts","sourceRoot":"","sources":["../../src/generators/types-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAmC,MAAM,cAAc,CAAC;AAGnF,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,UAAQ,GAAG,MAAM,CAgChF"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import { exportConst,
|
|
1
|
+
import { exportConst, importDecl, quoted } from "../codegen/index.js";
|
|
2
|
+
import { generateBase36IdSource, uuidCodecHelpers } from "./uuid-codec.js";
|
|
2
3
|
export function generateTypes(dialect, schemaOnly = false) {
|
|
3
4
|
const sections = [];
|
|
4
5
|
sections.push(importDecl(["customType"], dialect.coreModule));
|
|
5
|
-
sections.push(`import short from ${quoted("short-uuid")};`);
|
|
6
6
|
if (!schemaOnly)
|
|
7
7
|
sections.push(...drizzleClientImports(dialect));
|
|
8
8
|
sections.push("");
|
|
9
|
-
|
|
10
|
-
sections.push("");
|
|
11
|
-
for (const helper of dialect.uuidHelpers) {
|
|
9
|
+
for (const helper of uuidCodecHelpers) {
|
|
12
10
|
sections.push(helper);
|
|
13
11
|
sections.push("");
|
|
14
12
|
}
|
|
@@ -16,9 +14,7 @@ export function generateTypes(dialect, schemaOnly = false) {
|
|
|
16
14
|
sections.push(generateUuidType(uuidType));
|
|
17
15
|
sections.push("");
|
|
18
16
|
}
|
|
19
|
-
sections.push(
|
|
20
|
-
sections.push(" return translator.new();");
|
|
21
|
-
sections.push("}");
|
|
17
|
+
sections.push(generateBase36IdSource);
|
|
22
18
|
sections.push("");
|
|
23
19
|
for (const wrapper of dialect.nullableWrappers) {
|
|
24
20
|
sections.push(generateNullableWrapper(wrapper));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-generator.js","sourceRoot":"","sources":["../../src/generators/types-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"types-generator.js","sourceRoot":"","sources":["../../src/generators/types-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Source of the base36/byte conversion the generated custom types are built on */
|
|
2
|
+
export declare const uuidCodecHelpers: readonly string[];
|
|
3
|
+
export declare const generateBase36IdSource = "export function generateBase36Id(): string {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n return bytesToBase36(bytes);\n}";
|
|
4
|
+
//# sourceMappingURL=uuid-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-codec.d.ts","sourceRoot":"","sources":["../../src/generators/uuid-codec.ts"],"names":[],"mappings":"AAqHA,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAO7C,CAAC;AAEF,eAAO,MAAM,sBAAsB,2OAMjC,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
const lookupTables = `const base36Digits = "0123456789abcdefghijklmnopqrstuvwxyz";
|
|
2
|
+
const hexDigits = "0123456789abcdef";
|
|
3
|
+
|
|
4
|
+
const base36Values = ((): Int8Array => {
|
|
5
|
+
const table = new Int8Array(128).fill(-1);
|
|
6
|
+
for (let i = 0; i < base36Digits.length; i += 1) table[base36Digits.charCodeAt(i)] = i;
|
|
7
|
+
return table;
|
|
8
|
+
})();
|
|
9
|
+
|
|
10
|
+
const hexValues = ((): Int8Array => {
|
|
11
|
+
const table = new Int8Array(128).fill(-1);
|
|
12
|
+
for (let i = 0; i < hexDigits.length; i += 1) {
|
|
13
|
+
table[hexDigits.charCodeAt(i)] = i;
|
|
14
|
+
table[hexDigits.toUpperCase().charCodeAt(i)] = i;
|
|
15
|
+
}
|
|
16
|
+
return table;
|
|
17
|
+
})();
|
|
18
|
+
|
|
19
|
+
const hexOctets = ((): string[] => {
|
|
20
|
+
const table: string[] = [];
|
|
21
|
+
for (let i = 0; i < 256; i += 1) table.push(i.toString(16).padStart(2, "0"));
|
|
22
|
+
return table;
|
|
23
|
+
})();
|
|
24
|
+
|
|
25
|
+
const base36Scales = [1, 36, 1296, 46656, 1679616, 60466176];`;
|
|
26
|
+
const base36Readers = `function readBase36(id: string, start: number, count: number): number {
|
|
27
|
+
let value = 0;
|
|
28
|
+
for (let i = start; i < start + count; i += 1) {
|
|
29
|
+
const code = id.charCodeAt(i);
|
|
30
|
+
const digit = code < 128 ? base36Values[code] : -1;
|
|
31
|
+
if (digit < 0) throw new Error(\`Not a base36 uuid: \${id}\`);
|
|
32
|
+
value = value * 36 + digit;
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function scaleAndAdd(limbs: Uint32Array, scale: number, addend: number): number {
|
|
38
|
+
let carry = addend;
|
|
39
|
+
for (let i = 7; i >= 0; i -= 1) {
|
|
40
|
+
const product = limbs[i] * scale + carry;
|
|
41
|
+
const low = product % 65536;
|
|
42
|
+
limbs[i] = low;
|
|
43
|
+
carry = (product - low) / 65536;
|
|
44
|
+
}
|
|
45
|
+
return carry;
|
|
46
|
+
}`;
|
|
47
|
+
const base36ToBytes = `function base36ToBytes(id: string): Uint8Array {
|
|
48
|
+
if (id.length === 0 || id.length > 25) throw new Error(\`Not a base36 uuid: \${id}\`);
|
|
49
|
+
const limbs = new Uint32Array(8);
|
|
50
|
+
const head = id.length % 5;
|
|
51
|
+
if (head > 0 && scaleAndAdd(limbs, base36Scales[head], readBase36(id, 0, head)) !== 0) {
|
|
52
|
+
throw new Error(\`base36 uuid does not fit in 128 bits: \${id}\`);
|
|
53
|
+
}
|
|
54
|
+
for (let cursor = head; cursor < id.length; cursor += 5) {
|
|
55
|
+
if (scaleAndAdd(limbs, 60466176, readBase36(id, cursor, 5)) !== 0) {
|
|
56
|
+
throw new Error(\`base36 uuid does not fit in 128 bits: \${id}\`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const bytes = new Uint8Array(16);
|
|
60
|
+
for (let i = 0; i < 8; i += 1) {
|
|
61
|
+
bytes[i * 2] = limbs[i] >>> 8;
|
|
62
|
+
bytes[i * 2 + 1] = limbs[i] & 0xff;
|
|
63
|
+
}
|
|
64
|
+
return bytes;
|
|
65
|
+
}`;
|
|
66
|
+
const bytesToBase36 = `function bytesToBase36(bytes: Uint8Array): string {
|
|
67
|
+
if (bytes.length !== 16) throw new Error(\`Not a 16-byte uuid: \${bytes.length} bytes\`);
|
|
68
|
+
const limbs = new Uint32Array(8);
|
|
69
|
+
for (let i = 0; i < 8; i += 1) limbs[i] = (bytes[i * 2] << 8) | bytes[i * 2 + 1];
|
|
70
|
+
let id = "";
|
|
71
|
+
for (let chunk = 0; chunk < 5; chunk += 1) {
|
|
72
|
+
let remainder = 0;
|
|
73
|
+
for (let i = 0; i < 8; i += 1) {
|
|
74
|
+
const current = remainder * 65536 + limbs[i];
|
|
75
|
+
const quotient = Math.floor(current / 60466176);
|
|
76
|
+
limbs[i] = quotient;
|
|
77
|
+
remainder = current - quotient * 60466176;
|
|
78
|
+
}
|
|
79
|
+
let piece = "";
|
|
80
|
+
for (let i = 0; i < 5; i += 1) {
|
|
81
|
+
const digit = remainder % 36;
|
|
82
|
+
piece = base36Digits[digit] + piece;
|
|
83
|
+
remainder = (remainder - digit) / 36;
|
|
84
|
+
}
|
|
85
|
+
id = piece + id;
|
|
86
|
+
}
|
|
87
|
+
return id;
|
|
88
|
+
}`;
|
|
89
|
+
const uuidToBytes = `function uuidToBytes(uuid: string): Uint8Array {
|
|
90
|
+
const bytes = new Uint8Array(16);
|
|
91
|
+
let cursor = 0;
|
|
92
|
+
for (let i = 0; i < 16; i += 1) {
|
|
93
|
+
if (uuid.charCodeAt(cursor) === 45) cursor += 1;
|
|
94
|
+
const high = readHex(uuid, cursor);
|
|
95
|
+
const low = readHex(uuid, cursor + 1);
|
|
96
|
+
bytes[i] = (high << 4) | low;
|
|
97
|
+
cursor += 2;
|
|
98
|
+
}
|
|
99
|
+
if (cursor !== uuid.length) throw new Error(\`Not a uuid: \${uuid}\`);
|
|
100
|
+
return bytes;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function readHex(uuid: string, index: number): number {
|
|
104
|
+
const code = uuid.charCodeAt(index);
|
|
105
|
+
const value = code < 128 ? hexValues[code] : -1;
|
|
106
|
+
if (value < 0) throw new Error(\`Not a uuid: \${uuid}\`);
|
|
107
|
+
return value;
|
|
108
|
+
}`;
|
|
109
|
+
const bytesToUuid = `function bytesToUuid(bytes: Uint8Array): string {
|
|
110
|
+
return \`\${hexOctets[bytes[0]]}\${hexOctets[bytes[1]]}\${hexOctets[bytes[2]]}\${hexOctets[bytes[3]]}-\${hexOctets[bytes[4]]}\${hexOctets[bytes[5]]}-\${hexOctets[bytes[6]]}\${hexOctets[bytes[7]]}-\${hexOctets[bytes[8]]}\${hexOctets[bytes[9]]}-\${hexOctets[bytes[10]]}\${hexOctets[bytes[11]]}\${hexOctets[bytes[12]]}\${hexOctets[bytes[13]]}\${hexOctets[bytes[14]]}\${hexOctets[bytes[15]]}\`;
|
|
111
|
+
}`;
|
|
112
|
+
/** Source of the base36/byte conversion the generated custom types are built on */
|
|
113
|
+
export const uuidCodecHelpers = [
|
|
114
|
+
lookupTables,
|
|
115
|
+
base36Readers,
|
|
116
|
+
base36ToBytes,
|
|
117
|
+
bytesToBase36,
|
|
118
|
+
uuidToBytes,
|
|
119
|
+
bytesToUuid,
|
|
120
|
+
];
|
|
121
|
+
export const generateBase36IdSource = `export function generateBase36Id(): string {
|
|
122
|
+
const bytes = new Uint8Array(16);
|
|
123
|
+
crypto.getRandomValues(bytes);
|
|
124
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
125
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
126
|
+
return bytesToBase36(bytes);
|
|
127
|
+
}`;
|
|
128
|
+
//# sourceMappingURL=uuid-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-codec.js","sourceRoot":"","sources":["../../src/generators/uuid-codec.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;8DAwByC,CAAC;AAE/D,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;EAoBpB,CAAC;AAEH,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;EAkBpB,CAAC;AAEH,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;EAsBpB,CAAC;AAEH,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;EAmBlB,CAAC;AAEH,MAAM,WAAW,GAAG;;EAElB,CAAC;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,YAAY;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,WAAW;IACX,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;EAMpC,CAAC"}
|