langium-zod 0.3.6 → 0.4.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/dist/cli.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ import type { ZodGeneratorConfig } from './config.js';
3
+ /** User-facing config file shape (langium-zod.config.js / .ts) */
4
+ export interface LangiumZodConfig extends Omit<ZodGeneratorConfig, 'grammar' | 'services' | 'astTypes'> {
5
+ /**
6
+ * Path to `langium-config.json`. Defaults to `langium-config.json` in cwd.
7
+ * Only used when picked up via the CLI; programmatic API ignores it.
8
+ */
9
+ langiumConfig?: string;
10
+ /** Explicit output path. Overrides derived path from langium-config.json `out` field. */
11
+ outputPath?: string;
12
+ }
13
+ export interface GenerateOptions {
14
+ /** Absolute path to langium-config.json */
15
+ langiumConfigPath: string;
16
+ /** Merged generator config (from user's langium-zod.config.js + CLI flags) */
17
+ config?: LangiumZodConfig;
18
+ }
19
+ export declare function generate(opts: GenerateOptions): Promise<void>;
20
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOtD,kEAAkE;AAClE,MAAM,WAAW,gBAChB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IACrE;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAuED,MAAM,WAAW,eAAe;IAC/B,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DnE"}
package/dist/cli.js ADDED
@@ -0,0 +1,171 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * langium-zod CLI
4
+ *
5
+ * Usage:
6
+ * langium-zod generate [--config langium-config.json] [--out src/generated/zod-schemas.ts]
7
+ * langium-zod --help
8
+ */
9
+ import { existsSync, readFileSync } from 'node:fs';
10
+ import { dirname, join, resolve } from 'node:path';
11
+ import { pathToFileURL } from 'node:url';
12
+ import { URI } from 'langium';
13
+ import { createLangiumGrammarServices, resolveImportUri } from 'langium/grammar';
14
+ import { NodeFileSystem } from 'langium/node';
15
+ import { generateZodSchemas } from './api.js';
16
+ // ────────────────────────────────────────────────────────────────────────────
17
+ // Helpers
18
+ // ────────────────────────────────────────────────────────────────────────────
19
+ function printHelp() {
20
+ console.log(`
21
+ langium-zod — generate Zod schemas from Langium grammar files
22
+
23
+ USAGE
24
+ langium-zod generate [options]
25
+
26
+ OPTIONS
27
+ --config <path> Path to langium-config.json (default: langium-config.json)
28
+ --out <path> Output file path (default: <out>/zod-schemas.ts)
29
+ --help Show this help message
30
+
31
+ CONFIGURATION
32
+ Create a langium-zod.config.js (or .mjs) in the same directory as
33
+ langium-config.json to customise generation:
34
+
35
+ // langium-zod.config.js
36
+ export default {
37
+ outputPath: 'src/generated/zod-schemas.ts',
38
+ regexOverrides: {
39
+ BigDecimal: String.raw\`^[+-]?(\\.[0-9]+|[0-9]+\\.[0-9]*)([eE][+-]?[0-9]+)?$\`,
40
+ },
41
+ include: [], // allowlist of type names to include
42
+ exclude: [], // blocklist of type names to exclude
43
+ };
44
+ `);
45
+ }
46
+ /**
47
+ * Recursively load imported grammar files so that DocumentBuilder can link
48
+ * cross-file references correctly (mirrors langium-cli's eagerLoad strategy).
49
+ */
50
+ async function eagerLoad(document, documents, visited = new Set()) {
51
+ const key = document.uri.toString();
52
+ if (visited.has(key))
53
+ return;
54
+ visited.add(key);
55
+ const grammar = document.parseResult?.value;
56
+ if (!grammar)
57
+ return;
58
+ // Grammar.imports is an array of GrammarImport nodes; resolveImportUri handles the URI
59
+ const imports = grammar.imports ?? [];
60
+ for (const imp of imports) {
61
+ const importUri = resolveImportUri(imp);
62
+ if (importUri) {
63
+ const importedDoc = await documents.getOrCreateDocument(importUri);
64
+ await eagerLoad(importedDoc, documents, visited);
65
+ }
66
+ }
67
+ }
68
+ export async function generate(opts) {
69
+ const { langiumConfigPath } = opts;
70
+ const userConfig = opts.config ?? {};
71
+ // ── 1. Load langium-config.json ─────────────────────────────────────────
72
+ if (!existsSync(langiumConfigPath)) {
73
+ throw new Error(`langium-config.json not found: ${langiumConfigPath}`);
74
+ }
75
+ const langiumConfig = JSON.parse(readFileSync(langiumConfigPath, 'utf8'));
76
+ const configDir = dirname(langiumConfigPath);
77
+ const languages = langiumConfig.languages;
78
+ if (!languages || languages.length === 0) {
79
+ throw new Error('No languages defined in langium-config.json');
80
+ }
81
+ const grammarRelPath = languages[0].grammar;
82
+ const grammarAbsPath = resolve(configDir, grammarRelPath);
83
+ if (!existsSync(grammarAbsPath)) {
84
+ throw new Error(`Grammar file not found: ${grammarAbsPath}`);
85
+ }
86
+ // ── 2. Resolve output path ───────────────────────────────────────────────
87
+ const outDir = langiumConfig.out
88
+ ? resolve(configDir, langiumConfig.out)
89
+ : resolve(configDir, 'src/generated');
90
+ const outputPath = userConfig.outputPath ?? join(outDir, 'zod-schemas.ts');
91
+ // ── 3. Parse grammar using Langium services ──────────────────────────────
92
+ const { shared, grammar: grammarServices } = createLangiumGrammarServices(NodeFileSystem);
93
+ void grammarServices; // used only for type-checking if needed later
94
+ const langiumDocuments = shared.workspace.LangiumDocuments;
95
+ const documentBuilder = shared.workspace.DocumentBuilder;
96
+ const grammarUri = URI.file(grammarAbsPath);
97
+ const entryDocument = await langiumDocuments.getOrCreateDocument(grammarUri);
98
+ // Recursively load imported files so references resolve correctly
99
+ await eagerLoad(entryDocument, langiumDocuments);
100
+ // Build (parse + link) all loaded documents
101
+ await documentBuilder.build(langiumDocuments.all.toArray(), {
102
+ validation: false,
103
+ });
104
+ const grammar = entryDocument.parseResult.value;
105
+ // ── 4. Generate schemas ──────────────────────────────────────────────────
106
+ const { langiumConfig: _ignored, outputPath: _op, ...restConfig } = userConfig;
107
+ generateZodSchemas({
108
+ grammar,
109
+ outputPath,
110
+ ...restConfig,
111
+ });
112
+ console.log(`✓ Generated Zod schemas → ${outputPath}`);
113
+ }
114
+ // ────────────────────────────────────────────────────────────────────────────
115
+ // CLI entry point
116
+ // ────────────────────────────────────────────────────────────────────────────
117
+ async function main() {
118
+ const args = process.argv.slice(2);
119
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
120
+ printHelp();
121
+ process.exit(0);
122
+ }
123
+ const command = args[0];
124
+ if (command !== 'generate') {
125
+ console.error(`Unknown command: ${command}`);
126
+ printHelp();
127
+ process.exit(1);
128
+ }
129
+ // ── Parse flags ──────────────────────────────────────────────────────────
130
+ const configFlagIdx = args.indexOf('--config');
131
+ const configFlagValue = configFlagIdx >= 0 ? args[configFlagIdx + 1] : undefined;
132
+ const outFlagIdx = args.indexOf('--out');
133
+ const outFlagValue = outFlagIdx >= 0 ? args[outFlagIdx + 1] : undefined;
134
+ // ── Locate langium-config.json ───────────────────────────────────────────
135
+ const configFileName = configFlagValue ?? 'langium-config.json';
136
+ const langiumConfigPath = resolve(process.cwd(), configFileName);
137
+ // ── Load optional langium-zod.config.js ──────────────────────────────────
138
+ const configDir = dirname(langiumConfigPath);
139
+ let userConfig = {};
140
+ for (const candidate of [
141
+ 'langium-zod.config.js',
142
+ 'langium-zod.config.mjs',
143
+ ]) {
144
+ const candidatePath = join(configDir, candidate);
145
+ if (existsSync(candidatePath)) {
146
+ const mod = await import(pathToFileURL(candidatePath).href);
147
+ userConfig = (mod.default ?? mod);
148
+ break;
149
+ }
150
+ }
151
+ // CLI --out flag overrides config file outputPath
152
+ if (outFlagValue) {
153
+ userConfig = { ...userConfig, outputPath: resolve(process.cwd(), outFlagValue) };
154
+ }
155
+ try {
156
+ await generate({ langiumConfigPath, config: userConfig });
157
+ }
158
+ catch (err) {
159
+ console.error('Error:', err instanceof Error ? err.message : String(err));
160
+ process.exit(1);
161
+ }
162
+ }
163
+ // Guard against library imports running the CLI
164
+ const isMain = process.argv[1] != null &&
165
+ (process.argv[1].endsWith('/cli.js') ||
166
+ process.argv[1].endsWith('/cli.ts') ||
167
+ process.argv[1].endsWith('langium-zod'));
168
+ if (isMain) {
169
+ void main();
170
+ }
171
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/di.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../src/di.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC;CACzE;AAED,qBAAa,yBAA0B,YAAW,kBAAkB;;gBAGvD,QAAQ,EAAE,mBAAmB;IAIzC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM;CASxE;AAED,MAAM,MAAM,0BAA0B,GAAG;IACxC,MAAM,EAAE;QACP,kBAAkB,EAAE,kBAAkB,CAAC;KACvC,CAAC;CACF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAIrB,MAAM,CAAC,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../src/di.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC;CACzE;AAED,qBAAa,yBAA0B,YAAW,kBAAkB;;gBAGvD,QAAQ,EAAE,mBAAmB;IAIzC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM;CAUxE;AAED,MAAM,MAAM,0BAA0B,GAAG;IACxC,MAAM,EAAE;QACP,kBAAkB,EAAE,kBAAkB,CAAC;KACvC,CAAC;CACF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAIrB,MAAM,CAAC,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC"}
package/dist/di.js CHANGED
@@ -10,7 +10,8 @@ export class DefaultZodSchemaGenerator {
10
10
  services: this.#services,
11
11
  include: config?.include,
12
12
  exclude: config?.exclude,
13
- outputPath: config?.outputPath
13
+ outputPath: config?.outputPath,
14
+ regexOverrides: config?.regexOverrides
14
15
  });
15
16
  }
16
17
  }
package/dist/di.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"di.js","sourceRoot":"","sources":["../src/di.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAM9C,MAAM,OAAO,yBAAyB;IACrC,SAAS,CAAsB;IAE/B,YAAY,QAA6B;QACxC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,OAAgB,EAAE,MAAoC;QAC9D,OAAO,kBAAkB,CAAC;YACzB,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,OAAO,EAAE,MAAM,EAAE,OAAO;YACxB,OAAO,EAAE,MAAM,EAAE,OAAO;YACxB,UAAU,EAAE,MAAM,EAAE,UAAU;SAC9B,CAAC,CAAC;IACJ,CAAC;CACD;AAQD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,MAAM,EAAE;QACP,kBAAkB,EAAE,CAAC,QAA6B,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,QAAQ,CAAC;KAC9F;CACqF,CAAC"}
1
+ {"version":3,"file":"di.js","sourceRoot":"","sources":["../src/di.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAM9C,MAAM,OAAO,yBAAyB;IACrC,SAAS,CAAsB;IAE/B,YAAY,QAA6B;QACxC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,OAAgB,EAAE,MAAoC;QAC9D,OAAO,kBAAkB,CAAC;YACzB,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,OAAO,EAAE,MAAM,EAAE,OAAO;YACxB,OAAO,EAAE,MAAM,EAAE,OAAO;YACxB,UAAU,EAAE,MAAM,EAAE,UAAU;YAC9B,cAAc,EAAE,MAAM,EAAE,cAAc;SACtC,CAAC,CAAC;IACJ,CAAC;CACD;AAQD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,MAAM,EAAE;QACP,kBAAkB,EAAE,CAAC,QAA6B,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,QAAQ,CAAC;KAC9F;CACqF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,8 @@ export { ZodGeneratorError } from './errors.js';
5
5
  export { extractTypeDescriptors } from './extractor.js';
6
6
  export { generateZodCode } from './generator.js';
7
7
  export { detectRecursiveTypes } from './recursion-detector.js';
8
+ export { generate } from './cli.js';
9
+ export type { GenerateOptions, LangiumZodConfig } from './cli.js';
8
10
  export type { AstTypesLike, InterfaceTypeLike, PropertyLike, UnionTypeLike, ZodPropertyDescriptor, ZodTypeDescriptor, ZodTypeExpression } from './types.js';
9
11
  export { DefaultZodSchemaGenerator, ZodSchemaGeneratorModule } from './di.js';
10
12
  export type { ZodSchemaGenerator, ZodSchemaGeneratorServices } from './di.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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,YAAY,EACX,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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,EACX,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -4,5 +4,6 @@ export { ZodGeneratorError } from './errors.js';
4
4
  export { extractTypeDescriptors } from './extractor.js';
5
5
  export { generateZodCode } from './generator.js';
6
6
  export { detectRecursiveTypes } from './recursion-detector.js';
7
+ export { generate } from './cli.js';
7
8
  export { DefaultZodSchemaGenerator, ZodSchemaGeneratorModule } from './di.js';
8
9
  //# 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,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;AAU/D,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "langium-zod",
3
- "version": "0.3.6",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "Langium generator plugin that derives Zod schemas from grammar definitions",
6
6
  "keywords": [
@@ -25,10 +25,17 @@
25
25
  },
26
26
  "main": "./dist/index.js",
27
27
  "types": "./dist/index.d.ts",
28
+ "bin": {
29
+ "langium-zod": "./dist/cli.js"
30
+ },
28
31
  "exports": {
29
32
  ".": {
30
33
  "types": "./dist/index.d.ts",
31
34
  "import": "./dist/index.js"
35
+ },
36
+ "./cli": {
37
+ "types": "./dist/cli.d.ts",
38
+ "import": "./dist/cli.js"
32
39
  }
33
40
  },
34
41
  "files": [