@tsonic/frontend 0.0.62 → 0.0.63
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/dependency-graph.d.ts +1 -1
- package/dist/dependency-graph.d.ts.map +1 -1
- package/dist/dependency-graph.js +1 -1
- package/dist/dependency-graph.js.map +1 -1
- package/dist/dotnet-metadata.d.ts +0 -12
- package/dist/dotnet-metadata.d.ts.map +1 -1
- package/dist/dotnet-metadata.js +0 -24
- package/dist/dotnet-metadata.js.map +1 -1
- package/dist/generic-function-values.d.ts +11 -0
- package/dist/generic-function-values.d.ts.map +1 -0
- package/dist/generic-function-values.js +243 -0
- package/dist/generic-function-values.js.map +1 -0
- package/dist/generic-function-values.test.d.ts +2 -0
- package/dist/generic-function-values.test.d.ts.map +1 -0
- package/dist/generic-function-values.test.js +256 -0
- package/dist/generic-function-values.test.js.map +1 -0
- package/dist/graph/extraction/imports.d.ts +5 -0
- package/dist/graph/extraction/imports.d.ts.map +1 -1
- package/dist/graph/extraction/imports.js +30 -0
- package/dist/graph/extraction/imports.js.map +1 -1
- package/dist/graph/extraction/index.d.ts +1 -1
- package/dist/graph/extraction/index.d.ts.map +1 -1
- package/dist/graph/extraction/index.js +1 -1
- package/dist/graph/extraction/index.js.map +1 -1
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
- package/dist/graph/extraction/orchestrator.js +16 -2
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/graph/extraction.d.ts +1 -1
- package/dist/graph/extraction.d.ts.map +1 -1
- package/dist/graph/extraction.js +1 -1
- package/dist/graph/extraction.js.map +1 -1
- package/dist/ir/binding/binding-factory.d.ts +17 -0
- package/dist/ir/binding/binding-factory.d.ts.map +1 -0
- package/dist/ir/binding/binding-factory.js +765 -0
- package/dist/ir/binding/binding-factory.js.map +1 -0
- package/dist/ir/binding/binding-helpers.d.ts +90 -0
- package/dist/ir/binding/binding-helpers.d.ts.map +1 -0
- package/dist/ir/binding/binding-helpers.js +387 -0
- package/dist/ir/binding/binding-helpers.js.map +1 -0
- package/dist/ir/binding/binding-types.d.ts +203 -0
- package/dist/ir/binding/binding-types.d.ts.map +1 -0
- package/dist/ir/binding/binding-types.js +9 -0
- package/dist/ir/binding/binding-types.js.map +1 -0
- package/dist/ir/binding/index.d.ts +4 -158
- package/dist/ir/binding/index.d.ts.map +1 -1
- package/dist/ir/binding/index.js +3 -1134
- package/dist/ir/binding/index.js.map +1 -1
- package/dist/ir/builder.test.js +223 -0
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.d.ts +3 -3
- package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.js +45 -8
- package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
- package/dist/ir/converters/expressions/access/access-converter.d.ts +14 -0
- package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -0
- package/dist/ir/converters/expressions/access/access-converter.js +141 -0
- package/dist/ir/converters/expressions/access/access-converter.js.map +1 -0
- package/dist/ir/converters/expressions/access/binding-resolution.d.ts +35 -0
- package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -0
- package/dist/ir/converters/expressions/access/binding-resolution.js +384 -0
- package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -0
- package/dist/ir/converters/expressions/access/member-resolution.d.ts +67 -0
- package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -0
- package/dist/ir/converters/expressions/access/member-resolution.js +262 -0
- package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -0
- package/dist/ir/converters/expressions/access.d.ts +1 -7
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +1 -720
- package/dist/ir/converters/expressions/access.js.map +1 -1
- package/dist/ir/converters/expressions/calls/call-converter.d.ts +23 -0
- package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -0
- package/dist/ir/converters/expressions/calls/call-converter.js +526 -0
- package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -0
- package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +53 -0
- package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -0
- package/dist/ir/converters/expressions/calls/call-site-analysis.js +554 -0
- package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -0
- package/dist/ir/converters/expressions/calls/new-converter.d.ts +21 -0
- package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -0
- package/dist/ir/converters/expressions/calls/new-converter.js +182 -0
- package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -0
- package/dist/ir/converters/expressions/calls.d.ts +2 -28
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
- package/dist/ir/converters/expressions/calls.js +2 -1344
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
- package/dist/ir/converters/expressions/collections.js +37 -6
- package/dist/ir/converters/expressions/collections.js.map +1 -1
- package/dist/ir/converters/expressions/functions.js +1 -1
- package/dist/ir/converters/expressions/functions.js.map +1 -1
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
- package/dist/ir/converters/expressions/helpers.js +1 -0
- package/dist/ir/converters/expressions/helpers.js.map +1 -1
- package/dist/ir/converters/expressions/other.d.ts.map +1 -1
- package/dist/ir/converters/expressions/other.js +3 -2
- package/dist/ir/converters/expressions/other.js.map +1 -1
- package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
- package/dist/ir/converters/flow-narrowing.js +3 -2
- package/dist/ir/converters/flow-narrowing.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.js +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.js +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts +2 -2
- package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.js +289 -2
- package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
- package/dist/ir/expression-converter.d.ts +0 -1
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +0 -2
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/generic-function-value-lowering.test.d.ts +2 -0
- package/dist/ir/generic-function-value-lowering.test.d.ts.map +1 -0
- package/dist/ir/generic-function-value-lowering.test.js +312 -0
- package/dist/ir/generic-function-value-lowering.test.js.map +1 -0
- package/dist/ir/generic-validator.d.ts +3 -4
- package/dist/ir/generic-validator.d.ts.map +1 -1
- package/dist/ir/generic-validator.js +3 -35
- package/dist/ir/generic-validator.js.map +1 -1
- package/dist/ir/program-context.d.ts +7 -0
- package/dist/ir/program-context.d.ts.map +1 -1
- package/dist/ir/program-context.js +1 -0
- package/dist/ir/program-context.js.map +1 -1
- package/dist/ir/statement-converter.d.ts +0 -2
- package/dist/ir/statement-converter.d.ts.map +1 -1
- package/dist/ir/statement-converter.js +0 -3
- package/dist/ir/statement-converter.js.map +1 -1
- package/dist/ir/type-system/internal/handle-types.d.ts +16 -16
- package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
- package/dist/ir/type-system/internal/nominal-env.d.ts +0 -2
- package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
- package/dist/ir/type-system/internal/nominal-env.js +2 -6
- package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/converter.d.ts +3 -1
- package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/converter.js +3 -1
- package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/objects.js +7 -1
- package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +0 -2
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.js +315 -23
- package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts +2 -0
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +265 -0
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/primitives.js +5 -0
- package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/references.js +67 -29
- package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/utility-types.js +145 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/utility-types.test.js +91 -1
- package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
- package/dist/ir/type-system/internal/type-registry.d.ts +1 -1
- package/dist/ir/type-system/internal/type-registry.js +7 -7
- package/dist/ir/type-system/internal/type-registry.js.map +1 -1
- package/dist/ir/type-system/internal/universe/alias-table.d.ts +0 -14
- package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/alias-table.js +0 -17
- package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +3 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.js +4 -1044
- package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +51 -0
- package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-entry-converter.js +657 -0
- package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +52 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.js +415 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -0
- package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
- package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/index.js +1 -3
- package/dist/ir/type-system/internal/universe/index.js.map +1 -1
- package/dist/ir/type-system/internal/universe/unified-universe.test.js +2 -0
- package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -1
- package/dist/ir/type-system/type-system-call-resolution.d.ts +69 -0
- package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-call-resolution.js +1121 -0
- package/dist/ir/type-system/type-system-call-resolution.js.map +1 -0
- package/dist/ir/type-system/type-system-inference.d.ts +98 -0
- package/dist/ir/type-system/type-system-inference.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-inference.js +1083 -0
- package/dist/ir/type-system/type-system-inference.js.map +1 -0
- package/dist/ir/type-system/type-system-relations.d.ts +15 -0
- package/dist/ir/type-system/type-system-relations.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-relations.js +152 -0
- package/dist/ir/type-system/type-system-relations.js.map +1 -0
- package/dist/ir/type-system/type-system-state.d.ts +436 -0
- package/dist/ir/type-system/type-system-state.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-state.js +212 -0
- package/dist/ir/type-system/type-system-state.js.map +1 -0
- package/dist/ir/type-system/type-system-utilities.d.ts +56 -0
- package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-utilities.js +373 -0
- package/dist/ir/type-system/type-system-utilities.js.map +1 -0
- package/dist/ir/type-system/type-system.d.ts +17 -358
- package/dist/ir/type-system/type-system.d.ts.map +1 -1
- package/dist/ir/type-system/type-system.js +67 -2945
- package/dist/ir/type-system/type-system.js.map +1 -1
- package/dist/ir/types/index.d.ts +1 -0
- 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.js +1 -1
- package/dist/ir/types/ir-substitution.js.map +1 -1
- package/dist/ir/types/statements.d.ts +1 -1
- package/dist/ir/types/type-ops.d.ts +9 -0
- package/dist/ir/types/type-ops.d.ts.map +1 -0
- package/dist/ir/types/type-ops.js +134 -0
- package/dist/ir/types/type-ops.js.map +1 -0
- package/dist/ir/types/type-ops.test.d.ts +2 -0
- package/dist/ir/types/type-ops.test.d.ts.map +1 -0
- package/dist/ir/types/type-ops.test.js +73 -0
- package/dist/ir/types/type-ops.test.js.map +1 -0
- package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +58 -0
- package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -0
- package/dist/ir/validation/attribute-collection/arg-extractor.js +284 -0
- package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -0
- package/dist/ir/validation/attribute-collection/marker-parser.d.ts +28 -0
- package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -0
- package/dist/ir/validation/attribute-collection/marker-parser.js +404 -0
- package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -0
- package/dist/ir/validation/attribute-collection/orchestrator.d.ts +28 -0
- package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -0
- package/dist/ir/validation/attribute-collection/orchestrator.js +332 -0
- package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.d.ts +1 -23
- package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.js +1 -961
- package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.test.js +12 -6
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +2 -1
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/soundness-gate.test.js +69 -0
- package/dist/ir/validation/soundness-gate.test.js.map +1 -1
- package/dist/ir/validation/yield-lowering-pass.d.ts +11 -5
- package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/yield-lowering-pass.js +942 -48
- package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
- package/dist/ir/validation/yield-lowering-pass.test.js +1333 -127
- package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
- package/dist/program/binding-loader.d.ts +37 -0
- package/dist/program/binding-loader.d.ts.map +1 -0
- package/dist/program/binding-loader.js +155 -0
- package/dist/program/binding-loader.js.map +1 -0
- package/dist/program/binding-registry.d.ts +106 -0
- package/dist/program/binding-registry.d.ts.map +1 -0
- package/dist/program/binding-registry.js +590 -0
- package/dist/program/binding-registry.js.map +1 -0
- package/dist/program/binding-types.d.ts +166 -0
- package/dist/program/binding-types.d.ts.map +1 -0
- package/dist/program/binding-types.js +57 -0
- package/dist/program/binding-types.js.map +1 -0
- package/dist/program/bindings.d.ts +6 -271
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +7 -781
- package/dist/program/bindings.js.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts +0 -1
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +22 -32
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/clr-bindings-resolver.test.js +0 -27
- package/dist/resolver/clr-bindings-resolver.test.js.map +1 -1
- package/dist/resolver/import-resolution.d.ts +1 -1
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +2 -7
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +1 -0
- package/dist/resolver/naming.js.map +1 -1
- package/dist/types/diagnostic.d.ts +1 -1
- package/dist/types/diagnostic.d.ts.map +1 -1
- package/dist/types/diagnostic.js.map +1 -1
- package/dist/validation/features.d.ts.map +1 -1
- package/dist/validation/features.js +38 -13
- package/dist/validation/features.js.map +1 -1
- package/dist/validation/features.test.d.ts +2 -0
- package/dist/validation/features.test.d.ts.map +1 -0
- package/dist/validation/features.test.js +273 -0
- package/dist/validation/features.test.js.map +1 -0
- package/dist/validation/generics.d.ts +1 -1
- package/dist/validation/generics.d.ts.map +1 -1
- package/dist/validation/generics.js +2 -26
- package/dist/validation/generics.js.map +1 -1
- package/dist/validation/imports.d.ts.map +1 -1
- package/dist/validation/imports.js +2 -1
- package/dist/validation/imports.js.map +1 -1
- package/dist/validation/imports.test.d.ts +2 -0
- package/dist/validation/imports.test.d.ts.map +1 -0
- package/dist/validation/imports.test.js +112 -0
- package/dist/validation/imports.test.js.map +1 -0
- package/dist/validation/static-safety.d.ts +6 -6
- package/dist/validation/static-safety.d.ts.map +1 -1
- package/dist/validation/static-safety.js +163 -109
- package/dist/validation/static-safety.js.map +1 -1
- package/dist/validation/unsupported-utility-types.d.ts +3 -3
- package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
- package/dist/validation/unsupported-utility-types.js +4 -7
- package/dist/validation/unsupported-utility-types.js.map +1 -1
- package/dist/validator.maximus.test.d.ts +2 -0
- package/dist/validator.maximus.test.d.ts.map +1 -0
- package/dist/validator.maximus.test.js +1214 -0
- package/dist/validator.maximus.test.js.map +1 -0
- package/dist/validator.test.js +152 -18
- package/dist/validator.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/ir/converters/statements/declarations/registry.d.ts +0 -96
- package/dist/ir/converters/statements/declarations/registry.d.ts.map +0 -1
- package/dist/ir/converters/statements/declarations/registry.js +0 -130
- package/dist/ir/converters/statements/declarations/registry.js.map +0 -1
- package/dist/ir/this-parameter-inference.test.d.ts +0 -13
- package/dist/ir/this-parameter-inference.test.d.ts.map +0 -1
- package/dist/ir/this-parameter-inference.test.js +0 -165
- package/dist/ir/this-parameter-inference.test.js.map +0 -1
- package/dist/metadata/bindings-loader.d.ts +0 -41
- package/dist/metadata/bindings-loader.d.ts.map +0 -1
- package/dist/metadata/bindings-loader.js +0 -308
- package/dist/metadata/bindings-loader.js.map +0 -1
- package/dist/metadata/bindings-loader.test.d.ts +0 -5
- package/dist/metadata/bindings-loader.test.d.ts.map +0 -1
- package/dist/metadata/bindings-loader.test.js +0 -117
- package/dist/metadata/bindings-loader.test.js.map +0 -1
- package/dist/metadata/index.d.ts +0 -8
- package/dist/metadata/index.d.ts.map +0 -1
- package/dist/metadata/index.js +0 -7
- package/dist/metadata/index.js.map +0 -1
- package/dist/metadata/library-loader.d.ts +0 -42
- package/dist/metadata/library-loader.d.ts.map +0 -1
- package/dist/metadata/library-loader.js +0 -126
- package/dist/metadata/library-loader.js.map +0 -1
- package/dist/metadata/loader.d.ts +0 -26
- package/dist/metadata/loader.d.ts.map +0 -1
- package/dist/metadata/loader.js +0 -333
- package/dist/metadata/loader.js.map +0 -1
- package/dist/metadata/loader.test.d.ts +0 -5
- package/dist/metadata/loader.test.d.ts.map +0 -1
- package/dist/metadata/loader.test.js +0 -119
- package/dist/metadata/loader.test.js.map +0 -1
- package/dist/resolver/naming-policy.d.ts +0 -20
- package/dist/resolver/naming-policy.d.ts.map +0 -1
- package/dist/resolver/naming-policy.js +0 -40
- package/dist/resolver/naming-policy.js.map +0 -1
- package/dist/types/bindings.d.ts +0 -153
- package/dist/types/bindings.d.ts.map +0 -1
- package/dist/types/bindings.js +0 -14
- package/dist/types/bindings.js.map +0 -1
- package/dist/types/metadata.d.ts +0 -196
- package/dist/types/metadata.d.ts.map +0 -1
- package/dist/types/metadata.js +0 -10
- package/dist/types/metadata.js.map +0 -1
- package/dist/types/nested-types.d.ts +0 -111
- package/dist/types/nested-types.d.ts.map +0 -1
- package/dist/types/nested-types.js +0 -176
- package/dist/types/nested-types.js.map +0 -1
- package/dist/types/nested-types.test.d.ts +0 -5
- package/dist/types/nested-types.test.d.ts.map +0 -1
- package/dist/types/nested-types.test.js +0 -135
- package/dist/types/nested-types.test.js.map +0 -1
- package/dist/types/ref-parameters.d.ts +0 -123
- package/dist/types/ref-parameters.d.ts.map +0 -1
- package/dist/types/ref-parameters.js +0 -203
- package/dist/types/ref-parameters.js.map +0 -1
- package/dist/types/ref-parameters.test.d.ts +0 -5
- package/dist/types/ref-parameters.test.d.ts.map +0 -1
- package/dist/types/ref-parameters.test.js +0 -147
- package/dist/types/ref-parameters.test.js.map +0 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeSystem Utilities — Utility Type Expansion
|
|
3
|
+
*
|
|
4
|
+
* Implements all 13 TypeScript utility types with deterministic constraints.
|
|
5
|
+
*
|
|
6
|
+
* DAG position: depends on type-system-state + type-system-relations
|
|
7
|
+
*/
|
|
8
|
+
import type { IrType, IrInterfaceMember, IrReferenceType } from "../types/index.js";
|
|
9
|
+
import type { UtilityTypeName } from "./types.js";
|
|
10
|
+
import type { TypeSystemState, Site } from "./type-system-state.js";
|
|
11
|
+
export declare const expandUtility: (state: TypeSystemState, name: UtilityTypeName, args: readonly IrType[], site?: Site) => IrType;
|
|
12
|
+
/**
|
|
13
|
+
* Expand NonNullable<T>: Filter out null and undefined from union
|
|
14
|
+
*/
|
|
15
|
+
export declare const expandNonNullableUtility: (type: IrType) => IrType;
|
|
16
|
+
/**
|
|
17
|
+
* Expand Partial/Required/Readonly<T>: Mapped type transformation
|
|
18
|
+
*/
|
|
19
|
+
export declare const expandMappedUtility: (state: TypeSystemState, type: IrType, mode: "optional" | "required" | "readonly", site?: Site) => IrType;
|
|
20
|
+
/**
|
|
21
|
+
* Transform members for Partial/Required/Readonly
|
|
22
|
+
*/
|
|
23
|
+
export declare const transformMembers: (members: readonly IrInterfaceMember[], mode: "optional" | "required" | "readonly") => IrInterfaceMember[];
|
|
24
|
+
/**
|
|
25
|
+
* Get structural members for a reference type
|
|
26
|
+
*/
|
|
27
|
+
export declare const getStructuralMembersForType: (state: TypeSystemState, type: IrReferenceType) => readonly IrInterfaceMember[];
|
|
28
|
+
/**
|
|
29
|
+
* Expand Pick/Omit<T, K>: Filter members by keys
|
|
30
|
+
*/
|
|
31
|
+
export declare const expandPickOmitUtility: (state: TypeSystemState, type: IrType, keysType: IrType, isPick: boolean, site?: Site) => IrType;
|
|
32
|
+
/**
|
|
33
|
+
* Extract literal keys from a type (string literals or union of string literals)
|
|
34
|
+
*/
|
|
35
|
+
export declare const extractLiteralKeys: (type: IrType) => Set<string> | null;
|
|
36
|
+
/**
|
|
37
|
+
* Expand ReturnType<F>: Extract return type from function type
|
|
38
|
+
*/
|
|
39
|
+
export declare const expandReturnTypeUtility: (state: TypeSystemState, type: IrType, site?: Site) => IrType;
|
|
40
|
+
/**
|
|
41
|
+
* Expand Parameters<F>: Extract parameters as tuple from function type
|
|
42
|
+
*/
|
|
43
|
+
export declare const expandParametersUtility: (state: TypeSystemState, type: IrType, site?: Site) => IrType;
|
|
44
|
+
/**
|
|
45
|
+
* Expand Exclude<T, U> or Extract<T, U>
|
|
46
|
+
*/
|
|
47
|
+
export declare const expandExcludeExtractUtility: (tType: IrType, uType: IrType, isExtract: boolean) => IrType;
|
|
48
|
+
/**
|
|
49
|
+
* Expand Awaited<T>: Recursively unwrap Promise/Task/ValueTask.
|
|
50
|
+
*/
|
|
51
|
+
export declare const expandAwaitedUtility: (type: IrType) => IrType;
|
|
52
|
+
/**
|
|
53
|
+
* Expand Record<K, V>: Create dictionary or object type.
|
|
54
|
+
*/
|
|
55
|
+
export declare const expandRecordUtility: (state: TypeSystemState, keyArg: IrType, valueArg: IrType, site?: Site) => IrType;
|
|
56
|
+
//# sourceMappingURL=type-system-utilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-system-utilities.d.ts","sourceRoot":"","sources":["../../../src/ir/type-system/type-system-utilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EAEjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAiBpE,eAAO,MAAM,aAAa,GACxB,OAAO,eAAe,EACtB,MAAM,eAAe,EACrB,MAAM,SAAS,MAAM,EAAE,EACvB,OAAO,IAAI,KACV,MA2HF,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,KAAG,MAqBvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,eAAe,EACtB,MAAM,MAAM,EACZ,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,EAC1C,OAAO,IAAI,KACV,MAmCF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,SAAS,iBAAiB,EAAE,EACrC,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,KACzC,iBAAiB,EAgBnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,eAAe,EACtB,MAAM,eAAe,KACpB,SAAS,iBAAiB,EAyB5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,eAAe,EACtB,MAAM,MAAM,EACZ,UAAU,MAAM,EAChB,QAAQ,OAAO,EACf,OAAO,IAAI,KACV,MAoCF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAoB/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,eAAe,EACtB,MAAM,MAAM,EACZ,OAAO,IAAI,KACV,MAWF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,eAAe,EACtB,MAAM,MAAM,EACZ,OAAO,IAAI,KACV,MAcF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,MAAM,EACb,OAAO,MAAM,EACb,WAAW,OAAO,KACjB,MAwBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,MAyCnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,eAAe,EACtB,QAAQ,MAAM,EACd,UAAU,MAAM,EAChB,OAAO,IAAI,KACV,MAkCF,CAAC"}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeSystem Utilities — Utility Type Expansion
|
|
3
|
+
*
|
|
4
|
+
* Implements all 13 TypeScript utility types with deterministic constraints.
|
|
5
|
+
*
|
|
6
|
+
* DAG position: depends on type-system-state + type-system-relations
|
|
7
|
+
*/
|
|
8
|
+
import { unknownType, neverType, voidType } from "./types.js";
|
|
9
|
+
import { emitDiagnostic, isNullishPrimitive } from "./type-system-state.js";
|
|
10
|
+
import { typesEqual, containsTypeParameter } from "./type-system-relations.js";
|
|
11
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
12
|
+
// expandUtility — Utility type expansion (Step 8)
|
|
13
|
+
//
|
|
14
|
+
// Implements all 13 utility types with deterministic constraints:
|
|
15
|
+
// - Partial/Required/Readonly: T must be object-like
|
|
16
|
+
// - Pick/Omit: K must be string literal union (finite keys)
|
|
17
|
+
// - ReturnType/Parameters: F must be function type
|
|
18
|
+
// - NonNullable: Works on any type
|
|
19
|
+
// - Exclude/Extract: Works on any types
|
|
20
|
+
// - Awaited: Recursive on Promise<T>, Task<T>, ValueTask<T>
|
|
21
|
+
// - Record: K must be finite literal union (string/number infinite → dictionary)
|
|
22
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
23
|
+
export const expandUtility = (state, name, args, site) => {
|
|
24
|
+
const firstArg = args[0];
|
|
25
|
+
if (!firstArg) {
|
|
26
|
+
emitDiagnostic(state, "TSN7414", `Utility type '${name}' requires a type argument`, site);
|
|
27
|
+
return unknownType;
|
|
28
|
+
}
|
|
29
|
+
// For utility types that operate on T where T is a type parameter,
|
|
30
|
+
// return a reference type that preserves the utility type structure.
|
|
31
|
+
// This allows downstream substitution to expand it later.
|
|
32
|
+
if (containsTypeParameter(firstArg)) {
|
|
33
|
+
// NonNullable, Exclude, Extract, Awaited can still partially evaluate
|
|
34
|
+
if (name !== "NonNullable" &&
|
|
35
|
+
name !== "Exclude" &&
|
|
36
|
+
name !== "Extract" &&
|
|
37
|
+
name !== "Awaited") {
|
|
38
|
+
return {
|
|
39
|
+
kind: "referenceType",
|
|
40
|
+
name,
|
|
41
|
+
typeArguments: [...args],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
switch (name) {
|
|
46
|
+
case "Partial":
|
|
47
|
+
return expandMappedUtility(state, firstArg, "optional", site);
|
|
48
|
+
case "Required":
|
|
49
|
+
return expandMappedUtility(state, firstArg, "required", site);
|
|
50
|
+
case "Readonly":
|
|
51
|
+
return expandMappedUtility(state, firstArg, "readonly", site);
|
|
52
|
+
case "Pick": {
|
|
53
|
+
const keysArg = args[1];
|
|
54
|
+
if (!keysArg) {
|
|
55
|
+
emitDiagnostic(state, "TSN7414", "Pick requires two type arguments", site);
|
|
56
|
+
return unknownType;
|
|
57
|
+
}
|
|
58
|
+
return expandPickOmitUtility(state, firstArg, keysArg, true, site);
|
|
59
|
+
}
|
|
60
|
+
case "Omit": {
|
|
61
|
+
const keysArg = args[1];
|
|
62
|
+
if (!keysArg) {
|
|
63
|
+
emitDiagnostic(state, "TSN7414", "Omit requires two type arguments", site);
|
|
64
|
+
return unknownType;
|
|
65
|
+
}
|
|
66
|
+
return expandPickOmitUtility(state, firstArg, keysArg, false, site);
|
|
67
|
+
}
|
|
68
|
+
case "Record": {
|
|
69
|
+
const valueArg = args[1];
|
|
70
|
+
if (!valueArg) {
|
|
71
|
+
emitDiagnostic(state, "TSN7414", "Record requires two type arguments", site);
|
|
72
|
+
return unknownType;
|
|
73
|
+
}
|
|
74
|
+
return expandRecordUtility(state, firstArg, valueArg, site);
|
|
75
|
+
}
|
|
76
|
+
case "Exclude": {
|
|
77
|
+
const uArg = args[1];
|
|
78
|
+
if (!uArg) {
|
|
79
|
+
emitDiagnostic(state, "TSN7414", "Exclude requires two type arguments", site);
|
|
80
|
+
return unknownType;
|
|
81
|
+
}
|
|
82
|
+
return expandExcludeExtractUtility(firstArg, uArg, false);
|
|
83
|
+
}
|
|
84
|
+
case "Extract": {
|
|
85
|
+
const uArg = args[1];
|
|
86
|
+
if (!uArg) {
|
|
87
|
+
emitDiagnostic(state, "TSN7414", "Extract requires two type arguments", site);
|
|
88
|
+
return unknownType;
|
|
89
|
+
}
|
|
90
|
+
return expandExcludeExtractUtility(firstArg, uArg, true);
|
|
91
|
+
}
|
|
92
|
+
case "NonNullable":
|
|
93
|
+
return expandNonNullableUtility(firstArg);
|
|
94
|
+
case "ReturnType":
|
|
95
|
+
return expandReturnTypeUtility(state, firstArg, site);
|
|
96
|
+
case "Parameters":
|
|
97
|
+
return expandParametersUtility(state, firstArg, site);
|
|
98
|
+
case "Awaited":
|
|
99
|
+
return expandAwaitedUtility(firstArg);
|
|
100
|
+
case "InstanceType":
|
|
101
|
+
// InstanceType<T> - not fully supported yet, return as-is
|
|
102
|
+
return firstArg;
|
|
103
|
+
default:
|
|
104
|
+
emitDiagnostic(state, "TSN7414", `Unsupported utility type '${name}'`, site);
|
|
105
|
+
return unknownType;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
109
|
+
// Utility Type Helper Functions
|
|
110
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
111
|
+
/**
|
|
112
|
+
* Expand NonNullable<T>: Filter out null and undefined from union
|
|
113
|
+
*/
|
|
114
|
+
export const expandNonNullableUtility = (type) => {
|
|
115
|
+
// Direct null/undefined
|
|
116
|
+
if (isNullishPrimitive(type)) {
|
|
117
|
+
return neverType;
|
|
118
|
+
}
|
|
119
|
+
// Not a union - return as-is
|
|
120
|
+
if (type.kind !== "unionType") {
|
|
121
|
+
return type;
|
|
122
|
+
}
|
|
123
|
+
// Filter out null and undefined from union
|
|
124
|
+
const filtered = type.types.filter((t) => !isNullishPrimitive(t));
|
|
125
|
+
if (filtered.length === 0) {
|
|
126
|
+
return neverType;
|
|
127
|
+
}
|
|
128
|
+
if (filtered.length === 1 && filtered[0]) {
|
|
129
|
+
return filtered[0];
|
|
130
|
+
}
|
|
131
|
+
return { kind: "unionType", types: filtered };
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Expand Partial/Required/Readonly<T>: Mapped type transformation
|
|
135
|
+
*/
|
|
136
|
+
export const expandMappedUtility = (state, type, mode, site) => {
|
|
137
|
+
// Must be object-like
|
|
138
|
+
if (type.kind !== "objectType") {
|
|
139
|
+
// For reference types, we need structural members
|
|
140
|
+
if (type.kind === "referenceType") {
|
|
141
|
+
// Try to get structural members from type
|
|
142
|
+
const members = getStructuralMembersForType(state, type);
|
|
143
|
+
if (members.length === 0) {
|
|
144
|
+
emitDiagnostic(state, "TSN7414", `${mode === "optional" ? "Partial" : mode === "required" ? "Required" : "Readonly"} requires a concrete object type`, site);
|
|
145
|
+
return unknownType;
|
|
146
|
+
}
|
|
147
|
+
// Transform the members
|
|
148
|
+
return {
|
|
149
|
+
kind: "objectType",
|
|
150
|
+
members: transformMembers(members, mode),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
emitDiagnostic(state, "TSN7414", `${mode === "optional" ? "Partial" : mode === "required" ? "Required" : "Readonly"} requires an object type`, site);
|
|
154
|
+
return unknownType;
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
kind: "objectType",
|
|
158
|
+
members: transformMembers(type.members, mode),
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Transform members for Partial/Required/Readonly
|
|
163
|
+
*/
|
|
164
|
+
export const transformMembers = (members, mode) => {
|
|
165
|
+
return members.map((m) => {
|
|
166
|
+
if (m.kind === "propertySignature") {
|
|
167
|
+
return {
|
|
168
|
+
...m,
|
|
169
|
+
isOptional: mode === "optional"
|
|
170
|
+
? true
|
|
171
|
+
: mode === "required"
|
|
172
|
+
? false
|
|
173
|
+
: m.isOptional,
|
|
174
|
+
isReadonly: mode === "readonly" ? true : m.isReadonly,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return m;
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Get structural members for a reference type
|
|
182
|
+
*/
|
|
183
|
+
export const getStructuralMembersForType = (state, type) => {
|
|
184
|
+
if (type.structuralMembers) {
|
|
185
|
+
return type.structuralMembers;
|
|
186
|
+
}
|
|
187
|
+
// Try to look up in registry
|
|
188
|
+
const fqName = state.typeRegistry.getFQName(type.name);
|
|
189
|
+
const entry = fqName
|
|
190
|
+
? state.typeRegistry.resolveNominal(fqName)
|
|
191
|
+
: state.typeRegistry.resolveBySimpleName(type.name);
|
|
192
|
+
if (!entry)
|
|
193
|
+
return [];
|
|
194
|
+
// Convert registry members to IR members
|
|
195
|
+
const members = [];
|
|
196
|
+
entry.members.forEach((info, name) => {
|
|
197
|
+
if (info.kind === "property" && info.type) {
|
|
198
|
+
members.push({
|
|
199
|
+
kind: "propertySignature",
|
|
200
|
+
name,
|
|
201
|
+
type: info.type,
|
|
202
|
+
isOptional: info.isOptional,
|
|
203
|
+
isReadonly: info.isReadonly,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
return members;
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* Expand Pick/Omit<T, K>: Filter members by keys
|
|
211
|
+
*/
|
|
212
|
+
export const expandPickOmitUtility = (state, type, keysType, isPick, site) => {
|
|
213
|
+
// Extract literal keys from keysType
|
|
214
|
+
const keys = extractLiteralKeys(keysType);
|
|
215
|
+
if (keys === null) {
|
|
216
|
+
emitDiagnostic(state, "TSN7414", `${isPick ? "Pick" : "Omit"} requires literal string keys`, site);
|
|
217
|
+
return unknownType;
|
|
218
|
+
}
|
|
219
|
+
// Get members from type
|
|
220
|
+
let members;
|
|
221
|
+
if (type.kind === "objectType") {
|
|
222
|
+
members = type.members;
|
|
223
|
+
}
|
|
224
|
+
else if (type.kind === "referenceType") {
|
|
225
|
+
members = getStructuralMembersForType(state, type);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
emitDiagnostic(state, "TSN7414", `${isPick ? "Pick" : "Omit"} requires an object type`, site);
|
|
229
|
+
return unknownType;
|
|
230
|
+
}
|
|
231
|
+
// Filter members
|
|
232
|
+
const filtered = members.filter((m) => {
|
|
233
|
+
const include = isPick ? keys.has(m.name) : !keys.has(m.name);
|
|
234
|
+
return include;
|
|
235
|
+
});
|
|
236
|
+
return { kind: "objectType", members: filtered };
|
|
237
|
+
};
|
|
238
|
+
/**
|
|
239
|
+
* Extract literal keys from a type (string literals or union of string literals)
|
|
240
|
+
*/
|
|
241
|
+
export const extractLiteralKeys = (type) => {
|
|
242
|
+
if (type.kind === "literalType" && typeof type.value === "string") {
|
|
243
|
+
return new Set([type.value]);
|
|
244
|
+
}
|
|
245
|
+
if (type.kind === "unionType") {
|
|
246
|
+
const keys = new Set();
|
|
247
|
+
for (const t of type.types) {
|
|
248
|
+
if (t.kind === "literalType" && typeof t.value === "string") {
|
|
249
|
+
keys.add(t.value);
|
|
250
|
+
}
|
|
251
|
+
else if (t.kind === "literalType" && typeof t.value === "number") {
|
|
252
|
+
keys.add(String(t.value));
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
return null; // Non-literal in union
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return keys;
|
|
259
|
+
}
|
|
260
|
+
return null;
|
|
261
|
+
};
|
|
262
|
+
/**
|
|
263
|
+
* Expand ReturnType<F>: Extract return type from function type
|
|
264
|
+
*/
|
|
265
|
+
export const expandReturnTypeUtility = (state, type, site) => {
|
|
266
|
+
if (type.kind === "functionType") {
|
|
267
|
+
return type.returnType ?? voidType;
|
|
268
|
+
}
|
|
269
|
+
emitDiagnostic(state, "TSN7414", `ReturnType requires a function type argument`, site);
|
|
270
|
+
return unknownType;
|
|
271
|
+
};
|
|
272
|
+
/**
|
|
273
|
+
* Expand Parameters<F>: Extract parameters as tuple from function type
|
|
274
|
+
*/
|
|
275
|
+
export const expandParametersUtility = (state, type, site) => {
|
|
276
|
+
if (type.kind === "functionType") {
|
|
277
|
+
const elementTypes = type.parameters.map((p) => p.type ?? { kind: "anyType" });
|
|
278
|
+
return { kind: "tupleType", elementTypes };
|
|
279
|
+
}
|
|
280
|
+
emitDiagnostic(state, "TSN7414", `Parameters requires a function type argument`, site);
|
|
281
|
+
return unknownType;
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* Expand Exclude<T, U> or Extract<T, U>
|
|
285
|
+
*/
|
|
286
|
+
export const expandExcludeExtractUtility = (tType, uType, isExtract) => {
|
|
287
|
+
// If T is not a union, check if it matches U
|
|
288
|
+
if (tType.kind !== "unionType") {
|
|
289
|
+
const matches = typesEqual(tType, uType) ||
|
|
290
|
+
(uType.kind === "unionType" &&
|
|
291
|
+
uType.types.some((u) => typesEqual(tType, u)));
|
|
292
|
+
if (isExtract) {
|
|
293
|
+
return matches ? tType : neverType;
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
return matches ? neverType : tType;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// T is a union - filter its constituents
|
|
300
|
+
const uTypes = uType.kind === "unionType" ? uType.types : [uType];
|
|
301
|
+
const filtered = tType.types.filter((t) => {
|
|
302
|
+
const matches = uTypes.some((u) => typesEqual(t, u));
|
|
303
|
+
return isExtract ? matches : !matches;
|
|
304
|
+
});
|
|
305
|
+
if (filtered.length === 0)
|
|
306
|
+
return neverType;
|
|
307
|
+
if (filtered.length === 1 && filtered[0])
|
|
308
|
+
return filtered[0];
|
|
309
|
+
return { kind: "unionType", types: filtered };
|
|
310
|
+
};
|
|
311
|
+
/**
|
|
312
|
+
* Expand Awaited<T>: Recursively unwrap Promise/Task/ValueTask.
|
|
313
|
+
*/
|
|
314
|
+
export const expandAwaitedUtility = (type) => {
|
|
315
|
+
// Direct Promise<T>
|
|
316
|
+
if (type.kind === "referenceType") {
|
|
317
|
+
if ((type.name === "Promise" || type.name === "PromiseLike") &&
|
|
318
|
+
(type.typeArguments?.length ?? 0) === 1) {
|
|
319
|
+
const inner = type.typeArguments?.[0];
|
|
320
|
+
return inner ? expandAwaitedUtility(inner) : type;
|
|
321
|
+
}
|
|
322
|
+
// CLR async types
|
|
323
|
+
const clrName = type.typeId?.clrName;
|
|
324
|
+
// Non-generic Task/ValueTask → void
|
|
325
|
+
if (clrName === "System.Threading.Tasks.Task" ||
|
|
326
|
+
clrName === "System.Threading.Tasks.ValueTask") {
|
|
327
|
+
if (!type.typeArguments || type.typeArguments.length === 0) {
|
|
328
|
+
return voidType;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// Generic Task<T>/ValueTask<T>
|
|
332
|
+
if (clrName?.startsWith("System.Threading.Tasks.Task`") ||
|
|
333
|
+
clrName?.startsWith("System.Threading.Tasks.ValueTask`")) {
|
|
334
|
+
const inner = type.typeArguments?.[0];
|
|
335
|
+
return inner ? expandAwaitedUtility(inner) : type;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// Union: Awaited each member
|
|
339
|
+
if (type.kind === "unionType") {
|
|
340
|
+
const expanded = type.types.map(expandAwaitedUtility);
|
|
341
|
+
return { kind: "unionType", types: expanded };
|
|
342
|
+
}
|
|
343
|
+
return type;
|
|
344
|
+
};
|
|
345
|
+
/**
|
|
346
|
+
* Expand Record<K, V>: Create dictionary or object type.
|
|
347
|
+
*/
|
|
348
|
+
export const expandRecordUtility = (state, keyArg, valueArg, site) => {
|
|
349
|
+
// string or number → dictionary type
|
|
350
|
+
if (keyArg.kind === "primitiveType" &&
|
|
351
|
+
(keyArg.name === "string" || keyArg.name === "number")) {
|
|
352
|
+
return {
|
|
353
|
+
kind: "dictionaryType",
|
|
354
|
+
keyType: keyArg,
|
|
355
|
+
valueType: valueArg,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
// Finite literal union → object type
|
|
359
|
+
const keys = extractLiteralKeys(keyArg);
|
|
360
|
+
if (!keys) {
|
|
361
|
+
emitDiagnostic(state, "TSN7414", "Record key type must be string, number, or string literal union", site);
|
|
362
|
+
return unknownType;
|
|
363
|
+
}
|
|
364
|
+
const members = Array.from(keys).map((key) => ({
|
|
365
|
+
kind: "propertySignature",
|
|
366
|
+
name: key,
|
|
367
|
+
type: valueArg,
|
|
368
|
+
isOptional: false,
|
|
369
|
+
isReadonly: false,
|
|
370
|
+
}));
|
|
371
|
+
return { kind: "objectType", members };
|
|
372
|
+
};
|
|
373
|
+
//# sourceMappingURL=type-system-utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-system-utilities.js","sourceRoot":"","sources":["../../../src/ir/type-system/type-system-utilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAE/E,4EAA4E;AAC5E,kDAAkD;AAClD,EAAE;AACF,kEAAkE;AAClE,qDAAqD;AACrD,4DAA4D;AAC5D,mDAAmD;AACnD,mCAAmC;AACnC,wCAAwC;AACxC,4DAA4D;AAC5D,iFAAiF;AACjF,4EAA4E;AAE5E,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAsB,EACtB,IAAqB,EACrB,IAAuB,EACvB,IAAW,EACH,EAAE;IACV,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,cAAc,CACZ,KAAK,EACL,SAAS,EACT,iBAAiB,IAAI,4BAA4B,EACjD,IAAI,CACL,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,mEAAmE;IACnE,qEAAqE;IACrE,0DAA0D;IAC1D,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,sEAAsE;QACtE,IACE,IAAI,KAAK,aAAa;YACtB,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,SAAS,EAClB,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,eAAe;gBACrB,IAAI;gBACJ,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;aACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAChE,KAAK,UAAU;YACb,OAAO,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAChE,KAAK,UAAU;YACb,OAAO,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,cAAc,CACZ,KAAK,EACL,SAAS,EACT,kCAAkC,EAClC,IAAI,CACL,CAAC;gBACF,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,OAAO,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,cAAc,CACZ,KAAK,EACL,SAAS,EACT,kCAAkC,EAClC,IAAI,CACL,CAAC;gBACF,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,OAAO,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,cAAc,CACZ,KAAK,EACL,SAAS,EACT,oCAAoC,EACpC,IAAI,CACL,CAAC;gBACF,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,OAAO,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,cAAc,CACZ,KAAK,EACL,SAAS,EACT,qCAAqC,EACrC,IAAI,CACL,CAAC;gBACF,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,OAAO,2BAA2B,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,cAAc,CACZ,KAAK,EACL,SAAS,EACT,qCAAqC,EACrC,IAAI,CACL,CAAC;gBACF,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,OAAO,2BAA2B,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,aAAa;YAChB,OAAO,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC5C,KAAK,YAAY;YACf,OAAO,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,YAAY;YACf,OAAO,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACxC,KAAK,cAAc;YACjB,0DAA0D;YAC1D,OAAO,QAAQ,CAAC;QAClB;YACE,cAAc,CACZ,KAAK,EACL,SAAS,EACT,6BAA6B,IAAI,GAAG,EACpC,IAAI,CACL,CAAC;YACF,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,4EAA4E;AAC5E,gCAAgC;AAChC,4EAA4E;AAE5E;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAAU,EAAE;IAC/D,wBAAwB;IACxB,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAAsB,EACtB,IAAY,EACZ,IAA0C,EAC1C,IAAW,EACH,EAAE;IACV,sBAAsB;IACtB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/B,kDAAkD;QAClD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,0CAA0C;YAC1C,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,cAAc,CACZ,KAAK,EACL,SAAS,EACT,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,kCAAkC,EACpH,IAAI,CACL,CAAC;gBACF,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,wBAAwB;YACxB,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;aACzC,CAAC;QACJ,CAAC;QACD,cAAc,CACZ,KAAK,EACL,SAAS,EACT,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,0BAA0B,EAC5G,IAAI,CACL,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;KAC9C,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAqC,EACrC,IAA0C,EACrB,EAAE;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACnC,OAAO;gBACL,GAAG,CAAC;gBACJ,UAAU,EACR,IAAI,KAAK,UAAU;oBACjB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,KAAK,UAAU;wBACnB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,CAAC,CAAC,UAAU;gBACpB,UAAU,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;aACtD,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,KAAsB,EACtB,IAAqB,EACS,EAAE;IAChC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IACD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM;QAClB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,yCAAyC;IACzC,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACnC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,mBAAmB;gBACzB,IAAI;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAsB,EACtB,IAAY,EACZ,QAAgB,EAChB,MAAe,EACf,IAAW,EACH,EAAE;IACV,qCAAqC;IACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,cAAc,CACZ,KAAK,EACL,SAAS,EACT,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,+BAA+B,EAC1D,IAAI,CACL,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAqC,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/B,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACzB,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACzC,OAAO,GAAG,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,cAAc,CACZ,KAAK,EACL,SAAS,EACT,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,0BAA0B,EACrD,IAAI,CACL,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAsB,EAAE;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClE,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,CAAC,uBAAuB;YACtC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,KAAsB,EACtB,IAAY,EACZ,IAAW,EACH,EAAE;IACV,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC;IACrC,CAAC;IACD,cAAc,CACZ,KAAK,EACL,SAAS,EACT,8CAA8C,EAC9C,IAAI,CACL,CAAC;IACF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,KAAsB,EACtB,IAAY,EACZ,IAAW,EACH,EAAE;IACV,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,SAAkB,EAAE,CAC9C,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC7C,CAAC;IACD,cAAc,CACZ,KAAK,EACL,SAAS,EACT,8CAA8C,EAC9C,IAAI,CACL,CAAC;IACF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,KAAa,EACb,KAAa,EACb,SAAkB,EACV,EAAE;IACV,6CAA6C;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,OAAO,GACX,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;YACxB,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW;gBACzB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QACrC,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAU,EAAE;IAC3D,oBAAoB;IACpB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,IACE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;YACxD,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EACvC,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QAErC,oCAAoC;QACpC,IACE,OAAO,KAAK,6BAA6B;YACzC,OAAO,KAAK,kCAAkC,EAC9C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3D,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IACE,OAAO,EAAE,UAAU,CAAC,8BAA8B,CAAC;YACnD,OAAO,EAAE,UAAU,CAAC,mCAAmC,CAAC,EACxD,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAAsB,EACtB,MAAc,EACd,QAAgB,EAChB,IAAW,EACH,EAAE;IACV,qCAAqC;IACrC,IACE,MAAM,CAAC,IAAI,KAAK,eAAe;QAC/B,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EACtD,CAAC;QACD,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,QAAQ;SACpB,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,cAAc,CACZ,KAAK,EACL,SAAS,EACT,iEAAiE,EACjE,IAAI,CACL,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,EAAE,mBAA4B;QAClC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC,CAAC"}
|