@kattebak/typespec-drizzle-orm-generator 3.8.3 → 4.0.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 +47 -2
- package/dist/codegen/stringify.js +1 -1
- package/dist/codegen/stringify.js.map +1 -1
- package/dist/generators/column-mapper.d.ts.map +1 -1
- package/dist/generators/column-mapper.js +6 -0
- package/dist/generators/column-mapper.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/ir/builder.d.ts +2 -9
- package/dist/ir/builder.d.ts.map +1 -1
- package/dist/ir/builder.js +9 -48
- package/dist/ir/builder.js.map +1 -1
- package/dist/ir/default-value.d.ts +13 -0
- package/dist/ir/default-value.d.ts.map +1 -0
- package/dist/ir/default-value.js +63 -0
- package/dist/ir/default-value.js.map +1 -0
- package/dist/ir/index-def.d.ts +31 -0
- package/dist/ir/index-def.d.ts.map +1 -0
- package/dist/ir/index-def.js +69 -0
- package/dist/ir/index-def.js.map +1 -0
- package/dist/ir/remit-builder.d.ts.map +1 -1
- package/dist/ir/remit-builder.js +7 -22
- package/dist/ir/remit-builder.js.map +1 -1
- package/dist/ir/types.d.ts +13 -1
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/lib.d.ts +6 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +17 -4
- package/dist/lib.js.map +1 -1
- package/package.json +5 -1
- package/tsp/main.tsp +20 -0
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ npm install @kattebak/typespec-drizzle-orm-generator
|
|
|
15
15
|
```typespec
|
|
16
16
|
import "@kattebak/typespec-drizzle-orm-generator";
|
|
17
17
|
|
|
18
|
-
using
|
|
18
|
+
using Drizzle;
|
|
19
19
|
|
|
20
20
|
@entity("Author", "bookstore")
|
|
21
21
|
@primaryKey("authors")
|
|
@@ -202,6 +202,24 @@ export const describeAuthor = (
|
|
|
202
202
|
|
|
203
203
|
## Decorators
|
|
204
204
|
|
|
205
|
+
Decorators live in the `Drizzle` namespace. Reference them qualified
|
|
206
|
+
(`@Drizzle.table`) or bring them into scope for a file with `using Drizzle;`.
|
|
207
|
+
|
|
208
|
+
`@minValue`, `@maxValue`, `@createdAt` and `@updatedAt` are names the TypeSpec
|
|
209
|
+
standard library and other emitters also declare. In a project that loads one of
|
|
210
|
+
those alongside this library, `using Drizzle;` leaves those four references
|
|
211
|
+
ambiguous — qualify them:
|
|
212
|
+
|
|
213
|
+
```typespec
|
|
214
|
+
using Drizzle;
|
|
215
|
+
|
|
216
|
+
model Order {
|
|
217
|
+
@Drizzle.minValue(1)
|
|
218
|
+
@Drizzle.maxValue(5)
|
|
219
|
+
rating?: int32;
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
205
223
|
### Defining entities
|
|
206
224
|
|
|
207
225
|
```typespec
|
|
@@ -320,10 +338,37 @@ Set `frontend` in your `tspconfig.yaml` to choose which TypeSpec vocabulary the
|
|
|
320
338
|
The `remit` front-end maps an ElectroDB model to a table:
|
|
321
339
|
|
|
322
340
|
- **Primary key** is the entity's own identity field, `<entity>Id`, as a single column. The ElectroDB primary index is a DynamoDB access pattern, not the entity's identity, so it becomes an ordinary secondary index. An entity with no `<entity>Id` field keeps the ElectroDB primary composite as its key.
|
|
323
|
-
- Every `@index` becomes a named secondary index.
|
|
341
|
+
- Every `@index` becomes a named secondary index, and every `@indexDef` adds an index that exists in SQL only (see below).
|
|
324
342
|
- **Enums** are text columns narrowed by a `$type` union, not pgEnums — a store that mirrors a DynamoDB port keeps enum values as strings and avoids an `ALTER TYPE` per new value.
|
|
325
343
|
- A `collection` shared by two or more entities becomes an `ON DELETE CASCADE` foreign key from each member to the entity that owns the shared partition key (unless `foreign-keys: false`).
|
|
326
344
|
|
|
345
|
+
### SQL-only indexes
|
|
346
|
+
|
|
347
|
+
`@indexDef` declares an index this generator emits and no one else reads. It is
|
|
348
|
+
the tool for an index the SQL schema needs but the DynamoDB table must not get:
|
|
349
|
+
`@index` is the ElectroDB vocabulary, so an `@index` added for a SQL predicate
|
|
350
|
+
also mints a DynamoDB secondary index — write amplification on every write, and
|
|
351
|
+
against a hard limit of five local secondary indexes per table.
|
|
352
|
+
|
|
353
|
+
```typespec
|
|
354
|
+
@entity("threadMessage", "remit")
|
|
355
|
+
@index("ThreadMessage", { pk: [ThreadMessage.accountConfigId], sk: [ThreadMessage.threadMessageId] })
|
|
356
|
+
@Drizzle.indexDef(
|
|
357
|
+
"tm_by_mailbox_category_date",
|
|
358
|
+
[
|
|
359
|
+
ThreadMessage.accountConfigId,
|
|
360
|
+
ThreadMessage.mailboxId,
|
|
361
|
+
ThreadMessage.category,
|
|
362
|
+
ThreadMessage.sentDate
|
|
363
|
+
]
|
|
364
|
+
)
|
|
365
|
+
model ThreadMessage { ... }
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
Both front-ends emit it, and the name is used verbatim, so it is the name your
|
|
369
|
+
migration history is keyed on. An `@indexDef` on a model the selected front-end
|
|
370
|
+
generates no table for is a compile error, not a dropped index.
|
|
371
|
+
|
|
327
372
|
```yaml
|
|
328
373
|
options:
|
|
329
374
|
"@kattebak/typespec-drizzle-orm-generator":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringify.js","sourceRoot":"","sources":["../../src/codegen/stringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,OAAO,OAAO;IACT,IAAI,CAAS;IACtB,YAAY,IAAY,EAAE;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAAA,CAClB;CACF;AAED,SAAS,kBAAkB,CAAC,IAAa,EAA4B;IACnE,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACZ,IAA0B,CAAC,IAAI,KAAK,kBAAkB,CACxD,CAAC;AAAA,CACH;AAED,SAAS,cAAc,CAAC,KAAc,EAAU;IAC9C,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"stringify.js","sourceRoot":"","sources":["../../src/codegen/stringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,OAAO,OAAO;IACT,IAAI,CAAS;IACtB,YAAY,IAAY,EAAE;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAAA,CAClB;CACF;AAED,SAAS,kBAAkB,CAAC,IAAa,EAA4B;IACnE,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACZ,IAA0B,CAAC,IAAI,KAAK,kBAAkB,CACxD,CAAC;AAAA,CACH;AAED,SAAS,cAAc,CAAC,KAAc,EAAU;IAC9C,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,KAAK,QAAQ,EAAE,CAAC;YACd,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YAClC,IAAI,KAAK,YAAY,OAAO;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC;YAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO,eAAe,CAAC,KAAgC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,KAAK,EAAE,CAAC,CAAC;AAAA,CAC5D;AAED,SAAS,cAAc,CAAC,KAAgB,EAAU;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,IAAI,KAAK,GAAG,CAAC;AAAA,CACrB;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAc,EAAoB;IACxE,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,GAAG,KAAK,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;QAClE,OAAO,EAAE,CAAC,YAAY,CAAC;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,UAAW,GAAwB,CAAC,IAAI,EAAE,CACpF,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC;AAAA,CACZ;AAED,MAAM,UAAU,eAAe,CAAC,MAA+B,EAAU;IACvE,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,CAC3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-mapper.d.ts","sourceRoot":"","sources":["../../src/generators/column-mapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"column-mapper.d.ts","sourceRoot":"","sources":["../../src/generators/column-mapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,aAAa,EACtB,eAAe,UAAO,GACrB,MAAM,CAyCR"}
|
|
@@ -39,6 +39,12 @@ function mapDefault(value) {
|
|
|
39
39
|
if (typeof value === "string") {
|
|
40
40
|
return quoted(value);
|
|
41
41
|
}
|
|
42
|
+
// Drizzle takes a JSON column's default as the JS value it serializes, so an
|
|
43
|
+
// array default has to survive as a literal. `String([])` renders the empty
|
|
44
|
+
// string, which is not valid JS in that position.
|
|
45
|
+
if (Array.isArray(value)) {
|
|
46
|
+
return JSON.stringify(value);
|
|
47
|
+
}
|
|
42
48
|
return String(value);
|
|
43
49
|
}
|
|
44
50
|
//# sourceMappingURL=column-mapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-mapper.js","sourceRoot":"","sources":["../../src/generators/column-mapper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"column-mapper.js","sourceRoot":"","sources":["../../src/generators/column-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { EmitContext } from "@typespec/compiler";
|
|
2
2
|
import type { Dialect } from "./generators/dialect.js";
|
|
3
|
+
/**
|
|
4
|
+
* Binds every decorator exported from this module into the `Drizzle` TypeSpec
|
|
5
|
+
* namespace, matching `namespace Drizzle;` in `tsp/main.tsp`. Without it the
|
|
6
|
+
* compiler binds them globally, where `@createdAt`, `@updatedAt`, `@minValue`
|
|
7
|
+
* and `@maxValue` collide with the same names declared by the TypeSpec standard
|
|
8
|
+
* library and by sibling emitters.
|
|
9
|
+
*/
|
|
10
|
+
export declare const namespace = "Drizzle";
|
|
3
11
|
export { $check, $columnVisibility, $compositeUnique, $createdAt, $foreignKeyDef, $indexDef, $junction, $maxValue, $minValue, $pk, $primaryKey, $references, $table, $unique, $updatedAt, $uuid, } from "./decorators.js";
|
|
4
12
|
export { $lib } from "./lib.js";
|
|
5
13
|
export interface EmitterOptions {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIvD,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EACH,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BjF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIvD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EACH,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BjF"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,14 @@ import { emitFile, resolvePath } from "@typespec/compiler";
|
|
|
2
2
|
import { assemblePackage } from "./assembler.js";
|
|
3
3
|
import { buildIR } from "./ir/builder.js";
|
|
4
4
|
import { buildRemitIR } from "./ir/remit-builder.js";
|
|
5
|
+
/**
|
|
6
|
+
* Binds every decorator exported from this module into the `Drizzle` TypeSpec
|
|
7
|
+
* namespace, matching `namespace Drizzle;` in `tsp/main.tsp`. Without it the
|
|
8
|
+
* compiler binds them globally, where `@createdAt`, `@updatedAt`, `@minValue`
|
|
9
|
+
* and `@maxValue` collide with the same names declared by the TypeSpec standard
|
|
10
|
+
* library and by sibling emitters.
|
|
11
|
+
*/
|
|
12
|
+
export const namespace = "Drizzle";
|
|
5
13
|
export { $check, $columnVisibility, $compositeUnique, $createdAt, $foreignKeyDef, $indexDef, $junction, $maxValue, $minValue, $pk, $primaryKey, $references, $table, $unique, $updatedAt, $uuid, } from "./decorators.js";
|
|
6
14
|
export { $lib } from "./lib.js";
|
|
7
15
|
export async function $onEmit(context) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EACH,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AA2ChC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoC,EAAiB;IACjF,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM;QAAE,OAAO;IAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;IACzD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GACrB,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;QAClC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAC3D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG;QACb,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB;QAChE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO;QAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI;QACxC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI;QAC5C,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK;KACpD,CAAC;IAEF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAErD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACxC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC;YACrD,OAAO;SACR,CAAC,CAAC;IACL,CAAC;AAAA,CACF"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC;AAEnC,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EACH,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AA2ChC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoC,EAAiB;IACjF,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM;QAAE,OAAO;IAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;IACzD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GACrB,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;QAClC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAC3D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG;QACb,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB;QAChE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO;QAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI;QACxC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI;QAC5C,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK;KACpD,CAAC;IAEF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAErD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACxC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC;YACrD,OAAO;SACR,CAAC,CAAC;IACL,CAAC;AAAA,CACF"}
|
package/dist/ir/builder.d.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import type { EnumDef, TableDef } from "./types.js";
|
|
2
|
-
|
|
3
|
-
* Minimal Program-like interface for state access.
|
|
4
|
-
* Allows testing without importing the full @typespec/compiler Program.
|
|
5
|
-
*/
|
|
6
|
-
export interface ProgramStateAccess {
|
|
7
|
-
stateMap(key: symbol): Map<unknown, unknown>;
|
|
8
|
-
stateSet(key: symbol): Set<unknown>;
|
|
9
|
-
}
|
|
1
|
+
import type { EnumDef, ProgramStateAccess, TableDef } from "./types.js";
|
|
2
|
+
export type { ProgramStateAccess } from "./types.js";
|
|
10
3
|
/**
|
|
11
4
|
* Builds IR from TypeSpec program state populated by decorators.
|
|
12
5
|
*
|
package/dist/ir/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,OAAO,EAKP,kBAAkB,EAClB,QAAQ,EAGT,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA2BrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG;IACpD,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,CAqKA"}
|
package/dist/ir/builder.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { getMaxLength } from "@typespec/compiler";
|
|
2
2
|
import { toSnakeCase } from "../generators/naming.js";
|
|
3
3
|
import { StateKeys } from "../lib.js";
|
|
4
|
+
import { readDefaultValue } from "./default-value.js";
|
|
5
|
+
import { readIndexDefs, reportUnclaimedIndexDefs, toModelProperties } from "./index-def.js";
|
|
4
6
|
/**
|
|
5
7
|
* Builds IR from TypeSpec program state populated by decorators.
|
|
6
8
|
*
|
|
@@ -24,6 +26,7 @@ export function buildIR(program) {
|
|
|
24
26
|
const tables = [];
|
|
25
27
|
const enums = [];
|
|
26
28
|
const seenEnums = new Set();
|
|
29
|
+
const claimed = new Set();
|
|
27
30
|
const tableState = program.stateMap(StateKeys.table);
|
|
28
31
|
const pkTableState = program.stateMap(StateKeys.primaryKey);
|
|
29
32
|
const pkFieldState = program.stateSet(StateKeys.pk);
|
|
@@ -35,7 +38,6 @@ export function buildIR(program) {
|
|
|
35
38
|
const uniqueState = program.stateSet(StateKeys.unique);
|
|
36
39
|
const compositeUniqueState = program.stateMap(StateKeys.compositeUnique);
|
|
37
40
|
const checkState = program.stateMap(StateKeys.check);
|
|
38
|
-
const indexDefState = program.stateMap(StateKeys.indexDef);
|
|
39
41
|
const foreignKeyDefState = program.stateMap(StateKeys.foreignKeyDef);
|
|
40
42
|
const minValueState = program.stateMap(StateKeys.minValue);
|
|
41
43
|
const maxValueState = program.stateMap(StateKeys.maxValue);
|
|
@@ -44,6 +46,7 @@ export function buildIR(program) {
|
|
|
44
46
|
const model = target;
|
|
45
47
|
if (model.kind !== "Model")
|
|
46
48
|
continue;
|
|
49
|
+
claimed.add(model);
|
|
47
50
|
const tableMeta = meta;
|
|
48
51
|
const pkMeta = pkTableState.get(model);
|
|
49
52
|
const tableName = pkMeta?.tableName ?? tableMeta.name;
|
|
@@ -121,12 +124,9 @@ export function buildIR(program) {
|
|
|
121
124
|
if (vis) {
|
|
122
125
|
field.visibility = vis;
|
|
123
126
|
}
|
|
124
|
-
|
|
125
|
-
if (
|
|
126
|
-
|
|
127
|
-
if (defaultVal !== undefined) {
|
|
128
|
-
field.defaultValue = defaultVal;
|
|
129
|
-
}
|
|
127
|
+
const defaultVal = readDefaultValue(modelProp);
|
|
128
|
+
if (defaultVal !== undefined) {
|
|
129
|
+
field.defaultValue = defaultVal;
|
|
130
130
|
}
|
|
131
131
|
fields.push(field);
|
|
132
132
|
}
|
|
@@ -137,13 +137,7 @@ export function buildIR(program) {
|
|
|
137
137
|
name: cu.name,
|
|
138
138
|
columns: toModelProperties(cu.columns).map((c) => c.name),
|
|
139
139
|
}));
|
|
140
|
-
|
|
141
|
-
const indexDefs = indexDefState.get(model);
|
|
142
|
-
const indexes = (indexDefs ?? []).map((idx) => ({
|
|
143
|
-
name: idx.name,
|
|
144
|
-
columns: toModelProperties(idx.columns).map((c) => c.name),
|
|
145
|
-
unique: idx.unique,
|
|
146
|
-
}));
|
|
140
|
+
const indexes = readIndexDefs(program, model);
|
|
147
141
|
// Composite foreign keys
|
|
148
142
|
const fkDefs = foreignKeyDefState.get(model);
|
|
149
143
|
const foreignKeys = (fkDefs ?? []).map((fk) => {
|
|
@@ -172,23 +166,9 @@ export function buildIR(program) {
|
|
|
172
166
|
uniqueConstraints,
|
|
173
167
|
});
|
|
174
168
|
}
|
|
169
|
+
reportUnclaimedIndexDefs(program, claimed);
|
|
175
170
|
return { tables, enums };
|
|
176
171
|
}
|
|
177
|
-
/**
|
|
178
|
-
* Normalizes a `ModelProperty[]` decorator argument.
|
|
179
|
-
*
|
|
180
|
-
* Passed as a plain array when a decorator is invoked directly (unit tests), and
|
|
181
|
-
* as a marshalled tuple value (`{ values: ModelProperty[] }`) when the emitter
|
|
182
|
-
* runs against compiled TypeSpec.
|
|
183
|
-
*/
|
|
184
|
-
function toModelProperties(columns) {
|
|
185
|
-
if (Array.isArray(columns))
|
|
186
|
-
return columns;
|
|
187
|
-
if (columns && typeof columns === "object" && "values" in columns) {
|
|
188
|
-
return columns.values;
|
|
189
|
-
}
|
|
190
|
-
throw new Error("Expected a ModelProperty[] or tuple value for decorator columns");
|
|
191
|
-
}
|
|
192
172
|
function resolveFieldType(prop, uuidMeta, program) {
|
|
193
173
|
if (uuidMeta) {
|
|
194
174
|
return { kind: "uuid", encoding: uuidMeta.encoding };
|
|
@@ -236,23 +216,4 @@ function resolveScalarType(scalar, program) {
|
|
|
236
216
|
}
|
|
237
217
|
return { kind: "text" };
|
|
238
218
|
}
|
|
239
|
-
function extractDefaultValue(value) {
|
|
240
|
-
if (value === null || value === undefined)
|
|
241
|
-
return undefined;
|
|
242
|
-
// TypeSpec numeric/string/boolean literal values
|
|
243
|
-
if (typeof value === "object" && value !== null && "value" in value) {
|
|
244
|
-
return value.value;
|
|
245
|
-
}
|
|
246
|
-
// Enum member default — extract the value or name
|
|
247
|
-
if (typeof value === "object" && value !== null && "kind" in value) {
|
|
248
|
-
const typed = value;
|
|
249
|
-
if (typed.kind === "EnumMember") {
|
|
250
|
-
return typed.value !== undefined ? typed.value : typed.name;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
254
|
-
return value;
|
|
255
|
-
}
|
|
256
|
-
return undefined;
|
|
257
|
-
}
|
|
258
219
|
//# sourceMappingURL=builder.js.map
|
package/dist/ir/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ModelProperty } from "@typespec/compiler";
|
|
2
|
+
import type { DefaultValue } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Reads a model property's TypeSpec default into the literal the column default
|
|
5
|
+
* is emitted from.
|
|
6
|
+
*
|
|
7
|
+
* Three shapes reach here. Compiled TypeSpec sets `defaultValue` to a checked
|
|
8
|
+
* `Value` from the compiler's discriminated union. Older compilers set `default`
|
|
9
|
+
* instead. Direct decorator invocation (unit tests over mock models) supplies a
|
|
10
|
+
* bare JS primitive, a raw `EnumMember`, or a `{ value }` literal wrapper.
|
|
11
|
+
*/
|
|
12
|
+
export declare function readDefaultValue(prop: ModelProperty): DefaultValue | undefined;
|
|
13
|
+
//# sourceMappingURL=default-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-value.d.ts","sourceRoot":"","sources":["../../src/ir/default-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAS,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAS9E"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads a model property's TypeSpec default into the literal the column default
|
|
3
|
+
* is emitted from.
|
|
4
|
+
*
|
|
5
|
+
* Three shapes reach here. Compiled TypeSpec sets `defaultValue` to a checked
|
|
6
|
+
* `Value` from the compiler's discriminated union. Older compilers set `default`
|
|
7
|
+
* instead. Direct decorator invocation (unit tests over mock models) supplies a
|
|
8
|
+
* bare JS primitive, a raw `EnumMember`, or a `{ value }` literal wrapper.
|
|
9
|
+
*/
|
|
10
|
+
export function readDefaultValue(prop) {
|
|
11
|
+
const legacy = prop.default;
|
|
12
|
+
const raw = prop.defaultValue ?? legacy;
|
|
13
|
+
if (raw === undefined || raw === null)
|
|
14
|
+
return undefined;
|
|
15
|
+
if (isPrimitive(raw))
|
|
16
|
+
return raw;
|
|
17
|
+
if (isValue(raw))
|
|
18
|
+
return fromValue(raw);
|
|
19
|
+
if (isEnumMember(raw))
|
|
20
|
+
return fromEnumMember(raw);
|
|
21
|
+
if (isLiteralWrapper(raw))
|
|
22
|
+
return raw.value;
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
function fromValue(value) {
|
|
26
|
+
switch (value.valueKind) {
|
|
27
|
+
case "StringValue":
|
|
28
|
+
case "BooleanValue":
|
|
29
|
+
return value.value;
|
|
30
|
+
case "NumericValue":
|
|
31
|
+
return value.value.asNumber() ?? value.value.asBigInt() ?? undefined;
|
|
32
|
+
case "EnumValue":
|
|
33
|
+
return fromEnumMember(value.value);
|
|
34
|
+
// Only an empty array default is expressible as a column default. A JSON
|
|
35
|
+
// column declared `= #[]` otherwise emits notNull with no default, so a row
|
|
36
|
+
// written without the field fails at insert time instead of getting the
|
|
37
|
+
// default the schema promises.
|
|
38
|
+
case "ArrayValue":
|
|
39
|
+
return value.values.length === 0 ? [] : undefined;
|
|
40
|
+
default:
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function fromEnumMember(member) {
|
|
45
|
+
return member.value ?? member.name;
|
|
46
|
+
}
|
|
47
|
+
function isPrimitive(value) {
|
|
48
|
+
const kind = typeof value;
|
|
49
|
+
return kind === "string" || kind === "number" || kind === "bigint" || kind === "boolean";
|
|
50
|
+
}
|
|
51
|
+
function isValue(value) {
|
|
52
|
+
return isRecord(value) && value.entityKind === "Value";
|
|
53
|
+
}
|
|
54
|
+
function isEnumMember(value) {
|
|
55
|
+
return isRecord(value) && value.kind === "EnumMember";
|
|
56
|
+
}
|
|
57
|
+
function isLiteralWrapper(value) {
|
|
58
|
+
return isRecord(value) && isPrimitive(value.value);
|
|
59
|
+
}
|
|
60
|
+
function isRecord(value) {
|
|
61
|
+
return typeof value === "object" && value !== null;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=default-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-value.js","sourceRoot":"","sources":["../../src/ir/default-value.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmB,EAA4B;IAC9E,MAAM,MAAM,GAAI,IAA8C,CAAC,OAAO,CAAC;IACvE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC;IACxC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,YAAY,CAAC,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,gBAAgB,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC;IAC5C,OAAO,SAAS,CAAC;AAAA,CAClB;AAED,SAAS,SAAS,CAAC,KAAY,EAA4B;IACzD,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,KAAK,aAAa,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC;QACvE,KAAK,WAAW;YACd,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,yEAAyE;QACzE,4EAA4E;QAC5E,wEAAwE;QACxE,+BAA+B;QAC/B,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AAAA,CACF;AAED,SAAS,cAAc,CAAC,MAAkB,EAAgB;IACxD,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC;AAAA,CACpC;AAED,SAAS,WAAW,CAAC,KAAc,EAA+C;IAChF,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC;AAAA,CAC1F;AAED,SAAS,OAAO,CAAC,KAAc,EAAkB;IAC/C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC;AAAA,CACxD;AAED,SAAS,YAAY,CAAC,KAAc,EAAuB;IACzD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;AAAA,CACvD;AAED,SAAS,gBAAgB,CAAC,KAAc,EAA0D;IAChG,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAAA,CACpD;AAED,SAAS,QAAQ,CAAC,KAAc,EAAoC;IAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,CACpD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Model, ModelProperty } from "@typespec/compiler";
|
|
2
|
+
import type { IndexDef, ProgramStateAccess } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Reads the `@indexDef` state for one model into IR indexes.
|
|
5
|
+
*
|
|
6
|
+
* `@indexDef` is the SQL-only index declaration: it lives in this library's own
|
|
7
|
+
* state key, so a sibling emitter reading `@index` (the ElectroDB vocabulary the
|
|
8
|
+
* remit front-end also consumes) never sees it and mints no secondary index of
|
|
9
|
+
* its own. Both front-ends must therefore read it from here — a front-end that
|
|
10
|
+
* derives indexes only from the vocabulary it shares with another emitter makes
|
|
11
|
+
* the decorator inert.
|
|
12
|
+
*
|
|
13
|
+
* Index names are taken verbatim: the author named the index, and the migration
|
|
14
|
+
* history is keyed on that name.
|
|
15
|
+
*/
|
|
16
|
+
export declare function readIndexDefs(program: ProgramStateAccess, model: Model): IndexDef[];
|
|
17
|
+
/**
|
|
18
|
+
* Reports every `@indexDef` that no front-end claimed. An index silently
|
|
19
|
+
* dropped because its model produced no table is the failure mode `@indexDef`
|
|
20
|
+
* is most prone to, and it is invisible in the generated output.
|
|
21
|
+
*/
|
|
22
|
+
export declare function reportUnclaimedIndexDefs(program: ProgramStateAccess, claimed: Set<Model>): void;
|
|
23
|
+
/**
|
|
24
|
+
* Normalizes a `ModelProperty[]` decorator argument.
|
|
25
|
+
*
|
|
26
|
+
* Passed as a plain array when a decorator is invoked directly (unit tests), and
|
|
27
|
+
* as a marshalled tuple value (`{ values: ModelProperty[] }`) when the emitter
|
|
28
|
+
* runs against compiled TypeSpec.
|
|
29
|
+
*/
|
|
30
|
+
export declare function toModelProperties(columns: unknown): ModelProperty[];
|
|
31
|
+
//# sourceMappingURL=index-def.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-def.d.ts","sourceRoot":"","sources":["../../src/ir/index-def.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQ/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,CAWnF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAc/F;AAoBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CAMnE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { $lib, StateKeys } from "../lib.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reads the `@indexDef` state for one model into IR indexes.
|
|
4
|
+
*
|
|
5
|
+
* `@indexDef` is the SQL-only index declaration: it lives in this library's own
|
|
6
|
+
* state key, so a sibling emitter reading `@index` (the ElectroDB vocabulary the
|
|
7
|
+
* remit front-end also consumes) never sees it and mints no secondary index of
|
|
8
|
+
* its own. Both front-ends must therefore read it from here — a front-end that
|
|
9
|
+
* derives indexes only from the vocabulary it shares with another emitter makes
|
|
10
|
+
* the decorator inert.
|
|
11
|
+
*
|
|
12
|
+
* Index names are taken verbatim: the author named the index, and the migration
|
|
13
|
+
* history is keyed on that name.
|
|
14
|
+
*/
|
|
15
|
+
export function readIndexDefs(program, model) {
|
|
16
|
+
const defs = program.stateMap(StateKeys.indexDef).get(model);
|
|
17
|
+
if (!defs)
|
|
18
|
+
return [];
|
|
19
|
+
return defs.map((def) => ({
|
|
20
|
+
name: def.name,
|
|
21
|
+
columns: toModelProperties(def.columns).map((column) => resolveColumn(program, model, def.name, column)),
|
|
22
|
+
unique: def.unique ?? false,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Reports every `@indexDef` that no front-end claimed. An index silently
|
|
27
|
+
* dropped because its model produced no table is the failure mode `@indexDef`
|
|
28
|
+
* is most prone to, and it is invisible in the generated output.
|
|
29
|
+
*/
|
|
30
|
+
export function reportUnclaimedIndexDefs(program, claimed) {
|
|
31
|
+
for (const [target, defs] of program.stateMap(StateKeys.indexDef)) {
|
|
32
|
+
const model = target;
|
|
33
|
+
if (claimed.has(model))
|
|
34
|
+
continue;
|
|
35
|
+
for (const def of defs) {
|
|
36
|
+
program.reportDiagnostic($lib.createDiagnostic({
|
|
37
|
+
code: "index-def-dropped",
|
|
38
|
+
target: model,
|
|
39
|
+
format: { index: def.name, model: model.name },
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function resolveColumn(program, model, index, column) {
|
|
45
|
+
if (!model.properties.has(column.name)) {
|
|
46
|
+
program.reportDiagnostic($lib.createDiagnostic({
|
|
47
|
+
code: "index-def-unknown-column",
|
|
48
|
+
target: column,
|
|
49
|
+
format: { index, column: column.name, model: model.name },
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
return column.name;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Normalizes a `ModelProperty[]` decorator argument.
|
|
56
|
+
*
|
|
57
|
+
* Passed as a plain array when a decorator is invoked directly (unit tests), and
|
|
58
|
+
* as a marshalled tuple value (`{ values: ModelProperty[] }`) when the emitter
|
|
59
|
+
* runs against compiled TypeSpec.
|
|
60
|
+
*/
|
|
61
|
+
export function toModelProperties(columns) {
|
|
62
|
+
if (Array.isArray(columns))
|
|
63
|
+
return columns;
|
|
64
|
+
if (columns && typeof columns === "object" && "values" in columns) {
|
|
65
|
+
return columns.values;
|
|
66
|
+
}
|
|
67
|
+
throw new Error("Expected a ModelProperty[] or tuple value for decorator columns");
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=index-def.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-def.js","sourceRoot":"","sources":["../../src/ir/index-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAS5C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,OAA2B,EAAE,KAAY,EAAc;IACnF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAA4B,CAAC;IACxF,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrD,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAChD;QACD,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;KAC5B,CAAC,CAAC,CAAC;AAAA,CACL;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAA2B,EAAE,OAAmB,EAAQ;IAC/F,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,MAAe,CAAC;QAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACjC,KAAK,MAAM,GAAG,IAAI,IAAmB,EAAE,CAAC;YACtC,OAAO,CAAC,gBAAgB,CACtB,IAAI,CAAC,gBAAgB,CAAC;gBACpB,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;aAC/C,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;AAAA,CACF;AAED,SAAS,aAAa,CACpB,OAA2B,EAC3B,KAAY,EACZ,KAAa,EACb,MAAqB,EACb;IACR,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,gBAAgB,CACtB,IAAI,CAAC,gBAAgB,CAAC;YACpB,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;SAC1D,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AAAA,CACpB;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAmB;IACnE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAA0B,CAAC;IAC9D,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QAClE,OAAQ,OAAuC,CAAC,MAAM,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;AAAA,CACpF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remit-builder.d.ts","sourceRoot":"","sources":["../../src/ir/remit-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,OAAO,EAKR,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"remit-builder.d.ts","sourceRoot":"","sources":["../../src/ir/remit-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,OAAO,EAKR,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EACV,OAAO,EAKP,QAAQ,EACT,MAAM,YAAY,CAAC;AAoCpB,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,iBAAsB,GAC9B;IACD,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,CA0GA"}
|
package/dist/ir/remit-builder.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { navigateProgram } from "@typespec/compiler";
|
|
2
2
|
import { toSnakeCase } from "../generators/naming.js";
|
|
3
|
+
import { readDefaultValue } from "./default-value.js";
|
|
4
|
+
import { readIndexDefs, reportUnclaimedIndexDefs } from "./index-def.js";
|
|
3
5
|
export function buildRemitIR(program, options = {}) {
|
|
4
6
|
const foreignKeys = options.foreignKeys ?? true;
|
|
5
7
|
const idDefault = options.idDefault ?? false;
|
|
6
8
|
const tables = [];
|
|
7
9
|
const enums = [];
|
|
10
|
+
const claimed = new Set();
|
|
8
11
|
const models = [];
|
|
9
12
|
navigateProgram(program, {
|
|
10
13
|
model(model) {
|
|
@@ -17,6 +20,7 @@ export function buildRemitIR(program, options = {}) {
|
|
|
17
20
|
const entityDec = firstDecorator(model, "@entity");
|
|
18
21
|
if (!entityDec)
|
|
19
22
|
continue;
|
|
23
|
+
claimed.add(model);
|
|
20
24
|
const entityName = stringArg(entityDec, 0) ?? lowerFirst(model.name);
|
|
21
25
|
const service = stringArg(entityDec, 1) ?? "remit";
|
|
22
26
|
const sqlTableName = toSnakeCase(entityName);
|
|
@@ -46,7 +50,7 @@ export function buildRemitIR(program, options = {}) {
|
|
|
46
50
|
if (idDefault && propName === singlePkColumn && resolved.type.kind === "text") {
|
|
47
51
|
field.autoGenerateId = true;
|
|
48
52
|
}
|
|
49
|
-
const defaultValue =
|
|
53
|
+
const defaultValue = readDefaultValue(prop);
|
|
50
54
|
if (defaultValue !== undefined)
|
|
51
55
|
field.defaultValue = defaultValue;
|
|
52
56
|
fields.push(field);
|
|
@@ -60,6 +64,7 @@ export function buildRemitIR(program, options = {}) {
|
|
|
60
64
|
unique: false,
|
|
61
65
|
}))
|
|
62
66
|
.filter((idx) => !sameColumns(idx.columns));
|
|
67
|
+
indexes.push(...readIndexDefs(program, model));
|
|
63
68
|
for (const pattern of patterns) {
|
|
64
69
|
if (!pattern.collection)
|
|
65
70
|
continue;
|
|
@@ -88,6 +93,7 @@ export function buildRemitIR(program, options = {}) {
|
|
|
88
93
|
}
|
|
89
94
|
if (foreignKeys)
|
|
90
95
|
applyCollectionForeignKeys(tables, collections);
|
|
96
|
+
reportUnclaimedIndexDefs(program, claimed);
|
|
91
97
|
return { tables, enums };
|
|
92
98
|
}
|
|
93
99
|
/**
|
|
@@ -249,27 +255,6 @@ function resolveScalarType(scalar) {
|
|
|
249
255
|
return resolveScalarType(scalar.baseScalar);
|
|
250
256
|
return { kind: "text" };
|
|
251
257
|
}
|
|
252
|
-
function extractDefaultValue(prop) {
|
|
253
|
-
const value = prop.defaultValue ?? prop.default;
|
|
254
|
-
if (value === null || value === undefined)
|
|
255
|
-
return undefined;
|
|
256
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
257
|
-
return value;
|
|
258
|
-
}
|
|
259
|
-
if (typeof value === "object" && value !== null) {
|
|
260
|
-
const typed = value;
|
|
261
|
-
if ("value" in typed && typed.value !== undefined) {
|
|
262
|
-
const inner = typed.value;
|
|
263
|
-
if (typeof inner === "string" || typeof inner === "number" || typeof inner === "boolean") {
|
|
264
|
-
return inner;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
if (typed.kind === "EnumMember") {
|
|
268
|
-
return typed.value !== undefined ? typed.value : typed.name;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
return undefined;
|
|
272
|
-
}
|
|
273
258
|
function isModel(value) {
|
|
274
259
|
return !!value && typeof value === "object" && value.kind === "Model";
|
|
275
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remit-builder.js","sourceRoot":"","sources":["../../src/ir/remit-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"remit-builder.js","sourceRoot":"","sources":["../../src/ir/remit-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/ir/types.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
import type { Diagnostic } from "@typespec/compiler";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal Program surface the IR builders use: decorator state plus a place to
|
|
4
|
+
* raise diagnostics. Narrow enough that a mock program can drive them in tests.
|
|
5
|
+
*/
|
|
6
|
+
export interface ProgramStateAccess {
|
|
7
|
+
stateMap(key: symbol): Map<unknown, unknown>;
|
|
8
|
+
stateSet(key: symbol): Set<unknown>;
|
|
9
|
+
reportDiagnostic(diagnostic: Diagnostic): void;
|
|
10
|
+
}
|
|
1
11
|
/** UUID encoding options for @uuid decorator */
|
|
2
12
|
export type UuidEncoding = "base36" | "canonical" | "raw";
|
|
3
13
|
/** Resolved column type after applying all decorators */
|
|
@@ -31,6 +41,8 @@ export type FieldType = {
|
|
|
31
41
|
kind: "textEnum";
|
|
32
42
|
values: string[];
|
|
33
43
|
};
|
|
44
|
+
/** Literal a column default is emitted from */
|
|
45
|
+
export type DefaultValue = string | number | bigint | boolean | readonly DefaultValue[];
|
|
34
46
|
/** ON DELETE / ON UPDATE referential action for a foreign key */
|
|
35
47
|
export type ReferentialAction = "cascade" | "restrict" | "no action" | "set null" | "set default";
|
|
36
48
|
/** Column-level field definition extracted from a TypeSpec model property */
|
|
@@ -57,7 +69,7 @@ export interface FieldDef {
|
|
|
57
69
|
createdAt: boolean;
|
|
58
70
|
updatedAt: boolean;
|
|
59
71
|
visibility?: "read";
|
|
60
|
-
defaultValue?:
|
|
72
|
+
defaultValue?: DefaultValue;
|
|
61
73
|
constraints?: {
|
|
62
74
|
minValue?: number;
|
|
63
75
|
maxValue?: number;
|
package/dist/ir/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAE1D,yDAAyD;AACzD,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3C,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAElG,6EAA6E;AAC7E,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,YAAY,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;KAC9B,CAAC;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAChD;AAED,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAE1D,yDAAyD;AACzD,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3C,+CAA+C;AAC/C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,YAAY,EAAE,CAAC;AAExF,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAElG,6EAA6E;AAC7E,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,YAAY,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;KAC9B,CAAC;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,6CAA6C;AAC7C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,kEAAkE;AAClE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,aAAa,CAAC;IAC1B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;CAC1C;AAED,qDAAqD;AACrD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
|
package/dist/lib.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
|
|
2
|
-
|
|
2
|
+
"index-def-dropped": {
|
|
3
|
+
readonly default: import("@typespec/compiler").CallableMessage<["index", "model"]>;
|
|
4
|
+
};
|
|
5
|
+
"index-def-unknown-column": {
|
|
6
|
+
readonly default: import("@typespec/compiler").CallableMessage<["index", "column", "model"]>;
|
|
7
|
+
};
|
|
3
8
|
}, Record<string, any>, "check" | "columnVisibility" | "compositeUnique" | "createdAt" | "foreignKeyDef" | "indexDef" | "junction" | "maxValue" | "minValue" | "pk" | "primaryKey" | "references" | "table" | "unique" | "updatedAt" | "uuid">;
|
|
4
9
|
export declare const StateKeys: Record<"check" | "columnVisibility" | "compositeUnique" | "createdAt" | "foreignKeyDef" | "indexDef" | "junction" | "maxValue" | "minValue" | "pk" | "primaryKey" | "references" | "table" | "unique" | "updatedAt" | "uuid", symbol>;
|
|
5
10
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI;;;;;;;8OAkCN,CAAC;AAEZ,eAAO,MAAM,SAAS,uOAAiB,CAAC"}
|
package/dist/lib.js
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import { createTypeSpecLibrary } from "@typespec/compiler";
|
|
1
|
+
import { createTypeSpecLibrary, paramMessage } from "@typespec/compiler";
|
|
2
2
|
export const $lib = createTypeSpecLibrary({
|
|
3
3
|
name: "@kattebak/typespec-drizzle-orm-generator",
|
|
4
|
-
diagnostics: {
|
|
4
|
+
diagnostics: {
|
|
5
|
+
"index-def-dropped": {
|
|
6
|
+
severity: "error",
|
|
7
|
+
messages: {
|
|
8
|
+
default: paramMessage `@indexDef "${"index"}" is declared on model ${"model"}, which this front-end generates no table for. Mark the model with @table (drizzle front-end) or @entity (remit front-end), or remove the index.`,
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
"index-def-unknown-column": {
|
|
12
|
+
severity: "error",
|
|
13
|
+
messages: {
|
|
14
|
+
default: paramMessage `@indexDef "${"index"}" references column "${"column"}", which is not a property of model ${"model"}.`,
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
5
18
|
state: {
|
|
6
19
|
table: { description: "State for @table decorator" },
|
|
7
20
|
primaryKey: { description: "State for @primaryKey decorator" },
|
|
@@ -14,8 +27,8 @@ export const $lib = createTypeSpecLibrary({
|
|
|
14
27
|
unique: { description: "State for @unique decorator (single column)" },
|
|
15
28
|
compositeUnique: { description: "State for @unique({ name, columns }) (model-level)" },
|
|
16
29
|
check: { description: "State for @check decorator" },
|
|
17
|
-
indexDef: { description: "State for @
|
|
18
|
-
foreignKeyDef: { description: "State for @
|
|
30
|
+
indexDef: { description: "State for @indexDef decorator" },
|
|
31
|
+
foreignKeyDef: { description: "State for @foreignKeyDef decorator" },
|
|
19
32
|
minValue: { description: "State for @minValue decorator" },
|
|
20
33
|
maxValue: { description: "State for @maxValue decorator" },
|
|
21
34
|
columnVisibility: { description: "State for @columnVisibility decorator" },
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEzE,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC;IACxC,IAAI,EAAE,0CAA0C;IAChD,WAAW,EAAE;QACX,mBAAmB,EAAE;YACnB,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE;gBACR,OAAO,EAAE,YAAY,CAAA,cAAc,OAAO,0BAA0B,OAAO,kJAAkJ;aAC9N;SACF;QACD,0BAA0B,EAAE;YAC1B,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE;gBACR,OAAO,EAAE,YAAY,CAAA,cAAc,OAAO,wBAAwB,QAAQ,uCAAuC,OAAO,GAAG;aAC5H;SACF;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE;QACpD,UAAU,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;QAC9D,EAAE,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE;QACjE,UAAU,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;QAC9D,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,IAAI,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE;QAClD,SAAS,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAC5D,SAAS,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAC5D,MAAM,EAAE,EAAE,WAAW,EAAE,6CAA6C,EAAE;QACtE,eAAe,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE;QACtF,KAAK,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE;QACpD,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,aAAa,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE;QACpE,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,gBAAgB,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE;KAC3E;CACO,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kattebak/typespec-drizzle-orm-generator",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -60,6 +60,10 @@
|
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"access": "public"
|
|
62
62
|
},
|
|
63
|
+
"allowScripts": {
|
|
64
|
+
"better-sqlite3": true,
|
|
65
|
+
"esbuild": true
|
|
66
|
+
},
|
|
63
67
|
"engines": {
|
|
64
68
|
"node": ">=22.0.0"
|
|
65
69
|
}
|
package/tsp/main.tsp
CHANGED
|
@@ -2,6 +2,17 @@ import "../dist/index.js";
|
|
|
2
2
|
|
|
3
3
|
using TypeSpec.Reflection;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Decorators of the Drizzle ORM generator.
|
|
7
|
+
*
|
|
8
|
+
* Namespaced, not global: `@createdAt`, `@updatedAt`, `@minValue` and `@maxValue`
|
|
9
|
+
* are names other libraries and the TypeSpec standard library also declare, and a
|
|
10
|
+
* global declaration makes every reference in a project that loads both ambiguous.
|
|
11
|
+
* Reference these as `@Drizzle.table`, or bring them into scope for a file with
|
|
12
|
+
* `using Drizzle;` when nothing else in that file declares the same names.
|
|
13
|
+
*/
|
|
14
|
+
namespace Drizzle;
|
|
15
|
+
|
|
5
16
|
extern dec table(target: Model, name: valueof string, service: valueof string);
|
|
6
17
|
extern dec primaryKey(target: Model, tableName: valueof string);
|
|
7
18
|
extern dec pk(target: ModelProperty);
|
|
@@ -17,6 +28,15 @@ extern dec updatedAt(target: ModelProperty);
|
|
|
17
28
|
extern dec unique(target: ModelProperty);
|
|
18
29
|
extern dec compositeUnique(target: Model, name: valueof string, columns: ModelProperty[]);
|
|
19
30
|
extern dec check(target: ModelProperty, expression: valueof string);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Declares an index that exists in SQL only.
|
|
34
|
+
*
|
|
35
|
+
* Unlike a vocabulary shared with another emitter (`@index` in the ElectroDB
|
|
36
|
+
* vocabulary the remit front-end reads), `@indexDef` is read by this generator
|
|
37
|
+
* alone, so it never becomes a secondary index in another emitter's output. Both
|
|
38
|
+
* front-ends emit it. The name is used verbatim.
|
|
39
|
+
*/
|
|
20
40
|
extern dec indexDef(target: Model, name: valueof string, columns: ModelProperty[], unique?: valueof boolean);
|
|
21
41
|
extern dec foreignKeyDef(target: Model, name: valueof string, columns: ModelProperty[], foreignColumns: ModelProperty[]);
|
|
22
42
|
extern dec minValue(target: ModelProperty, value: valueof int32);
|