@manifesto-ai/compiler 1.6.2 → 1.8.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.
Files changed (201) hide show
  1. package/README.md +67 -18
  2. package/dist/chunk-BH25NHMN.js +74 -0
  3. package/dist/chunk-BH25NHMN.js.map +1 -0
  4. package/dist/chunk-D62NIFP4.js +33 -0
  5. package/dist/chunk-D62NIFP4.js.map +1 -0
  6. package/dist/chunk-MKLDAZ2Z.js +6920 -0
  7. package/dist/chunk-MKLDAZ2Z.js.map +1 -0
  8. package/dist/esbuild.d.ts +8 -0
  9. package/dist/esbuild.js +14 -0
  10. package/dist/esbuild.js.map +1 -0
  11. package/dist/index.d.ts +2810 -11
  12. package/dist/index.js +2425 -43
  13. package/dist/index.js.map +1 -1
  14. package/dist/node-loader.d.ts +18 -0
  15. package/dist/node-loader.js +47 -0
  16. package/dist/node-loader.js.map +1 -0
  17. package/dist/rollup.d.ts +8 -0
  18. package/dist/rollup.js +14 -0
  19. package/dist/rollup.js.map +1 -0
  20. package/dist/rspack.d.ts +7 -0
  21. package/dist/rspack.js +14 -0
  22. package/dist/rspack.js.map +1 -0
  23. package/dist/unplugin-6wnvFiEo.d.ts +17 -0
  24. package/dist/vite.d.ts +8 -17
  25. package/dist/vite.js +13 -33
  26. package/dist/vite.js.map +1 -1
  27. package/dist/webpack.d.ts +8 -0
  28. package/dist/webpack.js +14 -0
  29. package/dist/webpack.js.map +1 -0
  30. package/package.json +40 -22
  31. package/dist/analyzer/index.d.ts +0 -6
  32. package/dist/analyzer/index.d.ts.map +0 -1
  33. package/dist/analyzer/index.js +0 -6
  34. package/dist/analyzer/index.js.map +0 -1
  35. package/dist/analyzer/scope.d.ts +0 -77
  36. package/dist/analyzer/scope.d.ts.map +0 -1
  37. package/dist/analyzer/scope.js +0 -296
  38. package/dist/analyzer/scope.js.map +0 -1
  39. package/dist/analyzer/validator.d.ts +0 -60
  40. package/dist/analyzer/validator.d.ts.map +0 -1
  41. package/dist/analyzer/validator.js +0 -439
  42. package/dist/analyzer/validator.js.map +0 -1
  43. package/dist/api/compile-mel-patch-collector.d.ts +0 -32
  44. package/dist/api/compile-mel-patch-collector.d.ts.map +0 -1
  45. package/dist/api/compile-mel-patch-collector.js +0 -425
  46. package/dist/api/compile-mel-patch-collector.js.map +0 -1
  47. package/dist/api/compile-mel-patch-expr.d.ts +0 -9
  48. package/dist/api/compile-mel-patch-expr.d.ts.map +0 -1
  49. package/dist/api/compile-mel-patch-expr.js +0 -179
  50. package/dist/api/compile-mel-patch-expr.js.map +0 -1
  51. package/dist/api/compile-mel-patch-location.d.ts +0 -10
  52. package/dist/api/compile-mel-patch-location.d.ts.map +0 -1
  53. package/dist/api/compile-mel-patch-location.js +0 -48
  54. package/dist/api/compile-mel-patch-location.js.map +0 -1
  55. package/dist/api/compile-mel-patch.d.ts +0 -6
  56. package/dist/api/compile-mel-patch.d.ts.map +0 -1
  57. package/dist/api/compile-mel-patch.js +0 -244
  58. package/dist/api/compile-mel-patch.js.map +0 -1
  59. package/dist/api/compile-mel.d.ts +0 -126
  60. package/dist/api/compile-mel.d.ts.map +0 -1
  61. package/dist/api/compile-mel.js +0 -114
  62. package/dist/api/compile-mel.js.map +0 -1
  63. package/dist/api/index.d.ts +0 -10
  64. package/dist/api/index.d.ts.map +0 -1
  65. package/dist/api/index.js +0 -9
  66. package/dist/api/index.js.map +0 -1
  67. package/dist/diagnostics/codes.d.ts +0 -25
  68. package/dist/diagnostics/codes.d.ts.map +0 -1
  69. package/dist/diagnostics/codes.js +0 -154
  70. package/dist/diagnostics/codes.js.map +0 -1
  71. package/dist/diagnostics/index.d.ts +0 -6
  72. package/dist/diagnostics/index.d.ts.map +0 -1
  73. package/dist/diagnostics/index.js +0 -6
  74. package/dist/diagnostics/index.js.map +0 -1
  75. package/dist/diagnostics/types.d.ts +0 -67
  76. package/dist/diagnostics/types.d.ts.map +0 -1
  77. package/dist/diagnostics/types.js +0 -58
  78. package/dist/diagnostics/types.js.map +0 -1
  79. package/dist/evaluation/context.d.ts +0 -91
  80. package/dist/evaluation/context.d.ts.map +0 -1
  81. package/dist/evaluation/context.js +0 -53
  82. package/dist/evaluation/context.js.map +0 -1
  83. package/dist/evaluation/evaluate-expr.d.ts +0 -24
  84. package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
  85. package/dist/evaluation/evaluate-expr.js +0 -577
  86. package/dist/evaluation/evaluate-expr.js.map +0 -1
  87. package/dist/evaluation/evaluate-patch.d.ts +0 -123
  88. package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
  89. package/dist/evaluation/evaluate-patch.js +0 -202
  90. package/dist/evaluation/evaluate-patch.js.map +0 -1
  91. package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
  92. package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
  93. package/dist/evaluation/evaluate-runtime-patch.js +0 -185
  94. package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
  95. package/dist/evaluation/index.d.ts +0 -15
  96. package/dist/evaluation/index.d.ts.map +0 -1
  97. package/dist/evaluation/index.js +0 -13
  98. package/dist/evaluation/index.js.map +0 -1
  99. package/dist/generator/index.d.ts +0 -7
  100. package/dist/generator/index.d.ts.map +0 -1
  101. package/dist/generator/index.js +0 -7
  102. package/dist/generator/index.js.map +0 -1
  103. package/dist/generator/ir.d.ts +0 -348
  104. package/dist/generator/ir.d.ts.map +0 -1
  105. package/dist/generator/ir.js +0 -715
  106. package/dist/generator/ir.js.map +0 -1
  107. package/dist/generator/lowering.d.ts +0 -11
  108. package/dist/generator/lowering.d.ts.map +0 -1
  109. package/dist/generator/lowering.js +0 -369
  110. package/dist/generator/lowering.js.map +0 -1
  111. package/dist/generator/normalizer.d.ts +0 -16
  112. package/dist/generator/normalizer.d.ts.map +0 -1
  113. package/dist/generator/normalizer.js +0 -181
  114. package/dist/generator/normalizer.js.map +0 -1
  115. package/dist/index.d.ts.map +0 -1
  116. package/dist/lexer/index.d.ts +0 -7
  117. package/dist/lexer/index.d.ts.map +0 -1
  118. package/dist/lexer/index.js +0 -7
  119. package/dist/lexer/index.js.map +0 -1
  120. package/dist/lexer/lexer.d.ts +0 -59
  121. package/dist/lexer/lexer.d.ts.map +0 -1
  122. package/dist/lexer/lexer.js +0 -433
  123. package/dist/lexer/lexer.js.map +0 -1
  124. package/dist/lexer/source-location.d.ts +0 -41
  125. package/dist/lexer/source-location.d.ts.map +0 -1
  126. package/dist/lexer/source-location.js +0 -33
  127. package/dist/lexer/source-location.js.map +0 -1
  128. package/dist/lexer/tokens.d.ts +0 -47
  129. package/dist/lexer/tokens.d.ts.map +0 -1
  130. package/dist/lexer/tokens.js +0 -73
  131. package/dist/lexer/tokens.js.map +0 -1
  132. package/dist/loader.d.ts +0 -23
  133. package/dist/loader.d.ts.map +0 -1
  134. package/dist/loader.js +0 -62
  135. package/dist/loader.js.map +0 -1
  136. package/dist/lowering/context.d.ts +0 -96
  137. package/dist/lowering/context.d.ts.map +0 -1
  138. package/dist/lowering/context.js +0 -42
  139. package/dist/lowering/context.js.map +0 -1
  140. package/dist/lowering/errors.d.ts +0 -84
  141. package/dist/lowering/errors.d.ts.map +0 -1
  142. package/dist/lowering/errors.js +0 -81
  143. package/dist/lowering/errors.js.map +0 -1
  144. package/dist/lowering/index.d.ts +0 -20
  145. package/dist/lowering/index.d.ts.map +0 -1
  146. package/dist/lowering/index.js +0 -13
  147. package/dist/lowering/index.js.map +0 -1
  148. package/dist/lowering/lower-expr.d.ts +0 -76
  149. package/dist/lowering/lower-expr.d.ts.map +0 -1
  150. package/dist/lowering/lower-expr.js +0 -366
  151. package/dist/lowering/lower-expr.js.map +0 -1
  152. package/dist/lowering/lower-patch.d.ts +0 -231
  153. package/dist/lowering/lower-patch.d.ts.map +0 -1
  154. package/dist/lowering/lower-patch.js +0 -146
  155. package/dist/lowering/lower-patch.js.map +0 -1
  156. package/dist/lowering/lower-runtime-patch.d.ts +0 -100
  157. package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
  158. package/dist/lowering/lower-runtime-patch.js +0 -49
  159. package/dist/lowering/lower-runtime-patch.js.map +0 -1
  160. package/dist/mel-module.d.ts +0 -13
  161. package/dist/mel-module.d.ts.map +0 -1
  162. package/dist/mel-module.js +0 -33
  163. package/dist/mel-module.js.map +0 -1
  164. package/dist/parser/ast.d.ts +0 -344
  165. package/dist/parser/ast.d.ts.map +0 -1
  166. package/dist/parser/ast.js +0 -24
  167. package/dist/parser/ast.js.map +0 -1
  168. package/dist/parser/index.d.ts +0 -7
  169. package/dist/parser/index.d.ts.map +0 -1
  170. package/dist/parser/index.js +0 -7
  171. package/dist/parser/index.js.map +0 -1
  172. package/dist/parser/parser.d.ts +0 -92
  173. package/dist/parser/parser.d.ts.map +0 -1
  174. package/dist/parser/parser.js +0 -892
  175. package/dist/parser/parser.js.map +0 -1
  176. package/dist/parser/precedence.d.ts +0 -44
  177. package/dist/parser/precedence.d.ts.map +0 -1
  178. package/dist/parser/precedence.js +0 -69
  179. package/dist/parser/precedence.js.map +0 -1
  180. package/dist/renderer/expr-node.d.ts +0 -172
  181. package/dist/renderer/expr-node.d.ts.map +0 -1
  182. package/dist/renderer/expr-node.js +0 -218
  183. package/dist/renderer/expr-node.js.map +0 -1
  184. package/dist/renderer/fragment.d.ts +0 -84
  185. package/dist/renderer/fragment.d.ts.map +0 -1
  186. package/dist/renderer/fragment.js +0 -172
  187. package/dist/renderer/fragment.js.map +0 -1
  188. package/dist/renderer/index.d.ts +0 -23
  189. package/dist/renderer/index.d.ts.map +0 -1
  190. package/dist/renderer/index.js +0 -27
  191. package/dist/renderer/index.js.map +0 -1
  192. package/dist/renderer/patch-op.d.ts +0 -82
  193. package/dist/renderer/patch-op.d.ts.map +0 -1
  194. package/dist/renderer/patch-op.js +0 -204
  195. package/dist/renderer/patch-op.js.map +0 -1
  196. package/dist/renderer/type-expr.d.ts +0 -61
  197. package/dist/renderer/type-expr.d.ts.map +0 -1
  198. package/dist/renderer/type-expr.js +0 -131
  199. package/dist/renderer/type-expr.js.map +0 -1
  200. package/dist/vite.d.ts.map +0 -1
  201. package/loader.cjs +0 -22
package/README.md CHANGED
@@ -46,13 +46,14 @@ pnpm add -D @manifesto-ai/compiler
46
46
 
47
47
  ---
48
48
 
49
- ## Bundler Integrations (Subpath Exports)
49
+ ## Bundler Integration (unplugin)
50
50
 
51
- Use subpath exports to load `.mel` files directly.
51
+ The compiler uses [unplugin](https://github.com/unjs/unplugin) to provide a unified MEL plugin for all major bundlers. One implementation, every bundler.
52
52
 
53
53
  ### Vite
54
54
 
55
55
  ```typescript
56
+ // vite.config.ts
56
57
  import { defineConfig } from "vite";
57
58
  import { melPlugin } from "@manifesto-ai/compiler/vite";
58
59
 
@@ -61,28 +62,75 @@ export default defineConfig({
61
62
  });
62
63
  ```
63
64
 
64
- ### Node / tsx Loader
65
+ ### Next.js / Webpack
65
66
 
66
- ```bash
67
- npx tsx --loader @manifesto-ai/compiler/loader main.ts
67
+ ```javascript
68
+ // next.config.js
69
+ const mel = require("@manifesto-ai/compiler/webpack");
70
+
71
+ module.exports = {
72
+ webpack: (config) => {
73
+ config.plugins.push(mel());
74
+ return config;
75
+ },
76
+ };
68
77
  ```
69
78
 
70
- ### Webpack
79
+ ### Rollup
71
80
 
72
81
  ```javascript
73
- module.exports = {
74
- module: {
75
- rules: [
76
- {
77
- test: /\.mel$/,
78
- use: "@manifesto-ai/compiler/loader",
79
- },
80
- ],
82
+ // rollup.config.js
83
+ import { melPlugin } from "@manifesto-ai/compiler/rollup";
84
+
85
+ export default { plugins: [melPlugin()] };
86
+ ```
87
+
88
+ ### esbuild
89
+
90
+ ```javascript
91
+ import { melPlugin } from "@manifesto-ai/compiler/esbuild";
92
+
93
+ await esbuild.build({ plugins: [melPlugin()] });
94
+ ```
95
+
96
+ ### Rspack
97
+
98
+ ```javascript
99
+ const mel = require("@manifesto-ai/compiler/rspack");
100
+
101
+ module.exports = { plugins: [mel()] };
102
+ ```
103
+
104
+ ### Node / tsx (ESM Loader)
105
+
106
+ ```bash
107
+ npx tsx --loader @manifesto-ai/compiler/node-loader main.ts
108
+ ```
109
+
110
+ ### Plugin Options
111
+
112
+ ```typescript
113
+ melPlugin({
114
+ include: /\.mel$/, // File filter (default: /\.mel$/)
115
+ codegen: { // Optional: auto-generate types
116
+ outDir: "src/generated", // Output directory
117
+ plugins: [/* custom */], // Defaults to TS + Zod plugins
81
118
  },
82
- };
119
+ });
83
120
  ```
84
121
 
85
- `vite` and `webpack` are managed as optional peer dependencies for adapter compatibility.
122
+ The `codegen` option requires `@manifesto-ai/codegen` as a peer dependency. When enabled, TypeScript types and Zod schemas are generated automatically at build time.
123
+
124
+ ### Subpath Exports
125
+
126
+ | Export | Bundler |
127
+ | --- | --- |
128
+ | `@manifesto-ai/compiler/vite` | Vite |
129
+ | `@manifesto-ai/compiler/webpack` | Webpack / Next.js |
130
+ | `@manifesto-ai/compiler/rollup` | Rollup |
131
+ | `@manifesto-ai/compiler/esbuild` | esbuild |
132
+ | `@manifesto-ai/compiler/rspack` | Rspack |
133
+ | `@manifesto-ai/compiler/node-loader` | Node ESM loader hooks |
86
134
 
87
135
  ---
88
136
 
@@ -142,8 +190,9 @@ type CompileOptions = {
142
190
  | [MEL Syntax](../../docs/mel/SYNTAX.md) | Grammar and syntax |
143
191
  | [MEL Examples](../../docs/mel/EXAMPLES.md) | Example library |
144
192
  | [MEL Error Guide](../../docs/mel/ERROR-GUIDE.md) | Error codes and fixes |
145
- | [Compiler Spec](docs/SPEC.md) | Full compiler and MEL spec |
146
- | [Compiler FDR](docs/FDR-0.3.3v.md) | Design rationale |
193
+ | [Compiler Spec](docs/SPEC-v0.7.0.md) | Full compiler and MEL spec |
194
+ | [Compiler FDR](docs/FDR-v0.5.0.md) | Design rationale |
195
+ | [Compiler Compliance Suite](docs/compiler-SPEC-compilance-test-suite.md) | CCTS structure, rule modes, and execution guide |
147
196
 
148
197
  ---
149
198
 
@@ -0,0 +1,74 @@
1
+ import {
2
+ formatDiagnostic
3
+ } from "./chunk-D62NIFP4.js";
4
+ import {
5
+ compileMelDomain
6
+ } from "./chunk-MKLDAZ2Z.js";
7
+
8
+ // src/unplugin.ts
9
+ import { createUnplugin } from "unplugin";
10
+ function normalizeId(id) {
11
+ return id.split("?", 1)[0];
12
+ }
13
+ function testRegex(regex, value) {
14
+ regex.lastIndex = 0;
15
+ return regex.test(value);
16
+ }
17
+ var unpluginMel = createUnplugin((options = {}) => {
18
+ const include = options.include ?? /\.mel$/;
19
+ const compiledSchemas = /* @__PURE__ */ new Map();
20
+ return {
21
+ name: "manifesto:mel",
22
+ enforce: "pre",
23
+ transformInclude(id) {
24
+ return testRegex(include, normalizeId(id));
25
+ },
26
+ transform(source, id) {
27
+ const sourceId = normalizeId(id);
28
+ const result = compileMelDomain(source, { mode: "domain" });
29
+ if (result.errors.length > 0) {
30
+ const details = result.errors.map(formatDiagnostic).join("\n");
31
+ throw new Error(`MEL compilation failed for ${sourceId}
32
+ ${details}`);
33
+ }
34
+ if (!result.schema) {
35
+ throw new Error(`MEL compilation produced no schema for ${sourceId}`);
36
+ }
37
+ if (options.codegen) {
38
+ compiledSchemas.set(sourceId, result.schema);
39
+ }
40
+ const serializedSchema = JSON.stringify(result.schema, null, 2);
41
+ return `export default ${serializedSchema};
42
+ `;
43
+ },
44
+ async buildEnd() {
45
+ if (!options.codegen || compiledSchemas.size === 0) return;
46
+ let codegen;
47
+ try {
48
+ codegen = await import("@manifesto-ai/codegen");
49
+ } catch {
50
+ console.warn(
51
+ "[manifesto:mel] codegen option is enabled but @manifesto-ai/codegen is not installed. Skipping."
52
+ );
53
+ return;
54
+ }
55
+ const plugins = options.codegen.plugins ?? [
56
+ codegen.createTsPlugin(),
57
+ codegen.createZodPlugin()
58
+ ];
59
+ for (const [sourceId, schema] of compiledSchemas) {
60
+ await codegen.generate({
61
+ schema,
62
+ outDir: options.codegen.outDir,
63
+ plugins,
64
+ sourceId
65
+ });
66
+ }
67
+ }
68
+ };
69
+ });
70
+
71
+ export {
72
+ unpluginMel
73
+ };
74
+ //# sourceMappingURL=chunk-BH25NHMN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/unplugin.ts"],"sourcesContent":["/**\n * Unified MEL plugin via unplugin.\n *\n * Single implementation that targets Vite, Webpack, Rollup, esbuild, and Rspack.\n */\n\nimport { createUnplugin } from \"unplugin\";\nimport type { DomainSchema } from \"@manifesto-ai/core\";\nimport { compileMelDomain } from \"./api/index.js\";\nimport { formatDiagnostic } from \"./mel-module.js\";\n\nexport type MelCodegenOptions = {\n readonly outDir: string;\n readonly plugins?: readonly import(\"@manifesto-ai/codegen\").CodegenPlugin[];\n};\n\nexport type MelPluginOptions = {\n readonly include?: RegExp;\n readonly codegen?: MelCodegenOptions | false;\n};\n\nfunction normalizeId(id: string): string {\n return id.split(\"?\", 1)[0];\n}\n\nfunction testRegex(regex: RegExp, value: string): boolean {\n regex.lastIndex = 0;\n return regex.test(value);\n}\n\nexport const unpluginMel = createUnplugin((options: MelPluginOptions = {}) => {\n const include = options.include ?? /\\.mel$/;\n const compiledSchemas = new Map<string, DomainSchema>();\n\n return {\n name: \"manifesto:mel\",\n enforce: \"pre\" as const,\n\n transformInclude(id: string) {\n return testRegex(include, normalizeId(id));\n },\n\n transform(source: string, id: string) {\n const sourceId = normalizeId(id);\n const result = compileMelDomain(source, { mode: \"domain\" });\n\n if (result.errors.length > 0) {\n const details = result.errors.map(formatDiagnostic).join(\"\\n\");\n throw new Error(`MEL compilation failed for ${sourceId}\\n${details}`);\n }\n\n if (!result.schema) {\n throw new Error(`MEL compilation produced no schema for ${sourceId}`);\n }\n\n if (options.codegen) {\n compiledSchemas.set(sourceId, result.schema);\n }\n\n const serializedSchema = JSON.stringify(result.schema, null, 2);\n return `export default ${serializedSchema};\\n`;\n },\n\n async buildEnd() {\n if (!options.codegen || compiledSchemas.size === 0) return;\n\n let codegen: typeof import(\"@manifesto-ai/codegen\");\n try {\n codegen = await import(\"@manifesto-ai/codegen\");\n } catch {\n console.warn(\n \"[manifesto:mel] codegen option is enabled but @manifesto-ai/codegen is not installed. Skipping.\"\n );\n return;\n }\n\n const plugins = options.codegen.plugins ?? [\n codegen.createTsPlugin(),\n codegen.createZodPlugin(),\n ];\n\n for (const [sourceId, schema] of compiledSchemas) {\n await codegen.generate({\n schema,\n outDir: options.codegen.outDir,\n plugins,\n sourceId,\n });\n }\n },\n };\n});\n"],"mappings":";;;;;;;;AAMA,SAAS,sBAAsB;AAe/B,SAAS,YAAY,IAAoB;AACvC,SAAO,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC;AAC3B;AAEA,SAAS,UAAU,OAAe,OAAwB;AACxD,QAAM,YAAY;AAClB,SAAO,MAAM,KAAK,KAAK;AACzB;AAEO,IAAM,cAAc,eAAe,CAAC,UAA4B,CAAC,MAAM;AAC5E,QAAM,UAAU,QAAQ,WAAW;AACnC,QAAM,kBAAkB,oBAAI,IAA0B;AAEtD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,iBAAiB,IAAY;AAC3B,aAAO,UAAU,SAAS,YAAY,EAAE,CAAC;AAAA,IAC3C;AAAA,IAEA,UAAU,QAAgB,IAAY;AACpC,YAAM,WAAW,YAAY,EAAE;AAC/B,YAAM,SAAS,iBAAiB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE1D,UAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,cAAM,UAAU,OAAO,OAAO,IAAI,gBAAgB,EAAE,KAAK,IAAI;AAC7D,cAAM,IAAI,MAAM,8BAA8B,QAAQ;AAAA,EAAK,OAAO,EAAE;AAAA,MACtE;AAEA,UAAI,CAAC,OAAO,QAAQ;AAClB,cAAM,IAAI,MAAM,0CAA0C,QAAQ,EAAE;AAAA,MACtE;AAEA,UAAI,QAAQ,SAAS;AACnB,wBAAgB,IAAI,UAAU,OAAO,MAAM;AAAA,MAC7C;AAEA,YAAM,mBAAmB,KAAK,UAAU,OAAO,QAAQ,MAAM,CAAC;AAC9D,aAAO,kBAAkB,gBAAgB;AAAA;AAAA,IAC3C;AAAA,IAEA,MAAM,WAAW;AACf,UAAI,CAAC,QAAQ,WAAW,gBAAgB,SAAS,EAAG;AAEpD,UAAI;AACJ,UAAI;AACF,kBAAU,MAAM,OAAO,uBAAuB;AAAA,MAChD,QAAQ;AACN,gBAAQ;AAAA,UACN;AAAA,QACF;AACA;AAAA,MACF;AAEA,YAAM,UAAU,QAAQ,QAAQ,WAAW;AAAA,QACzC,QAAQ,eAAe;AAAA,QACvB,QAAQ,gBAAgB;AAAA,MAC1B;AAEA,iBAAW,CAAC,UAAU,MAAM,KAAK,iBAAiB;AAChD,cAAM,QAAQ,SAAS;AAAA,UACrB;AAAA,UACA,QAAQ,QAAQ,QAAQ;AAAA,UACxB;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,33 @@
1
+ import {
2
+ compileMelDomain
3
+ } from "./chunk-MKLDAZ2Z.js";
4
+
5
+ // src/mel-module.ts
6
+ function formatDiagnostic(diagnostic) {
7
+ const location = diagnostic.location;
8
+ if (!location) {
9
+ return `[${diagnostic.code}] ${diagnostic.message}`;
10
+ }
11
+ const { line, column } = location.start;
12
+ return `[${diagnostic.code}] ${diagnostic.message} (${line}:${column})`;
13
+ }
14
+ function compileMelToModuleCode(melSource, sourceId) {
15
+ const result = compileMelDomain(melSource, { mode: "domain" });
16
+ if (result.errors.length > 0) {
17
+ const details = result.errors.map(formatDiagnostic).join("\n");
18
+ throw new Error(`MEL compilation failed for ${sourceId}
19
+ ${details}`);
20
+ }
21
+ if (!result.schema) {
22
+ throw new Error(`MEL compilation produced no schema for ${sourceId}`);
23
+ }
24
+ const serializedSchema = JSON.stringify(result.schema, null, 2);
25
+ return `export default ${serializedSchema};
26
+ `;
27
+ }
28
+
29
+ export {
30
+ formatDiagnostic,
31
+ compileMelToModuleCode
32
+ };
33
+ //# sourceMappingURL=chunk-D62NIFP4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mel-module.ts"],"sourcesContent":["/**\n * MEL Module Helpers\n *\n * Utilities for turning MEL source into JavaScript module code.\n */\n\nimport type { Diagnostic } from \"./diagnostics/types.js\";\nimport { compileMelDomain } from \"./api/index.js\";\n\nexport function formatDiagnostic(diagnostic: Diagnostic): string {\n const location = diagnostic.location;\n\n if (!location) {\n return `[${diagnostic.code}] ${diagnostic.message}`;\n }\n\n const { line, column } = location.start;\n return `[${diagnostic.code}] ${diagnostic.message} (${line}:${column})`;\n}\n\n/**\n * Compile MEL source and emit ESM source that exports the compiled schema.\n *\n * @param melSource - MEL domain source text\n * @param sourceId - Human-readable source identifier for diagnostics\n */\nexport function compileMelToModuleCode(melSource: string, sourceId: string): string {\n const result = compileMelDomain(melSource, { mode: \"domain\" });\n\n if (result.errors.length > 0) {\n const details = result.errors.map(formatDiagnostic).join(\"\\n\");\n throw new Error(`MEL compilation failed for ${sourceId}\\n${details}`);\n }\n\n if (!result.schema) {\n throw new Error(`MEL compilation produced no schema for ${sourceId}`);\n }\n\n const serializedSchema = JSON.stringify(result.schema, null, 2);\n return `export default ${serializedSchema};\\n`;\n}\n\n"],"mappings":";;;;;AASO,SAAS,iBAAiB,YAAgC;AAC/D,QAAM,WAAW,WAAW;AAE5B,MAAI,CAAC,UAAU;AACb,WAAO,IAAI,WAAW,IAAI,KAAK,WAAW,OAAO;AAAA,EACnD;AAEA,QAAM,EAAE,MAAM,OAAO,IAAI,SAAS;AAClC,SAAO,IAAI,WAAW,IAAI,KAAK,WAAW,OAAO,KAAK,IAAI,IAAI,MAAM;AACtE;AAQO,SAAS,uBAAuB,WAAmB,UAA0B;AAClF,QAAM,SAAS,iBAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,UAAM,UAAU,OAAO,OAAO,IAAI,gBAAgB,EAAE,KAAK,IAAI;AAC7D,UAAM,IAAI,MAAM,8BAA8B,QAAQ;AAAA,EAAK,OAAO,EAAE;AAAA,EACtE;AAEA,MAAI,CAAC,OAAO,QAAQ;AAClB,UAAM,IAAI,MAAM,0CAA0C,QAAQ,EAAE;AAAA,EACtE;AAEA,QAAM,mBAAmB,KAAK,UAAU,OAAO,QAAQ,MAAM,CAAC;AAC9D,SAAO,kBAAkB,gBAAgB;AAAA;AAC3C;","names":[]}