langium-zod 0.10.0 → 0.11.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.
@@ -1,4 +1,27 @@
1
1
  import type { AstNode } from 'langium';
2
+ /**
3
+ * True when `node` (any grammar `AbstractElement` — an `Assignment`/`Action`,
4
+ * or an `Alternatives` group itself) sits on an UNCONDITIONAL path: neither it
5
+ * nor any `AbstractElement` ancestor up to the `ParserRule` carries an optional
6
+ * cardinality (`?` or `*`), and no ancestor is a branch of a multi-branch
7
+ * `Alternatives`. A single branch of an N-way choice is conditional even
8
+ * without a `?`/`*` cardinality — a valid document may take a different branch,
9
+ * so anything that only occurs on ONE branch of a choice cannot be guaranteed.
10
+ *
11
+ * Also handles the fragment-boundary case (PR #96): a fragment-defined
12
+ * element's `$container` chain ends at the fragment `ParserRule`, not the call
13
+ * site, so use-site cardinality (e.g. `(Frag)*`) is invisible to this walk. We
14
+ * cannot prove the fragment is unconditionally called from every caller —
15
+ * conservatively treat fragment-defined content as optional.
16
+ *
17
+ * `UnorderedGroup` (`A & B`) is intentionally NOT treated as optional: every
18
+ * element in an unordered group must occur, so both contribute mandatorily.
19
+ *
20
+ * Shared by `array-min-occurrence.ts` (per-assignment `+=` mandatory-occurrence
21
+ * check) and `non-empty-body.ts` (whole-`Alternatives`-group mandatory-execution
22
+ * check, called with the `Alternatives` node itself as `node`).
23
+ */
24
+ export declare function isMandatoryOccurrence(node: AstNode): boolean;
2
25
  /**
3
26
  * Array minimum length derived from the grammar Assignment nodes that produce an
4
27
  * array property (`Property.astNodes`). Returns `1` when ANY `+=` assignment for
@@ -1 +1 @@
1
- {"version":3,"file":"array-min-occurrence.d.ts","sourceRoot":"","sources":["../src/array-min-occurrence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA8BvC;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAWnG"}
1
+ {"version":3,"file":"array-min-occurrence.d.ts","sourceRoot":"","sources":["../src/array-min-occurrence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAqB5D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAWnG"}
@@ -1,16 +1,27 @@
1
1
  import { GrammarAST, GrammarUtils } from 'langium';
2
2
  /**
3
- * True when `node` (a grammar Assignment/Action) contributes on an UNCONDITIONAL
4
- * path: neither it nor any AbstractElement ancestor up to the ParserRule carries
5
- * an optional cardinality (`?` or `*`), and no ancestor is a branch of a
6
- * multi-branch `Alternatives`. A single branch of an N-way choice is conditional
7
- * even without a `?`/`*` cardinality — a valid document may take a different branch
8
- * and produce an empty array, which would fail `.min(1)`.
3
+ * True when `node` (any grammar `AbstractElement` — an `Assignment`/`Action`,
4
+ * or an `Alternatives` group itself) sits on an UNCONDITIONAL path: neither it
5
+ * nor any `AbstractElement` ancestor up to the `ParserRule` carries an optional
6
+ * cardinality (`?` or `*`), and no ancestor is a branch of a multi-branch
7
+ * `Alternatives`. A single branch of an N-way choice is conditional even
8
+ * without a `?`/`*` cardinality — a valid document may take a different branch,
9
+ * so anything that only occurs on ONE branch of a choice cannot be guaranteed.
10
+ *
11
+ * Also handles the fragment-boundary case (PR #96): a fragment-defined
12
+ * element's `$container` chain ends at the fragment `ParserRule`, not the call
13
+ * site, so use-site cardinality (e.g. `(Frag)*`) is invisible to this walk. We
14
+ * cannot prove the fragment is unconditionally called from every caller —
15
+ * conservatively treat fragment-defined content as optional.
9
16
  *
10
17
  * `UnorderedGroup` (`A & B`) is intentionally NOT treated as optional: every
11
18
  * element in an unordered group must occur, so both contribute mandatorily.
19
+ *
20
+ * Shared by `array-min-occurrence.ts` (per-assignment `+=` mandatory-occurrence
21
+ * check) and `non-empty-body.ts` (whole-`Alternatives`-group mandatory-execution
22
+ * check, called with the `Alternatives` node itself as `node`).
12
23
  */
13
- function isMandatoryOccurrence(node) {
24
+ export function isMandatoryOccurrence(node) {
14
25
  let el = node;
15
26
  while (el && GrammarAST.isAbstractElement(el)) {
16
27
  const element = el;
@@ -24,6 +35,12 @@ function isMandatoryOccurrence(node) {
24
35
  }
25
36
  el = parent;
26
37
  }
38
+ // Fragment-defined assignment: the $container chain ends at the fragment rule,
39
+ // not the use site, so use-site cardinality (e.g. `(Frag)*`) is invisible here.
40
+ // We cannot prove ≥1 at every caller — conservatively treat as optional.
41
+ if (el && GrammarAST.isParserRule(el) && el.fragment) {
42
+ return false;
43
+ }
27
44
  return true;
28
45
  }
29
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"array-min-occurrence.js","sourceRoot":"","sources":["../src/array-min-occurrence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAAC,IAAa;IAC1C,IAAI,EAAE,GAAwB,IAAI,CAAC;IACnC,OAAO,EAAE,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,EAAgC,CAAC;QACjD,IAAI,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,MAAM,GAAwB,EAAE,CAAC,UAAU,CAAC;QAClD,uEAAuE;QACvE,IAAI,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,EAAE,GAAG,MAAM,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA0C;IAC7E,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,aAAa,GACjB,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;YACzD,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACxD,IAAI,aAAa,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"array-min-occurrence.js","sourceRoot":"","sources":["../src/array-min-occurrence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,IAAI,EAAE,GAAwB,IAAI,CAAC;IACnC,OAAO,EAAE,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,EAAgC,CAAC;QACjD,IAAI,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,MAAM,GAAwB,EAAE,CAAC,UAAU,CAAC;QAClD,uEAAuE;QACvE,IAAI,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,EAAE,GAAG,MAAM,CAAC;IACd,CAAC;IACD,+EAA+E;IAC/E,gFAAgF;IAChF,yEAAyE;IACzE,IAAI,EAAE,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA0C;IAC7E,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,aAAa,GACjB,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;YACzD,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACxD,IAAI,aAAa,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAKZ,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiUhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,YAAY,EACtB,MAAM,CAAC,EAAE,YAAY,GACpB,iBAAiB,EAAE,CAwKrB"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAKZ,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkUhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,YAAY,EACtB,MAAM,CAAC,EAAE,YAAY,GACpB,iBAAiB,EAAE,CA4KrB"}
package/dist/extractor.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ZodGeneratorError } from './errors.js';
2
2
  import { mapPropertyType } from './type-mapper.js';
3
+ import { resolveAtLeastOneOf } from './non-empty-body.js';
3
4
  import { arrayMinFromAstNodes } from './array-min-occurrence.js';
4
5
  function toStringSet(value) {
5
6
  if (!value) {
@@ -366,7 +367,8 @@ export function extractTypeDescriptors(astTypes, config) {
366
367
  optional: false
367
368
  }
368
369
  ];
369
- for (const property of resolveProperties(typeMap, entry.name)) {
370
+ const resolvedProperties = resolveProperties(typeMap, entry.name);
371
+ for (const property of resolvedProperties) {
370
372
  if (property.name.startsWith('$') && property.name !== '$type') {
371
373
  continue;
372
374
  }
@@ -386,11 +388,13 @@ export function extractTypeDescriptors(astTypes, config) {
386
388
  ...(property.comment ? { comment: property.comment } : {})
387
389
  });
388
390
  }
391
+ const atLeastOneOf = resolveAtLeastOneOf(entry.name, resolvedProperties);
389
392
  objectDescriptors.push({
390
393
  name: entry.name,
391
394
  kind: 'object',
392
395
  properties,
393
- ...(entry.comment ? { comment: entry.comment } : {})
396
+ ...(entry.comment ? { comment: entry.comment } : {}),
397
+ ...(atLeastOneOf ? { atLeastOneOf } : {})
394
398
  });
395
399
  }
396
400
  // ── Phase 2: union and primitive-alias descriptors ────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAgC,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAClC;AA2PD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,iBAAiB,EAAE,EAChC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CA0NR"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAgC,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAClC;AAmSD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,iBAAiB,EAAE,EAChC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CA6NR"}
package/dist/generator.js CHANGED
@@ -84,12 +84,41 @@ function renderMetaSuffix(name, comment) {
84
84
  }
85
85
  return `.meta({ ${entries.join(', ')} })`;
86
86
  }
87
+ /**
88
+ * Renders a `.superRefine` suffix that fails validation when NONE of
89
+ * `atLeastOneOf`'s properties are populated on the parsed value. Array-typed
90
+ * properties are checked for non-empty length; all other kinds are checked for
91
+ * `!== undefined`. The issue message names the missing-alternative set so
92
+ * z2f-driven forms can surface it directly.
93
+ */
94
+ function renderAtLeastOneOfSuffix(atLeastOneOf, properties) {
95
+ const propertyKinds = new Map(properties.map((property) => [property.name, property.zodType.kind]));
96
+ const checks = atLeastOneOf
97
+ .map((name) => {
98
+ const isArray = propertyKinds.get(name) === 'array';
99
+ const accessor = `val[${JSON.stringify(name)}]`;
100
+ return isArray ? `${accessor}?.length` : `${accessor} !== undefined`;
101
+ })
102
+ .join(' || ');
103
+ const message = JSON.stringify(`At least one of ${atLeastOneOf.join(', ')} must be present`);
104
+ return `.superRefine((val, ctx) => {
105
+ if (!(${checks})) {
106
+ ctx.addIssue({ code: 'custom', message: ${message} });
107
+ }
108
+ })`;
109
+ }
87
110
  function renderPropertyExpression(property, lazyNames, formMetadata) {
88
111
  const baseExpression = expressionToBuilder(property.zodType, lazyNames).text();
89
112
  const withArrayMin = property.zodType.kind === 'array' && typeof property.minItems === 'number'
90
113
  ? `${baseExpression}.min(${property.minItems})`
91
114
  : baseExpression;
92
- const withOptional = property.optional ? `${withArrayMin}.optional()` : withArrayMin;
115
+ // Langium's assignMandatoryProperties always materialises `[]` for array-typed
116
+ // properties — an array is never `undefined` in real parse output, regardless
117
+ // of the grammar's `optional` flag. `.optional()` here would admit a shape the
118
+ // parser never produces, so array properties skip it unconditionally.
119
+ const withOptional = property.optional && property.zodType.kind !== 'array'
120
+ ? `${withArrayMin}.optional()`
121
+ : withArrayMin;
93
122
  if (formMetadata && property.name !== '$type') {
94
123
  return `${withOptional}${renderMetaSuffix(property.name, property.comment)}`;
95
124
  }
@@ -128,7 +157,11 @@ function renderCrossRefPropertyExpression(property, formMetadata) {
128
157
  const withArrayMin = property.zodType.kind === 'array' && typeof property.minItems === 'number'
129
158
  ? `${baseExpression}.min(${property.minItems})`
130
159
  : baseExpression;
131
- const withOptional = property.optional ? `${withArrayMin}.optional()` : withArrayMin;
160
+ // See renderPropertyExpression: array properties never carry .optional() —
161
+ // Langium always materialises `[]`, never `undefined`, for array-typed props.
162
+ const withOptional = property.optional && property.zodType.kind !== 'array'
163
+ ? `${withArrayMin}.optional()`
164
+ : withArrayMin;
132
165
  if (formMetadata && property.name !== '$type') {
133
166
  return `${withOptional}${renderMetaSuffix(property.name, property.comment)}`;
134
167
  }
@@ -358,12 +391,15 @@ export function generateZodCode(descriptors, recursiveTypes, options = {}) {
358
391
  const objectMetaSuffix = options.formMetadata
359
392
  ? renderMetaSuffix(descriptor.name, descriptor.comment)
360
393
  : '';
394
+ const atLeastOneOfSuffix = descriptor.atLeastOneOf
395
+ ? renderAtLeastOneOfSuffix(descriptor.atLeastOneOf, descriptor.properties)
396
+ : '';
361
397
  if (hasRecursiveGetter) {
362
398
  lines.push(`export const ${descriptor.name}Schema = z.${objectMethodName}({`);
363
399
  for (const property of descriptor.properties) {
364
400
  lines.push(`${propertyLine(property, descriptor.name, recursiveTypes, unionNames, options.formMetadata)},`);
365
401
  }
366
- lines.push(`})${objectMetaSuffix};`);
402
+ lines.push(`})${objectMetaSuffix}${atLeastOneOfSuffix};`);
367
403
  lines.push('');
368
404
  continue;
369
405
  }
@@ -374,7 +410,7 @@ export function generateZodCode(descriptors, recursiveTypes, options = {}) {
374
410
  const objectBuilder = useLoose
375
411
  ? build.object(objectProperties).loose()
376
412
  : build.object(objectProperties);
377
- lines.push(`export const ${descriptor.name}Schema = ${objectBuilder.text()}${objectMetaSuffix};`);
413
+ lines.push(`export const ${descriptor.name}Schema = ${objectBuilder.text()}${objectMetaSuffix}${atLeastOneOfSuffix};`);
378
414
  lines.push('');
379
415
  }
380
416
  // 3. Discriminated union schemas last — all member object schemas are
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { PropertyLike } from './types.js';
2
+ /**
3
+ * Analyses an object type's properties to determine whether the grammar rule
4
+ * that produces it has a top-level `Alternatives` group whose branches are
5
+ * mutually exclusive property producers — meaning the parser can never produce
6
+ * an instance where NONE of the branch-introduced properties are populated.
7
+ *
8
+ * Returns the flat union of branch-introduced property names (the "at least one
9
+ * of" set) when:
10
+ * - the rule has an `Alternatives` ancestor common to its properties' `astNodes`,
11
+ * - that `Alternatives` is GUARANTEED TO EXECUTE — no `?`/`*` cardinality on the
12
+ * group itself or any ancestor element, no enclosing branch of an OUTER
13
+ * multi-way `Alternatives`, and no fragment-rule call-site boundary (an
14
+ * optional/starred/nested/optionally-called alternation may execute zero
15
+ * times, producing an object where every branch-introduced property is
16
+ * absent — the refinement would wrongly reject that legitimately-parsed
17
+ * shape),
18
+ * - every branch of that `Alternatives` contains at least one CHECKABLE
19
+ * (non-flag) `Assignment`/`Action` (a bare keyword-only branch, or a branch
20
+ * containing only a boolean flag, means the object can legally have zero of
21
+ * the candidate properties populated, so the refinement is dropped entirely), and
22
+ * - no single property is assigned on EVERY branch (such a property is already
23
+ * effectively mandatory; no refinement is needed).
24
+ *
25
+ * Boolean flag assignments (`?=`) are excluded from the returned set — Langium
26
+ * always serialises them as `false` when absent, so their "presence" can never
27
+ * distinguish an empty body from a populated one.
28
+ *
29
+ * Guards against a distinct false-positive shape: a rule like
30
+ * `A (op1 {infer Foo.x=current} ... | op2 {infer Bar.y=current} ...)*`, where
31
+ * an `Alternatives` selects between producing DIFFERENT inferred types (a
32
+ * type-union rule, not an intra-type alternation). Each branch's inferred type
33
+ * name (via the nearest `Action`) is compared against `typeName`; if any
34
+ * branch's subtree infers a DIFFERENT type, the whole `Alternatives` is
35
+ * irrelevant to this type's structure and is skipped.
36
+ *
37
+ * Returns `undefined` when the rule has no top-level `Alternatives` describing
38
+ * its OWN type, when that `Alternatives` is not guaranteed to execute, when any
39
+ * branch is keyword-only, or when a property spans every branch.
40
+ */
41
+ export declare function resolveAtLeastOneOf(typeName: string, properties: readonly PropertyLike[]): string[] | undefined;
42
+ //# sourceMappingURL=non-empty-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"non-empty-body.d.ts","sourceRoot":"","sources":["../src/non-empty-body.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4F/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,SAAS,YAAY,EAAE,GAClC,MAAM,EAAE,GAAG,SAAS,CAuFtB"}
@@ -0,0 +1,204 @@
1
+ import { GrammarAST, GrammarUtils } from 'langium';
2
+ import { isMandatoryOccurrence } from './array-min-occurrence.js';
3
+ /**
4
+ * Walks up from a grammar Assignment/Action node to find the nearest enclosing
5
+ * `Alternatives` element and the index of the branch (direct child of that
6
+ * `Alternatives`) that contains it. Returns `undefined` when no `Alternatives`
7
+ * ancestor exists before the owning `ParserRule`.
8
+ */
9
+ // Real grammar container chains are shallow (bounded by nesting depth in the
10
+ // source file); this cap only guards against a malformed/cyclic `$container`
11
+ // chain (e.g. a bad duck-typed test fixture) turning into an infinite loop.
12
+ const MAX_CONTAINER_WALK = 1000;
13
+ function findEnclosingBranch(node) {
14
+ let child = node;
15
+ let el = node;
16
+ for (let steps = 0; el && steps < MAX_CONTAINER_WALK; steps++) {
17
+ if (GrammarAST.isAlternatives(el)) {
18
+ const branchIndex = el.elements.indexOf(child);
19
+ if (branchIndex >= 0) {
20
+ return { alternatives: el, branchIndex };
21
+ }
22
+ }
23
+ if (GrammarAST.isParserRule(el)) {
24
+ return undefined;
25
+ }
26
+ child = el;
27
+ el = el.$container;
28
+ }
29
+ return undefined;
30
+ }
31
+ /**
32
+ * Determines whether a grammar `AbstractElement` subtree contains at least one
33
+ * CHECKABLE `Assignment`/`Action` that is MANDATORY WITHIN THE BRANCH — i.e.
34
+ * one guaranteed to occur whenever the branch is taken at all, whose presence
35
+ * in the parsed value can therefore distinguish "this branch was taken" from
36
+ * "nothing populated".
37
+ *
38
+ * Descends the subtree tracking cardinality along the way: any `?`/`*` on an
39
+ * element ANYWHERE between the branch root and a candidate assignment means
40
+ * that assignment is NOT guaranteed — the branch can be taken (e.g. via a
41
+ * leading keyword) while the optional/starred sub-element matches zero times,
42
+ * producing a parser-valid object where that assignment never fires. Such an
43
+ * assignment does not count, exactly like a bare keyword-only branch.
44
+ *
45
+ * Boolean flag assignments (`?=`) are EXCLUDED regardless of cardinality:
46
+ * Langium always serialises them as `false` when absent, so their presence
47
+ * can never distinguish an empty body from a populated one.
48
+ */
49
+ function branchHasCheckableAssignment(element) {
50
+ if (GrammarUtils.isOptionalCardinality(element.cardinality, element)) {
51
+ return false;
52
+ }
53
+ if (GrammarAST.isAssignment(element)) {
54
+ return element.operator !== '?=';
55
+ }
56
+ if (GrammarAST.isAction(element)) {
57
+ return true;
58
+ }
59
+ const withElements = element;
60
+ if (Array.isArray(withElements.elements)) {
61
+ return withElements.elements.some((child) => branchHasCheckableAssignment(child));
62
+ }
63
+ return false;
64
+ }
65
+ /**
66
+ * Finds the first `Action` (`{infer Type.feature=current}` or `{infer Type}`)
67
+ * anywhere in a branch's subtree and returns the type name it infers, if any.
68
+ * A branch with no `Action` infers no type of its own (it's a plain sub-group
69
+ * of the enclosing rule's own type).
70
+ */
71
+ function branchInferredTypeName(element) {
72
+ if (GrammarAST.isAction(element)) {
73
+ return element.inferredType?.name;
74
+ }
75
+ const withElements = element;
76
+ if (Array.isArray(withElements.elements)) {
77
+ for (const child of withElements.elements) {
78
+ const found = branchInferredTypeName(child);
79
+ if (found) {
80
+ return found;
81
+ }
82
+ }
83
+ }
84
+ return undefined;
85
+ }
86
+ /**
87
+ * Analyses an object type's properties to determine whether the grammar rule
88
+ * that produces it has a top-level `Alternatives` group whose branches are
89
+ * mutually exclusive property producers — meaning the parser can never produce
90
+ * an instance where NONE of the branch-introduced properties are populated.
91
+ *
92
+ * Returns the flat union of branch-introduced property names (the "at least one
93
+ * of" set) when:
94
+ * - the rule has an `Alternatives` ancestor common to its properties' `astNodes`,
95
+ * - that `Alternatives` is GUARANTEED TO EXECUTE — no `?`/`*` cardinality on the
96
+ * group itself or any ancestor element, no enclosing branch of an OUTER
97
+ * multi-way `Alternatives`, and no fragment-rule call-site boundary (an
98
+ * optional/starred/nested/optionally-called alternation may execute zero
99
+ * times, producing an object where every branch-introduced property is
100
+ * absent — the refinement would wrongly reject that legitimately-parsed
101
+ * shape),
102
+ * - every branch of that `Alternatives` contains at least one CHECKABLE
103
+ * (non-flag) `Assignment`/`Action` (a bare keyword-only branch, or a branch
104
+ * containing only a boolean flag, means the object can legally have zero of
105
+ * the candidate properties populated, so the refinement is dropped entirely), and
106
+ * - no single property is assigned on EVERY branch (such a property is already
107
+ * effectively mandatory; no refinement is needed).
108
+ *
109
+ * Boolean flag assignments (`?=`) are excluded from the returned set — Langium
110
+ * always serialises them as `false` when absent, so their "presence" can never
111
+ * distinguish an empty body from a populated one.
112
+ *
113
+ * Guards against a distinct false-positive shape: a rule like
114
+ * `A (op1 {infer Foo.x=current} ... | op2 {infer Bar.y=current} ...)*`, where
115
+ * an `Alternatives` selects between producing DIFFERENT inferred types (a
116
+ * type-union rule, not an intra-type alternation). Each branch's inferred type
117
+ * name (via the nearest `Action`) is compared against `typeName`; if any
118
+ * branch's subtree infers a DIFFERENT type, the whole `Alternatives` is
119
+ * irrelevant to this type's structure and is skipped.
120
+ *
121
+ * Returns `undefined` when the rule has no top-level `Alternatives` describing
122
+ * its OWN type, when that `Alternatives` is not guaranteed to execute, when any
123
+ * branch is keyword-only, or when a property spans every branch.
124
+ */
125
+ export function resolveAtLeastOneOf(typeName, properties) {
126
+ // Map each candidate property to the set of branch indices it appears under
127
+ // (within a single shared Alternatives ancestor). Properties with astNodes
128
+ // outside any Alternatives (or under a different Alternatives) are ignored.
129
+ let sharedAlternatives;
130
+ const propertyBranches = new Map();
131
+ for (const property of properties) {
132
+ if (!property.astNodes) {
133
+ continue;
134
+ }
135
+ for (const node of property.astNodes) {
136
+ const isFlagAssignment = GrammarAST.isAssignment(node) && node.operator === '?=';
137
+ const found = findEnclosingBranch(node);
138
+ if (!found) {
139
+ continue;
140
+ }
141
+ if (!sharedAlternatives) {
142
+ sharedAlternatives = found.alternatives;
143
+ }
144
+ else if (sharedAlternatives !== found.alternatives) {
145
+ // Properties span more than one distinct Alternatives group — too
146
+ // complex to reliably reason about; bail out.
147
+ return undefined;
148
+ }
149
+ if (!isFlagAssignment) {
150
+ let branches = propertyBranches.get(property.name);
151
+ if (!branches) {
152
+ branches = new Set();
153
+ propertyBranches.set(property.name, branches);
154
+ }
155
+ branches.add(found.branchIndex);
156
+ }
157
+ }
158
+ }
159
+ if (!sharedAlternatives || sharedAlternatives.elements.length < 2) {
160
+ return undefined;
161
+ }
162
+ // The Alternatives group itself must be GUARANTEED TO EXECUTE — reject any
163
+ // `?`/`*` cardinality on the group or any ancestor element up to the
164
+ // ParserRule (an optional/starred alternation may execute zero times,
165
+ // producing an object where every branch-introduced property is absent —
166
+ // exactly the shape the refinement would wrongly reject), one branch of an
167
+ // OUTER multi-way Alternatives (nested alternation, same reasoning), and any
168
+ // fragment-rule boundary (the call site's cardinality is invisible from
169
+ // here — conservatively treat as optional, mirroring array-min-occurrence's
170
+ // fragment handling).
171
+ if (!isMandatoryOccurrence(sharedAlternatives)) {
172
+ return undefined;
173
+ }
174
+ // Every branch must belong to `typeName` — a branch whose subtree infers a
175
+ // DIFFERENT type means this Alternatives selects between producing distinct
176
+ // types (a type-union rule), not alternative property-sets of `typeName`.
177
+ const everyBranchOwnsType = sharedAlternatives.elements.every((branchElement) => {
178
+ const inferred = branchInferredTypeName(branchElement);
179
+ return inferred === undefined || inferred === typeName;
180
+ });
181
+ if (!everyBranchOwnsType) {
182
+ return undefined;
183
+ }
184
+ // Every branch of the Alternatives must guarantee at least one CHECKABLE
185
+ // (non-flag) assignment — a keyword-only branch, or a branch containing only
186
+ // a boolean flag, means the object can legally have none of the candidate
187
+ // properties populated.
188
+ const everyBranchAssigns = sharedAlternatives.elements.every((branchElement) => branchHasCheckableAssignment(branchElement));
189
+ if (!everyBranchAssigns) {
190
+ return undefined;
191
+ }
192
+ const branchCount = sharedAlternatives.elements.length;
193
+ const atLeastOneOf = new Set();
194
+ for (const [propertyName, branches] of propertyBranches) {
195
+ // A property assigned on every branch is already effectively mandatory —
196
+ // no refinement is needed (and including it would make the check vacuous).
197
+ if (branches.size >= branchCount) {
198
+ return undefined;
199
+ }
200
+ atLeastOneOf.add(propertyName);
201
+ }
202
+ return atLeastOneOf.size > 0 ? [...atLeastOneOf] : undefined;
203
+ }
204
+ //# sourceMappingURL=non-empty-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"non-empty-body.js","sourceRoot":"","sources":["../src/non-empty-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;GAKG;AACH,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,SAAS,mBAAmB,CAC1B,IAAa;IAEb,IAAI,KAAK,GAAY,IAAI,CAAC;IAC1B,IAAI,EAAE,GAAwB,IAAI,CAAC;IACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,EAAE,IAAI,KAAK,GAAG,kBAAkB,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9D,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAmC,CAAC,CAAC;YAC7E,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,GAAG,EAAE,CAAC;QACX,EAAE,GAAG,EAAE,CAAC,UAAiC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,4BAA4B,CAAC,OAAmC;IACvE,IAAI,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;IACnC,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAG,OAAiE,CAAC;IACvF,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,OAAmC;IACjE,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;IACpC,CAAC;IACD,MAAM,YAAY,GAAG,OAAiE,CAAC;IACvF,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,UAAmC;IAEnC,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,kBAAuD,CAAC;IAC5D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAExD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;YACjF,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAAC;YAC1C,CAAC;iBAAM,IAAI,kBAAkB,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrD,kEAAkE;gBAClE,8CAA8C;gBAC9C,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;oBACrB,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAChD,CAAC;gBACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,qEAAqE;IACrE,sEAAsE;IACtE,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,wEAAwE;IACxE,4EAA4E;IAC5E,sBAAsB;IACtB,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,EAAE;QAC9E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACvD,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,6EAA6E;IAC7E,0EAA0E;IAC1E,wBAAwB;IACxB,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,EAAE,CAC7E,4BAA4B,CAAC,aAAa,CAAC,CAC5C,CAAC;IACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACxD,yEAAyE;QACzE,2EAA2E;QAC3E,IAAI,QAAQ,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC"}
package/dist/types.d.ts CHANGED
@@ -80,6 +80,15 @@ export interface ZodObjectTypeDescriptor {
80
80
  kind: 'object';
81
81
  properties: ZodPropertyDescriptor[];
82
82
  comment?: string;
83
+ /**
84
+ * Property names forming an "at least one of" constraint: the grammar rule
85
+ * that produces this type has a top-level `Alternatives` group whose branches
86
+ * are mutually-exclusive property producers, so the parser can never yield an
87
+ * instance where NONE of these properties are populated. When present, the
88
+ * generator emits a `.superRefine` requiring at least one listed property to
89
+ * be non-empty/defined. See {@link resolveAtLeastOneOf}.
90
+ */
91
+ atLeastOneOf?: string[];
83
92
  }
84
93
  export interface ZodUnionTypeDescriptor {
85
94
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "langium-zod",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "type": "module",
5
5
  "description": "Langium generator plugin that derives Zod schemas from grammar definitions",
6
6
  "keywords": [
@@ -43,15 +43,15 @@
43
43
  ],
44
44
  "dependencies": {
45
45
  "humanize-string": "^3.1.0",
46
- "langium": "^4.2.4",
46
+ "langium": "^4.3.1",
47
47
  "x-to-zod": "^0.10.3",
48
48
  "zod": "^4.4.3"
49
49
  },
50
50
  "devDependencies": {
51
- "@types/node": "^25.9.1",
52
- "langium-cli": "^4.2.1",
51
+ "@types/node": "^26.1.0",
52
+ "langium-cli": "^4.3.0",
53
53
  "typescript": "^6.0.3",
54
- "vitest": "^4.1.7"
54
+ "vitest": "^4.1.9"
55
55
  },
56
56
  "author": "Pradeep Mouli <pmouli@mac.com> (https://github.com/pradeepmouli)",
57
57
  "scripts": {