@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.
- package/README.md +67 -18
- package/dist/chunk-BH25NHMN.js +74 -0
- package/dist/chunk-BH25NHMN.js.map +1 -0
- package/dist/chunk-D62NIFP4.js +33 -0
- package/dist/chunk-D62NIFP4.js.map +1 -0
- package/dist/chunk-MKLDAZ2Z.js +6920 -0
- package/dist/chunk-MKLDAZ2Z.js.map +1 -0
- package/dist/esbuild.d.ts +8 -0
- package/dist/esbuild.js +14 -0
- package/dist/esbuild.js.map +1 -0
- package/dist/index.d.ts +2810 -11
- package/dist/index.js +2425 -43
- package/dist/index.js.map +1 -1
- package/dist/node-loader.d.ts +18 -0
- package/dist/node-loader.js +47 -0
- package/dist/node-loader.js.map +1 -0
- package/dist/rollup.d.ts +8 -0
- package/dist/rollup.js +14 -0
- package/dist/rollup.js.map +1 -0
- package/dist/rspack.d.ts +7 -0
- package/dist/rspack.js +14 -0
- package/dist/rspack.js.map +1 -0
- package/dist/unplugin-6wnvFiEo.d.ts +17 -0
- package/dist/vite.d.ts +8 -17
- package/dist/vite.js +13 -33
- package/dist/vite.js.map +1 -1
- package/dist/webpack.d.ts +8 -0
- package/dist/webpack.js +14 -0
- package/dist/webpack.js.map +1 -0
- package/package.json +40 -22
- package/dist/analyzer/index.d.ts +0 -6
- package/dist/analyzer/index.d.ts.map +0 -1
- package/dist/analyzer/index.js +0 -6
- package/dist/analyzer/index.js.map +0 -1
- package/dist/analyzer/scope.d.ts +0 -77
- package/dist/analyzer/scope.d.ts.map +0 -1
- package/dist/analyzer/scope.js +0 -296
- package/dist/analyzer/scope.js.map +0 -1
- package/dist/analyzer/validator.d.ts +0 -60
- package/dist/analyzer/validator.d.ts.map +0 -1
- package/dist/analyzer/validator.js +0 -439
- package/dist/analyzer/validator.js.map +0 -1
- package/dist/api/compile-mel-patch-collector.d.ts +0 -32
- package/dist/api/compile-mel-patch-collector.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-collector.js +0 -425
- package/dist/api/compile-mel-patch-collector.js.map +0 -1
- package/dist/api/compile-mel-patch-expr.d.ts +0 -9
- package/dist/api/compile-mel-patch-expr.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-expr.js +0 -179
- package/dist/api/compile-mel-patch-expr.js.map +0 -1
- package/dist/api/compile-mel-patch-location.d.ts +0 -10
- package/dist/api/compile-mel-patch-location.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-location.js +0 -48
- package/dist/api/compile-mel-patch-location.js.map +0 -1
- package/dist/api/compile-mel-patch.d.ts +0 -6
- package/dist/api/compile-mel-patch.d.ts.map +0 -1
- package/dist/api/compile-mel-patch.js +0 -244
- package/dist/api/compile-mel-patch.js.map +0 -1
- package/dist/api/compile-mel.d.ts +0 -126
- package/dist/api/compile-mel.d.ts.map +0 -1
- package/dist/api/compile-mel.js +0 -114
- package/dist/api/compile-mel.js.map +0 -1
- package/dist/api/index.d.ts +0 -10
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -9
- package/dist/api/index.js.map +0 -1
- package/dist/diagnostics/codes.d.ts +0 -25
- package/dist/diagnostics/codes.d.ts.map +0 -1
- package/dist/diagnostics/codes.js +0 -154
- package/dist/diagnostics/codes.js.map +0 -1
- package/dist/diagnostics/index.d.ts +0 -6
- package/dist/diagnostics/index.d.ts.map +0 -1
- package/dist/diagnostics/index.js +0 -6
- package/dist/diagnostics/index.js.map +0 -1
- package/dist/diagnostics/types.d.ts +0 -67
- package/dist/diagnostics/types.d.ts.map +0 -1
- package/dist/diagnostics/types.js +0 -58
- package/dist/diagnostics/types.js.map +0 -1
- package/dist/evaluation/context.d.ts +0 -91
- package/dist/evaluation/context.d.ts.map +0 -1
- package/dist/evaluation/context.js +0 -53
- package/dist/evaluation/context.js.map +0 -1
- package/dist/evaluation/evaluate-expr.d.ts +0 -24
- package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
- package/dist/evaluation/evaluate-expr.js +0 -577
- package/dist/evaluation/evaluate-expr.js.map +0 -1
- package/dist/evaluation/evaluate-patch.d.ts +0 -123
- package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
- package/dist/evaluation/evaluate-patch.js +0 -202
- package/dist/evaluation/evaluate-patch.js.map +0 -1
- package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
- package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
- package/dist/evaluation/evaluate-runtime-patch.js +0 -185
- package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
- package/dist/evaluation/index.d.ts +0 -15
- package/dist/evaluation/index.d.ts.map +0 -1
- package/dist/evaluation/index.js +0 -13
- package/dist/evaluation/index.js.map +0 -1
- package/dist/generator/index.d.ts +0 -7
- package/dist/generator/index.d.ts.map +0 -1
- package/dist/generator/index.js +0 -7
- package/dist/generator/index.js.map +0 -1
- package/dist/generator/ir.d.ts +0 -348
- package/dist/generator/ir.d.ts.map +0 -1
- package/dist/generator/ir.js +0 -715
- package/dist/generator/ir.js.map +0 -1
- package/dist/generator/lowering.d.ts +0 -11
- package/dist/generator/lowering.d.ts.map +0 -1
- package/dist/generator/lowering.js +0 -369
- package/dist/generator/lowering.js.map +0 -1
- package/dist/generator/normalizer.d.ts +0 -16
- package/dist/generator/normalizer.d.ts.map +0 -1
- package/dist/generator/normalizer.js +0 -181
- package/dist/generator/normalizer.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lexer/index.d.ts +0 -7
- package/dist/lexer/index.d.ts.map +0 -1
- package/dist/lexer/index.js +0 -7
- package/dist/lexer/index.js.map +0 -1
- package/dist/lexer/lexer.d.ts +0 -59
- package/dist/lexer/lexer.d.ts.map +0 -1
- package/dist/lexer/lexer.js +0 -433
- package/dist/lexer/lexer.js.map +0 -1
- package/dist/lexer/source-location.d.ts +0 -41
- package/dist/lexer/source-location.d.ts.map +0 -1
- package/dist/lexer/source-location.js +0 -33
- package/dist/lexer/source-location.js.map +0 -1
- package/dist/lexer/tokens.d.ts +0 -47
- package/dist/lexer/tokens.d.ts.map +0 -1
- package/dist/lexer/tokens.js +0 -73
- package/dist/lexer/tokens.js.map +0 -1
- package/dist/loader.d.ts +0 -23
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -62
- package/dist/loader.js.map +0 -1
- package/dist/lowering/context.d.ts +0 -96
- package/dist/lowering/context.d.ts.map +0 -1
- package/dist/lowering/context.js +0 -42
- package/dist/lowering/context.js.map +0 -1
- package/dist/lowering/errors.d.ts +0 -84
- package/dist/lowering/errors.d.ts.map +0 -1
- package/dist/lowering/errors.js +0 -81
- package/dist/lowering/errors.js.map +0 -1
- package/dist/lowering/index.d.ts +0 -20
- package/dist/lowering/index.d.ts.map +0 -1
- package/dist/lowering/index.js +0 -13
- package/dist/lowering/index.js.map +0 -1
- package/dist/lowering/lower-expr.d.ts +0 -76
- package/dist/lowering/lower-expr.d.ts.map +0 -1
- package/dist/lowering/lower-expr.js +0 -366
- package/dist/lowering/lower-expr.js.map +0 -1
- package/dist/lowering/lower-patch.d.ts +0 -231
- package/dist/lowering/lower-patch.d.ts.map +0 -1
- package/dist/lowering/lower-patch.js +0 -146
- package/dist/lowering/lower-patch.js.map +0 -1
- package/dist/lowering/lower-runtime-patch.d.ts +0 -100
- package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
- package/dist/lowering/lower-runtime-patch.js +0 -49
- package/dist/lowering/lower-runtime-patch.js.map +0 -1
- package/dist/mel-module.d.ts +0 -13
- package/dist/mel-module.d.ts.map +0 -1
- package/dist/mel-module.js +0 -33
- package/dist/mel-module.js.map +0 -1
- package/dist/parser/ast.d.ts +0 -344
- package/dist/parser/ast.d.ts.map +0 -1
- package/dist/parser/ast.js +0 -24
- package/dist/parser/ast.js.map +0 -1
- package/dist/parser/index.d.ts +0 -7
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -7
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/parser.d.ts +0 -92
- package/dist/parser/parser.d.ts.map +0 -1
- package/dist/parser/parser.js +0 -892
- package/dist/parser/parser.js.map +0 -1
- package/dist/parser/precedence.d.ts +0 -44
- package/dist/parser/precedence.d.ts.map +0 -1
- package/dist/parser/precedence.js +0 -69
- package/dist/parser/precedence.js.map +0 -1
- package/dist/renderer/expr-node.d.ts +0 -172
- package/dist/renderer/expr-node.d.ts.map +0 -1
- package/dist/renderer/expr-node.js +0 -218
- package/dist/renderer/expr-node.js.map +0 -1
- package/dist/renderer/fragment.d.ts +0 -84
- package/dist/renderer/fragment.d.ts.map +0 -1
- package/dist/renderer/fragment.js +0 -172
- package/dist/renderer/fragment.js.map +0 -1
- package/dist/renderer/index.d.ts +0 -23
- package/dist/renderer/index.d.ts.map +0 -1
- package/dist/renderer/index.js +0 -27
- package/dist/renderer/index.js.map +0 -1
- package/dist/renderer/patch-op.d.ts +0 -82
- package/dist/renderer/patch-op.d.ts.map +0 -1
- package/dist/renderer/patch-op.js +0 -204
- package/dist/renderer/patch-op.js.map +0 -1
- package/dist/renderer/type-expr.d.ts +0 -61
- package/dist/renderer/type-expr.d.ts.map +0 -1
- package/dist/renderer/type-expr.js +0 -131
- package/dist/renderer/type-expr.js.map +0 -1
- package/dist/vite.d.ts.map +0 -1
- package/loader.cjs +0 -22
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PatchFragment to MEL Renderer
|
|
3
|
-
*
|
|
4
|
-
* Converts PatchFragment to MEL syntax with metadata comments.
|
|
5
|
-
*/
|
|
6
|
-
import { PatchOp, RenderOptions } from "./patch-op.js";
|
|
7
|
-
export interface PatchFragment {
|
|
8
|
-
/**
|
|
9
|
-
* Unique fragment identifier (content-addressed)
|
|
10
|
-
*/
|
|
11
|
-
fragmentId: string;
|
|
12
|
-
/**
|
|
13
|
-
* Source intent identifier
|
|
14
|
-
*/
|
|
15
|
-
sourceIntentId: string;
|
|
16
|
-
/**
|
|
17
|
-
* Fragment operation
|
|
18
|
-
*/
|
|
19
|
-
op: PatchOp;
|
|
20
|
-
/**
|
|
21
|
-
* Confidence score (0-1)
|
|
22
|
-
*/
|
|
23
|
-
confidence: number;
|
|
24
|
-
/**
|
|
25
|
-
* Evidence strings
|
|
26
|
-
*/
|
|
27
|
-
evidence: string[];
|
|
28
|
-
/**
|
|
29
|
-
* Creation timestamp (ISO 8601)
|
|
30
|
-
*/
|
|
31
|
-
createdAt: string;
|
|
32
|
-
}
|
|
33
|
-
export interface FragmentRenderOptions extends RenderOptions {
|
|
34
|
-
/**
|
|
35
|
-
* Include fragment metadata as comments
|
|
36
|
-
*/
|
|
37
|
-
includeMetadata?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Include evidence as comments
|
|
40
|
-
*/
|
|
41
|
-
includeEvidence?: boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Include confidence score
|
|
44
|
-
*/
|
|
45
|
-
includeConfidence?: boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Include fragment ID
|
|
48
|
-
*/
|
|
49
|
-
includeFragmentId?: boolean;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Renders a PatchFragment to MEL syntax string with optional metadata.
|
|
53
|
-
*
|
|
54
|
-
* @param fragment - The PatchFragment to render
|
|
55
|
-
* @param options - Rendering options
|
|
56
|
-
* @returns MEL syntax string with metadata comments
|
|
57
|
-
*/
|
|
58
|
-
export declare function renderFragment(fragment: PatchFragment, options?: FragmentRenderOptions): string;
|
|
59
|
-
/**
|
|
60
|
-
* Renders multiple PatchFragments to MEL syntax string.
|
|
61
|
-
*
|
|
62
|
-
* @param fragments - The PatchFragments to render
|
|
63
|
-
* @param options - Rendering options
|
|
64
|
-
* @returns MEL syntax string with all fragments
|
|
65
|
-
*/
|
|
66
|
-
export declare function renderFragments(fragments: PatchFragment[], options?: FragmentRenderOptions): string;
|
|
67
|
-
/**
|
|
68
|
-
* Renders PatchFragments grouped by operation kind.
|
|
69
|
-
*
|
|
70
|
-
* @param fragments - The PatchFragments to render
|
|
71
|
-
* @param options - Rendering options
|
|
72
|
-
* @returns Object with rendered strings grouped by operation kind
|
|
73
|
-
*/
|
|
74
|
-
export declare function renderFragmentsByKind(fragments: PatchFragment[], options?: FragmentRenderOptions): Record<string, string>;
|
|
75
|
-
/**
|
|
76
|
-
* Renders PatchFragments as a complete MEL domain block.
|
|
77
|
-
*
|
|
78
|
-
* @param domainName - The domain name
|
|
79
|
-
* @param fragments - The PatchFragments to render
|
|
80
|
-
* @param options - Rendering options
|
|
81
|
-
* @returns Complete MEL domain string
|
|
82
|
-
*/
|
|
83
|
-
export declare function renderAsDomain(domainName: string, fragments: PatchFragment[], options?: FragmentRenderOptions): string;
|
|
84
|
-
//# sourceMappingURL=fragment.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fragment.d.ts","sourceRoot":"","sources":["../../src/renderer/fragment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAItE,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAcD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CA+BR;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAQR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAoFR"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PatchFragment to MEL Renderer
|
|
3
|
-
*
|
|
4
|
-
* Converts PatchFragment to MEL syntax with metadata comments.
|
|
5
|
-
*/
|
|
6
|
-
import { renderPatchOp } from "./patch-op.js";
|
|
7
|
-
const DEFAULT_FRAGMENT_OPTIONS = {
|
|
8
|
-
indent: " ",
|
|
9
|
-
includeComments: true,
|
|
10
|
-
commentPrefix: "// ",
|
|
11
|
-
includeMetadata: true,
|
|
12
|
-
includeEvidence: false,
|
|
13
|
-
includeConfidence: true,
|
|
14
|
-
includeFragmentId: false,
|
|
15
|
-
};
|
|
16
|
-
// ============ Fragment Renderer ============
|
|
17
|
-
/**
|
|
18
|
-
* Renders a PatchFragment to MEL syntax string with optional metadata.
|
|
19
|
-
*
|
|
20
|
-
* @param fragment - The PatchFragment to render
|
|
21
|
-
* @param options - Rendering options
|
|
22
|
-
* @returns MEL syntax string with metadata comments
|
|
23
|
-
*/
|
|
24
|
-
export function renderFragment(fragment, options) {
|
|
25
|
-
const opts = { ...DEFAULT_FRAGMENT_OPTIONS, ...options };
|
|
26
|
-
const lines = [];
|
|
27
|
-
// Add metadata comments
|
|
28
|
-
if (opts.includeMetadata) {
|
|
29
|
-
if (opts.includeFragmentId) {
|
|
30
|
-
lines.push(`${opts.commentPrefix}Fragment: ${fragment.fragmentId}`);
|
|
31
|
-
}
|
|
32
|
-
if (opts.includeConfidence) {
|
|
33
|
-
const confidencePercent = (fragment.confidence * 100).toFixed(0);
|
|
34
|
-
lines.push(`${opts.commentPrefix}Confidence: ${confidencePercent}%`);
|
|
35
|
-
}
|
|
36
|
-
if (opts.includeEvidence && fragment.evidence.length > 0) {
|
|
37
|
-
lines.push(`${opts.commentPrefix}Evidence:`);
|
|
38
|
-
for (const evidence of fragment.evidence) {
|
|
39
|
-
lines.push(`${opts.commentPrefix} - ${evidence}`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// Render the operation
|
|
44
|
-
const opStr = renderPatchOp(fragment.op, {
|
|
45
|
-
indent: opts.indent,
|
|
46
|
-
includeComments: opts.includeComments,
|
|
47
|
-
commentPrefix: opts.commentPrefix,
|
|
48
|
-
});
|
|
49
|
-
lines.push(opStr);
|
|
50
|
-
return lines.join("\n");
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Renders multiple PatchFragments to MEL syntax string.
|
|
54
|
-
*
|
|
55
|
-
* @param fragments - The PatchFragments to render
|
|
56
|
-
* @param options - Rendering options
|
|
57
|
-
* @returns MEL syntax string with all fragments
|
|
58
|
-
*/
|
|
59
|
-
export function renderFragments(fragments, options) {
|
|
60
|
-
const opts = { ...DEFAULT_FRAGMENT_OPTIONS, ...options };
|
|
61
|
-
const renderedFragments = fragments.map((fragment) => renderFragment(fragment, opts));
|
|
62
|
-
return renderedFragments.join("\n\n");
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Renders PatchFragments grouped by operation kind.
|
|
66
|
-
*
|
|
67
|
-
* @param fragments - The PatchFragments to render
|
|
68
|
-
* @param options - Rendering options
|
|
69
|
-
* @returns Object with rendered strings grouped by operation kind
|
|
70
|
-
*/
|
|
71
|
-
export function renderFragmentsByKind(fragments, options) {
|
|
72
|
-
const opts = { ...DEFAULT_FRAGMENT_OPTIONS, ...options };
|
|
73
|
-
const grouped = {};
|
|
74
|
-
for (const fragment of fragments) {
|
|
75
|
-
const kind = fragment.op.kind;
|
|
76
|
-
if (!grouped[kind]) {
|
|
77
|
-
grouped[kind] = [];
|
|
78
|
-
}
|
|
79
|
-
grouped[kind].push(fragment);
|
|
80
|
-
}
|
|
81
|
-
const result = {};
|
|
82
|
-
for (const [kind, kindFragments] of Object.entries(grouped)) {
|
|
83
|
-
result[kind] = renderFragments(kindFragments, opts);
|
|
84
|
-
}
|
|
85
|
-
return result;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Renders PatchFragments as a complete MEL domain block.
|
|
89
|
-
*
|
|
90
|
-
* @param domainName - The domain name
|
|
91
|
-
* @param fragments - The PatchFragments to render
|
|
92
|
-
* @param options - Rendering options
|
|
93
|
-
* @returns Complete MEL domain string
|
|
94
|
-
*/
|
|
95
|
-
export function renderAsDomain(domainName, fragments, options) {
|
|
96
|
-
const opts = { ...DEFAULT_FRAGMENT_OPTIONS, ...options };
|
|
97
|
-
const indent = opts.indent ?? " ";
|
|
98
|
-
// Group fragments by type for organized output
|
|
99
|
-
const types = [];
|
|
100
|
-
const fields = [];
|
|
101
|
-
const defaults = [];
|
|
102
|
-
const computed = [];
|
|
103
|
-
const constraints = [];
|
|
104
|
-
const actions = [];
|
|
105
|
-
for (const fragment of fragments) {
|
|
106
|
-
switch (fragment.op.kind) {
|
|
107
|
-
case "addType":
|
|
108
|
-
types.push(fragment);
|
|
109
|
-
break;
|
|
110
|
-
case "addField":
|
|
111
|
-
case "setFieldType":
|
|
112
|
-
fields.push(fragment);
|
|
113
|
-
break;
|
|
114
|
-
case "setDefaultValue":
|
|
115
|
-
defaults.push(fragment);
|
|
116
|
-
break;
|
|
117
|
-
case "addComputed":
|
|
118
|
-
computed.push(fragment);
|
|
119
|
-
break;
|
|
120
|
-
case "addConstraint":
|
|
121
|
-
constraints.push(fragment);
|
|
122
|
-
break;
|
|
123
|
-
case "addActionAvailable":
|
|
124
|
-
actions.push(fragment);
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
const lines = [];
|
|
129
|
-
lines.push(`domain ${domainName} {`);
|
|
130
|
-
// State section
|
|
131
|
-
if (fields.length > 0 || defaults.length > 0) {
|
|
132
|
-
lines.push(`${indent}state {`);
|
|
133
|
-
for (const fragment of [...fields, ...defaults]) {
|
|
134
|
-
const rendered = renderPatchOp(fragment.op, { indent: indent + indent, includeComments: false });
|
|
135
|
-
lines.push(`${indent}${indent}${rendered}`);
|
|
136
|
-
}
|
|
137
|
-
lines.push(`${indent}}`);
|
|
138
|
-
lines.push("");
|
|
139
|
-
}
|
|
140
|
-
// Types section
|
|
141
|
-
for (const fragment of types) {
|
|
142
|
-
const rendered = renderPatchOp(fragment.op, { indent, includeComments: false });
|
|
143
|
-
// Indent each line
|
|
144
|
-
const indented = rendered.split("\n").map(line => `${indent}${line}`).join("\n");
|
|
145
|
-
lines.push(indented);
|
|
146
|
-
lines.push("");
|
|
147
|
-
}
|
|
148
|
-
// Computed section
|
|
149
|
-
for (const fragment of computed) {
|
|
150
|
-
const rendered = renderPatchOp(fragment.op, { indent, includeComments: false });
|
|
151
|
-
lines.push(`${indent}${rendered}`);
|
|
152
|
-
}
|
|
153
|
-
if (computed.length > 0)
|
|
154
|
-
lines.push("");
|
|
155
|
-
// Constraints section (as comments)
|
|
156
|
-
for (const fragment of constraints) {
|
|
157
|
-
const rendered = renderPatchOp(fragment.op, { indent, includeComments: true });
|
|
158
|
-
lines.push(`${indent}${rendered}`);
|
|
159
|
-
}
|
|
160
|
-
if (constraints.length > 0)
|
|
161
|
-
lines.push("");
|
|
162
|
-
// Actions section
|
|
163
|
-
for (const fragment of actions) {
|
|
164
|
-
const rendered = renderPatchOp(fragment.op, { indent, includeComments: false });
|
|
165
|
-
const indented = rendered.split("\n").map(line => `${indent}${line}`).join("\n");
|
|
166
|
-
lines.push(indented);
|
|
167
|
-
lines.push("");
|
|
168
|
-
}
|
|
169
|
-
lines.push("}");
|
|
170
|
-
return lines.join("\n");
|
|
171
|
-
}
|
|
172
|
-
//# sourceMappingURL=fragment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fragment.js","sourceRoot":"","sources":["../../src/renderer/fragment.ts"],"names":[],"mappings":"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"}
|
package/dist/renderer/index.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MEL Renderer
|
|
3
|
-
*
|
|
4
|
-
* Converts PatchFragment AST to MEL text syntax.
|
|
5
|
-
*
|
|
6
|
-
* This is the inverse of the parser: Parser (MEL text → AST), Renderer (AST → MEL text).
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { renderFragment, renderAsDomain } from '@manifesto-ai/compiler';
|
|
11
|
-
*
|
|
12
|
-
* // Render a single fragment
|
|
13
|
-
* const mel = renderFragment(fragment);
|
|
14
|
-
*
|
|
15
|
-
* // Render multiple fragments as a domain
|
|
16
|
-
* const domain = renderAsDomain('MyDomain', fragments);
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export { renderTypeExpr, renderTypeField, renderValue, type TypeExpr, type TypeField, } from "./type-expr.js";
|
|
20
|
-
export { renderExprNode, type ExprNode, } from "./expr-node.js";
|
|
21
|
-
export { renderPatchOp, extractTypeName, type PatchOp, type AddTypeOp, type AddFieldOp, type SetFieldTypeOp, type SetDefaultValueOp, type AddConstraintOp, type AddComputedOp, type AddActionAvailableOp, type RenderOptions, } from "./patch-op.js";
|
|
22
|
-
export { renderFragment, renderFragments, renderFragmentsByKind, renderAsDomain, type PatchFragment, type FragmentRenderOptions, } from "./fragment.js";
|
|
23
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC"}
|
package/dist/renderer/index.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MEL Renderer
|
|
3
|
-
*
|
|
4
|
-
* Converts PatchFragment AST to MEL text syntax.
|
|
5
|
-
*
|
|
6
|
-
* This is the inverse of the parser: Parser (MEL text → AST), Renderer (AST → MEL text).
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { renderFragment, renderAsDomain } from '@manifesto-ai/compiler';
|
|
11
|
-
*
|
|
12
|
-
* // Render a single fragment
|
|
13
|
-
* const mel = renderFragment(fragment);
|
|
14
|
-
*
|
|
15
|
-
* // Render multiple fragments as a domain
|
|
16
|
-
* const domain = renderAsDomain('MyDomain', fragments);
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
// Type expression renderer
|
|
20
|
-
export { renderTypeExpr, renderTypeField, renderValue, } from "./type-expr.js";
|
|
21
|
-
// Expression node renderer
|
|
22
|
-
export { renderExprNode, } from "./expr-node.js";
|
|
23
|
-
// Patch operation renderer
|
|
24
|
-
export { renderPatchOp, extractTypeName, } from "./patch-op.js";
|
|
25
|
-
// Fragment renderer
|
|
26
|
-
export { renderFragment, renderFragments, renderFragmentsByKind, renderAsDomain, } from "./fragment.js";
|
|
27
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,2BAA2B;AAC3B,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,GAGZ,MAAM,gBAAgB,CAAC;AAExB,2BAA2B;AAC3B,OAAO,EACL,cAAc,GAEf,MAAM,gBAAgB,CAAC;AAExB,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,eAAe,GAUhB,MAAM,eAAe,CAAC;AAEvB,oBAAoB;AACpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,cAAc,GAGf,MAAM,eAAe,CAAC"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PatchOp to MEL Renderer
|
|
3
|
-
*
|
|
4
|
-
* Converts PatchOp AST to MEL syntax snippets.
|
|
5
|
-
*
|
|
6
|
-
* Note: These are fragments, not complete domain definitions.
|
|
7
|
-
* The caller is responsible for assembling fragments into a valid MEL domain.
|
|
8
|
-
*/
|
|
9
|
-
import { TypeExpr, TypeField } from "./type-expr.js";
|
|
10
|
-
import { ExprNode } from "./expr-node.js";
|
|
11
|
-
export type AddTypeOp = {
|
|
12
|
-
kind: "addType";
|
|
13
|
-
typeName: string;
|
|
14
|
-
typeExpr: TypeExpr;
|
|
15
|
-
};
|
|
16
|
-
export type AddFieldOp = {
|
|
17
|
-
kind: "addField";
|
|
18
|
-
typeName: string;
|
|
19
|
-
field: TypeField & {
|
|
20
|
-
defaultValue?: unknown;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
export type SetFieldTypeOp = {
|
|
24
|
-
kind: "setFieldType";
|
|
25
|
-
path: string;
|
|
26
|
-
typeExpr: TypeExpr;
|
|
27
|
-
};
|
|
28
|
-
export type SetDefaultValueOp = {
|
|
29
|
-
kind: "setDefaultValue";
|
|
30
|
-
path: string;
|
|
31
|
-
value: unknown;
|
|
32
|
-
};
|
|
33
|
-
export type AddConstraintOp = {
|
|
34
|
-
kind: "addConstraint";
|
|
35
|
-
targetPath: string;
|
|
36
|
-
rule: ExprNode;
|
|
37
|
-
message?: string;
|
|
38
|
-
};
|
|
39
|
-
export type AddComputedOp = {
|
|
40
|
-
kind: "addComputed";
|
|
41
|
-
name: string;
|
|
42
|
-
expr: ExprNode;
|
|
43
|
-
deps?: string[];
|
|
44
|
-
};
|
|
45
|
-
export type AddActionAvailableOp = {
|
|
46
|
-
kind: "addActionAvailable";
|
|
47
|
-
actionName: string;
|
|
48
|
-
expr: ExprNode;
|
|
49
|
-
};
|
|
50
|
-
export type PatchOp = AddTypeOp | AddFieldOp | SetFieldTypeOp | SetDefaultValueOp | AddConstraintOp | AddComputedOp | AddActionAvailableOp;
|
|
51
|
-
export interface RenderOptions {
|
|
52
|
-
/**
|
|
53
|
-
* Indentation string (default: " ")
|
|
54
|
-
*/
|
|
55
|
-
indent?: string;
|
|
56
|
-
/**
|
|
57
|
-
* Include comments with metadata
|
|
58
|
-
*/
|
|
59
|
-
includeComments?: boolean;
|
|
60
|
-
/**
|
|
61
|
-
* Comment prefix for metadata
|
|
62
|
-
*/
|
|
63
|
-
commentPrefix?: string;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Renders a PatchOp to MEL syntax string.
|
|
67
|
-
*
|
|
68
|
-
* @param op - The PatchOp to render
|
|
69
|
-
* @param options - Rendering options
|
|
70
|
-
* @returns MEL syntax string
|
|
71
|
-
*/
|
|
72
|
-
export declare function renderPatchOp(op: PatchOp, options?: RenderOptions): string;
|
|
73
|
-
/**
|
|
74
|
-
* Gets the type name from a semantic path.
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* // "Todo.title" -> "Todo"
|
|
78
|
-
* // "User.address.city" -> "User"
|
|
79
|
-
* // "count" -> undefined
|
|
80
|
-
*/
|
|
81
|
-
export declare function extractTypeName(path: string): string | undefined;
|
|
82
|
-
//# sourceMappingURL=patch-op.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patch-op.d.ts","sourceRoot":"","sources":["../../src/renderer/patch-op.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAgD,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAkB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK1D,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,OAAO,GACf,SAAS,GACT,UAAU,GACV,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,oBAAoB,CAAC;AAIzB,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAUD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAqB1E;AAwKD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhE"}
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PatchOp to MEL Renderer
|
|
3
|
-
*
|
|
4
|
-
* Converts PatchOp AST to MEL syntax snippets.
|
|
5
|
-
*
|
|
6
|
-
* Note: These are fragments, not complete domain definitions.
|
|
7
|
-
* The caller is responsible for assembling fragments into a valid MEL domain.
|
|
8
|
-
*/
|
|
9
|
-
import { renderTypeExpr, renderTypeField, renderValue } from "./type-expr.js";
|
|
10
|
-
import { renderExprNode } from "./expr-node.js";
|
|
11
|
-
import { parsePath } from "@manifesto-ai/core";
|
|
12
|
-
const DEFAULT_OPTIONS = {
|
|
13
|
-
indent: " ",
|
|
14
|
-
includeComments: false,
|
|
15
|
-
commentPrefix: "// ",
|
|
16
|
-
};
|
|
17
|
-
// ============ PatchOp Renderers ============
|
|
18
|
-
/**
|
|
19
|
-
* Renders a PatchOp to MEL syntax string.
|
|
20
|
-
*
|
|
21
|
-
* @param op - The PatchOp to render
|
|
22
|
-
* @param options - Rendering options
|
|
23
|
-
* @returns MEL syntax string
|
|
24
|
-
*/
|
|
25
|
-
export function renderPatchOp(op, options) {
|
|
26
|
-
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
27
|
-
switch (op.kind) {
|
|
28
|
-
case "addType":
|
|
29
|
-
return renderAddType(op, opts);
|
|
30
|
-
case "addField":
|
|
31
|
-
return renderAddField(op, opts);
|
|
32
|
-
case "setFieldType":
|
|
33
|
-
return renderSetFieldType(op, opts);
|
|
34
|
-
case "setDefaultValue":
|
|
35
|
-
return renderSetDefaultValue(op, opts);
|
|
36
|
-
case "addConstraint":
|
|
37
|
-
return renderAddConstraint(op, opts);
|
|
38
|
-
case "addComputed":
|
|
39
|
-
return renderAddComputed(op, opts);
|
|
40
|
-
case "addActionAvailable":
|
|
41
|
-
return renderAddActionAvailable(op, opts);
|
|
42
|
-
default:
|
|
43
|
-
return `// Unknown operation: ${JSON.stringify(op)}`;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Renders an addType operation.
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* // Input: { kind: "addType", typeName: "Todo", typeExpr: { kind: "object", fields: [...] } }
|
|
51
|
-
* // Output:
|
|
52
|
-
* // type Todo {
|
|
53
|
-
* // id: string
|
|
54
|
-
* // title: string
|
|
55
|
-
* // completed: boolean
|
|
56
|
-
* // }
|
|
57
|
-
*/
|
|
58
|
-
function renderAddType(op, opts) {
|
|
59
|
-
const { indent } = opts;
|
|
60
|
-
if (op.typeExpr.kind === "object") {
|
|
61
|
-
const fields = op.typeExpr.fields
|
|
62
|
-
.map((field) => `${indent}${renderTypeField(field)}`)
|
|
63
|
-
.join("\n");
|
|
64
|
-
return `type ${op.typeName} {\n${fields}\n}`;
|
|
65
|
-
}
|
|
66
|
-
// For non-object types (aliases)
|
|
67
|
-
return `type ${op.typeName} = ${renderTypeExpr(op.typeExpr)}`;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Renders an addField operation.
|
|
71
|
-
*
|
|
72
|
-
* @example
|
|
73
|
-
* // Input: { kind: "addField", typeName: "Todo", field: { name: "priority", type: { kind: "primitive", name: "number" }, optional: true } }
|
|
74
|
-
* // Output: priority?: number
|
|
75
|
-
*
|
|
76
|
-
* // With default value:
|
|
77
|
-
* // Input: { field: { name: "status", type: {...}, optional: false }, defaultValue: "active" }
|
|
78
|
-
* // Output: status: "idle" | "active" | "done" = "active"
|
|
79
|
-
*/
|
|
80
|
-
function renderAddField(op, _opts) {
|
|
81
|
-
const field = op.field;
|
|
82
|
-
if ("defaultValue" in field && field.defaultValue !== undefined) {
|
|
83
|
-
return renderTypeField(field, field.defaultValue);
|
|
84
|
-
}
|
|
85
|
-
return renderTypeField(field);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Renders a setFieldType operation.
|
|
89
|
-
*
|
|
90
|
-
* @example
|
|
91
|
-
* // Input: { kind: "setFieldType", path: "Todo.status", typeExpr: { kind: "union", members: [...] } }
|
|
92
|
-
* // Output: // Change Todo.status type to: "idle" | "active" | "done"
|
|
93
|
-
* // status: "idle" | "active" | "done"
|
|
94
|
-
*/
|
|
95
|
-
function renderSetFieldType(op, opts) {
|
|
96
|
-
const typeStr = renderTypeExpr(op.typeExpr);
|
|
97
|
-
const fieldName = extractFieldName(op.path);
|
|
98
|
-
const lines = [];
|
|
99
|
-
if (opts.includeComments) {
|
|
100
|
-
lines.push(`${opts.commentPrefix}Change ${op.path} type to: ${typeStr}`);
|
|
101
|
-
}
|
|
102
|
-
lines.push(`${fieldName}: ${typeStr}`);
|
|
103
|
-
return lines.join("\n");
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Renders a setDefaultValue operation.
|
|
107
|
-
*
|
|
108
|
-
* @example
|
|
109
|
-
* // Input: { kind: "setDefaultValue", path: "Todo.completed", value: false }
|
|
110
|
-
* // Output: completed: boolean = false
|
|
111
|
-
*/
|
|
112
|
-
function renderSetDefaultValue(op, opts) {
|
|
113
|
-
const fieldName = extractFieldName(op.path);
|
|
114
|
-
const valueStr = renderValue(op.value);
|
|
115
|
-
const lines = [];
|
|
116
|
-
if (opts.includeComments) {
|
|
117
|
-
lines.push(`${opts.commentPrefix}Set default value for ${op.path}`);
|
|
118
|
-
}
|
|
119
|
-
lines.push(`${fieldName} = ${valueStr}`);
|
|
120
|
-
return lines.join("\n");
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Renders an addConstraint operation.
|
|
124
|
-
*
|
|
125
|
-
* Note: MEL constraints are typically expressed as validation rules or invariants.
|
|
126
|
-
* Since MEL v0.3.3 doesn't have explicit constraint syntax in the examples,
|
|
127
|
-
* we render as a comment with the constraint expression.
|
|
128
|
-
*
|
|
129
|
-
* @example
|
|
130
|
-
* // Input: { kind: "addConstraint", targetPath: "User.age", rule: { kind: "gte", ... }, message: "Must be adult" }
|
|
131
|
-
* // Output: // Constraint on User.age: gte(age, 18) - "Must be adult"
|
|
132
|
-
*/
|
|
133
|
-
function renderAddConstraint(op, opts) {
|
|
134
|
-
const exprStr = renderExprNode(op.rule);
|
|
135
|
-
const messageStr = op.message ? ` - "${op.message}"` : "";
|
|
136
|
-
// Constraints are rendered as comments since MEL v0.3.3 doesn't have explicit constraint syntax
|
|
137
|
-
// The actual validation would be done via when guards in actions
|
|
138
|
-
return `${opts.commentPrefix}Constraint on ${op.targetPath}: ${exprStr}${messageStr}`;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Renders an addComputed operation.
|
|
142
|
-
*
|
|
143
|
-
* @example
|
|
144
|
-
* // Input: { kind: "addComputed", name: "totalPrice", expr: { kind: "mul", left: {...}, right: {...} } }
|
|
145
|
-
* // Output: computed totalPrice = mul(price, quantity)
|
|
146
|
-
*/
|
|
147
|
-
function renderAddComputed(op, opts) {
|
|
148
|
-
const exprStr = renderExprNode(op.expr);
|
|
149
|
-
const lines = [];
|
|
150
|
-
if (opts.includeComments && op.deps && op.deps.length > 0) {
|
|
151
|
-
lines.push(`${opts.commentPrefix}Dependencies: ${op.deps.join(", ")}`);
|
|
152
|
-
}
|
|
153
|
-
lines.push(`computed ${op.name} = ${exprStr}`);
|
|
154
|
-
return lines.join("\n");
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Renders an addActionAvailable operation.
|
|
158
|
-
*
|
|
159
|
-
* @example
|
|
160
|
-
* // Input: { kind: "addActionAvailable", actionName: "submit", expr: { kind: "and", args: [...] } }
|
|
161
|
-
* // Output: action submit() available when and(isValid, not(isSubmitting)) {
|
|
162
|
-
* // // action body...
|
|
163
|
-
* // }
|
|
164
|
-
*/
|
|
165
|
-
function renderAddActionAvailable(op, opts) {
|
|
166
|
-
const exprStr = renderExprNode(op.expr);
|
|
167
|
-
const lines = [];
|
|
168
|
-
if (opts.includeComments) {
|
|
169
|
-
lines.push(`${opts.commentPrefix}Add availability condition to ${op.actionName}`);
|
|
170
|
-
}
|
|
171
|
-
lines.push(`action ${op.actionName}() available when ${exprStr} {`);
|
|
172
|
-
lines.push(`${opts.indent}// action body...`);
|
|
173
|
-
lines.push(`}`);
|
|
174
|
-
return lines.join("\n");
|
|
175
|
-
}
|
|
176
|
-
// ============ Utility Functions ============
|
|
177
|
-
/**
|
|
178
|
-
* Extracts the field name from a semantic path.
|
|
179
|
-
*
|
|
180
|
-
* @example
|
|
181
|
-
* // "Todo.title" -> "title"
|
|
182
|
-
* // "User.address.city" -> "city"
|
|
183
|
-
* // "count" -> "count"
|
|
184
|
-
*/
|
|
185
|
-
function extractFieldName(path) {
|
|
186
|
-
const parts = parsePath(path);
|
|
187
|
-
return parts[parts.length - 1] ?? "";
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Gets the type name from a semantic path.
|
|
191
|
-
*
|
|
192
|
-
* @example
|
|
193
|
-
* // "Todo.title" -> "Todo"
|
|
194
|
-
* // "User.address.city" -> "User"
|
|
195
|
-
* // "count" -> undefined
|
|
196
|
-
*/
|
|
197
|
-
export function extractTypeName(path) {
|
|
198
|
-
const parts = parsePath(path);
|
|
199
|
-
if (parts.length >= 2) {
|
|
200
|
-
return parts[0];
|
|
201
|
-
}
|
|
202
|
-
return undefined;
|
|
203
|
-
}
|
|
204
|
-
//# sourceMappingURL=patch-op.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patch-op.js","sourceRoot":"","sources":["../../src/renderer/patch-op.ts"],"names":[],"mappings":"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"}
|