@tsonic/frontend 0.0.13 → 0.0.15
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 -1
- package/dist/graph/builder.js +2 -2
- package/dist/graph/builder.js.map +1 -1
- package/dist/graph/extraction/imports.js +1 -1
- package/dist/graph/extraction/imports.js.map +1 -1
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
- package/dist/graph/extraction/orchestrator.js +1 -1
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/ir/binding/index.d.ts +134 -0
- package/dist/ir/binding/index.d.ts.map +1 -0
- package/dist/ir/binding/index.js +725 -0
- package/dist/ir/binding/index.js.map +1 -0
- package/dist/ir/binding-resolution.test.js +193 -52
- package/dist/ir/binding-resolution.test.js.map +1 -1
- package/dist/ir/builder/exports.d.ts +20 -2
- package/dist/ir/builder/exports.d.ts.map +1 -1
- package/dist/ir/builder/exports.js +65 -6
- package/dist/ir/builder/exports.js.map +1 -1
- package/dist/ir/builder/imports.d.ts +9 -5
- package/dist/ir/builder/imports.d.ts.map +1 -1
- package/dist/ir/builder/imports.js +20 -31
- package/dist/ir/builder/imports.js.map +1 -1
- package/dist/ir/builder/orchestrator.d.ts +10 -1
- package/dist/ir/builder/orchestrator.d.ts.map +1 -1
- package/dist/ir/builder/orchestrator.js +25 -14
- package/dist/ir/builder/orchestrator.js.map +1 -1
- package/dist/ir/builder/statements.d.ts +7 -1
- package/dist/ir/builder/statements.d.ts.map +1 -1
- package/dist/ir/builder/statements.js +7 -2
- package/dist/ir/builder/statements.js.map +1 -1
- package/dist/ir/builder/types.d.ts +3 -0
- package/dist/ir/builder/types.d.ts.map +1 -1
- package/dist/ir/builder/validation.d.ts +4 -1
- package/dist/ir/builder/validation.d.ts.map +1 -1
- package/dist/ir/builder/validation.js +37 -37
- package/dist/ir/builder/validation.js.map +1 -1
- package/dist/ir/builder.test.js +54 -111
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/clr-type-mappings.d.ts +42 -0
- package/dist/ir/clr-type-mappings.d.ts.map +1 -0
- package/dist/ir/clr-type-mappings.js +139 -0
- package/dist/ir/clr-type-mappings.js.map +1 -0
- package/dist/ir/converters/anonymous-synthesis.d.ts +30 -8
- package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.js +46 -55
- package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
- package/dist/ir/converters/context.d.ts +40 -0
- package/dist/ir/converters/context.d.ts.map +1 -0
- package/dist/ir/converters/context.js +24 -0
- package/dist/ir/converters/context.js.map +1 -0
- package/dist/ir/converters/expressions/access.d.ts +6 -1
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +239 -15
- package/dist/ir/converters/expressions/access.js.map +1 -1
- package/dist/ir/converters/expressions/calls.d.ts +24 -3
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
- package/dist/ir/converters/expressions/calls.js +450 -385
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/collections.d.ts +16 -3
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
- package/dist/ir/converters/expressions/collections.js +300 -46
- package/dist/ir/converters/expressions/collections.js.map +1 -1
- package/dist/ir/converters/expressions/functions.d.ts +10 -3
- package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
- package/dist/ir/converters/expressions/functions.js +140 -32
- package/dist/ir/converters/expressions/functions.js.map +1 -1
- package/dist/ir/converters/expressions/helpers.d.ts +22 -23
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
- package/dist/ir/converters/expressions/helpers.js +242 -239
- package/dist/ir/converters/expressions/helpers.js.map +1 -1
- package/dist/ir/converters/expressions/index.d.ts +1 -1
- package/dist/ir/converters/expressions/index.d.ts.map +1 -1
- package/dist/ir/converters/expressions/index.js +1 -1
- package/dist/ir/converters/expressions/index.js.map +1 -1
- package/dist/ir/converters/expressions/literals.d.ts +12 -12
- package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
- package/dist/ir/converters/expressions/literals.js +62 -17
- package/dist/ir/converters/expressions/literals.js.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +5 -2
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.js +62 -49
- package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
- package/dist/ir/converters/expressions/operators.d.ts +13 -4
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
- package/dist/ir/converters/expressions/operators.js +179 -33
- package/dist/ir/converters/expressions/operators.js.map +1 -1
- package/dist/ir/converters/expressions/other.d.ts +11 -3
- package/dist/ir/converters/expressions/other.d.ts.map +1 -1
- package/dist/ir/converters/expressions/other.js +26 -10
- package/dist/ir/converters/expressions/other.js.map +1 -1
- package/dist/ir/converters/statements/control/blocks.d.ts +8 -2
- package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/blocks.js +7 -2
- package/dist/ir/converters/statements/control/blocks.js.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.d.ts +14 -4
- package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.js +19 -10
- package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
- package/dist/ir/converters/statements/control/exceptions.d.ts +10 -3
- package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/exceptions.js +13 -7
- package/dist/ir/converters/statements/control/exceptions.js.map +1 -1
- package/dist/ir/converters/statements/control/loops.d.ts +16 -5
- package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/loops.js +25 -15
- package/dist/ir/converters/statements/control/loops.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +3 -2
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.js +11 -7
- package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.js +63 -11
- package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js +60 -40
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +6 -2
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.js +49 -50
- package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts +9 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.js +119 -16
- package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
- package/dist/ir/converters/statements/declarations/enums.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/enums.js +8 -2
- package/dist/ir/converters/statements/declarations/enums.js.map +1 -1
- package/dist/ir/converters/statements/declarations/functions.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/functions.js +11 -6
- package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
- package/dist/ir/converters/statements/declarations/index.d.ts +3 -1
- package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/index.js +3 -1
- package/dist/ir/converters/statements/declarations/index.js.map +1 -1
- package/dist/ir/converters/statements/declarations/interfaces.d.ts +3 -2
- package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/interfaces.js +26 -20
- package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
- package/dist/ir/converters/statements/declarations/registry.d.ts +72 -0
- package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/registry.js +92 -0
- package/dist/ir/converters/statements/declarations/registry.js.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.js +6 -4
- package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts +11 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.js +123 -19
- package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
- package/dist/ir/converters/statements/declarations.d.ts +4 -1
- package/dist/ir/converters/statements/declarations.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations.js +4 -1
- package/dist/ir/converters/statements/declarations.js.map +1 -1
- package/dist/ir/converters/statements/helpers.d.ts +4 -3
- package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
- package/dist/ir/converters/statements/helpers.js +55 -31
- package/dist/ir/converters/statements/helpers.js.map +1 -1
- package/dist/ir/converters/statements/index.d.ts +1 -1
- package/dist/ir/converters/statements/index.d.ts.map +1 -1
- package/dist/ir/converters/statements/index.js +2 -1
- package/dist/ir/converters/statements/index.js.map +1 -1
- package/dist/ir/expression-converter.d.ts +10 -3
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +150 -56
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/hierarchical-bindings-e2e.test.js +10 -6
- package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
- package/dist/ir/index.d.ts +5 -0
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js +5 -0
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/no-ts-type-inference.test.d.ts +17 -0
- package/dist/ir/no-ts-type-inference.test.d.ts.map +1 -0
- package/dist/ir/no-ts-type-inference.test.js +171 -0
- package/dist/ir/no-ts-type-inference.test.js.map +1 -0
- package/dist/ir/program-context.d.ts +74 -0
- package/dist/ir/program-context.d.ts.map +1 -0
- package/dist/ir/program-context.js +286 -0
- package/dist/ir/program-context.js.map +1 -0
- package/dist/ir/statement-converter.d.ts +14 -4
- package/dist/ir/statement-converter.d.ts.map +1 -1
- package/dist/ir/statement-converter.js +31 -21
- package/dist/ir/statement-converter.js.map +1 -1
- package/dist/ir/syntax/binding-patterns.d.ts +22 -0
- package/dist/ir/syntax/binding-patterns.d.ts.map +1 -0
- package/dist/ir/syntax/binding-patterns.js +92 -0
- package/dist/ir/syntax/binding-patterns.js.map +1 -0
- package/dist/ir/thisarg-inference.test.d.ts +8 -0
- package/dist/ir/thisarg-inference.test.d.ts.map +1 -0
- package/dist/ir/thisarg-inference.test.js +94 -0
- package/dist/ir/thisarg-inference.test.js.map +1 -0
- package/dist/ir/type-converter.d.ts +5 -2
- package/dist/ir/type-converter.d.ts.map +1 -1
- package/dist/ir/type-converter.js +5 -2
- package/dist/ir/type-converter.js.map +1 -1
- package/dist/ir/type-system/core.d.ts +29 -0
- package/dist/ir/type-system/core.d.ts.map +1 -0
- package/dist/ir/type-system/core.js +456 -0
- package/dist/ir/type-system/core.js.map +1 -0
- package/dist/ir/type-system/index.d.ts +21 -0
- package/dist/ir/type-system/index.d.ts.map +1 -0
- package/dist/ir/type-system/index.js +43 -0
- package/dist/ir/type-system/index.js.map +1 -0
- package/dist/ir/type-system/internal/handle-types.d.ts +98 -0
- package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/handle-types.js +13 -0
- package/dist/ir/type-system/internal/handle-types.js.map +1 -0
- package/dist/ir/type-system/internal/nominal-env.d.ts +66 -0
- package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -0
- package/dist/ir/type-system/internal/nominal-env.js +301 -0
- package/dist/ir/type-system/internal/nominal-env.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/arrays.d.ts +11 -0
- package/dist/ir/type-system/internal/type-converter/arrays.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/arrays.js +2 -2
- package/dist/ir/type-system/internal/type-converter/arrays.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/converter.d.ts +17 -0
- package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/converter.js +16 -0
- package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/functions.d.ts +14 -0
- package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/functions.js +66 -0
- package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/index.d.ts +11 -0
- package/dist/ir/type-system/internal/type-converter/index.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/index.js +11 -0
- package/dist/ir/type-system/internal/type-converter/index.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/inference.d.ts +37 -0
- package/dist/ir/type-system/internal/type-converter/inference.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/inference.js +32 -0
- package/dist/ir/type-system/internal/type-converter/inference.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.d.ts +1 -1
- package/dist/ir/type-system/internal/type-converter/literals.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/literals.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/objects.d.ts +20 -0
- package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/objects.js +56 -6
- package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.d.ts +3 -2
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.js +63 -21
- package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/patterns.d.ts +12 -0
- package/dist/ir/type-system/internal/type-converter/patterns.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/patterns.js +22 -6
- package/dist/ir/type-system/internal/type-converter/patterns.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.d.ts +1 -1
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/references.d.ts +3 -2
- package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/references.js +551 -0
- package/dist/ir/type-system/internal/type-converter/references.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts +15 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.js +22 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.d.ts +23 -36
- package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js +879 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.js +398 -120
- package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter.d.ts +9 -0
- package/dist/ir/type-system/internal/type-converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter.js +9 -0
- package/dist/ir/type-system/internal/type-converter.js.map +1 -0
- package/dist/ir/type-system/internal/type-registry.d.ts +107 -0
- package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-registry.js +534 -0
- package/dist/ir/type-system/internal/type-registry.js.map +1 -0
- package/dist/ir/type-system/internal/universe/alias-table.d.ts +92 -0
- package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/alias-table.js +222 -0
- package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +44 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.js +1176 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -0
- package/dist/ir/type-system/internal/universe/index.d.ts +26 -0
- package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/index.js +30 -0
- package/dist/ir/type-system/internal/universe/index.js.map +1 -0
- package/dist/ir/type-system/internal/universe/resolution.d.ts +115 -0
- package/dist/ir/type-system/internal/universe/resolution.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/resolution.js +181 -0
- package/dist/ir/type-system/internal/universe/resolution.js.map +1 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts +62 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/source-catalog.js +91 -0
- package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -0
- package/dist/ir/type-system/internal/universe/types.d.ts +436 -0
- package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/types.js +69 -0
- package/dist/ir/type-system/internal/universe/types.js.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts +70 -0
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.js +319 -0
- package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -0
- package/dist/ir/type-system/type-system.d.ts +617 -0
- package/dist/ir/type-system/type-system.d.ts.map +1 -0
- package/dist/ir/type-system/type-system.js +2420 -0
- package/dist/ir/type-system/type-system.js.map +1 -0
- package/dist/ir/type-system/types.d.ts +176 -0
- package/dist/ir/type-system/types.d.ts.map +1 -0
- package/dist/ir/type-system/types.js +80 -0
- package/dist/ir/type-system/types.js.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.d.ts +44 -0
- package/dist/ir/type-universe/assembly-catalog.d.ts.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.js +532 -0
- package/dist/ir/type-universe/assembly-catalog.js.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.test.d.ts +7 -0
- package/dist/ir/type-universe/assembly-catalog.test.d.ts.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.test.js +105 -0
- package/dist/ir/type-universe/assembly-catalog.test.js.map +1 -0
- package/dist/ir/type-universe/index.d.ts +19 -0
- package/dist/ir/type-universe/index.d.ts.map +1 -0
- package/dist/ir/type-universe/index.js +21 -0
- package/dist/ir/type-universe/index.js.map +1 -0
- package/dist/ir/type-universe/types.d.ts +436 -0
- package/dist/ir/type-universe/types.d.ts.map +1 -0
- package/dist/ir/type-universe/types.js +69 -0
- package/dist/ir/type-universe/types.js.map +1 -0
- package/dist/ir/type-universe/unified-catalog.d.ts +70 -0
- package/dist/ir/type-universe/unified-catalog.d.ts.map +1 -0
- package/dist/ir/type-universe/unified-catalog.js +319 -0
- package/dist/ir/type-universe/unified-catalog.js.map +1 -0
- package/dist/ir/type-universe/unified-catalog.test.d.ts +7 -0
- package/dist/ir/type-universe/unified-catalog.test.d.ts.map +1 -0
- package/dist/ir/type-universe/unified-catalog.test.js +135 -0
- package/dist/ir/type-universe/unified-catalog.test.js.map +1 -0
- package/dist/ir/types/expressions.d.ts +74 -2
- package/dist/ir/types/expressions.d.ts.map +1 -1
- package/dist/ir/types/helpers.d.ts +22 -2
- package/dist/ir/types/helpers.d.ts.map +1 -1
- package/dist/ir/types/index.d.ts +4 -2
- package/dist/ir/types/index.d.ts.map +1 -1
- package/dist/ir/types/index.js +1 -0
- package/dist/ir/types/index.js.map +1 -1
- package/dist/ir/types/ir-substitution.d.ts +144 -0
- package/dist/ir/types/ir-substitution.d.ts.map +1 -0
- package/dist/ir/types/ir-substitution.js +569 -0
- package/dist/ir/types/ir-substitution.js.map +1 -0
- package/dist/ir/types/ir-types.d.ts +9 -3
- package/dist/ir/types/ir-types.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.d.ts +2 -1
- package/dist/ir/types/numeric-helpers.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.js +9 -3
- package/dist/ir/types/numeric-helpers.js.map +1 -1
- package/dist/ir/types/statements.d.ts +13 -1
- package/dist/ir/types/statements.d.ts.map +1 -1
- package/dist/ir/types.d.ts +1 -1
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/ir/types.js.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.js +165 -7
- package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
- package/dist/ir/validation/arrow-return-finalization-pass.d.ts +28 -0
- package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -0
- package/dist/ir/validation/arrow-return-finalization-pass.js +416 -0
- package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.js +40 -6
- package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.test.js +43 -36
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
- package/dist/ir/validation/index.d.ts +3 -0
- package/dist/ir/validation/index.d.ts.map +1 -1
- package/dist/ir/validation/index.js +3 -0
- package/dist/ir/validation/index.js.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.d.ts +22 -16
- package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.js +159 -51
- package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
- package/dist/ir/validation/numeric-invariants.test.js +72 -108
- package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.js +71 -23
- package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
- package/dist/ir/validation/rest-type-synthesis-pass.d.ts +24 -0
- package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -0
- package/dist/ir/validation/rest-type-synthesis-pass.js +417 -0
- package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -0
- package/dist/ir/validation/soundness-gate.d.ts +11 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +42 -10
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/soundness-gate.test.js +19 -2
- package/dist/ir/validation/soundness-gate.test.js.map +1 -1
- package/dist/ir/validation/virtual-marking-pass.d.ts +16 -0
- package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -0
- package/dist/ir/validation/virtual-marking-pass.js +77 -0
- package/dist/ir/validation/virtual-marking-pass.js.map +1 -0
- package/dist/ir/validation/yield-lowering-pass.test.js +2 -2
- package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
- package/dist/program/bindings.d.ts +28 -0
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +204 -2
- package/dist/program/bindings.js.map +1 -1
- package/dist/program/bindings.test.js +30 -0
- package/dist/program/bindings.test.js.map +1 -1
- package/dist/program/creation.d.ts.map +1 -1
- package/dist/program/creation.js +251 -4
- package/dist/program/creation.js.map +1 -1
- package/dist/program/dependency-graph.d.ts.map +1 -1
- package/dist/program/dependency-graph.js +25 -25
- package/dist/program/dependency-graph.js.map +1 -1
- package/dist/program/diagnostics.d.ts.map +1 -1
- package/dist/program/diagnostics.js +6 -0
- package/dist/program/diagnostics.js.map +1 -1
- package/dist/program/index.d.ts +1 -1
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/types.d.ts +8 -8
- package/dist/program/types.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts +1 -0
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +90 -34
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/import-resolution.d.ts +16 -1
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +29 -12
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver/naming.d.ts +1 -1
- package/dist/resolver/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +13 -2
- package/dist/resolver/naming.js.map +1 -1
- package/dist/resolver.test.js +4 -0
- package/dist/resolver.test.js.map +1 -1
- package/dist/symbol-table/builder.d.ts +3 -1
- package/dist/symbol-table/builder.d.ts.map +1 -1
- package/dist/symbol-table/builder.js +9 -8
- package/dist/symbol-table/builder.js.map +1 -1
- package/dist/symbol-table/types.d.ts +2 -2
- package/dist/symbol-table/types.d.ts.map +1 -1
- package/dist/types/diagnostic.d.ts +12 -2
- package/dist/types/diagnostic.d.ts.map +1 -1
- package/dist/types/diagnostic.js +5 -1
- package/dist/types/diagnostic.js.map +1 -1
- package/dist/validation/extension-methods.d.ts +17 -0
- package/dist/validation/extension-methods.d.ts.map +1 -0
- package/dist/validation/extension-methods.js +133 -0
- package/dist/validation/extension-methods.js.map +1 -0
- package/dist/validation/generics.d.ts.map +1 -1
- package/dist/validation/generics.js +1 -129
- package/dist/validation/generics.js.map +1 -1
- package/dist/validation/imports.js +1 -1
- package/dist/validation/imports.js.map +1 -1
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/orchestrator.d.ts.map +1 -1
- package/dist/validation/orchestrator.js +2 -0
- package/dist/validation/orchestrator.js.map +1 -1
- package/dist/validation/static-safety.d.ts +1 -0
- package/dist/validation/static-safety.d.ts.map +1 -1
- package/dist/validation/static-safety.js +366 -96
- package/dist/validation/static-safety.js.map +1 -1
- package/dist/validator.test.js +77 -1
- package/dist/validator.test.js.map +1 -1
- package/package.json +2 -2
- package/dist/ir/type-converter/arrays.d.ts +0 -10
- package/dist/ir/type-converter/arrays.d.ts.map +0 -1
- package/dist/ir/type-converter/arrays.js.map +0 -1
- package/dist/ir/type-converter/converter.d.ts +0 -6
- package/dist/ir/type-converter/converter.d.ts.map +0 -1
- package/dist/ir/type-converter/converter.js +0 -6
- package/dist/ir/type-converter/converter.js.map +0 -1
- package/dist/ir/type-converter/functions.d.ts +0 -10
- package/dist/ir/type-converter/functions.d.ts.map +0 -1
- package/dist/ir/type-converter/functions.js +0 -15
- package/dist/ir/type-converter/functions.js.map +0 -1
- package/dist/ir/type-converter/index.d.ts +0 -7
- package/dist/ir/type-converter/index.d.ts.map +0 -1
- package/dist/ir/type-converter/index.js +0 -7
- package/dist/ir/type-converter/index.js.map +0 -1
- package/dist/ir/type-converter/inference.d.ts +0 -32
- package/dist/ir/type-converter/inference.d.ts.map +0 -1
- package/dist/ir/type-converter/inference.js +0 -297
- package/dist/ir/type-converter/inference.js.map +0 -1
- package/dist/ir/type-converter/literals.d.ts.map +0 -1
- package/dist/ir/type-converter/literals.js.map +0 -1
- package/dist/ir/type-converter/objects.d.ts +0 -16
- package/dist/ir/type-converter/objects.d.ts.map +0 -1
- package/dist/ir/type-converter/objects.js.map +0 -1
- package/dist/ir/type-converter/orchestrator.d.ts.map +0 -1
- package/dist/ir/type-converter/orchestrator.js.map +0 -1
- package/dist/ir/type-converter/patterns.d.ts +0 -10
- package/dist/ir/type-converter/patterns.d.ts.map +0 -1
- package/dist/ir/type-converter/patterns.js.map +0 -1
- package/dist/ir/type-converter/primitives.d.ts.map +0 -1
- package/dist/ir/type-converter/primitives.js.map +0 -1
- package/dist/ir/type-converter/references.d.ts.map +0 -1
- package/dist/ir/type-converter/references.js +0 -371
- package/dist/ir/type-converter/references.js.map +0 -1
- package/dist/ir/type-converter/unions-intersections.d.ts +0 -14
- package/dist/ir/type-converter/unions-intersections.d.ts.map +0 -1
- package/dist/ir/type-converter/unions-intersections.js +0 -22
- package/dist/ir/type-converter/unions-intersections.js.map +0 -1
- package/dist/ir/type-converter/utility-types.d.ts.map +0 -1
- package/dist/ir/type-converter/utility-types.js +0 -528
- package/dist/ir/type-converter/utility-types.js.map +0 -1
- package/dist/ir/type-converter/utility-types.test.d.ts.map +0 -1
- package/dist/ir/type-converter/utility-types.test.js.map +0 -1
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.js +0 -0
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.js +0 -0
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.d.ts +0 -0
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference type conversion
|
|
3
|
+
*/
|
|
4
|
+
import * as ts from "typescript";
|
|
5
|
+
import { substituteIrType } from "../../../types/ir-substitution.js";
|
|
6
|
+
import { isPrimitiveTypeName, getPrimitiveType, isClrPrimitiveTypeName, getClrPrimitiveType, CLR_PRIMITIVE_TYPE_SET, } from "./primitives.js";
|
|
7
|
+
import { convertFunctionType } from "./functions.js";
|
|
8
|
+
import { isExpandableUtilityType, expandUtilityType, isExpandableConditionalUtilityType, expandConditionalUtilityType, expandRecordType, } from "./utility-types.js";
|
|
9
|
+
/**
|
|
10
|
+
* tsbindgen emits qualified names for core System primitives inside internal
|
|
11
|
+
* extension bucket signatures, e.g. `System_Internal.Boolean`.
|
|
12
|
+
*
|
|
13
|
+
* For IR purposes these must canonicalize to the compiler's surface primitive
|
|
14
|
+
* / numeric alias names so:
|
|
15
|
+
* - deterministic lambda typing can use `boolean`/`int` etc
|
|
16
|
+
* - the IR soundness gate does not treat these as unresolved reference types
|
|
17
|
+
*
|
|
18
|
+
* This is NOT a workaround: it is the correct boundary translation from the
|
|
19
|
+
* tsbindgen surface name to Tsonic's canonical IR type names.
|
|
20
|
+
*/
|
|
21
|
+
const normalizeSystemInternalQualifiedName = (typeName) => {
|
|
22
|
+
const prefix = "System_Internal.";
|
|
23
|
+
if (!typeName.startsWith(prefix))
|
|
24
|
+
return typeName;
|
|
25
|
+
const inner = typeName.slice(prefix.length);
|
|
26
|
+
const mapped = (() => {
|
|
27
|
+
switch (inner) {
|
|
28
|
+
// TS primitives
|
|
29
|
+
case "Boolean":
|
|
30
|
+
return "boolean";
|
|
31
|
+
case "String":
|
|
32
|
+
return "string";
|
|
33
|
+
case "Char":
|
|
34
|
+
return "char";
|
|
35
|
+
// Distinct CLR numeric aliases (from @tsonic/core)
|
|
36
|
+
case "SByte":
|
|
37
|
+
return "sbyte";
|
|
38
|
+
case "Byte":
|
|
39
|
+
return "byte";
|
|
40
|
+
case "Int16":
|
|
41
|
+
return "short";
|
|
42
|
+
case "UInt16":
|
|
43
|
+
return "ushort";
|
|
44
|
+
case "Int32":
|
|
45
|
+
return "int";
|
|
46
|
+
case "UInt32":
|
|
47
|
+
return "uint";
|
|
48
|
+
case "Int64":
|
|
49
|
+
return "long";
|
|
50
|
+
case "UInt64":
|
|
51
|
+
return "ulong";
|
|
52
|
+
case "Int128":
|
|
53
|
+
return "int128";
|
|
54
|
+
case "UInt128":
|
|
55
|
+
return "uint128";
|
|
56
|
+
case "Half":
|
|
57
|
+
return "half";
|
|
58
|
+
case "Single":
|
|
59
|
+
return "float";
|
|
60
|
+
case "Double":
|
|
61
|
+
return "double";
|
|
62
|
+
case "Decimal":
|
|
63
|
+
return "decimal";
|
|
64
|
+
case "IntPtr":
|
|
65
|
+
return "nint";
|
|
66
|
+
case "UIntPtr":
|
|
67
|
+
return "nuint";
|
|
68
|
+
default:
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
})();
|
|
72
|
+
// If we don't recognize the alias, strip the namespace import prefix and
|
|
73
|
+
// keep the exported type name (e.g. System_Internal.Exception -> Exception).
|
|
74
|
+
return mapped ?? inner;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* tsbindgen extension bucket files import namespaces as `System_Collections_Generic`, etc,
|
|
78
|
+
* then reference types via qualified names like `System_Collections_Generic.List_1`.
|
|
79
|
+
*
|
|
80
|
+
* For IR purposes we must canonicalize these to their simple TS export names
|
|
81
|
+
* (e.g., `List_1`) so they resolve through the binding registry.
|
|
82
|
+
*/
|
|
83
|
+
const normalizeNamespaceAliasQualifiedName = (typeName) => {
|
|
84
|
+
const lastDot = typeName.lastIndexOf(".");
|
|
85
|
+
if (lastDot <= 0)
|
|
86
|
+
return typeName;
|
|
87
|
+
const prefix = typeName.slice(0, lastDot);
|
|
88
|
+
// Strip facade-local internal namespace alias: `Internal.Foo` → `Foo`.
|
|
89
|
+
if (prefix === "Internal") {
|
|
90
|
+
return typeName.slice(lastDot + 1);
|
|
91
|
+
}
|
|
92
|
+
// Only strip tsbindgen namespace-alias qualifiers (they contain underscores).
|
|
93
|
+
if (!prefix.includes("_"))
|
|
94
|
+
return typeName;
|
|
95
|
+
return typeName.slice(lastDot + 1);
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Cache for structural member extraction to prevent infinite recursion
|
|
99
|
+
* on recursive types like `type Node = { next: Node }`.
|
|
100
|
+
*
|
|
101
|
+
* DETERMINISTIC IR TYPING (INV-0 compliant):
|
|
102
|
+
* Key: DeclId.id (numeric identifier) - handles are stable identifiers
|
|
103
|
+
* Value: extracted members, null (not extractable), or "in-progress" sentinel
|
|
104
|
+
*/
|
|
105
|
+
const structuralMembersCache = new Map();
|
|
106
|
+
/**
|
|
107
|
+
* Check if a declaration should have structural members extracted.
|
|
108
|
+
*
|
|
109
|
+
* Only extract for:
|
|
110
|
+
* - Interfaces (InterfaceDeclaration)
|
|
111
|
+
* - Type aliases to object types (TypeAliasDeclaration with TypeLiteralNode)
|
|
112
|
+
*
|
|
113
|
+
* Do NOT extract for:
|
|
114
|
+
* - Classes (have implementation, not just shape)
|
|
115
|
+
* - Enums, namespaces
|
|
116
|
+
* - Library types (from node_modules or lib.*.d.ts)
|
|
117
|
+
* - Type aliases to primitives, unions, functions, etc.
|
|
118
|
+
*/
|
|
119
|
+
const shouldExtractFromDeclaration = (decl) => {
|
|
120
|
+
const sourceFile = decl.getSourceFile();
|
|
121
|
+
const fileName = sourceFile.fileName;
|
|
122
|
+
// Skip library types (node_modules, lib.*.d.ts, or declaration files)
|
|
123
|
+
if (fileName.includes("node_modules") ||
|
|
124
|
+
fileName.includes("lib.") ||
|
|
125
|
+
sourceFile.isDeclarationFile) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
// Only extract for interfaces
|
|
129
|
+
if (ts.isInterfaceDeclaration(decl)) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
// Only extract for type aliases that resolve to object types
|
|
133
|
+
if (ts.isTypeAliasDeclaration(decl)) {
|
|
134
|
+
// Check if the alias is to an object type (TypeLiteral)
|
|
135
|
+
return ts.isTypeLiteralNode(decl.type);
|
|
136
|
+
}
|
|
137
|
+
// Don't extract for classes, enums, etc.
|
|
138
|
+
return false;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Extract structural members from type declarations (AST-based).
|
|
142
|
+
*
|
|
143
|
+
* DETERMINISTIC IR TYPING (INV-0 compliant):
|
|
144
|
+
* Uses AST nodes directly instead of ts.Type computation.
|
|
145
|
+
* Gets TypeNodes from declarations, not from getTypeOfSymbolAtLocation.
|
|
146
|
+
*
|
|
147
|
+
* Used to populate structuralMembers on referenceType for interfaces and type aliases.
|
|
148
|
+
* This enables TSN5110 validation for object literal properties against expected types.
|
|
149
|
+
*
|
|
150
|
+
* Safety guards:
|
|
151
|
+
* - Only extracts for interfaces/type-aliases (not classes, enums, lib types)
|
|
152
|
+
* - Uses cache to prevent infinite recursion on recursive types
|
|
153
|
+
* - Skips unsupported keys instead of bailing entirely
|
|
154
|
+
* - Returns undefined for index signatures (can't fully represent)
|
|
155
|
+
*
|
|
156
|
+
* @param declId - The DeclId for the type (from Binding.resolveTypeReference)
|
|
157
|
+
* @param binding - The Binding layer for symbol resolution
|
|
158
|
+
* @param convertType - Function to convert nested types
|
|
159
|
+
* @returns Structural members or undefined if extraction fails/skipped
|
|
160
|
+
*/
|
|
161
|
+
const extractStructuralMembersFromDeclarations = (declId, binding, convertType) => {
|
|
162
|
+
if (declId === undefined) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
// Check cache first (handles recursion)
|
|
166
|
+
const cached = structuralMembersCache.get(declId);
|
|
167
|
+
if (cached === "in-progress") {
|
|
168
|
+
// Recursive reference - return undefined to break cycle
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
171
|
+
if (cached !== undefined) {
|
|
172
|
+
return cached === null ? undefined : cached;
|
|
173
|
+
}
|
|
174
|
+
// Get declaration info from HandleRegistry
|
|
175
|
+
const registry = binding._getHandleRegistry();
|
|
176
|
+
const declInfo = registry.getDecl({ id: declId, __brand: "DeclId" });
|
|
177
|
+
if (!declInfo?.declNode) {
|
|
178
|
+
structuralMembersCache.set(declId, null);
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
const decl = declInfo.declNode;
|
|
182
|
+
// Check if this declaration should have structural members extracted
|
|
183
|
+
if (!shouldExtractFromDeclaration(decl)) {
|
|
184
|
+
structuralMembersCache.set(declId, null);
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
// Mark as in-progress before recursing.
|
|
188
|
+
structuralMembersCache.set(declId, "in-progress");
|
|
189
|
+
try {
|
|
190
|
+
const members = [];
|
|
191
|
+
// Get the type element source (interface members or type literal members)
|
|
192
|
+
const typeElements = ts.isInterfaceDeclaration(decl)
|
|
193
|
+
? decl.members
|
|
194
|
+
: ts.isTypeAliasDeclaration(decl) && ts.isTypeLiteralNode(decl.type)
|
|
195
|
+
? decl.type.members
|
|
196
|
+
: undefined;
|
|
197
|
+
if (!typeElements) {
|
|
198
|
+
structuralMembersCache.set(declId, null);
|
|
199
|
+
return undefined;
|
|
200
|
+
}
|
|
201
|
+
// Check for index signatures - can't fully represent these structurally
|
|
202
|
+
for (const member of typeElements) {
|
|
203
|
+
if (ts.isIndexSignatureDeclaration(member)) {
|
|
204
|
+
structuralMembersCache.set(declId, null);
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Extract members from AST (TypeNodes directly)
|
|
209
|
+
for (const member of typeElements) {
|
|
210
|
+
// Property signature
|
|
211
|
+
if (ts.isPropertySignature(member)) {
|
|
212
|
+
const propName = ts.isIdentifier(member.name)
|
|
213
|
+
? member.name.text
|
|
214
|
+
: ts.isStringLiteral(member.name)
|
|
215
|
+
? member.name.text
|
|
216
|
+
: undefined;
|
|
217
|
+
if (!propName) {
|
|
218
|
+
continue; // Skip computed/symbol keys
|
|
219
|
+
}
|
|
220
|
+
const isOptional = !!member.questionToken;
|
|
221
|
+
const isReadonly = member.modifiers?.some((m) => m.kind === ts.SyntaxKind.ReadonlyKeyword) ?? false;
|
|
222
|
+
// DETERMINISTIC: Get type from TypeNode in declaration
|
|
223
|
+
const declTypeNode = member.type;
|
|
224
|
+
if (!declTypeNode) {
|
|
225
|
+
continue; // Skip properties without type annotation
|
|
226
|
+
}
|
|
227
|
+
// Check for CLR primitive type aliases
|
|
228
|
+
if (ts.isTypeReferenceNode(declTypeNode)) {
|
|
229
|
+
const typeName = ts.isIdentifier(declTypeNode.typeName)
|
|
230
|
+
? declTypeNode.typeName.text
|
|
231
|
+
: undefined;
|
|
232
|
+
if (typeName && CLR_PRIMITIVE_TYPE_SET.has(typeName)) {
|
|
233
|
+
// Resolve to check it comes from @tsonic/core (symbol-based, allowed)
|
|
234
|
+
// Use Binding to resolve the type reference
|
|
235
|
+
const typeRefDeclId = binding.resolveTypeReference(declTypeNode);
|
|
236
|
+
if (typeRefDeclId) {
|
|
237
|
+
const typeRefDeclInfo = registry.getDecl(typeRefDeclId);
|
|
238
|
+
const refDeclNode = typeRefDeclInfo?.declNode;
|
|
239
|
+
const refSourceFile = refDeclNode?.getSourceFile();
|
|
240
|
+
if (refSourceFile?.fileName.includes("@tsonic/core")) {
|
|
241
|
+
members.push({
|
|
242
|
+
kind: "propertySignature",
|
|
243
|
+
name: propName,
|
|
244
|
+
type: getClrPrimitiveType(typeName),
|
|
245
|
+
isOptional,
|
|
246
|
+
isReadonly,
|
|
247
|
+
});
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Convert the TypeNode to IrType
|
|
254
|
+
members.push({
|
|
255
|
+
kind: "propertySignature",
|
|
256
|
+
name: propName,
|
|
257
|
+
type: convertType(declTypeNode, binding),
|
|
258
|
+
isOptional,
|
|
259
|
+
isReadonly,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
// Method signature
|
|
263
|
+
if (ts.isMethodSignature(member)) {
|
|
264
|
+
const methodName = ts.isIdentifier(member.name)
|
|
265
|
+
? member.name.text
|
|
266
|
+
: undefined;
|
|
267
|
+
if (!methodName) {
|
|
268
|
+
continue; // Skip computed keys
|
|
269
|
+
}
|
|
270
|
+
members.push({
|
|
271
|
+
kind: "methodSignature",
|
|
272
|
+
name: methodName,
|
|
273
|
+
parameters: member.parameters.map((param, index) => ({
|
|
274
|
+
kind: "parameter",
|
|
275
|
+
pattern: {
|
|
276
|
+
kind: "identifierPattern",
|
|
277
|
+
name: ts.isIdentifier(param.name)
|
|
278
|
+
? param.name.text
|
|
279
|
+
: `arg${index}`,
|
|
280
|
+
},
|
|
281
|
+
type: param.type ? convertType(param.type, binding) : undefined,
|
|
282
|
+
isOptional: !!param.questionToken,
|
|
283
|
+
isRest: !!param.dotDotDotToken,
|
|
284
|
+
passing: "value",
|
|
285
|
+
})),
|
|
286
|
+
returnType: member.type
|
|
287
|
+
? convertType(member.type, binding)
|
|
288
|
+
: undefined,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
const result = members.length > 0 ? members : undefined;
|
|
293
|
+
structuralMembersCache.set(declId, result ?? null);
|
|
294
|
+
return result;
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
// On any error, settle cache to null (not extractable)
|
|
298
|
+
structuralMembersCache.set(declId, null);
|
|
299
|
+
return undefined;
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* Convert TypeScript type reference to IR type
|
|
304
|
+
* Handles both primitive type names and user-defined types
|
|
305
|
+
*/
|
|
306
|
+
export const convertTypeReference = (node, binding, convertType) => {
|
|
307
|
+
const rawTypeName = ts.isIdentifier(node.typeName)
|
|
308
|
+
? node.typeName.text
|
|
309
|
+
: node.typeName.getText();
|
|
310
|
+
const typeName = normalizeNamespaceAliasQualifiedName(normalizeSystemInternalQualifiedName(rawTypeName));
|
|
311
|
+
// Check for primitive type names
|
|
312
|
+
if (isPrimitiveTypeName(typeName)) {
|
|
313
|
+
return getPrimitiveType(typeName);
|
|
314
|
+
}
|
|
315
|
+
// Check for CLR primitive type names (e.g., int from @tsonic/core)
|
|
316
|
+
// These are compiler-known types that map to distinct primitives, not referenceType
|
|
317
|
+
if (isClrPrimitiveTypeName(typeName)) {
|
|
318
|
+
return getClrPrimitiveType(typeName);
|
|
319
|
+
}
|
|
320
|
+
// Check for Array<T> utility type → convert to arrayType with explicit origin
|
|
321
|
+
// This ensures Array<T> and T[] are treated identically
|
|
322
|
+
const firstTypeArg = node.typeArguments?.[0];
|
|
323
|
+
if (typeName === "Array" && firstTypeArg) {
|
|
324
|
+
return {
|
|
325
|
+
kind: "arrayType",
|
|
326
|
+
elementType: convertType(firstTypeArg, binding),
|
|
327
|
+
origin: "explicit",
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
// Check for expandable conditional utility types (NonNullable, Exclude, Extract)
|
|
331
|
+
// These are expanded at compile time by delegating to TypeScript's type checker
|
|
332
|
+
if (isExpandableConditionalUtilityType(typeName) &&
|
|
333
|
+
node.typeArguments?.length) {
|
|
334
|
+
const expanded = expandConditionalUtilityType(node, typeName, binding, convertType);
|
|
335
|
+
if (expanded)
|
|
336
|
+
return expanded;
|
|
337
|
+
// Fall through to referenceType if can't expand (e.g., type parameter)
|
|
338
|
+
}
|
|
339
|
+
// Check for Record<K, V> utility type
|
|
340
|
+
// First try to expand to IrObjectType for finite literal keys
|
|
341
|
+
// Falls back to IrDictionaryType ONLY for string/number keys (not type parameters)
|
|
342
|
+
const typeArgsForRecord = node.typeArguments;
|
|
343
|
+
const keyTypeNode = typeArgsForRecord?.[0];
|
|
344
|
+
const valueTypeNode = typeArgsForRecord?.[1];
|
|
345
|
+
if (typeName === "Record" && keyTypeNode && valueTypeNode) {
|
|
346
|
+
// Try to expand to IrObjectType for finite literal keys
|
|
347
|
+
const expandedRecord = expandRecordType(node, binding, convertType);
|
|
348
|
+
if (expandedRecord)
|
|
349
|
+
return expandedRecord;
|
|
350
|
+
// Only create dictionary if K is exactly 'string' or 'number'
|
|
351
|
+
// Type parameters should fall through to referenceType
|
|
352
|
+
//
|
|
353
|
+
// DETERMINISTIC: Only check SyntaxKind - no getTypeAtLocation.
|
|
354
|
+
// If the key is a type alias that resolves to string/number, it falls through
|
|
355
|
+
// to referenceType (the user should use `string` or `number` directly).
|
|
356
|
+
const isStringKey = keyTypeNode.kind === ts.SyntaxKind.StringKeyword;
|
|
357
|
+
const isNumberKey = keyTypeNode.kind === ts.SyntaxKind.NumberKeyword;
|
|
358
|
+
if (isStringKey || isNumberKey) {
|
|
359
|
+
const keyType = convertType(keyTypeNode, binding);
|
|
360
|
+
const valueType = convertType(valueTypeNode, binding);
|
|
361
|
+
return {
|
|
362
|
+
kind: "dictionaryType",
|
|
363
|
+
keyType,
|
|
364
|
+
valueType,
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
// Type parameter or other complex key type - fall through to referenceType
|
|
368
|
+
}
|
|
369
|
+
// Check for expandable utility types (Partial, Required, Readonly, Pick, Omit)
|
|
370
|
+
// These are expanded to IrObjectType at compile time for concrete types
|
|
371
|
+
if (isExpandableUtilityType(typeName) && node.typeArguments?.length) {
|
|
372
|
+
const expanded = expandUtilityType(node, typeName, binding, convertType);
|
|
373
|
+
if (expanded)
|
|
374
|
+
return expanded;
|
|
375
|
+
// Fall through to referenceType if can't expand (e.g., type parameter)
|
|
376
|
+
}
|
|
377
|
+
// tsbindgen's `CLROf<T>` is a conditional type used to coerce ergonomic primitives
|
|
378
|
+
// into their CLR nominal types in generic positions. For deterministic IR typing,
|
|
379
|
+
// we treat it as an identity wrapper and rely on the TypeSystem's primitive-to-nominal
|
|
380
|
+
// normalization (and alias table) to unify primitives with System.* TypeIds.
|
|
381
|
+
if (typeName === "CLROf" && node.typeArguments?.length === 1) {
|
|
382
|
+
const inner = node.typeArguments[0];
|
|
383
|
+
return inner ? convertType(inner, binding) : { kind: "unknownType" };
|
|
384
|
+
}
|
|
385
|
+
// `thisarg<T>` is a TS-only marker used to declare C# extension method receivers.
|
|
386
|
+
// For IR typing it must erase to the underlying T so call resolution and generic
|
|
387
|
+
// inference operate on the real receiver type.
|
|
388
|
+
if (typeName === "thisarg" && node.typeArguments?.length === 1) {
|
|
389
|
+
const inner = node.typeArguments[0];
|
|
390
|
+
return inner ? convertType(inner, binding) : { kind: "unknownType" };
|
|
391
|
+
}
|
|
392
|
+
// Handle parameter passing modifiers: out<T>, ref<T>, inref<T>
|
|
393
|
+
// These are type aliases that should NOT be resolved - we preserve them
|
|
394
|
+
// so the emitter can detect `as out<T>` casts and emit the correct C# prefix.
|
|
395
|
+
if ((typeName === "out" || typeName === "ref" || typeName === "inref") &&
|
|
396
|
+
node.typeArguments &&
|
|
397
|
+
node.typeArguments.length === 1) {
|
|
398
|
+
// Safe: we checked length === 1 above
|
|
399
|
+
const innerTypeArg = node.typeArguments[0];
|
|
400
|
+
if (!innerTypeArg) {
|
|
401
|
+
return { kind: "anyType" };
|
|
402
|
+
}
|
|
403
|
+
return {
|
|
404
|
+
kind: "referenceType",
|
|
405
|
+
name: typeName,
|
|
406
|
+
typeArguments: [convertType(innerTypeArg, binding)],
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
// DETERMINISTIC: Check if this is a type parameter or type alias using Binding
|
|
410
|
+
const declId = binding.resolveTypeReference(node);
|
|
411
|
+
if (declId) {
|
|
412
|
+
const declInfo = binding
|
|
413
|
+
._getHandleRegistry()
|
|
414
|
+
.getDecl(declId);
|
|
415
|
+
if (declInfo) {
|
|
416
|
+
// Check for type parameter declaration (class type params, method type params, etc.)
|
|
417
|
+
// CRITICAL: Check the AST node directly - do NOT rely on declInfo.kind.
|
|
418
|
+
// Binding's DeclKind may not label TypeParameterDeclaration as "parameter".
|
|
419
|
+
const declNode = declInfo.declNode;
|
|
420
|
+
if (declNode && ts.isTypeParameterDeclaration(declNode)) {
|
|
421
|
+
return { kind: "typeParameterType", name: typeName };
|
|
422
|
+
}
|
|
423
|
+
// Check for type alias to function type
|
|
424
|
+
// DETERMINISTIC: Expand function type aliases so lambda contextual typing works
|
|
425
|
+
// e.g., `type NumberToNumber = (x: number) => number` should be converted
|
|
426
|
+
// to a functionType, not a referenceType
|
|
427
|
+
if (declInfo.kind === "typeAlias") {
|
|
428
|
+
// tsbindgen extension method wrapper types are type-only helpers.
|
|
429
|
+
//
|
|
430
|
+
// Example: ExtensionMethods_System_Linq<TShape> = TShape & (__Ext_* ...)
|
|
431
|
+
//
|
|
432
|
+
// For IR/runtime typing, this must erase to the underlying shape type:
|
|
433
|
+
// - Enables member binding on the real receiver type (e.g., List<T>.count → Count)
|
|
434
|
+
// - Prevents TS-only wrapper names from leaking into IR and confusing emit
|
|
435
|
+
//
|
|
436
|
+
// Extension method *member* discovery is handled via Binding + BindingRegistry,
|
|
437
|
+
// not by treating ExtensionMethods_* as a nominal CLR type.
|
|
438
|
+
if (declNode &&
|
|
439
|
+
ts.isTypeAliasDeclaration(declNode) &&
|
|
440
|
+
declNode.name.text.startsWith("ExtensionMethods_") &&
|
|
441
|
+
node.typeArguments?.length === 1) {
|
|
442
|
+
const shape = node.typeArguments[0];
|
|
443
|
+
return shape ? convertType(shape, binding) : { kind: "unknownType" };
|
|
444
|
+
}
|
|
445
|
+
if (declNode &&
|
|
446
|
+
ts.isTypeAliasDeclaration(declNode) &&
|
|
447
|
+
ts.isFunctionTypeNode(declNode.type)) {
|
|
448
|
+
const fnType = convertFunctionType(declNode.type, binding, convertType);
|
|
449
|
+
// If the type alias is generic (e.g. `type Func_2<T, TResult> = (arg: T) => TResult`),
|
|
450
|
+
// apply the reference site's type arguments so lambdas get a fully-instantiated
|
|
451
|
+
// expected type (critical for deterministic inference).
|
|
452
|
+
const aliasTypeParams = (declNode.typeParameters ?? []).map((tp) => tp.name.text);
|
|
453
|
+
const refTypeArgs = (node.typeArguments ?? []).map((t) => convertType(t, binding));
|
|
454
|
+
if (aliasTypeParams.length > 0 && refTypeArgs.length > 0) {
|
|
455
|
+
const subst = new Map();
|
|
456
|
+
for (let i = 0; i < Math.min(aliasTypeParams.length, refTypeArgs.length); i++) {
|
|
457
|
+
const name = aliasTypeParams[i];
|
|
458
|
+
const arg = refTypeArgs[i];
|
|
459
|
+
if (name && arg)
|
|
460
|
+
subst.set(name, arg);
|
|
461
|
+
}
|
|
462
|
+
return subst.size > 0 ? substituteIrType(fnType, subst) : fnType;
|
|
463
|
+
}
|
|
464
|
+
return fnType;
|
|
465
|
+
}
|
|
466
|
+
// tsbindgen facade type families use conditional type aliases to map:
|
|
467
|
+
// Foo<T = __> → Foo (non-generic) or Foo_N<T> (generic)
|
|
468
|
+
//
|
|
469
|
+
// Example:
|
|
470
|
+
// export type IQueryable<T1 = __> =
|
|
471
|
+
// [T1] extends [__] ? Internal.IQueryable : Internal.IQueryable_1<T1>;
|
|
472
|
+
//
|
|
473
|
+
// When callers reference `Foo<T>` (including with type parameters), we must
|
|
474
|
+
// deterministically lower it to the arity-qualified CLR surface type name
|
|
475
|
+
// (Foo_1/Foo_2/...) so TypeSystem can resolve it nominally via metadata.
|
|
476
|
+
if (declNode &&
|
|
477
|
+
ts.isTypeAliasDeclaration(declNode) &&
|
|
478
|
+
node.typeArguments &&
|
|
479
|
+
node.typeArguments.length > 0 &&
|
|
480
|
+
declNode.typeParameters &&
|
|
481
|
+
declNode.typeParameters.length === 1) {
|
|
482
|
+
const param = declNode.typeParameters[0];
|
|
483
|
+
const hasTsbindgenDefaultSentinel = !!param &&
|
|
484
|
+
!!param.default &&
|
|
485
|
+
ts.isTypeReferenceNode(param.default) &&
|
|
486
|
+
(ts.isIdentifier(param.default.typeName)
|
|
487
|
+
? param.default.typeName.text
|
|
488
|
+
: param.default.typeName.getText()) === "__";
|
|
489
|
+
if (hasTsbindgenDefaultSentinel && ts.isConditionalTypeNode(declNode.type)) {
|
|
490
|
+
const expected = `${typeName}_${node.typeArguments.length}`;
|
|
491
|
+
let found;
|
|
492
|
+
const visit = (t) => {
|
|
493
|
+
if (found)
|
|
494
|
+
return;
|
|
495
|
+
if (ts.isTypeReferenceNode(t)) {
|
|
496
|
+
const raw = ts.isIdentifier(t.typeName)
|
|
497
|
+
? t.typeName.text
|
|
498
|
+
: t.typeName.getText();
|
|
499
|
+
const normalized = normalizeNamespaceAliasQualifiedName(normalizeSystemInternalQualifiedName(raw));
|
|
500
|
+
if (normalized === expected) {
|
|
501
|
+
found = normalized;
|
|
502
|
+
}
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
if (ts.isConditionalTypeNode(t)) {
|
|
506
|
+
visit(t.trueType);
|
|
507
|
+
visit(t.falseType);
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
if (ts.isParenthesizedTypeNode(t)) {
|
|
511
|
+
visit(t.type);
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
visit(declNode.type);
|
|
515
|
+
if (found) {
|
|
516
|
+
return {
|
|
517
|
+
kind: "referenceType",
|
|
518
|
+
name: found,
|
|
519
|
+
typeArguments: node.typeArguments.map((t) => convertType(t, binding)),
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
// DETERMINISTIC IR TYPING (INV-0 compliant):
|
|
528
|
+
// Symbol-based type parameter check above handles all cases.
|
|
529
|
+
// The getTypeAtLocation fallback has been removed for INV-0 compliance.
|
|
530
|
+
// Extract structural members from declarations (AST-based)
|
|
531
|
+
// This enables TSN5110 validation for object literal properties.
|
|
532
|
+
const structuralMembers = extractStructuralMembersFromDeclarations(declId?.id, binding, convertType);
|
|
533
|
+
// tsbindgen facade exports often re-export arity-qualified CLR types under
|
|
534
|
+
// ergonomic names (e.g., `DbSet` → `DbSet_1`). Binding.resolveTypeReference()
|
|
535
|
+
// already follows aliases, so use the resolved symbol name to keep IR nominal
|
|
536
|
+
// identity stable for member lookup and generic substitution.
|
|
537
|
+
const resolvedName = (() => {
|
|
538
|
+
if (!declId)
|
|
539
|
+
return typeName;
|
|
540
|
+
const declInfo = binding._getHandleRegistry().getDecl(declId);
|
|
541
|
+
return declInfo?.fqName ?? typeName;
|
|
542
|
+
})();
|
|
543
|
+
// Reference type (user-defined or library)
|
|
544
|
+
return {
|
|
545
|
+
kind: "referenceType",
|
|
546
|
+
name: resolvedName,
|
|
547
|
+
typeArguments: node.typeArguments?.map((t) => convertType(t, binding)),
|
|
548
|
+
structuralMembers,
|
|
549
|
+
};
|
|
550
|
+
};
|
|
551
|
+
//# sourceMappingURL=references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/references.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kCAAkC,EAClC,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;;;;;;GAWG;AACH,MAAM,oCAAoC,GAAG,CAAC,QAAgB,EAAU,EAAE;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IAElD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;QACnB,QAAQ,KAAK,EAAE,CAAC;YACd,gBAAgB;YAChB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAEhB,mDAAmD;YACnD,KAAK,OAAO;gBACV,OAAO,OAAO,CAAC;YACjB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,OAAO;gBACV,OAAO,OAAO,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC;YAChB,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,OAAO,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,OAAO,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC;YAChB,KAAK,SAAS;gBACZ,OAAO,OAAO,CAAC;YAEjB;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,yEAAyE;IACzE,6EAA6E;IAC7E,OAAO,MAAM,IAAI,KAAK,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,oCAAoC,GAAG,CAAC,QAAgB,EAAU,EAAE;IACxE,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAElC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,uEAAuE;IACvE,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,8EAA8E;IAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE3C,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAGnC,CAAC;AAEJ;;;;;;;;;;;;GAYG;AACH,MAAM,4BAA4B,GAAG,CAAC,IAAoB,EAAW,EAAE;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IAErC,sEAAsE;IACtE,IACE,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QACjC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzB,UAAU,CAAC,iBAAiB,EAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8BAA8B;IAC9B,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6DAA6D;IAC7D,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,wDAAwD;QACxD,OAAO,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,yCAAyC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,wCAAwC,GAAG,CAC/C,MAA0B,EAC1B,OAAgB,EAChB,WAA4D,EAClB,EAAE;IAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,wCAAwC;IACxC,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7B,wDAAwD;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAI,OAA2B,CAAC,kBAAkB,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAW,CAAC,CAAC;IAC9E,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxB,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAA0B,CAAC;IAEjD,qEAAqE;IACrE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,wCAAwC;IACxC,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,0EAA0E;QAC1E,MAAM,YAAY,GAAG,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAClD,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;gBACnB,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,wEAAwE;QACxE,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,EAAE,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,qBAAqB;YACrB,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;oBAClB,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;wBAClB,CAAC,CAAC,SAAS,CAAC;gBAEhB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,SAAS,CAAC,4BAA4B;gBACxC,CAAC;gBAED,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC1C,MAAM,UAAU,GACd,MAAM,CAAC,SAAS,EAAE,IAAI,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,eAAe,CAChD,IAAI,KAAK,CAAC;gBAEb,uDAAuD;gBACvD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;gBACjC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,SAAS,CAAC,0CAA0C;gBACtD,CAAC;gBAED,uCAAuC;gBACvC,IAAI,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;oBACzC,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC;wBACrD,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI;wBAC5B,CAAC,CAAC,SAAS,CAAC;oBACd,IAAI,QAAQ,IAAI,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACrD,sEAAsE;wBACtE,4CAA4C;wBAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;wBACjE,IAAI,aAAa,EAAE,CAAC;4BAClB,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;4BACxD,MAAM,WAAW,GAAG,eAAe,EAAE,QAExB,CAAC;4BACd,MAAM,aAAa,GAAG,WAAW,EAAE,aAAa,EAAE,CAAC;4BACnD,IAAI,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gCACrD,OAAO,CAAC,IAAI,CAAC;oCACX,IAAI,EAAE,mBAAmB;oCACzB,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,mBAAmB,CAAC,QAAiB,CAAC;oCAC5C,UAAU;oCACV,UAAU;iCACX,CAAC,CAAC;gCACH,SAAS;4BACX,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,iCAAiC;gBACjC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC;oBACxC,UAAU;oBACV,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YAED,mBAAmB;YACnB,IAAI,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC7C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;oBAClB,CAAC,CAAC,SAAS,CAAC;gBAEd,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,SAAS,CAAC,qBAAqB;gBACjC,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,UAAU;oBAChB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;wBACnD,IAAI,EAAE,WAAoB;wBAC1B,OAAO,EAAE;4BACP,IAAI,EAAE,mBAA4B;4BAClC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;gCAC/B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;gCACjB,CAAC,CAAC,MAAM,KAAK,EAAE;yBAClB;wBACD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;wBAC/D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;wBACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc;wBAC9B,OAAO,EAAE,OAAgB;qBAC1B,CAAC,CAAC;oBACH,UAAU,EAAE,MAAM,CAAC,IAAI;wBACrB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;wBACnC,CAAC,CAAC,SAAS;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;QACvD,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAA0B,EAC1B,OAAgB,EAChB,WAA4D,EACpD,EAAE;IACV,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;QACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,oCAAoC,CACnD,oCAAoC,CAAC,WAAW,CAAC,CAClD,CAAC;IAEF,iCAAiC;IACjC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,mEAAmE;IACnE,oFAAoF;IACpF,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,8EAA8E;IAC9E,wDAAwD;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,OAAO,IAAI,YAAY,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC;YAC/C,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF,gFAAgF;IAChF,IACE,kCAAkC,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,aAAa,EAAE,MAAM,EAC1B,CAAC;QACD,MAAM,QAAQ,GAAG,4BAA4B,CAC3C,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,CACZ,CAAC;QACF,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,uEAAuE;IACzE,CAAC;IAED,sCAAsC;IACtC,8DAA8D;IAC9D,mFAAmF;IACnF,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;IAC7C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,QAAQ,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;QAC1D,wDAAwD;QACxD,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACpE,IAAI,cAAc;YAAE,OAAO,cAAc,CAAC;QAE1C,8DAA8D;QAC9D,uDAAuD;QACvD,EAAE;QACF,+DAA+D;QAC/D,8EAA8E;QAC9E,wEAAwE;QACxE,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;QACrE,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;QAErE,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAEtD,OAAO;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO;gBACP,SAAS;aACU,CAAC;QACxB,CAAC;QACD,2EAA2E;IAC7E,CAAC;IAED,+EAA+E;IAC/E,wEAAwE;IACxE,IAAI,uBAAuB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,uEAAuE;IACzE,CAAC;IAED,mFAAmF;IACnF,kFAAkF;IAClF,uFAAuF;IACvF,6EAA6E;IAC7E,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACvE,CAAC;IAED,kFAAkF;IAClF,iFAAiF;IACjF,+CAA+C;IAC/C,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACvE,CAAC;IAED,+DAA+D;IAC/D,wEAAwE;IACxE,8EAA8E;IAC9E,IACE,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC;QAClE,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAC/B,CAAC;QACD,sCAAsC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,QAAQ,GAAI,OAA2B;aAC1C,kBAAkB,EAAE;aACpB,OAAO,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,qFAAqF;YACrF,wEAAwE;YACxE,4EAA4E;YAC5E,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAsC,CAAC;YACjE,IAAI,QAAQ,IAAI,EAAE,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxD,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACvD,CAAC;YAED,wCAAwC;YACxC,gFAAgF;YAChF,0EAA0E;YAC1E,yCAAyC;YACzC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAClC,kEAAkE;gBAClE,EAAE;gBACF,yEAAyE;gBACzE,EAAE;gBACF,uEAAuE;gBACvE,mFAAmF;gBACnF,2EAA2E;gBAC3E,EAAE;gBACF,gFAAgF;gBAChF,4DAA4D;gBAC5D,IACE,QAAQ;oBACR,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC;oBACnC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;oBAClD,IAAI,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC,EAChC,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACpC,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;gBACvE,CAAC;gBAED,IACE,QAAQ;oBACR,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC;oBACnC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpC,CAAC;oBACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;oBAExE,uFAAuF;oBACvF,gFAAgF;oBAChF,wDAAwD;oBACxD,MAAM,eAAe,GAAG,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CACzD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CACrB,CAAC;oBACF,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CACxB,CAAC;oBAEF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;wBACxC,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EACxD,CAAC,EAAE,EACH,CAAC;4BACD,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;4BAChC,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;4BAC3B,IAAI,IAAI,IAAI,GAAG;gCAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBACxC,CAAC;wBAED,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBACnE,CAAC;oBAED,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,sEAAsE;gBACtE,0DAA0D;gBAC1D,EAAE;gBACF,WAAW;gBACX,sCAAsC;gBACtC,2EAA2E;gBAC3E,EAAE;gBACF,4EAA4E;gBAC5E,0EAA0E;gBAC1E,yEAAyE;gBACzE,IACE,QAAQ;oBACR,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC;oBACnC,IAAI,CAAC,aAAa;oBAClB,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;oBAC7B,QAAQ,CAAC,cAAc;oBACvB,QAAQ,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EACpC,CAAC;oBACD,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM,2BAA2B,GAC/B,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,KAAK,CAAC,OAAO;wBACf,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC;wBACrC,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;4BACtC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI;4BAC7B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;oBAEjD,IAAI,2BAA2B,IAAI,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3E,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;wBAC5D,IAAI,KAAyB,CAAC;wBAE9B,MAAM,KAAK,GAAG,CAAC,CAAc,EAAQ,EAAE;4BACrC,IAAI,KAAK;gCAAE,OAAO;4BAElB,IAAI,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;gCAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;oCACrC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;oCACjB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gCACzB,MAAM,UAAU,GAAG,oCAAoC,CACrD,oCAAoC,CAAC,GAAG,CAAC,CAC1C,CAAC;gCACF,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;oCAC5B,KAAK,GAAG,UAAU,CAAC;gCACrB,CAAC;gCACD,OAAO;4BACT,CAAC;4BAED,IAAI,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;gCAChC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gCAClB,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gCACnB,OAAO;4BACT,CAAC;4BAED,IAAI,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;gCAClC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BAChB,CAAC;wBACH,CAAC,CAAC;wBAEF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAErB,IAAI,KAAK,EAAE,CAAC;4BACV,OAAO;gCACL,IAAI,EAAE,eAAe;gCACrB,IAAI,EAAE,KAAK;gCACX,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;6BACtE,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,6DAA6D;IAC7D,wEAAwE;IAExE,2DAA2D;IAC3D,iEAAiE;IACjE,MAAM,iBAAiB,GAAG,wCAAwC,CAChE,MAAM,EAAE,EAAE,EACV,OAAO,EACP,WAAW,CACZ,CAAC;IAEF,2EAA2E;IAC3E,8EAA8E;IAC9E,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;QACzB,IAAI,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC;QAC7B,MAAM,QAAQ,GAAI,OAA2B,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnF,OAAO,QAAQ,EAAE,MAAM,IAAI,QAAQ,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC;IAEL,2CAA2C;IAC3C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,YAAY;QAClB,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,iBAAiB;KAClB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Union and intersection type conversion
|
|
3
|
+
*/
|
|
4
|
+
import * as ts from "typescript";
|
|
5
|
+
import { IrType } from "../../../types.js";
|
|
6
|
+
import type { Binding } from "../../../binding/index.js";
|
|
7
|
+
/**
|
|
8
|
+
* Convert TypeScript union type to IR union type
|
|
9
|
+
*/
|
|
10
|
+
export declare const convertUnionType: (node: ts.UnionTypeNode, binding: Binding, convertType: (node: ts.TypeNode, binding: Binding) => IrType) => IrType;
|
|
11
|
+
/**
|
|
12
|
+
* Convert TypeScript intersection type to IR intersection type
|
|
13
|
+
*/
|
|
14
|
+
export declare const convertIntersectionType: (node: ts.IntersectionTypeNode, binding: Binding, convertType: (node: ts.TypeNode, binding: Binding) => IrType) => IrType;
|
|
15
|
+
//# sourceMappingURL=unions-intersections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unions-intersections.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/unions-intersections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,EAAE,CAAC,aAAa,EACtB,SAAS,OAAO,EAChB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,KAC3D,MAKF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,oBAAoB,EAC7B,SAAS,OAAO,EAChB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,KAC3D,MAKF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Union and intersection type conversion
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Convert TypeScript union type to IR union type
|
|
6
|
+
*/
|
|
7
|
+
export const convertUnionType = (node, binding, convertType) => {
|
|
8
|
+
return {
|
|
9
|
+
kind: "unionType",
|
|
10
|
+
types: node.types.map((t) => convertType(t, binding)),
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Convert TypeScript intersection type to IR intersection type
|
|
15
|
+
*/
|
|
16
|
+
export const convertIntersectionType = (node, binding, convertType) => {
|
|
17
|
+
return {
|
|
18
|
+
kind: "intersectionType",
|
|
19
|
+
types: node.types.map((t) => convertType(t, binding)),
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=unions-intersections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unions-intersections.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/unions-intersections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAsB,EACtB,OAAgB,EAChB,WAA4D,EACpD,EAAE;IACV,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,IAA6B,EAC7B,OAAgB,EAChB,WAA4D,EACpD,EAAE;IACV,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC,CAAC"}
|