@metaobjectsdev/codegen-ts 0.11.5 → 0.11.6-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/import-path.d.ts +13 -0
- package/dist/import-path.d.ts.map +1 -1
- package/dist/import-path.js.map +1 -1
- package/dist/metaobjects-config.d.ts +8 -0
- package/dist/metaobjects-config.d.ts.map +1 -1
- package/dist/metaobjects-config.js +3 -0
- package/dist/metaobjects-config.js.map +1 -1
- package/dist/render-context.d.ts.map +1 -1
- package/dist/render-context.js +1 -0
- package/dist/render-context.js.map +1 -1
- package/dist/templates/entity-file.d.ts +7 -0
- package/dist/templates/entity-file.d.ts.map +1 -1
- package/dist/templates/entity-file.js +15 -6
- package/dist/templates/entity-file.js.map +1 -1
- package/dist/templates/projection-decl.d.ts +22 -0
- package/dist/templates/projection-decl.d.ts.map +1 -1
- package/dist/templates/projection-decl.js +63 -8
- package/dist/templates/projection-decl.js.map +1 -1
- package/package.json +6 -6
- package/src/import-path.ts +13 -0
- package/src/metaobjects-config.ts +11 -0
- package/src/render-context.ts +1 -0
- package/src/templates/entity-file.ts +22 -6
- package/src/templates/projection-decl.ts +91 -10
package/dist/import-path.d.ts
CHANGED
|
@@ -44,6 +44,19 @@ export interface ResolvedTarget {
|
|
|
44
44
|
importBase: string | undefined;
|
|
45
45
|
outputLayout: OutputLayout;
|
|
46
46
|
dbImport: string;
|
|
47
|
+
/**
|
|
48
|
+
* Whether this target emits server runtime bindings. `true` (the default for
|
|
49
|
+
* the implicit "default" target) = a full server package: Drizzle tables/views,
|
|
50
|
+
* `runtime-ts` filter/sort allowlists, the whole DB layer. `false` = a
|
|
51
|
+
* contract-only target: Zod schemas + inferred TS types ONLY, with no
|
|
52
|
+
* `drizzle-orm` / `runtime-ts` import — for a shared wire-contract package
|
|
53
|
+
* consumed by a UI/web client that has no database. The axis is the target's
|
|
54
|
+
* AUDIENCE (server vs client), not any one artifact: in a contract target an
|
|
55
|
+
* entity drops its `pgTable`, a projection drops its `pgView`, every object
|
|
56
|
+
* renders as its plain shape. Allowlists are off here too (contract ⇒ no
|
|
57
|
+
* `runtime-ts`); the finer `allowlists` knob only applies within a runtime target.
|
|
58
|
+
*/
|
|
59
|
+
runtime: boolean;
|
|
47
60
|
}
|
|
48
61
|
/** Specifier to import entity `entityName` (in `entityPkg`, produced into
|
|
49
62
|
* `entityTarget`) from a file emitted into `selfTarget`. Same target → relative
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-path.d.ts","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9C,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG7D;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,GACf,MAAM,CAIR;AAWD;oCACoC;AACpC,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAIR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAClD,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAGR;AAED;4FAC4F;AAC5F,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAER;AAED;;;;oBAIoB;AACpB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CASR;AAED;sCACsC;AACtC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf;mEAC+D;IAC/D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAmBD;;yEAEyE;AACzE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAKR;AAED;8CAC8C;AAC9C,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAER;AAED;;sCAEsC;AACtC,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAKR"}
|
|
1
|
+
{"version":3,"file":"import-path.d.ts","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9C,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG7D;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,GACf,MAAM,CAIR;AAWD;oCACoC;AACpC,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAIR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAClD,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAGR;AAED;4FAC4F;AAC5F,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAER;AAED;;;;oBAIoB;AACpB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CASR;AAED;sCACsC;AACtC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf;mEAC+D;IAC/D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;OAWG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAmBD;;yEAEyE;AACzE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAKR;AAED;8CAC8C;AAC9C,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAER;AAED;;sCAEsC;AACtC,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAKR"}
|
package/dist/import-path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-path.js","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"import-path.js","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,14 @@ export interface TargetConfig {
|
|
|
27
27
|
importBase?: string;
|
|
28
28
|
outputLayout?: OutputLayout;
|
|
29
29
|
dbImport?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Whether this target emits server runtime bindings. Defaults to `true` (a full
|
|
32
|
+
* server package: Drizzle tables/views + the DB layer). Set `false` for a
|
|
33
|
+
* contract-only target — Zod schemas + inferred TS types only, no `drizzle-orm`
|
|
34
|
+
* / `runtime-ts` import — e.g. a shared wire-contract package consumed by a web
|
|
35
|
+
* client with no database. See {@link ResolvedTarget.runtime}.
|
|
36
|
+
*/
|
|
37
|
+
runtime?: boolean;
|
|
30
38
|
}
|
|
31
39
|
/** Subset of MetaobjectsGenConfig surfaced to generators via GenContext. */
|
|
32
40
|
export interface ResolvedGenConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metaobjects-config.d.ts","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"metaobjects-config.d.ts","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChI,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGrE;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC5C,gFAAgF;AAChF,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,YAAY,EAAE,QAAQ,EAAE,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,kIAAkI;IAClI,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;oFAGgF;IAChF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D;;;;;OAKG;IACH,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,kGAAkG;IAClG,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAClC,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mFAAmF;IACnF,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC7C;AAED;;;6CAG6C;AAC7C,MAAM,WAAW,8BAA+B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,GAAG,YAAY,CAAC;IAC1G,gFAAgF;IAChF,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;0DAE0D;AAC1D,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;6DAE6D;AAC7D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,GAAG,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAChC,cAAc,EAAE,YAAY,GAC3B,kBAAkB,CAQpB;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAE/E;AAED;;kEAEkE;AAClE,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAwB3F;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAAE,CAqB9E;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,8BAA8B,CAa5F"}
|
|
@@ -30,6 +30,8 @@ export function resolveTargets(config) {
|
|
|
30
30
|
importBase: config.importBase,
|
|
31
31
|
outputLayout: layout,
|
|
32
32
|
dbImport: config.dbImport,
|
|
33
|
+
// The default target is the server package — runtime bindings on.
|
|
34
|
+
runtime: true,
|
|
33
35
|
},
|
|
34
36
|
};
|
|
35
37
|
for (const [name, t] of Object.entries(config.targets ?? {})) {
|
|
@@ -39,6 +41,7 @@ export function resolveTargets(config) {
|
|
|
39
41
|
importBase: t.importBase,
|
|
40
42
|
outputLayout: t.outputLayout ?? layout,
|
|
41
43
|
dbImport: t.dbImport ?? config.dbImport,
|
|
44
|
+
runtime: t.runtime ?? true,
|
|
42
45
|
};
|
|
43
46
|
}
|
|
44
47
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metaobjects-config.js","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAwD,MAAM,0BAA0B,CAAC;AAIhI,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAqB5D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"metaobjects-config.js","sourceRoot":"","sources":["../src/metaobjects-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGrE;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,QAAQ,CAAC;IACnB,gGAAgG;IAChG,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C;;;;;OAKG;IACH,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC;IACjC,8FAA8F;IAC9F,SAAS,EAAE,MAAM,CAAC;IAClB,oMAAoM;IACpM,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sHAAsH;IACtH,YAAY,EAAE,YAAY,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,qFAAqF;IACrF,UAAU,EAAE,cAAc,CAAC;IAC3B,oEAAoE;IACpE,kBAAkB,EAAE,cAAc,CAAC;IACnC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,iEAAiE;IACjE,WAAW,EAAE,WAAW,CAAC;IACzB,uGAAuG;IACvG,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C;;4DAEwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qWAAqW;AACrW,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,UAAU,GAAG,sBAAsB,GAAG,eAAe,GAAG,WAAW,GAAG,oBAAoB,GAAG,cAAc,GAAG,WAAW,GAAG,YAAY,GAAG,oBAAoB,GAAG,gBAAgB,CAAC,GAAG;IACtP,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAE7D;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGrE;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,QAAQ,CAAC;IACnB,gGAAgG;IAChG,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C;;;;;OAKG;IACH,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC;IACjC,8FAA8F;IAC9F,SAAS,EAAE,MAAM,CAAC;IAClB,oMAAoM;IACpM,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sHAAsH;IACtH,YAAY,EAAE,YAAY,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,qFAAqF;IACrF,UAAU,EAAE,cAAc,CAAC;IAC3B,oEAAoE;IACpE,kBAAkB,EAAE,cAAc,CAAC;IACnC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,iEAAiE;IACjE,WAAW,EAAE,WAAW,CAAC;IACzB,uGAAuG;IACvG,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C;;4DAEwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qWAAqW;AACrW,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,UAAU,GAAG,sBAAsB,GAAG,eAAe,GAAG,WAAW,GAAG,oBAAoB,GAAG,cAAc,GAAG,WAAW,GAAG,YAAY,GAAG,oBAAoB,GAAG,gBAAgB,CAAC,GAAG;IACtP,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAE7D;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CA4BzE"}
|
package/dist/render-context.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-context.js","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAQhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAqFrD,0EAA0E;AAC1E,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAe;IACnD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC;IACjD,MAAM,aAAa,GAAmB,IAAI,CAAC,UAAU,IAAI;QACvD,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,SAAS;QACrB,YAAY;QACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"render-context.js","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAQhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAqFrD,0EAA0E;AAC1E,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAe;IACnD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC;IACjD,MAAM,aAAa,GAAmB,IAAI,CAAC,UAAU,IAAI;QACvD,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,SAAS;QACrB,YAAY;QACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,kBAAkB,GAAG;QACzB,SAAS,EAAE,IAAI,CAAC,oBAAoB,IAAI,IAAI;QAC5C,SAAS,EAAE,IAAI,CAAC,uBAAuB,IAAI,EAAE;KAC9C,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,UAAU;QACrC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,IAAI,YAAY;QAC/D,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,QAAQ;QAC7C,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI;QACnD,YAAY;QACZ,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,EAAE;QACtC,UAAU,EAAE,aAAa;QACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,aAAa;QAC5D,cAAc,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,CAAC;KAC/F,CAAC;AACJ,CAAC"}
|
|
@@ -10,6 +10,13 @@ import type { RenderContext } from "../render-context.js";
|
|
|
10
10
|
* drop `@metaobjectsdev/runtime-ts` from their deps entirely. The client-side
|
|
11
11
|
* `<Entity>Filter` type is always emitted — consumers still want it for typed
|
|
12
12
|
* client calls regardless of how the server is wired.
|
|
13
|
+
*
|
|
14
|
+
* Whether the file emits ANY server runtime binding at all (Drizzle table/view,
|
|
15
|
+
* the allowlists) is governed by the TARGET, not this option: `ctx.selfTarget.runtime`.
|
|
16
|
+
* A contract-only target (`runtime: false`) renders every object as its plain
|
|
17
|
+
* shape (interface + Zod) and every projection as its read schema — no
|
|
18
|
+
* `drizzle-orm`, no `runtime-ts`. `allowlists` is a finer Fastify-vs-Hono opt-out
|
|
19
|
+
* that only matters within a runtime target.
|
|
13
20
|
*/
|
|
14
21
|
export interface RenderEntityFileOpts {
|
|
15
22
|
readonly allowlists?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-file.d.ts","sourceRoot":"","sources":["../../src/templates/entity-file.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAe1D
|
|
1
|
+
{"version":3,"file":"entity-file.d.ts","sourceRoot":"","sources":["../../src/templates/entity-file.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAe1D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,aAAa,EAClB,IAAI,CAAC,EAAE,oBAAoB,GAC1B,MAAM,CA0ER"}
|
|
@@ -20,7 +20,10 @@ import { hasWritableRdbSource } from "../source-detect.js";
|
|
|
20
20
|
import { renderValueObjectFile } from "./value-object-file.js";
|
|
21
21
|
import { isAbstract } from "../instance-artifacts.js";
|
|
22
22
|
export function renderEntityFile(entity, ctx, opts) {
|
|
23
|
-
|
|
23
|
+
// Contract-only target ⇒ no server runtime: no Drizzle pgView/pgTable, no
|
|
24
|
+
// runtime-ts allowlists. The read schema + inferred types still emit.
|
|
25
|
+
const runtime = ctx.selfTarget.runtime;
|
|
26
|
+
const allowlists = runtime ? (opts?.allowlists ?? true) : false;
|
|
24
27
|
// --- Abstract path (shape only) ---
|
|
25
28
|
// An abstract entity contributes shape via inheritance only — it must NEVER
|
|
26
29
|
// produce a Drizzle table / migration footprint / filter allowlist, even when
|
|
@@ -40,13 +43,19 @@ export function renderEntityFile(entity, ctx, opts) {
|
|
|
40
43
|
columnNamingStrategy: ctx.columnNamingStrategy,
|
|
41
44
|
dialect: ctx.dialect,
|
|
42
45
|
apiPrefix: ctx.apiPrefix,
|
|
46
|
+
timestampMode: ctx.timestampMode,
|
|
47
|
+
allowlists,
|
|
48
|
+
ctx,
|
|
49
|
+
// Contract target drops the Drizzle .existing() view decl + drizzle-orm import.
|
|
50
|
+
includeViewDecl: runtime,
|
|
43
51
|
});
|
|
44
52
|
}
|
|
45
|
-
// --- Value-only path (no
|
|
46
|
-
//
|
|
47
|
-
// the
|
|
48
|
-
//
|
|
49
|
-
|
|
53
|
+
// --- Value-only / contract path (no Drizzle table) ---
|
|
54
|
+
// Reached when the entity has no writable source.rdb (in-memory / transit
|
|
55
|
+
// shape) OR the target is contract-only (a UI/wire package gets the read shape,
|
|
56
|
+
// not a DB table). Either way: interface + Zod, no migration footprint, no
|
|
57
|
+
// drizzle-orm. Consumers validate via the Zod schema and type via the interface.
|
|
58
|
+
if (!runtime || !hasWritableRdbSource(entity)) {
|
|
50
59
|
return renderValueObjectFile(entity, ctx.apiPrefix, ctx);
|
|
51
60
|
}
|
|
52
61
|
// --- Vanilla / write-through entity path ---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-file.js","sourceRoot":"","sources":["../../src/templates/entity-file.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,0EAA0E;AAC1E,EAAE;AACF,YAAY;AACZ,oHAAoH;AACpH,mHAAmH;AACnH,4DAA4D;AAE5D,OAAO,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAG9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-file.js","sourceRoot":"","sources":["../../src/templates/entity-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,31 @@
|
|
|
1
1
|
import { MetaObject, type MetaRoot } from "@metaobjectsdev/metadata";
|
|
2
2
|
import type { ColumnNamingStrategy } from "../metaobjects-config.js";
|
|
3
|
+
import type { RenderContext } from "../render-context.js";
|
|
3
4
|
export interface ProjectionDeclOpts {
|
|
4
5
|
readonly columnNamingStrategy: ColumnNamingStrategy;
|
|
5
6
|
readonly dialect: "postgres" | "sqlite";
|
|
6
7
|
readonly apiPrefix?: string;
|
|
8
|
+
/** Drives the timestamp column TS type (Date vs string) in the view declaration. */
|
|
9
|
+
readonly timestampMode?: "date" | "string";
|
|
10
|
+
/**
|
|
11
|
+
* When false, omit the Fastify-flavored filter/sort allowlists (and their
|
|
12
|
+
* `runtime-ts` import) — mirrors entity-file's `allowlists` option so a
|
|
13
|
+
* dependency-free consumer (no runtime-ts) gets compilable output.
|
|
14
|
+
*/
|
|
15
|
+
readonly allowlists?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Render context, when available — used to resolve value-object import MODULES
|
|
18
|
+
* (`.$type<VO>()` + the VO Zod schema) in a layout/package/extStyle-aware way.
|
|
19
|
+
* Absent in bare unit-test calls, which fall back to a flat same-dir import.
|
|
20
|
+
*/
|
|
21
|
+
readonly ctx?: RenderContext;
|
|
22
|
+
/**
|
|
23
|
+
* Whether to emit the Drizzle `.existing()` view declaration (and its
|
|
24
|
+
* drizzle-orm import). Default true. Set false for a contract-only output
|
|
25
|
+
* (Zod read schema + inferred type + constants, no runtime DB dependency) —
|
|
26
|
+
* e.g. a shared types package consumed by a web client that has no Drizzle.
|
|
27
|
+
*/
|
|
28
|
+
readonly includeViewDecl?: boolean;
|
|
7
29
|
}
|
|
8
30
|
/**
|
|
9
31
|
* Render a TypeScript module for a projection entity. Emits:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection-decl.d.ts","sourceRoot":"","sources":["../../src/templates/projection-decl.ts"],"names":[],"mappings":"AAUA,OAAO,
|
|
1
|
+
{"version":3,"file":"projection-decl.d.ts","sourceRoot":"","sources":["../../src/templates/projection-decl.ts"],"names":[],"mappings":"AAUA,OAAO,EACM,UAAU,EAAE,KAAK,QAAQ,EAErC,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAW1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,kBAAkB,GACvB,MAAM,CA0IR"}
|
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
// - Zod Insert/Update schemas
|
|
8
8
|
// - Insert/Update types
|
|
9
9
|
import { code, imp, joinCode } from "ts-poet";
|
|
10
|
-
import { MetaField, MetaObject } from "@metaobjectsdev/metadata";
|
|
10
|
+
import { MetaField, MetaObject, FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, stripPackage, } from "@metaobjectsdev/metadata";
|
|
11
11
|
import { projectionViewName } from "../projection/extract-view-spec.js";
|
|
12
12
|
import { columnNameFromField, toSnakeCase, pluralize } from "../naming.js";
|
|
13
13
|
import { GENERATED_HEADER } from "../constants.js";
|
|
14
|
+
import { mapColumnType } from "../column-mapper.js";
|
|
15
|
+
import { valueObjectModuleSpecifier } from "../import-path.js";
|
|
14
16
|
import { renderFilterAllowlist, renderSortAllowlist } from "./filter-allowlist.js";
|
|
15
17
|
import { renderFilterType } from "./filter-type.js";
|
|
16
18
|
import { inferViewKind, zodTypeFor, currencyMetaFor, labelFor } from "./field-meta.js";
|
|
@@ -44,7 +46,19 @@ function pathFromProjectionName(name) {
|
|
|
44
46
|
* @param opts Column naming strategy + dialect.
|
|
45
47
|
*/
|
|
46
48
|
export function renderProjectionDecl(projection, root, opts) {
|
|
47
|
-
const { dialect, columnNamingStrategy, apiPrefix = "" } = opts;
|
|
49
|
+
const { dialect, columnNamingStrategy, apiPrefix = "", timestampMode = "string", allowlists = true, ctx, includeViewDecl = true } = opts;
|
|
50
|
+
// Resolve a value-object name → its import module. Layout/package/extStyle-aware
|
|
51
|
+
// when a render context is present (so the projection's VO imports match the
|
|
52
|
+
// entity's), else a flat same-dir import — identical to zodFieldExpr's fallback.
|
|
53
|
+
const voModule = (refBase) => ctx
|
|
54
|
+
? valueObjectModuleSpecifier(refBase, ctx.packageOf, projection.package, ctx.outputLayout, ctx.extStyle)
|
|
55
|
+
: `./${refBase}.js`;
|
|
56
|
+
const objectRefOf = (f) => {
|
|
57
|
+
if (f.subType !== FIELD_SUBTYPE_OBJECT)
|
|
58
|
+
return undefined;
|
|
59
|
+
const ref = f.attr(FIELD_ATTR_OBJECT_REF);
|
|
60
|
+
return typeof ref === "string" && ref.length > 0 ? stripPackage(ref) : undefined;
|
|
61
|
+
};
|
|
48
62
|
const viewFn = dialect === "postgres" ? "pgView" : "sqliteView";
|
|
49
63
|
const viewModule = dialect === "postgres" ? "drizzle-orm/pg-core" : "drizzle-orm/sqlite-core";
|
|
50
64
|
const viewSym = imp(`${viewFn}@${viewModule}`);
|
|
@@ -69,7 +83,43 @@ export function renderProjectionDecl(projection, root, opts) {
|
|
|
69
83
|
}
|
|
70
84
|
for (const f of projection.ownFields())
|
|
71
85
|
allFields.push(f);
|
|
72
|
-
|
|
86
|
+
// A field.object passthrough carries the value-object's Zod schema (so the
|
|
87
|
+
// view's read schema + inferred type expose the VO shape, not z.unknown()).
|
|
88
|
+
const zodLines = allFields.map((f) => {
|
|
89
|
+
const refBase = objectRefOf(f);
|
|
90
|
+
if (refBase) {
|
|
91
|
+
const schemaSym = imp(`${refBase}InsertSchema@${voModule(refBase)}`);
|
|
92
|
+
return f.isArray
|
|
93
|
+
? code ` ${f.name}: ${z}.array(${schemaSym})`
|
|
94
|
+
: code ` ${f.name}: ${schemaSym}`;
|
|
95
|
+
}
|
|
96
|
+
return code ` ${f.name}: ${z}.${zodTypeFor(f).replace(/^z\./, "")}`;
|
|
97
|
+
});
|
|
98
|
+
// Typed view column map for the Drizzle `.existing()` declaration — keyed by
|
|
99
|
+
// projection field name, valued by the column builder for the (renamed)
|
|
100
|
+
// physical view column, so `db.select().from(<view>)` is typed. Honors
|
|
101
|
+
// `@dbColumnType` (e.g. a passthrough of a jsonb column). `.existing()` views
|
|
102
|
+
// carry type + physical name only — no PK/default/notNull modifiers.
|
|
103
|
+
const viewColumnLines = allFields.map((f) => {
|
|
104
|
+
const spec = mapColumnType(f, dialect, columnNamingStrategy, timestampMode);
|
|
105
|
+
const colSym = imp(`${spec.fnName}@${spec.importModule}`);
|
|
106
|
+
const optsArg = spec.fnOptions && Object.keys(spec.fnOptions).length > 0
|
|
107
|
+
? `, ${JSON.stringify(spec.fnOptions)}`
|
|
108
|
+
: "";
|
|
109
|
+
// Of the table modifiers, only `.notNull()` carries to an existing view (it
|
|
110
|
+
// shapes the SELECT type); `.primaryKey()`/`.default()`/`.references()` are
|
|
111
|
+
// table-DDL concerns and invalid on a `.existing()` view declaration.
|
|
112
|
+
const notNull = spec.modifiers.includes(".notNull()") ? ".notNull()" : "";
|
|
113
|
+
// Narrow a jsonb passthrough to its value-object type — `.$type<VO>()` —
|
|
114
|
+
// mirroring the entity column, so the read row is typed (not `unknown`).
|
|
115
|
+
let dollarType = "";
|
|
116
|
+
const dtr = spec.dollarTypeRef;
|
|
117
|
+
if (dtr?.kind === "objectRef") {
|
|
118
|
+
const voTypeSym = imp(`${dtr.name}@${voModule(dtr.name)}`);
|
|
119
|
+
dollarType = dtr.array ? code `.$type<${voTypeSym}[]>()` : code `.$type<${voTypeSym}>()`;
|
|
120
|
+
}
|
|
121
|
+
return code ` ${f.name}: ${colSym}(${JSON.stringify(spec.dbName)}${optsArg})${dollarType}${notNull}`;
|
|
122
|
+
});
|
|
73
123
|
const constFieldLines = allFields.map((f) => {
|
|
74
124
|
const dbCol = columnNameFromField(f.name, columnNamingStrategy);
|
|
75
125
|
const view = inferViewKind(f);
|
|
@@ -85,12 +135,16 @@ export function renderProjectionDecl(projection, root, opts) {
|
|
|
85
135
|
const camelName = projName.charAt(0).toLowerCase() + projName.slice(1);
|
|
86
136
|
const path = pathFromProjectionName(projName);
|
|
87
137
|
const sections = [
|
|
88
|
-
|
|
138
|
+
...(includeViewDecl
|
|
139
|
+
? [code `
|
|
89
140
|
// View declaration — Drizzle uses this for typed SELECT queries.
|
|
90
141
|
// The SQL view is created/managed by migrate-ts; .existing() tells Drizzle
|
|
91
142
|
// not to attempt DDL for this declaration.
|
|
92
|
-
export const ${camelName}View = ${viewSym}(${JSON.stringify(viewName)}, {
|
|
93
|
-
|
|
143
|
+
export const ${camelName}View = ${viewSym}(${JSON.stringify(viewName)}, {
|
|
144
|
+
${joinCode(viewColumnLines, { on: ",\n" })}
|
|
145
|
+
}).existing();
|
|
146
|
+
`]
|
|
147
|
+
: []),
|
|
94
148
|
code `
|
|
95
149
|
export const ${projName}Schema = ${z}.object({
|
|
96
150
|
${joinCode(zodLines, { on: ",\n" })}
|
|
@@ -108,8 +162,9 @@ export const ${projName} = {
|
|
|
108
162
|
${constFieldLines.join("\n")}
|
|
109
163
|
} as const;
|
|
110
164
|
`,
|
|
111
|
-
|
|
112
|
-
|
|
165
|
+
...(allowlists
|
|
166
|
+
? [renderFilterAllowlist(projection), renderSortAllowlist(projection)]
|
|
167
|
+
: []),
|
|
113
168
|
renderFilterType(projection),
|
|
114
169
|
];
|
|
115
170
|
const body = joinCode(sections, { on: "\n" }).toString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection-decl.js","sourceRoot":"","sources":["../../src/templates/projection-decl.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,qEAAqE;AACrE,EAAE;AACF,uDAAuD;AACvD,oBAAoB;AACpB,4CAA4C;AAC5C,gCAAgC;AAChC,0BAA0B;AAE1B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"projection-decl.js","sourceRoot":"","sources":["../../src/templates/projection-decl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/codegen-ts",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.6-rc.1",
|
|
4
4
|
"description": "TypeScript codegen engine for MetaObjects — emits Drizzle, Zod, and Fastify artifacts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -111,8 +111,8 @@
|
|
|
111
111
|
"access": "public"
|
|
112
112
|
},
|
|
113
113
|
"dependencies": {
|
|
114
|
-
"@metaobjectsdev/metadata": "0.11.
|
|
115
|
-
"@metaobjectsdev/render": "0.11.
|
|
114
|
+
"@metaobjectsdev/metadata": "0.11.6-rc.1",
|
|
115
|
+
"@metaobjectsdev/render": "0.11.6-rc.1",
|
|
116
116
|
"@biomejs/js-api": "^0.7.0",
|
|
117
117
|
"@biomejs/wasm-nodejs": "^1.9.4",
|
|
118
118
|
"ts-poet": "^6.10.0"
|
|
@@ -123,9 +123,9 @@
|
|
|
123
123
|
},
|
|
124
124
|
"devDependencies": {
|
|
125
125
|
"@biomejs/biome": "^1.9.0",
|
|
126
|
-
"@metaobjectsdev/codegen-ts-react": "0.11.
|
|
127
|
-
"@metaobjectsdev/migrate-ts": "0.11.
|
|
128
|
-
"@metaobjectsdev/runtime-ts": "0.11.
|
|
126
|
+
"@metaobjectsdev/codegen-ts-react": "0.11.6-rc.1",
|
|
127
|
+
"@metaobjectsdev/migrate-ts": "0.11.6-rc.1",
|
|
128
|
+
"@metaobjectsdev/runtime-ts": "0.11.6-rc.1",
|
|
129
129
|
"bun-types": "latest",
|
|
130
130
|
"drizzle-orm": "^0.36.0",
|
|
131
131
|
"hono": "^4.6.0",
|
package/src/import-path.ts
CHANGED
|
@@ -118,6 +118,19 @@ export interface ResolvedTarget {
|
|
|
118
118
|
importBase: string | undefined;
|
|
119
119
|
outputLayout: OutputLayout;
|
|
120
120
|
dbImport: string;
|
|
121
|
+
/**
|
|
122
|
+
* Whether this target emits server runtime bindings. `true` (the default for
|
|
123
|
+
* the implicit "default" target) = a full server package: Drizzle tables/views,
|
|
124
|
+
* `runtime-ts` filter/sort allowlists, the whole DB layer. `false` = a
|
|
125
|
+
* contract-only target: Zod schemas + inferred TS types ONLY, with no
|
|
126
|
+
* `drizzle-orm` / `runtime-ts` import — for a shared wire-contract package
|
|
127
|
+
* consumed by a UI/web client that has no database. The axis is the target's
|
|
128
|
+
* AUDIENCE (server vs client), not any one artifact: in a contract target an
|
|
129
|
+
* entity drops its `pgTable`, a projection drops its `pgView`, every object
|
|
130
|
+
* renders as its plain shape. Allowlists are off here too (contract ⇒ no
|
|
131
|
+
* `runtime-ts`); the finer `allowlists` knob only applies within a runtime target.
|
|
132
|
+
*/
|
|
133
|
+
runtime: boolean;
|
|
121
134
|
}
|
|
122
135
|
|
|
123
136
|
/** importBase + (package path when package layout) + entity, extension-less. */
|
|
@@ -32,6 +32,14 @@ export interface TargetConfig {
|
|
|
32
32
|
importBase?: string;
|
|
33
33
|
outputLayout?: OutputLayout;
|
|
34
34
|
dbImport?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether this target emits server runtime bindings. Defaults to `true` (a full
|
|
37
|
+
* server package: Drizzle tables/views + the DB layer). Set `false` for a
|
|
38
|
+
* contract-only target — Zod schemas + inferred TS types only, no `drizzle-orm`
|
|
39
|
+
* / `runtime-ts` import — e.g. a shared wire-contract package consumed by a web
|
|
40
|
+
* client with no database. See {@link ResolvedTarget.runtime}.
|
|
41
|
+
*/
|
|
42
|
+
runtime?: boolean;
|
|
35
43
|
}
|
|
36
44
|
|
|
37
45
|
/** Subset of MetaobjectsGenConfig surfaced to generators via GenContext. */
|
|
@@ -195,6 +203,8 @@ export function resolveTargets(config: MetaobjectsGenConfig): Record<string, Res
|
|
|
195
203
|
importBase: config.importBase,
|
|
196
204
|
outputLayout: layout,
|
|
197
205
|
dbImport: config.dbImport,
|
|
206
|
+
// The default target is the server package — runtime bindings on.
|
|
207
|
+
runtime: true,
|
|
198
208
|
},
|
|
199
209
|
};
|
|
200
210
|
for (const [name, t] of Object.entries(config.targets ?? {})) {
|
|
@@ -204,6 +214,7 @@ export function resolveTargets(config: MetaobjectsGenConfig): Record<string, Res
|
|
|
204
214
|
importBase: t.importBase,
|
|
205
215
|
outputLayout: t.outputLayout ?? layout,
|
|
206
216
|
dbImport: t.dbImport ?? config.dbImport,
|
|
217
|
+
runtime: t.runtime ?? true,
|
|
207
218
|
};
|
|
208
219
|
}
|
|
209
220
|
return out;
|
package/src/render-context.ts
CHANGED
|
@@ -105,6 +105,7 @@ export function makeRenderContext(opts: RenderContextInput): RenderContext {
|
|
|
105
105
|
importBase: undefined,
|
|
106
106
|
outputLayout,
|
|
107
107
|
dbImport: opts.dbImport,
|
|
108
|
+
runtime: true,
|
|
108
109
|
};
|
|
109
110
|
const collectionNameOpts = {
|
|
110
111
|
pluralize: opts.pluralizeCollections ?? true,
|
|
@@ -33,6 +33,13 @@ import { isAbstract } from "../instance-artifacts.js";
|
|
|
33
33
|
* drop `@metaobjectsdev/runtime-ts` from their deps entirely. The client-side
|
|
34
34
|
* `<Entity>Filter` type is always emitted — consumers still want it for typed
|
|
35
35
|
* client calls regardless of how the server is wired.
|
|
36
|
+
*
|
|
37
|
+
* Whether the file emits ANY server runtime binding at all (Drizzle table/view,
|
|
38
|
+
* the allowlists) is governed by the TARGET, not this option: `ctx.selfTarget.runtime`.
|
|
39
|
+
* A contract-only target (`runtime: false`) renders every object as its plain
|
|
40
|
+
* shape (interface + Zod) and every projection as its read schema — no
|
|
41
|
+
* `drizzle-orm`, no `runtime-ts`. `allowlists` is a finer Fastify-vs-Hono opt-out
|
|
42
|
+
* that only matters within a runtime target.
|
|
36
43
|
*/
|
|
37
44
|
export interface RenderEntityFileOpts {
|
|
38
45
|
readonly allowlists?: boolean;
|
|
@@ -43,7 +50,10 @@ export function renderEntityFile(
|
|
|
43
50
|
ctx: RenderContext,
|
|
44
51
|
opts?: RenderEntityFileOpts,
|
|
45
52
|
): string {
|
|
46
|
-
|
|
53
|
+
// Contract-only target ⇒ no server runtime: no Drizzle pgView/pgTable, no
|
|
54
|
+
// runtime-ts allowlists. The read schema + inferred types still emit.
|
|
55
|
+
const runtime = ctx.selfTarget.runtime;
|
|
56
|
+
const allowlists = runtime ? (opts?.allowlists ?? true) : false;
|
|
47
57
|
|
|
48
58
|
// --- Abstract path (shape only) ---
|
|
49
59
|
// An abstract entity contributes shape via inheritance only — it must NEVER
|
|
@@ -65,14 +75,20 @@ export function renderEntityFile(
|
|
|
65
75
|
columnNamingStrategy: ctx.columnNamingStrategy,
|
|
66
76
|
dialect: ctx.dialect,
|
|
67
77
|
apiPrefix: ctx.apiPrefix,
|
|
78
|
+
timestampMode: ctx.timestampMode,
|
|
79
|
+
allowlists,
|
|
80
|
+
ctx,
|
|
81
|
+
// Contract target drops the Drizzle .existing() view decl + drizzle-orm import.
|
|
82
|
+
includeViewDecl: runtime,
|
|
68
83
|
});
|
|
69
84
|
}
|
|
70
85
|
|
|
71
|
-
// --- Value-only path (no
|
|
72
|
-
//
|
|
73
|
-
// the
|
|
74
|
-
//
|
|
75
|
-
|
|
86
|
+
// --- Value-only / contract path (no Drizzle table) ---
|
|
87
|
+
// Reached when the entity has no writable source.rdb (in-memory / transit
|
|
88
|
+
// shape) OR the target is contract-only (a UI/wire package gets the read shape,
|
|
89
|
+
// not a DB table). Either way: interface + Zod, no migration footprint, no
|
|
90
|
+
// drizzle-orm. Consumers validate via the Zod schema and type via the interface.
|
|
91
|
+
if (!runtime || !hasWritableRdbSource(entity)) {
|
|
76
92
|
return renderValueObjectFile(entity, ctx.apiPrefix, ctx);
|
|
77
93
|
}
|
|
78
94
|
|
|
@@ -8,11 +8,17 @@
|
|
|
8
8
|
// - Insert/Update types
|
|
9
9
|
|
|
10
10
|
import { code, imp, joinCode, type Code } from "ts-poet";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
MetaField, MetaObject, type MetaRoot,
|
|
13
|
+
FIELD_SUBTYPE_OBJECT, FIELD_ATTR_OBJECT_REF, stripPackage,
|
|
14
|
+
} from "@metaobjectsdev/metadata";
|
|
12
15
|
import { projectionViewName } from "../projection/extract-view-spec.js";
|
|
13
16
|
import { columnNameFromField, toSnakeCase, pluralize } from "../naming.js";
|
|
14
17
|
import { GENERATED_HEADER } from "../constants.js";
|
|
15
18
|
import type { ColumnNamingStrategy } from "../metaobjects-config.js";
|
|
19
|
+
import type { RenderContext } from "../render-context.js";
|
|
20
|
+
import { mapColumnType } from "../column-mapper.js";
|
|
21
|
+
import { valueObjectModuleSpecifier } from "../import-path.js";
|
|
16
22
|
import { renderFilterAllowlist, renderSortAllowlist } from "./filter-allowlist.js";
|
|
17
23
|
import { renderFilterType } from "./filter-type.js";
|
|
18
24
|
import { inferViewKind, zodTypeFor, currencyMetaFor, labelFor } from "./field-meta.js";
|
|
@@ -25,6 +31,27 @@ export interface ProjectionDeclOpts {
|
|
|
25
31
|
readonly columnNamingStrategy: ColumnNamingStrategy;
|
|
26
32
|
readonly dialect: "postgres" | "sqlite";
|
|
27
33
|
readonly apiPrefix?: string;
|
|
34
|
+
/** Drives the timestamp column TS type (Date vs string) in the view declaration. */
|
|
35
|
+
readonly timestampMode?: "date" | "string";
|
|
36
|
+
/**
|
|
37
|
+
* When false, omit the Fastify-flavored filter/sort allowlists (and their
|
|
38
|
+
* `runtime-ts` import) — mirrors entity-file's `allowlists` option so a
|
|
39
|
+
* dependency-free consumer (no runtime-ts) gets compilable output.
|
|
40
|
+
*/
|
|
41
|
+
readonly allowlists?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Render context, when available — used to resolve value-object import MODULES
|
|
44
|
+
* (`.$type<VO>()` + the VO Zod schema) in a layout/package/extStyle-aware way.
|
|
45
|
+
* Absent in bare unit-test calls, which fall back to a flat same-dir import.
|
|
46
|
+
*/
|
|
47
|
+
readonly ctx?: RenderContext;
|
|
48
|
+
/**
|
|
49
|
+
* Whether to emit the Drizzle `.existing()` view declaration (and its
|
|
50
|
+
* drizzle-orm import). Default true. Set false for a contract-only output
|
|
51
|
+
* (Zod read schema + inferred type + constants, no runtime DB dependency) —
|
|
52
|
+
* e.g. a shared types package consumed by a web client that has no Drizzle.
|
|
53
|
+
*/
|
|
54
|
+
readonly includeViewDecl?: boolean;
|
|
28
55
|
}
|
|
29
56
|
|
|
30
57
|
// ---------------------------------------------------------------------------
|
|
@@ -64,7 +91,20 @@ export function renderProjectionDecl(
|
|
|
64
91
|
root: MetaRoot,
|
|
65
92
|
opts: ProjectionDeclOpts,
|
|
66
93
|
): string {
|
|
67
|
-
const { dialect, columnNamingStrategy, apiPrefix = "" } = opts;
|
|
94
|
+
const { dialect, columnNamingStrategy, apiPrefix = "", timestampMode = "string", allowlists = true, ctx, includeViewDecl = true } = opts;
|
|
95
|
+
|
|
96
|
+
// Resolve a value-object name → its import module. Layout/package/extStyle-aware
|
|
97
|
+
// when a render context is present (so the projection's VO imports match the
|
|
98
|
+
// entity's), else a flat same-dir import — identical to zodFieldExpr's fallback.
|
|
99
|
+
const voModule = (refBase: string): string =>
|
|
100
|
+
ctx
|
|
101
|
+
? valueObjectModuleSpecifier(refBase, ctx.packageOf, projection.package, ctx.outputLayout, ctx.extStyle)
|
|
102
|
+
: `./${refBase}.js`;
|
|
103
|
+
const objectRefOf = (f: MetaField): string | undefined => {
|
|
104
|
+
if (f.subType !== FIELD_SUBTYPE_OBJECT) return undefined;
|
|
105
|
+
const ref = f.attr(FIELD_ATTR_OBJECT_REF);
|
|
106
|
+
return typeof ref === "string" && ref.length > 0 ? stripPackage(ref) : undefined;
|
|
107
|
+
};
|
|
68
108
|
|
|
69
109
|
const viewFn = dialect === "postgres" ? "pgView" : "sqliteView";
|
|
70
110
|
const viewModule =
|
|
@@ -93,9 +133,45 @@ export function renderProjectionDecl(
|
|
|
93
133
|
}
|
|
94
134
|
for (const f of projection.ownFields()) allFields.push(f);
|
|
95
135
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
)
|
|
136
|
+
// A field.object passthrough carries the value-object's Zod schema (so the
|
|
137
|
+
// view's read schema + inferred type expose the VO shape, not z.unknown()).
|
|
138
|
+
const zodLines: Code[] = allFields.map((f) => {
|
|
139
|
+
const refBase = objectRefOf(f);
|
|
140
|
+
if (refBase) {
|
|
141
|
+
const schemaSym = imp(`${refBase}InsertSchema@${voModule(refBase)}`);
|
|
142
|
+
return f.isArray
|
|
143
|
+
? code` ${f.name}: ${z}.array(${schemaSym})`
|
|
144
|
+
: code` ${f.name}: ${schemaSym}`;
|
|
145
|
+
}
|
|
146
|
+
return code` ${f.name}: ${z}.${zodTypeFor(f).replace(/^z\./, "")}`;
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// Typed view column map for the Drizzle `.existing()` declaration — keyed by
|
|
150
|
+
// projection field name, valued by the column builder for the (renamed)
|
|
151
|
+
// physical view column, so `db.select().from(<view>)` is typed. Honors
|
|
152
|
+
// `@dbColumnType` (e.g. a passthrough of a jsonb column). `.existing()` views
|
|
153
|
+
// carry type + physical name only — no PK/default/notNull modifiers.
|
|
154
|
+
const viewColumnLines: Code[] = allFields.map((f) => {
|
|
155
|
+
const spec = mapColumnType(f, dialect, columnNamingStrategy, timestampMode);
|
|
156
|
+
const colSym = imp(`${spec.fnName}@${spec.importModule}`);
|
|
157
|
+
const optsArg =
|
|
158
|
+
spec.fnOptions && Object.keys(spec.fnOptions).length > 0
|
|
159
|
+
? `, ${JSON.stringify(spec.fnOptions)}`
|
|
160
|
+
: "";
|
|
161
|
+
// Of the table modifiers, only `.notNull()` carries to an existing view (it
|
|
162
|
+
// shapes the SELECT type); `.primaryKey()`/`.default()`/`.references()` are
|
|
163
|
+
// table-DDL concerns and invalid on a `.existing()` view declaration.
|
|
164
|
+
const notNull = spec.modifiers.includes(".notNull()") ? ".notNull()" : "";
|
|
165
|
+
// Narrow a jsonb passthrough to its value-object type — `.$type<VO>()` —
|
|
166
|
+
// mirroring the entity column, so the read row is typed (not `unknown`).
|
|
167
|
+
let dollarType: Code | string = "";
|
|
168
|
+
const dtr = spec.dollarTypeRef;
|
|
169
|
+
if (dtr?.kind === "objectRef") {
|
|
170
|
+
const voTypeSym = imp(`${dtr.name}@${voModule(dtr.name)}`);
|
|
171
|
+
dollarType = dtr.array ? code`.$type<${voTypeSym}[]>()` : code`.$type<${voTypeSym}>()`;
|
|
172
|
+
}
|
|
173
|
+
return code` ${f.name}: ${colSym}(${JSON.stringify(spec.dbName)}${optsArg})${dollarType}${notNull}`;
|
|
174
|
+
});
|
|
99
175
|
|
|
100
176
|
const constFieldLines: string[] = allFields.map((f) => {
|
|
101
177
|
const dbCol = columnNameFromField(f.name, columnNamingStrategy);
|
|
@@ -114,12 +190,16 @@ export function renderProjectionDecl(
|
|
|
114
190
|
const path = pathFromProjectionName(projName);
|
|
115
191
|
|
|
116
192
|
const sections: Code[] = [
|
|
117
|
-
|
|
193
|
+
...(includeViewDecl
|
|
194
|
+
? [code`
|
|
118
195
|
// View declaration — Drizzle uses this for typed SELECT queries.
|
|
119
196
|
// The SQL view is created/managed by migrate-ts; .existing() tells Drizzle
|
|
120
197
|
// not to attempt DDL for this declaration.
|
|
121
|
-
export const ${camelName}View = ${viewSym}(${JSON.stringify(viewName)}, {
|
|
122
|
-
|
|
198
|
+
export const ${camelName}View = ${viewSym}(${JSON.stringify(viewName)}, {
|
|
199
|
+
${joinCode(viewColumnLines, { on: ",\n" })}
|
|
200
|
+
}).existing();
|
|
201
|
+
`]
|
|
202
|
+
: []),
|
|
123
203
|
code`
|
|
124
204
|
export const ${projName}Schema = ${z}.object({
|
|
125
205
|
${joinCode(zodLines, { on: ",\n" })}
|
|
@@ -137,8 +217,9 @@ export const ${projName} = {
|
|
|
137
217
|
${constFieldLines.join("\n")}
|
|
138
218
|
} as const;
|
|
139
219
|
`,
|
|
140
|
-
|
|
141
|
-
|
|
220
|
+
...(allowlists
|
|
221
|
+
? [renderFilterAllowlist(projection), renderSortAllowlist(projection)]
|
|
222
|
+
: []),
|
|
142
223
|
renderFilterType(projection),
|
|
143
224
|
];
|
|
144
225
|
|