@azure/provisioning-core 1.0.0-beta.1 → 1.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +49 -10
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/browser/constructs/built-in-resources/resource-group.js +26 -6
- package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -1
- package/dist/browser/constructs/output.d.ts +1 -1
- package/dist/browser/constructs/output.d.ts.map +1 -1
- package/dist/browser/constructs/output.js.map +1 -1
- package/dist/browser/constructs/parameter.d.ts +1 -1
- package/dist/browser/constructs/parameter.d.ts.map +1 -1
- package/dist/browser/constructs/parameter.js.map +1 -1
- package/dist/browser/constructs/resource/resource-query.d.ts +3 -1
- package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/browser/constructs/resource/resource-query.js +10 -0
- package/dist/browser/constructs/resource/resource-query.js.map +1 -1
- package/dist/browser/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-relationships.js +35 -0
- package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
- package/dist/browser/constructs/resource/resource.d.ts +11 -17
- package/dist/browser/constructs/resource/resource.d.ts.map +1 -1
- package/dist/browser/constructs/resource/resource.js +70 -28
- package/dist/browser/constructs/resource/resource.js.map +1 -1
- package/dist/browser/constructs/stack.d.ts +2 -16
- package/dist/browser/constructs/stack.d.ts.map +1 -1
- package/dist/browser/constructs/stack.js +1 -15
- package/dist/browser/constructs/stack.js.map +1 -1
- package/dist/browser/expression/ast-nodes.d.ts +1 -1
- package/dist/browser/expression/ast-nodes.d.ts.map +1 -1
- package/dist/browser/expression/ast-nodes.js.map +1 -1
- package/dist/browser/expression/expressions.d.ts +2 -9
- package/dist/browser/expression/expressions.d.ts.map +1 -1
- package/dist/browser/expression/expressions.js +2 -9
- package/dist/browser/expression/expressions.js.map +1 -1
- package/dist/browser/expression/utils.d.ts +5 -0
- package/dist/browser/expression/utils.d.ts.map +1 -0
- package/dist/browser/expression/utils.js +25 -0
- package/dist/browser/expression/utils.js.map +1 -0
- package/dist/browser/index.d.ts +4 -4
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/internal.d.ts +2 -5
- package/dist/browser/internal.d.ts.map +1 -1
- package/dist/browser/internal.js +1 -3
- package/dist/browser/internal.js.map +1 -1
- package/dist/browser/naming/name-validation.d.ts +15 -0
- package/dist/browser/naming/name-validation.d.ts.map +1 -0
- package/dist/browser/naming/name-validation.js +82 -0
- package/dist/browser/naming/name-validation.js.map +1 -0
- package/dist/browser/naming/naming-policy.d.ts +7 -7
- package/dist/browser/naming/naming-policy.d.ts.map +1 -1
- package/dist/browser/naming/naming-policy.js +166 -33
- package/dist/browser/naming/naming-policy.js.map +1 -1
- package/dist/browser/naming/naming-rules.d.ts +12 -11
- package/dist/browser/naming/naming-rules.d.ts.map +1 -1
- package/dist/browser/naming/naming-rules.js +2 -9
- package/dist/browser/naming/naming-rules.js.map +1 -1
- package/dist/browser/package.json +1 -1
- package/dist/{esm/serialization/json/lower.d.ts → browser/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/{esm/serialization/json/lower.js → browser/serialization/arm-object-conversion.js} +20 -20
- package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
- package/dist/browser/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/browser/serialization/ast/declaration-builder.js +265 -0
- package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
- package/dist/browser/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/browser/serialization/ast/declaration-dependencies.js +96 -0
- package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
- package/dist/browser/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-builder.js +313 -0
- package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
- package/dist/browser/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-restorer.js +162 -0
- package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
- package/dist/browser/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-rewriter.js +257 -0
- package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
- package/dist/browser/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-walker.js +154 -0
- package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
- package/dist/browser/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/browser/serialization/ast/generated/ast.js.map +1 -0
- package/dist/browser/serialization/ast/index.d.ts +7 -0
- package/dist/browser/serialization/ast/index.d.ts.map +1 -0
- package/dist/browser/serialization/ast/index.js.map +1 -0
- package/dist/browser/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/browser/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/browser/serialization/ast/resource-utils.js +52 -0
- package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.js +57 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.js +100 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js +46 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.js +68 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.js +32 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.js +46 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.js +140 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.js +225 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
- package/dist/browser/serialization/bicep/index.d.ts +2 -0
- package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/index.js +4 -0
- package/dist/browser/serialization/bicep/index.js.map +1 -0
- package/dist/browser/serialization/bicep/render.d.ts +11 -0
- package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/render.js +293 -0
- package/dist/browser/serialization/bicep/render.js.map +1 -0
- package/dist/browser/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/browser/serialization/encoding.d.ts.map +1 -0
- package/dist/browser/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/browser/serialization/encoding.js.map +1 -0
- package/dist/browser/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/browser/serialization/identifiers.d.ts.map +1 -0
- package/dist/browser/serialization/{json/util.js → identifiers.js} +1 -1
- package/dist/browser/serialization/identifiers.js.map +1 -0
- package/dist/browser/serialization/index.d.ts +1 -1
- package/dist/browser/serialization/index.d.ts.map +1 -1
- package/dist/browser/serialization/index.js.map +1 -1
- package/dist/browser/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/browser/serialization/json/deserialize.js +131 -39
- package/dist/browser/serialization/json/deserialize.js.map +1 -1
- package/dist/browser/serialization/json/serialize.d.ts +1 -1
- package/dist/browser/serialization/json/serialize.d.ts.map +1 -1
- package/dist/browser/serialization/json/serialize.js +5 -360
- package/dist/browser/serialization/json/serialize.js.map +1 -1
- package/dist/browser/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/browser/serialization/pluralize-config.js.map +1 -0
- package/dist/browser/serialization/symbol-map.d.ts +10 -0
- package/dist/browser/serialization/symbol-map.d.ts.map +1 -0
- package/dist/browser/serialization/symbol-map.js +40 -0
- package/dist/browser/serialization/symbol-map.js.map +1 -0
- package/dist/browser/shape/shape.d.ts +4 -4
- package/dist/browser/shape/shape.js +2 -2
- package/dist/browser/shape/shape.js.map +1 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.js +27 -6
- package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +2 -2
- package/dist/commonjs/constructs/output.d.ts +1 -1
- package/dist/commonjs/constructs/output.d.ts.map +1 -1
- package/dist/commonjs/constructs/output.js.map +1 -1
- package/dist/commonjs/constructs/parameter.d.ts +1 -1
- package/dist/commonjs/constructs/parameter.d.ts.map +1 -1
- package/dist/commonjs/constructs/parameter.js.map +1 -1
- package/dist/commonjs/constructs/resource/resource-query.d.ts +3 -1
- package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/commonjs/constructs/resource/resource-query.js +11 -0
- package/dist/commonjs/constructs/resource/resource-query.js.map +2 -2
- package/dist/commonjs/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/commonjs/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-relationships.js +59 -0
- package/dist/commonjs/constructs/resource/resource-relationships.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource.d.ts +11 -17
- package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -1
- package/dist/commonjs/constructs/resource/resource.js +57 -35
- package/dist/commonjs/constructs/resource/resource.js.map +2 -2
- package/dist/commonjs/constructs/stack.d.ts +2 -16
- package/dist/commonjs/constructs/stack.d.ts.map +1 -1
- package/dist/commonjs/constructs/stack.js.map +2 -2
- package/dist/commonjs/expression/ast-nodes.d.ts +1 -1
- package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -1
- package/dist/commonjs/expression/ast-nodes.js.map +1 -1
- package/dist/commonjs/expression/expressions.d.ts +2 -9
- package/dist/commonjs/expression/expressions.d.ts.map +1 -1
- package/dist/commonjs/expression/expressions.js.map +2 -2
- package/dist/commonjs/expression/utils.d.ts +5 -0
- package/dist/commonjs/expression/utils.d.ts.map +1 -0
- package/dist/commonjs/expression/utils.js +43 -0
- package/dist/commonjs/expression/utils.js.map +7 -0
- package/dist/commonjs/index.d.ts +4 -4
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js.map +2 -2
- package/dist/commonjs/internal.d.ts +2 -5
- package/dist/commonjs/internal.d.ts.map +1 -1
- package/dist/commonjs/internal.js +3 -9
- package/dist/commonjs/internal.js.map +2 -2
- package/dist/commonjs/naming/name-validation.d.ts +15 -0
- package/dist/commonjs/naming/name-validation.d.ts.map +1 -0
- package/dist/commonjs/naming/name-validation.js +74 -0
- package/dist/commonjs/naming/name-validation.js.map +7 -0
- package/dist/commonjs/naming/naming-policy.d.ts +7 -7
- package/dist/commonjs/naming/naming-policy.d.ts.map +1 -1
- package/dist/commonjs/naming/naming-policy.js +136 -26
- package/dist/commonjs/naming/naming-policy.js.map +2 -2
- package/dist/commonjs/naming/naming-rules.d.ts +12 -11
- package/dist/commonjs/naming/naming-rules.d.ts.map +1 -1
- package/dist/commonjs/naming/naming-rules.js +4 -11
- package/dist/commonjs/naming/naming-rules.js.map +2 -2
- package/dist/commonjs/package.json +1 -1
- package/dist/{browser/serialization/json/lower.d.ts → commonjs/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/lower.js → arm-object-conversion.js} +15 -15
- package/dist/commonjs/serialization/arm-object-conversion.js.map +7 -0
- package/dist/commonjs/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/commonjs/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/declaration-builder.js +274 -0
- package/dist/commonjs/serialization/ast/declaration-builder.js.map +7 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.js +109 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/commonjs/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-builder.js +316 -0
- package/dist/commonjs/serialization/ast/expression-builder.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/commonjs/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-restorer.js +193 -0
- package/dist/commonjs/serialization/ast/expression-restorer.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.js +270 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/commonjs/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-walker.js +165 -0
- package/dist/commonjs/serialization/ast/expression-walker.js.map +7 -0
- package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/commonjs/serialization/{contract → ast}/generated/ast.js.map +1 -1
- package/dist/commonjs/serialization/ast/index.d.ts +7 -0
- package/dist/commonjs/serialization/ast/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/{contract → ast}/index.js +3 -3
- package/dist/commonjs/serialization/ast/index.js.map +7 -0
- package/dist/commonjs/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/commonjs/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/resource-utils.js +71 -0
- package/dist/commonjs/serialization/ast/resource-utils.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.js +74 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js +130 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js +71 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js +80 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js +91 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js +57 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.js +70 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js +190 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js +241 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js.map +7 -0
- package/dist/commonjs/serialization/bicep/index.d.ts +2 -0
- package/dist/commonjs/serialization/bicep/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/index.js +28 -0
- package/dist/commonjs/serialization/bicep/index.js.map +7 -0
- package/dist/commonjs/serialization/bicep/render.d.ts +11 -0
- package/dist/commonjs/serialization/bicep/render.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/render.js +312 -0
- package/dist/commonjs/serialization/bicep/render.js.map +7 -0
- package/dist/commonjs/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/commonjs/serialization/encoding.js.map +7 -0
- package/dist/commonjs/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/util.js → identifiers.js} +4 -4
- package/dist/commonjs/serialization/{json/util.js.map → identifiers.js.map} +1 -1
- package/dist/commonjs/serialization/index.d.ts +1 -1
- package/dist/commonjs/serialization/index.d.ts.map +1 -1
- package/dist/commonjs/serialization/index.js.map +1 -1
- package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/commonjs/serialization/json/deserialize.js +115 -44
- package/dist/commonjs/serialization/json/deserialize.js.map +2 -2
- package/dist/commonjs/serialization/json/serialize.d.ts +1 -1
- package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -1
- package/dist/commonjs/serialization/json/serialize.js +6 -308
- package/dist/commonjs/serialization/json/serialize.js.map +3 -3
- package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/pluralize-config.js.map → pluralize-config.js.map} +1 -1
- package/dist/commonjs/serialization/symbol-map.d.ts +10 -0
- package/dist/commonjs/serialization/symbol-map.d.ts.map +1 -0
- package/dist/commonjs/serialization/symbol-map.js +72 -0
- package/dist/commonjs/serialization/symbol-map.js.map +7 -0
- package/dist/commonjs/shape/shape.d.ts +4 -4
- package/dist/commonjs/shape/shape.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/esm/constructs/built-in-resources/resource-group.js +26 -6
- package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -1
- package/dist/esm/constructs/output.d.ts +1 -1
- package/dist/esm/constructs/output.d.ts.map +1 -1
- package/dist/esm/constructs/output.js.map +1 -1
- package/dist/esm/constructs/parameter.d.ts +1 -1
- package/dist/esm/constructs/parameter.d.ts.map +1 -1
- package/dist/esm/constructs/parameter.js.map +1 -1
- package/dist/esm/constructs/resource/resource-query.d.ts +3 -1
- package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/esm/constructs/resource/resource-query.js +10 -0
- package/dist/esm/constructs/resource/resource-query.js.map +1 -1
- package/dist/esm/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/esm/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-relationships.js +35 -0
- package/dist/esm/constructs/resource/resource-relationships.js.map +1 -0
- package/dist/esm/constructs/resource/resource.d.ts +11 -17
- package/dist/esm/constructs/resource/resource.d.ts.map +1 -1
- package/dist/esm/constructs/resource/resource.js +70 -28
- package/dist/esm/constructs/resource/resource.js.map +1 -1
- package/dist/esm/constructs/stack.d.ts +2 -16
- package/dist/esm/constructs/stack.d.ts.map +1 -1
- package/dist/esm/constructs/stack.js +1 -15
- package/dist/esm/constructs/stack.js.map +1 -1
- package/dist/esm/expression/ast-nodes.d.ts +1 -1
- package/dist/esm/expression/ast-nodes.d.ts.map +1 -1
- package/dist/esm/expression/ast-nodes.js.map +1 -1
- package/dist/esm/expression/expressions.d.ts +2 -9
- package/dist/esm/expression/expressions.d.ts.map +1 -1
- package/dist/esm/expression/expressions.js +2 -9
- package/dist/esm/expression/expressions.js.map +1 -1
- package/dist/esm/expression/utils.d.ts +5 -0
- package/dist/esm/expression/utils.d.ts.map +1 -0
- package/dist/esm/expression/utils.js +25 -0
- package/dist/esm/expression/utils.js.map +1 -0
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal.d.ts +2 -5
- package/dist/esm/internal.d.ts.map +1 -1
- package/dist/esm/internal.js +1 -3
- package/dist/esm/internal.js.map +1 -1
- package/dist/esm/naming/name-validation.d.ts +15 -0
- package/dist/esm/naming/name-validation.d.ts.map +1 -0
- package/dist/esm/naming/name-validation.js +82 -0
- package/dist/esm/naming/name-validation.js.map +1 -0
- package/dist/esm/naming/naming-policy.d.ts +7 -7
- package/dist/esm/naming/naming-policy.d.ts.map +1 -1
- package/dist/esm/naming/naming-policy.js +166 -33
- package/dist/esm/naming/naming-policy.js.map +1 -1
- package/dist/esm/naming/naming-rules.d.ts +12 -11
- package/dist/esm/naming/naming-rules.d.ts.map +1 -1
- package/dist/esm/naming/naming-rules.js +2 -9
- package/dist/esm/naming/naming-rules.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/{commonjs/serialization/json/lower.d.ts → esm/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/{browser/serialization/json/lower.js → esm/serialization/arm-object-conversion.js} +20 -20
- package/dist/esm/serialization/arm-object-conversion.js.map +1 -0
- package/dist/esm/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/esm/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/esm/serialization/ast/declaration-builder.js +265 -0
- package/dist/esm/serialization/ast/declaration-builder.js.map +1 -0
- package/dist/esm/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/esm/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/esm/serialization/ast/declaration-dependencies.js +96 -0
- package/dist/esm/serialization/ast/declaration-dependencies.js.map +1 -0
- package/dist/esm/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/esm/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-builder.js +313 -0
- package/dist/esm/serialization/ast/expression-builder.js.map +1 -0
- package/dist/esm/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/esm/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-restorer.js +162 -0
- package/dist/esm/serialization/ast/expression-restorer.js.map +1 -0
- package/dist/esm/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/esm/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-rewriter.js +257 -0
- package/dist/esm/serialization/ast/expression-rewriter.js.map +1 -0
- package/dist/esm/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/esm/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-walker.js +154 -0
- package/dist/esm/serialization/ast/expression-walker.js.map +1 -0
- package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/esm/serialization/ast/generated/ast.js.map +1 -0
- package/dist/esm/serialization/ast/index.d.ts +7 -0
- package/dist/esm/serialization/ast/index.d.ts.map +1 -0
- package/dist/esm/serialization/ast/index.js.map +1 -0
- package/dist/esm/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/esm/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/esm/serialization/ast/resource-utils.js +52 -0
- package/dist/esm/serialization/ast/resource-utils.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.js +57 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.js +100 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js +46 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.js +68 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.js +32 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.js +46 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.js +140 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.js +225 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
- package/dist/esm/serialization/bicep/index.d.ts +2 -0
- package/dist/esm/serialization/bicep/index.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/index.js +4 -0
- package/dist/esm/serialization/bicep/index.js.map +1 -0
- package/dist/esm/serialization/bicep/render.d.ts +11 -0
- package/dist/esm/serialization/bicep/render.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/render.js +293 -0
- package/dist/esm/serialization/bicep/render.js.map +1 -0
- package/dist/esm/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/esm/serialization/encoding.d.ts.map +1 -0
- package/dist/esm/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/esm/serialization/encoding.js.map +1 -0
- package/dist/esm/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/esm/serialization/identifiers.d.ts.map +1 -0
- package/dist/esm/serialization/{json/util.js → identifiers.js} +1 -1
- package/dist/esm/serialization/identifiers.js.map +1 -0
- package/dist/esm/serialization/index.d.ts +1 -1
- package/dist/esm/serialization/index.d.ts.map +1 -1
- package/dist/esm/serialization/index.js.map +1 -1
- package/dist/esm/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/esm/serialization/json/deserialize.js +131 -39
- package/dist/esm/serialization/json/deserialize.js.map +1 -1
- package/dist/esm/serialization/json/serialize.d.ts +1 -1
- package/dist/esm/serialization/json/serialize.d.ts.map +1 -1
- package/dist/esm/serialization/json/serialize.js +5 -360
- package/dist/esm/serialization/json/serialize.js.map +1 -1
- package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/esm/serialization/pluralize-config.js.map +1 -0
- package/dist/esm/serialization/symbol-map.d.ts +10 -0
- package/dist/esm/serialization/symbol-map.d.ts.map +1 -0
- package/dist/esm/serialization/symbol-map.js +40 -0
- package/dist/esm/serialization/symbol-map.js.map +1 -0
- package/dist/esm/shape/shape.d.ts +4 -4
- package/dist/esm/shape/shape.js +2 -2
- package/dist/esm/shape/shape.js.map +1 -1
- package/package.json +3 -2
- package/dist/browser/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/browser/serialization/contract/generated/ast.js.map +0 -1
- package/dist/browser/serialization/contract/index.d.ts +0 -2
- package/dist/browser/serialization/contract/index.d.ts.map +0 -1
- package/dist/browser/serialization/contract/index.js.map +0 -1
- package/dist/browser/serialization/json/encoding.d.ts.map +0 -1
- package/dist/browser/serialization/json/encoding.js.map +0 -1
- package/dist/browser/serialization/json/expression.d.ts +0 -32
- package/dist/browser/serialization/json/expression.d.ts.map +0 -1
- package/dist/browser/serialization/json/expression.js +0 -494
- package/dist/browser/serialization/json/expression.js.map +0 -1
- package/dist/browser/serialization/json/lower.d.ts.map +0 -1
- package/dist/browser/serialization/json/lower.js.map +0 -1
- package/dist/browser/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/browser/serialization/json/pluralize-config.js.map +0 -1
- package/dist/browser/serialization/json/util.d.ts.map +0 -1
- package/dist/browser/serialization/json/util.js.map +0 -1
- package/dist/browser/serialization/utils.d.ts +0 -3
- package/dist/browser/serialization/utils.d.ts.map +0 -1
- package/dist/browser/serialization/utils.js +0 -146
- package/dist/browser/serialization/utils.js.map +0 -1
- package/dist/commonjs/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/commonjs/serialization/contract/index.d.ts +0 -2
- package/dist/commonjs/serialization/contract/index.d.ts.map +0 -1
- package/dist/commonjs/serialization/contract/index.js.map +0 -7
- package/dist/commonjs/serialization/json/encoding.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/encoding.js.map +0 -7
- package/dist/commonjs/serialization/json/expression.d.ts +0 -32
- package/dist/commonjs/serialization/json/expression.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/expression.js +0 -509
- package/dist/commonjs/serialization/json/expression.js.map +0 -7
- package/dist/commonjs/serialization/json/lower.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/lower.js.map +0 -7
- package/dist/commonjs/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/util.d.ts.map +0 -1
- package/dist/commonjs/serialization/utils.d.ts +0 -3
- package/dist/commonjs/serialization/utils.d.ts.map +0 -1
- package/dist/commonjs/serialization/utils.js +0 -169
- package/dist/commonjs/serialization/utils.js.map +0 -7
- package/dist/esm/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/esm/serialization/contract/generated/ast.js.map +0 -1
- package/dist/esm/serialization/contract/index.d.ts +0 -2
- package/dist/esm/serialization/contract/index.d.ts.map +0 -1
- package/dist/esm/serialization/contract/index.js.map +0 -1
- package/dist/esm/serialization/json/encoding.d.ts.map +0 -1
- package/dist/esm/serialization/json/encoding.js.map +0 -1
- package/dist/esm/serialization/json/expression.d.ts +0 -32
- package/dist/esm/serialization/json/expression.d.ts.map +0 -1
- package/dist/esm/serialization/json/expression.js +0 -494
- package/dist/esm/serialization/json/expression.js.map +0 -1
- package/dist/esm/serialization/json/lower.d.ts.map +0 -1
- package/dist/esm/serialization/json/lower.js.map +0 -1
- package/dist/esm/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/esm/serialization/json/pluralize-config.js.map +0 -1
- package/dist/esm/serialization/json/util.d.ts.map +0 -1
- package/dist/esm/serialization/json/util.js.map +0 -1
- package/dist/esm/serialization/utils.d.ts +0 -3
- package/dist/esm/serialization/utils.d.ts.map +0 -1
- package/dist/esm/serialization/utils.js +0 -146
- package/dist/esm/serialization/utils.js.map +0 -1
- /package/dist/browser/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/browser/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/browser/serialization/{contract → ast}/index.js +0 -0
- /package/dist/browser/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/browser/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
- /package/dist/commonjs/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/commonjs/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/commonjs/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/commonjs/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
- /package/dist/esm/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/esm/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/esm/serialization/{contract → ast}/index.js +0 -0
- /package/dist/esm/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/esm/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
|
@@ -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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
function parseFilePath(path) {
|
|
4
|
+
const normalized = path.replace(/\\/g, "/");
|
|
5
|
+
const root = normalized.match(/^(?:[A-Za-z]:)?\//)?.[0] ?? "";
|
|
6
|
+
const segments = [];
|
|
7
|
+
for (const segment of normalized.slice(root.length).split("/")) {
|
|
8
|
+
if (segment === "" || segment === ".")
|
|
9
|
+
continue;
|
|
10
|
+
if (segment === "..") {
|
|
11
|
+
if (segments.length > 0 && segments.at(-1) !== "..") {
|
|
12
|
+
segments.pop();
|
|
13
|
+
}
|
|
14
|
+
else if (root === "") {
|
|
15
|
+
segments.push(segment);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
segments.push(segment);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return { root, segments };
|
|
23
|
+
}
|
|
24
|
+
export function joinFilePath(directory, fileName) {
|
|
25
|
+
const { root, segments } = parseFilePath(directory === "" ? fileName : `${directory}/${fileName}`);
|
|
26
|
+
return root + segments.join("/");
|
|
27
|
+
}
|
|
28
|
+
export function relativeImportPath(from, to) {
|
|
29
|
+
const source = parseFilePath(from);
|
|
30
|
+
const target = parseFilePath(to);
|
|
31
|
+
if (source.root !== target.root) {
|
|
32
|
+
throw new Error(`Cannot reference file "${to}" from "${from}" across different path roots.`);
|
|
33
|
+
}
|
|
34
|
+
source.segments.pop();
|
|
35
|
+
let commonSegments = 0;
|
|
36
|
+
while (commonSegments < source.segments.length &&
|
|
37
|
+
source.segments[commonSegments] === target.segments[commonSegments]) {
|
|
38
|
+
commonSegments++;
|
|
39
|
+
}
|
|
40
|
+
const relative = [
|
|
41
|
+
...source.segments.slice(commonSegments).map(() => ".."),
|
|
42
|
+
...target.segments.slice(commonSegments),
|
|
43
|
+
].join("/");
|
|
44
|
+
return relative === ".." || relative.startsWith("../") ? relative : `./${relative}`;
|
|
45
|
+
}
|
|
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,34 @@
|
|
|
1
|
+
import { type ExpressionNode, type ModuleDeclarationNode, type OutputDeclarationNode, type ParameterDeclarationNode, type ResourceDeclarationNode, type TargetScope, type VariableDeclarationNode } from "../../ast/index.js";
|
|
2
|
+
import type { AuthoredResourceContext } from "./authored-context.js";
|
|
3
|
+
import { BicepNamer } from "./bicep-namer.js";
|
|
4
|
+
import type { DeploymentLayout } from "./deployment-planning.js";
|
|
5
|
+
export interface BicepAst {
|
|
6
|
+
readonly targetScope: TargetScope;
|
|
7
|
+
readonly resources: Map<string, ResourceDeclarationNode>;
|
|
8
|
+
readonly parameters: Map<string, ParameterDeclarationNode>;
|
|
9
|
+
readonly variables: Map<string, VariableDeclarationNode>;
|
|
10
|
+
readonly outputs: Map<string, OutputDeclarationNode>;
|
|
11
|
+
readonly modules: Map<string, ModuleDeclarationNode>;
|
|
12
|
+
}
|
|
13
|
+
export interface PreparedBicepFile {
|
|
14
|
+
readonly fileName: string;
|
|
15
|
+
readonly targetScope: TargetScope;
|
|
16
|
+
readonly ast: BicepAst;
|
|
17
|
+
}
|
|
18
|
+
export interface PreparedModule {
|
|
19
|
+
readonly file: PreparedBicepFile;
|
|
20
|
+
readonly assignedResources: ReadonlySet<string>;
|
|
21
|
+
readonly moduleScope: ExpressionNode | undefined;
|
|
22
|
+
readonly moduleName: string;
|
|
23
|
+
readonly namer: BicepNamer;
|
|
24
|
+
readonly outputNames: Map<string, string>;
|
|
25
|
+
}
|
|
26
|
+
export interface PreparedDeploymentFiles {
|
|
27
|
+
readonly stackAst: BicepAst;
|
|
28
|
+
readonly entry: PreparedBicepFile;
|
|
29
|
+
readonly entryAssignedResources: ReadonlySet<string>;
|
|
30
|
+
readonly modules: readonly PreparedModule[];
|
|
31
|
+
readonly entryExistingResourceCandidates: ReadonlyMap<string, ResourceDeclarationNode>;
|
|
32
|
+
}
|
|
33
|
+
export declare function prepareDeploymentFiles(stackName: string, stackAst: BicepAst, authoredContexts: ReadonlyMap<string, AuthoredResourceContext>, layout: DeploymentLayout, stackNamer: BicepNamer): PreparedDeploymentFiles;
|
|
34
|
+
//# sourceMappingURL=file-preparation.d.ts.map
|
|
@@ -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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { removeResourceScope } from "../../ast/resource-utils.js";
|
|
4
|
+
import { hasArmParent, normalizeExtensionScopes } from "./deployment-resource-utils.js";
|
|
5
|
+
import { BicepNamer } from "./bicep-namer.js";
|
|
6
|
+
import { resolveFileDependencies } from "./file-dependencies.js";
|
|
7
|
+
import { joinFilePath } from "./file-paths.js";
|
|
8
|
+
function createFile(fileName, targetScope, selectedResources, stackAst, includeOutputs) {
|
|
9
|
+
const ast = {
|
|
10
|
+
targetScope,
|
|
11
|
+
resources: new Map(),
|
|
12
|
+
parameters: new Map(),
|
|
13
|
+
variables: new Map(),
|
|
14
|
+
modules: new Map(),
|
|
15
|
+
outputs: new Map(includeOutputs ? stackAst.outputs : []),
|
|
16
|
+
};
|
|
17
|
+
for (const [name, resource] of stackAst.resources) {
|
|
18
|
+
if (selectedResources.has(name))
|
|
19
|
+
ast.resources.set(name, resource);
|
|
20
|
+
}
|
|
21
|
+
return { fileName, targetScope, ast };
|
|
22
|
+
}
|
|
23
|
+
function resourceFileName(stackName, name) {
|
|
24
|
+
return joinFilePath(stackName, `${name}.bicep`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Candidate rules:
|
|
28
|
+
* - Only pure existing resources, without deployment-file ownership.
|
|
29
|
+
* - Entry: all pure existing resources.
|
|
30
|
+
* - Other files: same authored RG or inherited Stack scope, with no explicit root scope.
|
|
31
|
+
* - Do not copy existing references with explicit scope (own or inherited) into
|
|
32
|
+
* modules for explicitly scoped authored RGs; relative scope expressions may change meaning.
|
|
33
|
+
*
|
|
34
|
+
* Dependency selection includes only the candidates actually needed.
|
|
35
|
+
*/
|
|
36
|
+
function getExistingResourceCandidatesForPlan(plan, stackAst, authoredContexts, layout) {
|
|
37
|
+
const { entryPlan, pureExistingResources, existingResourceToAuthoredResourceGroup, existingResourcesWithExplicitScope, } = layout;
|
|
38
|
+
const result = new Map();
|
|
39
|
+
for (const [name, resource] of stackAst.resources) {
|
|
40
|
+
if (!pureExistingResources.has(name))
|
|
41
|
+
continue;
|
|
42
|
+
if (plan !== entryPlan) {
|
|
43
|
+
let passThroughExplicitScope = false;
|
|
44
|
+
for (let ancestor = name; ancestor !== undefined; ancestor = authoredContexts.get(ancestor).authoredParent) {
|
|
45
|
+
if (authoredContexts.get(ancestor).scopeOrigin === "pass-through-explicit") {
|
|
46
|
+
passThroughExplicitScope = true;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (passThroughExplicitScope)
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Do not relocate relative lookups across authored deployment boundaries.
|
|
54
|
+
if (plan !== entryPlan &&
|
|
55
|
+
(existingResourceToAuthoredResourceGroup.get(name) !== plan.authoredResourceGroup ||
|
|
56
|
+
(plan.boundary !== undefined &&
|
|
57
|
+
authoredContexts.get(plan.boundary).scopeOrigin === "existing-explicit") ||
|
|
58
|
+
(plan.authoredResourceGroup === undefined && plan.moduleScope !== undefined) ||
|
|
59
|
+
(existingResourcesWithExplicitScope.has(name) &&
|
|
60
|
+
plan.authoredResourceGroup !== undefined &&
|
|
61
|
+
authoredContexts.get(plan.authoredResourceGroup).scopeOrigin === "existing-explicit"))) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
let node = resource;
|
|
65
|
+
if (plan !== entryPlan &&
|
|
66
|
+
!existingResourcesWithExplicitScope.has(name) &&
|
|
67
|
+
!hasArmParent(name, stackAst.resources, authoredContexts)) {
|
|
68
|
+
node = removeResourceScope(node);
|
|
69
|
+
}
|
|
70
|
+
result.set(name, node);
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
export function prepareDeploymentFiles(stackName, stackAst, authoredContexts, layout, stackNamer) {
|
|
75
|
+
const { entryPlan, deployments, pureExistingResources } = layout;
|
|
76
|
+
const entryResources = entryPlan.resources;
|
|
77
|
+
normalizeExtensionScopes(stackAst);
|
|
78
|
+
if (deployments.length === 0) {
|
|
79
|
+
const selectedResources = entryResources.size === 0 ? pureExistingResources : entryResources;
|
|
80
|
+
const entry = createFile(`${stackName}.bicep`, stackAst.targetScope, selectedResources, stackAst, true);
|
|
81
|
+
const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(entryPlan, stackAst, authoredContexts, layout);
|
|
82
|
+
resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);
|
|
83
|
+
return {
|
|
84
|
+
stackAst,
|
|
85
|
+
entry,
|
|
86
|
+
entryAssignedResources: new Set(entryResources),
|
|
87
|
+
modules: [],
|
|
88
|
+
entryExistingResourceCandidates,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (entryResources.size === 0 &&
|
|
92
|
+
deployments.every((plan) => plan.moduleScope === undefined && plan.targetScope === stackAst.targetScope)) {
|
|
93
|
+
const firstTree = deployments[0];
|
|
94
|
+
const mergedResources = new Set(deployments.flatMap((plan) => [...plan.resources]));
|
|
95
|
+
const entry = createFile(resourceFileName(stackName, firstTree.boundary), stackAst.targetScope, mergedResources, stackAst, true);
|
|
96
|
+
const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(firstTree, stackAst, authoredContexts, layout);
|
|
97
|
+
resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);
|
|
98
|
+
return {
|
|
99
|
+
stackAst,
|
|
100
|
+
entry,
|
|
101
|
+
entryAssignedResources: mergedResources,
|
|
102
|
+
modules: [],
|
|
103
|
+
entryExistingResourceCandidates,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
const modules = deployments.map((plan) => {
|
|
107
|
+
const boundaryIdentifier = plan.boundary;
|
|
108
|
+
const file = createFile(resourceFileName(stackName, boundaryIdentifier), plan.targetScope, plan.resources, stackAst, false);
|
|
109
|
+
for (const name of plan.resources) {
|
|
110
|
+
if (authoredContexts.get(name).scopeOrigin === "pass-through-explicit") {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (name !== plan.boundary && hasArmParent(name, stackAst.resources, authoredContexts)) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const node = file.ast.resources.get(name);
|
|
117
|
+
file.ast.resources.set(name, removeResourceScope(node));
|
|
118
|
+
}
|
|
119
|
+
resolveFileDependencies(file.ast, stackAst, getExistingResourceCandidatesForPlan(plan, stackAst, authoredContexts, layout));
|
|
120
|
+
return {
|
|
121
|
+
file,
|
|
122
|
+
assignedResources: new Set(plan.resources),
|
|
123
|
+
moduleScope: plan.moduleScope,
|
|
124
|
+
moduleName: stackNamer.moduleName(boundaryIdentifier, file.fileName),
|
|
125
|
+
namer: new BicepNamer(file.ast),
|
|
126
|
+
outputNames: new Map(),
|
|
127
|
+
};
|
|
128
|
+
});
|
|
129
|
+
const entry = createFile(`${stackName}.bicep`, stackAst.targetScope, entryResources, stackAst, true);
|
|
130
|
+
const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(entryPlan, stackAst, authoredContexts, layout);
|
|
131
|
+
resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);
|
|
132
|
+
return {
|
|
133
|
+
stackAst,
|
|
134
|
+
entry,
|
|
135
|
+
entryAssignedResources: new Set(entryResources),
|
|
136
|
+
modules,
|
|
137
|
+
entryExistingResourceCandidates,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=file-preparation.js.map
|
|
@@ -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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { collectDependenciesForDeclaration } from "../../ast/declaration-dependencies.js";
|
|
4
|
+
import { moduleOutputExpression } from "../../ast/expression-builder.js";
|
|
5
|
+
import { rewriteDeclarationExpressions, rewriteExpressionReferences, } from "../../ast/expression-rewriter.js";
|
|
6
|
+
import { resolveFileDependencies } from "./file-dependencies.js";
|
|
7
|
+
import { relativeImportPath } from "./file-paths.js";
|
|
8
|
+
import { getResourceBody, updateResourceBody } from "../../ast/resource-utils.js";
|
|
9
|
+
function rewriteFileReferences(ast, resolve) {
|
|
10
|
+
const rewrite = (expression) => rewriteExpressionReferences(expression, resolve);
|
|
11
|
+
for (const [name, resource] of ast.resources) {
|
|
12
|
+
ast.resources.set(name, rewriteDeclarationExpressions(resource, rewrite));
|
|
13
|
+
}
|
|
14
|
+
for (const [name, variable] of ast.variables) {
|
|
15
|
+
ast.variables.set(name, rewriteDeclarationExpressions(variable, rewrite));
|
|
16
|
+
}
|
|
17
|
+
for (const [name, output] of ast.outputs) {
|
|
18
|
+
ast.outputs.set(name, rewriteDeclarationExpressions(output, rewrite));
|
|
19
|
+
}
|
|
20
|
+
for (const [name, parameter] of ast.parameters) {
|
|
21
|
+
ast.parameters.set(name, rewriteDeclarationExpressions(parameter, rewrite));
|
|
22
|
+
}
|
|
23
|
+
for (const [name, module] of ast.modules) {
|
|
24
|
+
ast.modules.set(name, rewriteDeclarationExpressions(module, rewrite));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function prepareModuleOutput(reference, prepared, ownerByResource, preferredName) {
|
|
28
|
+
const { stackAst, entryAssignedResources, entryExistingResourceCandidates } = prepared;
|
|
29
|
+
if (!stackAst.resources.has(reference.identifier)) {
|
|
30
|
+
throw new Error(`Unknown resource reference "${reference.identifier}".`);
|
|
31
|
+
}
|
|
32
|
+
const owner = ownerByResource.get(reference.identifier);
|
|
33
|
+
if (owner === undefined) {
|
|
34
|
+
if (!entryAssignedResources.has(reference.identifier) &&
|
|
35
|
+
!entryExistingResourceCandidates.has(reference.identifier)) {
|
|
36
|
+
throw new Error(`Missing deployment owner for "${reference.identifier}".`);
|
|
37
|
+
}
|
|
38
|
+
return reference.expression;
|
|
39
|
+
}
|
|
40
|
+
const key = JSON.stringify(reference.expression);
|
|
41
|
+
let outputName = owner.outputNames.get(key);
|
|
42
|
+
if (outputName === undefined) {
|
|
43
|
+
outputName = owner.namer.outputName(reference, preferredName);
|
|
44
|
+
owner.file.ast.outputs.set(outputName, {
|
|
45
|
+
bicepIdentifier: outputName,
|
|
46
|
+
valueType: { kind: "primitive-type", name: "any" },
|
|
47
|
+
value: reference.expression,
|
|
48
|
+
});
|
|
49
|
+
owner.outputNames.set(key, outputName);
|
|
50
|
+
}
|
|
51
|
+
return moduleOutputExpression(owner.moduleName, outputName);
|
|
52
|
+
}
|
|
53
|
+
export function wireDeploymentFiles(stackName, prepared) {
|
|
54
|
+
const { stackAst, entry, entryAssignedResources, modules, entryExistingResourceCandidates } = prepared;
|
|
55
|
+
const entryAst = entry.ast;
|
|
56
|
+
const ownerByResource = new Map();
|
|
57
|
+
for (const owner of modules) {
|
|
58
|
+
for (const resource of owner.assignedResources) {
|
|
59
|
+
ownerByResource.set(resource, owner);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
for (const owner of modules) {
|
|
63
|
+
const { file, assignedResources, moduleScope, moduleName, namer } = owner;
|
|
64
|
+
const { ast } = file;
|
|
65
|
+
const moduleDependencies = new Set();
|
|
66
|
+
for (const name of assignedResources) {
|
|
67
|
+
const node = ast.resources.get(name);
|
|
68
|
+
const dependencies = getResourceBody(node.value).value.dependsOn;
|
|
69
|
+
if (dependencies === undefined)
|
|
70
|
+
continue;
|
|
71
|
+
if (dependencies.kind !== "array") {
|
|
72
|
+
throw new Error(`Invalid dependsOn for resource "${name}".`);
|
|
73
|
+
}
|
|
74
|
+
const local = [];
|
|
75
|
+
for (const dependency of dependencies.items) {
|
|
76
|
+
if (dependency.kind !== "identifier") {
|
|
77
|
+
throw new Error(`Invalid dependsOn target for resource "${name}".`);
|
|
78
|
+
}
|
|
79
|
+
const identifier = dependency.id;
|
|
80
|
+
if (!stackAst.resources.has(identifier)) {
|
|
81
|
+
throw new Error(`Dependency is outside Stack "${stackName}".`);
|
|
82
|
+
}
|
|
83
|
+
const target = ownerByResource.get(identifier);
|
|
84
|
+
if (target !== undefined && target !== owner) {
|
|
85
|
+
moduleDependencies.add(target.moduleName);
|
|
86
|
+
}
|
|
87
|
+
else if (target === undefined && entryAssignedResources.has(identifier)) {
|
|
88
|
+
moduleDependencies.add(identifier);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
local.push({ kind: "identifier", id: identifier });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
ast.resources.set(name, {
|
|
95
|
+
...node,
|
|
96
|
+
value: updateResourceBody(node.value, (body) => {
|
|
97
|
+
const { dependsOn: _dependsOn, ...rest } = body.value;
|
|
98
|
+
return {
|
|
99
|
+
...body,
|
|
100
|
+
value: {
|
|
101
|
+
...rest,
|
|
102
|
+
...(local.length === 0 ? {} : { dependsOn: { kind: "array", items: local } }),
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const parameterAssignments = new Map([...ast.parameters.values()].map((parameter) => [
|
|
109
|
+
parameter.bicepIdentifier,
|
|
110
|
+
{ kind: "identifier", id: parameter.bicepIdentifier },
|
|
111
|
+
]));
|
|
112
|
+
const generatedParameters = new Map();
|
|
113
|
+
const parameterNames = new Map();
|
|
114
|
+
rewriteFileReferences(ast, (reference) => {
|
|
115
|
+
if (reference.path.length === 0 ||
|
|
116
|
+
ast.resources.has(reference.identifier) ||
|
|
117
|
+
!stackAst.resources.has(reference.identifier)) {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
const key = JSON.stringify(reference.expression);
|
|
121
|
+
let parameterName = parameterNames.get(key);
|
|
122
|
+
if (parameterName === undefined) {
|
|
123
|
+
parameterName = namer.parameterName(reference);
|
|
124
|
+
parameterNames.set(key, parameterName);
|
|
125
|
+
generatedParameters.set(parameterName, {
|
|
126
|
+
bicepIdentifier: parameterName,
|
|
127
|
+
valueType: { kind: "primitive-type", name: "any" },
|
|
128
|
+
});
|
|
129
|
+
parameterAssignments.set(parameterName, prepareModuleOutput(reference, prepared, ownerByResource, parameterName));
|
|
130
|
+
}
|
|
131
|
+
return { kind: "identifier", id: parameterName };
|
|
132
|
+
});
|
|
133
|
+
for (const [name, parameter] of generatedParameters) {
|
|
134
|
+
ast.parameters.set(name, parameter);
|
|
135
|
+
}
|
|
136
|
+
entryAst.modules.set(moduleName, {
|
|
137
|
+
bicepIdentifier: moduleName,
|
|
138
|
+
path: relativeImportPath(entry.fileName, file.fileName),
|
|
139
|
+
value: {
|
|
140
|
+
kind: "object",
|
|
141
|
+
value: {
|
|
142
|
+
name: { kind: "string", value: moduleName },
|
|
143
|
+
...(moduleScope === undefined ? {} : { scope: moduleScope }),
|
|
144
|
+
...(parameterAssignments.size === 0
|
|
145
|
+
? {}
|
|
146
|
+
: {
|
|
147
|
+
params: {
|
|
148
|
+
kind: "object",
|
|
149
|
+
value: Object.fromEntries(parameterAssignments),
|
|
150
|
+
},
|
|
151
|
+
}),
|
|
152
|
+
...(moduleDependencies.size === 0
|
|
153
|
+
? {}
|
|
154
|
+
: {
|
|
155
|
+
dependsOn: {
|
|
156
|
+
kind: "array",
|
|
157
|
+
items: [...moduleDependencies].map((id) => ({
|
|
158
|
+
kind: "identifier",
|
|
159
|
+
id,
|
|
160
|
+
})),
|
|
161
|
+
},
|
|
162
|
+
}),
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
resolveFileDependencies(entryAst, stackAst, entryExistingResourceCandidates);
|
|
168
|
+
for (const [name, resource] of entryAst.resources) {
|
|
169
|
+
const dependencies = getResourceBody(resource.value).value.dependsOn;
|
|
170
|
+
if (dependencies === undefined)
|
|
171
|
+
continue;
|
|
172
|
+
if (dependencies.kind !== "array") {
|
|
173
|
+
throw new Error(`Invalid dependsOn for resource "${name}".`);
|
|
174
|
+
}
|
|
175
|
+
const identifiers = new Set();
|
|
176
|
+
for (const dependency of dependencies.items) {
|
|
177
|
+
if (dependency.kind !== "identifier") {
|
|
178
|
+
throw new Error(`Invalid dependsOn target for resource "${name}".`);
|
|
179
|
+
}
|
|
180
|
+
if (!stackAst.resources.has(dependency.id)) {
|
|
181
|
+
throw new Error(`Dependency is outside Stack "${stackName}".`);
|
|
182
|
+
}
|
|
183
|
+
identifiers.add(ownerByResource.get(dependency.id)?.moduleName ?? dependency.id);
|
|
184
|
+
}
|
|
185
|
+
entryAst.resources.set(name, {
|
|
186
|
+
...resource,
|
|
187
|
+
value: updateResourceBody(resource.value, (body) => ({
|
|
188
|
+
...body,
|
|
189
|
+
value: {
|
|
190
|
+
...body.value,
|
|
191
|
+
dependsOn: {
|
|
192
|
+
kind: "array",
|
|
193
|
+
items: [...identifiers].map((id) => ({
|
|
194
|
+
kind: "identifier",
|
|
195
|
+
id,
|
|
196
|
+
})),
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
})),
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
rewriteFileReferences(entryAst, (reference) => {
|
|
203
|
+
if (reference.path.length === 0 ||
|
|
204
|
+
entryAst.resources.has(reference.identifier) ||
|
|
205
|
+
!stackAst.resources.has(reference.identifier)) {
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
return prepareModuleOutput(reference, prepared, ownerByResource);
|
|
209
|
+
});
|
|
210
|
+
const entryDeclarations = new Map([
|
|
211
|
+
...entryAst.resources,
|
|
212
|
+
...entryAst.parameters,
|
|
213
|
+
...entryAst.variables,
|
|
214
|
+
...entryAst.modules,
|
|
215
|
+
]);
|
|
216
|
+
for (const [name, module] of entryAst.modules) {
|
|
217
|
+
if (collectDependenciesForDeclaration(module, {
|
|
218
|
+
recursive: true,
|
|
219
|
+
declarations: entryDeclarations,
|
|
220
|
+
}).has(name)) {
|
|
221
|
+
throw new Error(`Cyclic module dependency involving "${name}" in Stack "${stackName}".`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=reference-wiring.js.map
|
|
@@ -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,11 @@
|
|
|
1
|
+
import type { InfraNode } from "../ast/index.js";
|
|
2
|
+
import { Stack } from "../../constructs/stack.js";
|
|
3
|
+
/** A generated Bicep source file and its relative output path. */
|
|
4
|
+
export interface RenderedBicepFile {
|
|
5
|
+
readonly path: string;
|
|
6
|
+
readonly contents: string;
|
|
7
|
+
}
|
|
8
|
+
/** Render authored Stacks into Bicep files without writing or deploying them. */
|
|
9
|
+
export declare function renderBicepFiles(input: Stack | readonly Stack[]): readonly RenderedBicepFile[];
|
|
10
|
+
export declare function renderBicepFile(file: InfraNode): RenderedBicepFile;
|
|
11
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -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"}
|