@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,241 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var reference_wiring_exports = {};
|
|
19
|
+
__export(reference_wiring_exports, {
|
|
20
|
+
wireDeploymentFiles: () => wireDeploymentFiles
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(reference_wiring_exports);
|
|
23
|
+
var import_declaration_dependencies = require("../../ast/declaration-dependencies.js");
|
|
24
|
+
var import_expression_builder = require("../../ast/expression-builder.js");
|
|
25
|
+
var import_expression_rewriter = require("../../ast/expression-rewriter.js");
|
|
26
|
+
var import_file_dependencies = require("./file-dependencies.js");
|
|
27
|
+
var import_file_paths = require("./file-paths.js");
|
|
28
|
+
var import_resource_utils = require("../../ast/resource-utils.js");
|
|
29
|
+
function rewriteFileReferences(ast, resolve) {
|
|
30
|
+
const rewrite = (expression) => (0, import_expression_rewriter.rewriteExpressionReferences)(expression, resolve);
|
|
31
|
+
for (const [name, resource] of ast.resources) {
|
|
32
|
+
ast.resources.set(name, (0, import_expression_rewriter.rewriteDeclarationExpressions)(resource, rewrite));
|
|
33
|
+
}
|
|
34
|
+
for (const [name, variable] of ast.variables) {
|
|
35
|
+
ast.variables.set(name, (0, import_expression_rewriter.rewriteDeclarationExpressions)(variable, rewrite));
|
|
36
|
+
}
|
|
37
|
+
for (const [name, output] of ast.outputs) {
|
|
38
|
+
ast.outputs.set(name, (0, import_expression_rewriter.rewriteDeclarationExpressions)(output, rewrite));
|
|
39
|
+
}
|
|
40
|
+
for (const [name, parameter] of ast.parameters) {
|
|
41
|
+
ast.parameters.set(name, (0, import_expression_rewriter.rewriteDeclarationExpressions)(parameter, rewrite));
|
|
42
|
+
}
|
|
43
|
+
for (const [name, module2] of ast.modules) {
|
|
44
|
+
ast.modules.set(name, (0, import_expression_rewriter.rewriteDeclarationExpressions)(module2, rewrite));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function prepareModuleOutput(reference, prepared, ownerByResource, preferredName) {
|
|
48
|
+
const { stackAst, entryAssignedResources, entryExistingResourceCandidates } = prepared;
|
|
49
|
+
if (!stackAst.resources.has(reference.identifier)) {
|
|
50
|
+
throw new Error(`Unknown resource reference "${reference.identifier}".`);
|
|
51
|
+
}
|
|
52
|
+
const owner = ownerByResource.get(reference.identifier);
|
|
53
|
+
if (owner === void 0) {
|
|
54
|
+
if (!entryAssignedResources.has(reference.identifier) && !entryExistingResourceCandidates.has(reference.identifier)) {
|
|
55
|
+
throw new Error(`Missing deployment owner for "${reference.identifier}".`);
|
|
56
|
+
}
|
|
57
|
+
return reference.expression;
|
|
58
|
+
}
|
|
59
|
+
const key = JSON.stringify(reference.expression);
|
|
60
|
+
let outputName = owner.outputNames.get(key);
|
|
61
|
+
if (outputName === void 0) {
|
|
62
|
+
outputName = owner.namer.outputName(reference, preferredName);
|
|
63
|
+
owner.file.ast.outputs.set(outputName, {
|
|
64
|
+
bicepIdentifier: outputName,
|
|
65
|
+
valueType: { kind: "primitive-type", name: "any" },
|
|
66
|
+
value: reference.expression
|
|
67
|
+
});
|
|
68
|
+
owner.outputNames.set(key, outputName);
|
|
69
|
+
}
|
|
70
|
+
return (0, import_expression_builder.moduleOutputExpression)(owner.moduleName, outputName);
|
|
71
|
+
}
|
|
72
|
+
function wireDeploymentFiles(stackName, prepared) {
|
|
73
|
+
const { stackAst, entry, entryAssignedResources, modules, entryExistingResourceCandidates } = prepared;
|
|
74
|
+
const entryAst = entry.ast;
|
|
75
|
+
const ownerByResource = /* @__PURE__ */ new Map();
|
|
76
|
+
for (const owner of modules) {
|
|
77
|
+
for (const resource of owner.assignedResources) {
|
|
78
|
+
ownerByResource.set(resource, owner);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
for (const owner of modules) {
|
|
82
|
+
const { file, assignedResources, moduleScope, moduleName, namer } = owner;
|
|
83
|
+
const { ast } = file;
|
|
84
|
+
const moduleDependencies = /* @__PURE__ */ new Set();
|
|
85
|
+
for (const name of assignedResources) {
|
|
86
|
+
const node = ast.resources.get(name);
|
|
87
|
+
const dependencies = (0, import_resource_utils.getResourceBody)(node.value).value.dependsOn;
|
|
88
|
+
if (dependencies === void 0) continue;
|
|
89
|
+
if (dependencies.kind !== "array") {
|
|
90
|
+
throw new Error(`Invalid dependsOn for resource "${name}".`);
|
|
91
|
+
}
|
|
92
|
+
const local = [];
|
|
93
|
+
for (const dependency of dependencies.items) {
|
|
94
|
+
if (dependency.kind !== "identifier") {
|
|
95
|
+
throw new Error(`Invalid dependsOn target for resource "${name}".`);
|
|
96
|
+
}
|
|
97
|
+
const identifier = dependency.id;
|
|
98
|
+
if (!stackAst.resources.has(identifier)) {
|
|
99
|
+
throw new Error(`Dependency is outside Stack "${stackName}".`);
|
|
100
|
+
}
|
|
101
|
+
const target = ownerByResource.get(identifier);
|
|
102
|
+
if (target !== void 0 && target !== owner) {
|
|
103
|
+
moduleDependencies.add(target.moduleName);
|
|
104
|
+
} else if (target === void 0 && entryAssignedResources.has(identifier)) {
|
|
105
|
+
moduleDependencies.add(identifier);
|
|
106
|
+
} else {
|
|
107
|
+
local.push({ kind: "identifier", id: identifier });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
ast.resources.set(name, {
|
|
111
|
+
...node,
|
|
112
|
+
value: (0, import_resource_utils.updateResourceBody)(node.value, (body) => {
|
|
113
|
+
const { dependsOn: _dependsOn, ...rest } = body.value;
|
|
114
|
+
return {
|
|
115
|
+
...body,
|
|
116
|
+
value: {
|
|
117
|
+
...rest,
|
|
118
|
+
...local.length === 0 ? {} : { dependsOn: { kind: "array", items: local } }
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
})
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
const parameterAssignments = new Map(
|
|
125
|
+
[...ast.parameters.values()].map((parameter) => [
|
|
126
|
+
parameter.bicepIdentifier,
|
|
127
|
+
{ kind: "identifier", id: parameter.bicepIdentifier }
|
|
128
|
+
])
|
|
129
|
+
);
|
|
130
|
+
const generatedParameters = /* @__PURE__ */ new Map();
|
|
131
|
+
const parameterNames = /* @__PURE__ */ new Map();
|
|
132
|
+
rewriteFileReferences(ast, (reference) => {
|
|
133
|
+
if (reference.path.length === 0 || ast.resources.has(reference.identifier) || !stackAst.resources.has(reference.identifier)) {
|
|
134
|
+
return void 0;
|
|
135
|
+
}
|
|
136
|
+
const key = JSON.stringify(reference.expression);
|
|
137
|
+
let parameterName = parameterNames.get(key);
|
|
138
|
+
if (parameterName === void 0) {
|
|
139
|
+
parameterName = namer.parameterName(reference);
|
|
140
|
+
parameterNames.set(key, parameterName);
|
|
141
|
+
generatedParameters.set(parameterName, {
|
|
142
|
+
bicepIdentifier: parameterName,
|
|
143
|
+
valueType: { kind: "primitive-type", name: "any" }
|
|
144
|
+
});
|
|
145
|
+
parameterAssignments.set(
|
|
146
|
+
parameterName,
|
|
147
|
+
prepareModuleOutput(reference, prepared, ownerByResource, parameterName)
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
return { kind: "identifier", id: parameterName };
|
|
151
|
+
});
|
|
152
|
+
for (const [name, parameter] of generatedParameters) {
|
|
153
|
+
ast.parameters.set(name, parameter);
|
|
154
|
+
}
|
|
155
|
+
entryAst.modules.set(moduleName, {
|
|
156
|
+
bicepIdentifier: moduleName,
|
|
157
|
+
path: (0, import_file_paths.relativeImportPath)(entry.fileName, file.fileName),
|
|
158
|
+
value: {
|
|
159
|
+
kind: "object",
|
|
160
|
+
value: {
|
|
161
|
+
name: { kind: "string", value: moduleName },
|
|
162
|
+
...moduleScope === void 0 ? {} : { scope: moduleScope },
|
|
163
|
+
...parameterAssignments.size === 0 ? {} : {
|
|
164
|
+
params: {
|
|
165
|
+
kind: "object",
|
|
166
|
+
value: Object.fromEntries(parameterAssignments)
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
...moduleDependencies.size === 0 ? {} : {
|
|
170
|
+
dependsOn: {
|
|
171
|
+
kind: "array",
|
|
172
|
+
items: [...moduleDependencies].map((id) => ({
|
|
173
|
+
kind: "identifier",
|
|
174
|
+
id
|
|
175
|
+
}))
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
(0, import_file_dependencies.resolveFileDependencies)(entryAst, stackAst, entryExistingResourceCandidates);
|
|
183
|
+
for (const [name, resource] of entryAst.resources) {
|
|
184
|
+
const dependencies = (0, import_resource_utils.getResourceBody)(resource.value).value.dependsOn;
|
|
185
|
+
if (dependencies === void 0) continue;
|
|
186
|
+
if (dependencies.kind !== "array") {
|
|
187
|
+
throw new Error(`Invalid dependsOn for resource "${name}".`);
|
|
188
|
+
}
|
|
189
|
+
const identifiers = /* @__PURE__ */ new Set();
|
|
190
|
+
for (const dependency of dependencies.items) {
|
|
191
|
+
if (dependency.kind !== "identifier") {
|
|
192
|
+
throw new Error(`Invalid dependsOn target for resource "${name}".`);
|
|
193
|
+
}
|
|
194
|
+
if (!stackAst.resources.has(dependency.id)) {
|
|
195
|
+
throw new Error(`Dependency is outside Stack "${stackName}".`);
|
|
196
|
+
}
|
|
197
|
+
identifiers.add(ownerByResource.get(dependency.id)?.moduleName ?? dependency.id);
|
|
198
|
+
}
|
|
199
|
+
entryAst.resources.set(name, {
|
|
200
|
+
...resource,
|
|
201
|
+
value: (0, import_resource_utils.updateResourceBody)(resource.value, (body) => ({
|
|
202
|
+
...body,
|
|
203
|
+
value: {
|
|
204
|
+
...body.value,
|
|
205
|
+
dependsOn: {
|
|
206
|
+
kind: "array",
|
|
207
|
+
items: [...identifiers].map((id) => ({
|
|
208
|
+
kind: "identifier",
|
|
209
|
+
id
|
|
210
|
+
}))
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}))
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
rewriteFileReferences(entryAst, (reference) => {
|
|
217
|
+
if (reference.path.length === 0 || entryAst.resources.has(reference.identifier) || !stackAst.resources.has(reference.identifier)) {
|
|
218
|
+
return void 0;
|
|
219
|
+
}
|
|
220
|
+
return prepareModuleOutput(reference, prepared, ownerByResource);
|
|
221
|
+
});
|
|
222
|
+
const entryDeclarations = new Map([
|
|
223
|
+
...entryAst.resources,
|
|
224
|
+
...entryAst.parameters,
|
|
225
|
+
...entryAst.variables,
|
|
226
|
+
...entryAst.modules
|
|
227
|
+
]);
|
|
228
|
+
for (const [name, module2] of entryAst.modules) {
|
|
229
|
+
if ((0, import_declaration_dependencies.collectDependenciesForDeclaration)(module2, {
|
|
230
|
+
recursive: true,
|
|
231
|
+
declarations: entryDeclarations
|
|
232
|
+
}).has(name)) {
|
|
233
|
+
throw new Error(`Cyclic module dependency involving "${name}" in Stack "${stackName}".`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
238
|
+
0 && (module.exports = {
|
|
239
|
+
wireDeploymentFiles
|
|
240
|
+
});
|
|
241
|
+
//# sourceMappingURL=reference-wiring.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/serialization/bicep/file-layout/reference-wiring.ts"],
|
|
4
|
+
"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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["module"]
|
|
7
|
+
}
|
|
@@ -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,28 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var bicep_exports = {};
|
|
19
|
+
__export(bicep_exports, {
|
|
20
|
+
renderBicepFiles: () => import_render.renderBicepFiles
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(bicep_exports);
|
|
23
|
+
var import_render = require("./render.js");
|
|
24
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
25
|
+
0 && (module.exports = {
|
|
26
|
+
renderBicepFiles
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/serialization/bicep/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { renderBicepFiles, type RenderedBicepFile } from \"./render.js\";\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAAyD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -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"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var render_exports = {};
|
|
19
|
+
__export(render_exports, {
|
|
20
|
+
renderBicepFile: () => renderBicepFile,
|
|
21
|
+
renderBicepFiles: () => renderBicepFiles
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(render_exports);
|
|
24
|
+
var import_stack = require("../../constructs/stack.js");
|
|
25
|
+
var import_build_bicep_files = require("./file-layout/build-bicep-files.js");
|
|
26
|
+
const PRECEDENCE = {
|
|
27
|
+
"??": 1,
|
|
28
|
+
"||": 2,
|
|
29
|
+
"&&": 3,
|
|
30
|
+
"==": 4,
|
|
31
|
+
"!=": 4,
|
|
32
|
+
"=~": 4,
|
|
33
|
+
"!~": 4,
|
|
34
|
+
"<": 5,
|
|
35
|
+
"<=": 5,
|
|
36
|
+
">": 5,
|
|
37
|
+
">=": 5,
|
|
38
|
+
"+": 6,
|
|
39
|
+
"-": 6,
|
|
40
|
+
"*": 7,
|
|
41
|
+
"/": 7,
|
|
42
|
+
"%": 7
|
|
43
|
+
};
|
|
44
|
+
const TERNARY_CONDITION_PRECEDENCE = 0.5;
|
|
45
|
+
const ACCESS_PRECEDENCE = 9;
|
|
46
|
+
function renderBicepFiles(input) {
|
|
47
|
+
const stacks = Array.isArray(input) ? input : [input];
|
|
48
|
+
if (stacks.length === 0) return [];
|
|
49
|
+
const names = /* @__PURE__ */ new Set();
|
|
50
|
+
const files = stacks.flatMap((stack) => {
|
|
51
|
+
if (!(stack instanceof import_stack.Stack)) {
|
|
52
|
+
throw new Error(
|
|
53
|
+
"Bicep generation requires authored Stacks. Restore supported JSON definitions with deserialize() first."
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
return (0, import_build_bicep_files.buildBicepFiles)(stack).map((file) => renderBicepFile(file));
|
|
57
|
+
});
|
|
58
|
+
for (const file of files) {
|
|
59
|
+
if (names.has(file.path)) {
|
|
60
|
+
throw new Error(`Duplicate Bicep file path "${file.path}". Give Stacks distinct names.`);
|
|
61
|
+
}
|
|
62
|
+
names.add(file.path);
|
|
63
|
+
}
|
|
64
|
+
return files;
|
|
65
|
+
}
|
|
66
|
+
function renderBicepFile(file) {
|
|
67
|
+
const sections = [];
|
|
68
|
+
if (file.targetScope !== void 0) {
|
|
69
|
+
sections.push(`targetScope = ${renderStringLiteral(file.targetScope)}`);
|
|
70
|
+
}
|
|
71
|
+
sections.push(...renderNamedDeclarations(file.parameters, renderParameter));
|
|
72
|
+
sections.push(...renderNamedDeclarations(file.variables, renderVariable));
|
|
73
|
+
sections.push(...renderNamedDeclarations(file.resources, renderResource));
|
|
74
|
+
sections.push(...renderNamedDeclarations(file.modules, renderModule));
|
|
75
|
+
sections.push(...renderNamedDeclarations(file.outputs, renderOutput));
|
|
76
|
+
return {
|
|
77
|
+
path: file.fileName,
|
|
78
|
+
contents: `${sections.filter((section) => section.length > 0).join("\n\n")}
|
|
79
|
+
`
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function renderNamedDeclarations(record, render) {
|
|
83
|
+
if (record === void 0) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
return Object.values(record).map((value) => render(value.bicepIdentifier, value));
|
|
87
|
+
}
|
|
88
|
+
function renderDecorators(decorators) {
|
|
89
|
+
if (decorators === void 0) {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
const lines = [];
|
|
93
|
+
if (decorators.description !== void 0) {
|
|
94
|
+
lines.push(`@description(${renderStringLiteral(decorators.description)})`);
|
|
95
|
+
}
|
|
96
|
+
if (decorators.secure) lines.push("@secure()");
|
|
97
|
+
if (decorators.minValue !== void 0) {
|
|
98
|
+
lines.push(`@minValue(${decorators.minValue})`);
|
|
99
|
+
}
|
|
100
|
+
if (decorators.maxValue !== void 0) {
|
|
101
|
+
lines.push(`@maxValue(${decorators.maxValue})`);
|
|
102
|
+
}
|
|
103
|
+
if (decorators.minLength !== void 0) {
|
|
104
|
+
lines.push(`@minLength(${decorators.minLength})`);
|
|
105
|
+
}
|
|
106
|
+
if (decorators.maxLength !== void 0) {
|
|
107
|
+
lines.push(`@maxLength(${decorators.maxLength})`);
|
|
108
|
+
}
|
|
109
|
+
if (decorators.metadata !== void 0) {
|
|
110
|
+
const obj = { kind: "object", value: decorators.metadata };
|
|
111
|
+
lines.push(`@metadata(${renderExpression(obj)})`);
|
|
112
|
+
}
|
|
113
|
+
if (decorators.allowed !== void 0) {
|
|
114
|
+
const arr = {
|
|
115
|
+
kind: "array",
|
|
116
|
+
items: [...decorators.allowed]
|
|
117
|
+
};
|
|
118
|
+
lines.push(`@allowed(${renderExpression(arr)})`);
|
|
119
|
+
}
|
|
120
|
+
if (decorators.discriminator !== void 0) {
|
|
121
|
+
lines.push(`@discriminator(${renderStringLiteral(decorators.discriminator)})`);
|
|
122
|
+
}
|
|
123
|
+
if (decorators.sealed) lines.push("@sealed()");
|
|
124
|
+
if (decorators.export) lines.push("@export()");
|
|
125
|
+
if (decorators.batchSize !== void 0) {
|
|
126
|
+
lines.push(`@batchSize(${decorators.batchSize})`);
|
|
127
|
+
}
|
|
128
|
+
return lines.length > 0 ? `${lines.join("\n")}
|
|
129
|
+
` : "";
|
|
130
|
+
}
|
|
131
|
+
function renderParameter(name, node) {
|
|
132
|
+
return `${renderDecorators(node.decorators)}param ${name} ${renderType(node.valueType)}${node.defaultValue === void 0 ? "" : ` = ${renderExpression(node.defaultValue)}`}`;
|
|
133
|
+
}
|
|
134
|
+
function renderVariable(name, node) {
|
|
135
|
+
return `${renderDecorators(node.decorators)}var ${name} = ${renderExpression(node.value)}`;
|
|
136
|
+
}
|
|
137
|
+
function renderOutput(name, node) {
|
|
138
|
+
return `${renderDecorators(node.decorators)}output ${name} ${renderType(node.valueType)} = ${renderExpression(node.value)}`;
|
|
139
|
+
}
|
|
140
|
+
function renderResource(name, node) {
|
|
141
|
+
return `${renderDecorators(node.decorators)}resource ${name} ${renderStringLiteral(`${node.type}@${node.apiVersion}`)}${node.existing ? " existing" : ""} = ${renderDeclarableBody(node.value)}`;
|
|
142
|
+
}
|
|
143
|
+
function renderModule(name, node) {
|
|
144
|
+
return `${renderDecorators(node.decorators)}module ${name} ${renderStringLiteral(node.path)} = ${renderDeclarableBody(node.value)}`;
|
|
145
|
+
}
|
|
146
|
+
function renderDeclarableBody(node) {
|
|
147
|
+
switch (node.kind) {
|
|
148
|
+
case "object":
|
|
149
|
+
return renderExpression(node);
|
|
150
|
+
case "if-condition":
|
|
151
|
+
return `if (${renderExpression(node.condition)}) ${renderExpression(node.body)}`;
|
|
152
|
+
case "for-expression":
|
|
153
|
+
return renderExpression(node);
|
|
154
|
+
default:
|
|
155
|
+
return assertNever(node);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function renderExpression(node, parentPrecedence) {
|
|
159
|
+
switch (node.kind) {
|
|
160
|
+
case "null":
|
|
161
|
+
return "null";
|
|
162
|
+
case "boolean":
|
|
163
|
+
return node.value ? "true" : "false";
|
|
164
|
+
case "integer":
|
|
165
|
+
return node.value;
|
|
166
|
+
case "string":
|
|
167
|
+
return renderStringLiteral(node.value);
|
|
168
|
+
case "array":
|
|
169
|
+
if (node.items.length === 0) {
|
|
170
|
+
return "[]";
|
|
171
|
+
}
|
|
172
|
+
return `[
|
|
173
|
+
${indent(node.items.map((item) => renderExpression(item)).join("\n"))}
|
|
174
|
+
]`;
|
|
175
|
+
case "object": {
|
|
176
|
+
const entries = Object.entries(node.value);
|
|
177
|
+
if (entries.length === 0) {
|
|
178
|
+
return "{}";
|
|
179
|
+
}
|
|
180
|
+
return `{
|
|
181
|
+
${indent(entries.map(([key, value]) => `${renderPropertyKey(key)}: ${renderExpression(value)}`).join("\n"))}
|
|
182
|
+
}`;
|
|
183
|
+
}
|
|
184
|
+
case "identifier":
|
|
185
|
+
return node.id;
|
|
186
|
+
case "function-call": {
|
|
187
|
+
if (typeof node.target === "string" && node.target === "concat" && node.args.length > 0) {
|
|
188
|
+
const inner = node.args.map(
|
|
189
|
+
(arg) => arg.kind === "string" ? escapeStringContent(arg.value) : `\${${renderExpression(arg)}}`
|
|
190
|
+
).join("");
|
|
191
|
+
return `'${inner}'`;
|
|
192
|
+
}
|
|
193
|
+
const target = typeof node.target === "string" ? node.target : renderExpression(node.target);
|
|
194
|
+
return `${target}(${node.args.map((arg) => renderExpression(arg)).join(", ")})`;
|
|
195
|
+
}
|
|
196
|
+
case "instance-function-call":
|
|
197
|
+
return `${renderExpression(node.base, ACCESS_PRECEDENCE)}.${node.name}(${node.args.map((arg) => renderExpression(arg)).join(", ")})`;
|
|
198
|
+
case "property-access":
|
|
199
|
+
return `${renderExpression(node.base, ACCESS_PRECEDENCE)}${node.nullish ? ".?" : "."}${node.property}`;
|
|
200
|
+
case "array-access":
|
|
201
|
+
return `${renderExpression(node.base, ACCESS_PRECEDENCE)}[${node.nullish ? "?" : ""}${node.fromEnd ? "^" : ""}${renderExpression(node.index)}]`;
|
|
202
|
+
case "binary-operation": {
|
|
203
|
+
const prec = PRECEDENCE[node.operator] ?? 0;
|
|
204
|
+
const inner = `${renderExpression(node.left, prec)} ${node.operator} ${renderExpression(node.right, prec + 0.5)}`;
|
|
205
|
+
return parentPrecedence !== void 0 && prec < parentPrecedence ? `(${inner})` : inner;
|
|
206
|
+
}
|
|
207
|
+
case "unary-operation": {
|
|
208
|
+
const UNARY_PREC = 8;
|
|
209
|
+
const inner = `${node.operator}${renderExpression(node.argument, UNARY_PREC)}`;
|
|
210
|
+
return parentPrecedence !== void 0 && parentPrecedence > UNARY_PREC ? `(${inner})` : inner;
|
|
211
|
+
}
|
|
212
|
+
case "ternary-operation": {
|
|
213
|
+
const inner = `${renderExpression(node.condition, TERNARY_CONDITION_PRECEDENCE)} ? ${renderExpression(node.trueValue)} : ${renderExpression(node.falseValue)}`;
|
|
214
|
+
return parentPrecedence !== void 0 && parentPrecedence > 0 ? `(${inner})` : inner;
|
|
215
|
+
}
|
|
216
|
+
case "if-condition":
|
|
217
|
+
return `if (${renderExpression(node.condition)}) ${renderExpression(node.body)}`;
|
|
218
|
+
case "for-expression": {
|
|
219
|
+
const variables = node.indexVariable === void 0 ? node.itemVariable : `(${node.itemVariable}, ${node.indexVariable})`;
|
|
220
|
+
return `[for ${variables} in ${renderExpression(node.collection)}: ${renderExpression(node.body)}]`;
|
|
221
|
+
}
|
|
222
|
+
case "interpolated-string": {
|
|
223
|
+
const inner = node.segments.map(
|
|
224
|
+
(seg) => seg.kind === "string" ? escapeStringContent(seg.value) : `\${${renderExpression(seg)}}`
|
|
225
|
+
).join("");
|
|
226
|
+
return `'${inner}'`;
|
|
227
|
+
}
|
|
228
|
+
default:
|
|
229
|
+
return assertNever(node);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function renderType(node) {
|
|
233
|
+
switch (node.kind) {
|
|
234
|
+
case "primitive-type":
|
|
235
|
+
return node.name;
|
|
236
|
+
case "type-reference":
|
|
237
|
+
return node.name;
|
|
238
|
+
case "string-type-literal":
|
|
239
|
+
return renderStringLiteral(node.value);
|
|
240
|
+
case "integer-type-literal":
|
|
241
|
+
return node.value;
|
|
242
|
+
case "boolean-type-literal":
|
|
243
|
+
return node.value ? "true" : "false";
|
|
244
|
+
case "null-type-literal":
|
|
245
|
+
return "null";
|
|
246
|
+
case "array-type":
|
|
247
|
+
return `${needsParenthesizedArrayItem(node.item) ? `(${renderType(node.item)})` : renderType(node.item)}[]`;
|
|
248
|
+
case "object-type-property":
|
|
249
|
+
return `${renderDecorators(node.decorators)}${renderPropertyKey(node.key)}${node.optional ? "?" : ""}: ${renderType(node.valueType)}`;
|
|
250
|
+
case "object-type-additional-properties":
|
|
251
|
+
return `${renderDecorators(node.decorators)}*: ${renderType(node.valueType)}`;
|
|
252
|
+
case "object-type": {
|
|
253
|
+
const members = [
|
|
254
|
+
...node.properties.map((property) => renderType(property)),
|
|
255
|
+
...node.additionalProperties === void 0 ? [] : [renderType(node.additionalProperties)]
|
|
256
|
+
];
|
|
257
|
+
if (members.length === 0) {
|
|
258
|
+
return "{}";
|
|
259
|
+
}
|
|
260
|
+
return `{
|
|
261
|
+
${indent(members.join("\n"))}
|
|
262
|
+
}`;
|
|
263
|
+
}
|
|
264
|
+
case "union-type-member":
|
|
265
|
+
return renderType(node.valueType);
|
|
266
|
+
case "union-type":
|
|
267
|
+
return node.members.map((member) => renderType(member.valueType)).join(" | ");
|
|
268
|
+
case "nullable-type":
|
|
269
|
+
return `${renderType(node.base)}?`;
|
|
270
|
+
case "parameterized-type-argument":
|
|
271
|
+
return renderType(node.valueType);
|
|
272
|
+
case "parameterized-type-instantiation":
|
|
273
|
+
return `${renderType(node.base)}<${node.args.map((arg) => renderType(arg.valueType)).join(", ")}>`;
|
|
274
|
+
default:
|
|
275
|
+
return assertNever(node);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function needsParenthesizedArrayItem(node) {
|
|
279
|
+
switch (node.kind) {
|
|
280
|
+
case "primitive-type":
|
|
281
|
+
case "type-reference":
|
|
282
|
+
case "parameterized-type-instantiation":
|
|
283
|
+
return false;
|
|
284
|
+
default:
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function renderPropertyKey(key) {
|
|
289
|
+
return /^[A-Za-z_][A-Za-z0-9_]*$/u.test(key) ? key : renderStringLiteral(key);
|
|
290
|
+
}
|
|
291
|
+
function renderStringLiteral(value) {
|
|
292
|
+
return `'${escapeStringContent(value)}'`;
|
|
293
|
+
}
|
|
294
|
+
function escapeStringContent(value) {
|
|
295
|
+
return value.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(/\$\{/g, "\\${").replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace(/\t/g, "\\t");
|
|
296
|
+
}
|
|
297
|
+
function indent(value, level = 1) {
|
|
298
|
+
const prefix = " ".repeat(level);
|
|
299
|
+
return value.split("\n").map((line) => `${prefix}${line}`).join("\n");
|
|
300
|
+
}
|
|
301
|
+
function unsupported(kind) {
|
|
302
|
+
return new Error(`Unsupported Bicep renderer node kind: ${kind}.`);
|
|
303
|
+
}
|
|
304
|
+
function assertNever(value) {
|
|
305
|
+
throw unsupported(value.kind ?? "unknown");
|
|
306
|
+
}
|
|
307
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
308
|
+
0 && (module.exports = {
|
|
309
|
+
renderBicepFile,
|
|
310
|
+
renderBicepFiles
|
|
311
|
+
});
|
|
312
|
+
//# sourceMappingURL=render.js.map
|