@azure/provisioning-core 1.0.0-beta.1
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 +7 -0
- package/LICENSE +21 -0
- package/README.md +40 -0
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts +50 -0
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -0
- package/dist/browser/constructs/built-in-resources/resource-group.js +100 -0
- package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -0
- package/dist/browser/constructs/output.d.ts +80 -0
- package/dist/browser/constructs/output.d.ts.map +1 -0
- package/dist/browser/constructs/output.js +75 -0
- package/dist/browser/constructs/output.js.map +1 -0
- package/dist/browser/constructs/parameter.d.ts +77 -0
- package/dist/browser/constructs/parameter.d.ts.map +1 -0
- package/dist/browser/constructs/parameter.js +93 -0
- package/dist/browser/constructs/parameter.js.map +1 -0
- package/dist/browser/constructs/provisioning-component.d.ts +91 -0
- package/dist/browser/constructs/provisioning-component.d.ts.map +1 -0
- package/dist/browser/constructs/provisioning-component.js +150 -0
- package/dist/browser/constructs/provisioning-component.js.map +1 -0
- package/dist/browser/constructs/resource/resource-proxy.d.ts +134 -0
- package/dist/browser/constructs/resource/resource-proxy.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-proxy.js +517 -0
- package/dist/browser/constructs/resource/resource-proxy.js.map +1 -0
- package/dist/browser/constructs/resource/resource-query.d.ts +23 -0
- package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-query.js +69 -0
- package/dist/browser/constructs/resource/resource-query.js.map +1 -0
- package/dist/browser/constructs/resource/resource-registry.d.ts +99 -0
- package/dist/browser/constructs/resource/resource-registry.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-registry.js +51 -0
- package/dist/browser/constructs/resource/resource-registry.js.map +1 -0
- package/dist/browser/constructs/resource/resource-type-registry.d.ts +46 -0
- package/dist/browser/constructs/resource/resource-type-registry.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-type-registry.js +156 -0
- package/dist/browser/constructs/resource/resource-type-registry.js.map +1 -0
- package/dist/browser/constructs/resource/resource-utils.d.ts +60 -0
- package/dist/browser/constructs/resource/resource-utils.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-utils.js +75 -0
- package/dist/browser/constructs/resource/resource-utils.js.map +1 -0
- package/dist/browser/constructs/resource/resource.d.ts +460 -0
- package/dist/browser/constructs/resource/resource.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource.js +582 -0
- package/dist/browser/constructs/resource/resource.js.map +1 -0
- package/dist/browser/constructs/stack.d.ts +110 -0
- package/dist/browser/constructs/stack.d.ts.map +1 -0
- package/dist/browser/constructs/stack.js +110 -0
- package/dist/browser/constructs/stack.js.map +1 -0
- package/dist/browser/constructs/variable.d.ts +63 -0
- package/dist/browser/constructs/variable.d.ts.map +1 -0
- package/dist/browser/constructs/variable.js +74 -0
- package/dist/browser/constructs/variable.js.map +1 -0
- package/dist/browser/deployment-context/deployment-context.d.ts +27 -0
- package/dist/browser/deployment-context/deployment-context.d.ts.map +1 -0
- package/dist/browser/deployment-context/deployment-context.js +4 -0
- package/dist/browser/deployment-context/deployment-context.js.map +1 -0
- package/dist/browser/expression/ast-nodes.d.ts +100 -0
- package/dist/browser/expression/ast-nodes.d.ts.map +1 -0
- package/dist/browser/expression/ast-nodes.js +125 -0
- package/dist/browser/expression/ast-nodes.js.map +1 -0
- package/dist/browser/expression/expressions.d.ts +164 -0
- package/dist/browser/expression/expressions.d.ts.map +1 -0
- package/dist/browser/expression/expressions.js +211 -0
- package/dist/browser/expression/expressions.js.map +1 -0
- package/dist/browser/fn.d.ts +194 -0
- package/dist/browser/fn.d.ts.map +1 -0
- package/dist/browser/fn.js +334 -0
- package/dist/browser/fn.js.map +1 -0
- package/dist/browser/index.d.ts +25 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +17 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/internal.d.ts +13 -0
- package/dist/browser/internal.d.ts.map +1 -0
- package/dist/browser/internal.js +10 -0
- package/dist/browser/internal.js.map +1 -0
- package/dist/browser/naming/naming-policy.d.ts +56 -0
- package/dist/browser/naming/naming-policy.d.ts.map +1 -0
- package/dist/browser/naming/naming-policy.js +97 -0
- package/dist/browser/naming/naming-policy.js.map +1 -0
- package/dist/browser/naming/naming-rules.d.ts +15 -0
- package/dist/browser/naming/naming-rules.d.ts.map +1 -0
- package/dist/browser/naming/naming-rules.js +15 -0
- package/dist/browser/naming/naming-rules.js.map +1 -0
- package/dist/browser/package.json +8 -0
- package/dist/browser/serialization/contract/generated/ast.d.ts +508 -0
- package/dist/browser/serialization/contract/generated/ast.d.ts.map +1 -0
- package/dist/browser/serialization/contract/generated/ast.js +23 -0
- package/dist/browser/serialization/contract/generated/ast.js.map +1 -0
- package/dist/browser/serialization/contract/index.d.ts +2 -0
- package/dist/browser/serialization/contract/index.d.ts.map +1 -0
- package/dist/browser/serialization/contract/index.js +4 -0
- package/dist/browser/serialization/contract/index.js.map +1 -0
- package/dist/browser/serialization/index.d.ts +4 -0
- package/dist/browser/serialization/index.d.ts.map +1 -0
- package/dist/browser/serialization/index.js +5 -0
- package/dist/browser/serialization/index.js.map +1 -0
- package/dist/browser/serialization/json/deserialize.d.ts +24 -0
- package/dist/browser/serialization/json/deserialize.d.ts.map +1 -0
- package/dist/browser/serialization/json/deserialize.js +437 -0
- package/dist/browser/serialization/json/deserialize.js.map +1 -0
- package/dist/browser/serialization/json/encoding.d.ts +4 -0
- package/dist/browser/serialization/json/encoding.d.ts.map +1 -0
- package/dist/browser/serialization/json/encoding.js +319 -0
- package/dist/browser/serialization/json/encoding.js.map +1 -0
- package/dist/browser/serialization/json/expression.d.ts +32 -0
- package/dist/browser/serialization/json/expression.d.ts.map +1 -0
- package/dist/browser/serialization/json/expression.js +494 -0
- package/dist/browser/serialization/json/expression.js.map +1 -0
- package/dist/browser/serialization/json/lower.d.ts +41 -0
- package/dist/browser/serialization/json/lower.d.ts.map +1 -0
- package/dist/browser/serialization/json/lower.js +334 -0
- package/dist/browser/serialization/json/lower.js.map +1 -0
- package/dist/browser/serialization/json/pluralize-config.d.ts +3 -0
- package/dist/browser/serialization/json/pluralize-config.d.ts.map +1 -0
- package/dist/browser/serialization/json/pluralize-config.js +7 -0
- package/dist/browser/serialization/json/pluralize-config.js.map +1 -0
- package/dist/browser/serialization/json/serialize.d.ts +12 -0
- package/dist/browser/serialization/json/serialize.d.ts.map +1 -0
- package/dist/browser/serialization/json/serialize.js +389 -0
- package/dist/browser/serialization/json/serialize.js.map +1 -0
- package/dist/browser/serialization/json/util.d.ts +2 -0
- package/dist/browser/serialization/json/util.d.ts.map +1 -0
- package/dist/browser/serialization/json/util.js +19 -0
- package/dist/browser/serialization/json/util.js.map +1 -0
- package/dist/browser/serialization/utils.d.ts +3 -0
- package/dist/browser/serialization/utils.d.ts.map +1 -0
- package/dist/browser/serialization/utils.js +146 -0
- package/dist/browser/serialization/utils.js.map +1 -0
- package/dist/browser/shape/shape-registry.d.ts +51 -0
- package/dist/browser/shape/shape-registry.d.ts.map +1 -0
- package/dist/browser/shape/shape-registry.js +41 -0
- package/dist/browser/shape/shape-registry.js.map +1 -0
- package/dist/browser/shape/shape.d.ts +407 -0
- package/dist/browser/shape/shape.d.ts.map +1 -0
- package/dist/browser/shape/shape.js +424 -0
- package/dist/browser/shape/shape.js.map +1 -0
- package/dist/browser/shape/value-encoding.d.ts +121 -0
- package/dist/browser/shape/value-encoding.d.ts.map +1 -0
- package/dist/browser/shape/value-encoding.js +32 -0
- package/dist/browser/shape/value-encoding.js.map +1 -0
- package/dist/browser/types.d.ts +9 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +4 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/browser/util.d.ts +33 -0
- package/dist/browser/util.d.ts.map +1 -0
- package/dist/browser/util.js +74 -0
- package/dist/browser/util.js.map +1 -0
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +50 -0
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -0
- package/dist/commonjs/constructs/built-in-resources/resource-group.js +114 -0
- package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +7 -0
- package/dist/commonjs/constructs/output.d.ts +80 -0
- package/dist/commonjs/constructs/output.d.ts.map +1 -0
- package/dist/commonjs/constructs/output.js +75 -0
- package/dist/commonjs/constructs/output.js.map +7 -0
- package/dist/commonjs/constructs/parameter.d.ts +77 -0
- package/dist/commonjs/constructs/parameter.d.ts.map +1 -0
- package/dist/commonjs/constructs/parameter.js +95 -0
- package/dist/commonjs/constructs/parameter.js.map +7 -0
- package/dist/commonjs/constructs/provisioning-component.d.ts +91 -0
- package/dist/commonjs/constructs/provisioning-component.d.ts.map +1 -0
- package/dist/commonjs/constructs/provisioning-component.js +130 -0
- package/dist/commonjs/constructs/provisioning-component.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-proxy.d.ts +134 -0
- package/dist/commonjs/constructs/resource/resource-proxy.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-proxy.js +456 -0
- package/dist/commonjs/constructs/resource/resource-proxy.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-query.d.ts +23 -0
- package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-query.js +68 -0
- package/dist/commonjs/constructs/resource/resource-query.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-registry.d.ts +99 -0
- package/dist/commonjs/constructs/resource/resource-registry.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-registry.js +49 -0
- package/dist/commonjs/constructs/resource/resource-registry.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-type-registry.d.ts +46 -0
- package/dist/commonjs/constructs/resource/resource-type-registry.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-type-registry.js +178 -0
- package/dist/commonjs/constructs/resource/resource-type-registry.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource-utils.d.ts +60 -0
- package/dist/commonjs/constructs/resource/resource-utils.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-utils.js +51 -0
- package/dist/commonjs/constructs/resource/resource-utils.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource.d.ts +460 -0
- package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource.js +455 -0
- package/dist/commonjs/constructs/resource/resource.js.map +7 -0
- package/dist/commonjs/constructs/stack.d.ts +110 -0
- package/dist/commonjs/constructs/stack.d.ts.map +1 -0
- package/dist/commonjs/constructs/stack.js +101 -0
- package/dist/commonjs/constructs/stack.js.map +7 -0
- package/dist/commonjs/constructs/variable.d.ts +63 -0
- package/dist/commonjs/constructs/variable.d.ts.map +1 -0
- package/dist/commonjs/constructs/variable.js +85 -0
- package/dist/commonjs/constructs/variable.js.map +7 -0
- package/dist/commonjs/deployment-context/deployment-context.d.ts +27 -0
- package/dist/commonjs/deployment-context/deployment-context.d.ts.map +1 -0
- package/dist/commonjs/deployment-context/deployment-context.js +16 -0
- package/dist/commonjs/deployment-context/deployment-context.js.map +7 -0
- package/dist/commonjs/expression/ast-nodes.d.ts +100 -0
- package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -0
- package/dist/commonjs/expression/ast-nodes.js +152 -0
- package/dist/commonjs/expression/ast-nodes.js.map +7 -0
- package/dist/commonjs/expression/expressions.d.ts +164 -0
- package/dist/commonjs/expression/expressions.d.ts.map +1 -0
- package/dist/commonjs/expression/expressions.js +171 -0
- package/dist/commonjs/expression/expressions.js.map +7 -0
- package/dist/commonjs/fn.d.ts +194 -0
- package/dist/commonjs/fn.d.ts.map +1 -0
- package/dist/commonjs/fn.js +382 -0
- package/dist/commonjs/fn.js.map +7 -0
- package/dist/commonjs/index.d.ts +25 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +93 -0
- package/dist/commonjs/index.js.map +7 -0
- package/dist/commonjs/internal.d.ts +13 -0
- package/dist/commonjs/internal.d.ts.map +1 -0
- package/dist/commonjs/internal.js +88 -0
- package/dist/commonjs/internal.js.map +7 -0
- package/dist/commonjs/naming/naming-policy.d.ts +56 -0
- package/dist/commonjs/naming/naming-policy.d.ts.map +1 -0
- package/dist/commonjs/naming/naming-policy.js +99 -0
- package/dist/commonjs/naming/naming-policy.js.map +7 -0
- package/dist/commonjs/naming/naming-rules.d.ts +15 -0
- package/dist/commonjs/naming/naming-rules.d.ts.map +1 -0
- package/dist/commonjs/naming/naming-rules.js +39 -0
- package/dist/commonjs/naming/naming-rules.js.map +7 -0
- package/dist/commonjs/package.json +8 -0
- package/dist/commonjs/serialization/contract/generated/ast.d.ts +508 -0
- package/dist/commonjs/serialization/contract/generated/ast.d.ts.map +1 -0
- package/dist/commonjs/serialization/contract/generated/ast.js +40 -0
- package/dist/commonjs/serialization/contract/generated/ast.js.map +7 -0
- package/dist/commonjs/serialization/contract/index.d.ts +2 -0
- package/dist/commonjs/serialization/contract/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/contract/index.js +22 -0
- package/dist/commonjs/serialization/contract/index.js.map +7 -0
- package/dist/commonjs/serialization/index.d.ts +4 -0
- package/dist/commonjs/serialization/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/index.js +31 -0
- package/dist/commonjs/serialization/index.js.map +7 -0
- package/dist/commonjs/serialization/json/deserialize.d.ts +24 -0
- package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/deserialize.js +385 -0
- package/dist/commonjs/serialization/json/deserialize.js.map +7 -0
- package/dist/commonjs/serialization/json/encoding.d.ts +4 -0
- package/dist/commonjs/serialization/json/encoding.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/encoding.js +306 -0
- package/dist/commonjs/serialization/json/encoding.js.map +7 -0
- package/dist/commonjs/serialization/json/expression.d.ts +32 -0
- package/dist/commonjs/serialization/json/expression.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/expression.js +509 -0
- package/dist/commonjs/serialization/json/expression.js.map +7 -0
- package/dist/commonjs/serialization/json/lower.d.ts +41 -0
- package/dist/commonjs/serialization/json/lower.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/lower.js +272 -0
- package/dist/commonjs/serialization/json/lower.js.map +7 -0
- package/dist/commonjs/serialization/json/pluralize-config.d.ts +3 -0
- package/dist/commonjs/serialization/json/pluralize-config.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/pluralize-config.js +37 -0
- package/dist/commonjs/serialization/json/pluralize-config.js.map +7 -0
- package/dist/commonjs/serialization/json/serialize.d.ts +12 -0
- package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/serialize.js +352 -0
- package/dist/commonjs/serialization/json/serialize.js.map +7 -0
- package/dist/commonjs/serialization/json/util.d.ts +2 -0
- package/dist/commonjs/serialization/json/util.d.ts.map +1 -0
- package/dist/commonjs/serialization/json/util.js +37 -0
- package/dist/commonjs/serialization/json/util.js.map +7 -0
- package/dist/commonjs/serialization/utils.d.ts +3 -0
- package/dist/commonjs/serialization/utils.d.ts.map +1 -0
- package/dist/commonjs/serialization/utils.js +169 -0
- package/dist/commonjs/serialization/utils.js.map +7 -0
- package/dist/commonjs/shape/shape-registry.d.ts +51 -0
- package/dist/commonjs/shape/shape-registry.d.ts.map +1 -0
- package/dist/commonjs/shape/shape-registry.js +40 -0
- package/dist/commonjs/shape/shape-registry.js.map +7 -0
- package/dist/commonjs/shape/shape.d.ts +407 -0
- package/dist/commonjs/shape/shape.d.ts.map +1 -0
- package/dist/commonjs/shape/shape.js +290 -0
- package/dist/commonjs/shape/shape.js.map +7 -0
- package/dist/commonjs/shape/value-encoding.d.ts +121 -0
- package/dist/commonjs/shape/value-encoding.d.ts.map +1 -0
- package/dist/commonjs/shape/value-encoding.js +62 -0
- package/dist/commonjs/shape/value-encoding.js.map +7 -0
- package/dist/commonjs/tsdoc-metadata.json +11 -0
- package/dist/commonjs/types.d.ts +9 -0
- package/dist/commonjs/types.d.ts.map +1 -0
- package/dist/commonjs/types.js +16 -0
- package/dist/commonjs/types.js.map +7 -0
- package/dist/commonjs/util.d.ts +33 -0
- package/dist/commonjs/util.d.ts.map +1 -0
- package/dist/commonjs/util.js +73 -0
- package/dist/commonjs/util.js.map +7 -0
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts +50 -0
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -0
- package/dist/esm/constructs/built-in-resources/resource-group.js +100 -0
- package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -0
- package/dist/esm/constructs/output.d.ts +80 -0
- package/dist/esm/constructs/output.d.ts.map +1 -0
- package/dist/esm/constructs/output.js +75 -0
- package/dist/esm/constructs/output.js.map +1 -0
- package/dist/esm/constructs/parameter.d.ts +77 -0
- package/dist/esm/constructs/parameter.d.ts.map +1 -0
- package/dist/esm/constructs/parameter.js +93 -0
- package/dist/esm/constructs/parameter.js.map +1 -0
- package/dist/esm/constructs/provisioning-component.d.ts +91 -0
- package/dist/esm/constructs/provisioning-component.d.ts.map +1 -0
- package/dist/esm/constructs/provisioning-component.js +150 -0
- package/dist/esm/constructs/provisioning-component.js.map +1 -0
- package/dist/esm/constructs/resource/resource-proxy.d.ts +134 -0
- package/dist/esm/constructs/resource/resource-proxy.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-proxy.js +517 -0
- package/dist/esm/constructs/resource/resource-proxy.js.map +1 -0
- package/dist/esm/constructs/resource/resource-query.d.ts +23 -0
- package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-query.js +69 -0
- package/dist/esm/constructs/resource/resource-query.js.map +1 -0
- package/dist/esm/constructs/resource/resource-registry.d.ts +99 -0
- package/dist/esm/constructs/resource/resource-registry.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-registry.js +51 -0
- package/dist/esm/constructs/resource/resource-registry.js.map +1 -0
- package/dist/esm/constructs/resource/resource-type-registry.d.ts +46 -0
- package/dist/esm/constructs/resource/resource-type-registry.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-type-registry.js +156 -0
- package/dist/esm/constructs/resource/resource-type-registry.js.map +1 -0
- package/dist/esm/constructs/resource/resource-utils.d.ts +60 -0
- package/dist/esm/constructs/resource/resource-utils.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-utils.js +75 -0
- package/dist/esm/constructs/resource/resource-utils.js.map +1 -0
- package/dist/esm/constructs/resource/resource.d.ts +460 -0
- package/dist/esm/constructs/resource/resource.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource.js +582 -0
- package/dist/esm/constructs/resource/resource.js.map +1 -0
- package/dist/esm/constructs/stack.d.ts +110 -0
- package/dist/esm/constructs/stack.d.ts.map +1 -0
- package/dist/esm/constructs/stack.js +110 -0
- package/dist/esm/constructs/stack.js.map +1 -0
- package/dist/esm/constructs/variable.d.ts +63 -0
- package/dist/esm/constructs/variable.d.ts.map +1 -0
- package/dist/esm/constructs/variable.js +74 -0
- package/dist/esm/constructs/variable.js.map +1 -0
- package/dist/esm/deployment-context/deployment-context.d.ts +27 -0
- package/dist/esm/deployment-context/deployment-context.d.ts.map +1 -0
- package/dist/esm/deployment-context/deployment-context.js +4 -0
- package/dist/esm/deployment-context/deployment-context.js.map +1 -0
- package/dist/esm/expression/ast-nodes.d.ts +100 -0
- package/dist/esm/expression/ast-nodes.d.ts.map +1 -0
- package/dist/esm/expression/ast-nodes.js +125 -0
- package/dist/esm/expression/ast-nodes.js.map +1 -0
- package/dist/esm/expression/expressions.d.ts +164 -0
- package/dist/esm/expression/expressions.d.ts.map +1 -0
- package/dist/esm/expression/expressions.js +211 -0
- package/dist/esm/expression/expressions.js.map +1 -0
- package/dist/esm/fn.d.ts +194 -0
- package/dist/esm/fn.d.ts.map +1 -0
- package/dist/esm/fn.js +334 -0
- package/dist/esm/fn.js.map +1 -0
- package/dist/esm/index.d.ts +25 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +17 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal.d.ts +13 -0
- package/dist/esm/internal.d.ts.map +1 -0
- package/dist/esm/internal.js +10 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/naming/naming-policy.d.ts +56 -0
- package/dist/esm/naming/naming-policy.d.ts.map +1 -0
- package/dist/esm/naming/naming-policy.js +97 -0
- package/dist/esm/naming/naming-policy.js.map +1 -0
- package/dist/esm/naming/naming-rules.d.ts +15 -0
- package/dist/esm/naming/naming-rules.d.ts.map +1 -0
- package/dist/esm/naming/naming-rules.js +15 -0
- package/dist/esm/naming/naming-rules.js.map +1 -0
- package/dist/esm/package.json +8 -0
- package/dist/esm/serialization/contract/generated/ast.d.ts +508 -0
- package/dist/esm/serialization/contract/generated/ast.d.ts.map +1 -0
- package/dist/esm/serialization/contract/generated/ast.js +23 -0
- package/dist/esm/serialization/contract/generated/ast.js.map +1 -0
- package/dist/esm/serialization/contract/index.d.ts +2 -0
- package/dist/esm/serialization/contract/index.d.ts.map +1 -0
- package/dist/esm/serialization/contract/index.js +4 -0
- package/dist/esm/serialization/contract/index.js.map +1 -0
- package/dist/esm/serialization/index.d.ts +4 -0
- package/dist/esm/serialization/index.d.ts.map +1 -0
- package/dist/esm/serialization/index.js +5 -0
- package/dist/esm/serialization/index.js.map +1 -0
- package/dist/esm/serialization/json/deserialize.d.ts +24 -0
- package/dist/esm/serialization/json/deserialize.d.ts.map +1 -0
- package/dist/esm/serialization/json/deserialize.js +437 -0
- package/dist/esm/serialization/json/deserialize.js.map +1 -0
- package/dist/esm/serialization/json/encoding.d.ts +4 -0
- package/dist/esm/serialization/json/encoding.d.ts.map +1 -0
- package/dist/esm/serialization/json/encoding.js +319 -0
- package/dist/esm/serialization/json/encoding.js.map +1 -0
- package/dist/esm/serialization/json/expression.d.ts +32 -0
- package/dist/esm/serialization/json/expression.d.ts.map +1 -0
- package/dist/esm/serialization/json/expression.js +494 -0
- package/dist/esm/serialization/json/expression.js.map +1 -0
- package/dist/esm/serialization/json/lower.d.ts +41 -0
- package/dist/esm/serialization/json/lower.d.ts.map +1 -0
- package/dist/esm/serialization/json/lower.js +334 -0
- package/dist/esm/serialization/json/lower.js.map +1 -0
- package/dist/esm/serialization/json/pluralize-config.d.ts +3 -0
- package/dist/esm/serialization/json/pluralize-config.d.ts.map +1 -0
- package/dist/esm/serialization/json/pluralize-config.js +7 -0
- package/dist/esm/serialization/json/pluralize-config.js.map +1 -0
- package/dist/esm/serialization/json/serialize.d.ts +12 -0
- package/dist/esm/serialization/json/serialize.d.ts.map +1 -0
- package/dist/esm/serialization/json/serialize.js +389 -0
- package/dist/esm/serialization/json/serialize.js.map +1 -0
- package/dist/esm/serialization/json/util.d.ts +2 -0
- package/dist/esm/serialization/json/util.d.ts.map +1 -0
- package/dist/esm/serialization/json/util.js +19 -0
- package/dist/esm/serialization/json/util.js.map +1 -0
- package/dist/esm/serialization/utils.d.ts +3 -0
- package/dist/esm/serialization/utils.d.ts.map +1 -0
- package/dist/esm/serialization/utils.js +146 -0
- package/dist/esm/serialization/utils.js.map +1 -0
- package/dist/esm/shape/shape-registry.d.ts +51 -0
- package/dist/esm/shape/shape-registry.d.ts.map +1 -0
- package/dist/esm/shape/shape-registry.js +41 -0
- package/dist/esm/shape/shape-registry.js.map +1 -0
- package/dist/esm/shape/shape.d.ts +407 -0
- package/dist/esm/shape/shape.d.ts.map +1 -0
- package/dist/esm/shape/shape.js +424 -0
- package/dist/esm/shape/shape.js.map +1 -0
- package/dist/esm/shape/value-encoding.d.ts +121 -0
- package/dist/esm/shape/value-encoding.d.ts.map +1 -0
- package/dist/esm/shape/value-encoding.js +32 -0
- package/dist/esm/shape/value-encoding.js.map +1 -0
- package/dist/esm/types.d.ts +9 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +4 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/util.d.ts +33 -0
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +74 -0
- package/dist/esm/util.js.map +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { PrimitiveTypeMap } from "../serialization/contract/index.js";
|
|
2
|
+
import type { Expression, ExpressionOrValue } from "../expression/expressions.js";
|
|
3
|
+
import type { Stack } from "./stack.js";
|
|
4
|
+
export type InferParamType<T extends keyof PrimitiveTypeMap, A> = A extends readonly (infer E)[] ? E : PrimitiveTypeMap[T];
|
|
5
|
+
/**
|
|
6
|
+
* A value accepted as a parameter's `defaultValue`: a literal of the declared
|
|
7
|
+
* type or an `Expression` of it. Resource views are intentionally excluded —
|
|
8
|
+
* a Bicep `param` default cannot reference resources.
|
|
9
|
+
*/
|
|
10
|
+
export type ParameterValue<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap> = ExpressionOrValue<PrimitiveTypeMap[T]>;
|
|
11
|
+
export type ParameterOptions<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap, A extends readonly PrimitiveTypeMap[T][] | undefined = undefined> = {
|
|
12
|
+
readonly defaultValue?: ExpressionOrValue<InferParamType<T, A>> | undefined;
|
|
13
|
+
readonly description?: string | undefined;
|
|
14
|
+
readonly secure?: boolean | undefined;
|
|
15
|
+
readonly minValue?: number | undefined;
|
|
16
|
+
readonly maxValue?: number | undefined;
|
|
17
|
+
readonly minLength?: number | undefined;
|
|
18
|
+
readonly maxLength?: number | undefined;
|
|
19
|
+
readonly metadata?: Record<string, unknown> | undefined;
|
|
20
|
+
readonly allowed?: A;
|
|
21
|
+
readonly discriminator?: string | undefined;
|
|
22
|
+
readonly sealed?: boolean | undefined;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Pure declaration data for a deployment parameter. Stored on the stack
|
|
26
|
+
* (paired with the returned expression handle in {@link ParameterEntry});
|
|
27
|
+
* read by the serializer at emit time. Not part of the value-level handle.
|
|
28
|
+
*/
|
|
29
|
+
export interface ParameterMetadata extends ParameterOptions<keyof PrimitiveTypeMap, readonly PrimitiveTypeMap[keyof PrimitiveTypeMap][] | undefined> {
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly type: keyof PrimitiveTypeMap;
|
|
32
|
+
}
|
|
33
|
+
export type Parameter<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap, A extends readonly PrimitiveTypeMap[T][] | undefined = undefined> = Expression<InferParamType<T, A>>;
|
|
34
|
+
/**
|
|
35
|
+
* Authoring-time collection of a stack's deployment parameters. Backed by an
|
|
36
|
+
* ordered private array; supports add/get/delete/iteration. Look parameters up
|
|
37
|
+
* by name via {@link ParameterCollection.get}.
|
|
38
|
+
*/
|
|
39
|
+
export declare class ParameterCollection {
|
|
40
|
+
#private;
|
|
41
|
+
/** Add a parameter; returns its expression handle. Throws on duplicate name. */
|
|
42
|
+
add<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap, const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined>(name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A>;
|
|
43
|
+
/** The expression handle for a parameter, or `undefined`. */
|
|
44
|
+
get(name: string): Parameter | undefined;
|
|
45
|
+
/** The declaration metadata for a parameter, or `undefined`. */
|
|
46
|
+
getMetadata(name: string): ParameterMetadata | undefined;
|
|
47
|
+
/** All parameter handles, in insertion order. */
|
|
48
|
+
list(): readonly Parameter[];
|
|
49
|
+
/** All declaration metadata, in insertion order. */
|
|
50
|
+
listMetadata(): readonly ParameterMetadata[];
|
|
51
|
+
has(name: string): boolean;
|
|
52
|
+
/** Remove a parameter by name. Returns whether one was removed. */
|
|
53
|
+
delete(name: string): boolean;
|
|
54
|
+
get size(): number;
|
|
55
|
+
[Symbol.iterator](): IterableIterator<Parameter>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A deploy-time input to a stack, compiled to a Bicep `param` declaration.
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* The returned value is an `Expression` that can be passed to resource
|
|
62
|
+
* properties. At deploy time, the user supplies the actual value. The
|
|
63
|
+
* declaration metadata is stored separately on the stack, keyed by name.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript snippet:ignore
|
|
67
|
+
* import { Stack, createParameter } from "@azure/provisioning-core";
|
|
68
|
+
*
|
|
69
|
+
* const stack = new Stack("my-app", { targetScope: "resourceGroup" });
|
|
70
|
+
* const env = createParameter(stack, "env", "string", {
|
|
71
|
+
* allowed: ["dev", "staging", "prod"] as const,
|
|
72
|
+
* defaultValue: "dev",
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare function createParameter<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap, const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined>(stack: Stack, name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A>;
|
|
77
|
+
//# sourceMappingURL=parameter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../../src/constructs/parameter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAIlF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAAE,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5F,CAAC,GACD,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAExB;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,IAClF,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzC,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,EACzD,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,IAC9D;IACF,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB,CACzD,MAAM,gBAAgB,EACtB,SAAS,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,EAAE,GAAG,SAAS,CAChE;IACC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,gBAAgB,CAAC;CACvC;AAYD,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,EACzD,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,IAC9D,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAErC;;;;GAIG;AACH,qBAAa,mBAAmB;;IAG9B,gFAAgF;IAChF,GAAG,CACD,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,EACzD,KAAK,CAAC,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,EACtE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IA0B3E,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIxC,gEAAgE;IAChE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxD,iDAAiD;IACjD,IAAI,IAAI,SAAS,SAAS,EAAE;IAI5B,oDAAoD;IACpD,YAAY,IAAI,SAAS,iBAAiB,EAAE;IAI5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,mEAAmE;IACnE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO7B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC;CAOjD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,EACzD,KAAK,CAAC,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,EACtE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAExF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
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 parameter_exports = {};
|
|
19
|
+
__export(parameter_exports, {
|
|
20
|
+
ParameterCollection: () => ParameterCollection,
|
|
21
|
+
createParameter: () => createParameter
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(parameter_exports);
|
|
24
|
+
var import_expressions = require("../expression/expressions.js");
|
|
25
|
+
var import_expressions2 = require("../expression/expressions.js");
|
|
26
|
+
var import_ast_nodes = require("../expression/ast-nodes.js");
|
|
27
|
+
var import_util = require("../util.js");
|
|
28
|
+
class ParameterCollection {
|
|
29
|
+
#entries = [];
|
|
30
|
+
/** Add a parameter; returns its expression handle. Throws on duplicate name. */
|
|
31
|
+
add(name, type, options) {
|
|
32
|
+
(0, import_util.assertBicepIdentifier)(name, "Deployment parameter");
|
|
33
|
+
if (this.has(name)) {
|
|
34
|
+
throw new Error(`Duplicate deployment parameter name: ${name}`);
|
|
35
|
+
}
|
|
36
|
+
(0, import_util.assertValueAssignableToType)(options?.defaultValue, type, `Deployment parameter "${name}"`);
|
|
37
|
+
if (options?.defaultValue !== void 0 && !(0, import_expressions2.isExpression)(options.defaultValue) && options.allowed !== void 0 && !options.allowed.includes(options.defaultValue)) {
|
|
38
|
+
throw new Error(
|
|
39
|
+
`Deployment parameter "${name}" default value must be one of its allowed values.`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
const param = (0, import_expressions.wrapExpression)(
|
|
43
|
+
(0, import_ast_nodes.symbolicValueExpressionNode)(name)
|
|
44
|
+
);
|
|
45
|
+
this.#entries.push({
|
|
46
|
+
metadata: { name, type, ...options },
|
|
47
|
+
parameter: param
|
|
48
|
+
});
|
|
49
|
+
return param;
|
|
50
|
+
}
|
|
51
|
+
/** The expression handle for a parameter, or `undefined`. */
|
|
52
|
+
get(name) {
|
|
53
|
+
return this.#find(name)?.parameter;
|
|
54
|
+
}
|
|
55
|
+
/** The declaration metadata for a parameter, or `undefined`. */
|
|
56
|
+
getMetadata(name) {
|
|
57
|
+
return this.#find(name)?.metadata;
|
|
58
|
+
}
|
|
59
|
+
/** All parameter handles, in insertion order. */
|
|
60
|
+
list() {
|
|
61
|
+
return this.#entries.map((e) => e.parameter);
|
|
62
|
+
}
|
|
63
|
+
/** All declaration metadata, in insertion order. */
|
|
64
|
+
listMetadata() {
|
|
65
|
+
return this.#entries.map((e) => e.metadata);
|
|
66
|
+
}
|
|
67
|
+
has(name) {
|
|
68
|
+
return this.#find(name) !== void 0;
|
|
69
|
+
}
|
|
70
|
+
/** Remove a parameter by name. Returns whether one was removed. */
|
|
71
|
+
delete(name) {
|
|
72
|
+
const i = this.#entries.findIndex((e) => e.metadata.name === name);
|
|
73
|
+
if (i === -1) return false;
|
|
74
|
+
this.#entries.splice(i, 1);
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
get size() {
|
|
78
|
+
return this.#entries.length;
|
|
79
|
+
}
|
|
80
|
+
[Symbol.iterator]() {
|
|
81
|
+
return this.#entries.map((e) => e.parameter)[Symbol.iterator]();
|
|
82
|
+
}
|
|
83
|
+
#find(name) {
|
|
84
|
+
return this.#entries.find((e) => e.metadata.name === name);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function createParameter(stack, name, type, options) {
|
|
88
|
+
return stack.parameters.add(name, type, options);
|
|
89
|
+
}
|
|
90
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
91
|
+
0 && (module.exports = {
|
|
92
|
+
ParameterCollection,
|
|
93
|
+
createParameter
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=parameter.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/constructs/parameter.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap } from \"../serialization/contract/index.js\";\nimport type { Expression, ExpressionOrValue } from \"../expression/expressions.js\";\nimport { wrapExpression } from \"../expression/expressions.js\";\nimport { isExpression } from \"../expression/expressions.js\";\nimport { symbolicValueExpressionNode } from \"../expression/ast-nodes.js\";\nimport type { Stack } from \"./stack.js\";\nimport { assertBicepIdentifier, assertValueAssignableToType } from \"../util.js\";\n\nexport type InferParamType<T extends keyof PrimitiveTypeMap, A> = A extends readonly (infer E)[]\n ? E\n : PrimitiveTypeMap[T];\n\n/**\n * A value accepted as a parameter's `defaultValue`: a literal of the declared\n * type or an `Expression` of it. Resource views are intentionally excluded \u2014\n * a Bicep `param` default cannot reference resources.\n */\nexport type ParameterValue<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap> =\n ExpressionOrValue<PrimitiveTypeMap[T]>;\n\nexport type ParameterOptions<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n> = {\n readonly defaultValue?: ExpressionOrValue<InferParamType<T, A>> | undefined;\n readonly description?: string | undefined;\n readonly secure?: boolean | undefined;\n readonly minValue?: number | undefined;\n readonly maxValue?: number | undefined;\n readonly minLength?: number | undefined;\n readonly maxLength?: number | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n readonly allowed?: A;\n readonly discriminator?: string | undefined;\n readonly sealed?: boolean | undefined;\n};\n\n/**\n * Pure declaration data for a deployment parameter. Stored on the stack\n * (paired with the returned expression handle in {@link ParameterEntry});\n * read by the serializer at emit time. Not part of the value-level handle.\n */\nexport interface ParameterMetadata extends ParameterOptions<\n keyof PrimitiveTypeMap,\n readonly PrimitiveTypeMap[keyof PrimitiveTypeMap][] | undefined\n> {\n readonly name: string;\n readonly type: keyof PrimitiveTypeMap;\n}\n\n/**\n * A stack entry pairing a parameter's declaration metadata with the\n * expression handle returned to the user. Internal; metadata is exposed via\n * {@link ParameterCollection.getMetadata} / {@link ParameterCollection.listMetadata}.\n */\ninterface ParameterEntry {\n readonly metadata: ParameterMetadata;\n readonly parameter: Expression<unknown>;\n}\n\nexport type Parameter<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n> = Expression<InferParamType<T, A>>;\n\n/**\n * Authoring-time collection of a stack's deployment parameters. Backed by an\n * ordered private array; supports add/get/delete/iteration. Look parameters up\n * by name via {@link ParameterCollection.get}.\n */\nexport class ParameterCollection {\n #entries: ParameterEntry[] = [];\n\n /** Add a parameter; returns its expression handle. Throws on duplicate name. */\n add<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n >(name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A> {\n assertBicepIdentifier(name, \"Deployment parameter\");\n if (this.has(name)) {\n throw new Error(`Duplicate deployment parameter name: ${name}`);\n }\n assertValueAssignableToType(options?.defaultValue, type, `Deployment parameter \"${name}\"`);\n if (\n options?.defaultValue !== undefined &&\n !isExpression(options.defaultValue) &&\n options.allowed !== undefined &&\n !options.allowed.includes(options.defaultValue as PrimitiveTypeMap[T])\n ) {\n throw new Error(\n `Deployment parameter \"${name}\" default value must be one of its allowed values.`,\n );\n }\n const param = wrapExpression<InferParamType<T, A>>(\n symbolicValueExpressionNode<InferParamType<T, A>, string>(name),\n );\n this.#entries.push({\n metadata: { name, type, ...options },\n parameter: param,\n });\n return param;\n }\n\n /** The expression handle for a parameter, or `undefined`. */\n get(name: string): Parameter | undefined {\n return this.#find(name)?.parameter;\n }\n\n /** The declaration metadata for a parameter, or `undefined`. */\n getMetadata(name: string): ParameterMetadata | undefined {\n return this.#find(name)?.metadata;\n }\n\n /** All parameter handles, in insertion order. */\n list(): readonly Parameter[] {\n return this.#entries.map((e) => e.parameter);\n }\n\n /** All declaration metadata, in insertion order. */\n listMetadata(): readonly ParameterMetadata[] {\n return this.#entries.map((e) => e.metadata);\n }\n\n has(name: string): boolean {\n return this.#find(name) !== undefined;\n }\n\n /** Remove a parameter by name. Returns whether one was removed. */\n delete(name: string): boolean {\n const i = this.#entries.findIndex((e) => e.metadata.name === name);\n if (i === -1) return false;\n this.#entries.splice(i, 1);\n return true;\n }\n\n get size(): number {\n return this.#entries.length;\n }\n\n [Symbol.iterator](): IterableIterator<Parameter> {\n return this.#entries.map((e) => e.parameter)[Symbol.iterator]();\n }\n\n #find(name: string): ParameterEntry | undefined {\n return this.#entries.find((e) => e.metadata.name === name);\n }\n}\n\n/**\n * A deploy-time input to a stack, compiled to a Bicep `param` declaration.\n *\n * @remarks\n * The returned value is an `Expression` that can be passed to resource\n * properties. At deploy time, the user supplies the actual value. The\n * declaration metadata is stored separately on the stack, keyed by name.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack, createParameter } from \"@azure/provisioning-core\";\n *\n * const stack = new Stack(\"my-app\", { targetScope: \"resourceGroup\" });\n * const env = createParameter(stack, \"env\", \"string\", {\n * allowed: [\"dev\", \"staging\", \"prod\"] as const,\n * defaultValue: \"dev\",\n * });\n * ```\n */\nexport function createParameter<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n>(stack: Stack, name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A> {\n return stack.parameters.add(name, type, options);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,yBAA+B;AAC/B,IAAAA,sBAA6B;AAC7B,uBAA4C;AAE5C,kBAAmE;AAgE5D,MAAM,oBAAoB;AAAA,EAC/B,WAA6B,CAAC;AAAA;AAAA,EAG9B,IAGE,MAAc,MAAS,SAAmD;AAC1E,2CAAsB,MAAM,sBAAsB;AAClD,QAAI,KAAK,IAAI,IAAI,GAAG;AAClB,YAAM,IAAI,MAAM,wCAAwC,IAAI,EAAE;AAAA,IAChE;AACA,iDAA4B,SAAS,cAAc,MAAM,yBAAyB,IAAI,GAAG;AACzF,QACE,SAAS,iBAAiB,UAC1B,KAAC,kCAAa,QAAQ,YAAY,KAClC,QAAQ,YAAY,UACpB,CAAC,QAAQ,QAAQ,SAAS,QAAQ,YAAmC,GACrE;AACA,YAAM,IAAI;AAAA,QACR,yBAAyB,IAAI;AAAA,MAC/B;AAAA,IACF;AACA,UAAM,YAAQ;AAAA,UACZ,8CAA0D,IAAI;AAAA,IAChE;AACA,SAAK,SAAS,KAAK;AAAA,MACjB,UAAU,EAAE,MAAM,MAAM,GAAG,QAAQ;AAAA,MACnC,WAAW;AAAA,IACb,CAAC;AACD,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,IAAI,MAAqC;AACvC,WAAO,KAAK,MAAM,IAAI,GAAG;AAAA,EAC3B;AAAA;AAAA,EAGA,YAAY,MAA6C;AACvD,WAAO,KAAK,MAAM,IAAI,GAAG;AAAA,EAC3B;AAAA;AAAA,EAGA,OAA6B;AAC3B,WAAO,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,SAAS;AAAA,EAC7C;AAAA;AAAA,EAGA,eAA6C;AAC3C,WAAO,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ;AAAA,EAC5C;AAAA,EAEA,IAAI,MAAuB;AACzB,WAAO,KAAK,MAAM,IAAI,MAAM;AAAA,EAC9B;AAAA;AAAA,EAGA,OAAO,MAAuB;AAC5B,UAAM,IAAI,KAAK,SAAS,UAAU,CAAC,MAAM,EAAE,SAAS,SAAS,IAAI;AACjE,QAAI,MAAM,GAAI,QAAO;AACrB,SAAK,SAAS,OAAO,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAiC;AAC/C,WAAO,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,QAAQ,EAAE;AAAA,EAChE;AAAA,EAEA,MAAM,MAA0C;AAC9C,WAAO,KAAK,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,SAAS,IAAI;AAAA,EAC3D;AACF;AAqBO,SAAS,gBAGd,OAAc,MAAc,MAAS,SAAmD;AACxF,SAAO,MAAM,WAAW,IAAI,MAAM,MAAM,OAAO;AACjD;",
|
|
6
|
+
"names": ["import_expressions"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { DeploymentContext } from "../deployment-context/deployment-context.js";
|
|
2
|
+
export type ProvisioningComponentConstructor<TComponent extends ProvisioningComponent = ProvisioningComponent> = abstract new (...args: any[]) => TComponent;
|
|
3
|
+
/**
|
|
4
|
+
* Base class for all tree nodes in the library object model.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Both `Stack` and `Resource` extend `ProvisioningComponent`. It provides parent-child
|
|
8
|
+
* tree tracking and deployment context lookup — walking up the tree to find
|
|
9
|
+
* the nearest context set by a `Stack` or `ResourceGroup`.
|
|
10
|
+
*
|
|
11
|
+
* Subclass `ProvisioningComponent` directly to create reusable groupings of resources
|
|
12
|
+
* that don't correspond to an ARM resource. For ARM resources, extend
|
|
13
|
+
* `Resource` instead.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript snippet:ignore
|
|
17
|
+
* import { ProvisioningComponent } from "@azure/provisioning-core";
|
|
18
|
+
* import { KeyVault, Secret } from "@azure/provisioning-keyvault";
|
|
19
|
+
*
|
|
20
|
+
* class DataTier extends ProvisioningComponent {
|
|
21
|
+
* readonly vault: KeyVault;
|
|
22
|
+
* readonly secret: Secret;
|
|
23
|
+
*
|
|
24
|
+
* constructor(parent: ProvisioningComponent, tenantId: string, secretValue: string) {
|
|
25
|
+
* super(parent);
|
|
26
|
+
* this.vault = new KeyVault(this, {
|
|
27
|
+
* name: "kv-my-app",
|
|
28
|
+
* location: "eastus",
|
|
29
|
+
* properties: { tenantId, sku: { family: "A", name: "standard" } },
|
|
30
|
+
* });
|
|
31
|
+
* this.secret = new Secret(this.vault, {
|
|
32
|
+
* name: "database-password",
|
|
33
|
+
* properties: { value: secretValue },
|
|
34
|
+
* });
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare class ProvisioningComponent {
|
|
40
|
+
readonly parent: ProvisioningComponent | undefined;
|
|
41
|
+
readonly children: ProvisioningComponent[];
|
|
42
|
+
/**
|
|
43
|
+
* The contribution this node makes to the inherited deployment context.
|
|
44
|
+
* Resolved field-by-field by walking ancestors in `deploymentContext`.
|
|
45
|
+
*/
|
|
46
|
+
protected _localDeploymentContext: DeploymentContext | undefined;
|
|
47
|
+
constructor(parent?: ProvisioningComponent);
|
|
48
|
+
/**
|
|
49
|
+
* The effective deployment context **inherited from ancestors**, resolved
|
|
50
|
+
* by walking up the parent chain (this node's own local contribution is
|
|
51
|
+
* intentionally excluded — a node's contribution flows to its descendants,
|
|
52
|
+
* not to itself). Each field is resolved per its own rule:
|
|
53
|
+
*
|
|
54
|
+
* - `location`: nearest ancestor with a value wins.
|
|
55
|
+
* - `namingPolicy`: nearest ancestor with a value wins.
|
|
56
|
+
* - `tags`: flat-merged across all ancestors; innermost wins on key conflict.
|
|
57
|
+
*
|
|
58
|
+
* Returns an object whose fields may all be `undefined` if no ancestor
|
|
59
|
+
* contributed anything.
|
|
60
|
+
*/
|
|
61
|
+
get deploymentContext(): DeploymentContext;
|
|
62
|
+
/**
|
|
63
|
+
* Returns `true` if any ancestor has attached a local deployment context
|
|
64
|
+
* contribution. Used by `Resource` to enforce that resources sit inside
|
|
65
|
+
* a `Stack` tree. (This node's own contribution is intentionally not
|
|
66
|
+
* considered — a node inherits context from ancestors, not from itself.)
|
|
67
|
+
*/
|
|
68
|
+
protected hasDeploymentContext(): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Public identity for this node.
|
|
71
|
+
*
|
|
72
|
+
* @remarks
|
|
73
|
+
* Plain components return themselves. Resources override this to return
|
|
74
|
+
* their proxy-backed handle so APIs can get the right instance to use to
|
|
75
|
+
* reference to the resource and so on.
|
|
76
|
+
*/
|
|
77
|
+
get self(): this;
|
|
78
|
+
/**
|
|
79
|
+
* Applies a callback to every descendant component/resource that matches the
|
|
80
|
+
* given constructor, including `this` when it matches.
|
|
81
|
+
*/
|
|
82
|
+
transform(callback: (component: ProvisioningComponent) => void): this;
|
|
83
|
+
transform<TComponent extends ProvisioningComponent>(ctor: ProvisioningComponentConstructor<TComponent>, callback: (component: TComponent) => void): this;
|
|
84
|
+
/**
|
|
85
|
+
* Depth-first visit of this node and all descendants.
|
|
86
|
+
* Return `false` from the callback to skip visiting that node's children.
|
|
87
|
+
*/
|
|
88
|
+
visit(callback: (component: ProvisioningComponent) => boolean | void): void;
|
|
89
|
+
isChildOf(component: ProvisioningComponent): boolean;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=provisioning-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provisioning-component.d.ts","sourceRoot":"","sources":["../../../src/constructs/provisioning-component.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAGrF,MAAM,MAAM,gCAAgC,CAC1C,UAAU,SAAS,qBAAqB,GAAG,qBAAqB,IAC9D,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAM;IAChD;;;OAGG;IACH,SAAS,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,SAAS,CAAC;gBAErD,MAAM,CAAC,EAAE,qBAAqB;IAK1C;;;;;;;;;;;;OAYG;IACH,IAAI,iBAAiB,IAAI,iBAAiB,CAgCzC;IAED;;;;;OAKG;IACH,SAAS,CAAC,oBAAoB,IAAI,OAAO;IAWzC;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,IAAI,CAEf;IAED;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,KAAK,IAAI,GAAG,IAAI;IACrE,SAAS,CAAC,UAAU,SAAS,qBAAqB,EAChD,IAAI,EAAE,gCAAgC,CAAC,UAAU,CAAC,EAClD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,IAAI,GACxC,IAAI;IAqBP;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI;IAO3E,SAAS,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO;CAQrD"}
|
|
@@ -0,0 +1,130 @@
|
|
|
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 provisioning_component_exports = {};
|
|
19
|
+
__export(provisioning_component_exports, {
|
|
20
|
+
ProvisioningComponent: () => ProvisioningComponent
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(provisioning_component_exports);
|
|
23
|
+
class ProvisioningComponent {
|
|
24
|
+
parent;
|
|
25
|
+
children = [];
|
|
26
|
+
/**
|
|
27
|
+
* The contribution this node makes to the inherited deployment context.
|
|
28
|
+
* Resolved field-by-field by walking ancestors in `deploymentContext`.
|
|
29
|
+
*/
|
|
30
|
+
_localDeploymentContext;
|
|
31
|
+
constructor(parent) {
|
|
32
|
+
this.parent = parent;
|
|
33
|
+
parent?.children.push(this);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The effective deployment context **inherited from ancestors**, resolved
|
|
37
|
+
* by walking up the parent chain (this node's own local contribution is
|
|
38
|
+
* intentionally excluded — a node's contribution flows to its descendants,
|
|
39
|
+
* not to itself). Each field is resolved per its own rule:
|
|
40
|
+
*
|
|
41
|
+
* - `location`: nearest ancestor with a value wins.
|
|
42
|
+
* - `namingPolicy`: nearest ancestor with a value wins.
|
|
43
|
+
* - `tags`: flat-merged across all ancestors; innermost wins on key conflict.
|
|
44
|
+
*
|
|
45
|
+
* Returns an object whose fields may all be `undefined` if no ancestor
|
|
46
|
+
* contributed anything.
|
|
47
|
+
*/
|
|
48
|
+
get deploymentContext() {
|
|
49
|
+
let location;
|
|
50
|
+
let namingPolicy;
|
|
51
|
+
let locationSet = false;
|
|
52
|
+
let namingSet = false;
|
|
53
|
+
const tagFrames = [];
|
|
54
|
+
for (let current = this.parent; current; current = current.parent) {
|
|
55
|
+
const local = current._localDeploymentContext;
|
|
56
|
+
if (local === void 0) continue;
|
|
57
|
+
if (!locationSet && local.location !== void 0) {
|
|
58
|
+
location = local.location;
|
|
59
|
+
locationSet = true;
|
|
60
|
+
}
|
|
61
|
+
if (!namingSet && local.namingPolicy !== void 0) {
|
|
62
|
+
namingPolicy = local.namingPolicy;
|
|
63
|
+
namingSet = true;
|
|
64
|
+
}
|
|
65
|
+
if (local.tags !== void 0) tagFrames.push(local.tags);
|
|
66
|
+
}
|
|
67
|
+
let tags;
|
|
68
|
+
for (let i = tagFrames.length - 1; i >= 0; i--) {
|
|
69
|
+
tags = { ...tags, ...tagFrames[i] };
|
|
70
|
+
}
|
|
71
|
+
return { location, tags, namingPolicy };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Returns `true` if any ancestor has attached a local deployment context
|
|
75
|
+
* contribution. Used by `Resource` to enforce that resources sit inside
|
|
76
|
+
* a `Stack` tree. (This node's own contribution is intentionally not
|
|
77
|
+
* considered — a node inherits context from ancestors, not from itself.)
|
|
78
|
+
*/
|
|
79
|
+
hasDeploymentContext() {
|
|
80
|
+
for (let current = this.parent; current; current = current.parent) {
|
|
81
|
+
if (current._localDeploymentContext !== void 0) return true;
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Public identity for this node.
|
|
87
|
+
*
|
|
88
|
+
* @remarks
|
|
89
|
+
* Plain components return themselves. Resources override this to return
|
|
90
|
+
* their proxy-backed handle so APIs can get the right instance to use to
|
|
91
|
+
* reference to the resource and so on.
|
|
92
|
+
*/
|
|
93
|
+
get self() {
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
transform(ctorOrCallback, callback) {
|
|
97
|
+
const ctor = callback ? ctorOrCallback : void 0;
|
|
98
|
+
const cb = callback ?? ctorOrCallback;
|
|
99
|
+
this.visit((component) => {
|
|
100
|
+
const target = component.self;
|
|
101
|
+
if (!ctor || target instanceof ctor) {
|
|
102
|
+
cb(target);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Depth-first visit of this node and all descendants.
|
|
109
|
+
* Return `false` from the callback to skip visiting that node's children.
|
|
110
|
+
*/
|
|
111
|
+
visit(callback) {
|
|
112
|
+
if (callback(this) === false) return;
|
|
113
|
+
for (const child of this.children) {
|
|
114
|
+
child.visit(callback);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
isChildOf(component) {
|
|
118
|
+
let current = this.parent;
|
|
119
|
+
while (current) {
|
|
120
|
+
if (current === component) return true;
|
|
121
|
+
current = current.parent;
|
|
122
|
+
}
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
127
|
+
0 && (module.exports = {
|
|
128
|
+
ProvisioningComponent
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=provisioning-component.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/constructs/provisioning-component.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DeploymentContext } from \"../deployment-context/deployment-context.js\";\nimport type { ExpressionOrValue } from \"../expression/expressions.js\";\n\nexport type ProvisioningComponentConstructor<\n TComponent extends ProvisioningComponent = ProvisioningComponent,\n> = abstract new (...args: any[]) => TComponent;\n\n/**\n * Base class for all tree nodes in the library object model.\n *\n * @remarks\n * Both `Stack` and `Resource` extend `ProvisioningComponent`. It provides parent-child\n * tree tracking and deployment context lookup \u2014 walking up the tree to find\n * the nearest context set by a `Stack` or `ResourceGroup`.\n *\n * Subclass `ProvisioningComponent` directly to create reusable groupings of resources\n * that don't correspond to an ARM resource. For ARM resources, extend\n * `Resource` instead.\n *\n * @example\n * ```typescript snippet:ignore\n * import { ProvisioningComponent } from \"@azure/provisioning-core\";\n * import { KeyVault, Secret } from \"@azure/provisioning-keyvault\";\n *\n * class DataTier extends ProvisioningComponent {\n * readonly vault: KeyVault;\n * readonly secret: Secret;\n *\n * constructor(parent: ProvisioningComponent, tenantId: string, secretValue: string) {\n * super(parent);\n * this.vault = new KeyVault(this, {\n * name: \"kv-my-app\",\n * location: \"eastus\",\n * properties: { tenantId, sku: { family: \"A\", name: \"standard\" } },\n * });\n * this.secret = new Secret(this.vault, {\n * name: \"database-password\",\n * properties: { value: secretValue },\n * });\n * }\n * }\n * ```\n */\nexport class ProvisioningComponent {\n readonly parent: ProvisioningComponent | undefined;\n readonly children: ProvisioningComponent[] = [];\n /**\n * The contribution this node makes to the inherited deployment context.\n * Resolved field-by-field by walking ancestors in `deploymentContext`.\n */\n protected _localDeploymentContext: DeploymentContext | undefined;\n\n constructor(parent?: ProvisioningComponent) {\n this.parent = parent;\n parent?.children.push(this);\n }\n\n /**\n * The effective deployment context **inherited from ancestors**, resolved\n * by walking up the parent chain (this node's own local contribution is\n * intentionally excluded \u2014 a node's contribution flows to its descendants,\n * not to itself). Each field is resolved per its own rule:\n *\n * - `location`: nearest ancestor with a value wins.\n * - `namingPolicy`: nearest ancestor with a value wins.\n * - `tags`: flat-merged across all ancestors; innermost wins on key conflict.\n *\n * Returns an object whose fields may all be `undefined` if no ancestor\n * contributed anything.\n */\n get deploymentContext(): DeploymentContext {\n let location: DeploymentContext[\"location\"];\n let namingPolicy: DeploymentContext[\"namingPolicy\"];\n let locationSet = false;\n let namingSet = false;\n const tagFrames: Array<Record<string, ExpressionOrValue<string>>> = [];\n\n for (\n let current: ProvisioningComponent | undefined = this.parent;\n current;\n current = current.parent\n ) {\n const local = current._localDeploymentContext;\n if (local === undefined) continue;\n if (!locationSet && local.location !== undefined) {\n location = local.location;\n locationSet = true;\n }\n if (!namingSet && local.namingPolicy !== undefined) {\n namingPolicy = local.namingPolicy;\n namingSet = true;\n }\n if (local.tags !== undefined) tagFrames.push(local.tags);\n }\n\n let tags: DeploymentContext[\"tags\"];\n // Merge root \u2192 leaf so the nearest ancestor (frame 0) wins on conflict.\n for (let i = tagFrames.length - 1; i >= 0; i--) {\n tags = { ...tags, ...tagFrames[i] };\n }\n\n return { location, tags, namingPolicy };\n }\n\n /**\n * Returns `true` if any ancestor has attached a local deployment context\n * contribution. Used by `Resource` to enforce that resources sit inside\n * a `Stack` tree. (This node's own contribution is intentionally not\n * considered \u2014 a node inherits context from ancestors, not from itself.)\n */\n protected hasDeploymentContext(): boolean {\n for (\n let current: ProvisioningComponent | undefined = this.parent;\n current;\n current = current.parent\n ) {\n if (current._localDeploymentContext !== undefined) return true;\n }\n return false;\n }\n\n /**\n * Public identity for this node.\n *\n * @remarks\n * Plain components return themselves. Resources override this to return\n * their proxy-backed handle so APIs can get the right instance to use to\n * reference to the resource and so on.\n */\n get self(): this {\n return this;\n }\n\n /**\n * Applies a callback to every descendant component/resource that matches the\n * given constructor, including `this` when it matches.\n */\n transform(callback: (component: ProvisioningComponent) => void): this;\n transform<TComponent extends ProvisioningComponent>(\n ctor: ProvisioningComponentConstructor<TComponent>,\n callback: (component: TComponent) => void,\n ): this;\n transform<TComponent extends ProvisioningComponent>(\n ctorOrCallback:\n ProvisioningComponentConstructor<TComponent> | ((component: ProvisioningComponent) => void),\n callback?: (component: TComponent) => void,\n ): this {\n const ctor = callback\n ? (ctorOrCallback as ProvisioningComponentConstructor<TComponent>)\n : undefined;\n const cb = (callback ?? ctorOrCallback) as (c: ProvisioningComponent) => void;\n\n this.visit((component) => {\n const target = component.self;\n if (!ctor || target instanceof ctor) {\n cb(target);\n }\n });\n\n return this;\n }\n\n /**\n * Depth-first visit of this node and all descendants.\n * Return `false` from the callback to skip visiting that node's children.\n */\n visit(callback: (component: ProvisioningComponent) => boolean | void): void {\n if (callback(this) === false) return;\n for (const child of this.children) {\n child.visit(callback);\n }\n }\n\n isChildOf(component: ProvisioningComponent): boolean {\n let current = this.parent;\n while (current) {\n if (current === component) return true;\n current = current.parent;\n }\n return false;\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8CO,MAAM,sBAAsB;AAAA,EACxB;AAAA,EACA,WAAoC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpC;AAAA,EAEV,YAAY,QAAgC;AAC1C,SAAK,SAAS;AACd,YAAQ,SAAS,KAAK,IAAI;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,IAAI,oBAAuC;AACzC,QAAI;AACJ,QAAI;AACJ,QAAI,cAAc;AAClB,QAAI,YAAY;AAChB,UAAM,YAA8D,CAAC;AAErE,aACM,UAA6C,KAAK,QACtD,SACA,UAAU,QAAQ,QAClB;AACA,YAAM,QAAQ,QAAQ;AACtB,UAAI,UAAU,OAAW;AACzB,UAAI,CAAC,eAAe,MAAM,aAAa,QAAW;AAChD,mBAAW,MAAM;AACjB,sBAAc;AAAA,MAChB;AACA,UAAI,CAAC,aAAa,MAAM,iBAAiB,QAAW;AAClD,uBAAe,MAAM;AACrB,oBAAY;AAAA,MACd;AACA,UAAI,MAAM,SAAS,OAAW,WAAU,KAAK,MAAM,IAAI;AAAA,IACzD;AAEA,QAAI;AAEJ,aAAS,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,KAAK;AAC9C,aAAO,EAAE,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE;AAAA,IACpC;AAEA,WAAO,EAAE,UAAU,MAAM,aAAa;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQU,uBAAgC;AACxC,aACM,UAA6C,KAAK,QACtD,SACA,UAAU,QAAQ,QAClB;AACA,UAAI,QAAQ,4BAA4B,OAAW,QAAO;AAAA,IAC5D;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAI,OAAa;AACf,WAAO;AAAA,EACT;AAAA,EAWA,UACE,gBAEA,UACM;AACN,UAAM,OAAO,WACR,iBACD;AACJ,UAAM,KAAM,YAAY;AAExB,SAAK,MAAM,CAAC,cAAc;AACxB,YAAM,SAAS,UAAU;AACzB,UAAI,CAAC,QAAQ,kBAAkB,MAAM;AACnC,WAAG,MAAM;AAAA,MACX;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAsE;AAC1E,QAAI,SAAS,IAAI,MAAM,MAAO;AAC9B,eAAW,SAAS,KAAK,UAAU;AACjC,YAAM,MAAM,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,UAAU,WAA2C;AACnD,QAAI,UAAU,KAAK;AACnB,WAAO,SAAS;AACd,UAAI,YAAY,UAAW,QAAO;AAClC,gBAAU,QAAQ;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { type Expression, type ExpressionOrValue } from "../../expression/expressions.js";
|
|
2
|
+
import { type ArrayAccessIndex } from "../../expression/ast-nodes.js";
|
|
3
|
+
import type { PropertySegment } from "../../types.js";
|
|
4
|
+
import type { LoopedResource, Resource, ResourceDeclaration } from "./resource.js";
|
|
5
|
+
export declare const RAW_RESOURCE_HANDLE: unique symbol;
|
|
6
|
+
export declare const RESOURCE_BRAND: unique symbol;
|
|
7
|
+
/**
|
|
8
|
+
* Brand present on every `LoopedResource` instance. Lives here (rather than
|
|
9
|
+
* on the `LoopedResource` class) so tree-walking utilities can brand-check
|
|
10
|
+
* for looped declarations without a runtime import of `resource.ts` — which
|
|
11
|
+
* would create an eval-time import cycle (`resource.ts` extends `ProvisioningComponent`).
|
|
12
|
+
* Use {@link isLoopedResource} in normal code.
|
|
13
|
+
*/
|
|
14
|
+
export declare const LOOPED_RESOURCE_BRAND: unique symbol;
|
|
15
|
+
/**
|
|
16
|
+
* Brand present on every `ResourceDeclaration` instance (both scalar
|
|
17
|
+
* `Resource` and looped `LoopedResource`). Use
|
|
18
|
+
* {@link isResourceDeclaration} instead of a direct
|
|
19
|
+
* brand check.
|
|
20
|
+
*/
|
|
21
|
+
export declare const RESOURCE_DECLARATION_BRAND: unique symbol;
|
|
22
|
+
/**
|
|
23
|
+
* Present on indexed resource proxies (see {@link createIndexedResourceProxy}).
|
|
24
|
+
* Reading it off any resource-like value returns the stored index expression
|
|
25
|
+
* for indexed proxies, and `undefined` for plain outer proxies. The base
|
|
26
|
+
* `Resource` constructor probes for it on the `context` argument to detect
|
|
27
|
+
* `parents.at(i)` / `parents.current()` being passed as a child parent
|
|
28
|
+
* context; other consumers may probe it for their own purposes (the proxy
|
|
29
|
+
* itself doesn't imply any parent-child relationship — the index is simply
|
|
30
|
+
* what identifies which element of a looped declaration this proxy refers
|
|
31
|
+
* to).
|
|
32
|
+
*/
|
|
33
|
+
export declare const PROXY_INDEX_REF: unique symbol;
|
|
34
|
+
/**
|
|
35
|
+
* Present on indexed resource proxies. Reading it returns the underlying
|
|
36
|
+
* outer-proxy resource that the indexed proxy wraps. Used by the base
|
|
37
|
+
* `Resource` constructor to normalize `this.parent` back to the raw parent
|
|
38
|
+
* (so tree walks and symbol-map lookups continue to work) while
|
|
39
|
+
* `PROXY_INDEX_REF` carries the "which index" information onto `state`.
|
|
40
|
+
*/
|
|
41
|
+
export declare const INDEXED_PROXY_TARGET: unique symbol;
|
|
42
|
+
/**
|
|
43
|
+
* State-object key under which the base `Resource` constructor records the
|
|
44
|
+
* index expression when the `context` argument is an indexed proxy (i.e.,
|
|
45
|
+
* `parent.at(i)` / `parent.current()`). The serializer reads this key
|
|
46
|
+
* from the child's raw state to emit `parent: parentSym[<index>]` instead
|
|
47
|
+
* of the bare `parent: parentSym` form. Kept as a shared const so writer
|
|
48
|
+
* (`resource.ts`) and reader (`serialize.ts`) never drift.
|
|
49
|
+
*
|
|
50
|
+
* Lives on the **child**, not the parent: siblings under the same parent
|
|
51
|
+
* can be created via different indexed proxies (e.g. `new Child(p.at(0), …)`
|
|
52
|
+
* and `new Child(p.at(1), …)` both resolve `.parent` to the same raw parent,
|
|
53
|
+
* so the index that distinguishes them must be recorded per-child).
|
|
54
|
+
*/
|
|
55
|
+
export declare const STATE_PARENT_INDEX: "parentIndex";
|
|
56
|
+
/**
|
|
57
|
+
* The identity a member-proxy needs to lower into a Bicep expression and to
|
|
58
|
+
* back reads/writes. Bundles the three roles that were previously passed
|
|
59
|
+
* positionally to {@link createResourceMemberProxy}:
|
|
60
|
+
*
|
|
61
|
+
* - `resource` — the tree-registered declaration that supplies BOTH the
|
|
62
|
+
* symbol root (`identifierExpressionNode(resource)`) and the ARM shape
|
|
63
|
+
* source (`getResourceShape`). For a scalar resource this is the outer
|
|
64
|
+
* resource proxy; for an indexed looped element it is the raw
|
|
65
|
+
* `LoopedResource` declaration (the tree citizen), NOT the ephemeral
|
|
66
|
+
* `.at(i)` handle — that handle isn't in the component tree, so it can't
|
|
67
|
+
* resolve to a Bicep symbol.
|
|
68
|
+
* - `root` — the raw backing object that stores assigned values, used by
|
|
69
|
+
* `deref(...)` and nested writes.
|
|
70
|
+
* - `index` — optional array index. When set, the emitted expression roots
|
|
71
|
+
* at `resource[index]` instead of `resource`, so `many.at(i).prop.blob`
|
|
72
|
+
* serializes as `sym[i].prop.blob`. Populated for `.at(i)` / `.current()`
|
|
73
|
+
* handles by {@link createIndexedResourceProxy}.
|
|
74
|
+
*/
|
|
75
|
+
export interface ResourceProxySource {
|
|
76
|
+
readonly resource: Resource;
|
|
77
|
+
readonly root: Record<string, unknown>;
|
|
78
|
+
readonly index?: ArrayAccessIndex;
|
|
79
|
+
}
|
|
80
|
+
export type Deref<T> = T extends Expression<infer U> ? U : T;
|
|
81
|
+
export declare function deref<T>(value: T): Deref<T>;
|
|
82
|
+
export declare function normalizeAssignedValue(value: unknown, currentResource?: Resource): unknown;
|
|
83
|
+
export declare function createResourceMemberProxy<TValue>(source: ResourceProxySource, path: readonly PropertySegment[]): Expression<TValue> & TValue;
|
|
84
|
+
export declare function createResourceProxy<TType extends string, TResource extends Resource<TType> & object>(resource: TResource): TResource;
|
|
85
|
+
export declare function unwrapResourceHandle<T extends ResourceDeclaration>(resource: T): T;
|
|
86
|
+
/**
|
|
87
|
+
* Returns a passthrough proxy over `resource` that carries an "index"
|
|
88
|
+
* expression alongside the wrapped resource. Two purposes:
|
|
89
|
+
*
|
|
90
|
+
* 1. **Property reads** — ARM getters on the underlying `Resource` funnel
|
|
91
|
+
* through `this.expr(...)`. The indexed proxy intercepts `expr` and
|
|
92
|
+
* threads `resourceIndexExpression` into the member proxy so that reads
|
|
93
|
+
* render as `sym[index].<path>` on the wire. Direct data-property reads
|
|
94
|
+
* like `.type` / `.apiVersion` / `.condition` / `.existing` fall through
|
|
95
|
+
* unchanged (they are authoring/type metadata, not ARM reads).
|
|
96
|
+
*
|
|
97
|
+
* 2. **Child parent context** — passing `parents.at(0)` as the first
|
|
98
|
+
* argument to a child constructor must (a) let the child register into
|
|
99
|
+
* the raw parent's tree, and (b) record the index so the serializer can
|
|
100
|
+
* emit `parent: parentSym[i]`.
|
|
101
|
+
* This proxy passes framework members (`children`, `deploymentContext`,
|
|
102
|
+
* `_localDeploymentContext`, `hasDeploymentContext`, `.parent`, `.self`,
|
|
103
|
+
* ...) through unchanged so the base `Resource` constructor's
|
|
104
|
+
* interaction with `context` works exactly as it would with the raw
|
|
105
|
+
* parent. `PROXY_INDEX_REF` and `INDEXED_PROXY_TARGET` expose the
|
|
106
|
+
* index and the raw target to the base `Resource` constructor.
|
|
107
|
+
*
|
|
108
|
+
* The `index` can be a literal number, a literal string, or any expression
|
|
109
|
+
* (typically a loop's `.index` symbolic value). It is unwrapped from any
|
|
110
|
+
* `Expression<T>` proxy at construction time so downstream code stores a
|
|
111
|
+
* primitive or an `ExpressionNode`, never an `Expression` proxy.
|
|
112
|
+
*
|
|
113
|
+
* **The indexed proxy is an ephemeral wrapper, not a tree node.** A fresh
|
|
114
|
+
* proxy is minted per `.at(i)` call and is not stored in
|
|
115
|
+
* any `parent.children` array; only the raw outer resource proxy
|
|
116
|
+
* participates in the ProvisioningComponent tree. When a child is created with an
|
|
117
|
+
* indexed proxy as `context`, `ProvisioningComponent`'s ctor writes
|
|
118
|
+
* `this.parent = indexedProxy` briefly, but the base `Resource` ctor then overwrites
|
|
119
|
+
* `this.parent` back to the raw parent (via `INDEXED_PROXY_TARGET`) so the
|
|
120
|
+
* tree only ever references raw resource proxies. The indexed wrapper is
|
|
121
|
+
* garbage-collectable once the child ctor returns; its sole job is to
|
|
122
|
+
* carry the index through construction into `state.parentIndex`.
|
|
123
|
+
*/
|
|
124
|
+
/**
|
|
125
|
+
* Static type an indexed proxy exposes, derived from the declaration it
|
|
126
|
+
* wraps. A `LoopedResource<T>` narrows to `T` — the concrete resource
|
|
127
|
+
* type — so `parent.at(i)` exposes the full ARM and child-accessor
|
|
128
|
+
* surface, resolved element-scoped at runtime. Any scalar {@link Resource}
|
|
129
|
+
* yields itself.
|
|
130
|
+
*/
|
|
131
|
+
type IndexedProxyOf<D extends ResourceDeclaration> = D extends LoopedResource<infer T> ? T : D;
|
|
132
|
+
export declare function createIndexedResourceProxy<D extends ResourceDeclaration>(resource: D, index: ExpressionOrValue<number>): IndexedProxyOf<D>;
|
|
133
|
+
export {};
|
|
134
|
+
//# sourceMappingURL=resource-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-proxy.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-proxy.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAInF,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AACjE,eAAO,MAAM,cAAc,eAAkD,CAAC;AAE9E;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,eAAwD,CAAC;AAE3F;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,eAEtC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,eAAyD,CAAC;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,eAA8D,CAAC;AAEhG;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAG,aAAsB,CAAC;AAkBzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAqCD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7D,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAW3C;AA+FD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,QAAQ,GAAG,OAAO,CA+B1F;AA8KD,wBAAgB,yBAAyB,CAAC,MAAM,EAC9C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,SAAS,eAAe,EAAE,GAC/B,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAmB7B;AAgBD,wBAAgB,mBAAmB,CACjC,KAAK,SAAS,MAAM,EACpB,SAAS,SAAS,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,EAC1C,QAAQ,EAAE,SAAS,GAAG,SAAS,CAoFhC;AAcD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,mBAAmB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAQlF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH;;;;;;GAMG;AACH,KAAK,cAAc,CAAC,CAAC,SAAS,mBAAmB,IAAI,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAQ/F,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,mBAAmB,EACtE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAC/B,cAAc,CAAC,CAAC,CAAC,CAwHnB"}
|