@kattebak/typespec-drizzle-orm-generator 3.8.2 → 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.
Files changed (39) hide show
  1. package/README.md +47 -2
  2. package/dist/codegen/stringify.js +1 -1
  3. package/dist/codegen/stringify.js.map +1 -1
  4. package/dist/generators/column-mapper.d.ts.map +1 -1
  5. package/dist/generators/column-mapper.js +6 -0
  6. package/dist/generators/column-mapper.js.map +1 -1
  7. package/dist/generators/dialect.d.ts +2 -0
  8. package/dist/generators/dialect.d.ts.map +1 -1
  9. package/dist/generators/dialect.js +7 -1
  10. package/dist/generators/dialect.js.map +1 -1
  11. package/dist/generators/types-generator.js +4 -2
  12. package/dist/generators/types-generator.js.map +1 -1
  13. package/dist/index.d.ts +8 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +8 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/ir/builder.d.ts +2 -9
  18. package/dist/ir/builder.d.ts.map +1 -1
  19. package/dist/ir/builder.js +9 -48
  20. package/dist/ir/builder.js.map +1 -1
  21. package/dist/ir/default-value.d.ts +13 -0
  22. package/dist/ir/default-value.d.ts.map +1 -0
  23. package/dist/ir/default-value.js +63 -0
  24. package/dist/ir/default-value.js.map +1 -0
  25. package/dist/ir/index-def.d.ts +31 -0
  26. package/dist/ir/index-def.d.ts.map +1 -0
  27. package/dist/ir/index-def.js +69 -0
  28. package/dist/ir/index-def.js.map +1 -0
  29. package/dist/ir/remit-builder.d.ts.map +1 -1
  30. package/dist/ir/remit-builder.js +7 -22
  31. package/dist/ir/remit-builder.js.map +1 -1
  32. package/dist/ir/types.d.ts +13 -1
  33. package/dist/ir/types.d.ts.map +1 -1
  34. package/dist/lib.d.ts +6 -1
  35. package/dist/lib.d.ts.map +1 -1
  36. package/dist/lib.js +17 -4
  37. package/dist/lib.js.map +1 -1
  38. package/package.json +6 -2
  39. 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 DrizzleEmitter;
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":
@@ -16,7 +16,7 @@ function stringifyValue(value) {
16
16
  case "undefined":
17
17
  return "undefined";
18
18
  case "string":
19
- return `"${value}"`;
19
+ return JSON.stringify(value);
20
20
  case "number":
21
21
  case "boolean":
22
22
  return String(value);
@@ -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,GAAG,CAAC;QACtB,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
+ {"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,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,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"}
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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"}
@@ -5,6 +5,8 @@ export interface NullableWrapperDef {
5
5
  name: string;
6
6
  dataType: string;
7
7
  jsType: string;
8
+ driverType?: string;
9
+ fromDriver?: string;
8
10
  }
9
11
  export interface DialectConfig {
10
12
  dialect: Dialect;
@@ -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,MAAM,gBAAgB,CAAC;AAE1D,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;CAChB;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,YAAY,EAAE,MAAM,CAAC;IACrB,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;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAO9D"}
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,MAAM,gBAAgB,CAAC;AAE1D,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,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,YAAY,EAAE,MAAM,CAAC;IACrB,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;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAO9D"}
@@ -11,7 +11,13 @@ const pgNullableWrappers = [
11
11
  { name: "nullableText", dataType: "text", jsType: "string" },
12
12
  { name: "nullableInteger", dataType: "integer", jsType: "number" },
13
13
  { name: "nullableReal", dataType: "real", jsType: "number" },
14
- { name: "nullableBigint", dataType: "bigint", jsType: "number" },
14
+ {
15
+ name: "nullableBigint",
16
+ dataType: "bigint",
17
+ jsType: "number",
18
+ driverType: "number | string",
19
+ fromDriver: "(v) => (v == null ? undefined : Number(v))",
20
+ },
15
21
  { name: "nullableDoublePrecision", dataType: "double precision", jsType: "number" },
16
22
  { name: "nullableBoolean", dataType: "boolean", jsType: "boolean" },
17
23
  { name: "nullableTimestamp", dataType: "timestamp with time zone", jsType: "Date" },
@@ -1 +1 @@
1
- {"version":3,"file":"dialect.js","sourceRoot":"","sources":["../../src/generators/dialect.ts"],"names":[],"mappings":"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"}
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;AA0BlF,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAiB;IAC9D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,SAAS,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,aAAa,EAAE,CAAC;IAC3B,CAAC;AAAA,CACF;AAED,MAAM,kBAAkB,GAAkC;IACxD,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;IAClE,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC5D;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,iBAAiB;QAC7B,UAAU,EAAE,4CAA4C;KACzD;IACD,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE;IACnF,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IACnE,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE;CACpF,CAAC;AAEF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAiB;IACnD,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAC9B,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAC5B,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IAC9C,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAC9B,CAAC,WAAW,EAAE,mBAAmB,CAAC;CACnC,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,GAAW,EAAE,MAAgB,EAAU;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC;AAAA,CACrD;AAED,SAAS,SAAS,GAAkB;IAClC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,qBAAqB;QACjC,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,kBAAkB;QACpC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACrD,mBAAmB,CAAC,IAAuB,EAAiB;YAC1D,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAAA,CAC/C;QACD,oBAAoB,CAAC,KAAe,EAAU;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAAA,CACjC;QACD,YAAY,CAAC,KAAe,EAAU;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACrC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,KAAK,SAAS;oBACZ,OAAO,MAAM,CAAC,SAAS,EAAE;wBACvB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAC1E,CAAC,CAAC;gBACL,KAAK,SAAS;oBACZ,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClC,KAAK,QAAQ;oBACX,OAAO,MAAM,CAAC,QAAQ,EAAE;wBACtB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAC/D,CAAC,CAAC;gBACL,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,KAAK,iBAAiB;oBACpB,OAAO,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1C,KAAK,SAAS;oBACZ,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClC,KAAK,WAAW;oBACd,OAAO,MAAM,CAAC,WAAW,EAAE;wBACzB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAC7D,CAAC,CAAC;gBACL,KAAK,OAAO;oBACV,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrC,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5C,KAAK,UAAU;oBACb,OAAO,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QAAA,CACF;KACF,CAAC;AAAA,CACH;AAED,MAAM,sBAAsB,GAAkC;IAC5D,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;IAClE,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;CAC7D,CAAC;AAEF,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAiB;IACvD,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAC9B,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,iBAAiB,EAAE,cAAc,CAAC;CACpC,CAAC,CAAC;AAEH,SAAS,aAAa,GAAkB;IACtC,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,yBAAyB;QACrC,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,sBAAsB;QACxC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACjF,mBAAmB,CAAC,IAAuB,EAAiB;YAC1D,OAAO,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAAA,CACnD;QACD,oBAAoB,CAAC,KAAe,EAAU;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAAA,CACjC;QACD,YAAY,CAAC,KAAe,EAAU;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACrC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,KAAK,SAAS;oBACZ,OAAO,MAAM,CAAC,MAAM,EAAE;wBACpB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAC1E,CAAC,CAAC;gBACL,KAAK,SAAS;oBACZ,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClC,KAAK,QAAQ;oBACX,OAAO,MAAM,CAAC,SAAS,EAAE;wBACvB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAC/D,CAAC,CAAC;gBACL,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,KAAK,iBAAiB;oBACpB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,KAAK,SAAS;oBACZ,OAAO,MAAM,CAAC,SAAS,EAAE;wBACvB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAChE,CAAC,CAAC;gBACL,KAAK,WAAW;oBACd,OAAO,MAAM,CAAC,SAAS,EAAE;wBACvB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAClE,CAAC,CAAC;gBACL,KAAK,OAAO;oBACV,OAAO,MAAM,CAAC,MAAM,EAAE;wBACpB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAC7D,CAAC,CAAC;gBACL,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrC,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC,MAAM,EAAE;wBACpB,GAAG;wBACH,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;4BAC/E,OAAO,EAAE,IAAI;yBACd,CAAC;qBACH,CAAC,CAAC;gBACL,KAAK,UAAU;oBACb,OAAO,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QAAA,CACF;KACF,CAAC;AAAA,CACH"}
@@ -50,11 +50,13 @@ function drizzleClientImports(dialect) {
50
50
  ];
51
51
  }
52
52
  function generateNullableWrapper(wrapper) {
53
- const typeParam = `<{\n data: ${wrapper.jsType} | undefined;\n driverData: ${wrapper.jsType} | null;\n}>`;
53
+ const driverType = wrapper.driverType ?? wrapper.jsType;
54
+ const fromDriver = wrapper.fromDriver ?? "(v) => v ?? undefined";
55
+ const typeParam = `<{\n data: ${wrapper.jsType} | undefined;\n driverData: ${driverType} | null;\n}>`;
54
56
  const configObj = [
55
57
  "{",
56
58
  ` dataType: () => ${quoted(wrapper.dataType)},`,
57
- ` fromDriver: (v) => v ?? undefined,`,
59
+ ` fromDriver: ${fromDriver},`,
58
60
  "}",
59
61
  ].join("\n");
60
62
  return exportConst(wrapper.name, `customType${typeParam}(${configObj})`);
@@ -1 +1 @@
1
- {"version":3,"file":"types-generator.js","sourceRoot":"","sources":["../../src/generators/types-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types-generator.js","sourceRoot":"","sources":["../../src/generators/types-generator.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 {
@@ -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"}
@@ -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
  *
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,OAAO,EAKP,QAAQ,EAGT,MAAM,YAAY,CAAC;AAiCpB;;;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;CACrC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG;IACpD,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,CA2KA"}
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"}
@@ -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
- // Default value from TypeSpec (prop.default)
125
- if ("default" in modelProp && modelProp.default !== undefined) {
126
- const defaultVal = extractDefaultValue(modelProp.default);
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
- // Indexes
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
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"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"}
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;AAG5B,OAAO,KAAK,EACV,OAAO,EAKP,QAAQ,EACT,MAAM,YAAY,CAAC;AAiCpB,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,CAoGA"}
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"}
@@ -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 = extractDefaultValue(prop);
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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"}
@@ -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?: unknown;
72
+ defaultValue?: DefaultValue;
61
73
  constraints?: {
62
74
  minValue?: number;
63
75
  maxValue?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
2
- [code: string]: import("@typespec/compiler").DiagnosticMessages;
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;;8OAqBN,CAAC;AAEZ,eAAO,MAAM,SAAS,uOAAiB,CAAC"}
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 @index decorator" },
18
- foreignKeyDef: { description: "State for @foreignKey decorator" },
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;AAE3D,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC;IACxC,IAAI,EAAE,0CAA0C;IAChD,WAAW,EAAE,EAAE;IACf,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,4BAA4B,EAAE;QACvD,aAAa,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;QACjE,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"}
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.8.2",
3
+ "version": "4.0.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -43,7 +43,7 @@
43
43
  "lint": "biome check .",
44
44
  "fix": "biome check --write .",
45
45
  "format": "biome format --write .",
46
- "test": "node --test --experimental-test-coverage --test-coverage-lines=83 --test-coverage-exclude='**/*.test.ts' --test-coverage-exclude='src/fixtures/**' --test-coverage-exclude='dist/**' --import=tsx 'src/**/*.test.ts'",
46
+ "test": "node --test --experimental-test-coverage --test-coverage-lines=90 --test-coverage-exclude='**/*.test.ts' --test-coverage-exclude='src/fixtures/**' --test-coverage-exclude='dist/**' --import=tsx 'src/**/*.test.ts'",
47
47
  "pretest": "npm run check",
48
48
  "prepublishOnly": "npm run build"
49
49
  },
@@ -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);