@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-context.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/authored-context.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isResourceDeclaration } from \"../../../constructs/resource/resource-utils.js\";\nimport type { Stack } from \"../../../constructs/stack.js\";\nimport type { ProvisioningComponent } from \"../../../constructs/provisioning-component.js\";\nimport type { ResourceDeclaration } from \"../../../constructs/resource/resource.js\";\nimport {\n getArmParent,\n getResourceGroupAncestor,\n getResourceScope,\n} from \"../../../constructs/resource/resource-relationships.js\";\nimport type { DeclarationSymbolMap } from \"../../symbol-map.js\";\nimport { getScopeFunctionTarget } from \"../../../expression/utils.js\";\n\nexport interface AuthoredResourceContext {\n /** Nearest authored resource ancestor, including resource groups. */\n readonly authoredParent: string | undefined;\n /** Existing-explicit lookups affect placement; pass-through-explicit scopes only affect emitted bodies. */\n readonly scopeOrigin: \"existing-explicit\" | \"pass-through-explicit\" | \"resourceGroup\" | \"none\";\n}\n\n/** Distinguishes pass-through declaration data from supported existing lookups. */\nfunction usesPassThroughExplicitScope(resource: ResourceDeclaration): boolean {\n const scope = getResourceScope(resource);\n return (\n scope !== undefined &&\n (resource.existing !== true || getScopeFunctionTarget(scope) === undefined)\n );\n}\n\nexport function validateResourceAncestry(\n stack: Stack,\n resources: readonly ResourceDeclaration[],\n): void {\n const resourceSet = new Set(resources);\n for (const resource of resources) {\n const ancestors = new Set<ProvisioningComponent>([resource.self]);\n for (let parent = resource.parent; parent !== undefined; parent = parent.parent) {\n if (ancestors.has(parent.self)) {\n throw new Error(`Cyclic resource attachment in Stack \"${stack.name}\".`);\n }\n ancestors.add(parent.self);\n if (isResourceDeclaration(parent) && !resourceSet.has(parent.self)) {\n throw new Error(`Resource \"${resource.type}\" has a parent outside Stack \"${stack.name}\".`);\n }\n }\n }\n}\n\nexport function collectAuthoredResourceContexts(\n resources: readonly ResourceDeclaration[],\n symbols: DeclarationSymbolMap,\n): ReadonlyMap<string, AuthoredResourceContext> {\n const resourceContexts = new Map<string, AuthoredResourceContext>();\n for (const resource of resources) {\n const identifier = symbols.get(resource);\n if (identifier === undefined) {\n throw new Error(`Missing symbol for resource type \"${resource.type}\".`);\n }\n let authoredParent: string | undefined;\n for (let parent = resource.parent; parent !== undefined; parent = parent.parent) {\n if (!isResourceDeclaration(parent)) continue;\n authoredParent = symbols.get(parent.self);\n if (authoredParent === undefined) {\n throw new Error(`Missing authored parent symbol for resource \"${identifier}\".`);\n }\n break;\n }\n resourceContexts.set(identifier, {\n authoredParent,\n scopeOrigin: usesPassThroughExplicitScope(resource)\n ? \"pass-through-explicit\"\n : getResourceScope(resource) !== undefined\n ? \"existing-explicit\"\n : getArmParent(resource) === undefined && getResourceGroupAncestor(resource) !== undefined\n ? \"resourceGroup\"\n : \"none\",\n });\n }\n return resourceContexts;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bicep-namer.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/bicep-namer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAW9D,CAAC;AAuBH,qBAAa,UAAU;;gBAIT,GAAG,EAAE,QAAQ;IAczB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ5D,aAAa,CAAC,SAAS,EAAE,mBAAmB,GAAG,MAAM;IAIrD,UAAU,CACR,SAAS,EAAE,mBAAmB,EAC9B,aAAa,GAAE,MAAqC,GACnD,MAAM;CAGV"}
|
|
@@ -39,22 +39,14 @@ export class BicepNamer {
|
|
|
39
39
|
#usedNames;
|
|
40
40
|
#usedOutputNames = new Set();
|
|
41
41
|
constructor(ast) {
|
|
42
|
-
this.#usedNames = new Set([
|
|
43
|
-
|
|
44
|
-
...collectLoopBindings(ast),
|
|
45
|
-
]);
|
|
46
|
-
for (const declarations of [
|
|
47
|
-
ast.parameters,
|
|
48
|
-
ast.variables,
|
|
49
|
-
ast.resources,
|
|
50
|
-
ast.modules,
|
|
51
|
-
]) {
|
|
42
|
+
this.#usedNames = new Set([...RESOURCE_NAME_OVERRIDES.keys(), ...collectLoopBindings(ast)].map((name) => name.toLowerCase()));
|
|
43
|
+
for (const declarations of [ast.parameters, ast.variables, ast.resources, ast.modules]) {
|
|
52
44
|
for (const declaration of declarations.values()) {
|
|
53
|
-
this.#usedNames.add(declaration.bicepIdentifier);
|
|
45
|
+
this.#usedNames.add(declaration.bicepIdentifier.toLowerCase());
|
|
54
46
|
}
|
|
55
47
|
}
|
|
56
48
|
for (const name of ast.outputs.keys())
|
|
57
|
-
this.#usedOutputNames.add(name);
|
|
49
|
+
this.#usedOutputNames.add(name.toLowerCase());
|
|
58
50
|
}
|
|
59
51
|
moduleName(rootIdentifier, fileName) {
|
|
60
52
|
return createUniqueName(`${rootIdentifier}Module`, sanitizeIdentifier(fileName.replace(/\.bicep$/u, ""), "file"), this.#usedNames);
|
|
@@ -76,8 +68,7 @@ function buildRefParamName(reference) {
|
|
|
76
68
|
let modifiers = "";
|
|
77
69
|
let current = reference.expression;
|
|
78
70
|
let depth = 0;
|
|
79
|
-
while (current.kind === "property-access" ||
|
|
80
|
-
current.kind === "array-access") {
|
|
71
|
+
while (current.kind === "property-access" || current.kind === "array-access") {
|
|
81
72
|
if (current.nullish)
|
|
82
73
|
modifiers += `Safe${depth}`;
|
|
83
74
|
if (current.kind === "array-access" && current.fromEnd) {
|
|
@@ -89,21 +80,21 @@ function buildRefParamName(reference) {
|
|
|
89
80
|
return reference.identifier + segments.join("") + modifiers;
|
|
90
81
|
}
|
|
91
82
|
function createUniqueName(name, alias, usedNames) {
|
|
92
|
-
if (!usedNames.has(name)) {
|
|
93
|
-
usedNames.add(name);
|
|
83
|
+
if (!usedNames.has(name.toLowerCase())) {
|
|
84
|
+
usedNames.add(name.toLowerCase());
|
|
94
85
|
return name;
|
|
95
86
|
}
|
|
96
87
|
const stem = `${alias}${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
97
|
-
if (!usedNames.has(stem)) {
|
|
98
|
-
usedNames.add(stem);
|
|
88
|
+
if (!usedNames.has(stem.toLowerCase())) {
|
|
89
|
+
usedNames.add(stem.toLowerCase());
|
|
99
90
|
return stem;
|
|
100
91
|
}
|
|
101
92
|
let counter = 2;
|
|
102
|
-
while (usedNames.has(`${stem}${counter}
|
|
93
|
+
while (usedNames.has(`${stem}${counter}`.toLowerCase())) {
|
|
103
94
|
counter += 1;
|
|
104
95
|
}
|
|
105
96
|
const uniqueName = `${stem}${counter}`;
|
|
106
|
-
usedNames.add(uniqueName);
|
|
97
|
+
usedNames.add(uniqueName.toLowerCase());
|
|
107
98
|
return uniqueName;
|
|
108
99
|
}
|
|
109
100
|
//# sourceMappingURL=bicep-namer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bicep-namer.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/bicep-namer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { sanitizeIdentifier } from \"../../identifiers.js\";\nimport { walkDeclarationExpressions } from \"../../ast/expression-walker.js\";\nimport type { ExpressionReference } from \"../../ast/expression-rewriter.js\";\nimport type { BicepAst } from \"./file-preparation.js\";\n\n// Deliberately limited to built-in names likely to collide with resource symbols.\nexport const RESOURCE_NAME_OVERRIDES: ReadonlyMap<string, string> = new Map([\n [\"resourceGroup\", \"rg\"],\n [\"subscription\", \"subscriptionResource\"],\n [\"managementGroup\", \"managementGroupResource\"],\n [\"tenant\", \"tenantResource\"],\n [\"deployment\", \"deploymentResource\"],\n [\"environment\", \"environmentResource\"],\n [\"reference\", \"referenceResource\"],\n [\"guid\", \"guidResource\"],\n [\"format\", \"formatResource\"],\n [\"range\", \"rangeResource\"],\n]);\n\nfunction collectLoopBindings(ast: BicepAst): ReadonlySet<string> {\n const loopBindings = new Set<string>();\n for (const declaration of [\n ...ast.resources.values(),\n ...ast.parameters.values(),\n ...ast.variables.values(),\n ...ast.outputs.values(),\n ...ast.modules.values(),\n ]) {\n walkDeclarationExpressions(declaration, (node) => {\n if (node.kind === \"for-expression\") {\n loopBindings.add(node.itemVariable);\n if (node.indexVariable !== undefined) {\n loopBindings.add(node.indexVariable);\n }\n }\n });\n }\n return loopBindings;\n}\n\nexport class BicepNamer {\n readonly #usedNames: Set<string>;\n readonly #usedOutputNames = new Set<string>();\n\n constructor(ast: BicepAst) {\n this.#usedNames = new Set(\n [...RESOURCE_NAME_OVERRIDES.keys(), ...collectLoopBindings(ast)].map((name) =>\n name.toLowerCase(),\n ),\n );\n for (const declarations of [ast.parameters, ast.variables, ast.resources, ast.modules]) {\n for (const declaration of declarations.values()) {\n this.#usedNames.add(declaration.bicepIdentifier.toLowerCase());\n }\n }\n for (const name of ast.outputs.keys()) this.#usedOutputNames.add(name.toLowerCase());\n }\n\n moduleName(rootIdentifier: string, fileName: string): string {\n return createUniqueName(\n `${rootIdentifier}Module`,\n sanitizeIdentifier(fileName.replace(/\\.bicep$/u, \"\"), \"file\"),\n this.#usedNames,\n );\n }\n\n parameterName(reference: ExpressionReference): string {\n return createUniqueName(buildRefParamName(reference), reference.identifier, this.#usedNames);\n }\n\n outputName(\n reference: ExpressionReference,\n preferredName: string = buildRefParamName(reference),\n ): string {\n return createUniqueName(preferredName, reference.identifier, this.#usedOutputNames);\n }\n}\n\nfunction buildRefParamName(reference: ExpressionReference): string {\n const segments = reference.path.map((segment) => {\n if (typeof segment === \"number\") return String(segment);\n const name = sanitizeIdentifier(segment);\n return name.charAt(0).toUpperCase() + name.slice(1);\n });\n let modifiers = \"\";\n let current = reference.expression;\n let depth = 0;\n while (current.kind === \"property-access\" || current.kind === \"array-access\") {\n if (current.nullish) modifiers += `Safe${depth}`;\n if (current.kind === \"array-access\" && current.fromEnd) {\n modifiers += `FromEnd${depth}`;\n }\n current = current.base;\n depth++;\n }\n return reference.identifier + segments.join(\"\") + modifiers;\n}\n\nfunction createUniqueName(name: string, alias: string, usedNames: Set<string>): string {\n if (!usedNames.has(name.toLowerCase())) {\n usedNames.add(name.toLowerCase());\n return name;\n }\n\n const stem = `${alias}${name.charAt(0).toUpperCase()}${name.slice(1)}`;\n\n if (!usedNames.has(stem.toLowerCase())) {\n usedNames.add(stem.toLowerCase());\n return stem;\n }\n\n let counter = 2;\n while (usedNames.has(`${stem}${counter}`.toLowerCase())) {\n counter += 1;\n }\n\n const uniqueName = `${stem}${counter}`;\n\n usedNames.add(uniqueName.toLowerCase());\n return uniqueName;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-bicep-files.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/build-bicep-files.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAI1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAG/B,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAW9D;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,SAAS,EAAE,CAqBlE"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { collectResourceDeclarations } from "../../../constructs/resource/resource-query.js";
|
|
4
4
|
import { buildStackDeclarations } from "../../ast/declaration-builder.js";
|
|
5
5
|
import { createSymbolMap } from "../../symbol-map.js";
|
|
6
|
-
import { collectAuthoredResourceContexts, validateResourceAncestry
|
|
6
|
+
import { collectAuthoredResourceContexts, validateResourceAncestry } from "./authored-context.js";
|
|
7
7
|
import { planDeploymentFiles } from "./deployment-planning.js";
|
|
8
8
|
import { BicepNamer, RESOURCE_NAME_OVERRIDES } from "./bicep-namer.js";
|
|
9
9
|
import { prepareDeploymentFiles, } from "./file-preparation.js";
|
|
@@ -13,21 +13,11 @@ export function toInfraNode(file) {
|
|
|
13
13
|
return {
|
|
14
14
|
fileName: file.fileName,
|
|
15
15
|
targetScope: file.targetScope,
|
|
16
|
-
...(ast.resources.size === 0
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
...(ast.
|
|
20
|
-
|
|
21
|
-
: { parameters: Object.fromEntries(ast.parameters) }),
|
|
22
|
-
...(ast.variables.size === 0
|
|
23
|
-
? {}
|
|
24
|
-
: { variables: Object.fromEntries(ast.variables) }),
|
|
25
|
-
...(ast.outputs.size === 0
|
|
26
|
-
? {}
|
|
27
|
-
: { outputs: Object.fromEntries(ast.outputs) }),
|
|
28
|
-
...(ast.modules.size === 0
|
|
29
|
-
? {}
|
|
30
|
-
: { modules: Object.fromEntries(ast.modules) }),
|
|
16
|
+
...(ast.resources.size === 0 ? {} : { resources: Object.fromEntries(ast.resources) }),
|
|
17
|
+
...(ast.parameters.size === 0 ? {} : { parameters: Object.fromEntries(ast.parameters) }),
|
|
18
|
+
...(ast.variables.size === 0 ? {} : { variables: Object.fromEntries(ast.variables) }),
|
|
19
|
+
...(ast.outputs.size === 0 ? {} : { outputs: Object.fromEntries(ast.outputs) }),
|
|
20
|
+
...(ast.modules.size === 0 ? {} : { modules: Object.fromEntries(ast.modules) }),
|
|
31
21
|
};
|
|
32
22
|
}
|
|
33
23
|
/** Builds enriched declaration ASTs, then plans and wires deployment files. */
|
|
@@ -51,9 +41,6 @@ export function buildBicepFiles(stack) {
|
|
|
51
41
|
if (prepared.modules.length > 0) {
|
|
52
42
|
wireDeploymentFiles(stack.name, prepared);
|
|
53
43
|
}
|
|
54
|
-
return [
|
|
55
|
-
toInfraNode(prepared.entry),
|
|
56
|
-
...prepared.modules.map(({ file }) => toInfraNode(file)),
|
|
57
|
-
];
|
|
44
|
+
return [toInfraNode(prepared.entry), ...prepared.modules.map(({ file }) => toInfraNode(file))];
|
|
58
45
|
}
|
|
59
46
|
//# sourceMappingURL=build-bicep-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-bicep-files.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/build-bicep-files.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Stack } from \"../../../constructs/stack.js\";\nimport { collectResourceDeclarations } from \"../../../constructs/resource/resource-query.js\";\nimport { buildStackDeclarations } from \"../../ast/declaration-builder.js\";\nimport { createSymbolMap } from \"../../symbol-map.js\";\nimport type { InfraNode } from \"../../ast/index.js\";\nimport { collectAuthoredResourceContexts, validateResourceAncestry } from \"./authored-context.js\";\nimport { planDeploymentFiles } from \"./deployment-planning.js\";\nimport { BicepNamer, RESOURCE_NAME_OVERRIDES } from \"./bicep-namer.js\";\nimport {\n prepareDeploymentFiles,\n type BicepAst,\n type PreparedBicepFile,\n} from \"./file-preparation.js\";\nimport { wireDeploymentFiles } from \"./reference-wiring.js\";\n\nexport function toInfraNode(file: PreparedBicepFile): InfraNode {\n const { ast } = file;\n return {\n fileName: file.fileName,\n targetScope: file.targetScope,\n ...(ast.resources.size === 0 ? {} : { resources: Object.fromEntries(ast.resources) }),\n ...(ast.parameters.size === 0 ? {} : { parameters: Object.fromEntries(ast.parameters) }),\n ...(ast.variables.size === 0 ? {} : { variables: Object.fromEntries(ast.variables) }),\n ...(ast.outputs.size === 0 ? {} : { outputs: Object.fromEntries(ast.outputs) }),\n ...(ast.modules.size === 0 ? {} : { modules: Object.fromEntries(ast.modules) }),\n };\n}\n\n/** Builds enriched declaration ASTs, then plans and wires deployment files. */\nexport function buildBicepFiles(stack: Stack): readonly InfraNode[] {\n const resources = collectResourceDeclarations(stack);\n validateResourceAncestry(stack, resources);\n const symbols = createSymbolMap(resources, stack, RESOURCE_NAME_OVERRIDES);\n const declarations = buildStackDeclarations(stack, resources, symbols);\n const stackAst: BicepAst = {\n targetScope: stack.targetScope,\n resources: new Map(Object.entries(declarations.resources ?? {})),\n parameters: new Map(Object.entries(declarations.parameters ?? {})),\n variables: new Map(Object.entries(declarations.variables ?? {})),\n outputs: new Map(Object.entries(declarations.outputs ?? {})),\n modules: new Map(),\n };\n const namer = new BicepNamer(stackAst);\n const resourceContexts = collectAuthoredResourceContexts(resources, symbols);\n const layout = planDeploymentFiles(stackAst, resourceContexts);\n const prepared = prepareDeploymentFiles(stack.name, stackAst, resourceContexts, layout, namer);\n if (prepared.modules.length > 0) {\n wireDeploymentFiles(stack.name, prepared);\n }\n return [toInfraNode(prepared.entry), ...prepared.modules.map(({ file }) => toInfraNode(file))];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-planning.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/deployment-planning.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,uCAAuC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1F,QAAQ,CAAC,kCAAkC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClE;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAC7D,gBAAgB,CAmElB"}
|
package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-planning.js
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
import { ResourceGroup } from "../../../constructs/built-in-resources/resource-group.js";
|
|
4
4
|
import { getResourceBody } from "../../ast/resource-utils.js";
|
|
5
|
-
import { groupArmResourcesByRoot, getTargetScope
|
|
5
|
+
import { groupArmResourcesByRoot, getTargetScope } from "./deployment-resource-utils.js";
|
|
6
6
|
export function planDeploymentFiles(stackAst, authoredContexts) {
|
|
7
7
|
const entryPlan = {
|
|
8
8
|
boundary: undefined,
|
|
@@ -36,8 +36,7 @@ export function planDeploymentFiles(stackAst, authoredContexts) {
|
|
|
36
36
|
existingResourceToAuthoredResourceGroup.set(name, authoredResourceGroup);
|
|
37
37
|
for (let ancestor = name; ancestor !== undefined && ancestor !== authoredResourceGroup; ancestor = authoredContexts.get(ancestor).authoredParent) {
|
|
38
38
|
const origin = authoredContexts.get(ancestor).scopeOrigin;
|
|
39
|
-
if (origin === "existing-explicit" ||
|
|
40
|
-
origin === "pass-through-explicit") {
|
|
39
|
+
if (origin === "existing-explicit" || origin === "pass-through-explicit") {
|
|
41
40
|
existingResourcesWithExplicitScope.add(name);
|
|
42
41
|
break;
|
|
43
42
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-planning.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/deployment-planning.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ResourceGroup } from \"../../../constructs/built-in-resources/resource-group.js\";\nimport type { ExpressionNode, TargetScope } from \"../../ast/index.js\";\nimport { getResourceBody } from \"../../ast/resource-utils.js\";\nimport type { AuthoredResourceContext } from \"./authored-context.js\";\nimport { groupArmResourcesByRoot, getTargetScope } from \"./deployment-resource-utils.js\";\nimport type { BicepAst } from \"./file-preparation.js\";\n\nexport interface DeploymentFilePlan {\n readonly boundary: string | undefined;\n readonly resources: Set<string>;\n readonly authoredResourceGroup: string | undefined;\n readonly moduleScope: ExpressionNode | undefined;\n readonly targetScope: TargetScope;\n}\n\nexport interface DeploymentLayout {\n readonly entryPlan: DeploymentFilePlan;\n readonly deployments: readonly DeploymentFilePlan[];\n readonly pureExistingResources: ReadonlySet<string>;\n readonly existingResourceToAuthoredResourceGroup: ReadonlyMap<string, string | undefined>;\n readonly existingResourcesWithExplicitScope: ReadonlySet<string>;\n}\n\nexport function planDeploymentFiles(\n stackAst: BicepAst,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n): DeploymentLayout {\n const entryPlan: DeploymentFilePlan = {\n boundary: undefined,\n resources: new Set(),\n authoredResourceGroup: undefined,\n moduleScope: undefined,\n targetScope: stackAst.targetScope,\n };\n const armResourcesByRoot = groupArmResourcesByRoot(stackAst.resources, authoredContexts);\n\n const deployments: DeploymentFilePlan[] = [];\n const pureExistingResources = new Set<string>();\n const existingResourceToAuthoredResourceGroup = new Map<string, string | undefined>();\n const existingResourcesWithExplicitScope = new Set<string>();\n for (const [root, treeResources] of armResourcesByRoot) {\n const resource = stackAst.resources.get(root)!;\n const rootContext = authoredContexts.get(root)!;\n const authoredResourceGroup = rootContext.authoredParent;\n const moduleScope =\n rootContext.scopeOrigin === \"pass-through-explicit\"\n ? authoredResourceGroup === undefined\n ? undefined\n : { kind: \"identifier\" as const, id: authoredResourceGroup }\n : getResourceBody(resource.value).value.scope;\n if (\n resource.type === ResourceGroup.resourceType ||\n (stackAst.targetScope === \"subscription\" && moduleScope === undefined)\n ) {\n for (const name of treeResources) entryPlan.resources.add(name);\n } else if ([...treeResources].every((name) => stackAst.resources.get(name)!.existing)) {\n for (const name of treeResources) {\n pureExistingResources.add(name);\n existingResourceToAuthoredResourceGroup.set(name, authoredResourceGroup);\n for (\n let ancestor: string | undefined = name;\n ancestor !== undefined && ancestor !== authoredResourceGroup;\n ancestor = authoredContexts.get(ancestor)!.authoredParent\n ) {\n const origin = authoredContexts.get(ancestor)!.scopeOrigin;\n if (origin === \"existing-explicit\" || origin === \"pass-through-explicit\") {\n existingResourcesWithExplicitScope.add(name);\n break;\n }\n }\n }\n } else {\n deployments.push({\n boundary: root,\n resources: treeResources,\n authoredResourceGroup,\n moduleScope,\n targetScope:\n rootContext.scopeOrigin === \"resourceGroup\" ||\n (rootContext.scopeOrigin === \"pass-through-explicit\" &&\n authoredResourceGroup !== undefined)\n ? \"resourceGroup\"\n : getTargetScope(moduleScope, stackAst.targetScope),\n });\n }\n }\n return {\n entryPlan,\n deployments,\n pureExistingResources,\n existingResourceToAuthoredResourceGroup,\n existingResourcesWithExplicitScope,\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-resource-utils.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/deployment-resource-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG/F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAC7D,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAsB1B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAC7D,OAAO,CAGT;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,QAAQ,EAAE,WAAW,GACpB,WAAW,CAUb;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAyBjE"}
|
package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-resource-utils.js
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
import { ResourceGroup } from "../../../constructs/built-in-resources/resource-group.js";
|
|
4
|
-
import { getResourceArmParentIdentifier, updateResourceBody
|
|
4
|
+
import { getResourceArmParentIdentifier, updateResourceBody } from "../../ast/resource-utils.js";
|
|
5
5
|
import { getScopeFunctionTarget } from "../../../expression/utils.js";
|
|
6
6
|
export function groupArmResourcesByRoot(resources, authoredContexts) {
|
|
7
7
|
const armRootByResource = new Map();
|
|
@@ -10,8 +10,7 @@ export function groupArmResourcesByRoot(resources, authoredContexts) {
|
|
|
10
10
|
if (cached !== undefined)
|
|
11
11
|
return cached;
|
|
12
12
|
const parent = authoredContexts.get(name).authoredParent;
|
|
13
|
-
const root = parent === undefined ||
|
|
14
|
-
resources.get(parent).type === ResourceGroup.resourceType
|
|
13
|
+
const root = parent === undefined || resources.get(parent).type === ResourceGroup.resourceType
|
|
15
14
|
? name
|
|
16
15
|
: getArmTreeRoot(parent);
|
|
17
16
|
armRootByResource.set(name, root);
|
|
@@ -28,8 +27,7 @@ export function groupArmResourcesByRoot(resources, authoredContexts) {
|
|
|
28
27
|
}
|
|
29
28
|
export function hasArmParent(name, resources, authoredContexts) {
|
|
30
29
|
const parent = authoredContexts.get(name).authoredParent;
|
|
31
|
-
return
|
|
32
|
-
resources.get(parent).type !== ResourceGroup.resourceType);
|
|
30
|
+
return parent !== undefined && resources.get(parent).type !== ResourceGroup.resourceType;
|
|
33
31
|
}
|
|
34
32
|
export function getTargetScope(scope, fallback) {
|
|
35
33
|
if (scope === undefined)
|
|
@@ -47,14 +45,12 @@ export function normalizeExtensionScopes(stackAst) {
|
|
|
47
45
|
// JSON builders preserve ARM parent metadata; Bicep uses scope for extensions.
|
|
48
46
|
for (const [name, resource] of stackAst.resources) {
|
|
49
47
|
const armParentIdentifier = getResourceArmParentIdentifier(resource);
|
|
50
|
-
const armParent = armParentIdentifier === undefined
|
|
51
|
-
? undefined
|
|
52
|
-
: stackAst.resources.get(armParentIdentifier);
|
|
48
|
+
const armParent = armParentIdentifier === undefined ? undefined : stackAst.resources.get(armParentIdentifier);
|
|
53
49
|
if (armParentIdentifier !== undefined && armParent === undefined) {
|
|
54
50
|
throw new Error(`Missing ARM parent "${armParentIdentifier}" for resource "${name}".`);
|
|
55
51
|
}
|
|
56
52
|
if (armParent !== undefined &&
|
|
57
|
-
!resource.type.startsWith(`${armParent.type}/`)) {
|
|
53
|
+
!resource.type.toLowerCase().startsWith(`${armParent.type.toLowerCase()}/`)) {
|
|
58
54
|
stackAst.resources.set(name, {
|
|
59
55
|
...resource,
|
|
60
56
|
value: updateResourceBody(resource.value, (body) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-resource-utils.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/deployment-resource-utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ResourceGroup } from \"../../../constructs/built-in-resources/resource-group.js\";\nimport type { ExpressionNode, ResourceDeclarationNode, TargetScope } from \"../../ast/index.js\";\nimport { getResourceArmParentIdentifier, updateResourceBody } from \"../../ast/resource-utils.js\";\nimport { getScopeFunctionTarget } from \"../../../expression/utils.js\";\nimport type { AuthoredResourceContext } from \"./authored-context.js\";\nimport type { BicepAst } from \"./file-preparation.js\";\n\nexport function groupArmResourcesByRoot(\n resources: ReadonlyMap<string, ResourceDeclarationNode>,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n): Map<string, Set<string>> {\n const armRootByResource = new Map<string, string>();\n function getArmTreeRoot(name: string): string {\n const cached = armRootByResource.get(name);\n if (cached !== undefined) return cached;\n const parent = authoredContexts.get(name)!.authoredParent;\n const root =\n parent === undefined || resources.get(parent)!.type === ResourceGroup.resourceType\n ? name\n : getArmTreeRoot(parent);\n armRootByResource.set(name, root);\n return root;\n }\n\n const armResourcesByRoot = new Map<string, Set<string>>();\n for (const name of resources.keys()) {\n const root = getArmTreeRoot(name);\n const treeResources = armResourcesByRoot.get(root) ?? new Set<string>();\n treeResources.add(name);\n armResourcesByRoot.set(root, treeResources);\n }\n return armResourcesByRoot;\n}\n\nexport function hasArmParent(\n name: string,\n resources: ReadonlyMap<string, ResourceDeclarationNode>,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n): boolean {\n const parent = authoredContexts.get(name)!.authoredParent;\n return parent !== undefined && resources.get(parent)!.type !== ResourceGroup.resourceType;\n}\n\nexport function getTargetScope(\n scope: ExpressionNode | undefined,\n fallback: TargetScope,\n): TargetScope {\n if (scope === undefined) return fallback;\n if (scope.kind !== \"function-call\" || typeof scope.target !== \"string\") {\n throw new Error(\"Unsupported authored deployment scope expression.\");\n }\n const target = getScopeFunctionTarget(scope);\n if (target !== undefined) {\n return target;\n }\n throw new Error(`Unsupported deployment scope function \"${scope.target}\".`);\n}\n\nexport function normalizeExtensionScopes(stackAst: BicepAst): void {\n // JSON builders preserve ARM parent metadata; Bicep uses scope for extensions.\n for (const [name, resource] of stackAst.resources) {\n const armParentIdentifier = getResourceArmParentIdentifier(resource);\n const armParent =\n armParentIdentifier === undefined ? undefined : stackAst.resources.get(armParentIdentifier);\n if (armParentIdentifier !== undefined && armParent === undefined) {\n throw new Error(`Missing ARM parent \"${armParentIdentifier}\" for resource \"${name}\".`);\n }\n if (\n armParent !== undefined &&\n !resource.type.toLowerCase().startsWith(`${armParent.type.toLowerCase()}/`)\n ) {\n stackAst.resources.set(name, {\n ...resource,\n value: updateResourceBody(resource.value, (body) => {\n const { parent: target, ...rest } = body.value;\n if (target === undefined) {\n throw new Error(`Missing extension target for \"${name}\".`);\n }\n return { ...body, value: { scope: target, ...rest } };\n }),\n });\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-dependencies.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-dependencies.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,GACpD,IAAI,CA4BN"}
|
|
@@ -8,18 +8,13 @@ export function resolveFileDependencies(ast, stackAst, lookups) {
|
|
|
8
8
|
...lookups,
|
|
9
9
|
...ast.resources,
|
|
10
10
|
]);
|
|
11
|
-
const references = collectDependenciesForDeclaration([
|
|
12
|
-
...ast.resources.values(),
|
|
13
|
-
...ast.outputs.values(),
|
|
14
|
-
...ast.modules.values(),
|
|
15
|
-
], { recursive: true, declarations });
|
|
11
|
+
const references = collectDependenciesForDeclaration([...ast.resources.values(), ...ast.outputs.values(), ...ast.modules.values()], { recursive: true, declarations });
|
|
16
12
|
const selectedResources = new Map([...lookups, ...ast.resources]);
|
|
17
13
|
const includedResources = new Set(ast.resources.keys());
|
|
18
14
|
ast.resources.clear();
|
|
19
15
|
for (const name of stackAst.resources.keys()) {
|
|
20
16
|
const resource = selectedResources.get(name);
|
|
21
|
-
if (resource !== undefined &&
|
|
22
|
-
(includedResources.has(name) || references.has(name))) {
|
|
17
|
+
if (resource !== undefined && (includedResources.has(name) || references.has(name))) {
|
|
23
18
|
ast.resources.set(name, resource);
|
|
24
19
|
}
|
|
25
20
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-dependencies.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-dependencies.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iCAAiC,EAAE,MAAM,uCAAuC,CAAC;AAI1F,MAAM,UAAU,uBAAuB,CACrC,GAAa,EACb,QAAkB,EAClB,OAAqD;IAErD,MAAM,YAAY,GAAG,IAAI,GAAG,CAA0B;QACpD,GAAG,QAAQ,CAAC,SAAS;QACrB,GAAG,QAAQ,CAAC,UAAU;QACtB,GAAG,OAAO;QACV,GAAG,GAAG,CAAC,SAAS;KACjB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,iCAAiC,CAClD,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAC7E,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAClC,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACpD,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { collectDependenciesForDeclaration } from \"../../ast/declaration-dependencies.js\";\nimport type { DeclarationNode, ResourceDeclarationNode } from \"../../ast/index.js\";\nimport type { BicepAst } from \"./file-preparation.js\";\n\nexport function resolveFileDependencies(\n ast: BicepAst,\n stackAst: BicepAst,\n lookups: ReadonlyMap<string, ResourceDeclarationNode>,\n): void {\n const declarations = new Map<string, DeclarationNode>([\n ...stackAst.variables,\n ...stackAst.parameters,\n ...lookups,\n ...ast.resources,\n ]);\n const references = collectDependenciesForDeclaration(\n [...ast.resources.values(), ...ast.outputs.values(), ...ast.modules.values()],\n { recursive: true, declarations },\n );\n const selectedResources = new Map([...lookups, ...ast.resources]);\n const includedResources = new Set(ast.resources.keys());\n ast.resources.clear();\n for (const name of stackAst.resources.keys()) {\n const resource = selectedResources.get(name);\n if (resource !== undefined && (includedResources.has(name) || references.has(name))) {\n ast.resources.set(name, resource);\n }\n }\n ast.variables.clear();\n for (const [name, variable] of stackAst.variables) {\n if (references.has(name)) ast.variables.set(name, variable);\n }\n ast.parameters.clear();\n for (const [name, parameter] of stackAst.parameters) {\n if (references.has(name)) ast.parameters.set(name, parameter);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-paths.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-paths.ts"],"names":[],"mappings":"AAsBA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAmBnE"}
|
|
@@ -41,8 +41,6 @@ export function relativeImportPath(from, to) {
|
|
|
41
41
|
...source.segments.slice(commonSegments).map(() => ".."),
|
|
42
42
|
...target.segments.slice(commonSegments),
|
|
43
43
|
].join("/");
|
|
44
|
-
return relative === ".." || relative.startsWith("../")
|
|
45
|
-
? relative
|
|
46
|
-
: `./${relative}`;
|
|
44
|
+
return relative === ".." || relative.startsWith("../") ? relative : `./${relative}`;
|
|
47
45
|
}
|
|
48
46
|
//# sourceMappingURL=file-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-paths.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-paths.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG;YAAE,SAAS;QAChD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,QAAQ,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC;iBAAM,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,QAAgB;IAC9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,CACtC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CACzD,CAAC;IACF,OAAO,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,EAAU;IACzD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,WAAW,IAAI,gCAAgC,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,OACE,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;QACvC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EACnE,CAAC;QACD,cAAc,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACxD,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;KACzC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;AACtF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nfunction parseFilePath(path: string): { root: string; segments: string[] } {\n const normalized = path.replace(/\\\\/g, \"/\");\n const root = normalized.match(/^(?:[A-Za-z]:)?\\//)?.[0] ?? \"\";\n const segments: string[] = [];\n for (const segment of normalized.slice(root.length).split(\"/\")) {\n if (segment === \"\" || segment === \".\") continue;\n if (segment === \"..\") {\n if (segments.length > 0 && segments.at(-1) !== \"..\") {\n segments.pop();\n } else if (root === \"\") {\n segments.push(segment);\n }\n } else {\n segments.push(segment);\n }\n }\n return { root, segments };\n}\n\nexport function joinFilePath(directory: string, fileName: string): string {\n const { root, segments } = parseFilePath(\n directory === \"\" ? fileName : `${directory}/${fileName}`,\n );\n return root + segments.join(\"/\");\n}\n\nexport function relativeImportPath(from: string, to: string): string {\n const source = parseFilePath(from);\n const target = parseFilePath(to);\n if (source.root !== target.root) {\n throw new Error(`Cannot reference file \"${to}\" from \"${from}\" across different path roots.`);\n }\n source.segments.pop();\n let commonSegments = 0;\n while (\n commonSegments < source.segments.length &&\n source.segments[commonSegments] === target.segments[commonSegments]\n ) {\n commonSegments++;\n }\n const relative = [\n ...source.segments.slice(commonSegments).map(() => \"..\"),\n ...target.segments.slice(commonSegments),\n ].join(\"/\");\n return relative === \"..\" || relative.startsWith(\"../\") ? relative : `./${relative}`;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-preparation.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-preparation.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIrF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACzD,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC3D,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,+BAA+B,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACxF;AA4FD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAC9D,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU,GACrB,uBAAuB,CAmHzB"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import {} from "../../ast/index.js";
|
|
4
3
|
import { removeResourceScope } from "../../ast/resource-utils.js";
|
|
5
|
-
import { hasArmParent, normalizeExtensionScopes
|
|
4
|
+
import { hasArmParent, normalizeExtensionScopes } from "./deployment-resource-utils.js";
|
|
6
5
|
import { BicepNamer } from "./bicep-namer.js";
|
|
7
6
|
import { resolveFileDependencies } from "./file-dependencies.js";
|
|
8
7
|
import { joinFilePath } from "./file-paths.js";
|
|
@@ -43,8 +42,7 @@ function getExistingResourceCandidatesForPlan(plan, stackAst, authoredContexts,
|
|
|
43
42
|
if (plan !== entryPlan) {
|
|
44
43
|
let passThroughExplicitScope = false;
|
|
45
44
|
for (let ancestor = name; ancestor !== undefined; ancestor = authoredContexts.get(ancestor).authoredParent) {
|
|
46
|
-
if (authoredContexts.get(ancestor).scopeOrigin ===
|
|
47
|
-
"pass-through-explicit") {
|
|
45
|
+
if (authoredContexts.get(ancestor).scopeOrigin === "pass-through-explicit") {
|
|
48
46
|
passThroughExplicitScope = true;
|
|
49
47
|
break;
|
|
50
48
|
}
|
|
@@ -54,17 +52,13 @@ function getExistingResourceCandidatesForPlan(plan, stackAst, authoredContexts,
|
|
|
54
52
|
}
|
|
55
53
|
// Do not relocate relative lookups across authored deployment boundaries.
|
|
56
54
|
if (plan !== entryPlan &&
|
|
57
|
-
(existingResourceToAuthoredResourceGroup.get(name) !==
|
|
58
|
-
plan.authoredResourceGroup ||
|
|
55
|
+
(existingResourceToAuthoredResourceGroup.get(name) !== plan.authoredResourceGroup ||
|
|
59
56
|
(plan.boundary !== undefined &&
|
|
60
|
-
authoredContexts.get(plan.boundary).scopeOrigin ===
|
|
61
|
-
|
|
62
|
-
(plan.authoredResourceGroup === undefined &&
|
|
63
|
-
plan.moduleScope !== undefined) ||
|
|
57
|
+
authoredContexts.get(plan.boundary).scopeOrigin === "existing-explicit") ||
|
|
58
|
+
(plan.authoredResourceGroup === undefined && plan.moduleScope !== undefined) ||
|
|
64
59
|
(existingResourcesWithExplicitScope.has(name) &&
|
|
65
60
|
plan.authoredResourceGroup !== undefined &&
|
|
66
|
-
authoredContexts.get(plan.authoredResourceGroup).scopeOrigin ===
|
|
67
|
-
"existing-explicit"))) {
|
|
61
|
+
authoredContexts.get(plan.authoredResourceGroup).scopeOrigin === "existing-explicit"))) {
|
|
68
62
|
continue;
|
|
69
63
|
}
|
|
70
64
|
let node = resource;
|
|
@@ -95,8 +89,7 @@ export function prepareDeploymentFiles(stackName, stackAst, authoredContexts, la
|
|
|
95
89
|
};
|
|
96
90
|
}
|
|
97
91
|
if (entryResources.size === 0 &&
|
|
98
|
-
deployments.every((plan) => plan.moduleScope === undefined &&
|
|
99
|
-
plan.targetScope === stackAst.targetScope)) {
|
|
92
|
+
deployments.every((plan) => plan.moduleScope === undefined && plan.targetScope === stackAst.targetScope)) {
|
|
100
93
|
const firstTree = deployments[0];
|
|
101
94
|
const mergedResources = new Set(deployments.flatMap((plan) => [...plan.resources]));
|
|
102
95
|
const entry = createFile(resourceFileName(stackName, firstTree.boundary), stackAst.targetScope, mergedResources, stackAst, true);
|
|
@@ -117,8 +110,7 @@ export function prepareDeploymentFiles(stackName, stackAst, authoredContexts, la
|
|
|
117
110
|
if (authoredContexts.get(name).scopeOrigin === "pass-through-explicit") {
|
|
118
111
|
continue;
|
|
119
112
|
}
|
|
120
|
-
if (name !== plan.boundary &&
|
|
121
|
-
hasArmParent(name, stackAst.resources, authoredContexts)) {
|
|
113
|
+
if (name !== plan.boundary && hasArmParent(name, stackAst.resources, authoredContexts)) {
|
|
122
114
|
continue;
|
|
123
115
|
}
|
|
124
116
|
const node = file.ast.resources.get(name);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-preparation.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-preparation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type ExpressionNode,\n type ModuleDeclarationNode,\n type OutputDeclarationNode,\n type ParameterDeclarationNode,\n type ResourceDeclarationNode,\n type TargetScope,\n type VariableDeclarationNode,\n} from \"../../ast/index.js\";\nimport { removeResourceScope } from \"../../ast/resource-utils.js\";\nimport type { AuthoredResourceContext } from \"./authored-context.js\";\nimport { hasArmParent, normalizeExtensionScopes } from \"./deployment-resource-utils.js\";\nimport { BicepNamer } from \"./bicep-namer.js\";\nimport type { DeploymentFilePlan, DeploymentLayout } from \"./deployment-planning.js\";\nimport { resolveFileDependencies } from \"./file-dependencies.js\";\nimport { joinFilePath } from \"./file-paths.js\";\n\nexport interface BicepAst {\n readonly targetScope: TargetScope;\n readonly resources: Map<string, ResourceDeclarationNode>;\n readonly parameters: Map<string, ParameterDeclarationNode>;\n readonly variables: Map<string, VariableDeclarationNode>;\n readonly outputs: Map<string, OutputDeclarationNode>;\n readonly modules: Map<string, ModuleDeclarationNode>;\n}\n\nexport interface PreparedBicepFile {\n readonly fileName: string;\n readonly targetScope: TargetScope;\n readonly ast: BicepAst;\n}\n\nexport interface PreparedModule {\n readonly file: PreparedBicepFile;\n readonly assignedResources: ReadonlySet<string>;\n readonly moduleScope: ExpressionNode | undefined;\n readonly moduleName: string;\n readonly namer: BicepNamer;\n readonly outputNames: Map<string, string>;\n}\n\nexport interface PreparedDeploymentFiles {\n readonly stackAst: BicepAst;\n readonly entry: PreparedBicepFile;\n readonly entryAssignedResources: ReadonlySet<string>;\n readonly modules: readonly PreparedModule[];\n readonly entryExistingResourceCandidates: ReadonlyMap<string, ResourceDeclarationNode>;\n}\n\nfunction createFile(\n fileName: string,\n targetScope: TargetScope,\n selectedResources: ReadonlySet<string>,\n stackAst: BicepAst,\n includeOutputs: boolean,\n): PreparedBicepFile {\n const ast: BicepAst = {\n targetScope,\n resources: new Map(),\n parameters: new Map(),\n variables: new Map(),\n modules: new Map(),\n outputs: new Map(includeOutputs ? stackAst.outputs : []),\n };\n for (const [name, resource] of stackAst.resources) {\n if (selectedResources.has(name)) ast.resources.set(name, resource);\n }\n return { fileName, targetScope, ast };\n}\n\nfunction resourceFileName(stackName: string, name: string): string {\n return joinFilePath(stackName, `${name}.bicep`);\n}\n\n/**\n * Candidate rules:\n * - Only pure existing resources, without deployment-file ownership.\n * - Entry: all pure existing resources.\n * - Other files: same authored RG or inherited Stack scope, with no explicit root scope.\n * - Do not copy existing references with explicit scope (own or inherited) into\n * modules for explicitly scoped authored RGs; relative scope expressions may change meaning.\n *\n * Dependency selection includes only the candidates actually needed.\n */\nfunction getExistingResourceCandidatesForPlan(\n plan: DeploymentFilePlan,\n stackAst: BicepAst,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n layout: DeploymentLayout,\n): Map<string, ResourceDeclarationNode> {\n const {\n entryPlan,\n pureExistingResources,\n existingResourceToAuthoredResourceGroup,\n existingResourcesWithExplicitScope,\n } = layout;\n const result = new Map<string, ResourceDeclarationNode>();\n for (const [name, resource] of stackAst.resources) {\n if (!pureExistingResources.has(name)) continue;\n if (plan !== entryPlan) {\n let passThroughExplicitScope = false;\n for (\n let ancestor: string | undefined = name;\n ancestor !== undefined;\n ancestor = authoredContexts.get(ancestor)!.authoredParent\n ) {\n if (authoredContexts.get(ancestor)!.scopeOrigin === \"pass-through-explicit\") {\n passThroughExplicitScope = true;\n break;\n }\n }\n if (passThroughExplicitScope) continue;\n }\n // Do not relocate relative lookups across authored deployment boundaries.\n if (\n plan !== entryPlan &&\n (existingResourceToAuthoredResourceGroup.get(name) !== plan.authoredResourceGroup ||\n (plan.boundary !== undefined &&\n authoredContexts.get(plan.boundary)!.scopeOrigin === \"existing-explicit\") ||\n (plan.authoredResourceGroup === undefined && plan.moduleScope !== undefined) ||\n (existingResourcesWithExplicitScope.has(name) &&\n plan.authoredResourceGroup !== undefined &&\n authoredContexts.get(plan.authoredResourceGroup)!.scopeOrigin === \"existing-explicit\"))\n ) {\n continue;\n }\n let node = resource;\n if (\n plan !== entryPlan &&\n !existingResourcesWithExplicitScope.has(name) &&\n !hasArmParent(name, stackAst.resources, authoredContexts)\n ) {\n node = removeResourceScope(node);\n }\n result.set(name, node);\n }\n return result;\n}\n\nexport function prepareDeploymentFiles(\n stackName: string,\n stackAst: BicepAst,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n layout: DeploymentLayout,\n stackNamer: BicepNamer,\n): PreparedDeploymentFiles {\n const { entryPlan, deployments, pureExistingResources } = layout;\n const entryResources = entryPlan.resources;\n normalizeExtensionScopes(stackAst);\n\n if (deployments.length === 0) {\n const selectedResources = entryResources.size === 0 ? pureExistingResources : entryResources;\n const entry = createFile(\n `${stackName}.bicep`,\n stackAst.targetScope,\n selectedResources,\n stackAst,\n true,\n );\n const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(\n entryPlan,\n stackAst,\n authoredContexts,\n layout,\n );\n resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);\n return {\n stackAst,\n entry,\n entryAssignedResources: new Set(entryResources),\n modules: [],\n entryExistingResourceCandidates,\n };\n }\n\n if (\n entryResources.size === 0 &&\n deployments.every(\n (plan) => plan.moduleScope === undefined && plan.targetScope === stackAst.targetScope,\n )\n ) {\n const firstTree = deployments[0]!;\n const mergedResources = new Set(deployments.flatMap((plan) => [...plan.resources]));\n const entry = createFile(\n resourceFileName(stackName, firstTree.boundary!),\n stackAst.targetScope,\n mergedResources,\n stackAst,\n true,\n );\n const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(\n firstTree,\n stackAst,\n authoredContexts,\n layout,\n );\n resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);\n return {\n stackAst,\n entry,\n entryAssignedResources: mergedResources,\n modules: [],\n entryExistingResourceCandidates,\n };\n }\n\n const modules = deployments.map((plan): PreparedModule => {\n const boundaryIdentifier = plan.boundary!;\n const file = createFile(\n resourceFileName(stackName, boundaryIdentifier),\n plan.targetScope,\n plan.resources,\n stackAst,\n false,\n );\n for (const name of plan.resources) {\n if (authoredContexts.get(name)!.scopeOrigin === \"pass-through-explicit\") {\n continue;\n }\n if (name !== plan.boundary && hasArmParent(name, stackAst.resources, authoredContexts)) {\n continue;\n }\n const node = file.ast.resources.get(name)!;\n file.ast.resources.set(name, removeResourceScope(node));\n }\n resolveFileDependencies(\n file.ast,\n stackAst,\n getExistingResourceCandidatesForPlan(plan, stackAst, authoredContexts, layout),\n );\n return {\n file,\n assignedResources: new Set(plan.resources),\n moduleScope: plan.moduleScope,\n moduleName: stackNamer.moduleName(boundaryIdentifier, file.fileName),\n namer: new BicepNamer(file.ast),\n outputNames: new Map<string, string>(),\n };\n });\n const entry = createFile(\n `${stackName}.bicep`,\n stackAst.targetScope,\n entryResources,\n stackAst,\n true,\n );\n const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(\n entryPlan,\n stackAst,\n authoredContexts,\n layout,\n );\n resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);\n return {\n stackAst,\n entry,\n entryAssignedResources: new Set(entryResources),\n modules,\n entryExistingResourceCandidates,\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-wiring.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/reference-wiring.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAY,uBAAuB,EAAkB,MAAM,uBAAuB,CAAC;AAyD/F,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAoL9F"}
|
|
@@ -5,7 +5,7 @@ import { moduleOutputExpression } from "../../ast/expression-builder.js";
|
|
|
5
5
|
import { rewriteDeclarationExpressions, rewriteExpressionReferences, } from "../../ast/expression-rewriter.js";
|
|
6
6
|
import { resolveFileDependencies } from "./file-dependencies.js";
|
|
7
7
|
import { relativeImportPath } from "./file-paths.js";
|
|
8
|
-
import { getResourceBody, updateResourceBody
|
|
8
|
+
import { getResourceBody, updateResourceBody } from "../../ast/resource-utils.js";
|
|
9
9
|
function rewriteFileReferences(ast, resolve) {
|
|
10
10
|
const rewrite = (expression) => rewriteExpressionReferences(expression, resolve);
|
|
11
11
|
for (const [name, resource] of ast.resources) {
|
|
@@ -51,7 +51,7 @@ function prepareModuleOutput(reference, prepared, ownerByResource, preferredName
|
|
|
51
51
|
return moduleOutputExpression(owner.moduleName, outputName);
|
|
52
52
|
}
|
|
53
53
|
export function wireDeploymentFiles(stackName, prepared) {
|
|
54
|
-
const { stackAst, entry, entryAssignedResources, modules, entryExistingResourceCandidates
|
|
54
|
+
const { stackAst, entry, entryAssignedResources, modules, entryExistingResourceCandidates } = prepared;
|
|
55
55
|
const entryAst = entry.ast;
|
|
56
56
|
const ownerByResource = new Map();
|
|
57
57
|
for (const owner of modules) {
|
|
@@ -84,8 +84,7 @@ export function wireDeploymentFiles(stackName, prepared) {
|
|
|
84
84
|
if (target !== undefined && target !== owner) {
|
|
85
85
|
moduleDependencies.add(target.moduleName);
|
|
86
86
|
}
|
|
87
|
-
else if (target === undefined &&
|
|
88
|
-
entryAssignedResources.has(identifier)) {
|
|
87
|
+
else if (target === undefined && entryAssignedResources.has(identifier)) {
|
|
89
88
|
moduleDependencies.add(identifier);
|
|
90
89
|
}
|
|
91
90
|
else {
|
|
@@ -100,9 +99,7 @@ export function wireDeploymentFiles(stackName, prepared) {
|
|
|
100
99
|
...body,
|
|
101
100
|
value: {
|
|
102
101
|
...rest,
|
|
103
|
-
...(local.length === 0
|
|
104
|
-
? {}
|
|
105
|
-
: { dependsOn: { kind: "array", items: local } }),
|
|
102
|
+
...(local.length === 0 ? {} : { dependsOn: { kind: "array", items: local } }),
|
|
106
103
|
},
|
|
107
104
|
};
|
|
108
105
|
}),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-wiring.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/reference-wiring.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { collectDependenciesForDeclaration } from \"../../ast/declaration-dependencies.js\";\nimport { moduleOutputExpression } from \"../../ast/expression-builder.js\";\nimport {\n rewriteDeclarationExpressions,\n rewriteExpressionReferences,\n type ExpressionReference,\n type ExpressionReferenceResolver,\n} from \"../../ast/expression-rewriter.js\";\nimport type { DeclarationNode, ExpressionNode, ParameterDeclarationNode } from \"../../ast/index.js\";\nimport { resolveFileDependencies } from \"./file-dependencies.js\";\nimport { relativeImportPath } from \"./file-paths.js\";\nimport type { BicepAst, PreparedDeploymentFiles, PreparedModule } from \"./file-preparation.js\";\nimport { getResourceBody, updateResourceBody } from \"../../ast/resource-utils.js\";\n\nfunction rewriteFileReferences(ast: BicepAst, resolve: ExpressionReferenceResolver): void {\n const rewrite = (expression: ExpressionNode): ExpressionNode =>\n rewriteExpressionReferences(expression, resolve);\n for (const [name, resource] of ast.resources) {\n ast.resources.set(name, rewriteDeclarationExpressions(resource, rewrite));\n }\n for (const [name, variable] of ast.variables) {\n ast.variables.set(name, rewriteDeclarationExpressions(variable, rewrite));\n }\n for (const [name, output] of ast.outputs) {\n ast.outputs.set(name, rewriteDeclarationExpressions(output, rewrite));\n }\n for (const [name, parameter] of ast.parameters) {\n ast.parameters.set(name, rewriteDeclarationExpressions(parameter, rewrite));\n }\n for (const [name, module] of ast.modules) {\n ast.modules.set(name, rewriteDeclarationExpressions(module, rewrite));\n }\n}\n\nfunction prepareModuleOutput(\n reference: ExpressionReference,\n prepared: PreparedDeploymentFiles,\n ownerByResource: ReadonlyMap<string, PreparedModule>,\n preferredName?: string,\n): ExpressionNode {\n const { stackAst, entryAssignedResources, entryExistingResourceCandidates } = prepared;\n if (!stackAst.resources.has(reference.identifier)) {\n throw new Error(`Unknown resource reference \"${reference.identifier}\".`);\n }\n const owner = ownerByResource.get(reference.identifier);\n if (owner === undefined) {\n if (\n !entryAssignedResources.has(reference.identifier) &&\n !entryExistingResourceCandidates.has(reference.identifier)\n ) {\n throw new Error(`Missing deployment owner for \"${reference.identifier}\".`);\n }\n return reference.expression;\n }\n const key = JSON.stringify(reference.expression);\n let outputName = owner.outputNames.get(key);\n if (outputName === undefined) {\n outputName = owner.namer.outputName(reference, preferredName);\n owner.file.ast.outputs.set(outputName, {\n bicepIdentifier: outputName,\n valueType: { kind: \"primitive-type\", name: \"any\" },\n value: reference.expression,\n });\n owner.outputNames.set(key, outputName);\n }\n return moduleOutputExpression(owner.moduleName, outputName);\n}\n\nexport function wireDeploymentFiles(stackName: string, prepared: PreparedDeploymentFiles): void {\n const { stackAst, entry, entryAssignedResources, modules, entryExistingResourceCandidates } =\n prepared;\n const entryAst = entry.ast;\n const ownerByResource = new Map<string, PreparedModule>();\n for (const owner of modules) {\n for (const resource of owner.assignedResources) {\n ownerByResource.set(resource, owner);\n }\n }\n\n for (const owner of modules) {\n const { file, assignedResources, moduleScope, moduleName, namer } = owner;\n const { ast } = file;\n const moduleDependencies = new Set<string>();\n for (const name of assignedResources) {\n const node = ast.resources.get(name)!;\n const dependencies = getResourceBody(node.value).value.dependsOn;\n if (dependencies === undefined) continue;\n if (dependencies.kind !== \"array\") {\n throw new Error(`Invalid dependsOn for resource \"${name}\".`);\n }\n const local: ExpressionNode[] = [];\n for (const dependency of dependencies.items) {\n if (dependency.kind !== \"identifier\") {\n throw new Error(`Invalid dependsOn target for resource \"${name}\".`);\n }\n const identifier = dependency.id;\n if (!stackAst.resources.has(identifier)) {\n throw new Error(`Dependency is outside Stack \"${stackName}\".`);\n }\n const target = ownerByResource.get(identifier);\n if (target !== undefined && target !== owner) {\n moduleDependencies.add(target.moduleName);\n } else if (target === undefined && entryAssignedResources.has(identifier)) {\n moduleDependencies.add(identifier);\n } else {\n local.push({ kind: \"identifier\", id: identifier });\n }\n }\n ast.resources.set(name, {\n ...node,\n value: updateResourceBody(node.value, (body) => {\n const { dependsOn: _dependsOn, ...rest } = body.value;\n return {\n ...body,\n value: {\n ...rest,\n ...(local.length === 0 ? {} : { dependsOn: { kind: \"array\", items: local } }),\n },\n };\n }),\n });\n }\n const parameterAssignments = new Map<string, ExpressionNode>(\n [...ast.parameters.values()].map((parameter) => [\n parameter.bicepIdentifier,\n { kind: \"identifier\", id: parameter.bicepIdentifier },\n ]),\n );\n const generatedParameters = new Map<string, ParameterDeclarationNode>();\n const parameterNames = new Map<string, string>();\n rewriteFileReferences(ast, (reference) => {\n if (\n reference.path.length === 0 ||\n ast.resources.has(reference.identifier) ||\n !stackAst.resources.has(reference.identifier)\n ) {\n return undefined;\n }\n const key = JSON.stringify(reference.expression);\n let parameterName = parameterNames.get(key);\n if (parameterName === undefined) {\n parameterName = namer.parameterName(reference);\n parameterNames.set(key, parameterName);\n generatedParameters.set(parameterName, {\n bicepIdentifier: parameterName,\n valueType: { kind: \"primitive-type\", name: \"any\" },\n });\n parameterAssignments.set(\n parameterName,\n prepareModuleOutput(reference, prepared, ownerByResource, parameterName),\n );\n }\n return { kind: \"identifier\", id: parameterName };\n });\n for (const [name, parameter] of generatedParameters) {\n ast.parameters.set(name, parameter);\n }\n entryAst.modules.set(moduleName, {\n bicepIdentifier: moduleName,\n path: relativeImportPath(entry.fileName, file.fileName),\n value: {\n kind: \"object\",\n value: {\n name: { kind: \"string\", value: moduleName },\n ...(moduleScope === undefined ? {} : { scope: moduleScope }),\n ...(parameterAssignments.size === 0\n ? {}\n : {\n params: {\n kind: \"object\",\n value: Object.fromEntries(parameterAssignments),\n },\n }),\n ...(moduleDependencies.size === 0\n ? {}\n : {\n dependsOn: {\n kind: \"array\",\n items: [...moduleDependencies].map((id) => ({\n kind: \"identifier\",\n id,\n })),\n },\n }),\n },\n },\n });\n }\n resolveFileDependencies(entryAst, stackAst, entryExistingResourceCandidates);\n for (const [name, resource] of entryAst.resources) {\n const dependencies = getResourceBody(resource.value).value.dependsOn;\n if (dependencies === undefined) continue;\n if (dependencies.kind !== \"array\") {\n throw new Error(`Invalid dependsOn for resource \"${name}\".`);\n }\n const identifiers = new Set<string>();\n for (const dependency of dependencies.items) {\n if (dependency.kind !== \"identifier\") {\n throw new Error(`Invalid dependsOn target for resource \"${name}\".`);\n }\n if (!stackAst.resources.has(dependency.id)) {\n throw new Error(`Dependency is outside Stack \"${stackName}\".`);\n }\n identifiers.add(ownerByResource.get(dependency.id)?.moduleName ?? dependency.id);\n }\n entryAst.resources.set(name, {\n ...resource,\n value: updateResourceBody(resource.value, (body) => ({\n ...body,\n value: {\n ...body.value,\n dependsOn: {\n kind: \"array\",\n items: [...identifiers].map((id) => ({\n kind: \"identifier\",\n id,\n })),\n },\n },\n })),\n });\n }\n rewriteFileReferences(entryAst, (reference) => {\n if (\n reference.path.length === 0 ||\n entryAst.resources.has(reference.identifier) ||\n !stackAst.resources.has(reference.identifier)\n ) {\n return undefined;\n }\n return prepareModuleOutput(reference, prepared, ownerByResource);\n });\n const entryDeclarations = new Map<string, DeclarationNode>([\n ...entryAst.resources,\n ...entryAst.parameters,\n ...entryAst.variables,\n ...entryAst.modules,\n ]);\n for (const [name, module] of entryAst.modules) {\n if (\n collectDependenciesForDeclaration(module, {\n recursive: true,\n declarations: entryDeclarations,\n }).has(name)\n ) {\n throw new Error(`Cyclic module dependency involving \"${name}\" in Stack \"${stackName}\".`);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/serialization/bicep/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/serialization/bicep/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { renderBicepFiles, type RenderedBicepFile } from \"./render.js\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/serialization/bicep/render.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,SAAS,EAOV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AA0BlD,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,SAAS,iBAAiB,EAAE,CAmB9F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,CAiBlE"}
|