@azure/provisioning-core 0.1.0-alpha.20261026.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 +13 -0
- package/LICENSE +3 -3
- package/README.md +61 -90
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -0
- package/dist/{constructs → browser/constructs}/built-in-resources/resource-group.js +1 -2
- package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -0
- package/dist/browser/constructs/output.d.ts.map +1 -0
- package/dist/{constructs → browser/constructs}/output.js +1 -2
- package/dist/browser/constructs/output.js.map +1 -0
- package/dist/{constructs → browser/constructs}/parameter.d.ts.map +1 -1
- package/dist/browser/constructs/parameter.js.map +1 -0
- package/dist/browser/constructs/provisioning-component.d.ts.map +1 -0
- package/dist/browser/constructs/provisioning-component.js.map +1 -0
- package/dist/browser/constructs/resource/resource-proxy.d.ts.map +1 -0
- package/dist/{constructs → browser/constructs}/resource/resource-proxy.js +7 -13
- package/dist/browser/constructs/resource/resource-proxy.js.map +1 -0
- package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -0
- package/dist/{constructs → browser/constructs}/resource/resource-query.js +2 -4
- package/dist/browser/constructs/resource/resource-query.js.map +1 -0
- package/dist/browser/constructs/resource/resource-registry.d.ts.map +1 -0
- package/dist/{constructs → browser/constructs}/resource/resource-registry.js +1 -1
- package/dist/browser/constructs/resource/resource-registry.js.map +1 -0
- package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/{constructs → browser/constructs}/resource/resource-relationships.js +3 -6
- package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
- package/dist/browser/constructs/resource/resource-type-registry.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-type-registry.js.map +1 -0
- package/dist/browser/constructs/resource/resource-utils.d.ts.map +1 -0
- package/dist/{constructs → browser/constructs}/resource/resource-utils.js +1 -3
- package/dist/browser/constructs/resource/resource-utils.js.map +1 -0
- package/dist/browser/constructs/resource/resource.d.ts.map +1 -0
- package/dist/{constructs → browser/constructs}/resource/resource.js +8 -12
- package/dist/browser/constructs/resource/resource.js.map +1 -0
- package/dist/browser/constructs/stack.d.ts.map +1 -0
- package/dist/browser/constructs/stack.js.map +1 -0
- package/dist/browser/constructs/variable.d.ts.map +1 -0
- package/dist/browser/constructs/variable.js.map +1 -0
- package/dist/browser/deployment-context/deployment-context.d.ts.map +1 -0
- package/dist/browser/deployment-context/deployment-context.js.map +1 -0
- package/dist/browser/expression/ast-nodes.d.ts.map +1 -0
- package/dist/{expression → browser/expression}/ast-nodes.js +2 -4
- package/dist/browser/expression/ast-nodes.js.map +1 -0
- package/dist/browser/expression/expressions.d.ts.map +1 -0
- package/dist/{expression → browser/expression}/expressions.js +1 -1
- package/dist/browser/expression/expressions.js.map +1 -0
- package/dist/browser/expression/utils.d.ts.map +1 -0
- package/dist/browser/expression/utils.js.map +1 -0
- package/dist/browser/fn.d.ts.map +1 -0
- package/dist/{fn.js → browser/fn.js} +6 -25
- package/dist/browser/fn.js.map +1 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/{index.js → browser/index.js} +0 -2
- package/dist/browser/index.js.map +1 -0
- package/dist/{internal.d.ts → browser/internal.d.ts} +1 -1
- package/dist/browser/internal.d.ts.map +1 -0
- package/dist/{internal.js → browser/internal.js} +1 -1
- package/dist/browser/internal.js.map +1 -0
- package/dist/browser/naming/name-validation.d.ts.map +1 -0
- package/dist/{naming → browser/naming}/name-validation.js +1 -1
- package/dist/browser/naming/name-validation.js.map +1 -0
- package/dist/browser/naming/naming-policy.d.ts.map +1 -0
- package/dist/{naming → browser/naming}/naming-policy.js +3 -5
- package/dist/browser/naming/naming-policy.js.map +1 -0
- package/dist/browser/naming/naming-rules.d.ts.map +1 -0
- package/dist/browser/naming/naming-rules.js.map +1 -0
- package/dist/browser/package.json +8 -0
- package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/arm-object-conversion.js +9 -18
- package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
- package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/ast/declaration-builder.js +5 -12
- package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
- package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/ast/declaration-dependencies.js +1 -2
- package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
- package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/ast/expression-builder.js +2 -4
- package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
- package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/ast/expression-restorer.js +11 -4
- package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
- package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/ast/expression-rewriter.js +12 -34
- package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
- package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
- package/dist/{serialization → browser/serialization}/ast/generated/ast.d.ts.map +1 -1
- package/dist/browser/serialization/ast/generated/ast.js.map +1 -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.map +1 -0
- package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/authored-context.js +1 -2
- package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/bicep-namer.js +11 -20
- 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.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/build-bicep-files.js +7 -20
- 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.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-planning.js +2 -3
- 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.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-resource-utils.js +5 -9
- 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.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/file-dependencies.js +2 -7
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/file-paths.js +1 -3
- package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/file-preparation.js +8 -16
- package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/file-layout/reference-wiring.js +4 -7
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
- package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/index.js.map +1 -0
- package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/bicep/render.js +18 -34
- package/dist/browser/serialization/bicep/render.js.map +1 -0
- package/dist/browser/serialization/encoding.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/encoding.js +2 -6
- package/dist/browser/serialization/encoding.js.map +1 -0
- package/dist/browser/serialization/identifiers.d.ts.map +1 -0
- package/dist/browser/serialization/identifiers.js.map +1 -0
- package/dist/browser/serialization/index.d.ts.map +1 -0
- package/dist/browser/serialization/index.js.map +1 -0
- package/dist/browser/serialization/json/deserialize.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/json/deserialize.js +23 -64
- package/dist/browser/serialization/json/deserialize.js.map +1 -0
- package/dist/browser/serialization/json/serialize.d.ts.map +1 -0
- package/dist/{serialization → browser/serialization}/json/serialize.js +1 -3
- package/dist/browser/serialization/json/serialize.js.map +1 -0
- 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.map +1 -0
- package/dist/browser/serialization/symbol-map.js.map +1 -0
- package/dist/browser/shape/shape-registry.d.ts.map +1 -0
- package/dist/browser/shape/shape-registry.js.map +1 -0
- package/dist/browser/shape/shape.d.ts.map +1 -0
- package/dist/{shape → browser/shape}/shape.js +6 -7
- package/dist/browser/shape/shape.js.map +1 -0
- package/dist/browser/shape/value-encoding.d.ts.map +1 -0
- package/dist/browser/shape/value-encoding.js.map +1 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/{util.d.ts → browser/util.d.ts} +1 -1
- package/dist/browser/util.d.ts.map +1 -0
- package/dist/{util.js → browser/util.js} +1 -5
- package/dist/browser/util.js.map +1 -0
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +56 -0
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -0
- package/dist/commonjs/constructs/built-in-resources/resource-group.js +135 -0
- package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +7 -0
- package/dist/commonjs/constructs/output.d.ts +80 -0
- package/dist/commonjs/constructs/output.d.ts.map +1 -0
- package/dist/commonjs/constructs/output.js +75 -0
- package/dist/commonjs/constructs/output.js.map +7 -0
- package/dist/commonjs/constructs/parameter.d.ts +77 -0
- package/dist/commonjs/constructs/parameter.d.ts.map +1 -0
- package/dist/commonjs/constructs/parameter.js +95 -0
- package/dist/commonjs/constructs/parameter.js.map +7 -0
- package/dist/commonjs/constructs/provisioning-component.d.ts +91 -0
- package/dist/commonjs/constructs/provisioning-component.d.ts.map +1 -0
- package/dist/commonjs/constructs/provisioning-component.js +130 -0
- package/dist/commonjs/constructs/provisioning-component.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-proxy.d.ts +134 -0
- package/dist/commonjs/constructs/resource/resource-proxy.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-proxy.js +456 -0
- package/dist/commonjs/constructs/resource/resource-proxy.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-query.d.ts +25 -0
- package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-query.js +79 -0
- package/dist/commonjs/constructs/resource/resource-query.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-registry.d.ts +99 -0
- package/dist/commonjs/constructs/resource/resource-registry.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-registry.js +49 -0
- package/dist/commonjs/constructs/resource/resource-registry.js.map +7 -0
- 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-type-registry.d.ts +46 -0
- package/dist/commonjs/constructs/resource/resource-type-registry.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-type-registry.js +178 -0
- package/dist/commonjs/constructs/resource/resource-type-registry.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-utils.d.ts +60 -0
- package/dist/commonjs/constructs/resource/resource-utils.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-utils.js +51 -0
- package/dist/commonjs/constructs/resource/resource-utils.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource.d.ts +454 -0
- package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource.js +477 -0
- package/dist/commonjs/constructs/resource/resource.js.map +7 -0
- package/dist/commonjs/constructs/stack.d.ts +96 -0
- package/dist/commonjs/constructs/stack.d.ts.map +1 -0
- package/dist/commonjs/constructs/stack.js +101 -0
- package/dist/commonjs/constructs/stack.js.map +7 -0
- package/dist/commonjs/constructs/variable.d.ts +63 -0
- package/dist/commonjs/constructs/variable.d.ts.map +1 -0
- package/dist/commonjs/constructs/variable.js +85 -0
- package/dist/commonjs/constructs/variable.js.map +7 -0
- package/dist/commonjs/deployment-context/deployment-context.d.ts +27 -0
- package/dist/commonjs/deployment-context/deployment-context.d.ts.map +1 -0
- package/dist/commonjs/deployment-context/deployment-context.js +16 -0
- package/dist/commonjs/deployment-context/deployment-context.js.map +7 -0
- package/dist/commonjs/expression/ast-nodes.d.ts +100 -0
- package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -0
- package/dist/commonjs/expression/ast-nodes.js +152 -0
- package/dist/commonjs/expression/ast-nodes.js.map +7 -0
- package/dist/commonjs/expression/expressions.d.ts +157 -0
- package/dist/commonjs/expression/expressions.d.ts.map +1 -0
- package/dist/commonjs/expression/expressions.js +171 -0
- package/dist/commonjs/expression/expressions.js.map +7 -0
- 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/fn.d.ts +194 -0
- package/dist/commonjs/fn.d.ts.map +1 -0
- package/dist/commonjs/fn.js +382 -0
- package/dist/commonjs/fn.js.map +7 -0
- package/dist/commonjs/index.d.ts +25 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +93 -0
- package/dist/commonjs/index.js.map +7 -0
- package/dist/commonjs/internal.d.ts +10 -0
- package/dist/commonjs/internal.d.ts.map +1 -0
- package/dist/commonjs/internal.js +82 -0
- package/dist/commonjs/internal.js.map +7 -0
- 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 +56 -0
- package/dist/commonjs/naming/naming-policy.d.ts.map +1 -0
- package/dist/commonjs/naming/naming-policy.js +209 -0
- package/dist/commonjs/naming/naming-policy.js.map +7 -0
- package/dist/commonjs/naming/naming-rules.d.ts +16 -0
- package/dist/commonjs/naming/naming-rules.d.ts.map +1 -0
- package/dist/commonjs/naming/naming-rules.js +32 -0
- package/dist/commonjs/naming/naming-rules.js.map +7 -0
- package/dist/commonjs/package.json +8 -0
- package/dist/commonjs/serialization/arm-object-conversion.d.ts +41 -0
- package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/commonjs/serialization/arm-object-conversion.js +272 -0
- 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 +508 -0
- package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/generated/ast.js +40 -0
- package/dist/commonjs/serialization/ast/generated/ast.js.map +7 -0
- 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/ast/index.js +22 -0
- 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/encoding.d.ts +4 -0
- package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
- package/dist/commonjs/serialization/encoding.js +296 -0
- package/dist/commonjs/serialization/encoding.js.map +7 -0
- package/dist/commonjs/serialization/identifiers.d.ts +2 -0
- package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
- package/dist/commonjs/serialization/identifiers.js +37 -0
- package/dist/commonjs/serialization/identifiers.js.map +7 -0
- package/dist/commonjs/serialization/index.d.ts +4 -0
- package/dist/commonjs/serialization/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/index.js +31 -0
- package/dist/commonjs/serialization/index.js.map +7 -0
- package/dist/commonjs/serialization/json/deserialize.d.ts +24 -0
- package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/deserialize.js +456 -0
- package/dist/commonjs/serialization/json/deserialize.js.map +7 -0
- package/dist/commonjs/serialization/json/serialize.d.ts +12 -0
- package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/serialize.js +50 -0
- package/dist/commonjs/serialization/json/serialize.js.map +7 -0
- package/dist/commonjs/serialization/pluralize-config.d.ts +3 -0
- package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/commonjs/serialization/pluralize-config.js +37 -0
- package/dist/commonjs/serialization/pluralize-config.js.map +7 -0
- 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-registry.d.ts +51 -0
- package/dist/commonjs/shape/shape-registry.d.ts.map +1 -0
- package/dist/commonjs/shape/shape-registry.js +40 -0
- package/dist/commonjs/shape/shape-registry.js.map +7 -0
- package/dist/commonjs/shape/shape.d.ts +407 -0
- package/dist/commonjs/shape/shape.d.ts.map +1 -0
- package/dist/commonjs/shape/shape.js +290 -0
- package/dist/commonjs/shape/shape.js.map +7 -0
- package/dist/commonjs/shape/value-encoding.d.ts +121 -0
- package/dist/commonjs/shape/value-encoding.d.ts.map +1 -0
- package/dist/commonjs/shape/value-encoding.js +62 -0
- package/dist/commonjs/shape/value-encoding.js.map +7 -0
- package/dist/commonjs/tsdoc-metadata.json +11 -0
- package/dist/commonjs/types.d.ts +9 -0
- package/dist/commonjs/types.d.ts.map +1 -0
- package/dist/commonjs/types.js +16 -0
- package/dist/commonjs/types.js.map +7 -0
- package/dist/commonjs/util.d.ts +33 -0
- package/dist/commonjs/util.d.ts.map +1 -0
- package/dist/commonjs/util.js +73 -0
- package/dist/commonjs/util.js.map +7 -0
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts +56 -0
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -0
- package/dist/esm/constructs/built-in-resources/resource-group.js +120 -0
- package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -0
- package/dist/esm/constructs/output.d.ts +80 -0
- package/dist/esm/constructs/output.d.ts.map +1 -0
- package/dist/esm/constructs/output.js +75 -0
- package/dist/esm/constructs/output.js.map +1 -0
- package/dist/esm/constructs/parameter.d.ts +77 -0
- package/dist/esm/constructs/parameter.d.ts.map +1 -0
- package/dist/esm/constructs/parameter.js +93 -0
- package/dist/esm/constructs/parameter.js.map +1 -0
- package/dist/esm/constructs/provisioning-component.d.ts +91 -0
- package/dist/esm/constructs/provisioning-component.d.ts.map +1 -0
- package/dist/esm/constructs/provisioning-component.js +150 -0
- package/dist/esm/constructs/provisioning-component.js.map +1 -0
- package/dist/esm/constructs/resource/resource-proxy.d.ts +134 -0
- package/dist/esm/constructs/resource/resource-proxy.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-proxy.js +517 -0
- package/dist/esm/constructs/resource/resource-proxy.js.map +1 -0
- package/dist/esm/constructs/resource/resource-query.d.ts +25 -0
- package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-query.js +79 -0
- package/dist/esm/constructs/resource/resource-query.js.map +1 -0
- package/dist/esm/constructs/resource/resource-registry.d.ts +99 -0
- package/dist/esm/constructs/resource/resource-registry.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-registry.js +51 -0
- package/dist/esm/constructs/resource/resource-registry.js.map +1 -0
- 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-type-registry.d.ts +46 -0
- package/dist/esm/constructs/resource/resource-type-registry.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-type-registry.js +156 -0
- package/dist/esm/constructs/resource/resource-type-registry.js.map +1 -0
- package/dist/esm/constructs/resource/resource-utils.d.ts +60 -0
- package/dist/esm/constructs/resource/resource-utils.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-utils.js +75 -0
- package/dist/esm/constructs/resource/resource-utils.js.map +1 -0
- package/dist/esm/constructs/resource/resource.d.ts +454 -0
- package/dist/esm/constructs/resource/resource.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource.js +624 -0
- package/dist/esm/constructs/resource/resource.js.map +1 -0
- package/dist/esm/constructs/stack.d.ts +96 -0
- package/dist/esm/constructs/stack.d.ts.map +1 -0
- package/dist/esm/constructs/stack.js +96 -0
- package/dist/esm/constructs/stack.js.map +1 -0
- package/dist/esm/constructs/variable.d.ts +63 -0
- package/dist/esm/constructs/variable.d.ts.map +1 -0
- package/dist/esm/constructs/variable.js +74 -0
- package/dist/esm/constructs/variable.js.map +1 -0
- package/dist/esm/deployment-context/deployment-context.d.ts +27 -0
- package/dist/esm/deployment-context/deployment-context.d.ts.map +1 -0
- package/dist/esm/deployment-context/deployment-context.js +4 -0
- package/dist/esm/deployment-context/deployment-context.js.map +1 -0
- package/dist/esm/expression/ast-nodes.d.ts +100 -0
- package/dist/esm/expression/ast-nodes.d.ts.map +1 -0
- package/dist/esm/expression/ast-nodes.js +125 -0
- package/dist/esm/expression/ast-nodes.js.map +1 -0
- package/dist/esm/expression/expressions.d.ts +157 -0
- package/dist/esm/expression/expressions.d.ts.map +1 -0
- package/dist/esm/expression/expressions.js +204 -0
- package/dist/esm/expression/expressions.js.map +1 -0
- 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/fn.d.ts +194 -0
- package/dist/esm/fn.d.ts.map +1 -0
- package/dist/esm/fn.js +334 -0
- package/dist/esm/fn.js.map +1 -0
- package/dist/esm/index.d.ts +25 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +17 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal.d.ts +10 -0
- package/dist/esm/internal.d.ts.map +1 -0
- package/dist/esm/internal.js +8 -0
- package/dist/esm/internal.js.map +1 -0
- 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 +56 -0
- package/dist/esm/naming/naming-policy.d.ts.map +1 -0
- package/dist/esm/naming/naming-policy.js +230 -0
- package/dist/esm/naming/naming-policy.js.map +1 -0
- package/dist/esm/naming/naming-rules.d.ts +16 -0
- package/dist/esm/naming/naming-rules.d.ts.map +1 -0
- package/dist/esm/naming/naming-rules.js +8 -0
- package/dist/esm/naming/naming-rules.js.map +1 -0
- package/dist/esm/package.json +8 -0
- package/dist/esm/serialization/arm-object-conversion.d.ts +41 -0
- package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/esm/serialization/arm-object-conversion.js +334 -0
- 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 +508 -0
- package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/esm/serialization/ast/generated/ast.js +23 -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 +4 -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/encoding.d.ts +4 -0
- package/dist/esm/serialization/encoding.d.ts.map +1 -0
- package/dist/esm/serialization/encoding.js +309 -0
- package/dist/esm/serialization/encoding.js.map +1 -0
- package/dist/esm/serialization/identifiers.d.ts +2 -0
- package/dist/esm/serialization/identifiers.d.ts.map +1 -0
- package/dist/esm/serialization/identifiers.js +19 -0
- package/dist/esm/serialization/identifiers.js.map +1 -0
- package/dist/esm/serialization/index.d.ts +4 -0
- package/dist/esm/serialization/index.d.ts.map +1 -0
- package/dist/esm/serialization/index.js +5 -0
- package/dist/esm/serialization/index.js.map +1 -0
- package/dist/esm/serialization/json/deserialize.d.ts +24 -0
- package/dist/esm/serialization/json/deserialize.d.ts.map +1 -0
- package/dist/esm/serialization/json/deserialize.js +529 -0
- package/dist/esm/serialization/json/deserialize.js.map +1 -0
- package/dist/esm/serialization/json/serialize.d.ts +12 -0
- package/dist/esm/serialization/json/serialize.d.ts.map +1 -0
- package/dist/esm/serialization/json/serialize.js +34 -0
- package/dist/esm/serialization/json/serialize.js.map +1 -0
- package/dist/esm/serialization/pluralize-config.d.ts +3 -0
- package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/esm/serialization/pluralize-config.js +7 -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-registry.d.ts +51 -0
- package/dist/esm/shape/shape-registry.d.ts.map +1 -0
- package/dist/esm/shape/shape-registry.js +41 -0
- package/dist/esm/shape/shape-registry.js.map +1 -0
- package/dist/esm/shape/shape.d.ts +407 -0
- package/dist/esm/shape/shape.d.ts.map +1 -0
- package/dist/esm/shape/shape.js +424 -0
- package/dist/esm/shape/shape.js.map +1 -0
- package/dist/esm/shape/value-encoding.d.ts +121 -0
- package/dist/esm/shape/value-encoding.d.ts.map +1 -0
- package/dist/esm/shape/value-encoding.js +32 -0
- package/dist/esm/shape/value-encoding.js.map +1 -0
- package/dist/esm/types.d.ts +9 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +4 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/util.d.ts +33 -0
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +74 -0
- package/dist/esm/util.js.map +1 -0
- package/package.json +92 -27
- package/dist/constructs/built-in-resources/resource-group.d.ts.map +0 -1
- package/dist/constructs/built-in-resources/resource-group.js.map +0 -1
- package/dist/constructs/output.d.ts.map +0 -1
- package/dist/constructs/output.js.map +0 -1
- package/dist/constructs/parameter.js.map +0 -1
- package/dist/constructs/provisioning-component.d.ts.map +0 -1
- package/dist/constructs/provisioning-component.js.map +0 -1
- package/dist/constructs/resource/resource-proxy.d.ts.map +0 -1
- package/dist/constructs/resource/resource-proxy.js.map +0 -1
- package/dist/constructs/resource/resource-query.d.ts.map +0 -1
- package/dist/constructs/resource/resource-query.js.map +0 -1
- package/dist/constructs/resource/resource-registry.d.ts.map +0 -1
- package/dist/constructs/resource/resource-registry.js.map +0 -1
- package/dist/constructs/resource/resource-relationships.d.ts.map +0 -1
- package/dist/constructs/resource/resource-relationships.js.map +0 -1
- package/dist/constructs/resource/resource-type-registry.d.ts.map +0 -1
- package/dist/constructs/resource/resource-type-registry.js.map +0 -1
- package/dist/constructs/resource/resource-utils.d.ts.map +0 -1
- package/dist/constructs/resource/resource-utils.js.map +0 -1
- package/dist/constructs/resource/resource.d.ts.map +0 -1
- package/dist/constructs/resource/resource.js.map +0 -1
- package/dist/constructs/stack.d.ts.map +0 -1
- package/dist/constructs/stack.js.map +0 -1
- package/dist/constructs/variable.d.ts.map +0 -1
- package/dist/constructs/variable.js.map +0 -1
- package/dist/deployment-context/deployment-context.d.ts.map +0 -1
- package/dist/deployment-context/deployment-context.js.map +0 -1
- package/dist/expression/ast-nodes.d.ts.map +0 -1
- package/dist/expression/ast-nodes.js.map +0 -1
- package/dist/expression/expressions.d.ts.map +0 -1
- package/dist/expression/expressions.js.map +0 -1
- package/dist/expression/utils.d.ts.map +0 -1
- package/dist/expression/utils.js.map +0 -1
- package/dist/fn.d.ts.map +0 -1
- package/dist/fn.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal-loop.d.ts +0 -14
- package/dist/internal-loop.d.ts.map +0 -1
- package/dist/internal-loop.js +0 -16
- package/dist/internal-loop.js.map +0 -1
- package/dist/internal.d.ts.map +0 -1
- package/dist/internal.js.map +0 -1
- package/dist/naming/name-validation.d.ts.map +0 -1
- package/dist/naming/name-validation.js.map +0 -1
- package/dist/naming/naming-policy.d.ts.map +0 -1
- package/dist/naming/naming-policy.js.map +0 -1
- package/dist/naming/naming-rules.d.ts.map +0 -1
- package/dist/naming/naming-rules.js.map +0 -1
- package/dist/serialization/arm-object-conversion.d.ts.map +0 -1
- package/dist/serialization/arm-object-conversion.js.map +0 -1
- package/dist/serialization/ast/declaration-builder.d.ts.map +0 -1
- package/dist/serialization/ast/declaration-builder.js.map +0 -1
- package/dist/serialization/ast/declaration-dependencies.d.ts.map +0 -1
- package/dist/serialization/ast/declaration-dependencies.js.map +0 -1
- package/dist/serialization/ast/expression-builder.d.ts.map +0 -1
- package/dist/serialization/ast/expression-builder.js.map +0 -1
- package/dist/serialization/ast/expression-restorer.d.ts.map +0 -1
- package/dist/serialization/ast/expression-restorer.js.map +0 -1
- package/dist/serialization/ast/expression-rewriter.d.ts.map +0 -1
- package/dist/serialization/ast/expression-rewriter.js.map +0 -1
- package/dist/serialization/ast/expression-walker.d.ts.map +0 -1
- package/dist/serialization/ast/expression-walker.js.map +0 -1
- package/dist/serialization/ast/generated/ast.js.map +0 -1
- package/dist/serialization/ast/index.d.ts.map +0 -1
- package/dist/serialization/ast/index.js.map +0 -1
- package/dist/serialization/ast/resource-utils.d.ts.map +0 -1
- package/dist/serialization/ast/resource-utils.js.map +0 -1
- package/dist/serialization/bicep/file-layout/authored-context.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/authored-context.js.map +0 -1
- package/dist/serialization/bicep/file-layout/bicep-namer.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/bicep-namer.js.map +0 -1
- package/dist/serialization/bicep/file-layout/build-bicep-files.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/build-bicep-files.js.map +0 -1
- package/dist/serialization/bicep/file-layout/deployment-planning.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/deployment-planning.js.map +0 -1
- package/dist/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/deployment-resource-utils.js.map +0 -1
- package/dist/serialization/bicep/file-layout/file-dependencies.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/file-dependencies.js.map +0 -1
- package/dist/serialization/bicep/file-layout/file-paths.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/file-paths.js.map +0 -1
- package/dist/serialization/bicep/file-layout/file-preparation.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/file-preparation.js.map +0 -1
- package/dist/serialization/bicep/file-layout/reference-wiring.d.ts.map +0 -1
- package/dist/serialization/bicep/file-layout/reference-wiring.js.map +0 -1
- package/dist/serialization/bicep/index.d.ts.map +0 -1
- package/dist/serialization/bicep/index.js.map +0 -1
- package/dist/serialization/bicep/render.d.ts.map +0 -1
- package/dist/serialization/bicep/render.js.map +0 -1
- package/dist/serialization/encoding.d.ts.map +0 -1
- package/dist/serialization/encoding.js.map +0 -1
- package/dist/serialization/identifiers.d.ts.map +0 -1
- package/dist/serialization/identifiers.js.map +0 -1
- package/dist/serialization/index.d.ts.map +0 -1
- package/dist/serialization/index.js.map +0 -1
- package/dist/serialization/json/deserialize.d.ts.map +0 -1
- package/dist/serialization/json/deserialize.js.map +0 -1
- package/dist/serialization/json/serialize.d.ts.map +0 -1
- package/dist/serialization/json/serialize.js.map +0 -1
- package/dist/serialization/pluralize-config.d.ts.map +0 -1
- package/dist/serialization/pluralize-config.js.map +0 -1
- package/dist/serialization/symbol-map.d.ts.map +0 -1
- package/dist/serialization/symbol-map.js.map +0 -1
- package/dist/shape/shape-registry.d.ts.map +0 -1
- package/dist/shape/shape-registry.js.map +0 -1
- package/dist/shape/shape.d.ts.map +0 -1
- package/dist/shape/shape.js.map +0 -1
- package/dist/shape/value-encoding.d.ts.map +0 -1
- package/dist/shape/value-encoding.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js.map +0 -1
- /package/dist/{constructs → browser/constructs}/built-in-resources/resource-group.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/output.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/parameter.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/parameter.js +0 -0
- /package/dist/{constructs → browser/constructs}/provisioning-component.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/provisioning-component.js +0 -0
- /package/dist/{constructs → browser/constructs}/resource/resource-proxy.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/resource/resource-query.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/resource/resource-registry.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/resource/resource-relationships.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/resource/resource-type-registry.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/resource/resource-type-registry.js +0 -0
- /package/dist/{constructs → browser/constructs}/resource/resource-utils.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/resource/resource.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/stack.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/stack.js +0 -0
- /package/dist/{constructs → browser/constructs}/variable.d.ts +0 -0
- /package/dist/{constructs → browser/constructs}/variable.js +0 -0
- /package/dist/{deployment-context → browser/deployment-context}/deployment-context.d.ts +0 -0
- /package/dist/{deployment-context → browser/deployment-context}/deployment-context.js +0 -0
- /package/dist/{expression → browser/expression}/ast-nodes.d.ts +0 -0
- /package/dist/{expression → browser/expression}/expressions.d.ts +0 -0
- /package/dist/{expression → browser/expression}/utils.d.ts +0 -0
- /package/dist/{expression → browser/expression}/utils.js +0 -0
- /package/dist/{fn.d.ts → browser/fn.d.ts} +0 -0
- /package/dist/{index.d.ts → browser/index.d.ts} +0 -0
- /package/dist/{naming → browser/naming}/name-validation.d.ts +0 -0
- /package/dist/{naming → browser/naming}/naming-policy.d.ts +0 -0
- /package/dist/{naming → browser/naming}/naming-rules.d.ts +0 -0
- /package/dist/{naming → browser/naming}/naming-rules.js +0 -0
- /package/dist/{serialization → browser/serialization}/arm-object-conversion.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/declaration-builder.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/declaration-dependencies.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/expression-builder.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/expression-restorer.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/expression-rewriter.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/expression-walker.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/expression-walker.js +0 -0
- /package/dist/{serialization → browser/serialization}/ast/generated/ast.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/generated/ast.js +0 -0
- /package/dist/{serialization → browser/serialization}/ast/index.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/index.js +0 -0
- /package/dist/{serialization → browser/serialization}/ast/resource-utils.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/ast/resource-utils.js +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/authored-context.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/bicep-namer.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/build-bicep-files.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-planning.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-resource-utils.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-dependencies.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-paths.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-preparation.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/file-layout/reference-wiring.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/index.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/index.js +0 -0
- /package/dist/{serialization → browser/serialization}/bicep/render.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/encoding.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/identifiers.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/identifiers.js +0 -0
- /package/dist/{serialization → browser/serialization}/index.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/index.js +0 -0
- /package/dist/{serialization → browser/serialization}/json/deserialize.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/json/serialize.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/pluralize-config.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/pluralize-config.js +0 -0
- /package/dist/{serialization → browser/serialization}/symbol-map.d.ts +0 -0
- /package/dist/{serialization → browser/serialization}/symbol-map.js +0 -0
- /package/dist/{shape → browser/shape}/shape-registry.d.ts +0 -0
- /package/dist/{shape → browser/shape}/shape-registry.js +0 -0
- /package/dist/{shape → browser/shape}/shape.d.ts +0 -0
- /package/dist/{shape → browser/shape}/value-encoding.d.ts +0 -0
- /package/dist/{shape → browser/shape}/value-encoding.js +0 -0
- /package/dist/{types.d.ts → browser/types.d.ts} +0 -0
- /package/dist/{types.js → browser/types.js} +0 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Release History
|
|
2
|
+
|
|
3
|
+
## 1.0.0-beta.2 (2026-10-26)
|
|
4
|
+
|
|
5
|
+
### Other Changes
|
|
6
|
+
|
|
7
|
+
- Updated provisioning core with improvements to resource naming, serialization, and Bicep generation. [#40338](https://github.com/Azure/azure-sdk-for-js/pull/40338)
|
|
8
|
+
|
|
9
|
+
## 1.0.0-beta.1 (2026-09-28)
|
|
10
|
+
|
|
11
|
+
### Features Added
|
|
12
|
+
|
|
13
|
+
- Initial preview of the Azure Provisioning core authoring primitives. [#39825](https://github.com/Azure/azure-sdk-for-js/pull/39825)
|
package/LICENSE
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
1
|
Copyright (c) Microsoft Corporation.
|
|
4
2
|
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
7
7
|
in the Software without restriction, including without limitation the rights
|
|
@@ -12,7 +12,7 @@ furnished to do so, subject to the following conditions:
|
|
|
12
12
|
The above copyright notice and this permission notice shall be included in all
|
|
13
13
|
copies or substantial portions of the Software.
|
|
14
14
|
|
|
15
|
-
THE SOFTWARE IS PROVIDED
|
|
15
|
+
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
16
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
17
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
package/README.md
CHANGED
|
@@ -1,108 +1,79 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Azure Provisioning core library for JavaScript
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`@azure/provisioning-core` provides the shared authoring model for Azure provisioning resource libraries.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Getting started
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Create a deployment stack, then attach resources to the stack or to another provisioning component:
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
```ts snippet:ReadmeCreateStack
|
|
10
|
+
import { Stack, ResourceGroup, fn } from "@azure/provisioning-core";
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- [Deployment context](src/deployment-context/deployment-context.ts) - carries inherited location, tags, and naming policy through the component tree. The nearest ancestor supplies location and policy; ancestor tags are merged with nearer values taking precedence.
|
|
18
|
-
- [Naming](src/naming/naming-policy.ts) - generates omitted resource names through a configurable policy, using [resource naming rules](src/naming/naming-rules.ts) that describe Azure length, character, and uniqueness requirements. These rules guide name generation; explicit names are used unchanged.
|
|
19
|
-
- [Parameters](src/constructs/parameter.ts) - inputs supplied at deployment, with optional defaults and constraints.
|
|
20
|
-
- [Variables](src/constructs/variable.ts) - named values or expressions shared within the definition.
|
|
21
|
-
- [Outputs](src/constructs/output.ts) - values returned by the deployment, such as a resource ID.
|
|
22
|
-
- [Resource queries](src/constructs/resource/resource-query.ts) - find authored objects by type or literal name so they can be inspected and edited without querying Azure.
|
|
23
|
-
|
|
24
|
-
**Read more**
|
|
25
|
-
|
|
26
|
-
- [Getting started](../../docs/getting-started.md#define-a-stack-and-resources) - construct and configure resources through the public APIs.
|
|
27
|
-
- [Configure resource properties](../../docs/getting-started.md#configure-resource-properties) - edit writable properties or replace nested objects before serialization.
|
|
28
|
-
- [Infrastructure authoring model](../../docs/authoring-model.md) - resource relationships and reusable components.
|
|
29
|
-
- [Names and shared defaults](../../docs/authoring-model.md#names-and-shared-defaults) - naming policies, inherited settings, and resource-level overrides.
|
|
30
|
-
- [Parameters, variables, and outputs](../../docs/getting-started.md#parameters-variables-and-outputs) - declare deployment values through stack collections.
|
|
31
|
-
|
|
32
|
-
### Functions and expressions
|
|
33
|
-
|
|
34
|
-
Connect resource settings to parameters, calculations, and other resources even when their values are not yet known. Core preserves these relationships as deployment-time expressions rather than evaluating them in JavaScript.
|
|
12
|
+
const stack = new Stack("application");
|
|
13
|
+
new ResourceGroup(stack, {
|
|
14
|
+
name: fn.concat("rg-", fn.uniqueString("application")),
|
|
15
|
+
location: "eastus",
|
|
16
|
+
});
|
|
17
|
+
```
|
|
35
18
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
19
|
+
Use the core `Resource` API to attach a Key Vault resource directly to a resource group:
|
|
20
|
+
|
|
21
|
+
```ts snippet:ReadmeCreateKeyVault
|
|
22
|
+
import { Stack, ResourceGroup, Resource, fn } from "@azure/provisioning-core";
|
|
23
|
+
|
|
24
|
+
const stack = new Stack("keyvault-deployment");
|
|
25
|
+
const resourceGroup = new ResourceGroup(stack, {
|
|
26
|
+
name: "rg-keyvault",
|
|
27
|
+
location: "eastus",
|
|
28
|
+
});
|
|
29
|
+
new Resource(resourceGroup, {
|
|
30
|
+
type: "Microsoft.KeyVault/vaults",
|
|
31
|
+
apiVersion: "2024-11-01",
|
|
32
|
+
name: fn.concat("kv-", fn.uniqueString(resourceGroup.id)),
|
|
33
|
+
location: resourceGroup.location,
|
|
34
|
+
properties: {
|
|
35
|
+
tenantId: "00000000-0000-0000-0000-000000000000",
|
|
36
|
+
sku: { family: "A", name: "standard" },
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
```
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
For service-specific typed resource classes, see the [Key Vault provisioning example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/provisioning-keyvault/README.md#getting-started).
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
- [Provisioning type system](../../contributing/internals/provisioning-type-system.md) - input/view types and expression assignability.
|
|
44
|
-
- [Proxy system](../../contributing/internals/proxy-system.md) - how core supports expressions on resource properties through ordinary TypeScript property access.
|
|
43
|
+
Provisioning definitions are authored before deployment. Read-only resource properties remain available as expressions for wiring outputs and dependent resources, while only writable properties can be assigned.
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
## Deploy-time discriminators
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
In this example, `kindParam` is an `Expression<"cache">`, and
|
|
50
|
-
`widget.properties.primaryRule` accepts either a cache rule with `cacheKind` and `days`
|
|
51
|
-
or a redirect rule. The helper selects the cache variant while preserving its property checks.
|
|
47
|
+
Discriminator properties use literal types so TypeScript can select the correct union member. When a discriminator comes from a deployment-time expression, use `asDiscriminator` to select the intended variant while retaining type checking for its other properties:
|
|
52
48
|
|
|
53
49
|
```ts snippet:AsDiscriminator
|
|
54
|
-
import { asDiscriminator } from "@azure/provisioning-core";
|
|
55
|
-
|
|
50
|
+
import { ParameterCollection, asDiscriminator } from "@azure/provisioning-core";
|
|
51
|
+
|
|
52
|
+
type Rule =
|
|
53
|
+
| {
|
|
54
|
+
kind: "cache";
|
|
55
|
+
cacheKind: "long" | "short";
|
|
56
|
+
days: number;
|
|
57
|
+
}
|
|
58
|
+
| {
|
|
59
|
+
kind: "redirect";
|
|
60
|
+
url: string;
|
|
61
|
+
};
|
|
62
|
+
const ruleKind = new ParameterCollection().add("ruleKind", "string", {
|
|
63
|
+
allowed: ["cache"],
|
|
64
|
+
});
|
|
65
|
+
const widget: {
|
|
66
|
+
properties: {
|
|
67
|
+
primaryRule?: Rule;
|
|
68
|
+
};
|
|
69
|
+
} = {
|
|
70
|
+
properties: {},
|
|
71
|
+
};
|
|
56
72
|
widget.properties.primaryRule = {
|
|
57
|
-
kind: asDiscriminator(
|
|
73
|
+
kind: asDiscriminator(ruleKind),
|
|
58
74
|
cacheKind: "long",
|
|
59
75
|
days: 7,
|
|
60
76
|
};
|
|
61
77
|
```
|
|
62
78
|
|
|
63
|
-
Prefer
|
|
64
|
-
|
|
65
|
-
### Serialization and restoration
|
|
66
|
-
|
|
67
|
-
[serialize](src/serialization/json/serialize.ts) converts the tree, values, and references into a JSON-compatible document. [deserialize](src/serialization/json/deserialize.ts) reconstructs supported resource objects so they can be queried, edited, and serialized again. Three pieces support this round trip:
|
|
68
|
-
|
|
69
|
-
- [Serialization AST](src/serialization/ast/index.ts) - defines the cross-language JSON format for exchanging provisioning definitions between TypeScript and .NET, so both sides interpret resource declarations, values, and references consistently.
|
|
70
|
-
- [Runtime shapes](src/shape/shape.ts) - retain client-to-ARM property mappings, nested types, and encoding metadata after TypeScript erasure, guiding value conversion in both directions.
|
|
71
|
-
- [Resource registration](src/constructs/resource/resource-type-registry.ts) - resolves registered classes and shapes by resource type, API version, and variant. Load the relevant service packages before restoration so their registrations are available.
|
|
72
|
-
|
|
73
|
-
Imported scopes resolve to known parent relationships where possible. Otherwise,
|
|
74
|
-
their expressions are preserved for round-tripping and explicit Bicep rendering without
|
|
75
|
-
inferring a deployment destination. This does not add explicit scope authoring
|
|
76
|
-
for new resources.
|
|
77
|
-
|
|
78
|
-
**Read more**
|
|
79
|
-
|
|
80
|
-
- [Changing the serialization contract](../../contributing/workflows/change-schema-files.md) - contract source, generation, and affected consumers.
|
|
81
|
-
- [Runtime shapes and registration](../../contributing/internals/service-packages.md#runtime-shapes-and-registration) - property mappings and concrete resource classes.
|
|
82
|
-
- [Serialization and restoration](../../contributing/internals/serialization-roundtrip.md) - the round-trip workflow and its limitations.
|
|
83
|
-
|
|
84
|
-
### Bicep generation
|
|
85
|
-
|
|
86
|
-
The internal [renderBicepFiles](src/serialization/bicep/render.ts) API generates
|
|
87
|
-
Bicep files from authored Stacks.
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
import { renderBicepFiles } from "@azure/provisioning-core/internal";
|
|
91
|
-
|
|
92
|
-
for (const file of renderBicepFiles(stack)) {
|
|
93
|
-
console.log(file.path);
|
|
94
|
-
console.log(file.contents);
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
The renderer accepts one Stack or an array of Stacks and returns paths and source
|
|
99
|
-
text without writing files or deploying resources. Restore saved JSON with
|
|
100
|
-
`deserialize()` before rendering it.
|
|
101
|
-
|
|
102
|
-
See [Bicep generation](../../contributing/internals/bicep-generation.md) for file
|
|
103
|
-
layout and cross-file references, and
|
|
104
|
-
[Bicep scopes](../../contributing/bicep/bicep-scope.md) for deployment scope rules.
|
|
105
|
-
|
|
106
|
-
## Related packages
|
|
107
|
-
|
|
108
|
-
For how service classes, their types, and runtime metadata are produced, see [Service package anatomy](../../contributing/internals/service-packages.md) and the [TypeSpec emitter overview](../../contributing/internals/emitter-overview.md).
|
|
79
|
+
Prefer literal discriminators whenever possible. `asDiscriminator` does not validate the deployment-time value; constrain the parameter to the intended literal using `allowed`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-group.d.ts","sourceRoot":"","sources":["../../../../src/constructs/built-in-resources/resource-group.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EACf,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAcnD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,SAAQ,QAAQ,CAAC,oCAAoC,CAAC;IAC/E,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAG,oCAAoC,CAAU;IAC7E,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAE1C,SAAS,CAAC,MAAM,CAAC,WAAW,sBAA4B;qBAiB9B,QAAQ,CAChC,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtD,QAAQ,CAAC,EAAE,eAAe,EAC1B,YAAY,CAAC,EAAE,mBAAmB,GACjC,IAAI;gBAyBL,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EACH,CAAC,kBAAkB,GAAG;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,GAAG,CAAC,qBAAqB,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAmB9F,sDAAsD;IACtD,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,CAEjC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAE5C;IAED,IAAI,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,CAElC;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,EAEzD;IAED,IAAI,IAAI,IAAI,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAIrF;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EAMzF;IAED,GAAG,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,qBAAqB,EACzF,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAC5E,YAAY,CAAC,CAAC,CAAC;CAGnB"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
import * as fn from "../../fn.js";
|
|
4
|
-
import {} from "../../expression/expressions.js";
|
|
5
4
|
import { deref } from "../resource/resource-proxy.js";
|
|
6
5
|
import { Resource } from "../resource/resource.js";
|
|
7
6
|
import { isResourceDeclaration } from "../resource/resource-utils.js";
|
|
8
7
|
import { Stack } from "../stack.js";
|
|
9
|
-
import { createFlatModelShape, createRecordShape, createStringShape
|
|
8
|
+
import { createFlatModelShape, createRecordShape, createStringShape } from "../../shape/shape.js";
|
|
10
9
|
const resourceGroupNamingRules = {
|
|
11
10
|
abbreviation: "rg",
|
|
12
11
|
minLength: 1,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-group.js","sourceRoot":"","sources":["../../../../src/constructs/built-in-resources/resource-group.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ProvisioningComponent } from \"../provisioning-component.js\";\nimport * as fn from \"../../fn.js\";\nimport {\n type Expression,\n type ExpressionOrValue,\n type InputRecord,\n} from \"../../expression/expressions.js\";\nimport type { ResourceNamingRules } from \"../../naming/naming-rules.js\";\nimport { deref } from \"../resource/resource-proxy.js\";\nimport type {\n ExistingResourceProps,\n ResourceOptions,\n ResourceProps,\n} from \"../resource/resource.js\";\nimport { Resource } from \"../resource/resource.js\";\nimport { isResourceDeclaration } from \"../resource/resource-utils.js\";\nimport { Stack } from \"../stack.js\";\nimport { createFlatModelShape, createRecordShape, createStringShape } from \"../../shape/shape.js\";\n\nconst resourceGroupNamingRules: ResourceNamingRules = {\n abbreviation: \"rg\",\n minLength: 1,\n maxLength: 90,\n // ARM CommonTypes.ResourceGroupNameParameter.\n pattern: { regex: \"^[-\\\\w\\\\._\\\\(\\\\)]+$\" },\n scope: \"subscription\",\n};\n\nexport interface ResourceGroupProps {\n name?: ExpressionOrValue<string> | undefined;\n location: ExpressionOrValue<string>;\n tags?: Record<string, ExpressionOrValue<string>>;\n managedBy?: ExpressionOrValue<string>;\n}\n\n/**\n * An Azure resource group that establishes a deployment boundary.\n *\n * @remarks\n * Resources created with a `ResourceGroup` as their parent inherit its\n * location, tags, and naming policy, and deploy at resource-group scope\n * in the generated Bicep.\n *\n * The parent may be a Stack or an ordinary component, with no resource\n * declarations in its ancestry. New groups require a subscription-scoped Stack.\n * Existing groups may be referenced from other Stack scopes with an appropriate\n * lookup scope.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack, ResourceGroup } from \"@azure/provisioning-core\";\n * import { KeyVault } from \"@azure/provisioning-keyvault\";\n *\n * const stack = new Stack(\"my-app\");\n * const rg = new ResourceGroup(stack, { location: \"eastus\" });\n * const vault = new KeyVault(rg, {\n * properties: { tenantId: \"...\", sku: { family: \"A\", name: \"standard\" } },\n * });\n * ```\n */\nexport class ResourceGroup extends Resource<\"Microsoft.Resources/resourceGroups\"> {\n static readonly resourceType = \"Microsoft.Resources/resourceGroups\" as const;\n static readonly apiVersion = \"2024-03-01\";\n\n protected static namingRules = resourceGroupNamingRules;\n\n static {\n this.registerShape(\n createFlatModelShape({\n name: { armPath: [\"name\"], value: createStringShape() },\n location: { armPath: [\"location\"], value: createStringShape() },\n tags: {\n armPath: [\"tags\"],\n value: createRecordShape(createStringShape()),\n },\n managedBy: { armPath: [\"managedBy\"], value: createStringShape() },\n }),\n );\n this.register();\n }\n\n protected static override validate(\n context: ProvisioningComponent,\n props: ResourceProps<string> & Record<string, unknown>,\n _options?: ResourceOptions,\n _namingRules?: ResourceNamingRules,\n ): void {\n let ancestor: ProvisioningComponent | undefined = context;\n while (ancestor !== undefined && !(ancestor instanceof Stack)) {\n if (isResourceDeclaration(ancestor)) {\n throw new Error(\n \"ResourceGroup cannot be nested beneath a resource declaration, directly or through components.\",\n );\n }\n ancestor = ancestor.parent;\n }\n if (props.existing !== true) {\n if (!(ancestor instanceof Stack)) {\n throw new Error(\n 'A new ResourceGroup requires a containing Stack with targetScope \"subscription\".',\n );\n }\n if (ancestor.targetScope !== \"subscription\") {\n throw new Error(\n `A new ResourceGroup requires Stack targetScope \"subscription\", but Stack \"${ancestor.name}\" targets \"${ancestor.targetScope}\".`,\n );\n }\n }\n }\n\n constructor(\n context: ProvisioningComponent,\n props:\n (ResourceGroupProps & { existing?: false }) | (ExistingResourceProps & { existing: true }),\n ) {\n super(context, {\n ...props,\n type: ResourceGroup.resourceType,\n apiVersion: ResourceGroup.apiVersion,\n });\n\n this._localDeploymentContext = {\n // Resources inside this RG deploy at RG scope, so the canonical\n // default is the Bicep runtime expression `resourceGroup().location`\n // (i.e. the actual location of whichever RG hosts the deployment).\n // This is correct whether the RG is authored locally or referenced\n // as `existing`.\n location: fn.resourceGroup().location,\n tags: deref(this.tags),\n };\n }\n\n /** The resource group's location as an expression. */\n get location(): Expression<string> {\n return this.expr(\"location\");\n }\n set location(value: ExpressionOrValue<string>) {\n this.setProperty(\"location\", value);\n }\n\n get managedBy(): Expression<string> {\n return this.expr(\"managedBy\");\n }\n set managedBy(value: ExpressionOrValue<string> | undefined) {\n this.setProperty(\"managedBy\", value);\n }\n\n get tags(): InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined {\n return this.state.tags === undefined\n ? undefined\n : (this.expr(\"tags\") as InputRecord<ExpressionOrValue<string>, Record<string, string>>);\n }\n set tags(value: InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined) {\n this.setProperty(\"tags\", value);\n this._localDeploymentContext = {\n ...this._localDeploymentContext,\n tags: deref(this.tags),\n };\n }\n\n add<T extends new (context: ProvisioningComponent, ...args: any[]) => ProvisioningComponent>(\n ctor: T,\n ...args: ConstructorParameters<T> extends [any, ...infer Rest] ? Rest : never\n ): InstanceType<T> {\n return new ctor(this.self, ...args) as InstanceType<T>;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/constructs/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,7 @@ export class OutputCollection {
|
|
|
15
15
|
if (this.has(name)) {
|
|
16
16
|
throw new Error(`Duplicate deployment output name: ${name}`);
|
|
17
17
|
}
|
|
18
|
-
if ((type === "string" || type === "int" || type === "bool") &&
|
|
19
|
-
isResource(value)) {
|
|
18
|
+
if ((type === "string" || type === "int" || type === "bool") && isResource(value)) {
|
|
20
19
|
throw new Error(`Deployment output "${name}" expected type "${type}" but got resource.`);
|
|
21
20
|
}
|
|
22
21
|
assertValueAssignableToType(value, type, `Deployment output "${name}"`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/constructs/output.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAkDhF;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B,QAAQ,GAAqB,EAAE,CAAC;IAEhC,4EAA4E;IAC5E,GAAG,CACD,IAAY,EACZ,IAAO,EACP,KAAiC,EACjC,OAAuB;QAEvB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,oBAAoB,IAAI,qBAAqB,CAAC,CAAC;QAC3F,CAAC;QACD,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,sBAAsB,IAAI,GAAG,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8DAA8D;IAC9D,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,+CAA+C;IAC/C,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IACtC,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,IAAY;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAY,EACZ,IAAY,EACZ,IAAO,EACP,KAAiC,EACjC,OAAuB;IAEvB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap, PrimitiveTypeName } from \"../serialization/ast/index.js\";\nimport type { ExpressionOrValue, InputOf } from \"../expression/expressions.js\";\nimport type { Resource } from \"./resource/resource.js\";\nimport { isResource } from \"./resource/resource-utils.js\";\nimport type { Stack } from \"./stack.js\";\nimport { assertBicepIdentifier, assertValueAssignableToType } from \"../util.js\";\n\n/**\n * A value accepted as a deployment output's value: any JSON literal (scalar,\n * `null`, array, object — recursively), an `Expression`, a resource view\n * (`InputOf<unknown>`), or a {@link Resource} handle. The literal members are\n * required so plain object/array literals are accepted (a bare\n * `InputOf<unknown>` is a weak type and would reject them).\n */\nexport type OutputValue =\n | string\n | number\n | boolean\n | null\n | readonly OutputValue[]\n | { readonly [key: string]: OutputValue }\n | InputOf<unknown>\n | Resource;\n\n/** Primitive Bicep type names supported by deployment outputs. */\nexport type OutputType = PrimitiveTypeName;\n\nexport type ScalarOutputType = \"string\" | \"int\" | \"bool\";\nexport type OutputValueFor<T extends OutputType> = T extends ScalarOutputType\n ? ExpressionOrValue<PrimitiveTypeMap[T]>\n : OutputValue;\n\nexport type OutputOptions = {\n readonly description?: string | undefined;\n readonly secure?: boolean | undefined;\n readonly minValue?: number | undefined;\n readonly maxValue?: number | undefined;\n readonly minLength?: number | undefined;\n readonly maxLength?: number | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n readonly discriminator?: string | undefined;\n readonly sealed?: boolean | undefined;\n};\n\n/**\n * Pure declaration data for a deployment output. Stored on the stack and read\n * by the serializer at emit time. An output is a terminal sink — it has no\n * expression handle.\n */\nexport interface OutputMetadata extends OutputOptions {\n readonly name: string;\n readonly type: OutputType;\n readonly value: OutputValue;\n}\n\n/**\n * Authoring-time collection of a stack's deployment outputs. Backed by an\n * ordered private array; supports add/get/delete/iteration. Outputs are\n * terminal sinks (no expression handle), so iteration yields metadata.\n */\nexport class OutputCollection {\n #entries: OutputMetadata[] = [];\n\n /** Add an output. Throws on duplicate name. Returns the stored metadata. */\n add<T extends OutputType>(\n name: string,\n type: T,\n value: OutputValueFor<NoInfer<T>>,\n options?: OutputOptions,\n ): OutputMetadata {\n assertBicepIdentifier(name, \"Deployment output\");\n if (this.has(name)) {\n throw new Error(`Duplicate deployment output name: ${name}`);\n }\n if ((type === \"string\" || type === \"int\" || type === \"bool\") && isResource(value)) {\n throw new Error(`Deployment output \"${name}\" expected type \"${type}\" but got resource.`);\n }\n assertValueAssignableToType(value, type, `Deployment output \"${name}\"`);\n const metadata: OutputMetadata = { name, type, value, ...options };\n this.#entries.push(metadata);\n return metadata;\n }\n\n /** The declaration metadata for an output, or `undefined`. */\n get(name: string): OutputMetadata | undefined {\n return this.#entries.find((e) => e.name === name);\n }\n\n /** All output metadata, in insertion order. */\n list(): readonly OutputMetadata[] {\n return this.#entries;\n }\n\n has(name: string): boolean {\n return this.get(name) !== undefined;\n }\n\n /** Remove an output by name. Returns whether one was removed. */\n delete(name: string): boolean {\n const i = this.#entries.findIndex((e) => e.name === name);\n if (i === -1) return false;\n this.#entries.splice(i, 1);\n return true;\n }\n\n get size(): number {\n return this.#entries.length;\n }\n\n [Symbol.iterator](): IterableIterator<OutputMetadata> {\n return this.#entries[Symbol.iterator]();\n }\n}\n\n/**\n * A deployment output, compiled to a Bicep `output` declaration.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack } from \"@azure/provisioning-core\";\n * import { KeyVault } from \"@azure/provisioning-keyvault\";\n *\n * const stack = new Stack(\"my-app\", { targetScope: \"resourceGroup\" });\n * const vault = new KeyVault(stack, {\n * name: \"kv-my-app\",\n * location: \"eastus\",\n * properties: {\n * tenantId: \"11111111-1111-1111-1111-111111111111\",\n * sku: { family: \"A\", name: \"standard\" },\n * },\n * });\n * stack.outputs.add(\"vaultUri\", \"string\", vault.properties.vaultUri);\n * ```\n */\nexport function createOutput<T extends OutputType>(\n stack: Stack,\n name: string,\n type: T,\n value: OutputValueFor<NoInfer<T>>,\n options?: OutputOptions,\n): OutputMetadata {\n return stack.outputs.add(name, type, value, options);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../../src/constructs/parameter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../../src/constructs/parameter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap } from \"../serialization/ast/index.js\";\nimport type { Expression, ExpressionOrValue } from \"../expression/expressions.js\";\nimport { wrapExpression } from \"../expression/expressions.js\";\nimport { isExpression } from \"../expression/expressions.js\";\nimport { symbolicValueExpressionNode } from \"../expression/ast-nodes.js\";\nimport type { Stack } from \"./stack.js\";\nimport { assertBicepIdentifier, assertValueAssignableToType } from \"../util.js\";\n\nexport type InferParamType<T extends keyof PrimitiveTypeMap, A> = A extends readonly (infer E)[]\n ? E\n : PrimitiveTypeMap[T];\n\n/**\n * A value accepted as a parameter's `defaultValue`: a literal of the declared\n * type or an `Expression` of it. Resource views are intentionally excluded —\n * a Bicep `param` default cannot reference resources.\n */\nexport type ParameterValue<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap> =\n ExpressionOrValue<PrimitiveTypeMap[T]>;\n\nexport type ParameterOptions<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n> = {\n readonly defaultValue?: ExpressionOrValue<InferParamType<T, A>> | undefined;\n readonly description?: string | undefined;\n readonly secure?: boolean | undefined;\n readonly minValue?: number | undefined;\n readonly maxValue?: number | undefined;\n readonly minLength?: number | undefined;\n readonly maxLength?: number | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n readonly allowed?: A;\n readonly discriminator?: string | undefined;\n readonly sealed?: boolean | undefined;\n};\n\n/**\n * Pure declaration data for a deployment parameter. Stored on the stack\n * (paired with the returned expression handle in {@link ParameterEntry});\n * read by the serializer at emit time. Not part of the value-level handle.\n */\nexport interface ParameterMetadata extends ParameterOptions<\n keyof PrimitiveTypeMap,\n readonly PrimitiveTypeMap[keyof PrimitiveTypeMap][] | undefined\n> {\n readonly name: string;\n readonly type: keyof PrimitiveTypeMap;\n}\n\n/**\n * A stack entry pairing a parameter's declaration metadata with the\n * expression handle returned to the user. Internal; metadata is exposed via\n * {@link ParameterCollection.getMetadata} / {@link ParameterCollection.listMetadata}.\n */\ninterface ParameterEntry {\n readonly metadata: ParameterMetadata;\n readonly parameter: Expression<unknown>;\n}\n\nexport type Parameter<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n> = Expression<InferParamType<T, A>>;\n\n/**\n * Authoring-time collection of a stack's deployment parameters. Backed by an\n * ordered private array; supports add/get/delete/iteration. Look parameters up\n * by name via {@link ParameterCollection.get}.\n */\nexport class ParameterCollection {\n #entries: ParameterEntry[] = [];\n\n /** Add a parameter; returns its expression handle. Throws on duplicate name. */\n add<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n >(name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A> {\n assertBicepIdentifier(name, \"Deployment parameter\");\n if (this.has(name)) {\n throw new Error(`Duplicate deployment parameter name: ${name}`);\n }\n assertValueAssignableToType(options?.defaultValue, type, `Deployment parameter \"${name}\"`);\n if (\n options?.defaultValue !== undefined &&\n !isExpression(options.defaultValue) &&\n options.allowed !== undefined &&\n !options.allowed.includes(options.defaultValue as PrimitiveTypeMap[T])\n ) {\n throw new Error(\n `Deployment parameter \"${name}\" default value must be one of its allowed values.`,\n );\n }\n const param = wrapExpression<InferParamType<T, A>>(\n symbolicValueExpressionNode<InferParamType<T, A>, string>(name),\n );\n this.#entries.push({\n metadata: { name, type, ...options },\n parameter: param,\n });\n return param;\n }\n\n /** The expression handle for a parameter, or `undefined`. */\n get(name: string): Parameter | undefined {\n return this.#find(name)?.parameter;\n }\n\n /** The declaration metadata for a parameter, or `undefined`. */\n getMetadata(name: string): ParameterMetadata | undefined {\n return this.#find(name)?.metadata;\n }\n\n /** All parameter handles, in insertion order. */\n list(): readonly Parameter[] {\n return this.#entries.map((e) => e.parameter);\n }\n\n /** All declaration metadata, in insertion order. */\n listMetadata(): readonly ParameterMetadata[] {\n return this.#entries.map((e) => e.metadata);\n }\n\n has(name: string): boolean {\n return this.#find(name) !== undefined;\n }\n\n /** Remove a parameter by name. Returns whether one was removed. */\n delete(name: string): boolean {\n const i = this.#entries.findIndex((e) => e.metadata.name === name);\n if (i === -1) return false;\n this.#entries.splice(i, 1);\n return true;\n }\n\n get size(): number {\n return this.#entries.length;\n }\n\n [Symbol.iterator](): IterableIterator<Parameter> {\n return this.#entries.map((e) => e.parameter)[Symbol.iterator]();\n }\n\n #find(name: string): ParameterEntry | undefined {\n return this.#entries.find((e) => e.metadata.name === name);\n }\n}\n\n/**\n * A deploy-time input to a stack, compiled to a Bicep `param` declaration.\n *\n * @remarks\n * The returned value is an `Expression` that can be passed to resource\n * properties. At deploy time, the user supplies the actual value. The\n * declaration metadata is stored separately on the stack, keyed by name.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack, createParameter } from \"@azure/provisioning-core\";\n *\n * const stack = new Stack(\"my-app\", { targetScope: \"resourceGroup\" });\n * const env = createParameter(stack, \"env\", \"string\", {\n * allowed: [\"dev\", \"staging\", \"prod\"] as const,\n * defaultValue: \"dev\",\n * });\n * ```\n */\nexport function createParameter<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n>(stack: Stack, name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A> {\n return stack.parameters.add(name, type, options);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provisioning-component.d.ts","sourceRoot":"","sources":["../../../src/constructs/provisioning-component.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAGrF,MAAM,MAAM,gCAAgC,CAC1C,UAAU,SAAS,qBAAqB,GAAG,qBAAqB,IAC9D,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAM;IAChD;;;OAGG;IACH,SAAS,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,SAAS,CAAC;gBAErD,MAAM,CAAC,EAAE,qBAAqB;IAK1C;;;;;;;;;;;;OAYG;IACH,IAAI,iBAAiB,IAAI,iBAAiB,CAgCzC;IAED;;;;;OAKG;IACH,SAAS,CAAC,oBAAoB,IAAI,OAAO;IAWzC;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,IAAI,CAEf;IAED;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,KAAK,IAAI,GAAG,IAAI;IACrE,SAAS,CAAC,UAAU,SAAS,qBAAqB,EAChD,IAAI,EAAE,gCAAgC,CAAC,UAAU,CAAC,EAClD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,IAAI,GACxC,IAAI;IAqBP;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI;IAO3E,SAAS,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO;CAQrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provisioning-component.js","sourceRoot":"","sources":["../../../src/constructs/provisioning-component.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DeploymentContext } from \"../deployment-context/deployment-context.js\";\nimport type { ExpressionOrValue } from \"../expression/expressions.js\";\n\nexport type ProvisioningComponentConstructor<\n TComponent extends ProvisioningComponent = ProvisioningComponent,\n> = abstract new (...args: any[]) => TComponent;\n\n/**\n * Base class for all tree nodes in the library object model.\n *\n * @remarks\n * Both `Stack` and `Resource` extend `ProvisioningComponent`. It provides parent-child\n * tree tracking and deployment context lookup — walking up the tree to find\n * the nearest context set by a `Stack` or `ResourceGroup`.\n *\n * Subclass `ProvisioningComponent` directly to create reusable groupings of resources\n * that don't correspond to an ARM resource. For ARM resources, extend\n * `Resource` instead.\n *\n * @example\n * ```typescript snippet:ignore\n * import { ProvisioningComponent } from \"@azure/provisioning-core\";\n * import { KeyVault, Secret } from \"@azure/provisioning-keyvault\";\n *\n * class DataTier extends ProvisioningComponent {\n * readonly vault: KeyVault;\n * readonly secret: Secret;\n *\n * constructor(parent: ProvisioningComponent, tenantId: string, secretValue: string) {\n * super(parent);\n * this.vault = new KeyVault(this, {\n * name: \"kv-my-app\",\n * location: \"eastus\",\n * properties: { tenantId, sku: { family: \"A\", name: \"standard\" } },\n * });\n * this.secret = new Secret(this.vault, {\n * name: \"database-password\",\n * properties: { value: secretValue },\n * });\n * }\n * }\n * ```\n */\nexport class ProvisioningComponent {\n readonly parent: ProvisioningComponent | undefined;\n readonly children: ProvisioningComponent[] = [];\n /**\n * The contribution this node makes to the inherited deployment context.\n * Resolved field-by-field by walking ancestors in `deploymentContext`.\n */\n protected _localDeploymentContext: DeploymentContext | undefined;\n\n constructor(parent?: ProvisioningComponent) {\n this.parent = parent;\n parent?.children.push(this);\n }\n\n /**\n * The effective deployment context **inherited from ancestors**, resolved\n * by walking up the parent chain (this node's own local contribution is\n * intentionally excluded — a node's contribution flows to its descendants,\n * not to itself). Each field is resolved per its own rule:\n *\n * - `location`: nearest ancestor with a value wins.\n * - `namingPolicy`: nearest ancestor with a value wins.\n * - `tags`: flat-merged across all ancestors; innermost wins on key conflict.\n *\n * Returns an object whose fields may all be `undefined` if no ancestor\n * contributed anything.\n */\n get deploymentContext(): DeploymentContext {\n let location: DeploymentContext[\"location\"];\n let namingPolicy: DeploymentContext[\"namingPolicy\"];\n let locationSet = false;\n let namingSet = false;\n const tagFrames: Array<Record<string, ExpressionOrValue<string>>> = [];\n\n for (\n let current: ProvisioningComponent | undefined = this.parent;\n current;\n current = current.parent\n ) {\n const local = current._localDeploymentContext;\n if (local === undefined) continue;\n if (!locationSet && local.location !== undefined) {\n location = local.location;\n locationSet = true;\n }\n if (!namingSet && local.namingPolicy !== undefined) {\n namingPolicy = local.namingPolicy;\n namingSet = true;\n }\n if (local.tags !== undefined) tagFrames.push(local.tags);\n }\n\n let tags: DeploymentContext[\"tags\"];\n // Merge root → leaf so the nearest ancestor (frame 0) wins on conflict.\n for (let i = tagFrames.length - 1; i >= 0; i--) {\n tags = { ...tags, ...tagFrames[i] };\n }\n\n return { location, tags, namingPolicy };\n }\n\n /**\n * Returns `true` if any ancestor has attached a local deployment context\n * contribution. Used by `Resource` to enforce that resources sit inside\n * a `Stack` tree. (This node's own contribution is intentionally not\n * considered — a node inherits context from ancestors, not from itself.)\n */\n protected hasDeploymentContext(): boolean {\n for (\n let current: ProvisioningComponent | undefined = this.parent;\n current;\n current = current.parent\n ) {\n if (current._localDeploymentContext !== undefined) return true;\n }\n return false;\n }\n\n /**\n * Public identity for this node.\n *\n * @remarks\n * Plain components return themselves. Resources override this to return\n * their proxy-backed handle so APIs can get the right instance to use to\n * reference to the resource and so on.\n */\n get self(): this {\n return this;\n }\n\n /**\n * Applies a callback to every descendant component/resource that matches the\n * given constructor, including `this` when it matches.\n */\n transform(callback: (component: ProvisioningComponent) => void): this;\n transform<TComponent extends ProvisioningComponent>(\n ctor: ProvisioningComponentConstructor<TComponent>,\n callback: (component: TComponent) => void,\n ): this;\n transform<TComponent extends ProvisioningComponent>(\n ctorOrCallback:\n ProvisioningComponentConstructor<TComponent> | ((component: ProvisioningComponent) => void),\n callback?: (component: TComponent) => void,\n ): this {\n const ctor = callback\n ? (ctorOrCallback as ProvisioningComponentConstructor<TComponent>)\n : undefined;\n const cb = (callback ?? ctorOrCallback) as (c: ProvisioningComponent) => void;\n\n this.visit((component) => {\n const target = component.self;\n if (!ctor || target instanceof ctor) {\n cb(target);\n }\n });\n\n return this;\n }\n\n /**\n * Depth-first visit of this node and all descendants.\n * Return `false` from the callback to skip visiting that node's children.\n */\n visit(callback: (component: ProvisioningComponent) => boolean | void): void {\n if (callback(this) === false) return;\n for (const child of this.children) {\n child.visit(callback);\n }\n }\n\n isChildOf(component: ProvisioningComponent): boolean {\n let current = this.parent;\n while (current) {\n if (current === component) return true;\n current = current.parent;\n }\n return false;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-proxy.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-proxy.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAInF,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AACjE,eAAO,MAAM,cAAc,eAAkD,CAAC;AAE9E;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,eAAwD,CAAC;AAE3F;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,eAEtC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,eAAyD,CAAC;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,eAA8D,CAAC;AAEhG;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAG,aAAsB,CAAC;AAkBzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAqCD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7D,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAW3C;AA+FD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,QAAQ,GAAG,OAAO,CA+B1F;AA8KD,wBAAgB,yBAAyB,CAAC,MAAM,EAC9C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,SAAS,eAAe,EAAE,GAC/B,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAmB7B;AAgBD,wBAAgB,mBAAmB,CACjC,KAAK,SAAS,MAAM,EACpB,SAAS,SAAS,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,EAC1C,QAAQ,EAAE,SAAS,GAAG,SAAS,CAoFhC;AAcD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,mBAAmB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAQlF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH;;;;;;GAMG;AACH,KAAK,cAAc,CAAC,CAAC,SAAS,mBAAmB,IAAI,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAQ/F,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,mBAAmB,EACtE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAC/B,cAAc,CAAC,CAAC,CAAC,CAwHnB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
import { EXPRESSION_BRAND, isExpression, unwrapExpression, } from "../../expression/expressions.js";
|
|
4
4
|
import { accessExpressionNode, arrayAccessExpressionNode, identifierExpressionNode, isExpressionNode, } from "../../expression/ast-nodes.js";
|
|
5
|
-
import { navigateShape
|
|
5
|
+
import { navigateShape } from "../../shape/shape.js";
|
|
6
6
|
import { getShape } from "../../shape/shape-registry.js";
|
|
7
7
|
export const RAW_RESOURCE_HANDLE = Symbol("raw-resource-handle");
|
|
8
8
|
export const RESOURCE_BRAND = Symbol.for("@azure/provisioning-core.Resource");
|
|
@@ -190,12 +190,8 @@ function normalizeObjectValue(obj, currentResource) {
|
|
|
190
190
|
// Property proxy
|
|
191
191
|
// ---------------------------------------------------------------------------
|
|
192
192
|
function toPropertySegment(property, nav, currentValue) {
|
|
193
|
-
const isIndexedContainer = nav?.kind === "array" ||
|
|
194
|
-
|
|
195
|
-
Array.isArray(currentValue);
|
|
196
|
-
return isIndexedContainer && /^\d+$/u.test(property)
|
|
197
|
-
? Number(property)
|
|
198
|
-
: property;
|
|
193
|
+
const isIndexedContainer = nav?.kind === "array" || nav?.kind === "tuple" || Array.isArray(currentValue);
|
|
194
|
+
return isIndexedContainer && /^\d+$/u.test(property) ? Number(property) : property;
|
|
199
195
|
}
|
|
200
196
|
function getPropertyProxyTarget(state) {
|
|
201
197
|
const currentValue = getValueAtPath(state.root, stepsToPath(state.steps));
|
|
@@ -224,8 +220,7 @@ function createPropertyProxy(state) {
|
|
|
224
220
|
},
|
|
225
221
|
getOwnPropertyDescriptor(_proxyTarget, property) {
|
|
226
222
|
const backing = getPropertyProxyTarget(state);
|
|
227
|
-
if (typeof property === "string" &&
|
|
228
|
-
Object.prototype.hasOwnProperty.call(backing, property)) {
|
|
223
|
+
if (typeof property === "string" && Object.prototype.hasOwnProperty.call(backing, property)) {
|
|
229
224
|
return { enumerable: true, configurable: true, writable: true };
|
|
230
225
|
}
|
|
231
226
|
return undefined;
|
|
@@ -383,9 +378,7 @@ export function createResourceProxy(resource) {
|
|
|
383
378
|
isNonEnumerableOwnProperty(target, property)) {
|
|
384
379
|
return Reflect.set(target, property, value, receiver);
|
|
385
380
|
}
|
|
386
|
-
setValueAtPath(unwrapResourceHandle(proxy), [
|
|
387
|
-
toPropertySegment(property, getResourceShape(target), unwrapResourceHandle(proxy)),
|
|
388
|
-
], normalizeAssignedValue(value, proxy));
|
|
381
|
+
setValueAtPath(unwrapResourceHandle(proxy), [toPropertySegment(property, getResourceShape(target), unwrapResourceHandle(proxy))], normalizeAssignedValue(value, proxy));
|
|
389
382
|
return true;
|
|
390
383
|
},
|
|
391
384
|
});
|
|
@@ -421,7 +414,8 @@ export function createIndexedResourceProxy(resource, index) {
|
|
|
421
414
|
// `sym[index]`. A scalar `Resource` has no `wrappedCtor` — it already
|
|
422
415
|
// carries those accessors on its own prototype, so `subclassProto` stays
|
|
423
416
|
// `undefined` and lookups resolve via the target's own chain.
|
|
424
|
-
const subclassProto = resource
|
|
417
|
+
const subclassProto = resource
|
|
418
|
+
.wrappedCtor?.prototype;
|
|
425
419
|
return new Proxy(resource, {
|
|
426
420
|
// Deliberately NO `getPrototypeOf` trap. Exposing the subclass
|
|
427
421
|
// prototype here would make `proxy instanceof Subclass` report `true`,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-proxy.js","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-proxy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GAGjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,GAGjB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAsC,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AAE3F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAClD,8CAA8C,CAC/C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;AAEhG;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAsB,CAAC;AAoDzD,SAAS,WAAW,CAAC,KAA8B;IACjD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAE5D,SAAS,eAAe,CACtB,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,CAAC,GAAG,CAAC,KAAe,EAAE,oBAAoB,CAAC,KAAK,SAAS,CACjE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAE9B;IACC,OAAO,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACrC,CAAC;AAQD,MAAM,UAAU,KAAK,CAAI,KAAQ;IAC/B,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAa,CAAC;IAC1E,CAAC;IAED,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,oBAAoB,CAAC,KAAK,CAAa,CAAC;IACjD,CAAC;IAED,OAAO,KAAiB,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,cAAc,CAAC,IAA6B,EAAE,IAAgC;IACrF,IAAI,OAAO,GAAY,IAAI,CAAC;IAE5B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACpE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CACrB,IAA6B,EAC7B,IAAgC,EAChC,KAAc;IAEd,IAAI,OAAO,GAA4B,IAAI,CAAC;IAE5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;YACrE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YAClB,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,GAAG,QAAmC,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAG5E,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;YACtC,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,OAAO,GAAG,SAAS,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;QAC5D,KAAK;QACL,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,SAAS,gCAAgC,CACvC,QAAkB,EAClB,KAA8B,EAC9B,KAAwB;IAExB,IAAI,OAAO,GAAmB,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACjE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,GAAG,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;QACzC,OAAO,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,eAA0B;IAC/E,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,eAAe,IAAI,KAAK,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;YAC1D,kEAAkE;YAClE,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,gCAAgC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,oBAAoB,CAAC,KAAgC,EAAE,eAAe,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAC3B,GAA4B,EAC5B,eAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,eAAe,IAAI,KAAK,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;gBAC1D,4DAA4D;gBAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnE,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAS,iBAAiB,CACxB,QAAgB,EAChB,GAAa,EACb,YAAqB;IAErB,MAAM,kBAAkB,GACtB,GAAG,EAAE,IAAI,KAAK,OAAO,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAChF,OAAO,kBAAkB,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrF,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAyB;IACvD,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAE1E,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC9D,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAyB;IACpD,sEAAsE;IACtE,iFAAiF;IACjF,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,WAAW,EAAE,QAAQ;YACvB,IAAI,QAAQ,KAAK,oBAAoB,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;gBACvE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;YAChD,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO;YACL,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;QACpF,CAAC;QAED,wBAAwB,CAAC,YAAY,EAAE,QAAQ;YAC7C,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC5F,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAClE,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ;YACjC,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;gBACtC,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;gBAClC,OAAO,gCAAgC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACpF,CAAC;YAED,IAAI,QAAQ,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;gBACpC,OAAO,GAAG,EAAE,CAAC,mBAAmB,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACpF,CAAC;YAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,OAAO,GAAG,EAAE,CAAC,mBAAmB,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACpF,CAAC;YAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,GAAG,EAAE,CAAC,gCAAgC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1F,CAAC;YAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACrE,gEAAgE;YAChE,oDAAoD;YACpD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAE1B,OAAO,mBAAmB,CAAC;gBACzB,GAAG,KAAK;gBACR,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;gBAC1D,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK;YAC/B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;YAED,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,4BAA4B,EAAE,CAAC;YACjC,CAAC;YAED,cAAc,CACZ,KAAK,CAAC,IAAI,EACV;gBACE,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC3B,iBAAiB,CACf,QAAQ,EACR,KAAK,CAAC,GAAG,EACT,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACrD;aACF,EACD,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAC9C,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,SAAS,0BAA0B,CAAC,MAAc,EAAE,QAAgB;IAClE,MAAM,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtE,OAAO,UAAU,EAAE,UAAU,KAAK,KAAK,CAAC;AAC1C,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc,EAAE,QAAgB;IACjE,IAAI,OAAO,GAAkB,MAAM,CAAC;IAEpC,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA2B,EAC3B,IAAgC;IAEhC,iEAAiE;IACjE,mEAAmE;IACnE,qEAAqE;IACrE,+CAA+C;IAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,GAAG,GAAa,SAAS,CAAC;IAC9B,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,OAAO,mBAAmB,CAAC;QACzB,GAAG,MAAM;QACT,KAAK;QACL,GAAG;KACJ,CAAgC,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,iEAAiE;IACjE,qEAAqE;IACrE,yDAAyD;IACzD,MAAM,KAAK,GAAI,QAA0E,CACvF,mBAAmB,CACpB,CAAC;IACF,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CAGjC,QAAmB;IACnB,SAAS,sBAAsB,CAAC,MAAiB;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAA4B,CAAC;IAC7E,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE;QAChC,OAAO,CAAC,MAAM;YACZ,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,GAAG,CAAC;gBACN,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CACvD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,mBAAmB,CACrC;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QAED,wBAAwB,CAAC,MAAM,EAAE,QAAQ;YACvC,MAAM,gBAAgB,GAAG,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC5E,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,gBAAgB,CAAC;YAC1B,CAAC;YAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC5D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAClE,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC5B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;YAED,IACE,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAC3C,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC5C,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAA4B,CAAC;YACzE,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YAEtB,OAAO,mBAAmB,CAAC;gBACzB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC7B,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;YACnC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACxD,CAAC;YAED,IACE,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAC3C,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC5C,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACxD,CAAC;YAED,cAAc,CACZ,oBAAoB,CAAC,KAAK,CAA4B,EACtD,CAAC,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EACpF,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CACrC,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAiC,CAAC,cAAc,CAAC,KAAK,IAAI,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAgC,QAAW;IAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAkB,EAAE,mBAAmB,CAAC,CAAC;IAEtE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,QAAa,CAAC;AACvB,CAAC;AAqDD,SAAS,4BAA4B;IACnC,MAAM,IAAI,KAAK,CACb,iLAAiL,CAClL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,QAAW,EACX,KAAgC;IAEhC,MAAM,uBAAuB,GAAqB,YAAY,CAAC,KAAK,CAAC;QACnE,CAAC,CAAC,gBAAgB,CAAC,KAA2B,CAAC;QAC/C,CAAC,CAAC,KAAK,CAAC;IACV,MAAM,IAAI,GAAG,oBAAoB,CAAC,QAAQ,CAAuC,CAAC;IAElF,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,8DAA8D;IAC9D,sEAAsE;IACtE,yEAAyE;IACzE,8DAA8D;IAC9D,MAAM,aAAa,GAAI,QAAsE;SAC1F,WAAW,EAAE,SAAS,CAAC;IAE1B,OAAO,IAAI,KAAK,CAAC,QAAkB,EAAE;QACnC,+DAA+D;QAC/D,uEAAuE;QACvE,sEAAsE;QACtE,mEAAmE;QACnE,mEAAmE;QACnE,8DAA8D;QAC9D,yEAAyE;QACzE,mBAAmB;QACnB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC5B,mEAAmE;YACnE,uEAAuE;YACvE,qCAAqC;YACrC,IAAI,QAAQ,KAAK,eAAe;gBAAE,OAAO,uBAAuB,CAAC;YACjE,IAAI,QAAQ,KAAK,oBAAoB;gBAAE,OAAO,MAAM,CAAC;YAErD,qEAAqE;YACrE,iEAAiE;YACjE,kDAAkD;YAClD,oEAAoE;YACpE,uEAAuE;YACvE,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO,SAAS,gBAAgB,CAAC,GAAG,IAAgC;oBAClE,OAAO,yBAAyB,CAC9B;wBACE,QAAQ,EAAE,MAAkB;wBAC5B,IAAI;wBACJ,KAAK,EAAE,uBAAuB;qBAC/B,EACD,IAAI,CACL,CAAC;gBACJ,CAAC,CAAC;YACJ,CAAC;YAED,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,+CAA+C;YAC/C,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC/B,OAAO,4BAA4B,CAAC;YACtC,CAAC;YAED,oDAAoD;YACpD,EAAE;YACF,sEAAsE;YACtE,iEAAiE;YACjE,qEAAqE;YACrE,mEAAmE;YACnE,wDAAwD;YACxD,yEAAyE;YACzE,uBAAuB;YACvB,uEAAuE;YACvE,iEAAiE;YACjE,6DAA6D;YAC7D,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,CAAC;YAED,gEAAgE;YAChE,kEAAkE;YAClE,+DAA+D;YAC/D,8DAA8D;YAC9D,iEAAiE;YACjE,qDAAqD;YACrD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,KAAK,GAAkB,aAAa,CAAC;gBACzC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACpE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;4BACjC,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACvC,CAAC;wBACD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;wBAC/B,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAClE,CAAC;oBACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,qEAAqE;QACrE,sEAAsE;QACtE,iDAAiD;QACjD,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;YACnC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,KAAK,GAAkB,aAAa,CAAC;gBACzC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACpE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;4BACjC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;4BACrC,OAAO,IAAI,CAAC;wBACd,CAAC;wBACD,MAAM;oBACR,CAAC;oBACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;KACF,CAAsB,CAAC;AAC1B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n EXPRESSION_BRAND,\n isExpression,\n unwrapExpression,\n type Expression,\n type ExpressionOrValue,\n} from \"../../expression/expressions.js\";\nimport {\n accessExpressionNode,\n arrayAccessExpressionNode,\n identifierExpressionNode,\n isExpressionNode,\n type ArrayAccessIndex,\n type ExpressionNode,\n} from \"../../expression/ast-nodes.js\";\nimport type { PropertySegment } from \"../../types.js\";\nimport type { LoopedResource, Resource, ResourceDeclaration } from \"./resource.js\";\nimport { navigateShape, type FlatModelShape, type NavShape } from \"../../shape/shape.js\";\nimport { getShape } from \"../../shape/shape-registry.js\";\n\nexport const RAW_RESOURCE_HANDLE = Symbol(\"raw-resource-handle\");\nexport const RESOURCE_BRAND = Symbol.for(\"@azure/provisioning-core.Resource\");\n\n/**\n * Brand present on every `LoopedResource` instance. Lives here (rather than\n * on the `LoopedResource` class) so tree-walking utilities can brand-check\n * for looped declarations without a runtime import of `resource.ts` — which\n * would create an eval-time import cycle (`resource.ts` extends `ProvisioningComponent`).\n * Use {@link isLoopedResource} in normal code.\n */\nexport const LOOPED_RESOURCE_BRAND = Symbol.for(\"@azure/provisioning-core.LoopedResource\");\n\n/**\n * Brand present on every `ResourceDeclaration` instance (both scalar\n * `Resource` and looped `LoopedResource`). Use\n * {@link isResourceDeclaration} instead of a direct\n * brand check.\n */\nexport const RESOURCE_DECLARATION_BRAND = Symbol.for(\n \"@azure/provisioning-core.ResourceDeclaration\",\n);\n\n/**\n * Present on indexed resource proxies (see {@link createIndexedResourceProxy}).\n * Reading it off any resource-like value returns the stored index expression\n * for indexed proxies, and `undefined` for plain outer proxies. The base\n * `Resource` constructor probes for it on the `context` argument to detect\n * `parents.at(i)` / `parents.current()` being passed as a child parent\n * context; other consumers may probe it for their own purposes (the proxy\n * itself doesn't imply any parent-child relationship — the index is simply\n * what identifies which element of a looped declaration this proxy refers\n * to).\n */\nexport const PROXY_INDEX_REF = Symbol.for(\"@azure/provisioning-core.PROXY_INDEX_REF\");\n\n/**\n * Present on indexed resource proxies. Reading it returns the underlying\n * outer-proxy resource that the indexed proxy wraps. Used by the base\n * `Resource` constructor to normalize `this.parent` back to the raw parent\n * (so tree walks and symbol-map lookups continue to work) while\n * `PROXY_INDEX_REF` carries the \"which index\" information onto `state`.\n */\nexport const INDEXED_PROXY_TARGET = Symbol.for(\"@azure/provisioning-core.INDEXED_PROXY_TARGET\");\n\n/**\n * State-object key under which the base `Resource` constructor records the\n * index expression when the `context` argument is an indexed proxy (i.e.,\n * `parent.at(i)` / `parent.current()`). The serializer reads this key\n * from the child's raw state to emit `parent: parentSym[<index>]` instead\n * of the bare `parent: parentSym` form. Kept as a shared const so writer\n * (`resource.ts`) and reader (`serialize.ts`) never drift.\n *\n * Lives on the **child**, not the parent: siblings under the same parent\n * can be created via different indexed proxies (e.g. `new Child(p.at(0), …)`\n * and `new Child(p.at(1), …)` both resolve `.parent` to the same raw parent,\n * so the index that distinguishes them must be recorded per-child).\n */\nexport const STATE_PARENT_INDEX = \"parentIndex\" as const;\n\n// ---------------------------------------------------------------------------\n// Property proxy internal types\n// ---------------------------------------------------------------------------\n\n/**\n * A single step in a property proxy's walk from the root resource. Each step\n * carries the path segment (member name or array index) and the ARM\n * `PropertyShape` stamp's `armPath` for that step (if known). The parallel `path`/`stamps`\n * arrays this replaces could drift in length; a single array of steps makes\n * the invariant structural.\n */\ninterface PropertyStep {\n readonly segment: PropertySegment;\n readonly armPath?: readonly string[] | undefined;\n}\n\n/**\n * The identity a member-proxy needs to lower into a Bicep expression and to\n * back reads/writes. Bundles the three roles that were previously passed\n * positionally to {@link createResourceMemberProxy}:\n *\n * - `resource` — the tree-registered declaration that supplies BOTH the\n * symbol root (`identifierExpressionNode(resource)`) and the ARM shape\n * source (`getResourceShape`). For a scalar resource this is the outer\n * resource proxy; for an indexed looped element it is the raw\n * `LoopedResource` declaration (the tree citizen), NOT the ephemeral\n * `.at(i)` handle — that handle isn't in the component tree, so it can't\n * resolve to a Bicep symbol.\n * - `root` — the raw backing object that stores assigned values, used by\n * `deref(...)` and nested writes.\n * - `index` — optional array index. When set, the emitted expression roots\n * at `resource[index]` instead of `resource`, so `many.at(i).prop.blob`\n * serializes as `sym[i].prop.blob`. Populated for `.at(i)` / `.current()`\n * handles by {@link createIndexedResourceProxy}.\n */\nexport interface ResourceProxySource {\n readonly resource: Resource;\n readonly root: Record<string, unknown>;\n readonly index?: ArrayAccessIndex;\n}\n\ninterface PropertyProxyState extends ResourceProxySource {\n // The member/index path from the root resource to the current proxied value,\n // each entry paired with its wire `armPath` stamp (if known).\n readonly steps: readonly PropertyStep[];\n // Current ARM shape navigation state. `undefined` at any level means\n // \"untyped from here down\"; subsequent accesses are passthrough.\n readonly nav?: NavShape;\n}\n\nfunction stepsToPath(steps: readonly PropertyStep[]): readonly PropertySegment[] {\n return steps.map((s) => s.segment);\n}\n\nconst PROPERTY_PROXY_STATE = Symbol(\"property-proxy-state\");\n\nfunction isPropertyProxy(\n value: unknown,\n): value is { readonly [PROPERTY_PROXY_STATE]: PropertyProxyState } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n Reflect.get(value as object, PROPERTY_PROXY_STATE) !== undefined\n );\n}\n\nfunction getPropertyProxyState(value: {\n readonly [PROPERTY_PROXY_STATE]: PropertyProxyState;\n}): PropertyProxyState {\n return value[PROPERTY_PROXY_STATE];\n}\n\n// ---------------------------------------------------------------------------\n// Deref\n// ---------------------------------------------------------------------------\n\nexport type Deref<T> = T extends Expression<infer U> ? U : T;\n\nexport function deref<T>(value: T): Deref<T> {\n if (isPropertyProxy(value)) {\n const state = getPropertyProxyState(value);\n return getValueAtPath(state.root, stepsToPath(state.steps)) as Deref<T>;\n }\n\n if (isResourceHandle(value)) {\n return unwrapResourceHandle(value) as Deref<T>;\n }\n\n return value as Deref<T>;\n}\n\n// ---------------------------------------------------------------------------\n// Path helpers\n// ---------------------------------------------------------------------------\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction getValueAtPath(root: Record<string, unknown>, path: readonly PropertySegment[]): unknown {\n let current: unknown = root;\n\n for (const segment of path) {\n if (typeof current !== \"object\" || current === null) {\n return undefined;\n }\n\n if (!Object.prototype.hasOwnProperty.call(current, String(segment))) {\n return undefined;\n }\n current = (current as Record<string, unknown>)[String(segment)];\n }\n\n return current;\n}\n\nfunction setValueAtPath(\n root: Record<string, unknown>,\n path: readonly PropertySegment[],\n value: unknown,\n): void {\n let current: Record<string, unknown> = root;\n\n for (let index = 0; index < path.length - 1; index += 1) {\n const segment = String(path[index]);\n const nextSegment = path[index + 1];\n const existing = Object.prototype.hasOwnProperty.call(current, segment)\n ? current[segment]\n : undefined;\n\n if (typeof existing === \"object\" && existing !== null) {\n current = existing as Record<string, unknown>;\n continue;\n }\n\n const container = (typeof nextSegment === \"number\" ? [] : Object.create(null)) as Record<\n string,\n unknown\n >;\n Object.defineProperty(current, segment, {\n value: container,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n current = container;\n }\n\n Object.defineProperty(current, String(path[path.length - 1]), {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n}\n\n// ---------------------------------------------------------------------------\n// Expression construction\n// ---------------------------------------------------------------------------\n\nfunction createMemberAccessPathExpression(\n resource: Resource,\n steps: readonly PropertyStep[],\n index?: ArrayAccessIndex,\n): ExpressionNode {\n let current: ExpressionNode = identifierExpressionNode(resource);\n if (index !== undefined) {\n current = arrayAccessExpressionNode(current, index);\n }\n for (const { segment, armPath } of steps) {\n current = accessExpressionNode(current, segment, { armPath });\n }\n return current;\n}\n\n// ---------------------------------------------------------------------------\n// Value normalization\n// ---------------------------------------------------------------------------\n\nexport function normalizeAssignedValue(value: unknown, currentResource?: Resource): unknown {\n if (isPropertyProxy(value)) {\n const state = getPropertyProxyState(value);\n if (currentResource && state.resource === currentResource) {\n // Same-resource proxy → inline raw value (avoids self-references)\n return getValueAtPath(state.root, stepsToPath(state.steps));\n }\n return createMemberAccessPathExpression(state.resource, state.steps, state.index);\n }\n\n if (isResourceHandle(value)) {\n return identifierExpressionNode(value);\n }\n\n if (isExpression(value)) {\n return unwrapExpression(value);\n }\n\n if (isExpressionNode(value)) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => normalizeAssignedValue(item, currentResource));\n }\n\n if (isPlainObject(value)) {\n return normalizeObjectValue(value as Record<string, unknown>, currentResource);\n }\n\n return value;\n}\n\nfunction normalizeObjectValue(\n obj: Record<string, unknown>,\n currentResource?: Resource,\n): Record<string, unknown> {\n const entries = Object.entries(obj);\n const result: Record<string, unknown> = Object.create(null);\n\n for (const [key, value] of entries) {\n if (isPropertyProxy(value)) {\n const state = getPropertyProxyState(value);\n if (currentResource && state.resource === currentResource) {\n // Same-resource → inline raw value (avoids self-references)\n result[key] = getValueAtPath(state.root, stepsToPath(state.steps));\n continue;\n }\n }\n\n result[key] = normalizeAssignedValue(value, currentResource);\n }\n\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Property proxy\n// ---------------------------------------------------------------------------\n\nfunction toPropertySegment(\n property: string,\n nav: NavShape,\n currentValue: unknown,\n): PropertySegment {\n const isIndexedContainer =\n nav?.kind === \"array\" || nav?.kind === \"tuple\" || Array.isArray(currentValue);\n return isIndexedContainer && /^\\d+$/u.test(property) ? Number(property) : property;\n}\n\nfunction getPropertyProxyTarget(state: PropertyProxyState): object {\n const currentValue = getValueAtPath(state.root, stepsToPath(state.steps));\n\n if (typeof currentValue === \"object\" && currentValue !== null) {\n return currentValue;\n }\n\n return {};\n}\n\nfunction createPropertyProxy(state: PropertyProxyState): unknown {\n // Always use a fresh empty target — avoids Proxy invariant violations\n // when the stored value has non-configurable properties (e.g. EXPRESSION_BRAND).\n const target = {};\n\n return new Proxy(target, {\n has(proxyTarget, property) {\n if (property === PROPERTY_PROXY_STATE || property === EXPRESSION_BRAND) {\n return true;\n }\n\n const backing = getPropertyProxyTarget(state);\n if (Reflect.has(backing, property)) return true;\n return Reflect.has(proxyTarget, property);\n },\n\n ownKeys() {\n const backing = getPropertyProxyTarget(state);\n return Reflect.ownKeys(backing).filter((k): k is string => typeof k === \"string\");\n },\n\n getOwnPropertyDescriptor(_proxyTarget, property) {\n const backing = getPropertyProxyTarget(state);\n if (typeof property === \"string\" && Object.prototype.hasOwnProperty.call(backing, property)) {\n return { enumerable: true, configurable: true, writable: true };\n }\n return undefined;\n },\n\n get(proxyTarget, property, receiver) {\n if (property === PROPERTY_PROXY_STATE) {\n return state;\n }\n\n if (property === EXPRESSION_BRAND) {\n return createMemberAccessPathExpression(state.resource, state.steps, state.index);\n }\n\n if (property === Symbol.toPrimitive) {\n return () => `[ResourceMember ${stepsToPath(state.steps).map(String).join(\".\")}]`;\n }\n\n if (typeof property !== \"string\") {\n return Reflect.get(proxyTarget, property, receiver);\n }\n\n if (property === \"toString\") {\n return () => `[ResourceMember ${stepsToPath(state.steps).map(String).join(\".\")}]`;\n }\n\n if (property === \"valueOf\") {\n return () => createMemberAccessPathExpression(state.resource, state.steps, state.index);\n }\n\n if (property === \"then\") {\n return undefined;\n }\n\n const currentValue = getValueAtPath(state.root, stepsToPath(state.steps));\n const segment = toPropertySegment(property, state.nav, currentValue);\n // Pass the value at the current position so a discriminated nav\n // can select its variant (see `resolveModelShape`).\n const step = navigateShape(state.nav, segment, currentValue);\n const nextArmPath = step.stamp?.armPath;\n const nextNav = step.next;\n\n return createPropertyProxy({\n ...state,\n steps: [...state.steps, { segment, armPath: nextArmPath }],\n nav: nextNav,\n });\n },\n\n set(_proxyTarget, property, value) {\n if (typeof property !== \"string\") {\n return false;\n }\n\n // A looped element (`parent.at(i)`) yields member proxies stamped with\n // an index. Writing through one would mutate the shared for-loop body,\n // which is not valid Bicep — `sym[i].prop = ...` cannot be expressed.\n if (state.index !== undefined) {\n throwLoopedElementWriteError();\n }\n\n setValueAtPath(\n state.root,\n [\n ...stepsToPath(state.steps),\n toPropertySegment(\n property,\n state.nav,\n getValueAtPath(state.root, stepsToPath(state.steps)),\n ),\n ],\n normalizeAssignedValue(value, state.resource),\n );\n\n return true;\n },\n });\n}\n\n// ---------------------------------------------------------------------------\n// Resource member proxy\n// ---------------------------------------------------------------------------\n\nfunction isNonEnumerableOwnProperty(target: object, property: string): boolean {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, property);\n return descriptor?.enumerable === false;\n}\n\nfunction hasOwnOrPrototypeProperty(target: object, property: string): boolean {\n let current: object | null = target;\n\n while (current !== null) {\n if (Object.prototype.hasOwnProperty.call(current, property)) {\n return true;\n }\n current = Object.getPrototypeOf(current);\n }\n\n return false;\n}\n\nexport function createResourceMemberProxy<TValue>(\n source: ResourceProxySource,\n path: readonly PropertySegment[],\n): Expression<TValue> & TValue {\n // Seed nav from the resource's shape (if any). Walk the existing\n // path, transitioning nav at each step so every segment is stamped\n // correctly. Pre-existing callers pass paths they built manually, so\n // we treat unknown navigations as passthrough.\n const rootShape = getResourceShape(source.resource);\n let nav: NavShape = rootShape;\n const steps: PropertyStep[] = [];\n for (const segment of path) {\n const step = navigateShape(nav, segment, getValueAtPath(source.root, stepsToPath(steps)));\n steps.push({ segment, armPath: step.stamp?.armPath });\n nav = step.next;\n }\n\n return createPropertyProxy({\n ...source,\n steps,\n nav,\n }) as Expression<TValue> & TValue;\n}\n\nfunction getResourceShape(resource: Resource): FlatModelShape | undefined {\n // Look up by (armType, apiVersion), letting the registry resolve\n // any discriminated variant from the instance's own state (typically\n // the hardcoded `name` literal each variant class sets).\n const state = (resource as unknown as { [RAW_RESOURCE_HANDLE]: Record<string, unknown> })[\n RAW_RESOURCE_HANDLE\n ];\n return getShape(resource.type, resource.apiVersion, state);\n}\n\n// ---------------------------------------------------------------------------\n// Resource-level proxy\n// ---------------------------------------------------------------------------\n\nexport function createResourceProxy<\n TType extends string,\n TResource extends Resource<TType> & object,\n>(resource: TResource): TResource {\n function getBackingResourceData(target: TResource): Record<string, unknown> {\n return Reflect.get(target, RAW_RESOURCE_HANDLE) as Record<string, unknown>;\n }\n\n const proxy = new Proxy(resource, {\n ownKeys(target) {\n return Array.from(\n new Set([\n ...Reflect.ownKeys(target),\n ...Reflect.ownKeys(getBackingResourceData(target)).filter(\n (key) => key !== RAW_RESOURCE_HANDLE,\n ),\n ]),\n );\n },\n\n getOwnPropertyDescriptor(target, property) {\n const targetDescriptor = Reflect.getOwnPropertyDescriptor(target, property);\n if (targetDescriptor !== undefined) {\n return targetDescriptor;\n }\n\n const backing = getBackingResourceData(target);\n if (Object.prototype.hasOwnProperty.call(backing, property)) {\n return { enumerable: true, configurable: true, writable: true };\n }\n\n return undefined;\n },\n\n get(target, property, receiver) {\n if (typeof property !== \"string\") {\n return Reflect.get(target, property, receiver);\n }\n\n if (property === \"then\") {\n return Reflect.get(target, property, receiver);\n }\n\n if (\n hasOwnOrPrototypeProperty(target, property) ||\n isNonEnumerableOwnProperty(target, property)\n ) {\n return Reflect.get(target, property, receiver);\n }\n\n const rootState = unwrapResourceHandle(proxy) as Record<string, unknown>;\n const rootShape = getResourceShape(target);\n const segment = toPropertySegment(property, rootShape, rootState);\n const step = navigateShape(rootShape, segment, rootState);\n const armPath = step.stamp?.armPath;\n const nav = step.next;\n\n return createPropertyProxy({\n resource: proxy,\n root: rootState,\n steps: [{ segment, armPath }],\n nav,\n });\n },\n\n set(target, property, value, receiver) {\n if (typeof property !== \"string\") {\n return Reflect.set(target, property, value, receiver);\n }\n\n if (\n hasOwnOrPrototypeProperty(target, property) ||\n isNonEnumerableOwnProperty(target, property)\n ) {\n return Reflect.set(target, property, value, receiver);\n }\n\n setValueAtPath(\n unwrapResourceHandle(proxy) as Record<string, unknown>,\n [toPropertySegment(property, getResourceShape(target), unwrapResourceHandle(proxy))],\n normalizeAssignedValue(value, proxy),\n );\n return true;\n },\n });\n\n return proxy;\n}\n\n// ---------------------------------------------------------------------------\n// Resource handle detection\n// ---------------------------------------------------------------------------\n\nfunction isResourceHandle(value: unknown): value is Resource {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[RESOURCE_BRAND] === true\n );\n}\n\nexport function unwrapResourceHandle<T extends ResourceDeclaration>(resource: T): T {\n const maybeRaw = Reflect.get(resource as object, RAW_RESOURCE_HANDLE);\n\n if (maybeRaw === undefined) {\n return resource;\n }\n\n return maybeRaw as T;\n}\n\n// ---------------------------------------------------------------------------\n// Indexed resource proxy — for `LoopedResource.at(i)` / `.current()`\n// ---------------------------------------------------------------------------\n\n/**\n * Returns a passthrough proxy over `resource` that carries an \"index\"\n * expression alongside the wrapped resource. Two purposes:\n *\n * 1. **Property reads** — ARM getters on the underlying `Resource` funnel\n * through `this.expr(...)`. The indexed proxy intercepts `expr` and\n * threads `resourceIndexExpression` into the member proxy so that reads\n * render as `sym[index].<path>` on the wire. Direct data-property reads\n * like `.type` / `.apiVersion` / `.condition` / `.existing` fall through\n * unchanged (they are authoring/type metadata, not ARM reads).\n *\n * 2. **Child parent context** — passing `parents.at(0)` as the first\n * argument to a child constructor must (a) let the child register into\n * the raw parent's tree, and (b) record the index so the serializer can\n * emit `parent: parentSym[i]`.\n * This proxy passes framework members (`children`, `deploymentContext`,\n * `_localDeploymentContext`, `hasDeploymentContext`, `.parent`, `.self`,\n * ...) through unchanged so the base `Resource` constructor's\n * interaction with `context` works exactly as it would with the raw\n * parent. `PROXY_INDEX_REF` and `INDEXED_PROXY_TARGET` expose the\n * index and the raw target to the base `Resource` constructor.\n *\n * The `index` can be a literal number, a literal string, or any expression\n * (typically a loop's `.index` symbolic value). It is unwrapped from any\n * `Expression<T>` proxy at construction time so downstream code stores a\n * primitive or an `ExpressionNode`, never an `Expression` proxy.\n *\n * **The indexed proxy is an ephemeral wrapper, not a tree node.** A fresh\n * proxy is minted per `.at(i)` call and is not stored in\n * any `parent.children` array; only the raw outer resource proxy\n * participates in the ProvisioningComponent tree. When a child is created with an\n * indexed proxy as `context`, `ProvisioningComponent`'s ctor writes\n * `this.parent = indexedProxy` briefly, but the base `Resource` ctor then overwrites\n * `this.parent` back to the raw parent (via `INDEXED_PROXY_TARGET`) so the\n * tree only ever references raw resource proxies. The indexed wrapper is\n * garbage-collectable once the child ctor returns; its sole job is to\n * carry the index through construction into `state.parentIndex`.\n */\n/**\n * Static type an indexed proxy exposes, derived from the declaration it\n * wraps. A `LoopedResource<T>` narrows to `T` — the concrete resource\n * type — so `parent.at(i)` exposes the full ARM and child-accessor\n * surface, resolved element-scoped at runtime. Any scalar {@link Resource}\n * yields itself.\n */\ntype IndexedProxyOf<D extends ResourceDeclaration> = D extends LoopedResource<infer T> ? T : D;\n\nfunction throwLoopedElementWriteError(): never {\n throw new Error(\n \"Cannot assign to a property of a looped resource declaration. Individual loop iterations cannot be mutated. Set the property in the declaration passed to `fromLoop(loop, ...)`\",\n );\n}\n\nexport function createIndexedResourceProxy<D extends ResourceDeclaration>(\n resource: D,\n index: ExpressionOrValue<number>,\n): IndexedProxyOf<D> {\n const resourceIndexExpression: ArrayAccessIndex = isExpression(index)\n ? unwrapExpression(index as Expression<number>)\n : index;\n const root = unwrapResourceHandle(resource) as unknown as Record<string, unknown>;\n\n // A looped declaration (`LoopedResource`) exposes the concrete subclass\n // ctor it wraps via `wrappedCtor`; its prototype carries the subclass's\n // ARM accessors (`.sku`, `.properties.*`, `.id`, `.name`). The `get` trap\n // below walks this prototype to resolve those reads rooted at\n // `sym[index]`. A scalar `Resource` has no `wrappedCtor` — it already\n // carries those accessors on its own prototype, so `subclassProto` stays\n // `undefined` and lookups resolve via the target's own chain.\n const subclassProto = (resource as { readonly wrappedCtor?: { readonly prototype: object } })\n .wrappedCtor?.prototype;\n\n return new Proxy(resource as object, {\n // Deliberately NO `getPrototypeOf` trap. Exposing the subclass\n // prototype here would make `proxy instanceof Subclass` report `true`,\n // invoking subclass getters/methods against the bare `LoopedResource`\n // target (which lacks the subclass's own instance slots). Property\n // reads and writes don't need it: the `get`/`set` traps below have\n // their own `subclassProto` fallbacks that run accessors with\n // `this = receiver` (the proxy) so `this.expr(...)` resolves against the\n // indexed element.\n get(target, property, receiver) {\n // Reveal-only symbols consulted by the base `Resource` constructor\n // and by serialization; both are marker keys with no runtime prototype\n // representation on plain resources.\n if (property === PROXY_INDEX_REF) return resourceIndexExpression;\n if (property === INDEXED_PROXY_TARGET) return target;\n\n // Intercept the single funnel for ARM reads. `this.expr(...path)` is\n // the getter body used by every generated ARM property (`.name`,\n // `.id`, `.properties.*`, etc.). Route it through\n // `createResourceMemberProxy` with our `resourceIndexExpression` so\n // the whole emitted expression roots at `sym[index]` instead of `sym`.\n if (property === \"expr\") {\n return function boundIndexedExpr(...path: readonly PropertySegment[]): unknown {\n return createResourceMemberProxy(\n {\n resource: target as Resource,\n root,\n index: resourceIndexExpression,\n },\n path,\n );\n };\n }\n\n // Block ARM property writes on a looped element. Every generated ARM\n // setter (`set sku`, `set properties`, `set name`, …) funnels through\n // `this.setProperty(...)`, so intercepting that single method turns\n // `parent.at(i).sku = ...` into a clear error.\n if (property === \"setProperty\") {\n return throwLoopedElementWriteError;\n }\n\n // First try the target's own chain. Two subtleties:\n //\n // 1. Getters (`.type`, `.apiVersion`, `.children`, `.parent`, …) must\n // run with `this = target` so they see the raw resource's own\n // properties — including class private fields (`#…`). Passing the\n // proxy as `receiver` would cause private-field access inside a\n // getter to fail because the proxy has no such slot.\n // 2. Subclass methods need `this = target` for the same reason — private\n // fields again — so\n // we return a bound wrapper. This means `ctx.method === ctx.method`\n // yields `false` between reads; acceptable trade-off given no\n // caller relies on function identity on an indexed proxy.\n if (property in target) {\n const value = Reflect.get(target, property, target);\n return typeof value === \"function\" ? value.bind(target) : value;\n }\n\n // Fall through to `subclassProto` for subclass-specific getters\n // (e.g. `.id`, `.name`, `.sku`) when wrapping a `LoopedResource`.\n // Getters must run with `this = receiver` (the proxy) so their\n // `this.expr(...)` calls hit our intercept above, yielding an\n // expression rooted at `sym[index]`. Methods bind to `target` to\n // stay consistent with the passthrough branch above.\n if (subclassProto !== undefined) {\n let proto: object | null = subclassProto;\n while (proto !== null && proto !== Object.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, property);\n if (descriptor !== undefined) {\n if (descriptor.get !== undefined) {\n return descriptor.get.call(receiver);\n }\n const value = descriptor.value;\n return typeof value === \"function\" ? value.bind(target) : value;\n }\n proto = Object.getPrototypeOf(proto);\n }\n }\n\n return undefined;\n },\n\n // Route writes to an ARM property setter with `this = receiver` (the\n // proxy), allowing its `setProperty` call to hit the rejection above.\n // Falls back to a plain write on the raw target.\n set(target, property, value, receiver) {\n if (subclassProto !== undefined) {\n let proto: object | null = subclassProto;\n while (proto !== null && proto !== Object.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, property);\n if (descriptor !== undefined) {\n if (descriptor.set !== undefined) {\n descriptor.set.call(receiver, value);\n return true;\n }\n break;\n }\n proto = Object.getPrototypeOf(proto);\n }\n }\n return Reflect.set(target, property, value, target);\n },\n }) as IndexedProxyOf<D>;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-query.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-query.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAsCD,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,GAAG,mBAAmB,EAAE,CAQ9F;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,qBAAqB,EAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,EACrD,YAAY,CAAC,EAAE,YAAY,GAC1B,QAAQ,EAAE,CAOZ;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,qBAAqB,EAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,EACrD,YAAY,CAAC,EAAE,YAAY,GAC1B,cAAc,CAAC,QAAQ,CAAC,EAAE,CAO5B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAC5C,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,GACrB,CAAC,GAAG,SAAS,CAKf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import { isResourceDeclaration, isLoopedResource, isLoopedResourceOf
|
|
3
|
+
import { isResourceDeclaration, isLoopedResource, isLoopedResourceOf } from "./resource-utils.js";
|
|
4
4
|
import { deref } from "./resource-proxy.js";
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
6
6
|
// Query engine (module-private)
|
|
@@ -61,9 +61,7 @@ export function getLoopedResources(root, typeOrOptions, maybeOptions) {
|
|
|
61
61
|
const options = (isCtor ? maybeOptions : typeOrOptions);
|
|
62
62
|
const recursive = options?.recursive ?? true;
|
|
63
63
|
const found = collectResourcesUnder(root, true, recursive);
|
|
64
|
-
return type === undefined
|
|
65
|
-
? found
|
|
66
|
-
: found.filter((r) => isLoopedResourceOf(r, type));
|
|
64
|
+
return type === undefined ? found : found.filter((r) => isLoopedResourceOf(r, type));
|
|
67
65
|
}
|
|
68
66
|
/**
|
|
69
67
|
* First scalar resource of `type` whose literal name equals `name`, or
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-query.js","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-query.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isResourceDeclaration, isLoopedResource, isLoopedResourceOf } from \"./resource-utils.js\";\nimport { deref } from \"./resource-proxy.js\";\nimport type { ProvisioningComponent } from \"../provisioning-component.js\";\nimport type { LoopedResource, Resource, ResourceDeclaration } from \"./resource.js\";\nimport type { ResourceCtor } from \"./resource-registry.js\";\n\n// ---------------------------------------------------------------------------\n// Query result types\n// ---------------------------------------------------------------------------\n\n/** Options accepted by the `Stack` resource queries. */\nexport interface QueryOptions {\n /**\n * Whether to walk the stack's entire subtree (default `true`) or only its\n * **direct children** (`false`).\n */\n readonly recursive?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Query engine (module-private)\n// ---------------------------------------------------------------------------\n// Imports only brand guards (`resource-utils`) — which do not import\n// `ProvisioningComponent`/`Stack` at runtime — plus types (type-only), so there is no\n// import cycle.\n\n/**\n * Collect the resource declarations beneath `root` (the root itself is never\n * included). `recursive` descends the whole subtree via `visit`; otherwise\n * only `root`'s direct children are considered. `wantLooped` selects the\n * looped declarations (`Ctor.fromLoop(...)`) vs. the scalar ones.\n */\nfunction collectResourcesUnder(\n root: ProvisioningComponent,\n wantLooped: boolean,\n recursive: boolean,\n): (Resource | LoopedResource<Resource>)[] {\n const result: (Resource | LoopedResource<Resource>)[] = [];\n const consider = (node: ProvisioningComponent): void => {\n if (!isResourceDeclaration(node)) return;\n const r = node.self as Resource | LoopedResource<Resource>;\n if (isLoopedResource(r) === wantLooped) result.push(r);\n };\n for (const child of root.children) {\n if (recursive) child.visit(consider);\n else consider(child);\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Engine entry points — thin, loosely-typed; `Stack` supplies the public\n// typed overloads and delegates here.\n// ---------------------------------------------------------------------------\n\n/** All scalar and looped declarations in tree order, including a resource root. */\nexport function collectResourceDeclarations(root: ProvisioningComponent): ResourceDeclaration[] {\n const result: ResourceDeclaration[] = [];\n root.visit((node) => {\n if (isResourceDeclaration(node)) {\n result.push(node.self);\n }\n });\n return result;\n}\n\n/** Scalar (un-looped) resource declarations. */\nexport function getResources(\n root: ProvisioningComponent,\n typeOrOptions?: ResourceCtor<Resource> | QueryOptions,\n maybeOptions?: QueryOptions,\n): Resource[] {\n const isCtor = typeof typeOrOptions === \"function\";\n const type = isCtor ? (typeOrOptions as ResourceCtor<Resource>) : undefined;\n const options = (isCtor ? maybeOptions : typeOrOptions) as QueryOptions | undefined;\n const recursive = options?.recursive ?? true;\n const found = collectResourcesUnder(root, false, recursive) as Resource[];\n return type === undefined ? found : found.filter((r) => r instanceof type);\n}\n\n/** Loop-expanded resource declarations (`Ctor.fromLoop(...)`). */\nexport function getLoopedResources(\n root: ProvisioningComponent,\n typeOrOptions?: ResourceCtor<Resource> | QueryOptions,\n maybeOptions?: QueryOptions,\n): LoopedResource<Resource>[] {\n const isCtor = typeof typeOrOptions === \"function\";\n const type = isCtor ? (typeOrOptions as ResourceCtor<Resource>) : undefined;\n const options = (isCtor ? maybeOptions : typeOrOptions) as QueryOptions | undefined;\n const recursive = options?.recursive ?? true;\n const found = collectResourcesUnder(root, true, recursive) as LoopedResource<Resource>[];\n return type === undefined ? found : found.filter((r) => isLoopedResourceOf(r, type));\n}\n\n/**\n * First scalar resource of `type` whose literal name equals `name`, or\n * `undefined`. `deref` resolves the name's expression proxy to its literal\n * (a `Resource`'s `name` is an `Expression`, so `r.name === name` is always\n * false without it).\n */\nexport function getResource<T extends Resource>(\n root: ProvisioningComponent,\n type: ResourceCtor<T>,\n name: string,\n options?: QueryOptions,\n): T | undefined {\n for (const r of getResources(root, type, options)) {\n if (deref((r as Resource).name) === name) return r as T;\n }\n return undefined;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-registry.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-registry.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAE7F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACxD,KAAK,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAEhG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,cAAc,GACvB,YAAY,GAAG,SAAS,CAK1B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import { ResourceTypeRegistry
|
|
3
|
+
import { ResourceTypeRegistry } from "./resource-type-registry.js";
|
|
4
4
|
const REGISTRY_SYMBOL = Symbol.for("@azure/provisioning-core.resourceRegistry");
|
|
5
5
|
function getRegistry() {
|
|
6
6
|
const host = globalThis;
|