@tsonic/frontend 0.0.1 → 0.0.4
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/.tsbuildinfo +1 -0
- package/{src/dependency-graph.ts → dist/dependency-graph.d.ts} +3 -11
- package/dist/dependency-graph.d.ts.map +1 -0
- package/dist/dependency-graph.js +9 -0
- package/dist/dependency-graph.js.map +1 -0
- package/dist/dotnet-metadata.d.ts +71 -0
- package/dist/dotnet-metadata.d.ts.map +1 -0
- package/dist/dotnet-metadata.js +78 -0
- package/dist/dotnet-metadata.js.map +1 -0
- package/dist/graph/builder.d.ts +10 -0
- package/dist/graph/builder.d.ts.map +1 -0
- package/dist/graph/builder.js +54 -0
- package/dist/graph/builder.js.map +1 -0
- package/dist/graph/circular.d.ts +10 -0
- package/dist/graph/circular.d.ts.map +1 -0
- package/dist/graph/circular.js +40 -0
- package/dist/graph/circular.js.map +1 -0
- package/dist/graph/extraction/exports.d.ts +10 -0
- package/dist/graph/extraction/exports.d.ts.map +1 -0
- package/dist/graph/extraction/exports.js +46 -0
- package/dist/graph/extraction/exports.js.map +1 -0
- package/dist/graph/extraction/imports.d.ts +11 -0
- package/dist/graph/extraction/imports.d.ts.map +1 -0
- package/dist/graph/extraction/imports.js +63 -0
- package/dist/graph/extraction/imports.js.map +1 -0
- package/dist/graph/extraction/index.d.ts +7 -0
- package/dist/graph/extraction/index.d.ts.map +1 -0
- package/{src/graph/extraction/index.ts → dist/graph/extraction/index.js} +1 -1
- package/dist/graph/extraction/index.js.map +1 -0
- package/dist/graph/extraction/orchestrator.d.ts +11 -0
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -0
- package/dist/graph/extraction/orchestrator.js +78 -0
- package/dist/graph/extraction/orchestrator.js.map +1 -0
- package/dist/graph/extraction.d.ts +6 -0
- package/dist/graph/extraction.d.ts.map +1 -0
- package/{src/graph/extraction.ts → dist/graph/extraction.js} +2 -6
- package/dist/graph/extraction.js.map +1 -0
- package/dist/graph/helpers.d.ts +17 -0
- package/dist/graph/helpers.d.ts.map +1 -0
- package/dist/graph/helpers.js +40 -0
- package/dist/graph/helpers.js.map +1 -0
- package/{src/graph/index.ts → dist/graph/index.d.ts} +3 -11
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +8 -0
- package/dist/graph/index.js.map +1 -0
- package/{src/graph/types.ts → dist/graph/types.d.ts} +4 -5
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +5 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/ir/binding-resolution.test.d.ts +5 -0
- package/dist/ir/binding-resolution.test.d.ts.map +1 -0
- package/dist/ir/binding-resolution.test.js +518 -0
- package/dist/ir/binding-resolution.test.js.map +1 -0
- package/dist/ir/builder/exports.d.ts +10 -0
- package/dist/ir/builder/exports.d.ts.map +1 -0
- package/dist/ir/builder/exports.js +75 -0
- package/dist/ir/builder/exports.js.map +1 -0
- package/dist/ir/builder/helpers.d.ts +13 -0
- package/dist/ir/builder/helpers.d.ts.map +1 -0
- package/dist/ir/builder/helpers.js +23 -0
- package/dist/ir/builder/helpers.js.map +1 -0
- package/dist/ir/builder/imports.d.ts +18 -0
- package/dist/ir/builder/imports.d.ts.map +1 -0
- package/dist/ir/builder/imports.js +123 -0
- package/dist/ir/builder/imports.js.map +1 -0
- package/{src/ir/builder/index.ts → dist/ir/builder/index.d.ts} +1 -1
- package/dist/ir/builder/index.d.ts.map +1 -0
- package/dist/ir/builder/index.js +9 -0
- package/dist/ir/builder/index.js.map +1 -0
- package/dist/ir/builder/orchestrator.d.ts +18 -0
- package/dist/ir/builder/orchestrator.d.ts.map +1 -0
- package/dist/ir/builder/orchestrator.js +121 -0
- package/dist/ir/builder/orchestrator.js.map +1 -0
- package/dist/ir/builder/statements.d.ts +14 -0
- package/dist/ir/builder/statements.d.ts.map +1 -0
- package/dist/ir/builder/statements.js +43 -0
- package/dist/ir/builder/statements.js.map +1 -0
- package/dist/ir/builder/types.d.ts +8 -0
- package/dist/ir/builder/types.d.ts.map +1 -0
- package/dist/ir/builder/types.js +5 -0
- package/dist/ir/builder/types.js.map +1 -0
- package/dist/ir/builder/validation.d.ts +10 -0
- package/dist/ir/builder/validation.d.ts.map +1 -0
- package/dist/ir/builder/validation.js +86 -0
- package/dist/ir/builder/validation.js.map +1 -0
- package/{src/ir/builder.ts → dist/ir/builder.d.ts} +2 -5
- package/dist/ir/builder.d.ts.map +1 -0
- package/dist/ir/builder.js +10 -0
- package/dist/ir/builder.js.map +1 -0
- package/dist/ir/builder.test.d.ts +5 -0
- package/dist/ir/builder.test.d.ts.map +1 -0
- package/dist/ir/builder.test.js +498 -0
- package/dist/ir/builder.test.js.map +1 -0
- package/dist/ir/converters/expressions/access.d.ts +10 -0
- package/dist/ir/converters/expressions/access.d.ts.map +1 -0
- package/dist/ir/converters/expressions/access.js +132 -0
- package/dist/ir/converters/expressions/access.js.map +1 -0
- package/dist/ir/converters/expressions/calls.d.ts +14 -0
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -0
- package/dist/ir/converters/expressions/calls.js +104 -0
- package/dist/ir/converters/expressions/calls.js.map +1 -0
- package/dist/ir/converters/expressions/collections.d.ts +14 -0
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -0
- package/dist/ir/converters/expressions/collections.js +70 -0
- package/dist/ir/converters/expressions/collections.js.map +1 -0
- package/dist/ir/converters/expressions/functions.d.ts +14 -0
- package/dist/ir/converters/expressions/functions.d.ts.map +1 -0
- package/dist/ir/converters/expressions/functions.js +42 -0
- package/dist/ir/converters/expressions/functions.js.map +1 -0
- package/dist/ir/converters/expressions/helpers.d.ts +43 -0
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -0
- package/dist/ir/converters/expressions/helpers.js +217 -0
- package/dist/ir/converters/expressions/helpers.js.map +1 -0
- package/dist/ir/converters/expressions/index.d.ts +12 -0
- package/dist/ir/converters/expressions/index.d.ts.map +1 -0
- package/dist/ir/converters/expressions/index.js +20 -0
- package/dist/ir/converters/expressions/index.js.map +1 -0
- package/dist/ir/converters/expressions/literals.d.ts +10 -0
- package/dist/ir/converters/expressions/literals.d.ts.map +1 -0
- package/dist/ir/converters/expressions/literals.js +17 -0
- package/dist/ir/converters/expressions/literals.js.map +1 -0
- package/dist/ir/converters/expressions/operators.d.ts +18 -0
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -0
- package/dist/ir/converters/expressions/operators.js +111 -0
- package/dist/ir/converters/expressions/operators.js.map +1 -0
- package/dist/ir/converters/expressions/other.d.ts +14 -0
- package/dist/ir/converters/expressions/other.d.ts.map +1 -0
- package/dist/ir/converters/expressions/other.js +44 -0
- package/dist/ir/converters/expressions/other.js.map +1 -0
- package/dist/ir/converters/statements/control/blocks.d.ts +10 -0
- package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/blocks.js +16 -0
- package/dist/ir/converters/statements/control/blocks.js.map +1 -0
- package/dist/ir/converters/statements/control/conditionals.d.ts +18 -0
- package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/conditionals.js +46 -0
- package/dist/ir/converters/statements/control/conditionals.js.map +1 -0
- package/dist/ir/converters/statements/control/exceptions.d.ts +14 -0
- package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/exceptions.js +33 -0
- package/dist/ir/converters/statements/control/exceptions.js.map +1 -0
- package/dist/ir/converters/statements/control/index.d.ts +8 -0
- package/dist/ir/converters/statements/control/index.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/index.js +8 -0
- package/dist/ir/converters/statements/control/index.js.map +1 -0
- package/dist/ir/converters/statements/control/loops.d.ts +22 -0
- package/dist/ir/converters/statements/control/loops.d.ts.map +1 -0
- package/dist/ir/converters/statements/control/loops.js +75 -0
- package/dist/ir/converters/statements/control/loops.js.map +1 -0
- package/dist/ir/converters/statements/control.d.ts +6 -0
- package/dist/ir/converters/statements/control.d.ts.map +1 -0
- package/dist/ir/converters/statements/control.js +6 -0
- package/dist/ir/converters/statements/control.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +14 -0
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/constructors.js +91 -0
- package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -0
- package/{src/ir/converters/statements/declarations/classes/index.ts → dist/ir/converters/statements/declarations/classes/index.d.ts} +2 -5
- package/dist/ir/converters/statements/declarations/classes/index.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/index.js +9 -0
- package/dist/ir/converters/statements/declarations/classes/index.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/methods.js +39 -0
- package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js +123 -0
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +13 -0
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/override-detection.js +79 -0
- package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/classes/properties.js +42 -0
- package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -0
- package/dist/ir/converters/statements/declarations/classes.d.ts +6 -0
- package/dist/ir/converters/statements/declarations/classes.d.ts.map +1 -0
- package/{src/ir/converters/statements/declarations/classes.ts → dist/ir/converters/statements/declarations/classes.js} +1 -1
- package/dist/ir/converters/statements/declarations/classes.js.map +1 -0
- package/dist/ir/converters/statements/declarations/enums.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/enums.js +24 -0
- package/dist/ir/converters/statements/declarations/enums.js.map +1 -0
- package/dist/ir/converters/statements/declarations/functions.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/functions.js +28 -0
- package/dist/ir/converters/statements/declarations/functions.js.map +1 -0
- package/dist/ir/converters/statements/declarations/index.d.ts +11 -0
- package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -0
- package/{src/ir/converters/statements/declarations/index.ts → dist/ir/converters/statements/declarations/index.js} +2 -5
- package/dist/ir/converters/statements/declarations/index.js.map +1 -0
- package/dist/ir/converters/statements/declarations/interfaces.d.ts +15 -0
- package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/interfaces.js +96 -0
- package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -0
- package/dist/ir/converters/statements/declarations/registry.d.ts +24 -0
- package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -0
- package/{src/ir/converters/statements/declarations/registry.ts → dist/ir/converters/statements/declarations/registry.js} +9 -16
- package/dist/ir/converters/statements/declarations/registry.js.map +1 -0
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/type-aliases.js +19 -0
- package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -0
- package/dist/ir/converters/statements/declarations/variables.d.ts +10 -0
- package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations/variables.js +45 -0
- package/dist/ir/converters/statements/declarations/variables.js.map +1 -0
- package/dist/ir/converters/statements/declarations.d.ts +6 -0
- package/dist/ir/converters/statements/declarations.d.ts.map +1 -0
- package/dist/ir/converters/statements/declarations.js +6 -0
- package/dist/ir/converters/statements/declarations.js.map +1 -0
- package/dist/ir/converters/statements/helpers.d.ts +34 -0
- package/dist/ir/converters/statements/helpers.d.ts.map +1 -0
- package/dist/ir/converters/statements/helpers.js +137 -0
- package/dist/ir/converters/statements/helpers.js.map +1 -0
- package/dist/ir/converters/statements/index.d.ts +7 -0
- package/dist/ir/converters/statements/index.d.ts.map +1 -0
- package/dist/ir/converters/statements/index.js +10 -0
- package/dist/ir/converters/statements/index.js.map +1 -0
- package/dist/ir/expression-converter.d.ts +13 -0
- package/dist/ir/expression-converter.d.ts.map +1 -0
- package/dist/ir/expression-converter.js +167 -0
- package/dist/ir/expression-converter.js.map +1 -0
- package/dist/ir/generic-validator.d.ts +38 -0
- package/dist/ir/generic-validator.d.ts.map +1 -0
- package/dist/ir/generic-validator.js +69 -0
- package/dist/ir/generic-validator.js.map +1 -0
- package/dist/ir/hierarchical-bindings-e2e.test.d.ts +6 -0
- package/dist/ir/hierarchical-bindings-e2e.test.d.ts.map +1 -0
- package/dist/ir/hierarchical-bindings-e2e.test.js +129 -0
- package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -0
- package/{src/ir/index.ts → dist/ir/index.d.ts} +1 -1
- package/dist/ir/index.d.ts.map +1 -0
- package/dist/ir/index.js +6 -0
- package/dist/ir/index.js.map +1 -0
- package/dist/ir/statement-converter.d.ts +14 -0
- package/dist/ir/statement-converter.d.ts.map +1 -0
- package/dist/ir/statement-converter.js +100 -0
- package/dist/ir/statement-converter.js.map +1 -0
- package/dist/ir/type-converter/arrays.d.ts +10 -0
- package/dist/ir/type-converter/arrays.d.ts.map +1 -0
- package/dist/ir/type-converter/arrays.js +13 -0
- package/dist/ir/type-converter/arrays.js.map +1 -0
- package/dist/ir/type-converter/converter.d.ts +6 -0
- package/dist/ir/type-converter/converter.d.ts.map +1 -0
- package/dist/ir/type-converter/converter.js +6 -0
- package/dist/ir/type-converter/converter.js.map +1 -0
- package/dist/ir/type-converter/functions.d.ts +10 -0
- package/dist/ir/type-converter/functions.d.ts.map +1 -0
- package/dist/ir/type-converter/functions.js +15 -0
- package/dist/ir/type-converter/functions.js.map +1 -0
- package/dist/ir/type-converter/index.d.ts +7 -0
- package/dist/ir/type-converter/index.d.ts.map +1 -0
- package/{src/ir/type-converter/index.ts → dist/ir/type-converter/index.js} +2 -6
- package/dist/ir/type-converter/index.js.map +1 -0
- package/dist/ir/type-converter/inference.d.ts +20 -0
- package/dist/ir/type-converter/inference.d.ts.map +1 -0
- package/dist/ir/type-converter/inference.js +105 -0
- package/dist/ir/type-converter/inference.js.map +1 -0
- package/dist/ir/type-converter/literals.d.ts +10 -0
- package/dist/ir/type-converter/literals.d.ts.map +1 -0
- package/dist/ir/type-converter/literals.js +31 -0
- package/dist/ir/type-converter/literals.js.map +1 -0
- package/dist/ir/type-converter/objects.d.ts +16 -0
- package/dist/ir/type-converter/objects.d.ts.map +1 -0
- package/dist/ir/type-converter/objects.js +82 -0
- package/dist/ir/type-converter/objects.js.map +1 -0
- package/dist/ir/type-converter/orchestrator.d.ts +13 -0
- package/dist/ir/type-converter/orchestrator.d.ts.map +1 -0
- package/dist/ir/type-converter/orchestrator.js +59 -0
- package/dist/ir/type-converter/orchestrator.js.map +1 -0
- package/dist/ir/type-converter/patterns.d.ts +10 -0
- package/dist/ir/type-converter/patterns.d.ts.map +1 -0
- package/dist/ir/type-converter/patterns.js +66 -0
- package/dist/ir/type-converter/patterns.js.map +1 -0
- package/dist/ir/type-converter/primitives.d.ts +18 -0
- package/dist/ir/type-converter/primitives.d.ts.map +1 -0
- package/dist/ir/type-converter/primitives.js +47 -0
- package/dist/ir/type-converter/primitives.js.map +1 -0
- package/dist/ir/type-converter/references.d.ts +11 -0
- package/dist/ir/type-converter/references.d.ts.map +1 -0
- package/dist/ir/type-converter/references.js +62 -0
- package/dist/ir/type-converter/references.js.map +1 -0
- package/dist/ir/type-converter/unions-intersections.d.ts +14 -0
- package/dist/ir/type-converter/unions-intersections.d.ts.map +1 -0
- package/dist/ir/type-converter/unions-intersections.js +22 -0
- package/dist/ir/type-converter/unions-intersections.js.map +1 -0
- package/dist/ir/type-converter.d.ts +6 -0
- package/dist/ir/type-converter.d.ts.map +1 -0
- package/dist/ir/type-converter.js +6 -0
- package/dist/ir/type-converter.js.map +1 -0
- package/dist/ir/types/expressions.d.ts +164 -0
- package/dist/ir/types/expressions.d.ts.map +1 -0
- package/dist/ir/types/expressions.js +5 -0
- package/dist/ir/types/expressions.js.map +1 -0
- package/dist/ir/types/guards.d.ts +8 -0
- package/dist/ir/types/guards.d.ts.map +1 -0
- package/dist/ir/types/guards.js +31 -0
- package/dist/ir/types/guards.js.map +1 -0
- package/dist/ir/types/helpers.d.ts +65 -0
- package/dist/ir/types/helpers.d.ts.map +1 -0
- package/dist/ir/types/helpers.js +5 -0
- package/dist/ir/types/helpers.js.map +1 -0
- package/dist/ir/types/index.d.ts +11 -0
- package/dist/ir/types/index.d.ts.map +1 -0
- package/dist/ir/types/index.js +7 -0
- package/dist/ir/types/index.js.map +1 -0
- package/dist/ir/types/ir-types.d.ts +79 -0
- package/dist/ir/types/ir-types.d.ts.map +1 -0
- package/dist/ir/types/ir-types.js +5 -0
- package/dist/ir/types/ir-types.js.map +1 -0
- package/dist/ir/types/module.d.ts +56 -0
- package/dist/ir/types/module.d.ts.map +1 -0
- package/dist/ir/types/module.js +5 -0
- package/dist/ir/types/module.js.map +1 -0
- package/dist/ir/types/statements.d.ts +182 -0
- package/dist/ir/types/statements.d.ts.map +1 -0
- package/dist/ir/types/statements.js +5 -0
- package/dist/ir/types/statements.js.map +1 -0
- package/dist/ir/types.d.ts +7 -0
- package/dist/ir/types.d.ts.map +1 -0
- package/dist/ir/types.js +7 -0
- package/dist/ir/types.js.map +1 -0
- package/dist/metadata/bindings-loader.d.ts +41 -0
- package/dist/metadata/bindings-loader.d.ts.map +1 -0
- package/dist/metadata/bindings-loader.js +308 -0
- package/dist/metadata/bindings-loader.js.map +1 -0
- package/dist/metadata/bindings-loader.test.d.ts +5 -0
- package/dist/metadata/bindings-loader.test.d.ts.map +1 -0
- package/dist/metadata/bindings-loader.test.js +117 -0
- package/dist/metadata/bindings-loader.test.js.map +1 -0
- package/{src/metadata/index.ts → dist/metadata/index.d.ts} +2 -9
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +7 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/library-loader.d.ts +42 -0
- package/dist/metadata/library-loader.d.ts.map +1 -0
- package/dist/metadata/library-loader.js +126 -0
- package/dist/metadata/library-loader.js.map +1 -0
- package/dist/metadata/loader.d.ts +26 -0
- package/dist/metadata/loader.d.ts.map +1 -0
- package/dist/metadata/loader.js +333 -0
- package/dist/metadata/loader.js.map +1 -0
- package/dist/metadata/loader.test.d.ts +5 -0
- package/dist/metadata/loader.test.d.ts.map +1 -0
- package/dist/metadata/loader.test.js +119 -0
- package/dist/metadata/loader.test.js.map +1 -0
- package/dist/program/bindings.d.ts +159 -0
- package/dist/program/bindings.d.ts.map +1 -0
- package/dist/program/bindings.js +329 -0
- package/dist/program/bindings.js.map +1 -0
- package/dist/program/bindings.test.d.ts +5 -0
- package/dist/program/bindings.test.d.ts.map +1 -0
- package/dist/program/bindings.test.js +435 -0
- package/dist/program/bindings.test.js.map +1 -0
- package/dist/program/config.d.ts +9 -0
- package/dist/program/config.d.ts.map +1 -0
- package/dist/program/config.js +29 -0
- package/dist/program/config.js.map +1 -0
- package/dist/program/creation.d.ts +17 -0
- package/dist/program/creation.d.ts.map +1 -0
- package/dist/program/creation.js +182 -0
- package/dist/program/creation.js.map +1 -0
- package/dist/program/dependency-graph.d.ts +19 -0
- package/dist/program/dependency-graph.d.ts.map +1 -0
- package/dist/program/dependency-graph.js +230 -0
- package/dist/program/dependency-graph.js.map +1 -0
- package/dist/program/diagnostics.d.ts +23 -0
- package/dist/program/diagnostics.d.ts.map +1 -0
- package/dist/program/diagnostics.js +65 -0
- package/dist/program/diagnostics.js.map +1 -0
- package/{src/program/index.ts → dist/program/index.d.ts} +3 -10
- package/dist/program/index.d.ts.map +1 -0
- package/dist/program/index.js +11 -0
- package/dist/program/index.js.map +1 -0
- package/dist/program/metadata.d.ts +10 -0
- package/dist/program/metadata.d.ts.map +1 -0
- package/dist/program/metadata.js +56 -0
- package/dist/program/metadata.js.map +1 -0
- package/dist/program/queries.d.ts +10 -0
- package/dist/program/queries.d.ts.map +1 -0
- package/dist/program/queries.js +12 -0
- package/dist/program/queries.js.map +1 -0
- package/dist/program/types.d.ts +36 -0
- package/dist/program/types.d.ts.map +1 -0
- package/dist/program/types.js +5 -0
- package/dist/program/types.js.map +1 -0
- package/{src/program.ts → dist/program.d.ts} +2 -7
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +6 -0
- package/dist/program.js.map +1 -0
- package/dist/resolver/clr-bindings-resolver.d.ts +84 -0
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -0
- package/dist/resolver/clr-bindings-resolver.js +224 -0
- package/dist/resolver/clr-bindings-resolver.js.map +1 -0
- package/dist/resolver/import-resolution.d.ts +20 -0
- package/dist/resolver/import-resolution.d.ts.map +1 -0
- package/dist/resolver/import-resolution.js +102 -0
- package/dist/resolver/import-resolution.js.map +1 -0
- package/{src/resolver/index.ts → dist/resolver/index.d.ts} +3 -11
- package/dist/resolver/index.d.ts.map +1 -0
- package/dist/resolver/index.js +9 -0
- package/dist/resolver/index.js.map +1 -0
- package/dist/resolver/namespace.d.ts +20 -0
- package/dist/resolver/namespace.d.ts.map +1 -0
- package/dist/resolver/namespace.js +35 -0
- package/dist/resolver/namespace.js.map +1 -0
- package/dist/resolver/namespace.test.d.ts +2 -0
- package/dist/resolver/namespace.test.d.ts.map +1 -0
- package/dist/resolver/namespace.test.js +42 -0
- package/dist/resolver/namespace.test.js.map +1 -0
- package/dist/resolver/naming.d.ts +12 -0
- package/dist/resolver/naming.d.ts.map +1 -0
- package/dist/resolver/naming.js +30 -0
- package/dist/resolver/naming.js.map +1 -0
- package/dist/resolver/path-resolution.d.ts +8 -0
- package/dist/resolver/path-resolution.d.ts.map +1 -0
- package/dist/resolver/path-resolution.js +16 -0
- package/dist/resolver/path-resolution.js.map +1 -0
- package/dist/resolver/types.d.ts +13 -0
- package/dist/resolver/types.d.ts.map +1 -0
- package/dist/resolver/types.js +5 -0
- package/dist/resolver/types.js.map +1 -0
- package/dist/resolver.d.ts +7 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +6 -0
- package/dist/resolver.js.map +1 -0
- package/dist/resolver.test.d.ts +5 -0
- package/dist/resolver.test.d.ts.map +1 -0
- package/dist/resolver.test.js +93 -0
- package/dist/resolver.test.js.map +1 -0
- package/dist/symbol-table/builder.d.ts +10 -0
- package/dist/symbol-table/builder.d.ts.map +1 -0
- package/dist/symbol-table/builder.js +105 -0
- package/dist/symbol-table/builder.js.map +1 -0
- package/dist/symbol-table/creation.d.ts +13 -0
- package/dist/symbol-table/creation.d.ts.map +1 -0
- package/dist/symbol-table/creation.js +36 -0
- package/dist/symbol-table/creation.js.map +1 -0
- package/dist/symbol-table/helpers.d.ts +9 -0
- package/dist/symbol-table/helpers.d.ts.map +1 -0
- package/dist/symbol-table/helpers.js +15 -0
- package/dist/symbol-table/helpers.js.map +1 -0
- package/{src/symbol-table/index.ts → dist/symbol-table/index.d.ts} +2 -6
- package/dist/symbol-table/index.d.ts.map +1 -0
- package/dist/symbol-table/index.js +8 -0
- package/dist/symbol-table/index.js.map +1 -0
- package/dist/symbol-table/queries.d.ts +17 -0
- package/dist/symbol-table/queries.d.ts.map +1 -0
- package/dist/symbol-table/queries.js +27 -0
- package/dist/symbol-table/queries.js.map +1 -0
- package/dist/symbol-table/types.d.ts +18 -0
- package/dist/symbol-table/types.d.ts.map +1 -0
- package/dist/symbol-table/types.js +5 -0
- package/dist/symbol-table/types.js.map +1 -0
- package/{src/symbol-table.ts → dist/symbol-table.d.ts} +2 -9
- package/dist/symbol-table.d.ts.map +1 -0
- package/dist/symbol-table.js +6 -0
- package/dist/symbol-table.js.map +1 -0
- package/dist/types/bindings.d.ts +153 -0
- package/dist/types/bindings.d.ts.map +1 -0
- package/dist/types/bindings.js +14 -0
- package/dist/types/bindings.js.map +1 -0
- package/dist/types/diagnostic.d.ts +30 -0
- package/dist/types/diagnostic.d.ts.map +1 -0
- package/dist/types/diagnostic.js +37 -0
- package/dist/types/diagnostic.js.map +1 -0
- package/dist/types/diagnostic.test.d.ts +5 -0
- package/dist/types/diagnostic.test.d.ts.map +1 -0
- package/dist/types/diagnostic.test.js +94 -0
- package/dist/types/diagnostic.test.js.map +1 -0
- package/dist/types/explicit-views.d.ts +97 -0
- package/dist/types/explicit-views.d.ts.map +1 -0
- package/dist/types/explicit-views.js +163 -0
- package/dist/types/explicit-views.js.map +1 -0
- package/dist/types/explicit-views.test.d.ts +5 -0
- package/dist/types/explicit-views.test.d.ts.map +1 -0
- package/dist/types/explicit-views.test.js +67 -0
- package/dist/types/explicit-views.test.js.map +1 -0
- package/dist/types/metadata.d.ts +196 -0
- package/dist/types/metadata.d.ts.map +1 -0
- package/dist/types/metadata.js +10 -0
- package/dist/types/metadata.js.map +1 -0
- package/dist/types/module.d.ts +51 -0
- package/dist/types/module.d.ts.map +1 -0
- package/dist/types/module.js +28 -0
- package/dist/types/module.js.map +1 -0
- package/dist/types/nested-types.d.ts +111 -0
- package/dist/types/nested-types.d.ts.map +1 -0
- package/dist/types/nested-types.js +176 -0
- package/dist/types/nested-types.js.map +1 -0
- package/dist/types/nested-types.test.d.ts +5 -0
- package/dist/types/nested-types.test.d.ts.map +1 -0
- package/dist/types/nested-types.test.js +135 -0
- package/dist/types/nested-types.test.js.map +1 -0
- package/dist/types/parameter-modifiers.d.ts +55 -0
- package/dist/types/parameter-modifiers.d.ts.map +1 -0
- package/dist/types/parameter-modifiers.js +148 -0
- package/dist/types/parameter-modifiers.js.map +1 -0
- package/dist/types/ref-parameters.d.ts +123 -0
- package/dist/types/ref-parameters.d.ts.map +1 -0
- package/dist/types/ref-parameters.js +203 -0
- package/dist/types/ref-parameters.js.map +1 -0
- package/dist/types/ref-parameters.test.d.ts +5 -0
- package/dist/types/ref-parameters.test.d.ts.map +1 -0
- package/dist/types/ref-parameters.test.js +147 -0
- package/dist/types/ref-parameters.test.js.map +1 -0
- package/dist/types/result.d.ts +26 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +19 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/result.test.d.ts +5 -0
- package/dist/types/result.test.d.ts.map +1 -0
- package/dist/types/result.test.js +121 -0
- package/dist/types/result.test.js.map +1 -0
- package/dist/types/support-types.d.ts +103 -0
- package/dist/types/support-types.d.ts.map +1 -0
- package/dist/types/support-types.js +220 -0
- package/dist/types/support-types.js.map +1 -0
- package/dist/types/support-types.test.d.ts +5 -0
- package/dist/types/support-types.test.d.ts.map +1 -0
- package/dist/types/support-types.test.js +53 -0
- package/dist/types/support-types.test.js.map +1 -0
- package/dist/types/test-harness.d.ts +34 -0
- package/dist/types/test-harness.d.ts.map +1 -0
- package/dist/types/test-harness.js +127 -0
- package/dist/types/test-harness.js.map +1 -0
- package/dist/validation/exports.d.ts +11 -0
- package/dist/validation/exports.d.ts.map +1 -0
- package/dist/validation/exports.js +56 -0
- package/dist/validation/exports.js.map +1 -0
- package/dist/validation/features.d.ts +11 -0
- package/dist/validation/features.d.ts.map +1 -0
- package/dist/validation/features.js +36 -0
- package/dist/validation/features.js.map +1 -0
- package/dist/validation/generics.d.ts +11 -0
- package/dist/validation/generics.d.ts.map +1 -0
- package/dist/validation/generics.js +31 -0
- package/dist/validation/generics.js.map +1 -0
- package/dist/validation/helpers.d.ts +15 -0
- package/dist/validation/helpers.d.ts.map +1 -0
- package/dist/validation/helpers.js +18 -0
- package/dist/validation/helpers.js.map +1 -0
- package/dist/validation/imports.d.ts +15 -0
- package/dist/validation/imports.d.ts.map +1 -0
- package/dist/validation/imports.js +42 -0
- package/dist/validation/imports.js.map +1 -0
- package/dist/validation/index.d.ts +11 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/{src/validation/index.ts → dist/validation/index.js} +1 -1
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/orchestrator.d.ts +15 -0
- package/dist/validation/orchestrator.d.ts.map +1 -0
- package/dist/validation/orchestrator.js +30 -0
- package/dist/validation/orchestrator.js.map +1 -0
- package/dist/validation/static-safety.d.ts +23 -0
- package/dist/validation/static-safety.d.ts.map +1 -0
- package/dist/validation/static-safety.js +165 -0
- package/dist/validation/static-safety.js.map +1 -0
- package/dist/validator.d.ts +6 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +6 -0
- package/dist/validator.js.map +1 -0
- package/dist/validator.test.d.ts +11 -0
- package/dist/validator.test.d.ts.map +1 -0
- package/dist/validator.test.js +341 -0
- package/dist/validator.test.js.map +1 -0
- package/package.json +4 -1
- package/src/dotnet-metadata.ts +0 -121
- package/src/graph/builder.ts +0 -81
- package/src/graph/circular.ts +0 -58
- package/src/graph/extraction/exports.ts +0 -55
- package/src/graph/extraction/imports.ts +0 -81
- package/src/graph/extraction/orchestrator.ts +0 -99
- package/src/graph/helpers.ts +0 -51
- package/src/index.ts +0 -80
- package/src/ir/binding-resolution.test.ts +0 -585
- package/src/ir/builder/exports.ts +0 -78
- package/src/ir/builder/helpers.ts +0 -27
- package/src/ir/builder/imports.ts +0 -153
- package/src/ir/builder/orchestrator.ts +0 -178
- package/src/ir/builder/statements.ts +0 -55
- package/src/ir/builder/types.ts +0 -8
- package/src/ir/builder/validation.ts +0 -129
- package/src/ir/builder.test.ts +0 -581
- package/src/ir/converters/expressions/access.ts +0 -99
- package/src/ir/converters/expressions/calls.ts +0 -137
- package/src/ir/converters/expressions/collections.ts +0 -84
- package/src/ir/converters/expressions/functions.ts +0 -62
- package/src/ir/converters/expressions/helpers.ts +0 -264
- package/src/ir/converters/expressions/index.ts +0 -43
- package/src/ir/converters/expressions/literals.ts +0 -22
- package/src/ir/converters/expressions/operators.ts +0 -147
- package/src/ir/converters/expressions/other.ts +0 -60
- package/src/ir/converters/statements/control/blocks.ts +0 -22
- package/src/ir/converters/statements/control/conditionals.ts +0 -67
- package/src/ir/converters/statements/control/exceptions.ts +0 -43
- package/src/ir/converters/statements/control/index.ts +0 -17
- package/src/ir/converters/statements/control/loops.ts +0 -99
- package/src/ir/converters/statements/control.ts +0 -17
- package/src/ir/converters/statements/declarations/classes/constructors.ts +0 -120
- package/src/ir/converters/statements/declarations/classes/methods.ts +0 -61
- package/src/ir/converters/statements/declarations/classes/orchestrator.ts +0 -166
- package/src/ir/converters/statements/declarations/classes/override-detection.ts +0 -116
- package/src/ir/converters/statements/declarations/classes/properties.ts +0 -63
- package/src/ir/converters/statements/declarations/enums.ts +0 -29
- package/src/ir/converters/statements/declarations/functions.ts +0 -39
- package/src/ir/converters/statements/declarations/interfaces.ts +0 -131
- package/src/ir/converters/statements/declarations/type-aliases.ts +0 -25
- package/src/ir/converters/statements/declarations/variables.ts +0 -60
- package/src/ir/converters/statements/declarations.ts +0 -16
- package/src/ir/converters/statements/helpers.ts +0 -174
- package/src/ir/converters/statements/index.ts +0 -40
- package/src/ir/expression-converter.ts +0 -207
- package/src/ir/generic-validator.ts +0 -100
- package/src/ir/hierarchical-bindings-e2e.test.ts +0 -163
- package/src/ir/statement-converter.ts +0 -128
- package/src/ir/type-converter/arrays.ts +0 -20
- package/src/ir/type-converter/converter.ts +0 -10
- package/src/ir/type-converter/functions.ts +0 -22
- package/src/ir/type-converter/inference.ts +0 -122
- package/src/ir/type-converter/literals.ts +0 -40
- package/src/ir/type-converter/objects.ts +0 -107
- package/src/ir/type-converter/orchestrator.ts +0 -85
- package/src/ir/type-converter/patterns.ts +0 -73
- package/src/ir/type-converter/primitives.ts +0 -57
- package/src/ir/type-converter/references.ts +0 -64
- package/src/ir/type-converter/unions-intersections.ts +0 -34
- package/src/ir/type-converter.ts +0 -13
- package/src/ir/types/expressions.ts +0 -215
- package/src/ir/types/guards.ts +0 -39
- package/src/ir/types/helpers.ts +0 -135
- package/src/ir/types/index.ts +0 -108
- package/src/ir/types/ir-types.ts +0 -96
- package/src/ir/types/module.ts +0 -57
- package/src/ir/types/statements.ts +0 -238
- package/src/ir/types.ts +0 -97
- package/src/metadata/bindings-loader.test.ts +0 -144
- package/src/metadata/bindings-loader.ts +0 -357
- package/src/metadata/library-loader.ts +0 -153
- package/src/metadata/loader.test.ts +0 -156
- package/src/metadata/loader.ts +0 -382
- package/src/program/bindings.test.ts +0 -512
- package/src/program/bindings.ts +0 -253
- package/src/program/config.ts +0 -30
- package/src/program/creation.ts +0 -249
- package/src/program/dependency-graph.ts +0 -245
- package/src/program/diagnostics.ts +0 -103
- package/src/program/metadata.ts +0 -68
- package/src/program/queries.ts +0 -18
- package/src/program/types.ts +0 -38
- package/src/resolver/dotnet-import-resolver.ts +0 -226
- package/src/resolver/import-resolution.ts +0 -177
- package/src/resolver/namespace.test.ts +0 -86
- package/src/resolver/namespace.ts +0 -42
- package/src/resolver/naming.ts +0 -38
- package/src/resolver/path-resolution.ts +0 -22
- package/src/resolver/types.ts +0 -15
- package/src/resolver.test.ts +0 -155
- package/src/resolver.ts +0 -14
- package/src/symbol-table/builder.ts +0 -114
- package/src/symbol-table/creation.ts +0 -42
- package/src/symbol-table/helpers.ts +0 -18
- package/src/symbol-table/queries.ts +0 -42
- package/src/symbol-table/types.ts +0 -28
- package/src/types/bindings.ts +0 -172
- package/src/types/diagnostic.test.ts +0 -164
- package/src/types/diagnostic.ts +0 -153
- package/src/types/explicit-views.test.ts +0 -113
- package/src/types/explicit-views.ts +0 -218
- package/src/types/metadata.ts +0 -229
- package/src/types/module.ts +0 -99
- package/src/types/nested-types.test.ts +0 -194
- package/src/types/nested-types.ts +0 -215
- package/src/types/parameter-modifiers.ts +0 -173
- package/src/types/ref-parameters.test.ts +0 -192
- package/src/types/ref-parameters.ts +0 -268
- package/src/types/result.test.ts +0 -157
- package/src/types/result.ts +0 -48
- package/src/types/support-types.test.ts +0 -81
- package/src/types/support-types.ts +0 -288
- package/src/types/test-harness.ts +0 -180
- package/src/validation/exports.ts +0 -98
- package/src/validation/features.ts +0 -89
- package/src/validation/generics.ts +0 -40
- package/src/validation/helpers.ts +0 -31
- package/src/validation/imports.ts +0 -97
- package/src/validation/orchestrator.ts +0 -51
- package/src/validation/static-safety.ts +0 -267
- package/src/validator.test.ts +0 -468
- package/src/validator.ts +0 -15
- package/tsconfig.json +0 -13
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* .NET metadata file loading
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "node:fs";
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
import { DotnetMetadataRegistry, } from "../dotnet-metadata.js";
|
|
7
|
+
/**
|
|
8
|
+
* Recursively scan a directory for .d.ts files
|
|
9
|
+
*/
|
|
10
|
+
const scanForDeclarationFiles = (dir) => {
|
|
11
|
+
if (!fs.existsSync(dir)) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const results = [];
|
|
15
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
16
|
+
for (const entry of entries) {
|
|
17
|
+
const fullPath = path.join(dir, entry.name);
|
|
18
|
+
if (entry.isDirectory()) {
|
|
19
|
+
results.push(...scanForDeclarationFiles(fullPath));
|
|
20
|
+
}
|
|
21
|
+
else if (entry.name.endsWith(".d.ts")) {
|
|
22
|
+
results.push(fullPath);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return results;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Load .NET metadata files from configured type roots
|
|
29
|
+
* Looks for *.metadata.json files alongside .d.ts files
|
|
30
|
+
*/
|
|
31
|
+
export const loadDotnetMetadata = (typeRoots) => {
|
|
32
|
+
const registry = new DotnetMetadataRegistry();
|
|
33
|
+
// Scan all type roots for .d.ts files
|
|
34
|
+
for (const typeRoot of typeRoots) {
|
|
35
|
+
const absoluteRoot = path.resolve(typeRoot);
|
|
36
|
+
const declFiles = scanForDeclarationFiles(absoluteRoot);
|
|
37
|
+
for (const declPath of declFiles) {
|
|
38
|
+
// Look for corresponding .metadata.json file
|
|
39
|
+
const metadataPath = declPath.replace(/\.d\.ts$/, ".metadata.json");
|
|
40
|
+
try {
|
|
41
|
+
if (fs.existsSync(metadataPath)) {
|
|
42
|
+
const content = fs.readFileSync(metadataPath, "utf-8");
|
|
43
|
+
const metadataFile = JSON.parse(content);
|
|
44
|
+
registry.loadMetadataFile(metadataPath, metadataFile);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
// Silently skip files that can't be read or parsed
|
|
49
|
+
// In production, we might want to emit a warning diagnostic
|
|
50
|
+
console.warn(`Failed to load metadata from ${metadataPath}:`, err);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return registry;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/program/metadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAqB,EAAE;IACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAA4B,EACJ,EAAE;IAC1B,MAAM,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAE9C,sCAAsC;IACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;QAExD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,6CAA6C;YAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAEpE,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBACvD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;oBAC/D,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,mDAAmD;gBACnD,4DAA4D;gBAC5D,OAAO,CAAC,IAAI,CAAC,gCAAgC,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Program query functions
|
|
3
|
+
*/
|
|
4
|
+
import * as ts from "typescript";
|
|
5
|
+
import { TsonicProgram } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Get a source file from the program by file path
|
|
8
|
+
*/
|
|
9
|
+
export declare const getSourceFile: (program: TsonicProgram, filePath: string) => ts.SourceFile | null;
|
|
10
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/program/queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,aAAa,EACtB,UAAU,MAAM,KACf,EAAE,CAAC,UAAU,GAAG,IAGlB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Program query functions
|
|
3
|
+
*/
|
|
4
|
+
import * as path from "node:path";
|
|
5
|
+
/**
|
|
6
|
+
* Get a source file from the program by file path
|
|
7
|
+
*/
|
|
8
|
+
export const getSourceFile = (program, filePath) => {
|
|
9
|
+
const absolutePath = path.resolve(filePath);
|
|
10
|
+
return program.program.getSourceFile(absolutePath) ?? null;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/program/queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAsB,EACtB,QAAgB,EACM,EAAE;IACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;AAC7D,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Program type definitions
|
|
3
|
+
*/
|
|
4
|
+
import * as ts from "typescript";
|
|
5
|
+
import { DotnetMetadataRegistry } from "../dotnet-metadata.js";
|
|
6
|
+
import { BindingRegistry } from "./bindings.js";
|
|
7
|
+
import { ClrBindingsResolver } from "../resolver/clr-bindings-resolver.js";
|
|
8
|
+
export type RuntimeMode = "js" | "dotnet";
|
|
9
|
+
export type CompilerOptions = {
|
|
10
|
+
readonly projectRoot: string;
|
|
11
|
+
readonly sourceRoot: string;
|
|
12
|
+
readonly rootNamespace: string;
|
|
13
|
+
readonly strict?: boolean;
|
|
14
|
+
readonly typeRoots?: readonly string[];
|
|
15
|
+
readonly verbose?: boolean;
|
|
16
|
+
/** Use TypeScript standard lib (Array, Promise, etc.) instead of noLib mode */
|
|
17
|
+
readonly useStandardLib?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Runtime mode:
|
|
20
|
+
* - "js": JS built-ins available via Tsonic.JSRuntime
|
|
21
|
+
* - "dotnet": Pure .NET mode, JS built-ins forbidden
|
|
22
|
+
* Defaults to "js"
|
|
23
|
+
*/
|
|
24
|
+
readonly runtime?: RuntimeMode;
|
|
25
|
+
};
|
|
26
|
+
export type TsonicProgram = {
|
|
27
|
+
readonly program: ts.Program;
|
|
28
|
+
readonly checker: ts.TypeChecker;
|
|
29
|
+
readonly options: CompilerOptions;
|
|
30
|
+
readonly sourceFiles: readonly ts.SourceFile[];
|
|
31
|
+
readonly metadata: DotnetMetadataRegistry;
|
|
32
|
+
readonly bindings: BindingRegistry;
|
|
33
|
+
/** Resolver for CLR namespace imports (import-driven discovery) */
|
|
34
|
+
readonly clrResolver: ClrBindingsResolver;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/program/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;CAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/program/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -2,12 +2,7 @@
|
|
|
2
2
|
* TypeScript program creation and management
|
|
3
3
|
* Main dispatcher - re-exports from program/ subdirectory
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
5
|
export type { CompilerOptions, TsonicProgram } from "./program/index.js";
|
|
7
6
|
export type { ModuleDependencyGraphResult } from "./program/dependency-graph.js";
|
|
8
|
-
export {
|
|
9
|
-
|
|
10
|
-
getSourceFile,
|
|
11
|
-
BindingRegistry,
|
|
12
|
-
buildModuleDependencyGraph,
|
|
13
|
-
} from "./program/index.js";
|
|
7
|
+
export { createProgram, getSourceFile, BindingRegistry, buildModuleDependencyGraph, } from "./program/index.js";
|
|
8
|
+
//# sourceMappingURL=program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC"}
|
package/dist/program.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLR bindings resolution for package imports
|
|
3
|
+
*
|
|
4
|
+
* Determines if an import specifier refers to a CLR namespace by checking
|
|
5
|
+
* if bindings.json exists in the package's namespace directory.
|
|
6
|
+
*
|
|
7
|
+
* This is the ONLY mechanism for detecting CLR imports - no heuristics,
|
|
8
|
+
* no special-casing for any particular package. Any package that provides
|
|
9
|
+
* bindings.json in its namespace directories will be recognized.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Result of resolving a CLR import
|
|
13
|
+
*/
|
|
14
|
+
export type ResolvedClrImport = {
|
|
15
|
+
readonly isClr: true;
|
|
16
|
+
readonly packageName: string;
|
|
17
|
+
readonly resolvedNamespace: string;
|
|
18
|
+
readonly bindingsPath: string;
|
|
19
|
+
readonly metadataPath: string | undefined;
|
|
20
|
+
} | {
|
|
21
|
+
readonly isClr: false;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Resolver for CLR namespace imports
|
|
25
|
+
*
|
|
26
|
+
* An import is a CLR namespace import iff:
|
|
27
|
+
* - It's a package import with a subpath (e.g., @scope/pkg/Namespace)
|
|
28
|
+
* - The package contains bindings.json in that subpath directory
|
|
29
|
+
*
|
|
30
|
+
* This works for any bindings provider package.
|
|
31
|
+
*/
|
|
32
|
+
export declare class ClrBindingsResolver {
|
|
33
|
+
private readonly pkgRootCache;
|
|
34
|
+
private readonly bindingsExistsCache;
|
|
35
|
+
private readonly namespaceCache;
|
|
36
|
+
private readonly require;
|
|
37
|
+
constructor(baseDir: string);
|
|
38
|
+
/**
|
|
39
|
+
* Resolve an import specifier to determine if it's a CLR namespace import
|
|
40
|
+
*/
|
|
41
|
+
resolve(moduleSpecifier: string): ResolvedClrImport;
|
|
42
|
+
/**
|
|
43
|
+
* Parse a module specifier into package name and subpath
|
|
44
|
+
*
|
|
45
|
+
* Examples:
|
|
46
|
+
* - "@scope/pkg/System.IO" -> { packageName: "@scope/pkg", subpath: "System.IO" }
|
|
47
|
+
* - "mypkg/Namespace" -> { packageName: "mypkg", subpath: "Namespace" }
|
|
48
|
+
* - "@scope/pkg" -> null (no subpath)
|
|
49
|
+
* - "mypkg" -> null (no subpath)
|
|
50
|
+
*/
|
|
51
|
+
private parseModuleSpecifier;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve package root directory using Node resolution
|
|
54
|
+
*
|
|
55
|
+
* Uses require.resolve to find the package's package.json,
|
|
56
|
+
* then returns the directory containing it.
|
|
57
|
+
*/
|
|
58
|
+
private resolvePkgRoot;
|
|
59
|
+
/**
|
|
60
|
+
* Check if bindings.json exists at the given path (cached)
|
|
61
|
+
*/
|
|
62
|
+
private hasBindings;
|
|
63
|
+
/**
|
|
64
|
+
* Extract the namespace from a bindings.json file (cached).
|
|
65
|
+
* Falls back to the subpath if namespace cannot be extracted.
|
|
66
|
+
*
|
|
67
|
+
* This reads the 'namespace' field from tsbindgen format files,
|
|
68
|
+
* which is the authoritative CLR namespace for the binding.
|
|
69
|
+
*/
|
|
70
|
+
private extractNamespace;
|
|
71
|
+
/**
|
|
72
|
+
* Check if a file exists (not cached - used for optional files)
|
|
73
|
+
*/
|
|
74
|
+
private fileExists;
|
|
75
|
+
/**
|
|
76
|
+
* Get all discovered binding paths (for loading)
|
|
77
|
+
*/
|
|
78
|
+
getDiscoveredBindingPaths(): ReadonlySet<string>;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create a resolver instance for a given source root
|
|
82
|
+
*/
|
|
83
|
+
export declare const createClrBindingsResolver: (sourceRoot: string) => ClrBindingsResolver;
|
|
84
|
+
//# sourceMappingURL=clr-bindings-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clr-bindings-resolver.d.ts","sourceRoot":"","sources":["../../src/resolver/clr-bindings-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C,GACD;IACE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB,CAAC;AAUN;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IAGjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8B;IAGlE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoC;IAGnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;gBAE/C,OAAO,EAAE,MAAM;IAK3B;;OAEG;IACH,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,iBAAiB;IAgDnD;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAwCtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,yBAAyB,IAAI,WAAW,CAAC,MAAM,CAAC;CASjD;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,GACpC,YAAY,MAAM,KACjB,mBAEF,CAAC"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLR bindings resolution for package imports
|
|
3
|
+
*
|
|
4
|
+
* Determines if an import specifier refers to a CLR namespace by checking
|
|
5
|
+
* if bindings.json exists in the package's namespace directory.
|
|
6
|
+
*
|
|
7
|
+
* This is the ONLY mechanism for detecting CLR imports - no heuristics,
|
|
8
|
+
* no special-casing for any particular package. Any package that provides
|
|
9
|
+
* bindings.json in its namespace directories will be recognized.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
12
|
+
import { dirname, join } from "node:path";
|
|
13
|
+
import { createRequire } from "node:module";
|
|
14
|
+
/**
|
|
15
|
+
* Resolver for CLR namespace imports
|
|
16
|
+
*
|
|
17
|
+
* An import is a CLR namespace import iff:
|
|
18
|
+
* - It's a package import with a subpath (e.g., @scope/pkg/Namespace)
|
|
19
|
+
* - The package contains bindings.json in that subpath directory
|
|
20
|
+
*
|
|
21
|
+
* This works for any bindings provider package.
|
|
22
|
+
*/
|
|
23
|
+
export class ClrBindingsResolver {
|
|
24
|
+
constructor(baseDir) {
|
|
25
|
+
// Cache: packageName -> packageRoot (or null if not found)
|
|
26
|
+
this.pkgRootCache = new Map();
|
|
27
|
+
// Cache: absolute bindingsPath -> exists
|
|
28
|
+
this.bindingsExistsCache = new Map();
|
|
29
|
+
// Cache: absolute bindingsPath -> namespace (extracted from bindings.json)
|
|
30
|
+
this.namespaceCache = new Map();
|
|
31
|
+
// Create a require function that resolves relative to baseDir
|
|
32
|
+
this.require = createRequire(join(baseDir, "package.json"));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve an import specifier to determine if it's a CLR namespace import
|
|
36
|
+
*/
|
|
37
|
+
resolve(moduleSpecifier) {
|
|
38
|
+
// Skip local imports
|
|
39
|
+
if (moduleSpecifier.startsWith(".") || moduleSpecifier.startsWith("/")) {
|
|
40
|
+
return { isClr: false };
|
|
41
|
+
}
|
|
42
|
+
// Parse the specifier into package name and subpath
|
|
43
|
+
const parsed = this.parseModuleSpecifier(moduleSpecifier);
|
|
44
|
+
if (!parsed) {
|
|
45
|
+
return { isClr: false };
|
|
46
|
+
}
|
|
47
|
+
const { packageName, subpath } = parsed;
|
|
48
|
+
// No subpath means it's not a namespace import (e.g., just "@scope/pkg")
|
|
49
|
+
if (!subpath) {
|
|
50
|
+
return { isClr: false };
|
|
51
|
+
}
|
|
52
|
+
// Resolve package root using Node resolution
|
|
53
|
+
const pkgRoot = this.resolvePkgRoot(packageName);
|
|
54
|
+
if (!pkgRoot) {
|
|
55
|
+
return { isClr: false };
|
|
56
|
+
}
|
|
57
|
+
// Check if bindings.json exists in the namespace directory
|
|
58
|
+
const bindingsPath = join(pkgRoot, subpath, "bindings.json");
|
|
59
|
+
if (!this.hasBindings(bindingsPath)) {
|
|
60
|
+
return { isClr: false };
|
|
61
|
+
}
|
|
62
|
+
// Extract namespace from bindings.json (tsbindgen format)
|
|
63
|
+
// This is the authoritative namespace, not the subpath
|
|
64
|
+
const resolvedNamespace = this.extractNamespace(bindingsPath, subpath);
|
|
65
|
+
// Check for optional metadata.json
|
|
66
|
+
const metadataPath = join(pkgRoot, subpath, "internal", "metadata.json");
|
|
67
|
+
const hasMetadata = this.fileExists(metadataPath);
|
|
68
|
+
return {
|
|
69
|
+
isClr: true,
|
|
70
|
+
packageName,
|
|
71
|
+
resolvedNamespace,
|
|
72
|
+
bindingsPath,
|
|
73
|
+
metadataPath: hasMetadata ? metadataPath : undefined,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Parse a module specifier into package name and subpath
|
|
78
|
+
*
|
|
79
|
+
* Examples:
|
|
80
|
+
* - "@scope/pkg/System.IO" -> { packageName: "@scope/pkg", subpath: "System.IO" }
|
|
81
|
+
* - "mypkg/Namespace" -> { packageName: "mypkg", subpath: "Namespace" }
|
|
82
|
+
* - "@scope/pkg" -> null (no subpath)
|
|
83
|
+
* - "mypkg" -> null (no subpath)
|
|
84
|
+
*/
|
|
85
|
+
parseModuleSpecifier(spec) {
|
|
86
|
+
if (spec.startsWith("@")) {
|
|
87
|
+
// Scoped package: @scope/pkg/subpath
|
|
88
|
+
const match = spec.match(/^(@[^/]+\/[^/]+)(?:\/(.+))?$/);
|
|
89
|
+
if (!match)
|
|
90
|
+
return null;
|
|
91
|
+
const packageName = match[1];
|
|
92
|
+
const subpath = match[2];
|
|
93
|
+
if (!packageName || !subpath)
|
|
94
|
+
return null;
|
|
95
|
+
return { packageName, subpath };
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// Regular package: pkg/subpath
|
|
99
|
+
const slashIdx = spec.indexOf("/");
|
|
100
|
+
if (slashIdx === -1)
|
|
101
|
+
return null;
|
|
102
|
+
return {
|
|
103
|
+
packageName: spec.slice(0, slashIdx),
|
|
104
|
+
subpath: spec.slice(slashIdx + 1),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Resolve package root directory using Node resolution
|
|
110
|
+
*
|
|
111
|
+
* Uses require.resolve to find the package's package.json,
|
|
112
|
+
* then returns the directory containing it.
|
|
113
|
+
*/
|
|
114
|
+
resolvePkgRoot(packageName) {
|
|
115
|
+
const cached = this.pkgRootCache.get(packageName);
|
|
116
|
+
if (cached !== undefined) {
|
|
117
|
+
return cached;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
// Try to resolve the package's package.json directly
|
|
121
|
+
const pkgJsonPath = this.require.resolve(`${packageName}/package.json`);
|
|
122
|
+
const pkgRoot = dirname(pkgJsonPath);
|
|
123
|
+
this.pkgRootCache.set(packageName, pkgRoot);
|
|
124
|
+
return pkgRoot;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// package.json might not be exported - try finding package root via node_modules path
|
|
128
|
+
// This works by looking for node_modules/<package-name> in the require paths
|
|
129
|
+
try {
|
|
130
|
+
const paths = this.require.resolve.paths(packageName);
|
|
131
|
+
if (paths) {
|
|
132
|
+
for (const searchPath of paths) {
|
|
133
|
+
// For scoped packages, the path structure is node_modules/@scope/name
|
|
134
|
+
const pkgDir = packageName.startsWith("@")
|
|
135
|
+
? join(searchPath, packageName)
|
|
136
|
+
: join(searchPath, packageName);
|
|
137
|
+
// Check if package.json exists at this location
|
|
138
|
+
if (existsSync(join(pkgDir, "package.json"))) {
|
|
139
|
+
this.pkgRootCache.set(packageName, pkgDir);
|
|
140
|
+
return pkgDir;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Fallback failed
|
|
147
|
+
}
|
|
148
|
+
this.pkgRootCache.set(packageName, null);
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Check if bindings.json exists at the given path (cached)
|
|
154
|
+
*/
|
|
155
|
+
hasBindings(bindingsPath) {
|
|
156
|
+
const cached = this.bindingsExistsCache.get(bindingsPath);
|
|
157
|
+
if (cached !== undefined) {
|
|
158
|
+
return cached;
|
|
159
|
+
}
|
|
160
|
+
const exists = existsSync(bindingsPath);
|
|
161
|
+
this.bindingsExistsCache.set(bindingsPath, exists);
|
|
162
|
+
return exists;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Extract the namespace from a bindings.json file (cached).
|
|
166
|
+
* Falls back to the subpath if namespace cannot be extracted.
|
|
167
|
+
*
|
|
168
|
+
* This reads the 'namespace' field from tsbindgen format files,
|
|
169
|
+
* which is the authoritative CLR namespace for the binding.
|
|
170
|
+
*/
|
|
171
|
+
extractNamespace(bindingsPath, fallback) {
|
|
172
|
+
const cached = this.namespaceCache.get(bindingsPath);
|
|
173
|
+
if (cached !== undefined) {
|
|
174
|
+
return cached ?? fallback;
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
const content = readFileSync(bindingsPath, "utf-8");
|
|
178
|
+
const parsed = JSON.parse(content);
|
|
179
|
+
// Check for tsbindgen format: { namespace: string, types: [...] }
|
|
180
|
+
if (parsed !== null &&
|
|
181
|
+
typeof parsed === "object" &&
|
|
182
|
+
"namespace" in parsed &&
|
|
183
|
+
typeof parsed.namespace === "string") {
|
|
184
|
+
const namespace = parsed
|
|
185
|
+
.namespace;
|
|
186
|
+
this.namespaceCache.set(bindingsPath, namespace);
|
|
187
|
+
return namespace;
|
|
188
|
+
}
|
|
189
|
+
// No namespace found, cache null and fall back
|
|
190
|
+
this.namespaceCache.set(bindingsPath, null);
|
|
191
|
+
return fallback;
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
// Failed to read/parse, cache null and fall back
|
|
195
|
+
this.namespaceCache.set(bindingsPath, null);
|
|
196
|
+
return fallback;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Check if a file exists (not cached - used for optional files)
|
|
201
|
+
*/
|
|
202
|
+
fileExists(filePath) {
|
|
203
|
+
return existsSync(filePath);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get all discovered binding paths (for loading)
|
|
207
|
+
*/
|
|
208
|
+
getDiscoveredBindingPaths() {
|
|
209
|
+
const paths = new Set();
|
|
210
|
+
for (const [path, exists] of this.bindingsExistsCache) {
|
|
211
|
+
if (exists) {
|
|
212
|
+
paths.add(path);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return paths;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Create a resolver instance for a given source root
|
|
220
|
+
*/
|
|
221
|
+
export const createClrBindingsResolver = (sourceRoot) => {
|
|
222
|
+
return new ClrBindingsResolver(sourceRoot);
|
|
223
|
+
};
|
|
224
|
+
//# sourceMappingURL=clr-bindings-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clr-bindings-resolver.js","sourceRoot":"","sources":["../../src/resolver/clr-bindings-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import resolution with ESM rules enforcement
|
|
3
|
+
*/
|
|
4
|
+
import { Result } from "../types/result.js";
|
|
5
|
+
import { Diagnostic } from "../types/diagnostic.js";
|
|
6
|
+
import { ResolvedModule } from "./types.js";
|
|
7
|
+
import { ClrBindingsResolver } from "./clr-bindings-resolver.js";
|
|
8
|
+
/**
|
|
9
|
+
* Resolve import specifier to module
|
|
10
|
+
*/
|
|
11
|
+
export declare const resolveImport: (importSpecifier: string, containingFile: string, sourceRoot: string, clrResolver?: ClrBindingsResolver) => Result<ResolvedModule, Diagnostic>;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve local import with ESM rules
|
|
14
|
+
*/
|
|
15
|
+
export declare const resolveLocalImport: (importSpecifier: string, containingFile: string, sourceRoot: string) => Result<ResolvedModule, Diagnostic>;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve CLR import (namespace validation)
|
|
18
|
+
*/
|
|
19
|
+
export declare const resolveClrImport: (importSpecifier: string) => Result<ResolvedModule, Diagnostic>;
|
|
20
|
+
//# sourceMappingURL=import-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-resolution.d.ts","sourceRoot":"","sources":["../../src/resolver/import-resolution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,MAAM,EAAa,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,iBAAiB,MAAM,EACvB,gBAAgB,MAAM,EACtB,YAAY,MAAM,EAClB,cAAc,mBAAmB,KAChC,MAAM,CAAC,cAAc,EAAE,UAAU,CAqDnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,iBAAiB,MAAM,EACvB,gBAAgB,MAAM,EACtB,YAAY,MAAM,KACjB,MAAM,CAAC,cAAc,EAAE,UAAU,CA+DnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,iBAAiB,MAAM,KACtB,MAAM,CAAC,cAAc,EAAE,UAAU,CAuBnC,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import resolution with ESM rules enforcement
|
|
3
|
+
*/
|
|
4
|
+
import * as path from "node:path";
|
|
5
|
+
import * as fs from "node:fs";
|
|
6
|
+
import { ok, error } from "../types/result.js";
|
|
7
|
+
import { createDiagnostic } from "../types/diagnostic.js";
|
|
8
|
+
import { isLocalImport } from "../types/module.js";
|
|
9
|
+
import { getBindingRegistry } from "../ir/converters/statements/declarations/registry.js";
|
|
10
|
+
/**
|
|
11
|
+
* Resolve import specifier to module
|
|
12
|
+
*/
|
|
13
|
+
export const resolveImport = (importSpecifier, containingFile, sourceRoot, clrResolver) => {
|
|
14
|
+
if (isLocalImport(importSpecifier)) {
|
|
15
|
+
return resolveLocalImport(importSpecifier, containingFile, sourceRoot);
|
|
16
|
+
}
|
|
17
|
+
// Use import-driven resolution for CLR imports (if resolver provided)
|
|
18
|
+
if (clrResolver) {
|
|
19
|
+
const clrResolution = clrResolver.resolve(importSpecifier);
|
|
20
|
+
if (clrResolution.isClr) {
|
|
21
|
+
return ok({
|
|
22
|
+
resolvedPath: "", // No file path for CLR imports
|
|
23
|
+
isLocal: false,
|
|
24
|
+
isClr: true,
|
|
25
|
+
originalSpecifier: importSpecifier,
|
|
26
|
+
resolvedNamespace: clrResolution.resolvedNamespace,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Check if this is a module binding (e.g., Node.js API)
|
|
31
|
+
const binding = getBindingRegistry().getBinding(importSpecifier);
|
|
32
|
+
if (binding && binding.kind === "module") {
|
|
33
|
+
return ok({
|
|
34
|
+
resolvedPath: "", // No file path for bound modules
|
|
35
|
+
isLocal: false,
|
|
36
|
+
isClr: false,
|
|
37
|
+
originalSpecifier: importSpecifier,
|
|
38
|
+
resolvedClrType: binding.type,
|
|
39
|
+
resolvedAssembly: binding.assembly,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
// @tsonic/types is a type-only package (phantom types) - no runtime code
|
|
43
|
+
if (importSpecifier === "@tsonic/types") {
|
|
44
|
+
return ok({
|
|
45
|
+
resolvedPath: "", // No file path for type-only packages
|
|
46
|
+
isLocal: false,
|
|
47
|
+
isClr: false,
|
|
48
|
+
originalSpecifier: importSpecifier,
|
|
49
|
+
resolvedClrType: undefined,
|
|
50
|
+
resolvedAssembly: undefined,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return error(createDiagnostic("TSN1004", "error", `Unsupported module import: "${importSpecifier}"`, undefined, "Tsonic only supports local imports (with .ts), .NET imports, and registered module bindings"));
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Resolve local import with ESM rules
|
|
57
|
+
*/
|
|
58
|
+
export const resolveLocalImport = (importSpecifier, containingFile, sourceRoot) => {
|
|
59
|
+
// Check for .ts extension
|
|
60
|
+
if (!importSpecifier.endsWith(".ts")) {
|
|
61
|
+
return error(createDiagnostic("TSN1001", "error", `Local import must have .ts extension: "${importSpecifier}"`, undefined, `Change to: "${importSpecifier}.ts"`));
|
|
62
|
+
}
|
|
63
|
+
const containingDir = path.dirname(containingFile);
|
|
64
|
+
const resolvedPath = path.resolve(containingDir, importSpecifier);
|
|
65
|
+
// Check if file exists
|
|
66
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
67
|
+
return error(createDiagnostic("TSN1004", "error", `Cannot find module: "${importSpecifier}"`, undefined, `File not found: ${resolvedPath}`));
|
|
68
|
+
}
|
|
69
|
+
// Check case sensitivity
|
|
70
|
+
const realPath = fs.realpathSync(resolvedPath);
|
|
71
|
+
if (realPath !== resolvedPath && process.platform !== "win32") {
|
|
72
|
+
return error(createDiagnostic("TSN1003", "error", `Case mismatch in import path: "${importSpecifier}"`, undefined, `File exists as: ${realPath}`));
|
|
73
|
+
}
|
|
74
|
+
// Ensure it's within the source root
|
|
75
|
+
if (!resolvedPath.startsWith(sourceRoot)) {
|
|
76
|
+
return error(createDiagnostic("TSN1004", "error", `Import outside source root: "${importSpecifier}"`, undefined, `Source root: ${sourceRoot}`));
|
|
77
|
+
}
|
|
78
|
+
return ok({
|
|
79
|
+
resolvedPath,
|
|
80
|
+
isLocal: true,
|
|
81
|
+
isClr: false,
|
|
82
|
+
originalSpecifier: importSpecifier,
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Resolve CLR import (namespace validation)
|
|
87
|
+
*/
|
|
88
|
+
export const resolveClrImport = (importSpecifier) => {
|
|
89
|
+
// For CLR imports, we don't resolve to a file
|
|
90
|
+
// We just validate the format and return the namespace
|
|
91
|
+
// Check for invalid characters
|
|
92
|
+
if (!/^[A-Za-z_][A-Za-z0-9_.]*$/.test(importSpecifier)) {
|
|
93
|
+
return error(createDiagnostic("TSN4001", "error", `Invalid CLR namespace: "${importSpecifier}"`, undefined, "Must be a valid CLR namespace identifier"));
|
|
94
|
+
}
|
|
95
|
+
return ok({
|
|
96
|
+
resolvedPath: "", // No file path for CLR imports
|
|
97
|
+
isLocal: false,
|
|
98
|
+
isClr: true,
|
|
99
|
+
originalSpecifier: importSpecifier,
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=import-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-resolution.js","sourceRoot":"","sources":["../../src/resolver/import-resolution.ts"],"names":[],"mappings":"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"}
|