@azure/provisioning-core 1.0.0-beta.1 → 1.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +49 -10
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/browser/constructs/built-in-resources/resource-group.js +26 -6
- package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -1
- package/dist/browser/constructs/output.d.ts +1 -1
- package/dist/browser/constructs/output.d.ts.map +1 -1
- package/dist/browser/constructs/output.js.map +1 -1
- package/dist/browser/constructs/parameter.d.ts +1 -1
- package/dist/browser/constructs/parameter.d.ts.map +1 -1
- package/dist/browser/constructs/parameter.js.map +1 -1
- package/dist/browser/constructs/resource/resource-query.d.ts +3 -1
- package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/browser/constructs/resource/resource-query.js +10 -0
- package/dist/browser/constructs/resource/resource-query.js.map +1 -1
- package/dist/browser/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-relationships.js +35 -0
- package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
- package/dist/browser/constructs/resource/resource.d.ts +11 -17
- package/dist/browser/constructs/resource/resource.d.ts.map +1 -1
- package/dist/browser/constructs/resource/resource.js +70 -28
- package/dist/browser/constructs/resource/resource.js.map +1 -1
- package/dist/browser/constructs/stack.d.ts +2 -16
- package/dist/browser/constructs/stack.d.ts.map +1 -1
- package/dist/browser/constructs/stack.js +1 -15
- package/dist/browser/constructs/stack.js.map +1 -1
- package/dist/browser/expression/ast-nodes.d.ts +1 -1
- package/dist/browser/expression/ast-nodes.d.ts.map +1 -1
- package/dist/browser/expression/ast-nodes.js.map +1 -1
- package/dist/browser/expression/expressions.d.ts +2 -9
- package/dist/browser/expression/expressions.d.ts.map +1 -1
- package/dist/browser/expression/expressions.js +2 -9
- package/dist/browser/expression/expressions.js.map +1 -1
- package/dist/browser/expression/utils.d.ts +5 -0
- package/dist/browser/expression/utils.d.ts.map +1 -0
- package/dist/browser/expression/utils.js +25 -0
- package/dist/browser/expression/utils.js.map +1 -0
- package/dist/browser/index.d.ts +4 -4
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/internal.d.ts +2 -5
- package/dist/browser/internal.d.ts.map +1 -1
- package/dist/browser/internal.js +1 -3
- package/dist/browser/internal.js.map +1 -1
- package/dist/browser/naming/name-validation.d.ts +15 -0
- package/dist/browser/naming/name-validation.d.ts.map +1 -0
- package/dist/browser/naming/name-validation.js +82 -0
- package/dist/browser/naming/name-validation.js.map +1 -0
- package/dist/browser/naming/naming-policy.d.ts +7 -7
- package/dist/browser/naming/naming-policy.d.ts.map +1 -1
- package/dist/browser/naming/naming-policy.js +166 -33
- package/dist/browser/naming/naming-policy.js.map +1 -1
- package/dist/browser/naming/naming-rules.d.ts +12 -11
- package/dist/browser/naming/naming-rules.d.ts.map +1 -1
- package/dist/browser/naming/naming-rules.js +2 -9
- package/dist/browser/naming/naming-rules.js.map +1 -1
- package/dist/browser/package.json +1 -1
- package/dist/{esm/serialization/json/lower.d.ts → browser/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/{esm/serialization/json/lower.js → browser/serialization/arm-object-conversion.js} +20 -20
- package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
- package/dist/browser/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/browser/serialization/ast/declaration-builder.js +265 -0
- package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
- package/dist/browser/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/browser/serialization/ast/declaration-dependencies.js +96 -0
- package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
- package/dist/browser/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-builder.js +313 -0
- package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
- package/dist/browser/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-restorer.js +162 -0
- package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
- package/dist/browser/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-rewriter.js +257 -0
- package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
- package/dist/browser/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-walker.js +154 -0
- package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
- package/dist/browser/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/browser/serialization/ast/generated/ast.js.map +1 -0
- package/dist/browser/serialization/ast/index.d.ts +7 -0
- package/dist/browser/serialization/ast/index.d.ts.map +1 -0
- package/dist/browser/serialization/ast/index.js.map +1 -0
- package/dist/browser/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/browser/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/browser/serialization/ast/resource-utils.js +52 -0
- package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.js +57 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.js +100 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js +46 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.js +68 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.js +32 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.js +46 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.js +140 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.js +225 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
- package/dist/browser/serialization/bicep/index.d.ts +2 -0
- package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/index.js +4 -0
- package/dist/browser/serialization/bicep/index.js.map +1 -0
- package/dist/browser/serialization/bicep/render.d.ts +11 -0
- package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/render.js +293 -0
- package/dist/browser/serialization/bicep/render.js.map +1 -0
- package/dist/browser/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/browser/serialization/encoding.d.ts.map +1 -0
- package/dist/browser/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/browser/serialization/encoding.js.map +1 -0
- package/dist/browser/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/browser/serialization/identifiers.d.ts.map +1 -0
- package/dist/browser/serialization/{json/util.js → identifiers.js} +1 -1
- package/dist/browser/serialization/identifiers.js.map +1 -0
- package/dist/browser/serialization/index.d.ts +1 -1
- package/dist/browser/serialization/index.d.ts.map +1 -1
- package/dist/browser/serialization/index.js.map +1 -1
- package/dist/browser/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/browser/serialization/json/deserialize.js +131 -39
- package/dist/browser/serialization/json/deserialize.js.map +1 -1
- package/dist/browser/serialization/json/serialize.d.ts +1 -1
- package/dist/browser/serialization/json/serialize.d.ts.map +1 -1
- package/dist/browser/serialization/json/serialize.js +5 -360
- package/dist/browser/serialization/json/serialize.js.map +1 -1
- package/dist/browser/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/browser/serialization/pluralize-config.js.map +1 -0
- package/dist/browser/serialization/symbol-map.d.ts +10 -0
- package/dist/browser/serialization/symbol-map.d.ts.map +1 -0
- package/dist/browser/serialization/symbol-map.js +40 -0
- package/dist/browser/serialization/symbol-map.js.map +1 -0
- package/dist/browser/shape/shape.d.ts +4 -4
- package/dist/browser/shape/shape.js +2 -2
- package/dist/browser/shape/shape.js.map +1 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.js +27 -6
- package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +2 -2
- package/dist/commonjs/constructs/output.d.ts +1 -1
- package/dist/commonjs/constructs/output.d.ts.map +1 -1
- package/dist/commonjs/constructs/output.js.map +1 -1
- package/dist/commonjs/constructs/parameter.d.ts +1 -1
- package/dist/commonjs/constructs/parameter.d.ts.map +1 -1
- package/dist/commonjs/constructs/parameter.js.map +1 -1
- package/dist/commonjs/constructs/resource/resource-query.d.ts +3 -1
- package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/commonjs/constructs/resource/resource-query.js +11 -0
- package/dist/commonjs/constructs/resource/resource-query.js.map +2 -2
- package/dist/commonjs/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/commonjs/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-relationships.js +59 -0
- package/dist/commonjs/constructs/resource/resource-relationships.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource.d.ts +11 -17
- package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -1
- package/dist/commonjs/constructs/resource/resource.js +57 -35
- package/dist/commonjs/constructs/resource/resource.js.map +2 -2
- package/dist/commonjs/constructs/stack.d.ts +2 -16
- package/dist/commonjs/constructs/stack.d.ts.map +1 -1
- package/dist/commonjs/constructs/stack.js.map +2 -2
- package/dist/commonjs/expression/ast-nodes.d.ts +1 -1
- package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -1
- package/dist/commonjs/expression/ast-nodes.js.map +1 -1
- package/dist/commonjs/expression/expressions.d.ts +2 -9
- package/dist/commonjs/expression/expressions.d.ts.map +1 -1
- package/dist/commonjs/expression/expressions.js.map +2 -2
- package/dist/commonjs/expression/utils.d.ts +5 -0
- package/dist/commonjs/expression/utils.d.ts.map +1 -0
- package/dist/commonjs/expression/utils.js +43 -0
- package/dist/commonjs/expression/utils.js.map +7 -0
- package/dist/commonjs/index.d.ts +4 -4
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js.map +2 -2
- package/dist/commonjs/internal.d.ts +2 -5
- package/dist/commonjs/internal.d.ts.map +1 -1
- package/dist/commonjs/internal.js +3 -9
- package/dist/commonjs/internal.js.map +2 -2
- package/dist/commonjs/naming/name-validation.d.ts +15 -0
- package/dist/commonjs/naming/name-validation.d.ts.map +1 -0
- package/dist/commonjs/naming/name-validation.js +74 -0
- package/dist/commonjs/naming/name-validation.js.map +7 -0
- package/dist/commonjs/naming/naming-policy.d.ts +7 -7
- package/dist/commonjs/naming/naming-policy.d.ts.map +1 -1
- package/dist/commonjs/naming/naming-policy.js +136 -26
- package/dist/commonjs/naming/naming-policy.js.map +2 -2
- package/dist/commonjs/naming/naming-rules.d.ts +12 -11
- package/dist/commonjs/naming/naming-rules.d.ts.map +1 -1
- package/dist/commonjs/naming/naming-rules.js +4 -11
- package/dist/commonjs/naming/naming-rules.js.map +2 -2
- package/dist/commonjs/package.json +1 -1
- package/dist/{browser/serialization/json/lower.d.ts → commonjs/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/lower.js → arm-object-conversion.js} +15 -15
- package/dist/commonjs/serialization/arm-object-conversion.js.map +7 -0
- package/dist/commonjs/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/commonjs/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/declaration-builder.js +274 -0
- package/dist/commonjs/serialization/ast/declaration-builder.js.map +7 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.js +109 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/commonjs/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-builder.js +316 -0
- package/dist/commonjs/serialization/ast/expression-builder.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/commonjs/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-restorer.js +193 -0
- package/dist/commonjs/serialization/ast/expression-restorer.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.js +270 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/commonjs/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-walker.js +165 -0
- package/dist/commonjs/serialization/ast/expression-walker.js.map +7 -0
- package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/commonjs/serialization/{contract → ast}/generated/ast.js.map +1 -1
- package/dist/commonjs/serialization/ast/index.d.ts +7 -0
- package/dist/commonjs/serialization/ast/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/{contract → ast}/index.js +3 -3
- package/dist/commonjs/serialization/ast/index.js.map +7 -0
- package/dist/commonjs/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/commonjs/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/resource-utils.js +71 -0
- package/dist/commonjs/serialization/ast/resource-utils.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.js +74 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js +130 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js +71 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js +80 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js +91 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js +57 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.js +70 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js +190 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js +241 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js.map +7 -0
- package/dist/commonjs/serialization/bicep/index.d.ts +2 -0
- package/dist/commonjs/serialization/bicep/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/index.js +28 -0
- package/dist/commonjs/serialization/bicep/index.js.map +7 -0
- package/dist/commonjs/serialization/bicep/render.d.ts +11 -0
- package/dist/commonjs/serialization/bicep/render.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/render.js +312 -0
- package/dist/commonjs/serialization/bicep/render.js.map +7 -0
- package/dist/commonjs/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/commonjs/serialization/encoding.js.map +7 -0
- package/dist/commonjs/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/util.js → identifiers.js} +4 -4
- package/dist/commonjs/serialization/{json/util.js.map → identifiers.js.map} +1 -1
- package/dist/commonjs/serialization/index.d.ts +1 -1
- package/dist/commonjs/serialization/index.d.ts.map +1 -1
- package/dist/commonjs/serialization/index.js.map +1 -1
- package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/commonjs/serialization/json/deserialize.js +115 -44
- package/dist/commonjs/serialization/json/deserialize.js.map +2 -2
- package/dist/commonjs/serialization/json/serialize.d.ts +1 -1
- package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -1
- package/dist/commonjs/serialization/json/serialize.js +6 -308
- package/dist/commonjs/serialization/json/serialize.js.map +3 -3
- package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/pluralize-config.js.map → pluralize-config.js.map} +1 -1
- package/dist/commonjs/serialization/symbol-map.d.ts +10 -0
- package/dist/commonjs/serialization/symbol-map.d.ts.map +1 -0
- package/dist/commonjs/serialization/symbol-map.js +72 -0
- package/dist/commonjs/serialization/symbol-map.js.map +7 -0
- package/dist/commonjs/shape/shape.d.ts +4 -4
- package/dist/commonjs/shape/shape.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/esm/constructs/built-in-resources/resource-group.js +26 -6
- package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -1
- package/dist/esm/constructs/output.d.ts +1 -1
- package/dist/esm/constructs/output.d.ts.map +1 -1
- package/dist/esm/constructs/output.js.map +1 -1
- package/dist/esm/constructs/parameter.d.ts +1 -1
- package/dist/esm/constructs/parameter.d.ts.map +1 -1
- package/dist/esm/constructs/parameter.js.map +1 -1
- package/dist/esm/constructs/resource/resource-query.d.ts +3 -1
- package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/esm/constructs/resource/resource-query.js +10 -0
- package/dist/esm/constructs/resource/resource-query.js.map +1 -1
- package/dist/esm/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/esm/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-relationships.js +35 -0
- package/dist/esm/constructs/resource/resource-relationships.js.map +1 -0
- package/dist/esm/constructs/resource/resource.d.ts +11 -17
- package/dist/esm/constructs/resource/resource.d.ts.map +1 -1
- package/dist/esm/constructs/resource/resource.js +70 -28
- package/dist/esm/constructs/resource/resource.js.map +1 -1
- package/dist/esm/constructs/stack.d.ts +2 -16
- package/dist/esm/constructs/stack.d.ts.map +1 -1
- package/dist/esm/constructs/stack.js +1 -15
- package/dist/esm/constructs/stack.js.map +1 -1
- package/dist/esm/expression/ast-nodes.d.ts +1 -1
- package/dist/esm/expression/ast-nodes.d.ts.map +1 -1
- package/dist/esm/expression/ast-nodes.js.map +1 -1
- package/dist/esm/expression/expressions.d.ts +2 -9
- package/dist/esm/expression/expressions.d.ts.map +1 -1
- package/dist/esm/expression/expressions.js +2 -9
- package/dist/esm/expression/expressions.js.map +1 -1
- package/dist/esm/expression/utils.d.ts +5 -0
- package/dist/esm/expression/utils.d.ts.map +1 -0
- package/dist/esm/expression/utils.js +25 -0
- package/dist/esm/expression/utils.js.map +1 -0
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal.d.ts +2 -5
- package/dist/esm/internal.d.ts.map +1 -1
- package/dist/esm/internal.js +1 -3
- package/dist/esm/internal.js.map +1 -1
- package/dist/esm/naming/name-validation.d.ts +15 -0
- package/dist/esm/naming/name-validation.d.ts.map +1 -0
- package/dist/esm/naming/name-validation.js +82 -0
- package/dist/esm/naming/name-validation.js.map +1 -0
- package/dist/esm/naming/naming-policy.d.ts +7 -7
- package/dist/esm/naming/naming-policy.d.ts.map +1 -1
- package/dist/esm/naming/naming-policy.js +166 -33
- package/dist/esm/naming/naming-policy.js.map +1 -1
- package/dist/esm/naming/naming-rules.d.ts +12 -11
- package/dist/esm/naming/naming-rules.d.ts.map +1 -1
- package/dist/esm/naming/naming-rules.js +2 -9
- package/dist/esm/naming/naming-rules.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/{commonjs/serialization/json/lower.d.ts → esm/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/{browser/serialization/json/lower.js → esm/serialization/arm-object-conversion.js} +20 -20
- package/dist/esm/serialization/arm-object-conversion.js.map +1 -0
- package/dist/esm/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/esm/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/esm/serialization/ast/declaration-builder.js +265 -0
- package/dist/esm/serialization/ast/declaration-builder.js.map +1 -0
- package/dist/esm/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/esm/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/esm/serialization/ast/declaration-dependencies.js +96 -0
- package/dist/esm/serialization/ast/declaration-dependencies.js.map +1 -0
- package/dist/esm/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/esm/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-builder.js +313 -0
- package/dist/esm/serialization/ast/expression-builder.js.map +1 -0
- package/dist/esm/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/esm/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-restorer.js +162 -0
- package/dist/esm/serialization/ast/expression-restorer.js.map +1 -0
- package/dist/esm/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/esm/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-rewriter.js +257 -0
- package/dist/esm/serialization/ast/expression-rewriter.js.map +1 -0
- package/dist/esm/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/esm/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-walker.js +154 -0
- package/dist/esm/serialization/ast/expression-walker.js.map +1 -0
- package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/esm/serialization/ast/generated/ast.js.map +1 -0
- package/dist/esm/serialization/ast/index.d.ts +7 -0
- package/dist/esm/serialization/ast/index.d.ts.map +1 -0
- package/dist/esm/serialization/ast/index.js.map +1 -0
- package/dist/esm/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/esm/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/esm/serialization/ast/resource-utils.js +52 -0
- package/dist/esm/serialization/ast/resource-utils.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.js +57 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.js +100 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js +46 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.js +68 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.js +32 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.js +46 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.js +140 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.js +225 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
- package/dist/esm/serialization/bicep/index.d.ts +2 -0
- package/dist/esm/serialization/bicep/index.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/index.js +4 -0
- package/dist/esm/serialization/bicep/index.js.map +1 -0
- package/dist/esm/serialization/bicep/render.d.ts +11 -0
- package/dist/esm/serialization/bicep/render.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/render.js +293 -0
- package/dist/esm/serialization/bicep/render.js.map +1 -0
- package/dist/esm/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/esm/serialization/encoding.d.ts.map +1 -0
- package/dist/esm/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/esm/serialization/encoding.js.map +1 -0
- package/dist/esm/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/esm/serialization/identifiers.d.ts.map +1 -0
- package/dist/esm/serialization/{json/util.js → identifiers.js} +1 -1
- package/dist/esm/serialization/identifiers.js.map +1 -0
- package/dist/esm/serialization/index.d.ts +1 -1
- package/dist/esm/serialization/index.d.ts.map +1 -1
- package/dist/esm/serialization/index.js.map +1 -1
- package/dist/esm/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/esm/serialization/json/deserialize.js +131 -39
- package/dist/esm/serialization/json/deserialize.js.map +1 -1
- package/dist/esm/serialization/json/serialize.d.ts +1 -1
- package/dist/esm/serialization/json/serialize.d.ts.map +1 -1
- package/dist/esm/serialization/json/serialize.js +5 -360
- package/dist/esm/serialization/json/serialize.js.map +1 -1
- package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/esm/serialization/pluralize-config.js.map +1 -0
- package/dist/esm/serialization/symbol-map.d.ts +10 -0
- package/dist/esm/serialization/symbol-map.d.ts.map +1 -0
- package/dist/esm/serialization/symbol-map.js +40 -0
- package/dist/esm/serialization/symbol-map.js.map +1 -0
- package/dist/esm/shape/shape.d.ts +4 -4
- package/dist/esm/shape/shape.js +2 -2
- package/dist/esm/shape/shape.js.map +1 -1
- package/package.json +3 -2
- package/dist/browser/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/browser/serialization/contract/generated/ast.js.map +0 -1
- package/dist/browser/serialization/contract/index.d.ts +0 -2
- package/dist/browser/serialization/contract/index.d.ts.map +0 -1
- package/dist/browser/serialization/contract/index.js.map +0 -1
- package/dist/browser/serialization/json/encoding.d.ts.map +0 -1
- package/dist/browser/serialization/json/encoding.js.map +0 -1
- package/dist/browser/serialization/json/expression.d.ts +0 -32
- package/dist/browser/serialization/json/expression.d.ts.map +0 -1
- package/dist/browser/serialization/json/expression.js +0 -494
- package/dist/browser/serialization/json/expression.js.map +0 -1
- package/dist/browser/serialization/json/lower.d.ts.map +0 -1
- package/dist/browser/serialization/json/lower.js.map +0 -1
- package/dist/browser/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/browser/serialization/json/pluralize-config.js.map +0 -1
- package/dist/browser/serialization/json/util.d.ts.map +0 -1
- package/dist/browser/serialization/json/util.js.map +0 -1
- package/dist/browser/serialization/utils.d.ts +0 -3
- package/dist/browser/serialization/utils.d.ts.map +0 -1
- package/dist/browser/serialization/utils.js +0 -146
- package/dist/browser/serialization/utils.js.map +0 -1
- package/dist/commonjs/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/commonjs/serialization/contract/index.d.ts +0 -2
- package/dist/commonjs/serialization/contract/index.d.ts.map +0 -1
- package/dist/commonjs/serialization/contract/index.js.map +0 -7
- package/dist/commonjs/serialization/json/encoding.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/encoding.js.map +0 -7
- package/dist/commonjs/serialization/json/expression.d.ts +0 -32
- package/dist/commonjs/serialization/json/expression.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/expression.js +0 -509
- package/dist/commonjs/serialization/json/expression.js.map +0 -7
- package/dist/commonjs/serialization/json/lower.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/lower.js.map +0 -7
- package/dist/commonjs/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/util.d.ts.map +0 -1
- package/dist/commonjs/serialization/utils.d.ts +0 -3
- package/dist/commonjs/serialization/utils.d.ts.map +0 -1
- package/dist/commonjs/serialization/utils.js +0 -169
- package/dist/commonjs/serialization/utils.js.map +0 -7
- package/dist/esm/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/esm/serialization/contract/generated/ast.js.map +0 -1
- package/dist/esm/serialization/contract/index.d.ts +0 -2
- package/dist/esm/serialization/contract/index.d.ts.map +0 -1
- package/dist/esm/serialization/contract/index.js.map +0 -1
- package/dist/esm/serialization/json/encoding.d.ts.map +0 -1
- package/dist/esm/serialization/json/encoding.js.map +0 -1
- package/dist/esm/serialization/json/expression.d.ts +0 -32
- package/dist/esm/serialization/json/expression.d.ts.map +0 -1
- package/dist/esm/serialization/json/expression.js +0 -494
- package/dist/esm/serialization/json/expression.js.map +0 -1
- package/dist/esm/serialization/json/lower.d.ts.map +0 -1
- package/dist/esm/serialization/json/lower.js.map +0 -1
- package/dist/esm/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/esm/serialization/json/pluralize-config.js.map +0 -1
- package/dist/esm/serialization/json/util.d.ts.map +0 -1
- package/dist/esm/serialization/json/util.js.map +0 -1
- package/dist/esm/serialization/utils.d.ts +0 -3
- package/dist/esm/serialization/utils.d.ts.map +0 -1
- package/dist/esm/serialization/utils.js +0 -146
- package/dist/esm/serialization/utils.js.map +0 -1
- /package/dist/browser/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/browser/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/browser/serialization/{contract → ast}/index.js +0 -0
- /package/dist/browser/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/browser/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
- /package/dist/commonjs/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/commonjs/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/commonjs/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/commonjs/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
- /package/dist/esm/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/esm/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/esm/serialization/{contract → ast}/index.js +0 -0
- /package/dist/esm/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/esm/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
|
@@ -1,494 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT License.
|
|
3
|
-
import { accessExpressionNode, arrayAccessExpressionNode, functionCallExpressionNode, identifierExpressionNode, instanceFunctionCallExpressionNode, isExpressionNode, propertyAccessExpressionNode, } from "../../expression/ast-nodes.js";
|
|
4
|
-
import { isExpression, unwrapExpression, wrapExpression, } from "../../expression/expressions.js";
|
|
5
|
-
import { isResource, isLoopedResource } from "../../constructs/resource/resource-utils.js";
|
|
6
|
-
// ---------------------------------------------------------------------------
|
|
7
|
-
// ARM property-access lowering
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
/**
|
|
10
|
-
* Expands armPath stamps along a core property-access chain, replacing each
|
|
11
|
-
* stamped property with its ARM path relative to the lowered base. Empty
|
|
12
|
-
* paths fall back to the original property name. Generated accesses carry
|
|
13
|
-
* no stamps; unchanged nodes retain their identity.
|
|
14
|
-
*
|
|
15
|
-
* Recursion stops at non-property-access nodes and leaves their children
|
|
16
|
-
* untouched. serializeExpression traverses those children and invokes this
|
|
17
|
-
* helper as it reaches them; this is not a whole-expression lowering pass.
|
|
18
|
-
*/
|
|
19
|
-
export function lowerArmPropertyAccessChain(node) {
|
|
20
|
-
if (node.kind !== "property-access")
|
|
21
|
-
return node;
|
|
22
|
-
const loweredBase = lowerArmPropertyAccessChain(node.base);
|
|
23
|
-
if (node.armPath !== undefined) {
|
|
24
|
-
const path = node.armPath.length > 0 ? node.armPath : [node.property];
|
|
25
|
-
let current = loweredBase;
|
|
26
|
-
for (const segment of path) {
|
|
27
|
-
// A flattened optional property may be absent at any wire-path segment.
|
|
28
|
-
current = accessExpressionNode(current, segment, {
|
|
29
|
-
nullish: node.nullish,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
return current;
|
|
33
|
-
}
|
|
34
|
-
if (loweredBase === node.base)
|
|
35
|
-
return node;
|
|
36
|
-
return { ...node, base: loweredBase };
|
|
37
|
-
}
|
|
38
|
-
// ---------------------------------------------------------------------------
|
|
39
|
-
// Expression serialization: CDK value -> AST
|
|
40
|
-
// ---------------------------------------------------------------------------
|
|
41
|
-
function splitSymbolicPath(path) {
|
|
42
|
-
const parts = [];
|
|
43
|
-
let current = "";
|
|
44
|
-
let depth = 0;
|
|
45
|
-
for (const character of path) {
|
|
46
|
-
if (character === "." && depth === 0) {
|
|
47
|
-
if (current.length > 0) {
|
|
48
|
-
parts.push(current);
|
|
49
|
-
current = "";
|
|
50
|
-
}
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
if (character === "(") {
|
|
54
|
-
depth += 1;
|
|
55
|
-
}
|
|
56
|
-
else if (character === ")") {
|
|
57
|
-
depth -= 1;
|
|
58
|
-
}
|
|
59
|
-
current += character;
|
|
60
|
-
}
|
|
61
|
-
if (current.length > 0) {
|
|
62
|
-
parts.push(current);
|
|
63
|
-
}
|
|
64
|
-
return parts;
|
|
65
|
-
}
|
|
66
|
-
function serializeSymbolicPath(path) {
|
|
67
|
-
const parts = splitSymbolicPath(path);
|
|
68
|
-
let current;
|
|
69
|
-
for (const part of parts) {
|
|
70
|
-
if (part.endsWith("()")) {
|
|
71
|
-
const target = part.slice(0, -2);
|
|
72
|
-
const callNode = {
|
|
73
|
-
kind: "function-call",
|
|
74
|
-
target,
|
|
75
|
-
args: [],
|
|
76
|
-
};
|
|
77
|
-
current =
|
|
78
|
-
current === undefined
|
|
79
|
-
? callNode
|
|
80
|
-
: {
|
|
81
|
-
kind: "instance-function-call",
|
|
82
|
-
base: current,
|
|
83
|
-
name: target,
|
|
84
|
-
args: [],
|
|
85
|
-
};
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
current =
|
|
89
|
-
current === undefined
|
|
90
|
-
? {
|
|
91
|
-
kind: "identifier",
|
|
92
|
-
id: part,
|
|
93
|
-
}
|
|
94
|
-
: {
|
|
95
|
-
kind: "property-access",
|
|
96
|
-
base: current,
|
|
97
|
-
property: part,
|
|
98
|
-
nullish: false,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
if (current === undefined) {
|
|
102
|
-
throw new Error(`Cannot serialize empty symbolic path.`);
|
|
103
|
-
}
|
|
104
|
-
return current;
|
|
105
|
-
}
|
|
106
|
-
function serializePlainObject(value, symbolMap) {
|
|
107
|
-
return {
|
|
108
|
-
kind: "object",
|
|
109
|
-
value: serializeDefinedObjectEntries(value, symbolMap),
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
export function serializeDefinedObjectEntries(value, symbolMap) {
|
|
113
|
-
return Object.fromEntries(Object.entries(value).flatMap(([key, propertyValue]) => propertyValue === undefined ? [] : [[key, serializeExpression(propertyValue, symbolMap)]]));
|
|
114
|
-
}
|
|
115
|
-
function serializeArray(value, symbolMap) {
|
|
116
|
-
return {
|
|
117
|
-
kind: "array",
|
|
118
|
-
items: value.map((item) => serializeExpression(item, symbolMap)),
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
function isSerializableObject(value) {
|
|
122
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
123
|
-
}
|
|
124
|
-
function serializeIdentifierExpression(value, symbolMap) {
|
|
125
|
-
if (typeof value.id === "string") {
|
|
126
|
-
return {
|
|
127
|
-
kind: "identifier",
|
|
128
|
-
id: value.id,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
const identifier = symbolMap.get(value.id);
|
|
132
|
-
if (identifier === undefined) {
|
|
133
|
-
throw new Error(`Missing synthesized symbol for referenced resource type ${value.id.type}.`);
|
|
134
|
-
}
|
|
135
|
-
return {
|
|
136
|
-
kind: "identifier",
|
|
137
|
-
id: identifier,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
function isBicepIdentifierSegment(segment) {
|
|
141
|
-
return /^[A-Za-z_][A-Za-z0-9_]*$/u.test(segment);
|
|
142
|
-
}
|
|
143
|
-
function serializeMemberAccessExpression(value, symbolMap) {
|
|
144
|
-
const base = serializeExpression(value.base, symbolMap);
|
|
145
|
-
if (value.kind === "property-access") {
|
|
146
|
-
return {
|
|
147
|
-
kind: "property-access",
|
|
148
|
-
base,
|
|
149
|
-
property: value.property,
|
|
150
|
-
nullish: value.nullish,
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
if (typeof value.index === "number") {
|
|
154
|
-
return {
|
|
155
|
-
kind: "array-access",
|
|
156
|
-
base,
|
|
157
|
-
index: {
|
|
158
|
-
kind: "integer",
|
|
159
|
-
value: String(value.index),
|
|
160
|
-
},
|
|
161
|
-
nullish: value.nullish,
|
|
162
|
-
fromEnd: value.fromEnd,
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
if (typeof value.index === "string") {
|
|
166
|
-
if (value.fromEnd) {
|
|
167
|
-
throw new Error("Reverse indexing requires an integer index, not a string.");
|
|
168
|
-
}
|
|
169
|
-
return isBicepIdentifierSegment(value.index)
|
|
170
|
-
? {
|
|
171
|
-
kind: "property-access",
|
|
172
|
-
base,
|
|
173
|
-
property: value.index,
|
|
174
|
-
nullish: value.nullish,
|
|
175
|
-
}
|
|
176
|
-
: {
|
|
177
|
-
kind: "array-access",
|
|
178
|
-
base,
|
|
179
|
-
index: {
|
|
180
|
-
kind: "string",
|
|
181
|
-
value: value.index,
|
|
182
|
-
},
|
|
183
|
-
nullish: value.nullish,
|
|
184
|
-
fromEnd: value.fromEnd,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
// Expression-shaped index (e.g. a loop's `.index` symbolic value or any
|
|
188
|
-
// `Expression<number>` proxy). Recursively serialize into the wire
|
|
189
|
-
// array-access's `index` slot.
|
|
190
|
-
return {
|
|
191
|
-
kind: "array-access",
|
|
192
|
-
base,
|
|
193
|
-
index: serializeExpression(value.index, symbolMap),
|
|
194
|
-
nullish: value.nullish,
|
|
195
|
-
fromEnd: value.fromEnd,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
export function serializeExpression(value, symbolMap = new Map()) {
|
|
199
|
-
if (isExpression(value)) {
|
|
200
|
-
return serializeExpression(unwrapExpression(value), symbolMap);
|
|
201
|
-
}
|
|
202
|
-
// Lower the current property-access chain. Recursive serialization below
|
|
203
|
-
// visits other child expressions, lowering their property chains in turn.
|
|
204
|
-
if (value !== null && typeof value === "object" && isExpressionNode(value)) {
|
|
205
|
-
const lowered = lowerArmPropertyAccessChain(value);
|
|
206
|
-
if (lowered !== value) {
|
|
207
|
-
return serializeExpression(lowered, symbolMap);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
if (typeof value === "string") {
|
|
211
|
-
return {
|
|
212
|
-
kind: "string",
|
|
213
|
-
value,
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
if (typeof value === "number") {
|
|
217
|
-
if (!Number.isInteger(value)) {
|
|
218
|
-
throw new Error(`Bicep serialization currently only supports integer numbers.`);
|
|
219
|
-
}
|
|
220
|
-
if (!Number.isSafeInteger(value)) {
|
|
221
|
-
throw new Error(`Bicep serialization currently only supports safe integer numbers.`);
|
|
222
|
-
}
|
|
223
|
-
return {
|
|
224
|
-
kind: "integer",
|
|
225
|
-
value: String(value),
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
if (typeof value === "boolean") {
|
|
229
|
-
return {
|
|
230
|
-
kind: "boolean",
|
|
231
|
-
value,
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
if (value === null) {
|
|
235
|
-
return {
|
|
236
|
-
kind: "null",
|
|
237
|
-
value: null,
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
if (Array.isArray(value)) {
|
|
241
|
-
return serializeArray(value, symbolMap);
|
|
242
|
-
}
|
|
243
|
-
if (isExpressionNode(value)) {
|
|
244
|
-
switch (value.kind) {
|
|
245
|
-
case "binary":
|
|
246
|
-
return {
|
|
247
|
-
kind: "binary-operation",
|
|
248
|
-
operator: value.operator,
|
|
249
|
-
left: serializeExpression(value.left, symbolMap),
|
|
250
|
-
right: serializeExpression(value.right, symbolMap),
|
|
251
|
-
};
|
|
252
|
-
case "unary":
|
|
253
|
-
return {
|
|
254
|
-
kind: "unary-operation",
|
|
255
|
-
operator: value.operator,
|
|
256
|
-
argument: serializeExpression(value.argument, symbolMap),
|
|
257
|
-
};
|
|
258
|
-
case "ternary":
|
|
259
|
-
return {
|
|
260
|
-
kind: "ternary-operation",
|
|
261
|
-
condition: serializeExpression(value.condition, symbolMap),
|
|
262
|
-
trueValue: serializeExpression(value.trueValue, symbolMap),
|
|
263
|
-
falseValue: serializeExpression(value.falseValue, symbolMap),
|
|
264
|
-
};
|
|
265
|
-
case "fn-call":
|
|
266
|
-
return {
|
|
267
|
-
kind: "function-call",
|
|
268
|
-
target: value.operator,
|
|
269
|
-
args: value.args.map((argument) => serializeExpression(argument, symbolMap)),
|
|
270
|
-
};
|
|
271
|
-
case "instance-function-call":
|
|
272
|
-
return {
|
|
273
|
-
kind: "instance-function-call",
|
|
274
|
-
base: serializeExpression(value.base, symbolMap),
|
|
275
|
-
name: value.name,
|
|
276
|
-
args: value.args.map((argument) => serializeExpression(argument, symbolMap)),
|
|
277
|
-
};
|
|
278
|
-
case "interpolated-string":
|
|
279
|
-
return {
|
|
280
|
-
kind: "interpolated-string",
|
|
281
|
-
segments: value.segments.map((segment) => serializeExpression(segment, symbolMap)),
|
|
282
|
-
};
|
|
283
|
-
case "identifier":
|
|
284
|
-
return serializeIdentifierExpression(value, symbolMap);
|
|
285
|
-
case "property-access":
|
|
286
|
-
case "array-access":
|
|
287
|
-
return serializeMemberAccessExpression(value, symbolMap);
|
|
288
|
-
case "symbolic-value": {
|
|
289
|
-
const identifier = symbolMap.get(value);
|
|
290
|
-
return identifier === undefined
|
|
291
|
-
? serializeSymbolicPath(value.path)
|
|
292
|
-
: { kind: "identifier", id: identifier };
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
if (isSerializableObject(value)) {
|
|
297
|
-
return serializePlainObject(value, symbolMap);
|
|
298
|
-
}
|
|
299
|
-
throw new Error(`Unsupported serialization input.`);
|
|
300
|
-
}
|
|
301
|
-
// ---------------------------------------------------------------------------
|
|
302
|
-
// Resource-reference validation
|
|
303
|
-
// ---------------------------------------------------------------------------
|
|
304
|
-
export function requireResourceHandle(targetIdentifier, symbols, resourceIdentifier, field) {
|
|
305
|
-
const handle = symbols.get(targetIdentifier);
|
|
306
|
-
if (handle === undefined) {
|
|
307
|
-
throw new Error(`Resource "${resourceIdentifier}" references unknown resource ` +
|
|
308
|
-
`"${targetIdentifier}" in "${field}".`);
|
|
309
|
-
}
|
|
310
|
-
if (!isResource(handle) && !isLoopedResource(handle)) {
|
|
311
|
-
throw new Error(`Resource "${resourceIdentifier}" references non-resource symbol ` +
|
|
312
|
-
`"${targetIdentifier}" in "${field}".`);
|
|
313
|
-
}
|
|
314
|
-
return handle;
|
|
315
|
-
}
|
|
316
|
-
export function deserializeDependsOnExpression(node, symbols, resourceIdentifier) {
|
|
317
|
-
if (node.kind !== "array") {
|
|
318
|
-
throw new Error(`Resource "${resourceIdentifier}" has an invalid "dependsOn" value; expected an array.`);
|
|
319
|
-
}
|
|
320
|
-
return node.items.map((item) => {
|
|
321
|
-
if (item.kind !== "identifier") {
|
|
322
|
-
throw new Error(`Resource "${resourceIdentifier}" has an invalid "dependsOn" reference; expected a resource identifier.`);
|
|
323
|
-
}
|
|
324
|
-
return requireResourceHandle(item.id, symbols, resourceIdentifier, "dependsOn");
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
// ---------------------------------------------------------------------------
|
|
328
|
-
// Expression deserialization: AST -> CDK value
|
|
329
|
-
// ---------------------------------------------------------------------------
|
|
330
|
-
export function deserializeExpression(node, symbols) {
|
|
331
|
-
// TODO(#330): Legacy `contextual-variable` shim. The JS side no longer
|
|
332
|
-
// produces this kind (it emits the composed `property-access` over a
|
|
333
|
-
// zero-arg `function-call` form), but the .NET `ModelReaderWriter`
|
|
334
|
-
// still emits it on re-serialization. Accept it on input by lowering
|
|
335
|
-
// to the composed form, then fall through. Delete this whole block
|
|
336
|
-
// (and any cast it requires) once .NET stops emitting it.
|
|
337
|
-
const legacyKind = node.kind;
|
|
338
|
-
if (legacyKind === "contextual-variable") {
|
|
339
|
-
const legacy = node;
|
|
340
|
-
return wrapExpression(propertyAccessExpressionNode(functionCallExpressionNode(legacy.context, []), legacy.property));
|
|
341
|
-
}
|
|
342
|
-
switch (node.kind) {
|
|
343
|
-
case "string":
|
|
344
|
-
return node.value;
|
|
345
|
-
case "integer": {
|
|
346
|
-
const value = parseInt(node.value, 10);
|
|
347
|
-
if (!Number.isSafeInteger(value)) {
|
|
348
|
-
throw new Error(`Cannot deserialize unsafe integer literal "${node.value}".`);
|
|
349
|
-
}
|
|
350
|
-
return value;
|
|
351
|
-
}
|
|
352
|
-
case "boolean":
|
|
353
|
-
return node.value;
|
|
354
|
-
case "null":
|
|
355
|
-
return null;
|
|
356
|
-
case "identifier": {
|
|
357
|
-
const sym = symbols.get(node.id);
|
|
358
|
-
if (sym !== undefined)
|
|
359
|
-
return sym;
|
|
360
|
-
return wrapExpression(identifierExpressionNode(node.id));
|
|
361
|
-
}
|
|
362
|
-
case "function-call":
|
|
363
|
-
if (typeof node.target !== "string") {
|
|
364
|
-
throw new Error("Cannot deserialize function call with an expression target.");
|
|
365
|
-
}
|
|
366
|
-
return wrapExpression(functionCallExpressionNode(node.target, node.args.map((a) => deserializeExpression(a, symbols))));
|
|
367
|
-
case "instance-function-call": {
|
|
368
|
-
const base = deserializeExpression(node.base, symbols);
|
|
369
|
-
const baseNode = isExpression(base)
|
|
370
|
-
? unwrapExpression(base)
|
|
371
|
-
: identifierExpressionNode(isResource(base) ? base : String(base));
|
|
372
|
-
return wrapExpression(instanceFunctionCallExpressionNode(baseNode, node.name, node.args.map((a) => deserializeExpression(a, symbols))));
|
|
373
|
-
}
|
|
374
|
-
case "property-access": {
|
|
375
|
-
const base = deserializeExpression(node.base, symbols);
|
|
376
|
-
if (isResource(base)) {
|
|
377
|
-
if (node.nullish) {
|
|
378
|
-
return wrapExpression(propertyAccessExpressionNode(identifierExpressionNode(base), node.property, {
|
|
379
|
-
nullish: node.nullish,
|
|
380
|
-
}));
|
|
381
|
-
}
|
|
382
|
-
return base[node.property];
|
|
383
|
-
}
|
|
384
|
-
if (isExpression(base)) {
|
|
385
|
-
const inner = unwrapExpression(base);
|
|
386
|
-
return wrapExpression(propertyAccessExpressionNode(inner, node.property, {
|
|
387
|
-
nullish: node.nullish,
|
|
388
|
-
}));
|
|
389
|
-
}
|
|
390
|
-
return wrapExpression(propertyAccessExpressionNode(identifierExpressionNode(String(base)), node.property, {
|
|
391
|
-
nullish: node.nullish,
|
|
392
|
-
}));
|
|
393
|
-
}
|
|
394
|
-
case "array-access": {
|
|
395
|
-
const base = deserializeExpression(node.base, symbols);
|
|
396
|
-
// Preserve non-literal indexes as expressions so `sym[<expr>]` round-
|
|
397
|
-
// trips faithfully. Literal integer/string indexes lower to native
|
|
398
|
-
// JS number/string values as before.
|
|
399
|
-
let idx;
|
|
400
|
-
if (node.index.kind === "integer") {
|
|
401
|
-
idx = parseInt(node.index.value, 10);
|
|
402
|
-
}
|
|
403
|
-
else if (node.index.kind === "string") {
|
|
404
|
-
idx = node.index.value;
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
const deserializedIndex = deserializeExpression(node.index, symbols);
|
|
408
|
-
idx = isExpression(deserializedIndex)
|
|
409
|
-
? unwrapExpression(deserializedIndex)
|
|
410
|
-
: deserializedIndex;
|
|
411
|
-
}
|
|
412
|
-
if (isResource(base)) {
|
|
413
|
-
if (node.nullish || node.fromEnd) {
|
|
414
|
-
return wrapExpression(arrayAccessExpressionNode(identifierExpressionNode(base), idx, {
|
|
415
|
-
nullish: node.nullish,
|
|
416
|
-
fromEnd: node.fromEnd,
|
|
417
|
-
}));
|
|
418
|
-
}
|
|
419
|
-
return base[String(idx)];
|
|
420
|
-
}
|
|
421
|
-
if (isLoopedResource(base)) {
|
|
422
|
-
// `sym[idx]` on a looped declaration. Carry the handle itself as the
|
|
423
|
-
// identifier id (not `String(base)`, which would stringify to
|
|
424
|
-
// "[object Object]") so re-serialize maps it back to the resource's
|
|
425
|
-
// symbol. The resulting expression proxy lets an outer `.prop` chain
|
|
426
|
-
// (e.g. `looped.at(0).id`) render as `sym[idx].prop`.
|
|
427
|
-
return wrapExpression(arrayAccessExpressionNode(identifierExpressionNode(base), idx, {
|
|
428
|
-
nullish: node.nullish,
|
|
429
|
-
fromEnd: node.fromEnd,
|
|
430
|
-
}));
|
|
431
|
-
}
|
|
432
|
-
if (isExpression(base)) {
|
|
433
|
-
const inner = unwrapExpression(base);
|
|
434
|
-
return wrapExpression(arrayAccessExpressionNode(inner, idx, {
|
|
435
|
-
nullish: node.nullish,
|
|
436
|
-
fromEnd: node.fromEnd,
|
|
437
|
-
}));
|
|
438
|
-
}
|
|
439
|
-
return wrapExpression(arrayAccessExpressionNode(identifierExpressionNode(String(base)), idx, {
|
|
440
|
-
nullish: node.nullish,
|
|
441
|
-
fromEnd: node.fromEnd,
|
|
442
|
-
}));
|
|
443
|
-
}
|
|
444
|
-
case "object": {
|
|
445
|
-
const obj = Object.create(null);
|
|
446
|
-
for (const [key, value] of Object.entries(node.value)) {
|
|
447
|
-
Object.defineProperty(obj, key, {
|
|
448
|
-
value: deserializeExpression(value, symbols),
|
|
449
|
-
enumerable: true,
|
|
450
|
-
configurable: true,
|
|
451
|
-
writable: true,
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
return obj;
|
|
455
|
-
}
|
|
456
|
-
case "array":
|
|
457
|
-
return node.items.map((item) => deserializeExpression(item, symbols));
|
|
458
|
-
case "binary-operation": {
|
|
459
|
-
const operation = node;
|
|
460
|
-
return wrapExpression({
|
|
461
|
-
kind: "binary",
|
|
462
|
-
operator: operation.operator,
|
|
463
|
-
left: deserializeExpression(operation.left, symbols),
|
|
464
|
-
right: deserializeExpression(operation.right, symbols),
|
|
465
|
-
});
|
|
466
|
-
}
|
|
467
|
-
case "unary-operation": {
|
|
468
|
-
const operation = node;
|
|
469
|
-
return wrapExpression({
|
|
470
|
-
kind: "unary",
|
|
471
|
-
operator: operation.operator,
|
|
472
|
-
argument: deserializeExpression(operation.argument, symbols),
|
|
473
|
-
});
|
|
474
|
-
}
|
|
475
|
-
case "ternary-operation": {
|
|
476
|
-
const operation = node;
|
|
477
|
-
return wrapExpression({
|
|
478
|
-
kind: "ternary",
|
|
479
|
-
condition: deserializeExpression(operation.condition, symbols),
|
|
480
|
-
trueValue: deserializeExpression(operation.trueValue, symbols),
|
|
481
|
-
falseValue: deserializeExpression(operation.falseValue, symbols),
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
case "interpolated-string": {
|
|
485
|
-
return wrapExpression({
|
|
486
|
-
kind: "interpolated-string",
|
|
487
|
-
segments: node.segments.map((segment) => deserializeExpression(segment, symbols)),
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
default:
|
|
491
|
-
throw new Error(`Unsupported expression node kind: ${node.kind}`);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
//# sourceMappingURL=expression.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../../src/serialization/json/expression.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,kCAAkC,EAClC,gBAAgB,EAChB,4BAA4B,GAS7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,GAEf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAsC3F,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAwB;IAClE,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC;IAEjD,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtE,IAAI,OAAO,GAAuB,WAAW,CAAC;QAC9C,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,wEAAwE;YACxE,OAAO,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE;gBAC/C,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,WAAW,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACxC,CAAC;AAED,8EAA8E;AAC9E,6CAA6C;AAC7C,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,SAAS,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,OAAO,IAAI,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,OAAmC,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,QAAQ,GAA2B;gBACvC,IAAI,EAAE,eAAe;gBACrB,MAAM;gBACN,IAAI,EAAE,EAAE;aACT,CAAC;YAEF,OAAO;gBACL,OAAO,KAAK,SAAS;oBACnB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC;wBACE,IAAI,EAAE,wBAAwB;wBAC9B,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,EAAE;qBACT,CAAC;YACR,SAAS;QACX,CAAC;QAED,OAAO;YACL,OAAO,KAAK,SAAS;gBACnB,CAAC,CAAC;oBACE,IAAI,EAAE,YAAY;oBAClB,EAAE,EAAE,IAAI;iBACT;gBACH,CAAC,CAAC;oBACE,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,KAAK;iBACf,CAAC;IACV,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAgE,EAChE,SAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,6BAA6B,CAAC,KAAK,EAAE,SAAS,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAgE,EAChE,SAAiC;IAEjC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,EAAE,CACrD,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,mBAAmB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAC1F,CACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,KAAmC,EACnC,SAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAwB;IAExB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,6BAA6B,CACpC,KAA+B,EAC/B,SAAiC;IAEjC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,EAAE,EAAE,KAAK,CAAC,EAAE;SACb,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2DAA2D,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,EAAE,EAAE,UAAU;KACf,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe;IAC/C,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,+BAA+B,CACtC,KAA+D,EAC/D,SAAiC;IAEjC,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAExD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,IAAI;YACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,IAAI;YACJ,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;aAC3B;YACD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,CAAC,CAAC;gBACE,IAAI,EAAE,iBAAiB;gBACvB,IAAI;gBACJ,QAAQ,EAAE,KAAK,CAAC,KAAK;gBACrB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB;YACH,CAAC,CAAC;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI;gBACJ,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,KAAK,CAAC,KAAK;iBACnB;gBACD,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;IACR,CAAC;IAED,wEAAwE;IACxE,mEAAmE;IACnE,+BAA+B;IAC/B,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,IAAI;QACJ,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAA0B,EAAE,SAAS,CAAC;QACvE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAwB,EACxB,YAAoC,IAAI,GAAG,EAAE;IAE7C,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAsB,EAAE,SAAS,CAAC,CAAC;IACtF,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAA2B,CAAC,CAAC;QACzE,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,mBAAmB,CAAC,OAA4B,EAAE,SAAS,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,KAAK;SACN,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK;SACN,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO;oBACL,IAAI,EAAE,kBAAkB;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAyB,EAAE,SAAS,CAAC;oBACrE,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAA0B,EAAE,SAAS,CAAC;iBACxE,CAAC;YAEJ,KAAK,OAAO;gBACV,OAAO;oBACL,IAAI,EAAE,iBAAiB;oBACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,QAA6B,EAAE,SAAS,CAAC;iBAC9E,CAAC;YAEJ,KAAK,SAAS;gBACZ,OAAO;oBACL,IAAI,EAAE,mBAAmB;oBACzB,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAA8B,EAAE,SAAS,CAAC;oBAC/E,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAA8B,EAAE,SAAS,CAAC;oBAC/E,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,UAA+B,EAAE,SAAS,CAAC;iBAClF,CAAC;YAEJ,KAAK,SAAS;gBACZ,OAAO;oBACL,IAAI,EAAE,eAAe;oBACrB,MAAM,EAAE,KAAK,CAAC,QAAQ;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAChC,mBAAmB,CAAC,QAA6B,EAAE,SAAS,CAAC,CAC9D;iBACF,CAAC;YAEJ,KAAK,wBAAwB;gBAC3B,OAAO;oBACL,IAAI,EAAE,wBAAwB;oBAC9B,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAyB,EAAE,SAAS,CAAC;oBACrE,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAChC,mBAAmB,CAAC,QAA6B,EAAE,SAAS,CAAC,CAC9D;iBACF,CAAC;YAEJ,KAAK,qBAAqB;gBACxB,OAAO;oBACL,IAAI,EAAE,qBAAqB;oBAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACvC,mBAAmB,CAAC,OAA4B,EAAE,SAAS,CAAC,CAC7D;iBACF,CAAC;YAEJ,KAAK,YAAY;gBACf,OAAO,6BAA6B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAEzD,KAAK,iBAAiB,CAAC;YACvB,KAAK,cAAc;gBACjB,OAAO,+BAA+B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAE3D,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxC,OAAO,UAAU,KAAK,SAAS;oBAC7B,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC;oBACnC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,MAAM,UAAU,qBAAqB,CACnC,gBAAwB,EACxB,OAAiC,EACjC,kBAA0B,EAC1B,KAAuC;IAEvC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,aAAa,kBAAkB,gCAAgC;YAC7D,IAAI,gBAAgB,SAAS,KAAK,IAAI,CACzC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,aAAa,kBAAkB,mCAAmC;YAChE,IAAI,gBAAgB,SAAS,KAAK,IAAI,CACzC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,IAAoB,EACpB,OAAiC,EACjC,kBAA0B;IAE1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,aAAa,kBAAkB,wDAAwD,CACxF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,aAAa,kBAAkB,yEAAyE,CACzG,CAAC;QACJ,CAAC;QACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAE9E,MAAM,UAAU,qBAAqB,CACnC,IAAoB,EACpB,OAAiC;IAEjC,uEAAuE;IACvE,qEAAqE;IACrE,mEAAmE;IACnE,qEAAqE;IACrE,mEAAmE;IACnE,0DAA0D;IAC1D,MAAM,UAAU,GAAI,IAAyB,CAAC,IAAI,CAAC;IACnD,IAAI,UAAU,KAAK,qBAAqB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAId,CAAC;QACF,OAAO,cAAc,CACnB,4BAA4B,CAAC,0BAA0B,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAC9F,CAAC;IACJ,CAAC;IAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChF,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QAEd,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,GAAG,CAAC;YAClC,OAAO,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,eAAe;YAClB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,cAAc,CACnB,0BAA0B,CACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CACxD,CACF,CAAC;QAEJ,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;gBACjC,CAAC,CAAC,gBAAgB,CAAC,IAA2B,CAAC;gBAC/C,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,OAAO,cAAc,CACnB,kCAAkC,CAChC,QAAQ,EACR,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CACxD,CACF,CAAC;QACJ,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,cAAc,CACnB,4BAA4B,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE;wBAC1E,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,OAAQ,IAA2C,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,CAAC;YACD,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAA2B,CAAC,CAAC;gBAC5D,OAAO,cAAc,CACnB,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;oBACjD,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CACH,CAAC;YACJ,CAAC;YACD,OAAO,cAAc,CACnB,4BAA4B,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE;gBAClF,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvD,sEAAsE;YACtE,mEAAmE;YACnE,qCAAqC;YACrC,IAAI,GAAqB,CAAC;YAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACrE,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC;oBACnC,CAAC,CAAC,gBAAgB,CAAC,iBAAwC,CAAC;oBAC5D,CAAC,CAAE,iBAAsC,CAAC;YAC9C,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjC,OAAO,cAAc,CACnB,yBAAyB,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;wBAC7D,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,OAAQ,IAA2C,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,qEAAqE;gBACrE,8DAA8D;gBAC9D,oEAAoE;gBACpE,qEAAqE;gBACrE,sDAAsD;gBACtD,OAAO,cAAc,CACnB,yBAAyB,CAAC,wBAAwB,CAAC,IAA2B,CAAC,EAAE,GAAG,EAAE;oBACpF,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAA2B,CAAC,CAAC;gBAC5D,OAAO,cAAc,CACnB,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE;oBACpC,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CACH,CAAC;YACJ,CAAC;YACD,OAAO,cAAc,CACnB,yBAAyB,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE;gBACrE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;oBAC9B,KAAK,EAAE,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC;oBAC5C,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAExE,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,SAAS,GAAG,IAAiC,CAAC;YACpD,OAAO,cAAc,CAAC;gBACpB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;gBACpD,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;aACT,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,IAAgC,CAAC;YACnD,OAAO,cAAc,CAAC;gBACpB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,QAAQ,EAAE,qBAAqB,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;aAChB,CAAC,CAAC;QAClD,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,SAAS,GAAG,IAAkC,CAAC;YACrD,OAAO,cAAc,CAAC;gBACpB,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;gBAC9D,SAAS,EAAE,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;gBAC9D,UAAU,EAAE,qBAAqB,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;aAClB,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,OAAO,cAAc,CAAC;gBACpB,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC5D,CAAC,CAAC;QAC3B,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n accessExpressionNode,\n arrayAccessExpressionNode,\n functionCallExpressionNode,\n identifierExpressionNode,\n instanceFunctionCallExpressionNode,\n isExpressionNode,\n propertyAccessExpressionNode,\n type ArrayAccessIndex,\n type ArrayAccessExpressionNode,\n type BinaryExpressionNode,\n type ExpressionNode as CoreExpressionNode,\n type IdentifierExpressionNode,\n type PropertyAccessExpressionNode,\n type TernaryExpressionNode,\n type UnaryExpressionNode,\n} from \"../../expression/ast-nodes.js\";\nimport {\n isExpression,\n unwrapExpression,\n wrapExpression,\n type Expression,\n} from \"../../expression/expressions.js\";\nimport { isResource, isLoopedResource } from \"../../constructs/resource/resource-utils.js\";\nimport {\n type LoopedResource,\n type Resource,\n type ResourceDeclaration,\n} from \"../../constructs/resource/resource.js\";\nimport type {\n ArrayValue,\n BinaryOperationExpression,\n ExpressionNode,\n FunctionCallExpression,\n ObjectValue,\n TernaryOperationExpression,\n UnaryOperationExpression,\n} from \"../contract/index.js\";\nimport type { ParameterMetadata } from \"../../constructs/parameter.js\";\nimport type { VariableMetadata } from \"../../constructs/variable.js\";\n\nexport type SerializableValue =\n | CoreExpressionNode\n | Expression<unknown>\n | string\n | number\n | boolean\n | null\n | readonly SerializableValue[]\n | {\n readonly [key: string]: SerializableValue | undefined;\n };\n\nexport type SerializationSymbolMap = Map<\n ResourceDeclaration | CoreExpressionNode | ParameterMetadata | VariableMetadata,\n string\n>;\n\ntype SymbolValue = Expression<unknown> | Resource | LoopedResource<Resource>;\nexport type DeserializationSymbolMap = Map<string, SymbolValue>;\n\n// ---------------------------------------------------------------------------\n// ARM property-access lowering\n// ---------------------------------------------------------------------------\n\n/**\n * Expands armPath stamps along a core property-access chain, replacing each\n * stamped property with its ARM path relative to the lowered base. Empty\n * paths fall back to the original property name. Generated accesses carry\n * no stamps; unchanged nodes retain their identity.\n *\n * Recursion stops at non-property-access nodes and leaves their children\n * untouched. serializeExpression traverses those children and invokes this\n * helper as it reaches them; this is not a whole-expression lowering pass.\n */\nexport function lowerArmPropertyAccessChain(node: CoreExpressionNode): CoreExpressionNode {\n if (node.kind !== \"property-access\") return node;\n\n const loweredBase = lowerArmPropertyAccessChain(node.base);\n if (node.armPath !== undefined) {\n const path = node.armPath.length > 0 ? node.armPath : [node.property];\n let current: CoreExpressionNode = loweredBase;\n for (const segment of path) {\n // A flattened optional property may be absent at any wire-path segment.\n current = accessExpressionNode(current, segment, {\n nullish: node.nullish,\n });\n }\n return current;\n }\n if (loweredBase === node.base) return node;\n return { ...node, base: loweredBase };\n}\n\n// ---------------------------------------------------------------------------\n// Expression serialization: CDK value -> AST\n// ---------------------------------------------------------------------------\n\nfunction splitSymbolicPath(path: string): string[] {\n const parts: string[] = [];\n let current = \"\";\n let depth = 0;\n\n for (const character of path) {\n if (character === \".\" && depth === 0) {\n if (current.length > 0) {\n parts.push(current);\n current = \"\";\n }\n continue;\n }\n\n if (character === \"(\") {\n depth += 1;\n } else if (character === \")\") {\n depth -= 1;\n }\n\n current += character;\n }\n\n if (current.length > 0) {\n parts.push(current);\n }\n\n return parts;\n}\n\nfunction serializeSymbolicPath(path: string): ExpressionNode {\n const parts = splitSymbolicPath(path);\n let current: ExpressionNode | undefined;\n\n for (const part of parts) {\n if (part.endsWith(\"()\")) {\n const target = part.slice(0, -2);\n const callNode: FunctionCallExpression = {\n kind: \"function-call\",\n target,\n args: [],\n };\n\n current =\n current === undefined\n ? callNode\n : {\n kind: \"instance-function-call\",\n base: current,\n name: target,\n args: [],\n };\n continue;\n }\n\n current =\n current === undefined\n ? {\n kind: \"identifier\",\n id: part,\n }\n : {\n kind: \"property-access\",\n base: current,\n property: part,\n nullish: false,\n };\n }\n\n if (current === undefined) {\n throw new Error(`Cannot serialize empty symbolic path.`);\n }\n\n return current;\n}\n\nfunction serializePlainObject(\n value: { readonly [key: string]: SerializableValue | undefined },\n symbolMap: SerializationSymbolMap,\n): ObjectValue {\n return {\n kind: \"object\",\n value: serializeDefinedObjectEntries(value, symbolMap),\n };\n}\n\nexport function serializeDefinedObjectEntries(\n value: { readonly [key: string]: SerializableValue | undefined },\n symbolMap: SerializationSymbolMap,\n): Record<string, ExpressionNode> {\n return Object.fromEntries(\n Object.entries(value).flatMap(([key, propertyValue]) =>\n propertyValue === undefined ? [] : [[key, serializeExpression(propertyValue, symbolMap)]],\n ),\n );\n}\n\nfunction serializeArray(\n value: readonly SerializableValue[],\n symbolMap: SerializationSymbolMap,\n): ArrayValue {\n return {\n kind: \"array\",\n items: value.map((item) => serializeExpression(item, symbolMap)),\n };\n}\n\nfunction isSerializableObject(\n value: SerializableValue,\n): value is { readonly [key: string]: SerializableValue | undefined } {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction serializeIdentifierExpression(\n value: IdentifierExpressionNode,\n symbolMap: SerializationSymbolMap,\n): ExpressionNode {\n if (typeof value.id === \"string\") {\n return {\n kind: \"identifier\",\n id: value.id,\n };\n }\n\n const identifier = symbolMap.get(value.id);\n\n if (identifier === undefined) {\n throw new Error(`Missing synthesized symbol for referenced resource type ${value.id.type}.`);\n }\n\n return {\n kind: \"identifier\",\n id: identifier,\n };\n}\n\nfunction isBicepIdentifierSegment(segment: string): boolean {\n return /^[A-Za-z_][A-Za-z0-9_]*$/u.test(segment);\n}\n\nfunction serializeMemberAccessExpression(\n value: PropertyAccessExpressionNode | ArrayAccessExpressionNode,\n symbolMap: SerializationSymbolMap,\n): ExpressionNode {\n const base = serializeExpression(value.base, symbolMap);\n\n if (value.kind === \"property-access\") {\n return {\n kind: \"property-access\",\n base,\n property: value.property,\n nullish: value.nullish,\n };\n }\n\n if (typeof value.index === \"number\") {\n return {\n kind: \"array-access\",\n base,\n index: {\n kind: \"integer\",\n value: String(value.index),\n },\n nullish: value.nullish,\n fromEnd: value.fromEnd,\n };\n }\n\n if (typeof value.index === \"string\") {\n if (value.fromEnd) {\n throw new Error(\"Reverse indexing requires an integer index, not a string.\");\n }\n return isBicepIdentifierSegment(value.index)\n ? {\n kind: \"property-access\",\n base,\n property: value.index,\n nullish: value.nullish,\n }\n : {\n kind: \"array-access\",\n base,\n index: {\n kind: \"string\",\n value: value.index,\n },\n nullish: value.nullish,\n fromEnd: value.fromEnd,\n };\n }\n\n // Expression-shaped index (e.g. a loop's `.index` symbolic value or any\n // `Expression<number>` proxy). Recursively serialize into the wire\n // array-access's `index` slot.\n return {\n kind: \"array-access\",\n base,\n index: serializeExpression(value.index as SerializableValue, symbolMap),\n nullish: value.nullish,\n fromEnd: value.fromEnd,\n };\n}\n\nexport function serializeExpression(\n value: SerializableValue,\n symbolMap: SerializationSymbolMap = new Map(),\n): ExpressionNode {\n if (isExpression(value)) {\n return serializeExpression(unwrapExpression(value) as SerializableValue, symbolMap);\n }\n\n // Lower the current property-access chain. Recursive serialization below\n // visits other child expressions, lowering their property chains in turn.\n if (value !== null && typeof value === \"object\" && isExpressionNode(value)) {\n const lowered = lowerArmPropertyAccessChain(value as CoreExpressionNode);\n if (lowered !== value) {\n return serializeExpression(lowered as SerializableValue, symbolMap);\n }\n }\n\n if (typeof value === \"string\") {\n return {\n kind: \"string\",\n value,\n };\n }\n\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw new Error(`Bicep serialization currently only supports integer numbers.`);\n }\n if (!Number.isSafeInteger(value)) {\n throw new Error(`Bicep serialization currently only supports safe integer numbers.`);\n }\n\n return {\n kind: \"integer\",\n value: String(value),\n };\n }\n\n if (typeof value === \"boolean\") {\n return {\n kind: \"boolean\",\n value,\n };\n }\n\n if (value === null) {\n return {\n kind: \"null\",\n value: null,\n };\n }\n\n if (Array.isArray(value)) {\n return serializeArray(value, symbolMap);\n }\n\n if (isExpressionNode(value)) {\n switch (value.kind) {\n case \"binary\":\n return {\n kind: \"binary-operation\",\n operator: value.operator,\n left: serializeExpression(value.left as SerializableValue, symbolMap),\n right: serializeExpression(value.right as SerializableValue, symbolMap),\n };\n\n case \"unary\":\n return {\n kind: \"unary-operation\",\n operator: value.operator,\n argument: serializeExpression(value.argument as SerializableValue, symbolMap),\n };\n\n case \"ternary\":\n return {\n kind: \"ternary-operation\",\n condition: serializeExpression(value.condition as SerializableValue, symbolMap),\n trueValue: serializeExpression(value.trueValue as SerializableValue, symbolMap),\n falseValue: serializeExpression(value.falseValue as SerializableValue, symbolMap),\n };\n\n case \"fn-call\":\n return {\n kind: \"function-call\",\n target: value.operator,\n args: value.args.map((argument) =>\n serializeExpression(argument as SerializableValue, symbolMap),\n ),\n };\n\n case \"instance-function-call\":\n return {\n kind: \"instance-function-call\",\n base: serializeExpression(value.base as SerializableValue, symbolMap),\n name: value.name,\n args: value.args.map((argument) =>\n serializeExpression(argument as SerializableValue, symbolMap),\n ),\n };\n\n case \"interpolated-string\":\n return {\n kind: \"interpolated-string\",\n segments: value.segments.map((segment) =>\n serializeExpression(segment as SerializableValue, symbolMap),\n ),\n };\n\n case \"identifier\":\n return serializeIdentifierExpression(value, symbolMap);\n\n case \"property-access\":\n case \"array-access\":\n return serializeMemberAccessExpression(value, symbolMap);\n\n case \"symbolic-value\": {\n const identifier = symbolMap.get(value);\n return identifier === undefined\n ? serializeSymbolicPath(value.path)\n : { kind: \"identifier\", id: identifier };\n }\n }\n }\n\n if (isSerializableObject(value)) {\n return serializePlainObject(value, symbolMap);\n }\n\n throw new Error(`Unsupported serialization input.`);\n}\n\n// ---------------------------------------------------------------------------\n// Resource-reference validation\n// ---------------------------------------------------------------------------\n\nexport function requireResourceHandle(\n targetIdentifier: string,\n symbols: DeserializationSymbolMap,\n resourceIdentifier: string,\n field: \"parent\" | \"scope\" | \"dependsOn\",\n): Resource | LoopedResource<Resource> {\n const handle = symbols.get(targetIdentifier);\n if (handle === undefined) {\n throw new Error(\n `Resource \"${resourceIdentifier}\" references unknown resource ` +\n `\"${targetIdentifier}\" in \"${field}\".`,\n );\n }\n if (!isResource(handle) && !isLoopedResource(handle)) {\n throw new Error(\n `Resource \"${resourceIdentifier}\" references non-resource symbol ` +\n `\"${targetIdentifier}\" in \"${field}\".`,\n );\n }\n return handle;\n}\n\nexport function deserializeDependsOnExpression(\n node: ExpressionNode,\n symbols: DeserializationSymbolMap,\n resourceIdentifier: string,\n): readonly ResourceDeclaration[] {\n if (node.kind !== \"array\") {\n throw new Error(\n `Resource \"${resourceIdentifier}\" has an invalid \"dependsOn\" value; expected an array.`,\n );\n }\n\n return node.items.map((item) => {\n if (item.kind !== \"identifier\") {\n throw new Error(\n `Resource \"${resourceIdentifier}\" has an invalid \"dependsOn\" reference; expected a resource identifier.`,\n );\n }\n return requireResourceHandle(item.id, symbols, resourceIdentifier, \"dependsOn\");\n });\n}\n\n// ---------------------------------------------------------------------------\n// Expression deserialization: AST -> CDK value\n// ---------------------------------------------------------------------------\n\nexport function deserializeExpression(\n node: ExpressionNode,\n symbols: DeserializationSymbolMap,\n): unknown {\n // TODO(#330): Legacy `contextual-variable` shim. The JS side no longer\n // produces this kind (it emits the composed `property-access` over a\n // zero-arg `function-call` form), but the .NET `ModelReaderWriter`\n // still emits it on re-serialization. Accept it on input by lowering\n // to the composed form, then fall through. Delete this whole block\n // (and any cast it requires) once .NET stops emitting it.\n const legacyKind = (node as { kind: string }).kind;\n if (legacyKind === \"contextual-variable\") {\n const legacy = node as unknown as {\n kind: \"contextual-variable\";\n context: string;\n property: string;\n };\n return wrapExpression(\n propertyAccessExpressionNode(functionCallExpressionNode(legacy.context, []), legacy.property),\n );\n }\n\n switch (node.kind) {\n case \"string\":\n return node.value;\n case \"integer\": {\n const value = parseInt(node.value, 10);\n if (!Number.isSafeInteger(value)) {\n throw new Error(`Cannot deserialize unsafe integer literal \"${node.value}\".`);\n }\n return value;\n }\n case \"boolean\":\n return node.value;\n case \"null\":\n return null;\n\n case \"identifier\": {\n const sym = symbols.get(node.id);\n if (sym !== undefined) return sym;\n return wrapExpression(identifierExpressionNode(node.id));\n }\n\n case \"function-call\":\n if (typeof node.target !== \"string\") {\n throw new Error(\"Cannot deserialize function call with an expression target.\");\n }\n return wrapExpression(\n functionCallExpressionNode(\n node.target,\n node.args.map((a) => deserializeExpression(a, symbols)),\n ),\n );\n\n case \"instance-function-call\": {\n const base = deserializeExpression(node.base, symbols);\n const baseNode = isExpression(base)\n ? unwrapExpression(base as Expression<unknown>)\n : identifierExpressionNode(isResource(base) ? base : String(base));\n return wrapExpression(\n instanceFunctionCallExpressionNode(\n baseNode,\n node.name,\n node.args.map((a) => deserializeExpression(a, symbols)),\n ),\n );\n }\n\n case \"property-access\": {\n const base = deserializeExpression(node.base, symbols);\n if (isResource(base)) {\n if (node.nullish) {\n return wrapExpression(\n propertyAccessExpressionNode(identifierExpressionNode(base), node.property, {\n nullish: node.nullish,\n }),\n );\n }\n return (base as unknown as Record<string, unknown>)[node.property];\n }\n if (isExpression(base)) {\n const inner = unwrapExpression(base as Expression<unknown>);\n return wrapExpression(\n propertyAccessExpressionNode(inner, node.property, {\n nullish: node.nullish,\n }),\n );\n }\n return wrapExpression(\n propertyAccessExpressionNode(identifierExpressionNode(String(base)), node.property, {\n nullish: node.nullish,\n }),\n );\n }\n\n case \"array-access\": {\n const base = deserializeExpression(node.base, symbols);\n // Preserve non-literal indexes as expressions so `sym[<expr>]` round-\n // trips faithfully. Literal integer/string indexes lower to native\n // JS number/string values as before.\n let idx: ArrayAccessIndex;\n if (node.index.kind === \"integer\") {\n idx = parseInt(node.index.value, 10);\n } else if (node.index.kind === \"string\") {\n idx = node.index.value;\n } else {\n const deserializedIndex = deserializeExpression(node.index, symbols);\n idx = isExpression(deserializedIndex)\n ? unwrapExpression(deserializedIndex as Expression<unknown>)\n : (deserializedIndex as ArrayAccessIndex);\n }\n if (isResource(base)) {\n if (node.nullish || node.fromEnd) {\n return wrapExpression(\n arrayAccessExpressionNode(identifierExpressionNode(base), idx, {\n nullish: node.nullish,\n fromEnd: node.fromEnd,\n }),\n );\n }\n return (base as unknown as Record<string, unknown>)[String(idx)];\n }\n if (isLoopedResource(base)) {\n // `sym[idx]` on a looped declaration. Carry the handle itself as the\n // identifier id (not `String(base)`, which would stringify to\n // \"[object Object]\") so re-serialize maps it back to the resource's\n // symbol. The resulting expression proxy lets an outer `.prop` chain\n // (e.g. `looped.at(0).id`) render as `sym[idx].prop`.\n return wrapExpression(\n arrayAccessExpressionNode(identifierExpressionNode(base as unknown as Resource), idx, {\n nullish: node.nullish,\n fromEnd: node.fromEnd,\n }),\n );\n }\n if (isExpression(base)) {\n const inner = unwrapExpression(base as Expression<unknown>);\n return wrapExpression(\n arrayAccessExpressionNode(inner, idx, {\n nullish: node.nullish,\n fromEnd: node.fromEnd,\n }),\n );\n }\n return wrapExpression(\n arrayAccessExpressionNode(identifierExpressionNode(String(base)), idx, {\n nullish: node.nullish,\n fromEnd: node.fromEnd,\n }),\n );\n }\n\n case \"object\": {\n const obj: Record<string, unknown> = Object.create(null);\n for (const [key, value] of Object.entries(node.value)) {\n Object.defineProperty(obj, key, {\n value: deserializeExpression(value, symbols),\n enumerable: true,\n configurable: true,\n writable: true,\n });\n }\n return obj;\n }\n\n case \"array\":\n return node.items.map((item) => deserializeExpression(item, symbols));\n\n case \"binary-operation\": {\n const operation = node as BinaryOperationExpression;\n return wrapExpression({\n kind: \"binary\",\n operator: operation.operator,\n left: deserializeExpression(operation.left, symbols),\n right: deserializeExpression(operation.right, symbols),\n } as BinaryExpressionNode as CoreExpressionNode);\n }\n\n case \"unary-operation\": {\n const operation = node as UnaryOperationExpression;\n return wrapExpression({\n kind: \"unary\",\n operator: operation.operator,\n argument: deserializeExpression(operation.argument, symbols),\n } as UnaryExpressionNode as CoreExpressionNode);\n }\n\n case \"ternary-operation\": {\n const operation = node as TernaryOperationExpression;\n return wrapExpression({\n kind: \"ternary\",\n condition: deserializeExpression(operation.condition, symbols),\n trueValue: deserializeExpression(operation.trueValue, symbols),\n falseValue: deserializeExpression(operation.falseValue, symbols),\n } as TernaryExpressionNode as CoreExpressionNode);\n }\n\n case \"interpolated-string\": {\n return wrapExpression({\n kind: \"interpolated-string\",\n segments: node.segments.map((segment) => deserializeExpression(segment, symbols)),\n } as CoreExpressionNode);\n }\n\n default:\n throw new Error(`Unsupported expression node kind: ${node.kind}`);\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/lower.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAwB9B;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,OAAO,CAAC,MAAM,CAAiB,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8BzB;AAmJD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,OAAO,CAAC,MAAM,CAAiB,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8CzB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lower.js","sourceRoot":"","sources":["../../../../src/serialization/json/lower.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;;GAQG;AAEH,OAAO,EACL,oBAAoB,EAGpB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAElC,SAAS,qBAAqB,CAAC,KAAY;IACzC,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,yEAAyE;IACzE,kDAAkD;IAClD,IAAI,YAAY,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,KAAiB,EACjB,UAA2B,IAAI,OAAO,EAAE;IAExC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAEnD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAE3E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,+DAA+D;gBAC/D,sBAAsB;gBACtB,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;gBACvC,SAAS;YACX,CAAC;YAED,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,KAAc,EACd,KAA6B,EAC7B,OAAwB,EACxB,IAAuB;IAEvB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,gEAAgE;YAChE,uCAAuC;YACvC,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/B,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACnE,CAAC;QACJ,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/B,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,CAAC;QACJ;YACE,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CACjB,MAA+B,EAC/B,IAAuB,EACvB,KAAc;IAEd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE9B,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1D,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,QAAQ,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,OAAO,QAAQ,GAAG,CACtG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QACxE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACjB,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,SAAS,CACP,MAAM,EACN,OAAO,EACP,SAAS,CAAC,YAAuC,EAAE,KAAgC,EAAE,IAAI,CAAC,CAC3F,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,OAAO,YAAY,SAAS,OAAO,KAAK,GAAG,CACvG,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,CAA0B,EAC1B,CAA0B,EAC1B,MAAyB;IAEzB,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,SAAS,CACP,GAAG,EACH,CAAC,EACD,SAAS,CAAC,QAAmC,EAAE,CAA4B,EAAE;gBAC3E,GAAG,MAAM;gBACT,CAAC;aACF,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0BAA0B,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,OAAO,QAAQ,SAAS,OAAO,CAAC,GAAG,CACzG,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,MAA+B,EAAE,GAAW,EAAE,KAAc;IAC7E,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;QACjC,KAAK;QACL,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,KAAiB,EACjB,UAA2B,IAAI,OAAO,EAAE;IAExC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,kEAAkE;QAClE,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI;YAAE,OAAO,mBAAmB,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;QAE5D,oEAAoE;QACpE,MAAM,OAAO,GAA4B,mBAAmB,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;QACnF,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAE3C,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,SAAS,KAAK,OAAO;gBAAE,SAAS;YAEpC,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACrE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAE/B,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;QACjC,CAAC;QAED,oEAAoE;QACpE,+DAA+D;QAC/D,iBAAiB;QACjB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,4DAA4D;gBAC5D,4DAA4D;gBAC5D,4DAA4D;gBAC5D,oBAAoB;gBACpB,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAC9D,IAAI,CAAC,KAAK,SAAS;oBAAE,SAAS;YAChC,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC3D,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,KAAc,EACd,KAA6B,EAC7B,OAAwB,EACxB,IAAuB;IAEvB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,6DAA6D;YAC7D,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/B,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACnE,CAAC;QACJ,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/B,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,CAAC;QACJ;YACE,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,GAA4B,EAAE,IAAuB;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAElC,IAAI,MAAM,GAA4B,GAAG,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;QACzC,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAC1B,KAA8B,EAC9B,IAAqB;IAErB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,6DAA6D;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,SAAS,CACP,GAAG,EACH,CAAC,EACD,YAAY,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBAChB,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC;gBAC9B,CAAC,CAAC,CAAC,CACR,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * ARM state-shape conversion.\n *\n * lowerState maps JS property names to ARM paths, restores flattened\n * nesting, and encodes terminal values using the supplied model shape.\n * raiseState performs the inverse conversion for deserialization.\n * Both follow nested model, array, and record shapes and preserve unknown\n * keys. Property-access expression lowering lives in expression.ts.\n */\n\nimport {\n isTerminalValueShape,\n type ModelShape,\n type ValueShape,\n resolveModelShape,\n} from \"../../shape/shape.js\";\nimport { isExpression } from \"../../expression/expressions.js\";\nimport { isExpressionNode } from \"../../expression/ast-nodes.js\";\nimport { decodeWireValue, encodeWireValue } from \"./encoding.js\";\n\nconst MISSING = Symbol(\"missing\");\n\nfunction assertNeverValueShape(shape: never): never {\n throw new Error(`Unhandled value shape: ${String(shape)}`);\n}\n\n// ---------------------------------------------------------------------------\n// State lowering\n// ---------------------------------------------------------------------------\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\") return false;\n // Expression proxies are opaque values (despite a null prototype) — they\n // must not be treated as cloneable plain objects.\n if (isExpression(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\n/**\n * Recursively rewrite a raw state object into its ARM wire shape. Keys\n * not present in `shape.byJsName` pass through unchanged. Multi-\n * segment ARM paths (from `@flattenProperty`) re-nest objects; nested\n * models, arrays-of-models and records-of-models recurse via\n * `target`. Empty ARM paths fall back to the JS property name.\n *\n * Collisions where two JS-side keys map to overlapping ARM paths merge\n * when both sides are compatible objects; non-object / object collisions\n * throw.\n */\nexport function lowerState(\n state: Record<string, unknown>,\n shape: ModelShape,\n visited: WeakSet<object> = new WeakSet(),\n): Record<string, unknown> {\n if (visited.has(state)) {\n throw new Error(\"Cycle detected while lowering ARM state.\");\n }\n visited.add(state);\n try {\n const out: Record<string, unknown> = Object.create(null);\n // Select the variant once, from the state we're about to lower —\n // every key below is looked up against that one concrete shape.\n const flat = resolveModelShape(shape, state, \"js\");\n\n for (const [jsKey, rawValue] of Object.entries(state)) {\n const propShape = flat?.byJsName[jsKey];\n const path = propShape?.armPath.length ? propShape.armPath : [jsKey];\n const loweredValue = lowerValue(rawValue, propShape?.value, visited, path);\n\n if (!propShape) {\n // Passthrough: key not in shape (e.g. CDK-internal, or emitter\n // didn't include it).\n assignPath(out, [jsKey], loweredValue);\n continue;\n }\n\n assignPath(out, path, loweredValue);\n }\n\n return out;\n } finally {\n visited.delete(state);\n }\n}\n\nfunction lowerValue(\n value: unknown,\n shape: ValueShape | undefined,\n visited: WeakSet<object>,\n path: readonly string[],\n): unknown {\n if (value === null || value === undefined) return value;\n if (isExpression(value) || isExpressionNode(value)) return value;\n\n if (!shape) {\n return value;\n }\n\n if (isTerminalValueShape(shape)) {\n if (\"encoding\" in shape && shape.encoding) {\n return encodeWireValue(value, shape.encoding, path);\n }\n return value;\n }\n\n switch (shape.kind) {\n case \"deferred\":\n if (!isPlainObject(value)) return value;\n // `lowerState` resolves the variant itself, per property, using\n // `value` as the discriminator source.\n return lowerState(value, shape.value(), visited);\n case \"array\":\n if (!Array.isArray(value)) return value;\n return value.map((item, index) =>\n lowerValue(item, shape.element, visited, [...path, String(index)]),\n );\n case \"record\": {\n if (!isPlainObject(value)) return value;\n const out: Record<string, unknown> = Object.create(null);\n for (const [k, v] of Object.entries(value)) {\n defineOwn(out, k, lowerValue(v, shape.value, visited, [...path, k]));\n }\n return out;\n }\n case \"tuple\":\n if (!Array.isArray(value)) return value;\n return value.map((item, index) =>\n lowerValue(item, shape.values[index], visited, [...path, String(index)]),\n );\n default:\n return assertNeverValueShape(shape);\n }\n}\n\n/**\n * Write `value` into `target` at the given ARM path, deep-merging with\n * existing object values. Throws on non-object/object or\n * object/non-object collisions.\n */\nfunction assignPath(\n target: Record<string, unknown>,\n path: readonly string[],\n value: unknown,\n): void {\n if (path.length === 0) return;\n\n let cursor = target;\n for (let i = 0; i < path.length - 1; i++) {\n const seg = path[i]!;\n const existing = Object.prototype.hasOwnProperty.call(cursor, seg) ? cursor[seg] : undefined;\n if (existing === undefined) {\n const next: Record<string, unknown> = Object.create(null);\n defineOwn(cursor, seg, next);\n cursor = next;\n } else if (isPlainObject(existing)) {\n cursor = existing;\n } else {\n throw new Error(\n `ARM path collision at \"${path.slice(0, i + 1).join(\".\")}\": expected object, got ${typeof existing}.`,\n );\n }\n }\n\n const leafKey = path[path.length - 1]!;\n const existingLeaf = Object.prototype.hasOwnProperty.call(cursor, leafKey)\n ? cursor[leafKey]\n : undefined;\n if (existingLeaf === undefined) {\n defineOwn(cursor, leafKey, value);\n return;\n }\n\n if (isPlainObject(existingLeaf) && isPlainObject(value)) {\n defineOwn(\n cursor,\n leafKey,\n deepMerge(existingLeaf as Record<string, unknown>, value as Record<string, unknown>, path),\n );\n return;\n }\n\n throw new Error(\n `ARM path collision at \"${path.join(\".\")}\": cannot merge ${typeof existingLeaf} with ${typeof value}.`,\n );\n}\n\nfunction deepMerge(\n a: Record<string, unknown>,\n b: Record<string, unknown>,\n prefix: readonly string[],\n): Record<string, unknown> {\n const out: Record<string, unknown> = Object.create(null);\n for (const [key, value] of Object.entries(a)) defineOwn(out, key, value);\n for (const [k, v] of Object.entries(b)) {\n const existing = Object.prototype.hasOwnProperty.call(out, k) ? out[k] : undefined;\n if (existing === undefined) {\n defineOwn(out, k, v);\n continue;\n }\n if (isPlainObject(existing) && isPlainObject(v)) {\n defineOwn(\n out,\n k,\n deepMerge(existing as Record<string, unknown>, v as Record<string, unknown>, [\n ...prefix,\n k,\n ]),\n );\n continue;\n }\n throw new Error(\n `ARM path collision at \"${[...prefix, k].join(\".\")}\": cannot merge ${typeof existing} with ${typeof v}.`,\n );\n }\n return out;\n}\n\nfunction defineOwn(target: Record<string, unknown>, key: string, value: unknown): void {\n Object.defineProperty(target, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n}\n\n// ---------------------------------------------------------------------------\n// State raising (inverse of lowerState)\n// ---------------------------------------------------------------------------\n\n/**\n * Inverse of `lowerState`: walks a wire-shape state object and lifts\n * values at each property entry's `armPath` back onto the flat\n * `jsName` key. Recurses into nested model / array / record values via\n * `target`. Empty ARM paths fall back to the JS property name.\n *\n * ARM-shape keys that consumed a nested object entirely (single-segment\n * paths carrying a model `target`) pop that segment from the source\n * so leftovers at intermediate nodes don't silently leak into the\n * output. For multi-segment paths (`@flattenProperty`), only the leaf\n * is extracted; intermediate shared objects may survive as their own\n * top-level entries if the shape also declares a jsName for them.\n *\n * Keys present in the state but not consumed by any property entry\n * pass through unchanged (preserving the \"unknown key\" escape hatch\n * documented in `lowerState`).\n */\nexport function raiseState(\n state: Record<string, unknown>,\n shape: ModelShape,\n visited: WeakSet<object> = new WeakSet(),\n): Record<string, unknown> {\n if (visited.has(state)) {\n throw new Error(\"Cycle detected while raising ARM state.\");\n }\n visited.add(state);\n try {\n // Wire-shaped input, so the variant is selected against ARM keys.\n const flat = resolveModelShape(shape, state, \"arm\");\n if (!flat) return structuredCloneLike(state, new WeakSet());\n\n // Clone into a mutable working copy so we can prune consumed paths.\n const working: Record<string, unknown> = structuredCloneLike(state, new WeakSet());\n const out: Record<string, unknown> = Object.create(null);\n const consumedTopLevel = new Set<string>();\n\n for (const [jsName, propShape] of Object.entries(flat.byJsName)) {\n const path = propShape.armPath.length > 0 ? propShape.armPath : [jsName];\n const extracted = extractPath(working, path);\n if (extracted === MISSING) continue;\n\n const raised = raiseValue(extracted, propShape.value, visited, path);\n defineOwn(out, jsName, raised);\n\n consumedTopLevel.add(path[0]!);\n }\n\n // Passthrough: anything left in `working` that wasn't consumed by a\n // shape-driven extraction and doesn't collide with an already-\n // placed jsName.\n for (const [k, v] of Object.entries(working)) {\n if (consumedTopLevel.has(k)) {\n // Top-level segment was touched by at least one armPath. If\n // residue remains (e.g. sibling properties the shape didn't\n // cover), surface it under the original ARM key so it's not\n // silently dropped.\n if (isPlainObject(v) && Object.keys(v).length === 0) continue;\n if (v === undefined) continue;\n }\n if (Object.prototype.hasOwnProperty.call(out, k)) continue;\n defineOwn(out, k, v);\n }\n\n return out;\n } finally {\n visited.delete(state);\n }\n}\n\nfunction raiseValue(\n value: unknown,\n shape: ValueShape | undefined,\n visited: WeakSet<object>,\n path: readonly string[],\n): unknown {\n if (value === null || value === undefined) return value;\n if (isExpression(value) || isExpressionNode(value)) return value;\n if (!shape) return value;\n\n if (isTerminalValueShape(shape)) {\n if (\"encoding\" in shape && shape.encoding) {\n return decodeWireValue(value, shape.encoding, path);\n }\n return value;\n }\n\n switch (shape.kind) {\n case \"deferred\":\n if (!isPlainObject(value)) return value;\n // `raiseState` selects the variant itself, against ARM keys.\n return raiseState(value, shape.value(), visited);\n case \"array\":\n if (!Array.isArray(value)) return value;\n return value.map((item, index) =>\n raiseValue(item, shape.element, visited, [...path, String(index)]),\n );\n case \"record\": {\n if (!isPlainObject(value)) return value;\n const out: Record<string, unknown> = Object.create(null);\n for (const [k, v] of Object.entries(value)) {\n defineOwn(out, k, raiseValue(v, shape.value, visited, [...path, k]));\n }\n return out;\n }\n case \"tuple\":\n if (!Array.isArray(value)) return value;\n return value.map((item, index) =>\n raiseValue(item, shape.values[index], visited, [...path, String(index)]),\n );\n default:\n return assertNeverValueShape(shape);\n }\n}\n\n/**\n * Walk `obj` along `path`, returning the leaf value and pruning it\n * from the tree. Empty intermediate objects are left in place (caller\n * decides how to treat residue).\n *\n * Returns `MISSING` when any segment is absent or not a plain object.\n */\nfunction extractPath(obj: Record<string, unknown>, path: readonly string[]): unknown {\n if (path.length === 0) return obj;\n\n let cursor: Record<string, unknown> = obj;\n for (let i = 0; i < path.length - 1; i++) {\n const seg = path[i]!;\n const next = Object.prototype.hasOwnProperty.call(cursor, seg) ? cursor[seg] : undefined;\n if (!isPlainObject(next)) return MISSING;\n cursor = next;\n }\n\n const leafKey = path[path.length - 1]!;\n if (!Object.prototype.hasOwnProperty.call(cursor, leafKey)) return MISSING;\n const value = cursor[leafKey];\n delete cursor[leafKey];\n return value;\n}\n\n/**\n * Shallow-clone recursively enough to avoid mutating caller state.\n * We only copy plain objects; arrays and other values are shared\n * (raiseValue handles arrays via `.map` so mutation is contained).\n */\nfunction structuredCloneLike(\n value: Record<string, unknown>,\n seen: WeakSet<object>,\n): Record<string, unknown> {\n if (seen.has(value)) {\n // Preserve the cycle for downstream detection in raiseState.\n return value;\n }\n seen.add(value);\n const out: Record<string, unknown> = Object.create(null);\n for (const [k, v] of Object.entries(value)) {\n defineOwn(\n out,\n k,\n isExpression(v) || isExpressionNode(v)\n ? v\n : isPlainObject(v)\n ? structuredCloneLike(v, seen)\n : v,\n );\n }\n return out;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pluralize-config.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/pluralize-config.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,MAAM,WAAW,CAAC;AAKrC,eAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pluralize-config.js","sourceRoot":"","sources":["../../../../src/serialization/json/pluralize-config.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,YAAY,MAAM,WAAW,CAAC;AAErC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,YAAY,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAEjD,eAAe,YAAY,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport pluralizeLib from \"pluralize\";\n\npluralizeLib.addUncountableRule(\"redis\");\npluralizeLib.addSingularRule(/(cache)s$/i, \"$1\");\n\nexport default pluralizeLib;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/util.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,GAAG,MAAM,CAmB/E"}
|