langium-zod 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -64,3 +64,26 @@ Generated output uses Zod 4 and exports named schemas like `<TypeName>Schema`.
64
64
  - Langium 4.x
65
65
  - Zod 4.x
66
66
 
67
+ ## Domain target (experimental)
68
+
69
+ Besides Zod schemas, langium-zod can emit a **domain surface** — quirk-free read
70
+ interfaces, a `toDomain(node)` read projection, and field-precise write accessors:
71
+
72
+ langium-zod generate --domain --domain-out src/generated/domain.ts
73
+
74
+ Mechanical rules are generic (a single cross-reference flattens to a `$refText`
75
+ string). Project-specific renames and read-only merges are supplied via
76
+ `domainOverlays` in `langium-zod.config.js`:
77
+
78
+ export default {
79
+ domainOverlays: {
80
+ types: {
81
+ Choice: { renames: { attributes: 'options' } },
82
+ RosettaFunction: { merges: [{ from: ['conditions', 'postConditions'], to: 'conditions' }] }
83
+ }
84
+ }
85
+ };
86
+
87
+ Merges are read-only on the merged name; write accessors target the source
88
+ fields (`addConditions`, `addPostConditions`) — there is no merged setter.
89
+
package/dist/api.d.ts CHANGED
@@ -117,4 +117,11 @@ export type PublicZodGeneratorConfig = ZodGeneratorConfig;
117
117
  * @see {@link ZodGeneratorConfig}
118
118
  */
119
119
  export declare function generateZodSchemas(config: ZodGeneratorConfig): string;
120
+ /**
121
+ * Programmatic entry point for the domain target. Runs the same extract pipeline
122
+ * as {@link generateZodSchemas}, then emits the domain surface (read interfaces +
123
+ * `toDomain` projection + field-precise write accessors). Writes to
124
+ * `config.domainOutputPath` when set.
125
+ */
126
+ export declare function generateDomainSchemas(config: ZodGeneratorConfig): string;
120
127
  //# sourceMappingURL=api.d.ts.map
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAStD,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAS1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmHG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAkGrE"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAUtD,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAS1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmHG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAkGrE;AAcD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CA4BxE"}
package/dist/api.js CHANGED
@@ -6,6 +6,7 @@ import { ZodGeneratorError } from './errors.js';
6
6
  import { extractTypeDescriptors } from './extractor.js';
7
7
  import { generateZodCode } from './generator.js';
8
8
  import { applyProjectionToDescriptors, resolveEffectiveStripFields } from './projection.js';
9
+ import { generateDomainCode } from './emitters/domain.js';
9
10
  import { detectRecursiveTypes } from './recursion-detector.js';
10
11
  function resolveAstTypes(astTypes) {
11
12
  return {
@@ -220,4 +221,38 @@ function buildDescriptorPipeline(astTypes, config) {
220
221
  });
221
222
  return descriptors;
222
223
  }
224
+ /**
225
+ * Programmatic entry point for the domain target. Runs the same extract pipeline
226
+ * as {@link generateZodSchemas}, then emits the domain surface (read interfaces +
227
+ * `toDomain` projection + field-precise write accessors). Writes to
228
+ * `config.domainOutputPath` when set.
229
+ */
230
+ export function generateDomainSchemas(config) {
231
+ let rawAstTypes;
232
+ if (config.astTypes) {
233
+ rawAstTypes = config.astTypes;
234
+ }
235
+ else if (config.grammar) {
236
+ rawAstTypes = collectAst(config.grammar);
237
+ }
238
+ else {
239
+ throw new ZodGeneratorError('Missing grammar or astTypes in ZodGeneratorConfig', {
240
+ suggestion: "Provide astTypes from Langium's collectAst() or pass a grammar object"
241
+ });
242
+ }
243
+ const astTypes = resolveAstTypes(rawAstTypes);
244
+ const descriptors = buildDescriptorPipeline(astTypes, config);
245
+ // Note: regexOverrides (regex-enum upgrades) are intentionally NOT applied here —
246
+ // the domain surface uses type references + primitives, never regex-enum shapes.
247
+ const source = generateDomainCode(descriptors, {
248
+ projection: config.projection,
249
+ stripInternals: config.stripInternals,
250
+ overlays: config.domainOverlays
251
+ });
252
+ if (config.domainOutputPath) {
253
+ mkdirSync(dirname(config.domainOutputPath), { recursive: true });
254
+ writeFileSync(config.domainOutputPath, source, 'utf8');
255
+ }
256
+ return source;
257
+ }
223
258
  //# sourceMappingURL=api.js.map
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAK/D,SAAS,eAAe,CAAC,QAAsB;IAC7C,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;QACrC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmHG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,IAAI,WAAyB,CAAC;IAC9B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;IAChC,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAA4B,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,iBAAiB,CAAC,mDAAmD,EAAE;YAC/E,UAAU,EAAE,uEAAuE;SACpF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEjE,gFAAgF;IAChF,4EAA4E;IAC5E,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAwB,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAChE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;YAC1E,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAE,CAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;aAC/C,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAG,4BAA4B,CAAC,WAAW,EAAE;QACnE,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,cAAc,EAAE;QAC1D,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,iBAAiB,CAAC,4CAA4C,EAAE;gBACxE,UAAU,EAAE,2DAA2D;aACxE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,IAAI,iBAAiB,CAAC,8CAA8C,EAAE;gBAC1E,UAAU,EAAE,yEAAyE;aACtF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,eAAe,GAAG,kBAAkB;aACvC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC;aACpD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CACV,oFAAoF,CACrF,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,qBAAqB,GAAG,0BAA0B,CACtD,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,CAAC,UAAU,CAC9B,CAAC;QACF,MAAM,WAAW,GAAG,yBAAyB,CAAC;YAC5C,gBAAgB,EAAE,MAAM,CAAC,UAAU;YACnC,qBAAqB;YACrB,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,YAAY;YAC7C,eAAe;YACf,WAAW,EAAE,2BAA2B,CAAC;gBACvC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;aACtC,CAAC;YACF,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;QAEH,KAAK,MAAM,WAAW,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,oDAAoD,WAAW,aAAa,CAAC,CAAC;QAC7F,CAAC;QAED,SAAS,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,aAAa,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAAsB,EACtB,MAA0B;IAE1B,MAAM,WAAW,GAAG,sBAAsB,CAAC,QAAQ,EAAE;QACnD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA0B;IAC9D,IAAI,WAAyB,CAAC;IAC9B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;IAChC,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAA4B,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,iBAAiB,CAAC,mDAAmD,EAAE;YAC/E,UAAU,EAAE,uEAAuE;SACpF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9D,kFAAkF;IAClF,iFAAiF;IACjF,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE;QAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,QAAQ,EAAE,MAAM,CAAC,cAAc;KAChC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,aAAa,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQtD,kEAAkE;AAClE,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,kBAAkB,EAClB,SAAS,GAAG,UAAU,GAAG,UAAU,CACpC;IACC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,CAAC,EACnD,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,CAAC,CAc/C;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,EAC/B,kBAAkB,EAAE,MAAM,EAAE,GAC3B,MAAM,EAAE,CAOV;AAyED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFnE;AAMD;;;;;;;;GAQG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiG1C"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQtD,kEAAkE;AAClE,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,kBAAkB,EAClB,SAAS,GAAG,UAAU,GAAG,UAAU,CACpC;IACC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,CAAC,EACnD,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,CAAC,CAc/C;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,EAC/B,kBAAkB,EAAE,MAAM,EAAE,GAC3B,MAAM,EAAE,CAOV;AA2ED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GnE;AAMD;;;;;;;;GAQG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6G1C"}
package/dist/cli.js CHANGED
@@ -12,7 +12,7 @@ import { pathToFileURL } from 'node:url';
12
12
  import { URI } from 'langium';
13
13
  import { createLangiumGrammarServices, resolveImportUri } from 'langium/grammar';
14
14
  import { NodeFileSystem } from 'langium/node';
15
- import { generateZodSchemas } from './api.js';
15
+ import { generateZodSchemas, generateDomainSchemas } from './api.js';
16
16
  import { resolveAstTypesPath } from './conformance.js';
17
17
  import { loadProjectionConfig } from './projection.js';
18
18
  function parseCsvList(value) {
@@ -119,6 +119,8 @@ OPTIONS
119
119
  --ast-types <path> Path to generated AST declarations (ast.ts)
120
120
  --conformance-out <path> Output path for conformance artifact
121
121
  --cross-ref-validation Emit runtime cross-reference schema factories
122
+ --domain Also emit the domain surface (domain.ts)
123
+ --domain-out <path> Output path for the domain surface
122
124
  --help Show this help message
123
125
 
124
126
  CONFIGURATION
@@ -248,13 +250,26 @@ export async function generate(opts) {
248
250
  warnUnknownFilterNames('include', userConfig.include, availableTypeNames);
249
251
  warnUnknownFilterNames('exclude', userConfig.exclude, availableTypeNames);
250
252
  // ── 4. Generate schemas ──────────────────────────────────────────────────
251
- const { langiumConfig: _ignored, outputPath: _op, ...restConfig } = userConfig;
253
+ const { langiumConfig: _ignored, outputPath: _op, emitDomain: _emitDomain, domainOutputPath: _domainOutputPath, ...restConfig } = userConfig;
252
254
  generateZodSchemas({
253
255
  grammar,
254
256
  outputPath,
255
257
  ...restConfig
256
258
  });
257
259
  console.log(`✓ Generated Zod schemas → ${outputPath}`);
260
+ if (userConfig.emitDomain) {
261
+ const domainOutputPath = userConfig.domainOutputPath ?? join(outDir, 'domain.ts');
262
+ generateDomainSchemas({
263
+ grammar,
264
+ domainOutputPath,
265
+ stripInternals: restConfig.stripInternals,
266
+ projection: restConfig.projection,
267
+ domainOverlays: restConfig.domainOverlays,
268
+ include: restConfig.include,
269
+ exclude: restConfig.exclude
270
+ });
271
+ console.log(`✓ Generated domain surface → ${domainOutputPath}`);
272
+ }
258
273
  }
259
274
  // ────────────────────────────────────────────────────────────────────────────
260
275
  // CLI entry point
@@ -293,6 +308,8 @@ export async function main() {
293
308
  const stripInternalsEnabled = args.includes('--strip-internals');
294
309
  const conformanceEnabled = args.includes('--conformance');
295
310
  const crossRefValidationEnabled = args.includes('--cross-ref-validation');
311
+ const domainEnabled = args.includes('--domain');
312
+ const domainOutFlagValue = getArgValue(args, '--domain-out');
296
313
  // ── Locate langium-config.json ───────────────────────────────────────────
297
314
  const configFileName = configFlagValue ?? 'langium-config.json';
298
315
  const langiumConfigPath = resolve(process.cwd(), configFileName);
@@ -346,6 +363,15 @@ export async function main() {
346
363
  crossRefValidation: true
347
364
  };
348
365
  }
366
+ if (domainEnabled) {
367
+ userConfig = {
368
+ ...userConfig,
369
+ emitDomain: true,
370
+ domainOutputPath: domainOutFlagValue
371
+ ? resolve(process.cwd(), domainOutFlagValue)
372
+ : userConfig.domainOutputPath
373
+ };
374
+ }
349
375
  try {
350
376
  await generate({ langiumConfigPath, config: userConfig });
351
377
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AA4BvD,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAc,EAAE,IAAY;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC5B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAmD,EACnD,UAAmB,EACnB,UAAmB;IAEnB,MAAM,cAAc,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACvF,MAAM,cAAc,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAEvF,MAAM,aAAa,GAAG,cAAc,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3D,MAAM,aAAa,GAAG,cAAc,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAE3D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtE,OAAO;QACL,OAAO;QACP,OAAO,EAAE,aAAa;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAiC,EACjC,SAA+B,EAC/B,kBAA4B;IAE5B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/F,OAAO,CAAC,IAAI,CACV,oBAAoB,UAAU,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,aAAa,EAAE,CACxG,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAA+B,EAC/B,kBAA4B;IAE5B,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC9C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCb,CAAC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,SAAS,CACtB,QAAyB,EACzB,SAA0E,EAC1E,UAAuB,IAAI,GAAG,EAAE;IAEhC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO;IAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,KAA4B,CAAC;IACnE,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,uFAAuF;IACvF,MAAM,OAAO,GAAI,OAA6C,CAAC,OAAO,IAAI,EAAE,CAAC;IAC7E,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAA6C,CAAC,CAAC;QAClF,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACnE,MAAM,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAqB;IAClD,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IACnC,MAAM,UAAU,GAAqB,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAEvD,2EAA2E;IAC3E,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,kCAAkC,iBAAiB,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,aAAa,GAAsB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7F,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;IAE1C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC;IAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAE1D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,4EAA4E;IAC5E,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG;QAC9B,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC;QACvC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACxC,MAAM,UAAU,GAAW,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAEnF,MAAM,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC;IACjD,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,YAAY;YACzD,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,YAAY,CAAC;YACpD,CAAC,CAAC,aAAa,CAAC,QAAQ;gBACtB,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;gBAC5C,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,qDAAqD,oBAAoB,EAAE,CAAC,CAAC;QAC/F,CAAC;QAED,UAAU,CAAC,WAAW,GAAG;YACvB,YAAY,EAAE,oBAAoB;YAClC,UAAU,EAAE,iBAAiB,CAAC,UAAU;SACzC,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAC1F,KAAK,eAAe,CAAC,CAAC,8CAA8C;IAEpE,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;IAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC;IAEzD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAE7E,kEAAkE;IAClE,MAAM,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAEjD,4CAA4C;IAC5C,MAAM,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE;QAC1D,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,KAAgB,CAAC;IAC3D,MAAM,kBAAkB,GAAG;QACzB,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KACpD;SACE,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;SAC1D,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpD,sBAAsB,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC1E,sBAAsB,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE1E,4EAA4E;IAC5E,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC;IAE/E,kBAAkB,CAAC;QACjB,OAAO;QACP,UAAU;QACV,GAAG,UAAU;KACd,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC7C,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,mBAAmB,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC9D,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,uBAAuB,GAAG,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACvE,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACjE,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IAE1E,4EAA4E;IAC5E,MAAM,cAAc,GAAG,eAAe,IAAI,qBAAqB,CAAC;IAChE,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAEjE,4EAA4E;IAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7C,IAAI,UAAU,GAAqB,EAAE,CAAC;IAEtC,KAAK,MAAM,SAAS,IAAI,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,EAAE,CAAC;QAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5D,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAqB,CAAC;YACtD,MAAM;QACR,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,MAAM,eAAe,GAAG,sBAAsB,CAAC,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC/F,UAAU,GAAG;QACX,GAAG,UAAU;QACb,GAAG,eAAe;KACnB,CAAC;IAEF,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;QACnE,UAAU,GAAG;YACX,GAAG,UAAU;YACb,UAAU,EAAE,oBAAoB,CAAC,cAAc,CAAC;SACjD,CAAC;IACJ,CAAC;IAED,IAAI,qBAAqB,EAAE,CAAC;QAC1B,UAAU,GAAG;YACX,GAAG,UAAU;YACb,cAAc,EAAE,IAAI;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,UAAU,GAAG;YACX,GAAG,UAAU;YACb,WAAW,EAAE;gBACX,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;gBACvF,UAAU,EAAE,uBAAuB;oBACjC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC;oBACjD,CAAC,CAAC,SAAS;aACd;SACF,CAAC;IACJ,CAAC;IAED,IAAI,yBAAyB,EAAE,CAAC;QAC9B,UAAU,GAAG;YACX,GAAG,UAAU;YACb,kBAAkB,EAAE,IAAI;SACzB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI;IACvB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAE7C,IAAI,MAAM,EAAE,CAAC;IACX,KAAK,IAAI,EAAE,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { Grammar, LangiumCoreServices } from 'langium';
2
2
  import type { AstTypesLike } from './types.js';
3
3
  import type { ProjectionConfig } from './projection.js';
4
+ import type { DomainOverlayConfig } from './emitters/domain.js';
4
5
  /**
5
6
  * Include/exclude filter that controls which Langium type names are emitted
6
7
  * during schema generation.
@@ -163,6 +164,12 @@ export interface ZodGeneratorConfig extends FilterConfig {
163
164
  * properties.
164
165
  */
165
166
  objectStyle?: 'loose' | 'strict';
167
+ /** When true, the CLI also emits the domain surface to `domainOutputPath`. */
168
+ emitDomain?: boolean;
169
+ /** Output path for the generated domain surface (`domain.ts`). */
170
+ domainOutputPath?: string;
171
+ /** Project-specific semantic overlays (renames + read-only merges) supplied by the consumer for the domain target. */
172
+ domainOverlays?: DomainOverlayConfig;
166
173
  }
167
174
  /**
168
175
  * Default output path used when no explicit `outputPath` is provided and the
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAClC;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAKnF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACjC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sHAAsH;IACtH,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAKnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAyKA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAElE,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACzD,OAAO;QACL,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;QAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;KAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAgLA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAElE,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACzD,OAAO;QACL,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;QAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;KAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ZodTypeDescriptor } from '../types.js';
2
+ import { type ProjectionConfig } from '../projection.js';
3
+ export interface DomainOverlayTypeConfig {
4
+ /** Source field → domain field. Bidirectional: read & write both target the source. */
5
+ renames?: Record<string, string>;
6
+ /** Read-only aggregations: concat `from` source arrays into one `to` read field. */
7
+ merges?: Array<{
8
+ from: string[];
9
+ to: string;
10
+ }>;
11
+ }
12
+ export interface DomainOverlayConfig {
13
+ types?: Record<string, DomainOverlayTypeConfig>;
14
+ }
15
+ export interface DomainGenerationOptions {
16
+ /** Reuses the Zod projection for `defaults.strip` + per-type `fields`. */
17
+ projection?: ProjectionConfig;
18
+ /** Drop `$`-internal metadata fields (`$container`, `$cstNode`, …). */
19
+ stripInternals?: boolean;
20
+ overlays?: DomainOverlayConfig;
21
+ }
22
+ export declare function generateDomainCode(descriptors: ZodTypeDescriptor[], options?: DomainGenerationOptions): string;
23
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/emitters/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgC,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAcvF,MAAM,WAAW,uBAAuB;IACtC,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,oFAAoF;IACpF,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAkRD,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAqDR"}
@@ -0,0 +1,269 @@
1
+ import { applyProjectionToDescriptors } from '../projection.js';
2
+ function capitalize(name) {
3
+ return name.length === 0 ? name : `${name[0].toUpperCase()}${name.slice(1)}`;
4
+ }
5
+ /** TS surface type for a property's read shape. Single cross-refs flatten to `string`. */
6
+ function domainTsType(expression, ctx) {
7
+ switch (expression.kind) {
8
+ case 'primitive':
9
+ return expression.primitive; // 'string' | 'number' | 'boolean' | 'bigint'
10
+ case 'literal':
11
+ return JSON.stringify(expression.value);
12
+ case 'reference':
13
+ // Non-rich references (datatype rules, keyword-enums, etc.) resolve to a primitive.
14
+ return ctx.richTypeNames.has(expression.typeName)
15
+ ? `${expression.typeName}Domain`
16
+ : ctx.datatypePrimitive(expression.typeName);
17
+ case 'crossReference':
18
+ return 'string';
19
+ case 'array':
20
+ return `${domainTsType(expression.element, ctx)}[]`;
21
+ case 'union': {
22
+ const inner = expression.members.map((m) => domainTsType(m, ctx)).join(' | ');
23
+ return expression.members.length > 1 ? `(${inner})` : inner;
24
+ }
25
+ case 'lazy':
26
+ return domainTsType(expression.inner, ctx);
27
+ }
28
+ }
29
+ /** Read-projection expression mapping a source access path to the domain value. */
30
+ function domainReadExpr(expression, access, ctx) {
31
+ switch (expression.kind) {
32
+ case 'primitive':
33
+ case 'literal':
34
+ return access;
35
+ case 'crossReference':
36
+ return `${access}?.$refText`;
37
+ case 'reference':
38
+ // Datatype-rule / keyword-enum references are primitives on the AST — read directly.
39
+ return ctx.richTypeNames.has(expression.typeName)
40
+ ? `${access} ? toDomain${expression.typeName}(${access}) : undefined`
41
+ : access;
42
+ case 'array':
43
+ return `(${access} ?? []).map((item) => ${domainReadExpr(expression.element, 'item', ctx)})`;
44
+ case 'union':
45
+ // Inline property-level unions pass through unchanged (rare — named unions
46
+ // arrive as `reference`). Documented limitation; revisited in a later task.
47
+ return access;
48
+ case 'lazy':
49
+ return domainReadExpr(expression.inner, access, ctx);
50
+ }
51
+ }
52
+ /** Param type for a scalar/primitive setter or an array element add. */
53
+ function domainWriteType(expression, ctx) {
54
+ switch (expression.kind) {
55
+ case 'primitive':
56
+ return expression.primitive;
57
+ case 'crossReference':
58
+ return 'string';
59
+ case 'literal':
60
+ return JSON.stringify(expression.value);
61
+ case 'reference':
62
+ // Non-rich references are primitives on the AST; rich ones are nested objects.
63
+ return ctx.richTypeNames.has(expression.typeName) ? 'unknown' : ctx.datatypePrimitive(expression.typeName);
64
+ default:
65
+ // union, array, lazy: caller supplies a draft.
66
+ return 'unknown';
67
+ }
68
+ }
69
+ function planObject(descriptor, overlay, ctx) {
70
+ const renames = overlay?.renames ?? {};
71
+ const merges = overlay?.merges ?? [];
72
+ const mergedSources = new Set(merges.flatMap((merge) => merge.from));
73
+ const properties = descriptor.properties.filter((property) => property.name !== '$type');
74
+ const fields = [];
75
+ const accessors = [];
76
+ for (const property of properties) {
77
+ const isMergeSource = mergedSources.has(property.name);
78
+ const domainName = renames[property.name] ?? property.name;
79
+ if (!isMergeSource) {
80
+ fields.push({
81
+ name: domainName,
82
+ tsType: domainTsType(property.zodType, ctx),
83
+ optional: property.optional,
84
+ readExpr: domainReadExpr(property.zodType, `node.${property.name}`, ctx)
85
+ });
86
+ }
87
+ // Accessors always target the SOURCE field; merge sources keep distinct accessors.
88
+ const label = capitalize(isMergeSource ? property.name : domainName);
89
+ accessors.push({ label, sourceName: property.name, expression: property.zodType });
90
+ }
91
+ for (const merge of merges) {
92
+ const knownNames = new Set(properties.map((property) => property.name));
93
+ const fromSet = new Set(merge.from);
94
+ for (const sourceName of merge.from) {
95
+ const sourceProp = properties.find((property) => property.name === sourceName);
96
+ if (!sourceProp) {
97
+ throw new Error(`domain overlay merge for ${descriptor.name}: source field "${sourceName}" does not exist`);
98
+ }
99
+ if (sourceProp.zodType.kind !== 'array') {
100
+ throw new Error(`domain overlay merge for ${descriptor.name}: source field "${sourceName}" is not an array (merges aggregate arrays)`);
101
+ }
102
+ }
103
+ if (knownNames.has(merge.to) && !fromSet.has(merge.to)) {
104
+ throw new Error(`domain overlay merge for ${descriptor.name}: target "${merge.to}" collides with an existing non-source field`);
105
+ }
106
+ const sourceProps = merge.from
107
+ .map((sourceName) => properties.find((property) => property.name === sourceName))
108
+ .filter((property) => property !== undefined);
109
+ const firstArray = sourceProps.find((property) => property.zodType.kind === 'array');
110
+ const elementTsType = firstArray && firstArray.zodType.kind === 'array'
111
+ ? domainTsType(firstArray.zodType.element, ctx)
112
+ : 'unknown';
113
+ const spreadExprs = sourceProps
114
+ .filter((property) => property.zodType.kind === 'array')
115
+ .map((property) => `...${domainReadExpr(property.zodType, `node.${property.name}`, ctx)}`);
116
+ fields.push({
117
+ name: merge.to,
118
+ tsType: `${elementTsType}[]`,
119
+ optional: false,
120
+ readExpr: `[${spreadExprs.join(', ')}]`
121
+ });
122
+ }
123
+ return { name: descriptor.name, fields, accessors };
124
+ }
125
+ function emitAccessors(label, sourceName, expression, ctx) {
126
+ const src = `node.${sourceName}`;
127
+ if (expression.kind === 'array') {
128
+ const elementType = domainWriteType(expression.element, ctx);
129
+ return [
130
+ `export function add${label}(node: any, item: ${elementType}): void {`,
131
+ expression.element.kind === 'crossReference'
132
+ ? ` (${src} ??= []).push({ $refText: item });`
133
+ : ` (${src} ??= []).push(item);`,
134
+ '}',
135
+ '',
136
+ `export function remove${label}At(node: any, index: number): void {`,
137
+ ` ${src}?.splice(index, 1);`,
138
+ '}',
139
+ ''
140
+ ];
141
+ }
142
+ if (expression.kind === 'crossReference') {
143
+ // Fix: create the slot when absent so optional cross-refs can be set from scratch.
144
+ return [
145
+ `export function set${label}(node: any, value: string): void {`,
146
+ ` if (${src}) ${src}.$refText = value;`,
147
+ ` else ${src} = { $refText: value };`,
148
+ '}',
149
+ ''
150
+ ];
151
+ }
152
+ if (expression.kind === 'primitive') {
153
+ return [
154
+ `export function set${label}(node: any, value: ${expression.primitive}): void {`,
155
+ ` ${src} = value;`,
156
+ '}',
157
+ ''
158
+ ];
159
+ }
160
+ if (expression.kind === 'reference' && !ctx.richTypeNames.has(expression.typeName)) {
161
+ // Non-rich reference (datatype rule): primitive-valued field, emit a scalar setter.
162
+ const primitiveType = ctx.datatypePrimitive(expression.typeName);
163
+ return [
164
+ `export function set${label}(node: any, value: ${primitiveType}): void {`,
165
+ ` ${src} = value;`,
166
+ '}',
167
+ ''
168
+ ];
169
+ }
170
+ // Rich reference (nested object) scalar, literal, union: no setter in the MVP surface.
171
+ return [];
172
+ }
173
+ function emitMasterDispatch(objects) {
174
+ if (objects.length === 0) {
175
+ return [];
176
+ }
177
+ const alias = `export type AnyDomain = ${objects.map((object) => `${object.name}Domain`).join(' | ')};`;
178
+ const out = [alias, '', 'export function toDomain(node: any): AnyDomain {', ' switch (node.$type) {'];
179
+ for (const object of objects) {
180
+ out.push(` case ${JSON.stringify(object.name)}: return toDomain${object.name}(node);`);
181
+ }
182
+ out.push(' }', ' throw new Error(`Unknown node type: ${node.$type}`);', '}', '');
183
+ return out;
184
+ }
185
+ function emitUnion(descriptor) {
186
+ const alias = `export type ${descriptor.name}Domain = ${descriptor.members
187
+ .map((member) => `${member}Domain`)
188
+ .join(' | ')};`;
189
+ const out = [
190
+ alias,
191
+ '',
192
+ `export function toDomain${descriptor.name}(node: any): ${descriptor.name}Domain {`,
193
+ ' switch (node.$type) {'
194
+ ];
195
+ for (const member of descriptor.members) {
196
+ out.push(` case ${JSON.stringify(member)}: return toDomain${member}(node);`);
197
+ }
198
+ out.push(' }', ` throw new Error(\`Unknown ${descriptor.name} member: \${node.$type}\`);`, '}', '');
199
+ return out;
200
+ }
201
+ function emitInterface(plan) {
202
+ const out = [`export interface ${plan.name}Domain {`];
203
+ for (const field of plan.fields) {
204
+ out.push(` ${field.name}${field.optional ? '?' : ''}: ${field.tsType};`);
205
+ }
206
+ out.push('}', '');
207
+ return out;
208
+ }
209
+ function emitReadFn(plan) {
210
+ const out = [`export function toDomain${plan.name}(node: any): ${plan.name}Domain {`, ' return {'];
211
+ for (const field of plan.fields) {
212
+ out.push(` ${field.name}: ${field.readExpr},`);
213
+ }
214
+ out.push(' };', '}', '');
215
+ return out;
216
+ }
217
+ function emitWriteAccessors(plan, ctx) {
218
+ const out = [];
219
+ for (const accessor of plan.accessors) {
220
+ out.push(...emitAccessors(`${plan.name}${accessor.label}`, accessor.sourceName, accessor.expression, ctx));
221
+ }
222
+ return out;
223
+ }
224
+ export function generateDomainCode(descriptors, options = {}) {
225
+ const surface = applyProjectionToDescriptors(descriptors, {
226
+ projection: options.projection,
227
+ stripInternals: options.stripInternals
228
+ });
229
+ const objects = surface.filter((descriptor) => descriptor.kind === 'object');
230
+ const unions = surface.filter((descriptor) => descriptor.kind === 'union');
231
+ // Build the classification context:
232
+ // - richTypeNames: object and union types that get a Domain interface + toDomain fn.
233
+ // - datatypePrimitive: resolves datatype-rule names (primitive-alias, keyword-enum,
234
+ // regex-enum) to their primitive TS type; defaults to 'string' for unknowns.
235
+ const richTypeNames = new Set([
236
+ ...objects.map((o) => o.name),
237
+ ...unions.map((u) => u.name)
238
+ ]);
239
+ const datatypeMap = new Map();
240
+ for (const descriptor of surface) {
241
+ if (descriptor.kind === 'primitive-alias') {
242
+ datatypeMap.set(descriptor.name, descriptor.primitive);
243
+ }
244
+ else if (descriptor.kind === 'keyword-enum' || descriptor.kind === 'regex-enum') {
245
+ datatypeMap.set(descriptor.name, 'string');
246
+ }
247
+ }
248
+ const ctx = {
249
+ richTypeNames,
250
+ datatypePrimitive: (name) => datatypeMap.get(name) ?? 'string'
251
+ };
252
+ const lines = [
253
+ '// @ts-nocheck — generated domain surface; edit the grammar / domain-surfaces.json to regenerate',
254
+ ''
255
+ ];
256
+ const overlayTypes = options.overlays?.types ?? {};
257
+ for (const object of objects) {
258
+ const plan = planObject(object, overlayTypes[object.name], ctx);
259
+ lines.push(...emitInterface(plan));
260
+ lines.push(...emitReadFn(plan));
261
+ lines.push(...emitWriteAccessors(plan, ctx));
262
+ }
263
+ for (const union of unions) {
264
+ lines.push(...emitUnion(union));
265
+ }
266
+ lines.push(...emitMasterDispatch(objects));
267
+ return `${lines.join('\n').trim()}\n`;
268
+ }
269
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/emitters/domain.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -21,7 +21,7 @@
21
21
  *
22
22
  * @category Generation
23
23
  */
24
- export { generateZodSchemas } from './api.js';
24
+ export { generateZodSchemas, generateDomainSchemas } from './api.js';
25
25
  export { DEFAULT_OUTPUT_PATH } from './config.js';
26
26
  export type { FilterConfig, ZodGeneratorConfig } from './config.js';
27
27
  export { ZodGeneratorError } from './errors.js';
@@ -34,4 +34,6 @@ export type { AstTypesLike, InterfaceTypeLike, PropertyLike, UnionTypeLike, ZodP
34
34
  export { DefaultZodSchemaGenerator, ZodSchemaGeneratorModule } from './di.js';
35
35
  export type { ZodSchemaGenerator, ZodSchemaGeneratorServices } from './di.js';
36
36
  export { zRef } from './ref-utils.js';
37
+ export { generateDomainCode } from './emitters/domain.js';
38
+ export type { DomainGenerationOptions, DomainOverlayConfig, DomainOverlayTypeConfig } from './emitters/domain.js';
37
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAClE,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAClE,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -21,7 +21,7 @@
21
21
  *
22
22
  * @category Generation
23
23
  */
24
- export { generateZodSchemas } from './api.js';
24
+ export { generateZodSchemas, generateDomainSchemas } from './api.js';
25
25
  export { DEFAULT_OUTPUT_PATH } from './config.js';
26
26
  export { ZodGeneratorError } from './errors.js';
27
27
  export { extractTypeDescriptors } from './extractor.js';
@@ -30,4 +30,5 @@ export { detectRecursiveTypes } from './recursion-detector.js';
30
30
  export { generate } from './cli.js';
31
31
  export { DefaultZodSchemaGenerator, ZodSchemaGeneratorModule } from './di.js';
32
32
  export { zRef } from './ref-utils.js';
33
+ export { generateDomainCode } from './emitters/domain.js';
33
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAWpC,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAWpC,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "langium-zod",
3
- "version": "0.5.4",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "description": "Langium generator plugin that derives Zod schemas from grammar definitions",
6
6
  "keywords": [
@@ -43,14 +43,15 @@
43
43
  ],
44
44
  "dependencies": {
45
45
  "humanize-string": "^3.1.0",
46
- "langium": "^4.2.2",
47
- "x-to-zod": "^0.10.2",
48
- "zod": "^4.3.6"
46
+ "langium": "^4.2.4",
47
+ "x-to-zod": "^0.10.3",
48
+ "zod": "^4.4.3"
49
49
  },
50
50
  "devDependencies": {
51
- "langium-cli": "^4.2.0",
52
- "typescript": "^5.9.3",
53
- "vitest": "^4.1.4"
51
+ "@types/node": "^25.9.1",
52
+ "langium-cli": "^4.2.1",
53
+ "typescript": "^6.0.3",
54
+ "vitest": "^4.1.7"
54
55
  },
55
56
  "author": "Pradeep Mouli <pmouli@mac.com> (https://github.com/pradeepmouli)",
56
57
  "scripts": {