@mcp-graph-workflow/mcp-graph 5.16.0 → 5.18.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/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/translation.d.ts +8 -0
- package/dist/api/routes/translation.d.ts.map +1 -0
- package/dist/api/routes/translation.js +174 -0
- package/dist/api/routes/translation.js.map +1 -0
- package/dist/cli/commands/import-cmd.d.ts.map +1 -1
- package/dist/cli/commands/import-cmd.js +2 -0
- package/dist/cli/commands/import-cmd.js.map +1 -1
- package/dist/core/analyzer/definition-of-ready.d.ts.map +1 -1
- package/dist/core/analyzer/definition-of-ready.js +12 -7
- package/dist/core/analyzer/definition-of-ready.js.map +1 -1
- package/dist/core/analyzer/risk-assessment.d.ts.map +1 -1
- package/dist/core/analyzer/risk-assessment.js +2 -0
- package/dist/core/analyzer/risk-assessment.js.map +1 -1
- package/dist/core/analyzer/scope-analyzer.d.ts.map +1 -1
- package/dist/core/analyzer/scope-analyzer.js +6 -3
- package/dist/core/analyzer/scope-analyzer.js.map +1 -1
- package/dist/core/config/ai-memory-generator.js +3 -3
- package/dist/core/context/bm25-compressor.d.ts.map +1 -1
- package/dist/core/context/bm25-compressor.js +5 -3
- package/dist/core/context/bm25-compressor.js.map +1 -1
- package/dist/core/context/compact-context.d.ts +2 -0
- package/dist/core/context/compact-context.d.ts.map +1 -1
- package/dist/core/context/compact-context.js +12 -12
- package/dist/core/context/compact-context.js.map +1 -1
- package/dist/core/designer/coupling-analyzer.d.ts.map +1 -1
- package/dist/core/designer/coupling-analyzer.js +2 -1
- package/dist/core/designer/coupling-analyzer.js.map +1 -1
- package/dist/core/events/event-types.d.ts +32 -1
- package/dist/core/events/event-types.d.ts.map +1 -1
- package/dist/core/handoff/delivery-checklist.d.ts.map +1 -1
- package/dist/core/handoff/delivery-checklist.js +6 -6
- package/dist/core/handoff/delivery-checklist.js.map +1 -1
- package/dist/core/implementer/sprint-progress.d.ts.map +1 -1
- package/dist/core/implementer/sprint-progress.js +3 -1
- package/dist/core/implementer/sprint-progress.js.map +1 -1
- package/dist/core/importer/prd-to-graph.d.ts.map +1 -1
- package/dist/core/importer/prd-to-graph.js +18 -6
- package/dist/core/importer/prd-to-graph.js.map +1 -1
- package/dist/core/insights/skill-recommender.d.ts.map +1 -1
- package/dist/core/insights/skill-recommender.js +3 -0
- package/dist/core/insights/skill-recommender.js.map +1 -1
- package/dist/core/listener/backlog-health.d.ts.map +1 -1
- package/dist/core/listener/backlog-health.js +3 -1
- package/dist/core/listener/backlog-health.js.map +1 -1
- package/dist/core/listener/feedback-readiness.d.ts.map +1 -1
- package/dist/core/listener/feedback-readiness.js +4 -5
- package/dist/core/listener/feedback-readiness.js.map +1 -1
- package/dist/core/lsp/lsp-bridge.d.ts +12 -2
- package/dist/core/lsp/lsp-bridge.d.ts.map +1 -1
- package/dist/core/lsp/lsp-bridge.js +139 -3
- package/dist/core/lsp/lsp-bridge.js.map +1 -1
- package/dist/core/lsp/lsp-edit-applier.d.ts +23 -0
- package/dist/core/lsp/lsp-edit-applier.d.ts.map +1 -0
- package/dist/core/lsp/lsp-edit-applier.js +204 -0
- package/dist/core/lsp/lsp-edit-applier.js.map +1 -0
- package/dist/core/lsp/lsp-server-manager.d.ts.map +1 -1
- package/dist/core/lsp/lsp-server-manager.js +18 -0
- package/dist/core/lsp/lsp-server-manager.js.map +1 -1
- package/dist/core/lsp/lsp-types.d.ts +35 -0
- package/dist/core/lsp/lsp-types.d.ts.map +1 -1
- package/dist/core/lsp/lsp-types.js +20 -0
- package/dist/core/lsp/lsp-types.js.map +1 -1
- package/dist/core/memory/memory-reader.d.ts.map +1 -1
- package/dist/core/memory/memory-reader.js +18 -3
- package/dist/core/memory/memory-reader.js.map +1 -1
- package/dist/core/parser/read-file.d.ts.map +1 -1
- package/dist/core/parser/read-file.js +11 -0
- package/dist/core/parser/read-file.js.map +1 -1
- package/dist/core/planner/decompose.d.ts.map +1 -1
- package/dist/core/planner/decompose.js +8 -3
- package/dist/core/planner/decompose.js.map +1 -1
- package/dist/core/planner/lifecycle-phase.d.ts +18 -0
- package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
- package/dist/core/planner/lifecycle-phase.js +112 -0
- package/dist/core/planner/lifecycle-phase.js.map +1 -1
- package/dist/core/planner/next-task.js +3 -3
- package/dist/core/planner/next-task.js.map +1 -1
- package/dist/core/planner/planning-report.js +3 -2
- package/dist/core/planner/planning-report.js.map +1 -1
- package/dist/core/planner/velocity.js +3 -0
- package/dist/core/planner/velocity.js.map +1 -1
- package/dist/core/rag/query-cache.js +2 -2
- package/dist/core/rag/query-cache.js.map +1 -1
- package/dist/core/rag/response-cache.d.ts +38 -0
- package/dist/core/rag/response-cache.d.ts.map +1 -0
- package/dist/core/rag/response-cache.js +84 -0
- package/dist/core/rag/response-cache.js.map +1 -0
- package/dist/core/rag/translation-indexer.d.ts +35 -0
- package/dist/core/rag/translation-indexer.d.ts.map +1 -0
- package/dist/core/rag/translation-indexer.js +70 -0
- package/dist/core/rag/translation-indexer.js.map +1 -0
- package/dist/core/reviewer/review-readiness.d.ts.map +1 -1
- package/dist/core/reviewer/review-readiness.js +4 -3
- package/dist/core/reviewer/review-readiness.js.map +1 -1
- package/dist/core/search/fts-search.d.ts.map +1 -1
- package/dist/core/search/fts-search.js +12 -6
- package/dist/core/search/fts-search.js.map +1 -1
- package/dist/core/siebel/wsdl-contract-validator.d.ts +25 -0
- package/dist/core/siebel/wsdl-contract-validator.d.ts.map +1 -0
- package/dist/core/siebel/wsdl-contract-validator.js +80 -0
- package/dist/core/siebel/wsdl-contract-validator.js.map +1 -0
- package/dist/core/siebel/wsdl-correlation.d.ts.map +1 -1
- package/dist/core/siebel/wsdl-correlation.js +2 -13
- package/dist/core/siebel/wsdl-correlation.js.map +1 -1
- package/dist/core/siebel/wsdl-doc-generator.d.ts +10 -0
- package/dist/core/siebel/wsdl-doc-generator.d.ts.map +1 -0
- package/dist/core/siebel/wsdl-doc-generator.js +95 -0
- package/dist/core/siebel/wsdl-doc-generator.js.map +1 -0
- package/dist/core/store/knowledge-store.d.ts +1 -0
- package/dist/core/store/knowledge-store.d.ts.map +1 -1
- package/dist/core/store/knowledge-store.js +28 -13
- package/dist/core/store/knowledge-store.js.map +1 -1
- package/dist/core/store/migrations.d.ts.map +1 -1
- package/dist/core/store/migrations.js +97 -0
- package/dist/core/store/migrations.js.map +1 -1
- package/dist/core/store/path-resolver.d.ts.map +1 -1
- package/dist/core/store/path-resolver.js +8 -3
- package/dist/core/store/path-resolver.js.map +1 -1
- package/dist/core/store/sqlite-store.d.ts.map +1 -1
- package/dist/core/store/sqlite-store.js +37 -12
- package/dist/core/store/sqlite-store.js.map +1 -1
- package/dist/core/store/store-manager.d.ts.map +1 -1
- package/dist/core/store/store-manager.js +3 -1
- package/dist/core/store/store-manager.js.map +1 -1
- package/dist/core/store/tool-call-log.d.ts +26 -0
- package/dist/core/store/tool-call-log.d.ts.map +1 -0
- package/dist/core/store/tool-call-log.js +70 -0
- package/dist/core/store/tool-call-log.js.map +1 -0
- package/dist/core/translation/confidence/ambiguity-detector.d.ts +18 -0
- package/dist/core/translation/confidence/ambiguity-detector.d.ts.map +1 -0
- package/dist/core/translation/confidence/ambiguity-detector.js +80 -0
- package/dist/core/translation/confidence/ambiguity-detector.js.map +1 -0
- package/dist/core/translation/confidence/equivalence-scorer.d.ts +22 -0
- package/dist/core/translation/confidence/equivalence-scorer.d.ts.map +1 -0
- package/dist/core/translation/confidence/equivalence-scorer.js +72 -0
- package/dist/core/translation/confidence/equivalence-scorer.js.map +1 -0
- package/dist/core/translation/generators/generator-adapter.d.ts +22 -0
- package/dist/core/translation/generators/generator-adapter.d.ts.map +1 -0
- package/dist/core/translation/generators/generator-adapter.js +6 -0
- package/dist/core/translation/generators/generator-adapter.js.map +1 -0
- package/dist/core/translation/generators/python-generator.d.ts +15 -0
- package/dist/core/translation/generators/python-generator.d.ts.map +1 -0
- package/dist/core/translation/generators/python-generator.js +74 -0
- package/dist/core/translation/generators/python-generator.js.map +1 -0
- package/dist/core/translation/generators/ts-generator.d.ts +14 -0
- package/dist/core/translation/generators/ts-generator.d.ts.map +1 -0
- package/dist/core/translation/generators/ts-generator.js +56 -0
- package/dist/core/translation/generators/ts-generator.js.map +1 -0
- package/dist/core/translation/language-detect.d.ts +12 -0
- package/dist/core/translation/language-detect.d.ts.map +1 -0
- package/dist/core/translation/language-detect.js +140 -0
- package/dist/core/translation/language-detect.js.map +1 -0
- package/dist/core/translation/parsers/parser-adapter.d.ts +23 -0
- package/dist/core/translation/parsers/parser-adapter.d.ts.map +1 -0
- package/dist/core/translation/parsers/parser-adapter.js +6 -0
- package/dist/core/translation/parsers/parser-adapter.js.map +1 -0
- package/dist/core/translation/parsers/python-parser-adapter.d.ts +10 -0
- package/dist/core/translation/parsers/python-parser-adapter.d.ts.map +1 -0
- package/dist/core/translation/parsers/python-parser-adapter.js +85 -0
- package/dist/core/translation/parsers/python-parser-adapter.js.map +1 -0
- package/dist/core/translation/parsers/ts-parser-adapter.d.ts +10 -0
- package/dist/core/translation/parsers/ts-parser-adapter.d.ts.map +1 -0
- package/dist/core/translation/parsers/ts-parser-adapter.js +145 -0
- package/dist/core/translation/parsers/ts-parser-adapter.js.map +1 -0
- package/dist/core/translation/prompt-builder.d.ts +34 -0
- package/dist/core/translation/prompt-builder.d.ts.map +1 -0
- package/dist/core/translation/prompt-builder.js +137 -0
- package/dist/core/translation/prompt-builder.js.map +1 -0
- package/dist/core/translation/translation-orchestrator.d.ts +67 -0
- package/dist/core/translation/translation-orchestrator.d.ts.map +1 -0
- package/dist/core/translation/translation-orchestrator.js +204 -0
- package/dist/core/translation/translation-orchestrator.js.map +1 -0
- package/dist/core/translation/translation-store.d.ts +35 -0
- package/dist/core/translation/translation-store.d.ts.map +1 -0
- package/dist/core/translation/translation-store.js +96 -0
- package/dist/core/translation/translation-store.js.map +1 -0
- package/dist/core/translation/translation-types.d.ts +156 -0
- package/dist/core/translation/translation-types.d.ts.map +1 -0
- package/dist/core/translation/translation-types.js +86 -0
- package/dist/core/translation/translation-types.js.map +1 -0
- package/dist/core/translation/ucr/construct-registry.d.ts +36 -0
- package/dist/core/translation/ucr/construct-registry.d.ts.map +1 -0
- package/dist/core/translation/ucr/construct-registry.js +159 -0
- package/dist/core/translation/ucr/construct-registry.js.map +1 -0
- package/dist/core/translation/ucr/construct-seed.d.ts +12 -0
- package/dist/core/translation/ucr/construct-seed.d.ts.map +1 -0
- package/dist/core/translation/ucr/construct-seed.js +35 -0
- package/dist/core/translation/ucr/construct-seed.js.map +1 -0
- package/dist/core/translation/ucr/construct-types.d.ts +174 -0
- package/dist/core/translation/ucr/construct-types.d.ts.map +1 -0
- package/dist/core/translation/ucr/construct-types.js +88 -0
- package/dist/core/translation/ucr/construct-types.js.map +1 -0
- package/dist/core/utils/ac-helpers.d.ts +5 -2
- package/dist/core/utils/ac-helpers.d.ts.map +1 -1
- package/dist/core/utils/ac-helpers.js +35 -4
- package/dist/core/utils/ac-helpers.js.map +1 -1
- package/dist/core/utils/blocked-helpers.d.ts.map +1 -1
- package/dist/core/utils/blocked-helpers.js +9 -1
- package/dist/core/utils/blocked-helpers.js.map +1 -1
- package/dist/core/utils/constants.d.ts +19 -0
- package/dist/core/utils/constants.d.ts.map +1 -1
- package/dist/core/utils/constants.js +23 -0
- package/dist/core/utils/constants.js.map +1 -1
- package/dist/core/utils/errors.d.ts +12 -0
- package/dist/core/utils/errors.d.ts.map +1 -1
- package/dist/core/utils/errors.js +25 -0
- package/dist/core/utils/errors.js.map +1 -1
- package/dist/core/utils/similarity.d.ts +9 -0
- package/dist/core/utils/similarity.d.ts.map +1 -0
- package/dist/core/utils/similarity.js +20 -0
- package/dist/core/utils/similarity.js.map +1 -0
- package/dist/core/validator/done-integrity-checker.d.ts.map +1 -1
- package/dist/core/validator/done-integrity-checker.js +4 -2
- package/dist/core/validator/done-integrity-checker.js.map +1 -1
- package/dist/core/validator/status-flow-checker.d.ts.map +1 -1
- package/dist/core/validator/status-flow-checker.js +2 -1
- package/dist/core/validator/status-flow-checker.js.map +1 -1
- package/dist/mcp/code-intelligence-wrapper.d.ts +79 -0
- package/dist/mcp/code-intelligence-wrapper.d.ts.map +1 -0
- package/dist/mcp/code-intelligence-wrapper.js +291 -0
- package/dist/mcp/code-intelligence-wrapper.js.map +1 -0
- package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
- package/dist/mcp/lifecycle-wrapper.js +57 -6
- package/dist/mcp/lifecycle-wrapper.js.map +1 -1
- package/dist/mcp/tool-classification.d.ts +20 -0
- package/dist/mcp/tool-classification.d.ts.map +1 -0
- package/dist/mcp/tool-classification.js +52 -0
- package/dist/mcp/tool-classification.js.map +1 -0
- package/dist/mcp/tools/analyze-translation.d.ts +8 -0
- package/dist/mcp/tools/analyze-translation.d.ts.map +1 -0
- package/dist/mcp/tools/analyze-translation.js +53 -0
- package/dist/mcp/tools/analyze-translation.js.map +1 -0
- package/dist/mcp/tools/analyze.d.ts.map +1 -1
- package/dist/mcp/tools/analyze.js +8 -0
- package/dist/mcp/tools/analyze.js.map +1 -1
- package/dist/mcp/tools/clone-node.d.ts.map +1 -1
- package/dist/mcp/tools/clone-node.js +5 -1
- package/dist/mcp/tools/clone-node.js.map +1 -1
- package/dist/mcp/tools/code-intelligence.d.ts +2 -0
- package/dist/mcp/tools/code-intelligence.d.ts.map +1 -1
- package/dist/mcp/tools/code-intelligence.js +168 -8
- package/dist/mcp/tools/code-intelligence.js.map +1 -1
- package/dist/mcp/tools/context.d.ts.map +1 -1
- package/dist/mcp/tools/context.js +3 -1
- package/dist/mcp/tools/context.js.map +1 -1
- package/dist/mcp/tools/delete-node.js +1 -1
- package/dist/mcp/tools/delete-node.js.map +1 -1
- package/dist/mcp/tools/edge.d.ts.map +1 -1
- package/dist/mcp/tools/edge.js +33 -20
- package/dist/mcp/tools/edge.js.map +1 -1
- package/dist/mcp/tools/export.d.ts.map +1 -1
- package/dist/mcp/tools/export.js +26 -1
- package/dist/mcp/tools/export.js.map +1 -1
- package/dist/mcp/tools/import-prd.js +1 -1
- package/dist/mcp/tools/import-prd.js.map +1 -1
- 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/init.d.ts.map +1 -1
- package/dist/mcp/tools/init.js +5 -1
- package/dist/mcp/tools/init.js.map +1 -1
- package/dist/mcp/tools/knowledge-feedback.d.ts.map +1 -1
- package/dist/mcp/tools/knowledge-feedback.js +3 -2
- package/dist/mcp/tools/knowledge-feedback.js.map +1 -1
- package/dist/mcp/tools/list.d.ts.map +1 -1
- package/dist/mcp/tools/list.js +6 -1
- package/dist/mcp/tools/list.js.map +1 -1
- package/dist/mcp/tools/manage-skill.d.ts.map +1 -1
- package/dist/mcp/tools/manage-skill.js +6 -0
- package/dist/mcp/tools/manage-skill.js.map +1 -1
- package/dist/mcp/tools/memory.js +4 -4
- package/dist/mcp/tools/memory.js.map +1 -1
- package/dist/mcp/tools/metrics.d.ts.map +1 -1
- package/dist/mcp/tools/metrics.js +32 -2
- package/dist/mcp/tools/metrics.js.map +1 -1
- package/dist/mcp/tools/move-node.js +1 -1
- package/dist/mcp/tools/move-node.js.map +1 -1
- package/dist/mcp/tools/node.d.ts.map +1 -1
- package/dist/mcp/tools/node.js +38 -35
- package/dist/mcp/tools/node.js.map +1 -1
- package/dist/mcp/tools/rag-context.d.ts +1 -1
- package/dist/mcp/tools/rag-context.d.ts.map +1 -1
- package/dist/mcp/tools/rag-context.js +21 -2
- package/dist/mcp/tools/rag-context.js.map +1 -1
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +8 -4
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/mcp/tools/set-phase.d.ts.map +1 -1
- package/dist/mcp/tools/set-phase.js +26 -5
- package/dist/mcp/tools/set-phase.js.map +1 -1
- package/dist/mcp/tools/show.js +1 -1
- package/dist/mcp/tools/show.js.map +1 -1
- package/dist/mcp/tools/siebel-import-sif.d.ts.map +1 -1
- package/dist/mcp/tools/siebel-import-sif.js +67 -36
- package/dist/mcp/tools/siebel-import-sif.js.map +1 -1
- package/dist/mcp/tools/translate-code.d.ts +8 -0
- package/dist/mcp/tools/translate-code.d.ts.map +1 -0
- package/dist/mcp/tools/translate-code.js +73 -0
- package/dist/mcp/tools/translate-code.js.map +1 -0
- package/dist/mcp/tools/update-node.js +1 -1
- package/dist/mcp/tools/update-node.js.map +1 -1
- package/dist/mcp/tools/update-status.js +1 -1
- package/dist/mcp/tools/update-status.js.map +1 -1
- package/dist/schemas/analyzer-schema.d.ts +5 -3
- package/dist/schemas/analyzer-schema.d.ts.map +1 -1
- package/dist/schemas/analyzer-schema.js +1 -0
- package/dist/schemas/analyzer-schema.js.map +1 -1
- package/dist/schemas/designer-schema.d.ts +4 -4
- package/dist/schemas/implementer-schema.d.ts +1 -0
- package/dist/schemas/implementer-schema.d.ts.map +1 -1
- package/dist/schemas/implementer-schema.js +1 -0
- package/dist/schemas/implementer-schema.js.map +1 -1
- package/dist/schemas/knowledge.schema.d.ts +2 -0
- package/dist/schemas/knowledge.schema.d.ts.map +1 -1
- package/dist/schemas/knowledge.schema.js +1 -0
- package/dist/schemas/knowledge.schema.js.map +1 -1
- package/dist/schemas/node.schema.js +1 -1
- package/dist/schemas/node.schema.js.map +1 -1
- package/dist/schemas/siebel.schema.d.ts +14 -14
- package/dist/schemas/validator-schema.d.ts +1 -0
- package/dist/schemas/validator-schema.d.ts.map +1 -1
- package/dist/schemas/validator-schema.js +1 -0
- package/dist/schemas/validator-schema.js.map +1 -1
- package/dist/web/dashboard/dist/assets/{benchmark-tab-LbjYcnjd.js → benchmark-tab-BWbrm3fF.js} +1 -1
- package/dist/web/dashboard/dist/assets/{context-tab-u_l0XUXT.js → context-tab-CD1pqDb2.js} +1 -1
- package/dist/web/dashboard/dist/assets/{gitnexus-tab-K304jKR3.js → gitnexus-tab-DWfMYYIO.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-section-3_2LPo7V.js → graph-section-ByabPxrl.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-tab-KG6GQq1a.js → graph-tab-Bd2SQl25.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-utils-cpyaBhnE.js → graph-utils-C3ZvD-eu.js} +1 -1
- package/dist/web/dashboard/dist/assets/{index-DY9euqve.js → index-CLbo-4nU.js} +1 -1
- package/dist/web/dashboard/dist/assets/{index-Co7yktBf.js → index-DknXi6Cq.js} +47 -42
- package/dist/web/dashboard/dist/assets/{index-Clwhz2ad.js → index-LPQ6gwAy.js} +1 -1
- package/dist/web/dashboard/dist/assets/index-jxbHgBUe.css +1 -0
- package/dist/web/dashboard/dist/assets/{insights-tab-yrnRR8CL.js → insights-tab-Kqy1BThw.js} +1 -1
- package/dist/web/dashboard/dist/assets/{journey-tab-Cfh-qkYk.js → journey-tab-CjfOzBFl.js} +1 -1
- package/dist/web/dashboard/dist/assets/languages-tab-BsE3pPKO.js +63 -0
- package/dist/web/dashboard/dist/assets/{logs-tab-B-8O6WzQ.js → logs-tab-D9XtpaKf.js} +1 -1
- package/dist/web/dashboard/dist/assets/lsp-tab-DN-wImxK.js +64 -0
- package/dist/web/dashboard/dist/assets/{memories-tab-5t0pfAsS.js → memories-tab-C9CgvCRH.js} +1 -1
- package/dist/web/dashboard/dist/assets/{prd-backlog-tab-Bgt2qin9.js → prd-backlog-tab-BOFkQdFu.js} +1 -1
- package/dist/web/dashboard/dist/assets/{siebel-tab-CjYyszVw.js → siebel-tab-BVSi4Va2.js} +3 -3
- package/dist/web/dashboard/dist/assets/{skills-tab-D-6Tem1J.js → skills-tab-DJpG9cOQ.js} +1 -1
- package/dist/web/dashboard/dist/assets/{style-Ci_RUKMJ.js → style-FoeO1y9E.js} +1 -1
- package/dist/web/dashboard/dist/assets/triangle-alert-B0LFw3Ht.js +11 -0
- package/dist/web/dashboard/dist/index.html +2 -2
- package/package.json +2 -2
- package/dist/web/dashboard/dist/assets/index-C1UckjqB.css +0 -1
- package/dist/web/dashboard/dist/assets/lsp-tab-CBM8pixC.js +0 -74
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python Generator — emits Python code from canonical constructs
|
|
3
|
+
* using UCR syntax patterns. Handles indentation, snake_case naming,
|
|
4
|
+
* and Python-specific imports.
|
|
5
|
+
*/
|
|
6
|
+
export class PythonGenerator {
|
|
7
|
+
registry;
|
|
8
|
+
languageId = "python";
|
|
9
|
+
constructor(registry) {
|
|
10
|
+
this.registry = registry;
|
|
11
|
+
}
|
|
12
|
+
generate(constructs) {
|
|
13
|
+
if (constructs.length === 0) {
|
|
14
|
+
return { code: "", mappedConstructs: [], unmappedConstructs: [] };
|
|
15
|
+
}
|
|
16
|
+
const lines = [];
|
|
17
|
+
const mapped = [];
|
|
18
|
+
const unmapped = [];
|
|
19
|
+
for (const construct of constructs) {
|
|
20
|
+
const mapping = this.registry.getPrimaryMapping(construct.constructId, this.languageId);
|
|
21
|
+
if (!mapping || !mapping.syntaxPattern) {
|
|
22
|
+
unmapped.push(construct.constructId);
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const code = substitutePattern(mapping.syntaxPattern, construct);
|
|
26
|
+
lines.push(code);
|
|
27
|
+
mapped.push(construct.constructId);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
code: lines.join("\n\n"),
|
|
31
|
+
mappedConstructs: mapped,
|
|
32
|
+
unmappedConstructs: unmapped,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** Convert camelCase to snake_case for Python naming conventions. */
|
|
37
|
+
function toSnakeCase(name) {
|
|
38
|
+
return name
|
|
39
|
+
.replace(/([a-z])([A-Z])/g, "$1_$2")
|
|
40
|
+
.replace(/([A-Z])([A-Z][a-z])/g, "$1_$2")
|
|
41
|
+
.toLowerCase();
|
|
42
|
+
}
|
|
43
|
+
/** Check if a name is PascalCase (class-like). */
|
|
44
|
+
function isPascalCase(name) {
|
|
45
|
+
return /^[A-Z][a-zA-Z0-9]*$/.test(name);
|
|
46
|
+
}
|
|
47
|
+
/** Substitute {{placeholders}} in a syntax pattern with construct data. */
|
|
48
|
+
function substitutePattern(pattern, construct) {
|
|
49
|
+
let result = pattern;
|
|
50
|
+
if (construct.name) {
|
|
51
|
+
// Keep PascalCase for classes, convert functions/variables to snake_case
|
|
52
|
+
const isClass = construct.constructId === "uc_class_def" || construct.constructId === "uc_abstract_class";
|
|
53
|
+
const name = isClass || isPascalCase(construct.name) && isClass
|
|
54
|
+
? construct.name
|
|
55
|
+
: toSnakeCase(construct.name);
|
|
56
|
+
result = result.replace(/\{\{name\}\}/g, name);
|
|
57
|
+
}
|
|
58
|
+
// Default placeholders for unresolved template vars
|
|
59
|
+
result = result.replace(/\{\{members\}\}/g, "pass # TODO: members");
|
|
60
|
+
result = result.replace(/\{\{params\}\}/g, "");
|
|
61
|
+
result = result.replace(/\{\{body\}\}/g, "pass # TODO: implement");
|
|
62
|
+
result = result.replace(/\{\{value\}\}/g, "None");
|
|
63
|
+
result = result.replace(/\{\{condition\}\}/g, "True # condition");
|
|
64
|
+
result = result.replace(/\{\{type\}\}/g, "Any");
|
|
65
|
+
result = result.replace(/\{\{module\}\}/g, "module");
|
|
66
|
+
result = result.replace(/\{\{items\}\}/g, "items");
|
|
67
|
+
result = result.replace(/\{\{item\}\}/g, "item");
|
|
68
|
+
result = result.replace(/\{\{expression\}\}/g, "None # expression");
|
|
69
|
+
result = result.replace(/\{\{error\}\}/g, "e");
|
|
70
|
+
result = result.replace(/\{\{message\}\}/g, "'Error'");
|
|
71
|
+
result = result.replace(/\{\{parent\}\}/g, "object");
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=python-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-generator.js","sourceRoot":"","sources":["../../../../src/core/translation/generators/python-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Generator — emits TypeScript code from canonical constructs
|
|
3
|
+
* using UCR syntax patterns with {{placeholder}} substitution.
|
|
4
|
+
*/
|
|
5
|
+
import { ConstructRegistry } from "../ucr/construct-registry.js";
|
|
6
|
+
import type { GeneratorAdapter, GeneratedCode } from "./generator-adapter.js";
|
|
7
|
+
import type { ParsedConstruct } from "../parsers/parser-adapter.js";
|
|
8
|
+
export declare class TsGenerator implements GeneratorAdapter {
|
|
9
|
+
private readonly registry;
|
|
10
|
+
readonly languageId = "typescript";
|
|
11
|
+
constructor(registry: ConstructRegistry);
|
|
12
|
+
generate(constructs: ParsedConstruct[]): GeneratedCode;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ts-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-generator.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/generators/ts-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,qBAAa,WAAY,YAAW,gBAAgB;IAGtC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,QAAQ,CAAC,UAAU,gBAAgB;gBAEN,QAAQ,EAAE,iBAAiB;IAExD,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,aAAa;CA4BvD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Generator — emits TypeScript code from canonical constructs
|
|
3
|
+
* using UCR syntax patterns with {{placeholder}} substitution.
|
|
4
|
+
*/
|
|
5
|
+
export class TsGenerator {
|
|
6
|
+
registry;
|
|
7
|
+
languageId = "typescript";
|
|
8
|
+
constructor(registry) {
|
|
9
|
+
this.registry = registry;
|
|
10
|
+
}
|
|
11
|
+
generate(constructs) {
|
|
12
|
+
if (constructs.length === 0) {
|
|
13
|
+
return { code: "", mappedConstructs: [], unmappedConstructs: [] };
|
|
14
|
+
}
|
|
15
|
+
const lines = [];
|
|
16
|
+
const mapped = [];
|
|
17
|
+
const unmapped = [];
|
|
18
|
+
for (const construct of constructs) {
|
|
19
|
+
const mapping = this.registry.getPrimaryMapping(construct.constructId, this.languageId);
|
|
20
|
+
if (!mapping || !mapping.syntaxPattern) {
|
|
21
|
+
unmapped.push(construct.constructId);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const code = substitutePattern(mapping.syntaxPattern, construct);
|
|
25
|
+
lines.push(code);
|
|
26
|
+
mapped.push(construct.constructId);
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
code: lines.join("\n\n"),
|
|
30
|
+
mappedConstructs: mapped,
|
|
31
|
+
unmappedConstructs: unmapped,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Substitute {{placeholders}} in a syntax pattern with construct data. */
|
|
36
|
+
function substitutePattern(pattern, construct) {
|
|
37
|
+
let result = pattern;
|
|
38
|
+
if (construct.name) {
|
|
39
|
+
result = result.replace(/\{\{name\}\}/g, construct.name);
|
|
40
|
+
}
|
|
41
|
+
// Default placeholders for unresolved template vars
|
|
42
|
+
result = result.replace(/\{\{members\}\}/g, "// TODO: members");
|
|
43
|
+
result = result.replace(/\{\{params\}\}/g, "");
|
|
44
|
+
result = result.replace(/\{\{body\}\}/g, "// TODO: implement");
|
|
45
|
+
result = result.replace(/\{\{value\}\}/g, "undefined");
|
|
46
|
+
result = result.replace(/\{\{condition\}\}/g, "/* condition */");
|
|
47
|
+
result = result.replace(/\{\{type\}\}/g, "unknown");
|
|
48
|
+
result = result.replace(/\{\{module\}\}/g, "'./module'");
|
|
49
|
+
result = result.replace(/\{\{items\}\}/g, "items");
|
|
50
|
+
result = result.replace(/\{\{item\}\}/g, "item");
|
|
51
|
+
result = result.replace(/\{\{expression\}\}/g, "/* expression */");
|
|
52
|
+
result = result.replace(/\{\{error\}\}/g, "e");
|
|
53
|
+
result = result.replace(/\{\{message\}\}/g, "'Error'");
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=ts-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-generator.js","sourceRoot":"","sources":["../../../../src/core/translation/generators/ts-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,OAAO,WAAW;IAGO;IAFpB,UAAU,GAAG,YAAY,CAAC;IAEnC,YAA6B,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IAAG,CAAC;IAE5D,QAAQ,CAAC,UAA6B;QACpC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAExF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACrC,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,gBAAgB,EAAE,MAAM;YACxB,kBAAkB,EAAE,QAAQ;SAC7B,CAAC;IACJ,CAAC;CACF;AAED,2EAA2E;AAC3E,SAAS,iBAAiB,CAAC,OAAe,EAAE,SAA0B;IACpE,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,oDAAoD;IACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAChE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAC/D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IACjE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;IACnE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language Detection from Code Snippets — heuristic keyword/pattern detection.
|
|
3
|
+
* Returns languageId, confidence (0-1), and indicators explaining the detection.
|
|
4
|
+
*/
|
|
5
|
+
export { detectProjectLanguages } from "../lsp/language-detector.js";
|
|
6
|
+
export interface LanguageDetectionResult {
|
|
7
|
+
languageId: string;
|
|
8
|
+
confidence: number;
|
|
9
|
+
indicators: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function detectLanguageFromCode(code: string): LanguageDetectionResult;
|
|
12
|
+
//# sourceMappingURL=language-detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-detect.d.ts","sourceRoot":"","sources":["../../../src/core/translation/language-detect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA6GD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CA4C5E"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language Detection from Code Snippets — heuristic keyword/pattern detection.
|
|
3
|
+
* Returns languageId, confidence (0-1), and indicators explaining the detection.
|
|
4
|
+
*/
|
|
5
|
+
export { detectProjectLanguages } from "../lsp/language-detector.js";
|
|
6
|
+
const PROFILES = [
|
|
7
|
+
{
|
|
8
|
+
id: "typescript",
|
|
9
|
+
unique: [
|
|
10
|
+
/\binterface\s+\w+\s*\{/, /\btype\s+\w+\s*=/, /\benum\s+\w+\s*\{/,
|
|
11
|
+
/:\s*(string|number|boolean|void)\b/, /\bas\s+(string|number|boolean)\b/,
|
|
12
|
+
],
|
|
13
|
+
strong: [
|
|
14
|
+
/\bconst\s+\w+\s*[:=]/, /\bimport\s*\{[^}]+\}\s*from\s*['"]/, /\bexport\s+(function|class|const|interface|type)\b/,
|
|
15
|
+
/=>\s*\{/, /\bPromise</, /\bconsole\.\w+\(/,
|
|
16
|
+
],
|
|
17
|
+
weak: [
|
|
18
|
+
/\bfunction\s+\w+/, /\bclass\s+\w+/, /\breturn\s+/, /\bnew\s+\w+/,
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "python",
|
|
23
|
+
unique: [
|
|
24
|
+
/^(\s*)def\s+\w+\s*\(/m, /^(\s*)class\s+\w+.*:\s*$/m,
|
|
25
|
+
/^from\s+\S+\s+import\s+/m, /^\s*elif\s+/m,
|
|
26
|
+
/\bprint\s*\(/, /\bTrue\b/, /\bFalse\b/, /\bNone\b/,
|
|
27
|
+
/^\s*@\w+/m, /\basync\s+def\b/,
|
|
28
|
+
],
|
|
29
|
+
strong: [
|
|
30
|
+
/^import\s+\w+\s*$/m, /\bself\.\w+/, /\bpass\b/,
|
|
31
|
+
/:\s*$\n\s+/m, /\bf["']/, /\braise\s+\w+/,
|
|
32
|
+
],
|
|
33
|
+
weak: [
|
|
34
|
+
/\bif\s+.*:\s*$/m, /\bfor\s+\w+\s+in\s+/m, /\bwhile\s+/m,
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "go",
|
|
39
|
+
unique: [
|
|
40
|
+
/^package\s+\w+/m, /\bfunc\s+\w*\s*\(/, /\b:=\s*/,
|
|
41
|
+
/\bgo\s+func\b/, /\bdefer\s+/, /\bchan\s+/,
|
|
42
|
+
/\bfmt\.\w+/, /\bgoroutine/,
|
|
43
|
+
],
|
|
44
|
+
strong: [
|
|
45
|
+
/\bvar\s+\w+\s+\w+/, /\bstruct\s*\{/, /\binterface\s*\{/,
|
|
46
|
+
/\berr\s*!=\s*nil/, /\brange\s+/,
|
|
47
|
+
],
|
|
48
|
+
weak: [
|
|
49
|
+
/\breturn\s+/, /\bif\s+.*\{/,
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "java",
|
|
54
|
+
unique: [
|
|
55
|
+
/\bpublic\s+(static\s+)?void\s+main\b/, /\bSystem\.out\.print/,
|
|
56
|
+
/\bpublic\s+class\s+\w+/, /\bprivate\s+(static\s+)?\w+\s+\w+/,
|
|
57
|
+
/\bnew\s+ArrayList</, /\bextends\s+\w+\s*\{/,
|
|
58
|
+
],
|
|
59
|
+
strong: [
|
|
60
|
+
/\b@Override\b/, /\b@Autowired\b/, /\bimport\s+java\./,
|
|
61
|
+
/\bList<\w+>/, /\bString\[\]\s+\w+/, /\bthrows\s+\w+/,
|
|
62
|
+
],
|
|
63
|
+
weak: [
|
|
64
|
+
/\bpublic\s+\w+/, /\bprivate\s+\w+/, /\bprotected\s+\w+/,
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "csharp",
|
|
69
|
+
unique: [
|
|
70
|
+
/\busing\s+System\b/, /\bnamespace\s+\w+/, /\bConsole\.Write/,
|
|
71
|
+
/\.Where\(/, /\.Select\(/, /\.ToList\(\)/,
|
|
72
|
+
/\bvar\s+\w+\s*=\s*.*\.Where/, /\basync\s+Task</,
|
|
73
|
+
],
|
|
74
|
+
strong: [
|
|
75
|
+
/\busing\s+\w+\.\w+;/, /\bstring\.\w+/, /\bint\s+\w+/,
|
|
76
|
+
/\bpublic\s+(override|virtual)\b/,
|
|
77
|
+
],
|
|
78
|
+
weak: [
|
|
79
|
+
/\bpublic\s+\w+/, /\bclass\s+\w+/,
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: "rust",
|
|
84
|
+
unique: [
|
|
85
|
+
/\bfn\s+\w+\s*\(/, /\blet\s+mut\s+/, /\bimpl\s+\w+/,
|
|
86
|
+
/\bprintln!\(/, /\b->\s*(Self|&)/, /\bstruct\s+\w+\s*\{/,
|
|
87
|
+
/\bmatch\s+\w+\s*\{/, /\bOption</, /\bResult</,
|
|
88
|
+
],
|
|
89
|
+
strong: [
|
|
90
|
+
/\buse\s+\w+::/, /\bpub\s+(fn|struct|enum)\b/, /\b&self\b/,
|
|
91
|
+
/\bunwrap\(\)/, /\b\.clone\(\)/,
|
|
92
|
+
],
|
|
93
|
+
weak: [
|
|
94
|
+
/\blet\s+\w+/, /\breturn\s+/,
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
const UNIQUE_WEIGHT = 3;
|
|
99
|
+
const STRONG_WEIGHT = 1.5;
|
|
100
|
+
const WEAK_WEIGHT = 0.5;
|
|
101
|
+
export function detectLanguageFromCode(code) {
|
|
102
|
+
if (!code.trim()) {
|
|
103
|
+
return { languageId: "unknown", confidence: 0, indicators: [] };
|
|
104
|
+
}
|
|
105
|
+
let bestLang = "unknown";
|
|
106
|
+
let bestScore = 0;
|
|
107
|
+
let bestIndicators = [];
|
|
108
|
+
for (const profile of PROFILES) {
|
|
109
|
+
let score = 0;
|
|
110
|
+
const indicators = [];
|
|
111
|
+
for (const pattern of profile.unique) {
|
|
112
|
+
if (pattern.test(code)) {
|
|
113
|
+
score += UNIQUE_WEIGHT;
|
|
114
|
+
indicators.push(`unique: ${pattern.source.substring(0, 40)}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
for (const pattern of profile.strong) {
|
|
118
|
+
if (pattern.test(code)) {
|
|
119
|
+
score += STRONG_WEIGHT;
|
|
120
|
+
indicators.push(`strong: ${pattern.source.substring(0, 40)}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
for (const pattern of profile.weak) {
|
|
124
|
+
if (pattern.test(code)) {
|
|
125
|
+
score += WEAK_WEIGHT;
|
|
126
|
+
indicators.push(`weak: ${pattern.source.substring(0, 40)}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (score > bestScore) {
|
|
130
|
+
bestScore = score;
|
|
131
|
+
bestLang = profile.id;
|
|
132
|
+
bestIndicators = indicators;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Normalize confidence: map score to 0-1 range
|
|
136
|
+
// A score of ~6+ is high confidence, ~3 is medium, <2 is low
|
|
137
|
+
const confidence = Math.min(bestScore / 8, 1);
|
|
138
|
+
return { languageId: bestLang, confidence, indicators: bestIndicators };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=language-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-detect.js","sourceRoot":"","sources":["../../../src/core/translation/language-detect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAkBrE,MAAM,QAAQ,GAAsB;IAClC;QACE,EAAE,EAAE,YAAY;QAChB,MAAM,EAAE;YACN,wBAAwB,EAAE,kBAAkB,EAAE,mBAAmB;YACjE,oCAAoC,EAAE,kCAAkC;SACzE;QACD,MAAM,EAAE;YACN,sBAAsB,EAAE,oCAAoC,EAAE,oDAAoD;YAClH,SAAS,EAAE,YAAY,EAAE,kBAAkB;SAC5C;QACD,IAAI,EAAE;YACJ,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa;SAClE;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE;YACN,uBAAuB,EAAE,2BAA2B;YACpD,0BAA0B,EAAE,cAAc;YAC1C,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU;YACnD,WAAW,EAAE,iBAAiB;SAC/B;QACD,MAAM,EAAE;YACN,oBAAoB,EAAE,aAAa,EAAE,UAAU;YAC/C,aAAa,EAAE,SAAS,EAAE,eAAe;SAC1C;QACD,IAAI,EAAE;YACJ,iBAAiB,EAAE,sBAAsB,EAAE,aAAa;SACzD;KACF;IACD;QACE,EAAE,EAAE,IAAI;QACR,MAAM,EAAE;YACN,iBAAiB,EAAE,mBAAmB,EAAE,SAAS;YACjD,eAAe,EAAE,YAAY,EAAE,WAAW;YAC1C,YAAY,EAAE,aAAa;SAC5B;QACD,MAAM,EAAE;YACN,mBAAmB,EAAE,eAAe,EAAE,kBAAkB;YACxD,kBAAkB,EAAE,YAAY;SACjC;QACD,IAAI,EAAE;YACJ,aAAa,EAAE,aAAa;SAC7B;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,MAAM,EAAE;YACN,sCAAsC,EAAE,sBAAsB;YAC9D,wBAAwB,EAAE,mCAAmC;YAC7D,oBAAoB,EAAE,sBAAsB;SAC7C;QACD,MAAM,EAAE;YACN,eAAe,EAAE,gBAAgB,EAAE,mBAAmB;YACtD,aAAa,EAAE,oBAAoB,EAAE,gBAAgB;SACtD;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB;SACzD;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE;YACN,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB;YAC7D,WAAW,EAAE,YAAY,EAAE,cAAc;YACzC,6BAA6B,EAAE,iBAAiB;SACjD;QACD,MAAM,EAAE;YACN,qBAAqB,EAAE,eAAe,EAAE,aAAa;YACrD,iCAAiC;SAClC;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,eAAe;SAClC;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,MAAM,EAAE;YACN,iBAAiB,EAAE,gBAAgB,EAAE,cAAc;YACnD,cAAc,EAAE,iBAAiB,EAAE,qBAAqB;YACxD,oBAAoB,EAAE,WAAW,EAAE,WAAW;SAC/C;QACD,MAAM,EAAE;YACN,eAAe,EAAE,4BAA4B,EAAE,WAAW;YAC1D,cAAc,EAAE,eAAe;SAChC;QACD,IAAI,EAAE;YACJ,aAAa,EAAE,aAAa;SAC7B;KACF;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,QAAQ,GAAG,SAAS,CAAC;IACzB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,cAAc,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,IAAI,aAAa,CAAC;gBACvB,UAAU,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,IAAI,aAAa,CAAC;gBACvB,UAAU,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,IAAI,WAAW,CAAC;gBACrB,UAAU,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YACtB,SAAS,GAAG,KAAK,CAAC;YAClB,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;YACtB,cAAc,GAAG,UAAU,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,6DAA6D;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Adapter interface — language-agnostic contract for parsing code into
|
|
3
|
+
* canonical constructs from the UCR (Universal Construct Registry).
|
|
4
|
+
*/
|
|
5
|
+
/** A construct detected in source code, mapped to a UCR canonical ID. */
|
|
6
|
+
export interface ParsedConstruct {
|
|
7
|
+
/** UCR canonical construct ID (e.g., "uc_fn_def", "uc_class_def") */
|
|
8
|
+
constructId: string;
|
|
9
|
+
/** Name of the construct if applicable (function name, class name, etc.) */
|
|
10
|
+
name?: string;
|
|
11
|
+
/** 1-based start line in source */
|
|
12
|
+
startLine: number;
|
|
13
|
+
/** 1-based end line in source */
|
|
14
|
+
endLine: number;
|
|
15
|
+
}
|
|
16
|
+
/** Adapter interface for language-specific parsers. */
|
|
17
|
+
export interface ParserAdapter {
|
|
18
|
+
/** Language identifier (matches UCR language_id, e.g., "typescript", "python") */
|
|
19
|
+
readonly languageId: string;
|
|
20
|
+
/** Parse a code snippet and return detected canonical constructs. */
|
|
21
|
+
parseSnippet(code: string): ParsedConstruct[];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=parser-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/parser-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,qEAAqE;IACrE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/parser-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python Parser Adapter — heuristic regex + line-based parser for Python code.
|
|
3
|
+
* Maps detected constructs to UCR canonical IDs without requiring a Python AST library.
|
|
4
|
+
*/
|
|
5
|
+
import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
|
|
6
|
+
export declare class PythonParserAdapter implements ParserAdapter {
|
|
7
|
+
readonly languageId = "python";
|
|
8
|
+
parseSnippet(code: string): ParsedConstruct[];
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=python-parser-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/python-parser-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA+C1E,qBAAa,mBAAoB,YAAW,aAAa;IACvD,QAAQ,CAAC,UAAU,YAAY;IAE/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CA8C9C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python Parser Adapter — heuristic regex + line-based parser for Python code.
|
|
3
|
+
* Maps detected constructs to UCR canonical IDs without requiring a Python AST library.
|
|
4
|
+
*/
|
|
5
|
+
const LINE_RULES = [
|
|
6
|
+
// async def must come before def
|
|
7
|
+
{ pattern: /^(\s*)async\s+def\s+(\w+)/, constructId: "uc_async_fn", nameGroup: 2 },
|
|
8
|
+
{ pattern: /^(\s*)def\s+(\w+)/, constructId: "uc_fn_def", nameGroup: 2 },
|
|
9
|
+
// class with inheritance
|
|
10
|
+
{
|
|
11
|
+
pattern: /^(\s*)class\s+(\w+)\s*\([^)]+\)\s*:/,
|
|
12
|
+
constructId: "uc_class_def",
|
|
13
|
+
nameGroup: 2,
|
|
14
|
+
also: [{ constructId: "uc_extends" }],
|
|
15
|
+
},
|
|
16
|
+
// class without inheritance
|
|
17
|
+
{ pattern: /^(\s*)class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 2 },
|
|
18
|
+
// from x import y (named import)
|
|
19
|
+
{ pattern: /^from\s+\S+\s+import\s+/, constructId: "uc_import_named" },
|
|
20
|
+
// import x (default/module import)
|
|
21
|
+
{ pattern: /^import\s+\w+/, constructId: "uc_import_default" },
|
|
22
|
+
// if/elif/else
|
|
23
|
+
{ pattern: /^(\s*)(if|elif)\s+.+:/, constructId: "uc_if_else" },
|
|
24
|
+
// for loop (Python for is always for-each style)
|
|
25
|
+
{ pattern: /^(\s*)for\s+\w+\s+in\s+/, constructId: "uc_for_each" },
|
|
26
|
+
// while loop
|
|
27
|
+
{ pattern: /^(\s*)while\s+/, constructId: "uc_while" },
|
|
28
|
+
// try/except
|
|
29
|
+
{ pattern: /^(\s*)try\s*:/, constructId: "uc_try_catch" },
|
|
30
|
+
// raise (throw)
|
|
31
|
+
{ pattern: /^(\s*)raise\s+/, constructId: "uc_throw" },
|
|
32
|
+
// return
|
|
33
|
+
{ pattern: /^(\s*)return\b/, constructId: "uc_return" },
|
|
34
|
+
// await expression
|
|
35
|
+
{ pattern: /\bawait\s+/, constructId: "uc_await" },
|
|
36
|
+
// continue
|
|
37
|
+
{ pattern: /^(\s*)continue\s*$/, constructId: "uc_continue" },
|
|
38
|
+
// break
|
|
39
|
+
{ pattern: /^(\s*)break\s*$/, constructId: "uc_break" },
|
|
40
|
+
];
|
|
41
|
+
export class PythonParserAdapter {
|
|
42
|
+
languageId = "python";
|
|
43
|
+
parseSnippet(code) {
|
|
44
|
+
if (!code.trim())
|
|
45
|
+
return [];
|
|
46
|
+
const lines = code.split("\n");
|
|
47
|
+
const constructs = [];
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
for (let i = 0; i < lines.length; i++) {
|
|
50
|
+
const line = lines[i];
|
|
51
|
+
const lineNum = i + 1;
|
|
52
|
+
for (const rule of LINE_RULES) {
|
|
53
|
+
const match = rule.pattern.exec(line);
|
|
54
|
+
if (!match)
|
|
55
|
+
continue;
|
|
56
|
+
// Deduplicate if/else — only emit once per if block
|
|
57
|
+
if (rule.constructId === "uc_if_else") {
|
|
58
|
+
const key = `${rule.constructId}:${lineNum}`;
|
|
59
|
+
if (seen.has(key))
|
|
60
|
+
continue;
|
|
61
|
+
seen.add(key);
|
|
62
|
+
}
|
|
63
|
+
const name = rule.nameGroup ? match[rule.nameGroup] : undefined;
|
|
64
|
+
constructs.push({
|
|
65
|
+
constructId: rule.constructId,
|
|
66
|
+
name,
|
|
67
|
+
startLine: lineNum,
|
|
68
|
+
endLine: lineNum,
|
|
69
|
+
});
|
|
70
|
+
if (rule.also) {
|
|
71
|
+
for (const extra of rule.also) {
|
|
72
|
+
constructs.push({
|
|
73
|
+
constructId: extra.constructId,
|
|
74
|
+
startLine: lineNum,
|
|
75
|
+
endLine: lineNum,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
break; // Only first matching rule per line
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return constructs;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=python-parser-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/python-parser-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Parser Adapter — parses TS/JS code into UCR canonical constructs
|
|
3
|
+
* using the TypeScript compiler API (ts.createSourceFile + AST walk).
|
|
4
|
+
*/
|
|
5
|
+
import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
|
|
6
|
+
export declare class TsParserAdapter implements ParserAdapter {
|
|
7
|
+
readonly languageId = "typescript";
|
|
8
|
+
parseSnippet(code: string): ParsedConstruct[];
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ts-parser-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/ts-parser-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1E,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,UAAU,gBAAgB;IAEnC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAe9C"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Parser Adapter — parses TS/JS code into UCR canonical constructs
|
|
3
|
+
* using the TypeScript compiler API (ts.createSourceFile + AST walk).
|
|
4
|
+
*/
|
|
5
|
+
import ts from "typescript";
|
|
6
|
+
export class TsParserAdapter {
|
|
7
|
+
languageId = "typescript";
|
|
8
|
+
parseSnippet(code) {
|
|
9
|
+
if (!code.trim())
|
|
10
|
+
return [];
|
|
11
|
+
const sourceFile = ts.createSourceFile("snippet.ts", code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
|
|
12
|
+
const constructs = [];
|
|
13
|
+
const visit = (node) => {
|
|
14
|
+
const mapped = mapNode(node, sourceFile);
|
|
15
|
+
if (mapped)
|
|
16
|
+
constructs.push(...mapped);
|
|
17
|
+
ts.forEachChild(node, visit);
|
|
18
|
+
};
|
|
19
|
+
ts.forEachChild(sourceFile, visit);
|
|
20
|
+
return constructs;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function getLines(node, sf) {
|
|
24
|
+
const start = sf.getLineAndCharacterOfPosition(node.getStart(sf));
|
|
25
|
+
const end = sf.getLineAndCharacterOfPosition(node.getEnd());
|
|
26
|
+
return { startLine: start.line + 1, endLine: end.line + 1 };
|
|
27
|
+
}
|
|
28
|
+
function mapNode(node, sf) {
|
|
29
|
+
const lines = getLines(node, sf);
|
|
30
|
+
// Function declaration
|
|
31
|
+
if (ts.isFunctionDeclaration(node) && node.name) {
|
|
32
|
+
const results = [{ constructId: "uc_fn_def", name: node.name.text, ...lines }];
|
|
33
|
+
if (hasAsyncModifier(node)) {
|
|
34
|
+
results.push({ constructId: "uc_async_fn", name: node.name.text, ...lines });
|
|
35
|
+
}
|
|
36
|
+
return results;
|
|
37
|
+
}
|
|
38
|
+
// Arrow function (const x = (...) => ...)
|
|
39
|
+
if (ts.isVariableDeclaration(node) && node.initializer && ts.isArrowFunction(node.initializer)) {
|
|
40
|
+
const name = ts.isIdentifier(node.name) ? node.name.text : undefined;
|
|
41
|
+
return [{ constructId: "uc_arrow_fn", name, ...lines }];
|
|
42
|
+
}
|
|
43
|
+
// Class declaration
|
|
44
|
+
if (ts.isClassDeclaration(node) && node.name) {
|
|
45
|
+
const results = [{ constructId: "uc_class_def", name: node.name.text, ...lines }];
|
|
46
|
+
if (node.heritageClauses) {
|
|
47
|
+
for (const clause of node.heritageClauses) {
|
|
48
|
+
if (clause.token === ts.SyntaxKind.ExtendsKeyword) {
|
|
49
|
+
results.push({ constructId: "uc_extends", ...lines });
|
|
50
|
+
}
|
|
51
|
+
if (clause.token === ts.SyntaxKind.ImplementsKeyword) {
|
|
52
|
+
results.push({ constructId: "uc_implements", ...lines });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return results;
|
|
57
|
+
}
|
|
58
|
+
// Interface declaration
|
|
59
|
+
if (ts.isInterfaceDeclaration(node)) {
|
|
60
|
+
return [{ constructId: "uc_interface", name: node.name.text, ...lines }];
|
|
61
|
+
}
|
|
62
|
+
// Type alias
|
|
63
|
+
if (ts.isTypeAliasDeclaration(node)) {
|
|
64
|
+
return [{ constructId: "uc_type_alias", name: node.name.text, ...lines }];
|
|
65
|
+
}
|
|
66
|
+
// Enum declaration
|
|
67
|
+
if (ts.isEnumDeclaration(node)) {
|
|
68
|
+
return [{ constructId: "uc_type_enum", name: node.name.text, ...lines }];
|
|
69
|
+
}
|
|
70
|
+
// Import declaration
|
|
71
|
+
if (ts.isImportDeclaration(node) && node.importClause) {
|
|
72
|
+
const results = [];
|
|
73
|
+
const clause = node.importClause;
|
|
74
|
+
if (clause.name) {
|
|
75
|
+
results.push({ constructId: "uc_import_default", ...lines });
|
|
76
|
+
}
|
|
77
|
+
if (clause.namedBindings) {
|
|
78
|
+
if (ts.isNamedImports(clause.namedBindings)) {
|
|
79
|
+
results.push({ constructId: "uc_import_named", ...lines });
|
|
80
|
+
}
|
|
81
|
+
if (ts.isNamespaceImport(clause.namedBindings)) {
|
|
82
|
+
results.push({ constructId: "uc_import_namespace", ...lines });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return results.length > 0 ? results : null;
|
|
86
|
+
}
|
|
87
|
+
// If statement
|
|
88
|
+
if (ts.isIfStatement(node)) {
|
|
89
|
+
return [{ constructId: "uc_if_else", ...lines }];
|
|
90
|
+
}
|
|
91
|
+
// For statement
|
|
92
|
+
if (ts.isForStatement(node)) {
|
|
93
|
+
return [{ constructId: "uc_for_loop", ...lines }];
|
|
94
|
+
}
|
|
95
|
+
// ForOf / ForIn
|
|
96
|
+
if (ts.isForOfStatement(node) || ts.isForInStatement(node)) {
|
|
97
|
+
return [{ constructId: "uc_for_each", ...lines }];
|
|
98
|
+
}
|
|
99
|
+
// While
|
|
100
|
+
if (ts.isWhileStatement(node)) {
|
|
101
|
+
return [{ constructId: "uc_while", ...lines }];
|
|
102
|
+
}
|
|
103
|
+
// Do/While
|
|
104
|
+
if (ts.isDoStatement(node)) {
|
|
105
|
+
return [{ constructId: "uc_do_while", ...lines }];
|
|
106
|
+
}
|
|
107
|
+
// Try/Catch
|
|
108
|
+
if (ts.isTryStatement(node)) {
|
|
109
|
+
const results = [{ constructId: "uc_try_catch", ...lines }];
|
|
110
|
+
if (node.finallyBlock) {
|
|
111
|
+
results.push({ constructId: "uc_try_finally", ...lines });
|
|
112
|
+
}
|
|
113
|
+
return results;
|
|
114
|
+
}
|
|
115
|
+
// Switch
|
|
116
|
+
if (ts.isSwitchStatement(node)) {
|
|
117
|
+
return [{ constructId: "uc_switch", ...lines }];
|
|
118
|
+
}
|
|
119
|
+
// Throw
|
|
120
|
+
if (ts.isThrowStatement(node)) {
|
|
121
|
+
return [{ constructId: "uc_throw", ...lines }];
|
|
122
|
+
}
|
|
123
|
+
// Return
|
|
124
|
+
if (ts.isReturnStatement(node)) {
|
|
125
|
+
return [{ constructId: "uc_return", ...lines }];
|
|
126
|
+
}
|
|
127
|
+
// Await expression
|
|
128
|
+
if (ts.isAwaitExpression(node)) {
|
|
129
|
+
return [{ constructId: "uc_await", ...lines }];
|
|
130
|
+
}
|
|
131
|
+
// Export (named)
|
|
132
|
+
if (ts.isExportDeclaration(node)) {
|
|
133
|
+
return [{ constructId: "uc_export_named", ...lines }];
|
|
134
|
+
}
|
|
135
|
+
// Export default
|
|
136
|
+
if (ts.isExportAssignment(node)) {
|
|
137
|
+
return [{ constructId: "uc_export_default", ...lines }];
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
function hasAsyncModifier(node) {
|
|
142
|
+
const modifiers = ts.getModifiers(node);
|
|
143
|
+
return modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ?? false;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=ts-parser-adapter.js.map
|