@metaobjectsdev/codegen-ts 0.19.3-rc.1 → 0.20.0-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/enum-import.d.ts.map +1 -1
- package/dist/enum-import.js +3 -3
- package/dist/enum-import.js.map +1 -1
- package/dist/import-path.d.ts +6 -5
- package/dist/import-path.d.ts.map +1 -1
- package/dist/import-path.js +17 -14
- package/dist/import-path.js.map +1 -1
- package/dist/render-context.d.ts +18 -7
- package/dist/render-context.d.ts.map +1 -1
- package/dist/render-context.js +20 -2
- package/dist/render-context.js.map +1 -1
- package/dist/templates/routes-file.js +2 -2
- package/dist/templates/routes-file.js.map +1 -1
- package/package.json +6 -6
- package/src/enum-import.ts +3 -3
- package/src/import-path.ts +17 -11
- package/src/reference/barrel.ts +1 -1
- package/src/reference/entity.ts +1 -1
- package/src/reference/queries.ts +1 -1
- package/src/reference/routes.ts +1 -1
- package/src/render-context.ts +26 -8
- package/src/templates/routes-file.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum-import.d.ts","sourceRoot":"","sources":["../src/enum-import.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"enum-import.d.ts","sourceRoot":"","sources":["../src/enum-import.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUxF"}
|
package/dist/enum-import.js
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
// • @provided → from the per-port-configured module
|
|
7
7
|
// (`ctx.providedEnumModule`). Missing config ⇒ a codegen-time error naming
|
|
8
8
|
// the enum + the config key (ADR-0026: namespace is config, not metadata).
|
|
9
|
-
import { withExt } from "./render-context.js";
|
|
10
9
|
import { relativeModuleSpecifier } from "./import-path.js";
|
|
11
10
|
import { SHARED_ENUMS_BASENAME } from "./templates/enums-file.js";
|
|
12
11
|
/**
|
|
@@ -16,8 +15,9 @@ import { SHARED_ENUMS_BASENAME } from "./templates/enums-file.js";
|
|
|
16
15
|
* package depth.
|
|
17
16
|
*/
|
|
18
17
|
export function sharedEnumImportSpecifier(ctx, entityPkg) {
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
// relativeModuleSpecifier adjusts `./enums` for the entity's package depth AND
|
|
19
|
+
// applies the extension style (`.js` under nodenext), so pass the bare base.
|
|
20
|
+
return relativeModuleSpecifier(ctx.selfTarget.outputLayout, entityPkg, `./${SHARED_ENUMS_BASENAME}`, ctx.extStyle);
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Specifier to import an externally-PROVIDED enum. Resolved from codegen config
|
package/dist/enum-import.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum-import.js","sourceRoot":"","sources":["../src/enum-import.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,+EAA+E;AAC/E,+EAA+E;
|
|
1
|
+
{"version":3,"file":"enum-import.js","sourceRoot":"","sources":["../src/enum-import.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,+EAA+E;AAC/E,+EAA+E;AAG/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAkB,EAClB,SAA6B;IAE7B,+EAA+E;IAC/E,6EAA6E;IAC7E,OAAO,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,qBAAqB,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAkB,EAAE,QAAgB;IAC9E,MAAM,GAAG,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACnC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,oDAAoD;YAC9E,2EAA2E;YAC3E,+EAA+E,QAAQ,IAAI,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/import-path.d.ts
CHANGED
|
@@ -29,11 +29,12 @@ export declare function valueObjectModuleSpecifier(voName: string, packageOf: Re
|
|
|
29
29
|
* Equivalent to crossEntitySpecifier with fromPkg=undefined (barrel is always at root). */
|
|
30
30
|
export declare function barrelEntrySpecifier(layout: OutputLayout, pkg: string | undefined, entity: string, extStyle: ExtStyle): string;
|
|
31
31
|
/** A `dbImport` (or any module specifier) adjusted for a file at the given
|
|
32
|
-
* package depth. A non-relative specifier (alias /
|
|
33
|
-
* and returned unchanged; a relative
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
|
|
32
|
+
* package depth AND the extension style. A non-relative specifier (alias /
|
|
33
|
+
* package) is depth- and extension-invariant and returned unchanged; a relative
|
|
34
|
+
* one gets extra "../" per package segment and, under extStyle "js", a `.js`
|
|
35
|
+
* extension (so `../db` → `../db.js`, required by nodenext). Caller contract: a
|
|
36
|
+
* relative moduleSpec must be relative to outDir root (as dbImport is). */
|
|
37
|
+
export declare function relativeModuleSpecifier(layout: OutputLayout, pkg: string | undefined, moduleSpec: string, extStyle: ExtStyle): string;
|
|
37
38
|
/** A fully-resolved output destination. Import-identity belongs to the
|
|
38
39
|
* destination, not the generator. */
|
|
39
40
|
export interface ResolvedTarget {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-path.d.ts","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"import-path.d.ts","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"AAOA,OAAO,EAA8B,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEhF,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;;;;;4EAK4E;AAC5E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAaR;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
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// docs/superpowers/specs/2026-05-18-phase4d-package-output-placement-design.md.
|
|
5
5
|
import { relative as posixRelative } from "node:path/posix";
|
|
6
6
|
import { PACKAGE_SEPARATOR } from "@metaobjectsdev/metadata";
|
|
7
|
-
import { withExt } from "./render-context.js";
|
|
7
|
+
import { withExt, withExtIfRelative } from "./render-context.js";
|
|
8
8
|
/** "a::b::c" → "a/b/c"; undefined / "" → "". */
|
|
9
9
|
export function packageToPath(pkg) {
|
|
10
10
|
if (pkg === undefined || pkg === "")
|
|
@@ -63,22 +63,25 @@ export function barrelEntrySpecifier(layout, pkg, entity, extStyle) {
|
|
|
63
63
|
return crossEntitySpecifier(layout, undefined, pkg, entity, extStyle);
|
|
64
64
|
}
|
|
65
65
|
/** A `dbImport` (or any module specifier) adjusted for a file at the given
|
|
66
|
-
* package depth. A non-relative specifier (alias /
|
|
67
|
-
* and returned unchanged; a relative
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return moduleSpec;
|
|
66
|
+
* package depth AND the extension style. A non-relative specifier (alias /
|
|
67
|
+
* package) is depth- and extension-invariant and returned unchanged; a relative
|
|
68
|
+
* one gets extra "../" per package segment and, under extStyle "js", a `.js`
|
|
69
|
+
* extension (so `../db` → `../db.js`, required by nodenext). Caller contract: a
|
|
70
|
+
* relative moduleSpec must be relative to outDir root (as dbImport is). */
|
|
71
|
+
export function relativeModuleSpecifier(layout, pkg, moduleSpec, extStyle) {
|
|
73
72
|
const isRelative = moduleSpec.startsWith("./") || moduleSpec.startsWith("../");
|
|
74
73
|
if (!isRelative)
|
|
75
74
|
return moduleSpec;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
75
|
+
let spec = moduleSpec;
|
|
76
|
+
if (layout !== "flat") {
|
|
77
|
+
const dir = packageToPath(pkg);
|
|
78
|
+
const depth = dir === "" ? 0 : dir.split("/").length;
|
|
79
|
+
if (depth > 0) {
|
|
80
|
+
const extra = "../".repeat(depth);
|
|
81
|
+
spec = moduleSpec.startsWith("./") ? extra + moduleSpec.slice(2) : extra + moduleSpec;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return withExtIfRelative(spec, extStyle);
|
|
82
85
|
}
|
|
83
86
|
/** importBase + (package path when package layout) + entity, extension-less. */
|
|
84
87
|
function crossTargetEntityPath(entityTarget, entityPkg, entityName) {
|
package/dist/import-path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-path.js","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,uEAAuE;AACvE,gCAAgC;AAChC,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAiB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"import-path.js","sourceRoot":"","sources":["../src/import-path.ts"],"names":[],"mappings":"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"}
|
package/dist/render-context.d.ts
CHANGED
|
@@ -5,12 +5,14 @@ import type { RelationMap } from "./relation-resolver.js";
|
|
|
5
5
|
import type { ColumnNamingStrategy } from "./metaobjects-config.js";
|
|
6
6
|
import type { OutputLayout, ResolvedTarget } from "./import-path.js";
|
|
7
7
|
/**
|
|
8
|
-
* How to format
|
|
9
|
-
* - "
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* How to format relative import specifiers in generated files.
|
|
9
|
+
* - "js" → emit `"./Foo.js"`. **Default.** Required by Node ESM strict + TS
|
|
10
|
+
* NodeNext/node16, and also accepted by moduleResolution
|
|
11
|
+
* "bundler"/"node", tsx, drizzle-kit's TS loader, Vite, and esbuild —
|
|
12
|
+
* so it is the strictly-more-compatible default (a stock `tsc --init`
|
|
13
|
+
* defaults to nodenext, under which un-extensioned imports fail TS2835).
|
|
14
|
+
* - "none" → emit `"./Foo"`. Opt out via `codegen.extStyle = "none"` when your
|
|
15
|
+
* toolchain forbids `.js` specifiers (rare — most bundlers accept both).
|
|
14
16
|
*/
|
|
15
17
|
export type ExtStyle = "js" | "none";
|
|
16
18
|
export interface RenderContext {
|
|
@@ -84,8 +86,17 @@ export type RenderContextInput = Omit<RenderContext, "extStyle" | "omImport" | "
|
|
|
84
86
|
/** Per-entity exact collection-var-name overrides, keyed by bare entity name. */
|
|
85
87
|
collectionNameOverrides?: Record<string, string>;
|
|
86
88
|
};
|
|
87
|
-
/** Append the configured extension to a cross-entity module specifier
|
|
89
|
+
/** Append the configured extension to a cross-entity module specifier (which is
|
|
90
|
+
* always a bare, extension-less relative path like `./Foo`). */
|
|
88
91
|
export declare function withExt(spec: string, style: ExtStyle): string;
|
|
92
|
+
/**
|
|
93
|
+
* Apply the extension style to a possibly-user-supplied module specifier
|
|
94
|
+
* (`dbImport`, `providedEnumModule`, …). Unlike {@link withExt}, this only touches
|
|
95
|
+
* RELATIVE specifiers and never double-appends: a bare package/alias specifier
|
|
96
|
+
* (`@acme/db`, `~/server/db`) is depth- and extension-invariant, and a specifier
|
|
97
|
+
* the author already extensioned (`../db.js`) is left as-is.
|
|
98
|
+
*/
|
|
99
|
+
export declare function withExtIfRelative(spec: string, style: ExtStyle): string;
|
|
89
100
|
/** Thin factory; applies sensible defaults for fields the caller may omit. */
|
|
90
101
|
export declare function makeRenderContext(opts: RenderContextInput): RenderContext;
|
|
91
102
|
//# sourceMappingURL=render-context.d.ts.map
|
|
@@ -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
|
|
1
|
+
{"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"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"}
|
package/dist/render-context.js
CHANGED
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
// RenderContext — cross-cutting state passed to every template.
|
|
2
2
|
import { variableNameFromEntity } from "./naming.js";
|
|
3
|
-
/** Append the configured extension to a cross-entity module specifier
|
|
3
|
+
/** Append the configured extension to a cross-entity module specifier (which is
|
|
4
|
+
* always a bare, extension-less relative path like `./Foo`). */
|
|
4
5
|
export function withExt(spec, style) {
|
|
5
6
|
return style === "js" ? `${spec}.js` : spec;
|
|
6
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* Apply the extension style to a possibly-user-supplied module specifier
|
|
10
|
+
* (`dbImport`, `providedEnumModule`, …). Unlike {@link withExt}, this only touches
|
|
11
|
+
* RELATIVE specifiers and never double-appends: a bare package/alias specifier
|
|
12
|
+
* (`@acme/db`, `~/server/db`) is depth- and extension-invariant, and a specifier
|
|
13
|
+
* the author already extensioned (`../db.js`) is left as-is.
|
|
14
|
+
*/
|
|
15
|
+
export function withExtIfRelative(spec, style) {
|
|
16
|
+
if (style !== "js")
|
|
17
|
+
return spec;
|
|
18
|
+
const isRelative = spec.startsWith("./") || spec.startsWith("../");
|
|
19
|
+
if (!isRelative)
|
|
20
|
+
return spec;
|
|
21
|
+
if (/\.(js|jsx|mjs|cjs|ts|tsx|json)$/.test(spec))
|
|
22
|
+
return spec;
|
|
23
|
+
return `${spec}.js`;
|
|
24
|
+
}
|
|
7
25
|
/** Thin factory; applies sensible defaults for fields the caller may omit. */
|
|
8
26
|
export function makeRenderContext(opts) {
|
|
9
27
|
const outputLayout = opts.outputLayout ?? "flat";
|
|
@@ -21,7 +39,7 @@ export function makeRenderContext(opts) {
|
|
|
21
39
|
};
|
|
22
40
|
return {
|
|
23
41
|
...opts,
|
|
24
|
-
extStyle: opts.extStyle ?? "
|
|
42
|
+
extStyle: opts.extStyle ?? "js",
|
|
25
43
|
omImport: opts.omImport ?? "../index",
|
|
26
44
|
columnNamingStrategy: opts.columnNamingStrategy ?? "snake_case",
|
|
27
45
|
timestampMode: opts.timestampMode ?? "string",
|
|
@@ -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;
|
|
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;AAuFrD;iEACiE;AACjE,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;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,KAAe;IAC7D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,GAAG,IAAI,KAAK,CAAC;AACtB,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,IAAI;QAC/B,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"}
|
|
@@ -35,7 +35,7 @@ export function renderRoutesFile(entity, ctx) {
|
|
|
35
35
|
// Import the entity's own file. Same target → relative "./Entity"; cross
|
|
36
36
|
// target → importBase-qualified package path.
|
|
37
37
|
const entityFileSpec = entityModuleSpecifier(ctx.selfTarget, ctx.entityModuleTarget, entity.package, entityName, ctx.extStyle);
|
|
38
|
-
const dbImportSpec = relativeModuleSpecifier(ctx.outputLayout, entity.package, ctx.dbImport);
|
|
38
|
+
const dbImportSpec = relativeModuleSpecifier(ctx.outputLayout, entity.package, ctx.dbImport, ctx.extStyle);
|
|
39
39
|
const header = `// ${GENERATED_HEADER} — DO NOT EDIT.\n` +
|
|
40
40
|
`// Source metadata: ${entityName} (${entity.fqn()})\n` +
|
|
41
41
|
`// Customize via ${entityName}.extra.ts in this directory (e.g., auth, additional handlers).\n`;
|
|
@@ -266,7 +266,7 @@ function renderTphRoutesFile(base, ctx) {
|
|
|
266
266
|
const discField = plan.discriminatorField;
|
|
267
267
|
const tableVar = ctx.collectionName(baseName);
|
|
268
268
|
const baseFileSpec = entityModuleSpecifier(ctx.selfTarget, ctx.entityModuleTarget, base.package, baseName, ctx.extStyle);
|
|
269
|
-
const dbImportSpec = relativeModuleSpecifier(ctx.outputLayout, base.package, ctx.dbImport);
|
|
269
|
+
const dbImportSpec = relativeModuleSpecifier(ctx.outputLayout, base.package, ctx.dbImport, ctx.extStyle);
|
|
270
270
|
const FastifyInstanceSym = imp("t:FastifyInstance@fastify");
|
|
271
271
|
const mountCrudRoutesSym = imp("mountCrudRoutes@@metaobjectsdev/runtime-ts/drizzle-fastify");
|
|
272
272
|
const dbSym = imp(`db@${dbImportSpec}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-file.js","sourceRoot":"","sources":["../../src/templates/routes-file.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,EAAE;AACF,kBAAkB;AAClB,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,uBAAuB;AACvB,8DAA8D;AAC9D,mEAAmE;AACnE,2EAA2E;AAC3E,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAE7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAsB,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,GAAkB;IACrE,8EAA8E;IAC9E,kEAAkE;IAClE,wEAAwE;IACxE,gDAAgD;IAChD,IAAI,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAC/B,MAAM,WAAW,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAClD,yEAAyE;IACzE,8CAA8C;IAC9C,MAAM,cAAc,GAAG,qBAAqB,CAC1C,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,kBAAkB,EACtB,MAAM,CAAC,OAAO,EACd,UAAU,EACV,GAAG,CAAC,QAAQ,CACb,CAAC;IACF,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"routes-file.js","sourceRoot":"","sources":["../../src/templates/routes-file.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,EAAE;AACF,kBAAkB;AAClB,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,uBAAuB;AACvB,8DAA8D;AAC9D,mEAAmE;AACnE,2EAA2E;AAC3E,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAE7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAsB,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,GAAkB;IACrE,8EAA8E;IAC9E,kEAAkE;IAClE,wEAAwE;IACxE,gDAAgD;IAChD,IAAI,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAC/B,MAAM,WAAW,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAClD,yEAAyE;IACzE,8CAA8C;IAC9C,MAAM,cAAc,GAAG,qBAAqB,CAC1C,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,kBAAkB,EACtB,MAAM,CAAC,OAAO,EACd,UAAU,EACV,GAAG,CAAC,QAAQ,CACb,CAAC;IACF,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE3G,MAAM,MAAM,GACV,MAAM,gBAAgB,mBAAmB;QACzC,uBAAuB,UAAU,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK;QACvD,oBAAoB,UAAU,kEAAkE,CAAC;IAEnG,iEAAiE;IACjE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC5D,MAAM,0BAA0B,GAAG,GAAG,CACpC,oEAAoE,CACrE,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAA;qBACV,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;IAE7C,UAAU;IACV,SAAS;IACT,UAAU;IACV,UAAU;SACL,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;CACtC,CAAC;QAEE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS;YACxB,CAAC,CAAC,IAAI,CAAA;;wCAE4B,UAAU;;;;;;wBAM1B,WAAW,aAAa,kBAAkB;;MAE5D,0BAA0B;;cAElB,UAAU;;cAEV,SAAS;yBACE,UAAU;uBACZ,UAAU;iBAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;iBAE3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;CAE7C;YACK,CAAC,CAAC,IAAI,CAAA;;wCAE4B,UAAU;;;;;;wBAM1B,WAAW,aAAa,kBAAkB;IAC9D,0BAA0B;;YAElB,UAAU;;YAEV,SAAS;uBACE,UAAU;qBACZ,UAAU;eAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;;CAGzC,CAAC;QAEE,OAAO,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9D,CAAC;IAED,gEAAgE;IAChE,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAEhD,+EAA+E;IAC/E,iFAAiF;IACjF,gFAAgF;IAChF,kFAAkF;IAClF,uFAAuF;IACvF,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,oBAAoB,GAAG,YAAY,CAAC,CAAC,CAAC,qBAAqB,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjF,MAAM,kBAAkB,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAE7F,0EAA0E;IAC1E,8EAA8E;IAC9E,+EAA+E;IAC/E,4EAA4E;IAC5E,+CAA+C;IAC/C,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC/D,CAAC,CAAC,EAAmD,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CACvF,CAAC;IACF,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,IAAI,CAAA;qBACR,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;IAE7C,UAAU;IACV,QAAQ,IAAI,cAAc;IAC1B,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;SACL,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;CACtC,CAAC;IAEA,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS;QACxB,CAAC,CAAC,IAAI,CAAA;;6CAEmC,UAAU;;;;;;;wBAO/B,WAAW,aAAa,kBAAkB;;MAE5D,kBAAkB;;cAEV,UAAU;;eAET,QAAQ,IAAI,oBAAoB;sBACzB,UAAU;sBACV,UAAU;yBACP,UAAU;uBACZ,UAAU;iBAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;EAE1C,iBAAiB,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;CAEjE;QACG,CAAC,CAAC,IAAI,CAAA;;6CAEmC,UAAU;;;;;;;wBAO/B,WAAW,aAAa,kBAAkB;IAC9D,kBAAkB;;YAEV,UAAU;;aAET,QAAQ,IAAI,gBAAgB;oBACrB,UAAU;oBACV,UAAU;uBACP,UAAU;qBACZ,UAAU;eAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;EAExC,aAAa;CACd,CAAC;IAEA,OAAO,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CACtB,OAAkE,EAClE,MAAkB,EAClB,GAAkB,EAClB,UAAkB;IAElB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAA,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;CAC1D,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,KAAiD,EACjD,MAAkB,EAClB,GAAkB,EAClB,UAAkB;IAElB,MAAM,cAAc,GAAG,GAAG,CACxB,GAAG,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,oBAAoB,CACjE,GAAG,CAAC,YAAY,EAChB,MAAM,CAAC,OAAO,EACd,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,EACvC,KAAK,CAAC,cAAc,EACpB,GAAG,CAAC,QAAQ,CACb,EAAE,CACJ,CAAC;IACF,MAAM,YAAY,GAAG,GAAG,CACtB,GAAG,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,oBAAoB,CAC/D,GAAG,CAAC,YAAY,EAChB,MAAM,CAAC,OAAO,EACd,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EACrC,KAAK,CAAC,YAAY,EAClB,GAAG,CAAC,QAAQ,CACb,EAAE,CACJ,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,eAAgB,EAAE,GAAG,CAAC;QAC9D,CAAC,CAAC,KAAK,CAAC,eAAgB,CAAC;IAC3B,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,eAAgB,EAAE,GAAG,CAAC;QAC9D,CAAC,CAAC,KAAK,CAAC,eAAgB,CAAC;IAC3B,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,SAAS,IAAI,IAAI,EAAE,GAAG,CAAC;QAC1F,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,IAAI,CAAA,KAAK,gBAAgB;eACnB,UAAU;YACb,MAAM,CAAC,IAAI;oBACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;qBAEzB,cAAc;mBAChB,YAAY;oBACX,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;oBAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;sBAC1B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;iBACnC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;MAC7C,CAAC;AACP,CAAC;AAED,iFAAiF;AACjF,SAAS,qBAAqB,CAAC,MAAkB,EAAE,SAAiB,EAAE,GAAkB;IACtF,0EAA0E;IAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC3F,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,mBAAmB,CAAC,IAAgB,EAAE,GAAkB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAChD,kFAAkF;IAClF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAG,qBAAqB,CACxC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAC7E,CAAC;IACF,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEzG,MAAM,kBAAkB,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,QAAQ,gBAAgB,YAAY,EAAE,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,QAAQ,gBAAgB,YAAY,EAAE,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,QAAQ,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,QAAQ,iBAAiB,YAAY,EAAE,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,IAAI,CAAA;MACpB,kBAAkB;iBACP,UAAU;cACb,YAAY;YACd,KAAK;eACF,QAAQ;sBACD,aAAa;sBACb,aAAa;yBACV,aAAa;uBACf,WAAW;iBACjB,UAAU;;QAEnB,CAAC;IAEP,MAAM,aAAa,GAAW,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;QAChG,MAAM,WAAW,GAAG,qBAAqB,CACvC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAC5E,CAAC;QACF,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,gBAAgB,WAAW,EAAE,CAAC,CAAC;QACnE,6EAA6E;QAC7E,8EAA8E;QAC9E,qEAAqE;QACrE,kFAAkF;QAClF,iFAAiF;QACjF,yEAAyE;QACzE,kFAAkF;QAClF,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,gBAAgB,WAAW,EAAE,CAAC,CAAC;QACnE,oEAAoE;QACpE,uDAAuD;QACvD,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,mBAAmB,WAAW,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,iBAAiB,WAAW,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAA;MACT,kBAAkB;iBACP,UAAU;cACb,YAAY,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;YACvD,KAAK;eACF,QAAQ;sBACD,YAAY,WAAW,SAAS;sBAChC,YAAY;yBACT,YAAY;uBACd,UAAU;iBAChB,UAAU;iCACM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACnF,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvE,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS;QACtB,CAAC,CAAC,IAAI,CAAA;;4DAEkD,QAAQ;;SAE3D,QAAQ;MACX,QAAQ;;wBAEU,WAAW,aAAa,kBAAkB;;EAEhE,MAAM;iBACS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;CAE7C;QACG,CAAC,CAAC,IAAI,CAAA;;4DAEkD,QAAQ;;SAE3D,QAAQ;MACX,QAAQ;;wBAEU,WAAW,aAAa,kBAAkB;EAChE,MAAM;;CAEP,CAAC;IAEA,MAAM,MAAM,GACV,MAAM,gBAAgB,mBAAmB;QACzC,uBAAuB,QAAQ,KAAK,IAAI,CAAC,GAAG,EAAE,8BAA8B;QAC5E,oBAAoB,QAAQ,kEAAkE,CAAC;IACjG,OAAO,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/codegen-ts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0-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.
|
|
115
|
-
"@metaobjectsdev/render": "0.
|
|
114
|
+
"@metaobjectsdev/metadata": "0.20.0-rc.1",
|
|
115
|
+
"@metaobjectsdev/render": "0.20.0-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.
|
|
127
|
-
"@metaobjectsdev/migrate-ts": "0.
|
|
128
|
-
"@metaobjectsdev/runtime-ts": "0.
|
|
126
|
+
"@metaobjectsdev/codegen-ts-react": "0.20.0-rc.1",
|
|
127
|
+
"@metaobjectsdev/migrate-ts": "0.20.0-rc.1",
|
|
128
|
+
"@metaobjectsdev/runtime-ts": "0.20.0-rc.1",
|
|
129
129
|
"bun-types": "latest",
|
|
130
130
|
"drizzle-orm": "^0.36.0",
|
|
131
131
|
"hono": "^4.6.0",
|
package/src/enum-import.ts
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
// (`ctx.providedEnumModule`). Missing config ⇒ a codegen-time error naming
|
|
8
8
|
// the enum + the config key (ADR-0026: namespace is config, not metadata).
|
|
9
9
|
|
|
10
|
-
import { withExt } from "./render-context.js";
|
|
11
10
|
import type { RenderContext } from "./render-context.js";
|
|
12
11
|
import { relativeModuleSpecifier } from "./import-path.js";
|
|
13
12
|
import { SHARED_ENUMS_BASENAME } from "./templates/enums-file.js";
|
|
@@ -22,8 +21,9 @@ export function sharedEnumImportSpecifier(
|
|
|
22
21
|
ctx: RenderContext,
|
|
23
22
|
entityPkg: string | undefined,
|
|
24
23
|
): string {
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
// relativeModuleSpecifier adjusts `./enums` for the entity's package depth AND
|
|
25
|
+
// applies the extension style (`.js` under nodenext), so pass the bare base.
|
|
26
|
+
return relativeModuleSpecifier(ctx.selfTarget.outputLayout, entityPkg, `./${SHARED_ENUMS_BASENAME}`, ctx.extStyle);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
package/src/import-path.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { relative as posixRelative } from "node:path/posix";
|
|
7
7
|
import { PACKAGE_SEPARATOR } from "@metaobjectsdev/metadata";
|
|
8
|
-
import { withExt, type ExtStyle } from "./render-context.js";
|
|
8
|
+
import { withExt, withExtIfRelative, type ExtStyle } from "./render-context.js";
|
|
9
9
|
|
|
10
10
|
export type OutputLayout = "flat" | "package";
|
|
11
11
|
|
|
@@ -89,23 +89,29 @@ export function barrelEntrySpecifier(
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/** A `dbImport` (or any module specifier) adjusted for a file at the given
|
|
92
|
-
* package depth. A non-relative specifier (alias /
|
|
93
|
-
* and returned unchanged; a relative
|
|
94
|
-
*
|
|
95
|
-
*
|
|
92
|
+
* package depth AND the extension style. A non-relative specifier (alias /
|
|
93
|
+
* package) is depth- and extension-invariant and returned unchanged; a relative
|
|
94
|
+
* one gets extra "../" per package segment and, under extStyle "js", a `.js`
|
|
95
|
+
* extension (so `../db` → `../db.js`, required by nodenext). Caller contract: a
|
|
96
|
+
* relative moduleSpec must be relative to outDir root (as dbImport is). */
|
|
96
97
|
export function relativeModuleSpecifier(
|
|
97
98
|
layout: OutputLayout,
|
|
98
99
|
pkg: string | undefined,
|
|
99
100
|
moduleSpec: string,
|
|
101
|
+
extStyle: ExtStyle,
|
|
100
102
|
): string {
|
|
101
|
-
if (layout === "flat") return moduleSpec;
|
|
102
103
|
const isRelative = moduleSpec.startsWith("./") || moduleSpec.startsWith("../");
|
|
103
104
|
if (!isRelative) return moduleSpec;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
let spec = moduleSpec;
|
|
106
|
+
if (layout !== "flat") {
|
|
107
|
+
const dir = packageToPath(pkg);
|
|
108
|
+
const depth = dir === "" ? 0 : dir.split("/").length;
|
|
109
|
+
if (depth > 0) {
|
|
110
|
+
const extra = "../".repeat(depth);
|
|
111
|
+
spec = moduleSpec.startsWith("./") ? extra + moduleSpec.slice(2) : extra + moduleSpec;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return withExtIfRelative(spec, extStyle);
|
|
109
115
|
}
|
|
110
116
|
|
|
111
117
|
/** A fully-resolved output destination. Import-identity belongs to the
|
package/src/reference/barrel.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// REFERENCE TEMPLATE — copy this into your repo (e.g. codegen/generators/barrel.ts) and own it.
|
|
2
2
|
// Then import it LOCALLY in metaobjects.config.ts instead of from the package:
|
|
3
|
-
// import { barrel } from "./codegen/generators/barrel";
|
|
3
|
+
// import { barrel } from "./codegen/generators/barrel.js";
|
|
4
4
|
//
|
|
5
5
|
// use-when: you want a single `index.ts` re-exporting every generated entity module.
|
|
6
6
|
// emits: <target>/index.ts with one `export * from "./<Entity>"` per entity, alphabetical.
|
package/src/reference/entity.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// REFERENCE TEMPLATE — copy this into your repo (e.g. codegen/generators/entity.ts) and own it.
|
|
2
2
|
// Then import it LOCALLY in metaobjects.config.ts:
|
|
3
|
-
// import { entityFile } from "./codegen/generators/entity";
|
|
3
|
+
// import { entityFile } from "./codegen/generators/entity.js";
|
|
4
4
|
//
|
|
5
5
|
// use-when: ALWAYS — this is the entity-module generator. It owns the shape of each
|
|
6
6
|
// generated <Entity>.ts (the Drizzle table, Zod schemas, inferred types,
|
package/src/reference/queries.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// REFERENCE TEMPLATE — copy this into your repo (e.g. codegen/generators/queries.ts) and own it.
|
|
2
2
|
// Then import it LOCALLY in metaobjects.config.ts:
|
|
3
|
-
// import { queriesFile } from "./codegen/generators/queries";
|
|
3
|
+
// import { queriesFile } from "./codegen/generators/queries.js";
|
|
4
4
|
//
|
|
5
5
|
// use-when: you want generated typed CRUD finders (find<E>ById, list<E>s, create/update/delete)
|
|
6
6
|
// over Drizzle. Drop it if you hand-write your data access.
|
package/src/reference/routes.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// REFERENCE TEMPLATE — copy this into your repo (e.g. codegen/generators/routes.ts) and own it.
|
|
2
2
|
// Then import it LOCALLY in metaobjects.config.ts:
|
|
3
|
-
// import { routesFile } from "./codegen/generators/routes";
|
|
3
|
+
// import { routesFile } from "./codegen/generators/routes.js";
|
|
4
4
|
//
|
|
5
5
|
// use-when: you want generated Fastify REST routes per entity. Drop it and hand-write routes
|
|
6
6
|
// if you need bespoke endpoints — or keep it and add handlers via <Entity>.extra.ts.
|
package/src/render-context.ts
CHANGED
|
@@ -9,12 +9,14 @@ import type { OutputLayout, ResolvedTarget } from "./import-path.js";
|
|
|
9
9
|
import { variableNameFromEntity } from "./naming.js";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* How to format
|
|
13
|
-
* - "
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
12
|
+
* How to format relative import specifiers in generated files.
|
|
13
|
+
* - "js" → emit `"./Foo.js"`. **Default.** Required by Node ESM strict + TS
|
|
14
|
+
* NodeNext/node16, and also accepted by moduleResolution
|
|
15
|
+
* "bundler"/"node", tsx, drizzle-kit's TS loader, Vite, and esbuild —
|
|
16
|
+
* so it is the strictly-more-compatible default (a stock `tsc --init`
|
|
17
|
+
* defaults to nodenext, under which un-extensioned imports fail TS2835).
|
|
18
|
+
* - "none" → emit `"./Foo"`. Opt out via `codegen.extStyle = "none"` when your
|
|
19
|
+
* toolchain forbids `.js` specifiers (rare — most bundlers accept both).
|
|
18
20
|
*/
|
|
19
21
|
export type ExtStyle = "js" | "none";
|
|
20
22
|
|
|
@@ -91,11 +93,27 @@ export type RenderContextInput = Omit<RenderContext, "extStyle" | "omImport" | "
|
|
|
91
93
|
collectionNameOverrides?: Record<string, string>;
|
|
92
94
|
};
|
|
93
95
|
|
|
94
|
-
/** Append the configured extension to a cross-entity module specifier
|
|
96
|
+
/** Append the configured extension to a cross-entity module specifier (which is
|
|
97
|
+
* always a bare, extension-less relative path like `./Foo`). */
|
|
95
98
|
export function withExt(spec: string, style: ExtStyle): string {
|
|
96
99
|
return style === "js" ? `${spec}.js` : spec;
|
|
97
100
|
}
|
|
98
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Apply the extension style to a possibly-user-supplied module specifier
|
|
104
|
+
* (`dbImport`, `providedEnumModule`, …). Unlike {@link withExt}, this only touches
|
|
105
|
+
* RELATIVE specifiers and never double-appends: a bare package/alias specifier
|
|
106
|
+
* (`@acme/db`, `~/server/db`) is depth- and extension-invariant, and a specifier
|
|
107
|
+
* the author already extensioned (`../db.js`) is left as-is.
|
|
108
|
+
*/
|
|
109
|
+
export function withExtIfRelative(spec: string, style: ExtStyle): string {
|
|
110
|
+
if (style !== "js") return spec;
|
|
111
|
+
const isRelative = spec.startsWith("./") || spec.startsWith("../");
|
|
112
|
+
if (!isRelative) return spec;
|
|
113
|
+
if (/\.(js|jsx|mjs|cjs|ts|tsx|json)$/.test(spec)) return spec;
|
|
114
|
+
return `${spec}.js`;
|
|
115
|
+
}
|
|
116
|
+
|
|
99
117
|
/** Thin factory; applies sensible defaults for fields the caller may omit. */
|
|
100
118
|
export function makeRenderContext(opts: RenderContextInput): RenderContext {
|
|
101
119
|
const outputLayout = opts.outputLayout ?? "flat";
|
|
@@ -113,7 +131,7 @@ export function makeRenderContext(opts: RenderContextInput): RenderContext {
|
|
|
113
131
|
};
|
|
114
132
|
return {
|
|
115
133
|
...opts,
|
|
116
|
-
extStyle: opts.extStyle ?? "
|
|
134
|
+
extStyle: opts.extStyle ?? "js",
|
|
117
135
|
omImport: opts.omImport ?? "../index",
|
|
118
136
|
columnNamingStrategy: opts.columnNamingStrategy ?? "snake_case",
|
|
119
137
|
timestampMode: opts.timestampMode ?? "string",
|
|
@@ -49,7 +49,7 @@ export function renderRoutesFile(entity: MetaObject, ctx: RenderContext): string
|
|
|
49
49
|
entityName,
|
|
50
50
|
ctx.extStyle,
|
|
51
51
|
);
|
|
52
|
-
const dbImportSpec = relativeModuleSpecifier(ctx.outputLayout, entity.package, ctx.dbImport);
|
|
52
|
+
const dbImportSpec = relativeModuleSpecifier(ctx.outputLayout, entity.package, ctx.dbImport, ctx.extStyle);
|
|
53
53
|
|
|
54
54
|
const header =
|
|
55
55
|
`// ${GENERATED_HEADER} — DO NOT EDIT.\n` +
|
|
@@ -329,7 +329,7 @@ function renderTphRoutesFile(base: MetaObject, ctx: RenderContext): string {
|
|
|
329
329
|
const baseFileSpec = entityModuleSpecifier(
|
|
330
330
|
ctx.selfTarget, ctx.entityModuleTarget, base.package, baseName, ctx.extStyle,
|
|
331
331
|
);
|
|
332
|
-
const dbImportSpec = relativeModuleSpecifier(ctx.outputLayout, base.package, ctx.dbImport);
|
|
332
|
+
const dbImportSpec = relativeModuleSpecifier(ctx.outputLayout, base.package, ctx.dbImport, ctx.extStyle);
|
|
333
333
|
|
|
334
334
|
const FastifyInstanceSym = imp("t:FastifyInstance@fastify");
|
|
335
335
|
const mountCrudRoutesSym = imp("mountCrudRoutes@@metaobjectsdev/runtime-ts/drizzle-fastify");
|