langium-zod 0.8.0 → 0.8.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.
|
@@ -1,3 +1,26 @@
|
|
|
1
1
|
import type { ZodTypeDescriptor } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a TypeScript `domain.ts` that re-exports all AST interface types
|
|
4
|
+
* from `./ast.js` and merges namespace-scoped ops for each member-container type.
|
|
5
|
+
*
|
|
6
|
+
* Array fields → 6-op set (get/add/insertAt/removeAt/setAt/moveAt).
|
|
7
|
+
* Single contained-node fields → setXxx (+ clearXxx if optional).
|
|
8
|
+
* Cross-reference fields → setXxx using $namespace.name (+ clearXxx if optional).
|
|
9
|
+
* Primitive/literal fields → skipped.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* No import-alias suffix is used. The generated `domain.ts` is a single barrel:
|
|
13
|
+
*
|
|
14
|
+
* import * as ast from './ast.js';
|
|
15
|
+
* export * from './ast.js'; // forwards every guard / reflection / non-namespaced type
|
|
16
|
+
* export type Data = ast.Data; // local type alias — shadows the star-exported interface
|
|
17
|
+
* export namespace Data { ... } // local value — shadows the star-exported reflection const
|
|
18
|
+
*
|
|
19
|
+
* A local `type` + `namespace` pair under the same name merges (type space + value space)
|
|
20
|
+
* and, per TypeScript export precedence, shadows the corresponding names brought in by
|
|
21
|
+
* `export * from './ast.js'`. So function signatures reference bare `Data` / `Attribute`,
|
|
22
|
+
* which resolve to the local alias (namespaced types) or the star-exported interface
|
|
23
|
+
* (non-namespaced element types) — no `$`-suffixed aliases, no TS2395.
|
|
24
|
+
*/
|
|
2
25
|
export declare function generateNamespaceOps(types: ZodTypeDescriptor[]): string;
|
|
3
26
|
//# sourceMappingURL=namespace-ops.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace-ops.d.ts","sourceRoot":"","sources":["../../src/emitters/namespace-ops.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA2B,iBAAiB,EAAqB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"namespace-ops.d.ts","sourceRoot":"","sources":["../../src/emitters/namespace-ops.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA2B,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AAmKjG;;;;;;;;GAQG;AACH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,MAAM,CA0BvE"}
|
|
@@ -35,6 +35,15 @@ function safeParam(name) {
|
|
|
35
35
|
function singularize(name) {
|
|
36
36
|
return name.endsWith('s') ? name.slice(0, -1) : name;
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Qualify an AST type name through the `import * as ast` namespace binding.
|
|
40
|
+
* `export * from './ast.js'` re-exports names to consumers but does NOT bring them
|
|
41
|
+
* into this module's lexical scope, so signatures must reference `ast.Foo` (a real
|
|
42
|
+
* local binding) rather than a bare `Foo`.
|
|
43
|
+
*/
|
|
44
|
+
function astRef(typeName) {
|
|
45
|
+
return `ast.${typeName}`;
|
|
46
|
+
}
|
|
38
47
|
function capitalize(s) {
|
|
39
48
|
return s.length === 0 ? s : `${s[0].toUpperCase()}${s.slice(1)}`;
|
|
40
49
|
}
|
|
@@ -44,24 +53,25 @@ function emitArrayOps(typeName, field) {
|
|
|
44
53
|
const safeSingular = safeParam(singular);
|
|
45
54
|
const Singular = capitalize(singular);
|
|
46
55
|
const Field = capitalize(fieldName);
|
|
47
|
-
const
|
|
56
|
+
const T = astRef(typeName);
|
|
57
|
+
const E = astRef(elementType);
|
|
48
58
|
const lines = [
|
|
49
|
-
` export function get${Field}(node: Dehydrated<${
|
|
59
|
+
` export function get${Field}(node: Dehydrated<${T}>): Dehydrated<${E}>[] {`,
|
|
50
60
|
` return node.${fieldName};`,
|
|
51
61
|
` }`,
|
|
52
|
-
` export function add${Singular}(node: Dehydrated<${
|
|
62
|
+
` export function add${Singular}(node: Dehydrated<${T}>, ${safeSingular}: Dehydrated<${E}>): void {`,
|
|
53
63
|
` node.${fieldName}.push(${safeSingular});`,
|
|
54
64
|
` }`,
|
|
55
|
-
` export function insert${Singular}At(node: Dehydrated<${
|
|
65
|
+
` export function insert${Singular}At(node: Dehydrated<${T}>, index: number, ${safeSingular}: Dehydrated<${E}>): void {`,
|
|
56
66
|
` node.${fieldName}.splice(index, 0, ${safeSingular});`,
|
|
57
67
|
` }`,
|
|
58
|
-
` export function remove${Singular}At(node: Dehydrated<${
|
|
68
|
+
` export function remove${Singular}At(node: Dehydrated<${T}>, index: number): void {`,
|
|
59
69
|
` node.${fieldName}.splice(index, 1);`,
|
|
60
70
|
` }`,
|
|
61
|
-
` export function set${Singular}At(node: Dehydrated<${
|
|
71
|
+
` export function set${Singular}At(node: Dehydrated<${T}>, index: number, ${safeSingular}: Dehydrated<${E}>): void {`,
|
|
62
72
|
` node.${fieldName}[index] = ${safeSingular};`,
|
|
63
73
|
` }`,
|
|
64
|
-
` export function move${Singular}At(node: Dehydrated<${
|
|
74
|
+
` export function move${Singular}At(node: Dehydrated<${T}>, from: number, to: number): void {`,
|
|
65
75
|
` const [item] = node.${fieldName}.splice(from, 1);`,
|
|
66
76
|
` if (item === undefined) return;`,
|
|
67
77
|
` node.${fieldName}.splice(to, 0, item);`,
|
|
@@ -73,28 +83,29 @@ function emitSingleNodeOps(typeName, field) {
|
|
|
73
83
|
const { fieldName, typeName: fieldTypeName, optional } = field;
|
|
74
84
|
const safeFieldParam = safeParam(fieldName);
|
|
75
85
|
const Field = capitalize(fieldName);
|
|
76
|
-
const
|
|
86
|
+
const T = astRef(typeName);
|
|
87
|
+
const F = astRef(fieldTypeName);
|
|
77
88
|
const lines = [
|
|
78
|
-
` export function set${Field}(node: Dehydrated<${
|
|
89
|
+
` export function set${Field}(node: Dehydrated<${T}>, ${safeFieldParam}: Dehydrated<${F}>): void {`,
|
|
79
90
|
` node.${fieldName} = ${safeFieldParam};`,
|
|
80
91
|
` }`,
|
|
81
92
|
];
|
|
82
93
|
if (optional) {
|
|
83
|
-
lines.push(` export function clear${Field}(node: Dehydrated<${
|
|
94
|
+
lines.push(` export function clear${Field}(node: Dehydrated<${T}>): void {`, ` node.${fieldName} = undefined;`, ` }`);
|
|
84
95
|
}
|
|
85
96
|
return lines.join('\n');
|
|
86
97
|
}
|
|
87
98
|
function emitCrossRefOps(typeName, field) {
|
|
88
99
|
const { fieldName, optional } = field;
|
|
89
100
|
const Field = capitalize(fieldName);
|
|
90
|
-
const
|
|
101
|
+
const T = astRef(typeName);
|
|
91
102
|
const lines = [
|
|
92
|
-
` export function set${Field}(node: Dehydrated<${
|
|
103
|
+
` export function set${Field}(node: Dehydrated<${T}>, refText: string): void {`,
|
|
93
104
|
` node.${fieldName} = { $refText: refText };`,
|
|
94
105
|
` }`,
|
|
95
106
|
];
|
|
96
107
|
if (optional) {
|
|
97
|
-
lines.push(` export function clear${Field}(node: Dehydrated<${
|
|
108
|
+
lines.push(` export function clear${Field}(node: Dehydrated<${T}>): void {`, ` node.${fieldName} = undefined;`, ` }`);
|
|
98
109
|
}
|
|
99
110
|
return lines.join('\n');
|
|
100
111
|
}
|
|
@@ -128,30 +139,40 @@ function emitNamespace(descriptor, objectTypeNames) {
|
|
|
128
139
|
* Primitive/literal fields → skipped.
|
|
129
140
|
*/
|
|
130
141
|
/**
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
142
|
+
* No import-alias suffix is used. The generated `domain.ts` is a single barrel:
|
|
143
|
+
*
|
|
144
|
+
* import * as ast from './ast.js';
|
|
145
|
+
* export * from './ast.js'; // forwards every guard / reflection / non-namespaced type
|
|
146
|
+
* export type Data = ast.Data; // local type alias — shadows the star-exported interface
|
|
147
|
+
* export namespace Data { ... } // local value — shadows the star-exported reflection const
|
|
148
|
+
*
|
|
149
|
+
* A local `type` + `namespace` pair under the same name merges (type space + value space)
|
|
150
|
+
* and, per TypeScript export precedence, shadows the corresponding names brought in by
|
|
151
|
+
* `export * from './ast.js'`. So function signatures reference bare `Data` / `Attribute`,
|
|
152
|
+
* which resolve to the local alias (namespaced types) or the star-exported interface
|
|
153
|
+
* (non-namespaced element types) — no `$`-suffixed aliases, no TS2395.
|
|
135
154
|
*/
|
|
136
|
-
const IMPORT_ALIAS_SUFFIX = '$';
|
|
137
155
|
export function generateNamespaceOps(types) {
|
|
138
156
|
const objectTypes = types.filter((t) => t.kind === 'object');
|
|
139
|
-
const
|
|
140
|
-
const objectTypeNames = new Set(typeNames);
|
|
157
|
+
const objectTypeNames = new Set(objectTypes.map((t) => t.name));
|
|
141
158
|
const parts = [];
|
|
142
|
-
|
|
143
|
-
if (typeNames.length > 0) {
|
|
144
|
-
const aliasedImports = typeNames.map((n) => `${n} as ${n}${IMPORT_ALIAS_SUFFIX}`).join(', ');
|
|
145
|
-
parts.push(`import type { ${aliasedImports} } from './ast.js';`);
|
|
146
|
-
}
|
|
147
|
-
parts.push('');
|
|
159
|
+
parts.push(`import * as ast from './ast.js';`);
|
|
148
160
|
parts.push(`import type { Dehydrated } from '../serializer/dehydrated.js';`);
|
|
161
|
+
parts.push('');
|
|
162
|
+
// Re-export the entire AST surface (interfaces, type guards, reflection, terminals,
|
|
163
|
+
// union types) so `domain.ts` is the sole core barrel. The per-type `export type` and
|
|
164
|
+
// `export namespace` declarations below shadow the interface + reflection-const for the
|
|
165
|
+
// namespaced types; everything else flows through unchanged.
|
|
166
|
+
parts.push(`export * from './ast.js';`);
|
|
149
167
|
for (const descriptor of objectTypes) {
|
|
150
168
|
const ns = emitNamespace(descriptor, objectTypeNames);
|
|
151
|
-
if (ns
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
169
|
+
if (ns === null)
|
|
170
|
+
continue;
|
|
171
|
+
parts.push('');
|
|
172
|
+
// Local type alias re-exposes the interface under the same name the namespace uses,
|
|
173
|
+
// so the merged `Data` is both a type and an ops namespace at every call site.
|
|
174
|
+
parts.push(`export type ${descriptor.name} = ast.${descriptor.name};`);
|
|
175
|
+
parts.push(ns);
|
|
155
176
|
}
|
|
156
177
|
return parts.join('\n') + '\n';
|
|
157
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace-ops.js","sourceRoot":"","sources":["../../src/emitters/namespace-ops.ts"],"names":[],"mappings":"AASA,SAAS,aAAa,CACpB,SAAiB,EACjB,OAA0B,EAC1B,QAAiB,EACjB,eAA4B;IAE5B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/D,CAAC;QACD,wGAAwG;QACxG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACjC,oEAAoE;QACpE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACnE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACtC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,oEAAoE;AACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;IAC7E,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK;IAC9E,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IAChF,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAClF,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ;IACnF,QAAQ,EAAE,MAAM,EAAE,OAAO;CAC1B,CAAC,CAAC;AAEH,yFAAyF;AACzF,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,6FAA6F;AAC7F,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,KAA2C;IACjF,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"namespace-ops.js","sourceRoot":"","sources":["../../src/emitters/namespace-ops.ts"],"names":[],"mappings":"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"}
|