@mcp-graph-workflow/mcp-graph 5.31.1 → 5.33.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.
- package/README.md +1 -1
- package/dist/api/router.d.ts.map +1 -1
- package/dist/api/router.js +2 -0
- package/dist/api/router.js.map +1 -1
- package/dist/api/routes/davinci.d.ts +3 -0
- package/dist/api/routes/davinci.d.ts.map +1 -0
- package/dist/api/routes/davinci.js +188 -0
- package/dist/api/routes/davinci.js.map +1 -0
- package/dist/api/routes/translation-project.js +2 -2
- package/dist/api/routes/translation-project.js.map +1 -1
- package/dist/api/routes/translation.js +2 -2
- package/dist/api/routes/translation.js.map +1 -1
- package/dist/core/davinci/build-runner.d.ts +37 -0
- package/dist/core/davinci/build-runner.d.ts.map +1 -0
- package/dist/core/davinci/build-runner.js +239 -0
- package/dist/core/davinci/build-runner.js.map +1 -0
- package/dist/core/davinci/davinci-parser.d.ts +6 -0
- package/dist/core/davinci/davinci-parser.d.ts.map +1 -0
- package/dist/core/davinci/davinci-parser.js +218 -0
- package/dist/core/davinci/davinci-parser.js.map +1 -0
- package/dist/core/davinci/davinci-store.d.ts +49 -0
- package/dist/core/davinci/davinci-store.d.ts.map +1 -0
- package/dist/core/davinci/davinci-store.js +121 -0
- package/dist/core/davinci/davinci-store.js.map +1 -0
- package/dist/core/davinci/davinci-types.d.ts +241 -0
- package/dist/core/davinci/davinci-types.d.ts.map +1 -0
- package/dist/core/davinci/davinci-types.js +123 -0
- package/dist/core/davinci/davinci-types.js.map +1 -0
- package/dist/core/davinci/davinci-validators.d.ts +16 -0
- package/dist/core/davinci/davinci-validators.d.ts.map +1 -0
- package/dist/core/davinci/davinci-validators.js +86 -0
- package/dist/core/davinci/davinci-validators.js.map +1 -0
- package/dist/core/davinci/descriptor-generator.d.ts +19 -0
- package/dist/core/davinci/descriptor-generator.d.ts.map +1 -0
- package/dist/core/davinci/descriptor-generator.js +52 -0
- package/dist/core/davinci/descriptor-generator.js.map +1 -0
- package/dist/core/davinci/plugin-generator.d.ts +29 -0
- package/dist/core/davinci/plugin-generator.d.ts.map +1 -0
- package/dist/core/davinci/plugin-generator.js +86 -0
- package/dist/core/davinci/plugin-generator.js.map +1 -0
- package/dist/core/davinci/plugin-type-detector.d.ts +15 -0
- package/dist/core/davinci/plugin-type-detector.d.ts.map +1 -0
- package/dist/core/davinci/plugin-type-detector.js +114 -0
- package/dist/core/davinci/plugin-type-detector.js.map +1 -0
- package/dist/core/davinci/pom-generator.d.ts +4 -0
- package/dist/core/davinci/pom-generator.d.ts.map +1 -0
- package/dist/core/davinci/pom-generator.js +179 -0
- package/dist/core/davinci/pom-generator.js.map +1 -0
- package/dist/core/davinci/template-registry.d.ts +25 -0
- package/dist/core/davinci/template-registry.d.ts.map +1 -0
- package/dist/core/davinci/template-registry.js +280 -0
- package/dist/core/davinci/template-registry.js.map +1 -0
- package/dist/core/davinci/variable-resolver.d.ts +9 -0
- package/dist/core/davinci/variable-resolver.d.ts.map +1 -0
- package/dist/core/davinci/variable-resolver.js +62 -0
- package/dist/core/davinci/variable-resolver.js.map +1 -0
- package/dist/core/parser/read-swagger.d.ts.map +1 -1
- package/dist/core/parser/read-swagger.js +6 -0
- package/dist/core/parser/read-swagger.js.map +1 -1
- package/dist/core/siebel/sif-parser.d.ts.map +1 -1
- package/dist/core/siebel/sif-parser.js +6 -0
- package/dist/core/siebel/sif-parser.js.map +1 -1
- package/dist/core/siebel/wsdl-parser.d.ts.map +1 -1
- package/dist/core/siebel/wsdl-parser.js +6 -0
- package/dist/core/siebel/wsdl-parser.js.map +1 -1
- package/dist/core/translation/generators/ast-placeholder-extractor.d.ts +20 -0
- package/dist/core/translation/generators/ast-placeholder-extractor.d.ts.map +1 -0
- package/dist/core/translation/generators/ast-placeholder-extractor.js +215 -0
- package/dist/core/translation/generators/ast-placeholder-extractor.js.map +1 -0
- package/dist/core/translation/generators/placeholder-resolver.d.ts +18 -0
- package/dist/core/translation/generators/placeholder-resolver.d.ts.map +1 -0
- package/dist/core/translation/generators/placeholder-resolver.js +487 -0
- package/dist/core/translation/generators/placeholder-resolver.js.map +1 -0
- package/dist/core/translation/generators/source-text-extractor.d.ts +20 -0
- package/dist/core/translation/generators/source-text-extractor.d.ts.map +1 -0
- package/dist/core/translation/generators/source-text-extractor.js +190 -0
- package/dist/core/translation/generators/source-text-extractor.js.map +1 -0
- package/dist/core/translation/generators/universal-generator.d.ts +23 -0
- package/dist/core/translation/generators/universal-generator.d.ts.map +1 -0
- package/dist/core/translation/generators/universal-generator.js +315 -0
- package/dist/core/translation/generators/universal-generator.js.map +1 -0
- package/dist/core/translation/language-detect.d.ts.map +1 -1
- package/dist/core/translation/language-detect.js +37 -14
- package/dist/core/translation/language-detect.js.map +1 -1
- package/dist/core/translation/parsers/parser-adapter.d.ts +4 -0
- package/dist/core/translation/parsers/parser-adapter.d.ts.map +1 -1
- package/dist/core/translation/project-translation-orchestrator.d.ts +3 -3
- package/dist/core/translation/project-translation-orchestrator.d.ts.map +1 -1
- package/dist/core/translation/project-translation-orchestrator.js +4 -4
- package/dist/core/translation/project-translation-orchestrator.js.map +1 -1
- package/dist/core/translation/prompt-builder.d.ts +4 -0
- package/dist/core/translation/prompt-builder.d.ts.map +1 -1
- package/dist/core/translation/prompt-builder.js +13 -3
- package/dist/core/translation/prompt-builder.js.map +1 -1
- package/dist/core/translation/translation-orchestrator.d.ts +2 -1
- package/dist/core/translation/translation-orchestrator.d.ts.map +1 -1
- package/dist/core/translation/translation-orchestrator.js +21 -2
- package/dist/core/translation/translation-orchestrator.js.map +1 -1
- package/dist/docs-manifest.json +64 -2
- package/dist/mcp/app-factory.js +1 -1
- package/dist/mcp/app-factory.js.map +1 -1
- package/dist/mcp/tools/davinci-analyze.d.ts +4 -0
- package/dist/mcp/tools/davinci-analyze.d.ts.map +1 -0
- package/dist/mcp/tools/davinci-analyze.js +31 -0
- package/dist/mcp/tools/davinci-analyze.js.map +1 -0
- package/dist/mcp/tools/davinci-build.d.ts +4 -0
- package/dist/mcp/tools/davinci-build.d.ts.map +1 -0
- package/dist/mcp/tools/davinci-build.js +43 -0
- package/dist/mcp/tools/davinci-build.js.map +1 -0
- package/dist/mcp/tools/davinci-convert.d.ts +4 -0
- package/dist/mcp/tools/davinci-convert.d.ts.map +1 -0
- package/dist/mcp/tools/davinci-convert.js +61 -0
- package/dist/mcp/tools/davinci-convert.js.map +1 -0
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +8 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/translate-code.js +1 -1
- package/dist/mcp/tools/translate-code.js.map +1 -1
- package/dist/web/dashboard/dist/assets/{benchmark-tab-GHO9Ji5M.js → benchmark-tab-BezNQCQh.js} +1 -1
- package/dist/web/dashboard/dist/assets/{circle-alert-CfDAmNcO.js → circle-alert-DKsqBTgC.js} +1 -1
- package/dist/web/dashboard/dist/assets/{context-tab-B_6B65lw.js → context-tab-Cmar9i-X.js} +1 -1
- package/dist/web/dashboard/dist/assets/davinci-tab-CkWYkDsy.js +10 -0
- package/dist/web/dashboard/dist/assets/{docs-tab-Dq7rtZol.js → docs-tab-CYpDJ3Rl.js} +1 -1
- package/dist/web/dashboard/dist/assets/file-code-B0t0xVTk.js +11 -0
- package/dist/web/dashboard/dist/assets/{gitnexus-tab-DAPpyAe_.js → gitnexus-tab-COEhhMeC.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-section-O0mwo9kz.js → graph-section-CheOuwv_.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-tab-CAx8lu7Z.js → graph-tab-B52UV5KP.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-utils-BwdXFM9h.js → graph-utils-D5HpaYbf.js} +1 -1
- package/dist/web/dashboard/dist/assets/{index-f0wNMEe_.js → index--SYA0Gq0.js} +1 -1
- package/dist/web/dashboard/dist/assets/index-BcMjWikL.css +1 -0
- package/dist/web/dashboard/dist/assets/{index-BxYtgAYc.js → index-DFMBuNWV.js} +1 -1
- package/dist/web/dashboard/dist/assets/{index-D_SBClB-.js → index-DdenFaJ5.js} +24 -19
- package/dist/web/dashboard/dist/assets/{insights-tab-DfH4O_Gj.js → insights-tab-sPgv-iwt.js} +1 -1
- package/dist/web/dashboard/dist/assets/{journey-tab-D2_EXArZ.js → journey-tab-CS416bwg.js} +1 -1
- package/dist/web/dashboard/dist/assets/languages-tab-CcB_s-Ic.js +108 -0
- package/dist/web/dashboard/dist/assets/{loader-circle-D5Z5DuF4.js → loader-circle-BSNUICqd.js} +1 -1
- package/dist/web/dashboard/dist/assets/{logs-tab-DwVCJxNs.js → logs-tab-BbDXtvmz.js} +1 -1
- package/dist/web/dashboard/dist/assets/{lsp-tab-D_3asNom.js → lsp-tab-BrytF6mP.js} +3 -3
- package/dist/web/dashboard/dist/assets/{memories-tab-BVe3nUf6.js → memories-tab-qCFdXJIV.js} +1 -1
- package/dist/web/dashboard/dist/assets/{prd-backlog-tab-DmeNjNES.js → prd-backlog-tab-BiNvyICT.js} +1 -1
- package/dist/web/dashboard/dist/assets/{refresh-cw-dY_ihv6e.js → refresh-cw-CqVWFFCW.js} +1 -1
- package/dist/web/dashboard/dist/assets/{siebel-tab-CUO3fUiF.js → siebel-tab-DFNHIBbS.js} +3 -3
- package/dist/web/dashboard/dist/assets/{sif-parse.worker-DZrybOHz.js → sif-parse.worker-Cty_N-lP.js} +3 -3
- package/dist/web/dashboard/dist/assets/{skills-tab-lUKwXrZi.js → skills-tab-DlInZCyj.js} +1 -1
- package/dist/web/dashboard/dist/assets/{style-Chqa3iIg.js → style-B4jQtUGE.js} +1 -1
- package/dist/web/dashboard/dist/assets/triangle-alert-CqXtIU3H.js +16 -0
- package/dist/web/dashboard/dist/assets/upload-Cb3pIYT5.js +16 -0
- package/dist/web/dashboard/dist/index.html +2 -2
- package/package.json +2 -2
- package/dist/web/dashboard/dist/assets/index-BVhCKhGJ.css +0 -1
- package/dist/web/dashboard/dist/assets/languages-tab-Cs-EF0mT.js +0 -123
- package/dist/web/dashboard/dist/assets/triangle-alert-CkVvjxDP.js +0 -26
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AstPlaceholderExtractor — AST-based extraction via web-tree-sitter.
|
|
3
|
+
*
|
|
4
|
+
* Replaces regex-based SourceTextExtractor + PlaceholderResolver with
|
|
5
|
+
* a single AST-based module. Uses TreeSitterManager (already in project)
|
|
6
|
+
* to parse source code, walks AST nodes to extract placeholder values.
|
|
7
|
+
*
|
|
8
|
+
* Falls back to regex-based extraction for languages without WASM grammar
|
|
9
|
+
* (TypeScript, Kotlin, Swift, Scala, Dart, Haskell, Elixir).
|
|
10
|
+
*/
|
|
11
|
+
import { TreeSitterManager } from "../../code/treesitter/treesitter-manager.js";
|
|
12
|
+
import { extractSourceText } from "./source-text-extractor.js";
|
|
13
|
+
import { resolvePlaceholders } from "./placeholder-resolver.js";
|
|
14
|
+
import { logger } from "../../utils/logger.js";
|
|
15
|
+
// ── Singleton manager ─────────────────────────────
|
|
16
|
+
let manager = null;
|
|
17
|
+
function getManager() {
|
|
18
|
+
if (!manager) {
|
|
19
|
+
manager = new TreeSitterManager();
|
|
20
|
+
}
|
|
21
|
+
return manager;
|
|
22
|
+
}
|
|
23
|
+
// ── Languages with WASM grammars ──────────────────
|
|
24
|
+
const AST_SUPPORTED_LANGUAGES = new Set([
|
|
25
|
+
"python", "go", "rust", "java", "c", "cpp", "ruby", "php", "csharp", "lua",
|
|
26
|
+
]);
|
|
27
|
+
// ── Public API ────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Enrich ParsedConstruct[] with sourceText and resolvedPlaceholders
|
|
30
|
+
* using AST-based extraction (web-tree-sitter).
|
|
31
|
+
*
|
|
32
|
+
* Falls back to regex for languages without WASM grammar.
|
|
33
|
+
* Returns a NEW array — does not mutate input.
|
|
34
|
+
*/
|
|
35
|
+
export async function extractPlaceholdersFromAst(sourceCode, constructs, sourceLanguageId) {
|
|
36
|
+
if (constructs.length === 0)
|
|
37
|
+
return [];
|
|
38
|
+
// Try AST-based extraction if language has WASM grammar
|
|
39
|
+
if (AST_SUPPORTED_LANGUAGES.has(sourceLanguageId)) {
|
|
40
|
+
try {
|
|
41
|
+
const mgr = getManager();
|
|
42
|
+
await mgr.initialize();
|
|
43
|
+
const parser = await mgr.getParser(sourceLanguageId);
|
|
44
|
+
if (parser) {
|
|
45
|
+
const tree = parser.parse(sourceCode);
|
|
46
|
+
if (tree?.rootNode) {
|
|
47
|
+
return enrichFromAst(tree.rootNode, constructs, sourceCode, sourceLanguageId);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
logger.warn("ast-extractor:fallback", {
|
|
53
|
+
language: sourceLanguageId,
|
|
54
|
+
error: String(err),
|
|
55
|
+
message: "AST parsing failed, falling back to regex",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Fallback: regex-based extraction
|
|
60
|
+
return fallbackToRegex(sourceCode, constructs, sourceLanguageId);
|
|
61
|
+
}
|
|
62
|
+
// ── AST-based extraction ──────────────────────────
|
|
63
|
+
function enrichFromAst(rootNode, constructs, sourceCode, languageId) {
|
|
64
|
+
return constructs.map((c) => {
|
|
65
|
+
// Find AST node matching this construct's start line
|
|
66
|
+
const astNode = findNodeAtLine(rootNode, c.startLine);
|
|
67
|
+
if (!astNode) {
|
|
68
|
+
// No AST node found — use regex fallback for this construct
|
|
69
|
+
const regexResult = fallbackSingleConstruct(sourceCode, c, languageId);
|
|
70
|
+
return regexResult;
|
|
71
|
+
}
|
|
72
|
+
// Extract sourceText from AST node
|
|
73
|
+
const sourceText = astNode.text ?? "";
|
|
74
|
+
// Extract placeholders by walking AST node fields
|
|
75
|
+
const resolvedPlaceholders = extractFieldsFromNode(astNode, c.constructId, languageId);
|
|
76
|
+
// Include name from construct if not resolved from AST
|
|
77
|
+
if (c.name && !resolvedPlaceholders.name) {
|
|
78
|
+
resolvedPlaceholders.name = c.name;
|
|
79
|
+
}
|
|
80
|
+
return { ...c, sourceText, resolvedPlaceholders };
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Find the AST node at a given 1-based line number.
|
|
85
|
+
* Searches for the most specific (deepest) named node at that line.
|
|
86
|
+
*/
|
|
87
|
+
function findNodeAtLine(rootNode, targetLine) {
|
|
88
|
+
const targetRow = targetLine - 1; // tree-sitter uses 0-based rows
|
|
89
|
+
// Walk children to find the node that starts at targetRow
|
|
90
|
+
let bestMatch = null;
|
|
91
|
+
function walk(node) {
|
|
92
|
+
if (!node)
|
|
93
|
+
return;
|
|
94
|
+
const startRow = node.startPosition?.row ?? -1;
|
|
95
|
+
const endRow = node.endPosition?.row ?? -1;
|
|
96
|
+
if (startRow === targetRow && node.isNamed) {
|
|
97
|
+
// Prefer broader nodes (function_definition over just name identifier)
|
|
98
|
+
if (!bestMatch || (node.endPosition?.row ?? 0) > (bestMatch.endPosition?.row ?? 0)) {
|
|
99
|
+
bestMatch = node;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Only recurse into children that overlap with target
|
|
103
|
+
if (startRow <= targetRow && endRow >= targetRow) {
|
|
104
|
+
const childCount = node.namedChildCount ?? node.childCount ?? 0;
|
|
105
|
+
for (let i = 0; i < childCount; i++) {
|
|
106
|
+
const child = node.namedChild?.(i) ?? node.child?.(i);
|
|
107
|
+
if (child)
|
|
108
|
+
walk(child);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
walk(rootNode);
|
|
113
|
+
return bestMatch;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Extract placeholder values from AST node fields.
|
|
117
|
+
* Uses tree-sitter's childForFieldName API for structured extraction.
|
|
118
|
+
*/
|
|
119
|
+
function extractFieldsFromNode(node, _constructId, _languageId) {
|
|
120
|
+
const result = {};
|
|
121
|
+
// Name field
|
|
122
|
+
const nameNode = node.childForFieldName?.("name");
|
|
123
|
+
if (nameNode) {
|
|
124
|
+
result.name = nameNode.text;
|
|
125
|
+
}
|
|
126
|
+
// Parameters field (function/method)
|
|
127
|
+
const paramsNode = node.childForFieldName?.("parameters");
|
|
128
|
+
if (paramsNode) {
|
|
129
|
+
// Strip outer parentheses
|
|
130
|
+
let params = paramsNode.text ?? "";
|
|
131
|
+
if (params.startsWith("(") && params.endsWith(")")) {
|
|
132
|
+
params = params.slice(1, -1).trim();
|
|
133
|
+
}
|
|
134
|
+
result.params = params;
|
|
135
|
+
}
|
|
136
|
+
// Body field (function/class/if/loop)
|
|
137
|
+
const bodyNode = node.childForFieldName?.("body");
|
|
138
|
+
if (bodyNode) {
|
|
139
|
+
let body = bodyNode.text ?? "";
|
|
140
|
+
// Strip outer braces for brace languages
|
|
141
|
+
if (body.startsWith("{") && body.endsWith("}")) {
|
|
142
|
+
body = body.slice(1, -1).trim();
|
|
143
|
+
}
|
|
144
|
+
// Strip leading colon for Python
|
|
145
|
+
if (body.startsWith(":")) {
|
|
146
|
+
body = body.slice(1).trim();
|
|
147
|
+
}
|
|
148
|
+
result.body = body;
|
|
149
|
+
result.members = body; // alias for class constructs
|
|
150
|
+
}
|
|
151
|
+
// Return type
|
|
152
|
+
const returnTypeNode = node.childForFieldName?.("return_type") ?? node.childForFieldName?.("type");
|
|
153
|
+
if (returnTypeNode) {
|
|
154
|
+
let returnType = returnTypeNode.text ?? "";
|
|
155
|
+
if (returnType.startsWith(":"))
|
|
156
|
+
returnType = returnType.slice(1).trim();
|
|
157
|
+
if (returnType.startsWith("->"))
|
|
158
|
+
returnType = returnType.slice(2).trim();
|
|
159
|
+
result.returnType = returnType;
|
|
160
|
+
}
|
|
161
|
+
// Condition (if/while/for)
|
|
162
|
+
const condNode = node.childForFieldName?.("condition");
|
|
163
|
+
if (condNode) {
|
|
164
|
+
let cond = condNode.text ?? "";
|
|
165
|
+
if (cond.startsWith("(") && cond.endsWith(")")) {
|
|
166
|
+
cond = cond.slice(1, -1).trim();
|
|
167
|
+
}
|
|
168
|
+
result.condition = cond;
|
|
169
|
+
}
|
|
170
|
+
// Superclass (class extends)
|
|
171
|
+
const superNode = node.childForFieldName?.("superclass") ?? node.childForFieldName?.("superclasses");
|
|
172
|
+
if (superNode) {
|
|
173
|
+
result.parent = superNode.text ?? "";
|
|
174
|
+
}
|
|
175
|
+
// Value (variable declarations, return)
|
|
176
|
+
const valueNode = node.childForFieldName?.("value") ?? node.childForFieldName?.("right");
|
|
177
|
+
if (valueNode) {
|
|
178
|
+
result.value = valueNode.text ?? "";
|
|
179
|
+
result.expression = valueNode.text ?? "";
|
|
180
|
+
}
|
|
181
|
+
// Module (imports)
|
|
182
|
+
const moduleNode = node.childForFieldName?.("module_name") ?? node.childForFieldName?.("source");
|
|
183
|
+
if (moduleNode) {
|
|
184
|
+
let mod = moduleNode.text ?? "";
|
|
185
|
+
if (mod.startsWith("'") || mod.startsWith('"')) {
|
|
186
|
+
mod = mod.slice(1, -1);
|
|
187
|
+
}
|
|
188
|
+
result.module = mod;
|
|
189
|
+
}
|
|
190
|
+
return result;
|
|
191
|
+
}
|
|
192
|
+
// ── Regex fallback ────────────────────────────────
|
|
193
|
+
function fallbackToRegex(sourceCode, constructs, languageId) {
|
|
194
|
+
const enriched = extractSourceText(sourceCode, constructs, languageId);
|
|
195
|
+
return enriched.map((c) => {
|
|
196
|
+
const resolvedPlaceholders = c.sourceText
|
|
197
|
+
? resolvePlaceholders(c.sourceText, c.constructId, languageId)
|
|
198
|
+
: {};
|
|
199
|
+
if (c.name && !resolvedPlaceholders.name) {
|
|
200
|
+
resolvedPlaceholders.name = c.name;
|
|
201
|
+
}
|
|
202
|
+
return { ...c, resolvedPlaceholders };
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
function fallbackSingleConstruct(sourceCode, construct, languageId) {
|
|
206
|
+
const [enriched] = extractSourceText(sourceCode, [construct], languageId);
|
|
207
|
+
const resolvedPlaceholders = enriched.sourceText
|
|
208
|
+
? resolvePlaceholders(enriched.sourceText, enriched.constructId, languageId)
|
|
209
|
+
: {};
|
|
210
|
+
if (enriched.name && !resolvedPlaceholders.name) {
|
|
211
|
+
resolvedPlaceholders.name = enriched.name;
|
|
212
|
+
}
|
|
213
|
+
return { ...enriched, resolvedPlaceholders };
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=ast-placeholder-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-placeholder-extractor.js","sourceRoot":"","sources":["../../../../src/core/translation/generators/ast-placeholder-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PlaceholderResolver — extracts {{placeholder}} values from source text.
|
|
3
|
+
*
|
|
4
|
+
* Given a construct's sourceText, constructId, and source language,
|
|
5
|
+
* extracts meaningful parts (name, params, body, condition, etc.)
|
|
6
|
+
* that can be substituted into UCR syntax patterns for the target language.
|
|
7
|
+
*
|
|
8
|
+
* Extractors are grouped by construct type and language family:
|
|
9
|
+
* - Brace-C family: TS, Java, Go, Rust, C#, C++, PHP, Swift, Kotlin, Scala, Dart
|
|
10
|
+
* - Indent family: Python, Haskell
|
|
11
|
+
* - Keyword-end family: Ruby, Lua, Elixir
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Extract placeholder values from sourceText based on construct type and language.
|
|
15
|
+
* Returns a Record<string, string> with keys matching UCR pattern placeholders.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolvePlaceholders(sourceText: string, constructId: string, sourceLanguageId: string): Record<string, string>;
|
|
18
|
+
//# sourceMappingURL=placeholder-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholder-resolver.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/generators/placeholder-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0ExB"}
|