@tsonic/frontend 0.0.1 → 0.0.2
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 +513 -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 +121 -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 +493 -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 +85 -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 +210 -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 +124 -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/clr-type-resolver.d.ts +15 -0
- package/dist/ir/type-converter/clr-type-resolver.d.ts.map +1 -0
- package/dist/ir/type-converter/clr-type-resolver.js +120 -0
- package/dist/ir/type-converter/clr-type-resolver.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 +104 -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 +81 -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 +51 -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 +69 -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 +111 -0
- package/dist/program/bindings.d.ts.map +1 -0
- package/dist/program/bindings.js +167 -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 +180 -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 +166 -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 +35 -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/dotnet-import-resolver.d.ts +74 -0
- package/dist/resolver/dotnet-import-resolver.d.ts.map +1 -0
- package/dist/resolver/dotnet-import-resolver.js +183 -0
- package/dist/resolver/dotnet-import-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/dist/resolver/index.d.ts +10 -0
- 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 +144 -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 +50 -0
- package/dist/types/support-types.test.js.map +1 -0
- package/dist/types/test-debug.d.ts.map +1 -0
- package/dist/types/test-debug.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/aot-safety.d.ts +24 -0
- package/dist/validation/aot-safety.d.ts.map +1 -0
- package/dist/validation/aot-safety.js +114 -0
- package/dist/validation/aot-safety.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 +340 -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/index.ts +0 -18
- 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,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nested Types Handling - Parse and transform nested type names.
|
|
3
|
+
*
|
|
4
|
+
* C# supports nested types (types inside types). TypeScript doesn't have true nested
|
|
5
|
+
* type syntax, so tsbindgen flattens them using a dollar sign separator:
|
|
6
|
+
*
|
|
7
|
+
* CLR: Outer+Nested (reflection uses +)
|
|
8
|
+
* TypeScript: Outer$Nested ($ separator)
|
|
9
|
+
* C#: Outer.Nested (dot in source code)
|
|
10
|
+
*
|
|
11
|
+
* @see spec/nested-types.md for complete documentation
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Information about a nested type name.
|
|
15
|
+
*/
|
|
16
|
+
export type NestedTypeInfo = {
|
|
17
|
+
readonly isNested: boolean;
|
|
18
|
+
readonly outerType: string;
|
|
19
|
+
readonly nestedType: string;
|
|
20
|
+
readonly fullPath: readonly string[];
|
|
21
|
+
readonly depth: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Parse a TypeScript type name to check if it represents a nested type.
|
|
25
|
+
*
|
|
26
|
+
* @param tsEmitName - TypeScript emit name (e.g., "List_1$Enumerator")
|
|
27
|
+
* @returns Nested type info if nested, undefined if not nested
|
|
28
|
+
*/
|
|
29
|
+
export declare const parseNestedTypeName: (tsEmitName: string) => NestedTypeInfo | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a TypeScript emit name represents a nested type.
|
|
32
|
+
*
|
|
33
|
+
* @param tsEmitName - TypeScript emit name
|
|
34
|
+
* @returns True if nested type
|
|
35
|
+
*/
|
|
36
|
+
export declare const isNestedType: (tsEmitName: string) => boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Convert TypeScript nested type name to C# nested type name.
|
|
39
|
+
*
|
|
40
|
+
* TypeScript: List_1$Enumerator
|
|
41
|
+
* C#: List<T>.Enumerator
|
|
42
|
+
*
|
|
43
|
+
* Note: This only converts the separator ($ → .). Generic arity substitution
|
|
44
|
+
* (_1 → <T>) is handled separately by generic type processing.
|
|
45
|
+
*
|
|
46
|
+
* @param tsEmitName - TypeScript emit name with $ separator
|
|
47
|
+
* @returns C# name with dot separator (generic arity not substituted)
|
|
48
|
+
*/
|
|
49
|
+
export declare const tsCSharpNestedTypeName: (tsEmitName: string) => string;
|
|
50
|
+
/**
|
|
51
|
+
* Convert CLR reflection name to TypeScript emit name.
|
|
52
|
+
*
|
|
53
|
+
* CLR uses + for nested types (reflection metadata).
|
|
54
|
+
* TypeScript uses $.
|
|
55
|
+
*
|
|
56
|
+
* CLR: List`1+Enumerator
|
|
57
|
+
* TypeScript: List_1$Enumerator
|
|
58
|
+
*
|
|
59
|
+
* @param clrName - CLR reflection name with + separator and ` for generics
|
|
60
|
+
* @returns TypeScript emit name with $ separator and _ for generics
|
|
61
|
+
*/
|
|
62
|
+
export declare const clrToTsNestedTypeName: (clrName: string) => string;
|
|
63
|
+
/**
|
|
64
|
+
* Convert TypeScript emit name to CLR reflection name.
|
|
65
|
+
*
|
|
66
|
+
* Reverse of clrToTsNestedTypeName.
|
|
67
|
+
*
|
|
68
|
+
* TypeScript: List_1$Enumerator
|
|
69
|
+
* CLR: List`1+Enumerator
|
|
70
|
+
*
|
|
71
|
+
* @param tsEmitName - TypeScript emit name
|
|
72
|
+
* @returns CLR reflection name
|
|
73
|
+
*/
|
|
74
|
+
export declare const tsToCLRNestedTypeName: (tsEmitName: string) => string;
|
|
75
|
+
/**
|
|
76
|
+
* Get all nesting levels from a nested type name.
|
|
77
|
+
*
|
|
78
|
+
* @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
|
|
79
|
+
* @returns Array of type names at each level ["A", "A$B", "A$B$C"]
|
|
80
|
+
*/
|
|
81
|
+
export declare const getNestedTypeLevels: (tsEmitName: string) => readonly string[];
|
|
82
|
+
/**
|
|
83
|
+
* Get the outermost type name from a nested type.
|
|
84
|
+
*
|
|
85
|
+
* @param tsEmitName - TypeScript emit name (e.g., "List_1$Enumerator")
|
|
86
|
+
* @returns Outermost type name (e.g., "List_1")
|
|
87
|
+
*/
|
|
88
|
+
export declare const getOutermostType: (tsEmitName: string) => string;
|
|
89
|
+
/**
|
|
90
|
+
* Get the innermost type name from a nested type.
|
|
91
|
+
*
|
|
92
|
+
* @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
|
|
93
|
+
* @returns Innermost type name (e.g., "C")
|
|
94
|
+
*/
|
|
95
|
+
export declare const getInnermostType: (tsEmitName: string) => string;
|
|
96
|
+
/**
|
|
97
|
+
* Check if one type is nested inside another.
|
|
98
|
+
*
|
|
99
|
+
* @param innerType - Potentially nested type (e.g., "List_1$Enumerator")
|
|
100
|
+
* @param outerType - Potentially containing type (e.g., "List_1")
|
|
101
|
+
* @returns True if innerType is nested inside outerType
|
|
102
|
+
*/
|
|
103
|
+
export declare const isNestedInside: (innerType: string, outerType: string) => boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Get parent type name from a nested type.
|
|
106
|
+
*
|
|
107
|
+
* @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
|
|
108
|
+
* @returns Parent type name (e.g., "A$B"), or undefined if not nested
|
|
109
|
+
*/
|
|
110
|
+
export declare const getParentType: (tsEmitName: string) => string | undefined;
|
|
111
|
+
//# sourceMappingURL=nested-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nested-types.d.ts","sourceRoot":"","sources":["../../src/types/nested-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,KACjB,cAAc,GAAG,SA0BnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,YAAY,MAAM,KAAG,OAEjD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GAAI,YAAY,MAAM,KAAG,MAE3D,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,MAQvD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,MAAM,KAAG,MAW1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,KAAG,SAAS,MAAM,EAavE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,MAMrD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,MAIrD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,WAAW,MAAM,KAChB,OAMF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,YAAY,MAAM,KAAG,MAAM,GAAG,SAW3D,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nested Types Handling - Parse and transform nested type names.
|
|
3
|
+
*
|
|
4
|
+
* C# supports nested types (types inside types). TypeScript doesn't have true nested
|
|
5
|
+
* type syntax, so tsbindgen flattens them using a dollar sign separator:
|
|
6
|
+
*
|
|
7
|
+
* CLR: Outer+Nested (reflection uses +)
|
|
8
|
+
* TypeScript: Outer$Nested ($ separator)
|
|
9
|
+
* C#: Outer.Nested (dot in source code)
|
|
10
|
+
*
|
|
11
|
+
* @see spec/nested-types.md for complete documentation
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Parse a TypeScript type name to check if it represents a nested type.
|
|
15
|
+
*
|
|
16
|
+
* @param tsEmitName - TypeScript emit name (e.g., "List_1$Enumerator")
|
|
17
|
+
* @returns Nested type info if nested, undefined if not nested
|
|
18
|
+
*/
|
|
19
|
+
export const parseNestedTypeName = (tsEmitName) => {
|
|
20
|
+
// Check if name contains $ separator
|
|
21
|
+
if (!tsEmitName.includes("$")) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
// Split on $ to get nesting path
|
|
25
|
+
const parts = tsEmitName.split("$");
|
|
26
|
+
if (parts.length < 2) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const outerType = parts[0];
|
|
30
|
+
const nestedType = parts[parts.length - 1];
|
|
31
|
+
if (!outerType || !nestedType) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
isNested: true,
|
|
36
|
+
outerType,
|
|
37
|
+
nestedType,
|
|
38
|
+
fullPath: parts,
|
|
39
|
+
depth: parts.length - 1,
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Check if a TypeScript emit name represents a nested type.
|
|
44
|
+
*
|
|
45
|
+
* @param tsEmitName - TypeScript emit name
|
|
46
|
+
* @returns True if nested type
|
|
47
|
+
*/
|
|
48
|
+
export const isNestedType = (tsEmitName) => {
|
|
49
|
+
return tsEmitName.includes("$");
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Convert TypeScript nested type name to C# nested type name.
|
|
53
|
+
*
|
|
54
|
+
* TypeScript: List_1$Enumerator
|
|
55
|
+
* C#: List<T>.Enumerator
|
|
56
|
+
*
|
|
57
|
+
* Note: This only converts the separator ($ → .). Generic arity substitution
|
|
58
|
+
* (_1 → <T>) is handled separately by generic type processing.
|
|
59
|
+
*
|
|
60
|
+
* @param tsEmitName - TypeScript emit name with $ separator
|
|
61
|
+
* @returns C# name with dot separator (generic arity not substituted)
|
|
62
|
+
*/
|
|
63
|
+
export const tsCSharpNestedTypeName = (tsEmitName) => {
|
|
64
|
+
return tsEmitName.replace(/\$/g, ".");
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Convert CLR reflection name to TypeScript emit name.
|
|
68
|
+
*
|
|
69
|
+
* CLR uses + for nested types (reflection metadata).
|
|
70
|
+
* TypeScript uses $.
|
|
71
|
+
*
|
|
72
|
+
* CLR: List`1+Enumerator
|
|
73
|
+
* TypeScript: List_1$Enumerator
|
|
74
|
+
*
|
|
75
|
+
* @param clrName - CLR reflection name with + separator and ` for generics
|
|
76
|
+
* @returns TypeScript emit name with $ separator and _ for generics
|
|
77
|
+
*/
|
|
78
|
+
export const clrToTsNestedTypeName = (clrName) => {
|
|
79
|
+
// First replace backticks with underscores for generic arity
|
|
80
|
+
let tsName = clrName.replace(/`/g, "_");
|
|
81
|
+
// Then replace plus signs with dollar signs for nesting
|
|
82
|
+
tsName = tsName.replace(/\+/g, "$");
|
|
83
|
+
return tsName;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Convert TypeScript emit name to CLR reflection name.
|
|
87
|
+
*
|
|
88
|
+
* Reverse of clrToTsNestedTypeName.
|
|
89
|
+
*
|
|
90
|
+
* TypeScript: List_1$Enumerator
|
|
91
|
+
* CLR: List`1+Enumerator
|
|
92
|
+
*
|
|
93
|
+
* @param tsEmitName - TypeScript emit name
|
|
94
|
+
* @returns CLR reflection name
|
|
95
|
+
*/
|
|
96
|
+
export const tsToCLRNestedTypeName = (tsEmitName) => {
|
|
97
|
+
// Replace dollar signs with plus signs for nesting
|
|
98
|
+
let clrName = tsEmitName.replace(/\$/g, "+");
|
|
99
|
+
// Replace underscores with backticks for generic arity
|
|
100
|
+
// Note: This is a simple replacement. In practice, we need to be careful
|
|
101
|
+
// not to replace underscores that are part of the actual type name.
|
|
102
|
+
// For now, we assume _N pattern at end of each segment indicates arity.
|
|
103
|
+
clrName = clrName.replace(/_(\d+)/g, "`$1");
|
|
104
|
+
return clrName;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Get all nesting levels from a nested type name.
|
|
108
|
+
*
|
|
109
|
+
* @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
|
|
110
|
+
* @returns Array of type names at each level ["A", "A$B", "A$B$C"]
|
|
111
|
+
*/
|
|
112
|
+
export const getNestedTypeLevels = (tsEmitName) => {
|
|
113
|
+
if (!isNestedType(tsEmitName)) {
|
|
114
|
+
return [tsEmitName];
|
|
115
|
+
}
|
|
116
|
+
const parts = tsEmitName.split("$");
|
|
117
|
+
const levels = [];
|
|
118
|
+
for (let i = 0; i < parts.length; i++) {
|
|
119
|
+
levels.push(parts.slice(0, i + 1).join("$"));
|
|
120
|
+
}
|
|
121
|
+
return levels;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Get the outermost type name from a nested type.
|
|
125
|
+
*
|
|
126
|
+
* @param tsEmitName - TypeScript emit name (e.g., "List_1$Enumerator")
|
|
127
|
+
* @returns Outermost type name (e.g., "List_1")
|
|
128
|
+
*/
|
|
129
|
+
export const getOutermostType = (tsEmitName) => {
|
|
130
|
+
const dollarIndex = tsEmitName.indexOf("$");
|
|
131
|
+
if (dollarIndex === -1) {
|
|
132
|
+
return tsEmitName;
|
|
133
|
+
}
|
|
134
|
+
return tsEmitName.substring(0, dollarIndex);
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Get the innermost type name from a nested type.
|
|
138
|
+
*
|
|
139
|
+
* @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
|
|
140
|
+
* @returns Innermost type name (e.g., "C")
|
|
141
|
+
*/
|
|
142
|
+
export const getInnermostType = (tsEmitName) => {
|
|
143
|
+
const parts = tsEmitName.split("$");
|
|
144
|
+
const innermost = parts[parts.length - 1];
|
|
145
|
+
return innermost || tsEmitName;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Check if one type is nested inside another.
|
|
149
|
+
*
|
|
150
|
+
* @param innerType - Potentially nested type (e.g., "List_1$Enumerator")
|
|
151
|
+
* @param outerType - Potentially containing type (e.g., "List_1")
|
|
152
|
+
* @returns True if innerType is nested inside outerType
|
|
153
|
+
*/
|
|
154
|
+
export const isNestedInside = (innerType, outerType) => {
|
|
155
|
+
if (!isNestedType(innerType)) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
return innerType.startsWith(outerType + "$");
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Get parent type name from a nested type.
|
|
162
|
+
*
|
|
163
|
+
* @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
|
|
164
|
+
* @returns Parent type name (e.g., "A$B"), or undefined if not nested
|
|
165
|
+
*/
|
|
166
|
+
export const getParentType = (tsEmitName) => {
|
|
167
|
+
const info = parseNestedTypeName(tsEmitName);
|
|
168
|
+
if (!info) {
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
171
|
+
if (info.fullPath.length < 2) {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
return info.fullPath.slice(0, -1).join("$");
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=nested-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nested-types.js","sourceRoot":"","sources":["../../src/types/nested-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nested-types.test.d.ts","sourceRoot":"","sources":["../../src/types/nested-types.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for nested types handling
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it } from "mocha";
|
|
5
|
+
import { strict as assert } from "assert";
|
|
6
|
+
import { parseNestedTypeName, isNestedType, tsCSharpNestedTypeName, clrToTsNestedTypeName, tsToCLRNestedTypeName, getNestedTypeLevels, getOutermostType, getInnermostType, isNestedInside, getParentType, } from "./nested-types.js";
|
|
7
|
+
describe("Nested Types", () => {
|
|
8
|
+
describe("isNestedType", () => {
|
|
9
|
+
it("should detect nested type with $ separator", () => {
|
|
10
|
+
assert.ok(isNestedType("List_1$Enumerator"));
|
|
11
|
+
});
|
|
12
|
+
it("should return false for non-nested type", () => {
|
|
13
|
+
assert.ok(!isNestedType("List_1"));
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
describe("parseNestedTypeName", () => {
|
|
17
|
+
it("should parse simple nested type", () => {
|
|
18
|
+
const info = parseNestedTypeName("List_1$Enumerator");
|
|
19
|
+
assert.ok(info);
|
|
20
|
+
assert.equal(info?.outerType, "List_1");
|
|
21
|
+
assert.equal(info?.nestedType, "Enumerator");
|
|
22
|
+
assert.equal(info?.depth, 1);
|
|
23
|
+
assert.deepEqual(info?.fullPath, ["List_1", "Enumerator"]);
|
|
24
|
+
});
|
|
25
|
+
it("should parse multiple nesting levels", () => {
|
|
26
|
+
const info = parseNestedTypeName("A$B$C");
|
|
27
|
+
assert.ok(info);
|
|
28
|
+
assert.equal(info?.outerType, "A");
|
|
29
|
+
assert.equal(info?.nestedType, "C");
|
|
30
|
+
assert.equal(info?.depth, 2);
|
|
31
|
+
assert.deepEqual(info?.fullPath, ["A", "B", "C"]);
|
|
32
|
+
});
|
|
33
|
+
it("should return undefined for non-nested type", () => {
|
|
34
|
+
const info = parseNestedTypeName("SimpleType");
|
|
35
|
+
assert.equal(info, undefined);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe("tsCSharpNestedTypeName", () => {
|
|
39
|
+
it("should convert $ to . separator", () => {
|
|
40
|
+
const result = tsCSharpNestedTypeName("List_1$Enumerator");
|
|
41
|
+
assert.equal(result, "List_1.Enumerator");
|
|
42
|
+
});
|
|
43
|
+
it("should handle multiple levels", () => {
|
|
44
|
+
const result = tsCSharpNestedTypeName("A$B$C");
|
|
45
|
+
assert.equal(result, "A.B.C");
|
|
46
|
+
});
|
|
47
|
+
it("should leave non-nested types unchanged", () => {
|
|
48
|
+
const result = tsCSharpNestedTypeName("SimpleType");
|
|
49
|
+
assert.equal(result, "SimpleType");
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("clrToTsNestedTypeName", () => {
|
|
53
|
+
it("should convert CLR name to TypeScript", () => {
|
|
54
|
+
const result = clrToTsNestedTypeName("List`1+Enumerator");
|
|
55
|
+
assert.equal(result, "List_1$Enumerator");
|
|
56
|
+
});
|
|
57
|
+
it("should handle multiple levels", () => {
|
|
58
|
+
const result = clrToTsNestedTypeName("A+B+C");
|
|
59
|
+
assert.equal(result, "A$B$C");
|
|
60
|
+
});
|
|
61
|
+
it("should handle generic nested types", () => {
|
|
62
|
+
const result = clrToTsNestedTypeName("Dictionary`2+KeyCollection`1");
|
|
63
|
+
assert.equal(result, "Dictionary_2$KeyCollection_1");
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe("tsToCLRNestedTypeName", () => {
|
|
67
|
+
it("should convert TypeScript name to CLR", () => {
|
|
68
|
+
const result = tsToCLRNestedTypeName("List_1$Enumerator");
|
|
69
|
+
assert.equal(result, "List`1+Enumerator");
|
|
70
|
+
});
|
|
71
|
+
it("should handle multiple levels", () => {
|
|
72
|
+
const result = tsToCLRNestedTypeName("A$B$C");
|
|
73
|
+
assert.equal(result, "A+B+C");
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe("getNestedTypeLevels", () => {
|
|
77
|
+
it("should return all nesting levels", () => {
|
|
78
|
+
const levels = getNestedTypeLevels("A$B$C");
|
|
79
|
+
assert.deepEqual(levels, ["A", "A$B", "A$B$C"]);
|
|
80
|
+
});
|
|
81
|
+
it("should return single level for non-nested type", () => {
|
|
82
|
+
const levels = getNestedTypeLevels("SimpleType");
|
|
83
|
+
assert.deepEqual(levels, ["SimpleType"]);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe("getOutermostType", () => {
|
|
87
|
+
it("should return outermost type", () => {
|
|
88
|
+
const outermost = getOutermostType("List_1$Enumerator");
|
|
89
|
+
assert.equal(outermost, "List_1");
|
|
90
|
+
});
|
|
91
|
+
it("should return same type for non-nested", () => {
|
|
92
|
+
const outermost = getOutermostType("SimpleType");
|
|
93
|
+
assert.equal(outermost, "SimpleType");
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe("getInnermostType", () => {
|
|
97
|
+
it("should return innermost type", () => {
|
|
98
|
+
const innermost = getInnermostType("A$B$C");
|
|
99
|
+
assert.equal(innermost, "C");
|
|
100
|
+
});
|
|
101
|
+
it("should return same type for non-nested", () => {
|
|
102
|
+
const innermost = getInnermostType("SimpleType");
|
|
103
|
+
assert.equal(innermost, "SimpleType");
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe("isNestedInside", () => {
|
|
107
|
+
it("should detect type nested inside another", () => {
|
|
108
|
+
const result = isNestedInside("List_1$Enumerator", "List_1");
|
|
109
|
+
assert.ok(result);
|
|
110
|
+
});
|
|
111
|
+
it("should return false for unrelated types", () => {
|
|
112
|
+
const result = isNestedInside("Dictionary_2$KeyCollection", "List_1");
|
|
113
|
+
assert.ok(!result);
|
|
114
|
+
});
|
|
115
|
+
it("should return false for non-nested type", () => {
|
|
116
|
+
const result = isNestedInside("SimpleType", "List_1");
|
|
117
|
+
assert.ok(!result);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe("getParentType", () => {
|
|
121
|
+
it("should return parent type", () => {
|
|
122
|
+
const parent = getParentType("A$B$C");
|
|
123
|
+
assert.equal(parent, "A$B");
|
|
124
|
+
});
|
|
125
|
+
it("should return parent for single nesting", () => {
|
|
126
|
+
const parent = getParentType("List_1$Enumerator");
|
|
127
|
+
assert.equal(parent, "List_1");
|
|
128
|
+
});
|
|
129
|
+
it("should return undefined for non-nested type", () => {
|
|
130
|
+
const parent = getParentType("SimpleType");
|
|
131
|
+
assert.equal(parent, undefined);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=nested-types.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nested-types.test.js","sourceRoot":"","sources":["../../src/types/nested-types.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parameter Modifier Tracking - Track ref/out/in types from @tsonic/types
|
|
3
|
+
*
|
|
4
|
+
* This module tracks which ref, out, and In types are legitimately imported
|
|
5
|
+
* from @tsonic/types to ensure we only apply parameter modifiers to the
|
|
6
|
+
* correct types (not user-defined types with the same names).
|
|
7
|
+
*/
|
|
8
|
+
import * as ts from "typescript";
|
|
9
|
+
/**
|
|
10
|
+
* Registry for tracking trusted parameter modifier types
|
|
11
|
+
*/
|
|
12
|
+
export declare class ParameterModifierRegistry {
|
|
13
|
+
private static instance;
|
|
14
|
+
private trustedSymbols;
|
|
15
|
+
private aliasMap;
|
|
16
|
+
private constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Get singleton instance
|
|
19
|
+
*/
|
|
20
|
+
static getInstance(): ParameterModifierRegistry;
|
|
21
|
+
/**
|
|
22
|
+
* Reset the registry (useful for testing)
|
|
23
|
+
*/
|
|
24
|
+
static reset(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Process an import declaration to track ref/out/In from @tsonic/types
|
|
27
|
+
*/
|
|
28
|
+
processImport(importDecl: ts.ImportDeclaration): void;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a type name is a trusted parameter modifier type
|
|
31
|
+
*/
|
|
32
|
+
isTrustedParameterModifier(typeName: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Get the parameter modifier kind for a trusted type
|
|
35
|
+
* @returns 'ref', 'out', 'in', or null if not a parameter modifier
|
|
36
|
+
*/
|
|
37
|
+
getParameterModifierKind(typeName: string): "ref" | "out" | "in" | null;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a TypeScript type is a parameter modifier type from @tsonic/types
|
|
40
|
+
* This checks both the type name and verifies it was imported from @tsonic/types
|
|
41
|
+
*/
|
|
42
|
+
isParameterModifierType(type: ts.Type, _checker: ts.TypeChecker): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get parameter modifier info from a type
|
|
45
|
+
*/
|
|
46
|
+
getParameterModifierInfo(type: ts.Type, _checker: ts.TypeChecker): {
|
|
47
|
+
kind: "ref" | "out" | "in";
|
|
48
|
+
wrappedType: ts.Type;
|
|
49
|
+
} | null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get the global parameter modifier registry instance
|
|
53
|
+
*/
|
|
54
|
+
export declare const getParameterModifierRegistry: () => ParameterModifierRegistry;
|
|
55
|
+
//# sourceMappingURL=parameter-modifiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-modifiers.d.ts","sourceRoot":"","sources":["../../src/types/parameter-modifiers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0C;IAGjE,OAAO,CAAC,cAAc,CAAqB;IAG3C,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,yBAAyB;IAO/C;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,iBAAiB,GAAG,IAAI;IAoCrD;;OAEG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrD;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI;IAoBvE;;;OAGG;IACH,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,GAAG,OAAO;IAWzE;;OAEG;IACH,wBAAwB,CACtB,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,EAAE,CAAC,WAAW,GACvB;QAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAA;KAAE,GAAG,IAAI;CA8B/D;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,yBAE/C,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parameter Modifier Tracking - Track ref/out/in types from @tsonic/types
|
|
3
|
+
*
|
|
4
|
+
* This module tracks which ref, out, and In types are legitimately imported
|
|
5
|
+
* from @tsonic/types to ensure we only apply parameter modifiers to the
|
|
6
|
+
* correct types (not user-defined types with the same names).
|
|
7
|
+
*/
|
|
8
|
+
import * as ts from "typescript";
|
|
9
|
+
/**
|
|
10
|
+
* Registry for tracking trusted parameter modifier types
|
|
11
|
+
*/
|
|
12
|
+
export class ParameterModifierRegistry {
|
|
13
|
+
constructor() {
|
|
14
|
+
// Track which symbols are imported from @tsonic/types
|
|
15
|
+
this.trustedSymbols = new Set();
|
|
16
|
+
// Track aliases (e.g., import { ref as myRef })
|
|
17
|
+
this.aliasMap = new Map();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get singleton instance
|
|
21
|
+
*/
|
|
22
|
+
static getInstance() {
|
|
23
|
+
if (!ParameterModifierRegistry.instance) {
|
|
24
|
+
ParameterModifierRegistry.instance = new ParameterModifierRegistry();
|
|
25
|
+
}
|
|
26
|
+
return ParameterModifierRegistry.instance;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Reset the registry (useful for testing)
|
|
30
|
+
*/
|
|
31
|
+
static reset() {
|
|
32
|
+
if (ParameterModifierRegistry.instance) {
|
|
33
|
+
ParameterModifierRegistry.instance.trustedSymbols.clear();
|
|
34
|
+
ParameterModifierRegistry.instance.aliasMap.clear();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Process an import declaration to track ref/out/In from @tsonic/types
|
|
39
|
+
*/
|
|
40
|
+
processImport(importDecl) {
|
|
41
|
+
// Check if this is an import from @tsonic/types
|
|
42
|
+
if (!ts.isStringLiteral(importDecl.moduleSpecifier)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const moduleSpecifier = importDecl.moduleSpecifier.text;
|
|
46
|
+
if (moduleSpecifier !== "@tsonic/types") {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Extract named imports
|
|
50
|
+
if (importDecl.importClause?.namedBindings) {
|
|
51
|
+
if (ts.isNamedImports(importDecl.importClause.namedBindings)) {
|
|
52
|
+
for (const spec of importDecl.importClause.namedBindings.elements) {
|
|
53
|
+
const importedName = (spec.propertyName ?? spec.name).text;
|
|
54
|
+
const localName = spec.name.text;
|
|
55
|
+
// Check if this is ref, out, or In
|
|
56
|
+
if (importedName === "ref" ||
|
|
57
|
+
importedName === "out" ||
|
|
58
|
+
importedName === "In") {
|
|
59
|
+
this.trustedSymbols.add(localName);
|
|
60
|
+
// Track alias if different from imported name
|
|
61
|
+
if (importedName !== localName) {
|
|
62
|
+
this.aliasMap.set(localName, importedName);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check if a type name is a trusted parameter modifier type
|
|
71
|
+
*/
|
|
72
|
+
isTrustedParameterModifier(typeName) {
|
|
73
|
+
return this.trustedSymbols.has(typeName);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the parameter modifier kind for a trusted type
|
|
77
|
+
* @returns 'ref', 'out', 'in', or null if not a parameter modifier
|
|
78
|
+
*/
|
|
79
|
+
getParameterModifierKind(typeName) {
|
|
80
|
+
if (!this.isTrustedParameterModifier(typeName)) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
// Check if it's an alias
|
|
84
|
+
const originalName = this.aliasMap.get(typeName) ?? typeName;
|
|
85
|
+
switch (originalName) {
|
|
86
|
+
case "ref":
|
|
87
|
+
return "ref";
|
|
88
|
+
case "out":
|
|
89
|
+
return "out";
|
|
90
|
+
case "In":
|
|
91
|
+
return "in";
|
|
92
|
+
default:
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if a TypeScript type is a parameter modifier type from @tsonic/types
|
|
98
|
+
* This checks both the type name and verifies it was imported from @tsonic/types
|
|
99
|
+
*/
|
|
100
|
+
isParameterModifierType(type, _checker) {
|
|
101
|
+
// Get the symbol name
|
|
102
|
+
const symbol = type.aliasSymbol || type.symbol;
|
|
103
|
+
if (!symbol) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
const typeName = symbol.getName();
|
|
107
|
+
return this.isTrustedParameterModifier(typeName);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get parameter modifier info from a type
|
|
111
|
+
*/
|
|
112
|
+
getParameterModifierInfo(type, _checker) {
|
|
113
|
+
const symbol = type.aliasSymbol || type.symbol;
|
|
114
|
+
if (!symbol) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const typeName = symbol.getName();
|
|
118
|
+
const kind = this.getParameterModifierKind(typeName);
|
|
119
|
+
if (!kind) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
// Extract the wrapped type (T in ref<T>, out<T>, or In<T>)
|
|
123
|
+
let wrappedType;
|
|
124
|
+
if (type.aliasTypeArguments && type.aliasTypeArguments.length > 0) {
|
|
125
|
+
wrappedType = type.aliasTypeArguments[0];
|
|
126
|
+
}
|
|
127
|
+
else if (type.typeArguments &&
|
|
128
|
+
type.typeArguments.length > 0) {
|
|
129
|
+
wrappedType = type.typeArguments[0];
|
|
130
|
+
}
|
|
131
|
+
if (!wrappedType) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
return { kind, wrappedType };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
ParameterModifierRegistry.instance = null;
|
|
138
|
+
/**
|
|
139
|
+
* Get the global parameter modifier registry instance
|
|
140
|
+
*/
|
|
141
|
+
export const getParameterModifierRegistry = () => {
|
|
142
|
+
return ParameterModifierRegistry.getInstance();
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=parameter-modifiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-modifiers.js","sourceRoot":"","sources":["../../src/types/parameter-modifiers.ts"],"names":[],"mappings":"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"}
|