@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
package/CHANGELOG.md
ADDED
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Copyright (c) Microsoft Corporation.
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Azure Provisioning core library for JavaScript
|
|
2
|
+
|
|
3
|
+
`@azure/provisioning-core` provides the shared authoring model for Azure provisioning resource libraries.
|
|
4
|
+
|
|
5
|
+
## Getting started
|
|
6
|
+
|
|
7
|
+
Create a deployment stack, then attach resources to the stack or to another provisioning component:
|
|
8
|
+
|
|
9
|
+
```ts snippet:ignore
|
|
10
|
+
import { ResourceGroup, Stack, fn } from "@azure/provisioning-core";
|
|
11
|
+
|
|
12
|
+
const stack = new Stack("application");
|
|
13
|
+
|
|
14
|
+
const resourceGroup = new ResourceGroup(stack, {
|
|
15
|
+
name: fn.concat("rg-", fn.uniqueString("application")),
|
|
16
|
+
location: "eastus",
|
|
17
|
+
});
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Resource provider packages such as `@azure/provisioning-keyvault` use the same component tree and expression model:
|
|
21
|
+
|
|
22
|
+
```ts snippet:ignore
|
|
23
|
+
import { ResourceGroup, Stack } from "@azure/provisioning-core";
|
|
24
|
+
import { KeyVault } from "@azure/provisioning-keyvault";
|
|
25
|
+
|
|
26
|
+
const stack = new Stack("keyvault-deployment");
|
|
27
|
+
const resourceGroup = new ResourceGroup(stack, {
|
|
28
|
+
name: "rg-keyvault",
|
|
29
|
+
location: "eastus",
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
new KeyVault(resourceGroup, {
|
|
33
|
+
properties: {
|
|
34
|
+
tenantId: "00000000-0000-0000-0000-000000000000",
|
|
35
|
+
sku: { family: "A", name: "standard" },
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Provisioning definitions are authored before deployment. Read-only resource properties remain available as expressions for wiring outputs and dependent resources, while only writable properties can be assigned.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ProvisioningComponent } from "../provisioning-component.js";
|
|
2
|
+
import { type Expression, type ExpressionOrValue, type InputRecord } from "../../expression/expressions.js";
|
|
3
|
+
import type { ResourceNamingRules } from "../../naming/naming-rules.js";
|
|
4
|
+
import type { ExistingResourceProps } from "../resource/resource.js";
|
|
5
|
+
import { Resource } from "../resource/resource.js";
|
|
6
|
+
export interface ResourceGroupProps {
|
|
7
|
+
name?: ExpressionOrValue<string> | undefined;
|
|
8
|
+
location: ExpressionOrValue<string>;
|
|
9
|
+
tags?: Record<string, ExpressionOrValue<string>>;
|
|
10
|
+
managedBy?: ExpressionOrValue<string>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* An Azure resource group that establishes a deployment boundary.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* Resources created with a `ResourceGroup` as their parent inherit its
|
|
17
|
+
* location, tags, and naming policy, and deploy at resource-group scope
|
|
18
|
+
* in the generated Bicep.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript snippet:ignore
|
|
22
|
+
* import { Stack, ResourceGroup } from "@azure/provisioning-core";
|
|
23
|
+
* import { KeyVault } from "@azure/provisioning-keyvault";
|
|
24
|
+
*
|
|
25
|
+
* const stack = new Stack("my-app");
|
|
26
|
+
* const rg = new ResourceGroup(stack, { location: "eastus" });
|
|
27
|
+
* const vault = new KeyVault(rg, {
|
|
28
|
+
* properties: { tenantId: "...", sku: { family: "A", name: "standard" } },
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class ResourceGroup extends Resource<"Microsoft.Resources/resourceGroups"> {
|
|
33
|
+
static readonly resourceType: "Microsoft.Resources/resourceGroups";
|
|
34
|
+
static readonly apiVersion = "2024-03-01";
|
|
35
|
+
protected static namingRules: ResourceNamingRules;
|
|
36
|
+
constructor(context: ProvisioningComponent, props: (ResourceGroupProps & {
|
|
37
|
+
existing?: false;
|
|
38
|
+
}) | (ExistingResourceProps & {
|
|
39
|
+
existing: true;
|
|
40
|
+
}));
|
|
41
|
+
/** The resource group's location as an expression. */
|
|
42
|
+
get location(): Expression<string>;
|
|
43
|
+
set location(value: ExpressionOrValue<string>);
|
|
44
|
+
get managedBy(): Expression<string>;
|
|
45
|
+
set managedBy(value: ExpressionOrValue<string> | undefined);
|
|
46
|
+
get tags(): InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined;
|
|
47
|
+
set tags(value: InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined);
|
|
48
|
+
add<T extends new (context: ProvisioningComponent, ...args: any[]) => ProvisioningComponent>(ctor: T, ...args: ConstructorParameters<T> extends [any, ...infer Rest] ? Rest : never): InstanceType<T>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=resource-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-group.d.ts","sourceRoot":"","sources":["../../../../src/constructs/built-in-resources/resource-group.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAgBnD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,aAAc,SAAQ,QAAQ,CAAC,oCAAoC,CAAC;IAC/E,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAG,oCAAoC,CAAU;IAC7E,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAE1C,SAAS,CAAC,MAAM,CAAC,WAAW,sBAA4B;gBAkBtD,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EACH,CAAC,kBAAkB,GAAG;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,GAAG,CAAC,qBAAqB,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAmB9F,sDAAsD;IACtD,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,CAEjC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAE5C;IAED,IAAI,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,CAElC;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,EAEzD;IAED,IAAI,IAAI,IAAI,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAIrF;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EAMzF;IAED,GAAG,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,qBAAqB,EACzF,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAC5E,YAAY,CAAC,CAAC,CAAC;CAGnB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import * as fn from "../../fn.js";
|
|
4
|
+
import { deref } from "../resource/resource-proxy.js";
|
|
5
|
+
import { Resource } from "../resource/resource.js";
|
|
6
|
+
import { createFlatModelShape, createRecordShape, createStringShape } from "../../shape/shape.js";
|
|
7
|
+
const resourceGroupNamingRules = {
|
|
8
|
+
abbreviation: "rg",
|
|
9
|
+
minLength: 1,
|
|
10
|
+
maxLength: 90,
|
|
11
|
+
validCharacters: {
|
|
12
|
+
uppercase: true,
|
|
13
|
+
hyphens: true,
|
|
14
|
+
underscores: true,
|
|
15
|
+
periods: true,
|
|
16
|
+
},
|
|
17
|
+
scope: "subscription",
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* An Azure resource group that establishes a deployment boundary.
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* Resources created with a `ResourceGroup` as their parent inherit its
|
|
24
|
+
* location, tags, and naming policy, and deploy at resource-group scope
|
|
25
|
+
* in the generated Bicep.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript snippet:ignore
|
|
29
|
+
* import { Stack, ResourceGroup } from "@azure/provisioning-core";
|
|
30
|
+
* import { KeyVault } from "@azure/provisioning-keyvault";
|
|
31
|
+
*
|
|
32
|
+
* const stack = new Stack("my-app");
|
|
33
|
+
* const rg = new ResourceGroup(stack, { location: "eastus" });
|
|
34
|
+
* const vault = new KeyVault(rg, {
|
|
35
|
+
* properties: { tenantId: "...", sku: { family: "A", name: "standard" } },
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export class ResourceGroup extends Resource {
|
|
40
|
+
static resourceType = "Microsoft.Resources/resourceGroups";
|
|
41
|
+
static apiVersion = "2024-03-01";
|
|
42
|
+
static namingRules = resourceGroupNamingRules;
|
|
43
|
+
static {
|
|
44
|
+
this.registerShape(createFlatModelShape({
|
|
45
|
+
name: { armPath: ["name"], value: createStringShape() },
|
|
46
|
+
location: { armPath: ["location"], value: createStringShape() },
|
|
47
|
+
tags: {
|
|
48
|
+
armPath: ["tags"],
|
|
49
|
+
value: createRecordShape(createStringShape()),
|
|
50
|
+
},
|
|
51
|
+
managedBy: { armPath: ["managedBy"], value: createStringShape() },
|
|
52
|
+
}));
|
|
53
|
+
this.register();
|
|
54
|
+
}
|
|
55
|
+
constructor(context, props) {
|
|
56
|
+
super(context, {
|
|
57
|
+
...props,
|
|
58
|
+
type: ResourceGroup.resourceType,
|
|
59
|
+
apiVersion: ResourceGroup.apiVersion,
|
|
60
|
+
});
|
|
61
|
+
this._localDeploymentContext = {
|
|
62
|
+
// Resources inside this RG deploy at RG scope, so the canonical
|
|
63
|
+
// default is the Bicep runtime expression `resourceGroup().location`
|
|
64
|
+
// (i.e. the actual location of whichever RG hosts the deployment).
|
|
65
|
+
// This is correct whether the RG is authored locally or referenced
|
|
66
|
+
// as `existing`.
|
|
67
|
+
location: fn.resourceGroup().location,
|
|
68
|
+
tags: deref(this.tags),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** The resource group's location as an expression. */
|
|
72
|
+
get location() {
|
|
73
|
+
return this.expr("location");
|
|
74
|
+
}
|
|
75
|
+
set location(value) {
|
|
76
|
+
this.setProperty("location", value);
|
|
77
|
+
}
|
|
78
|
+
get managedBy() {
|
|
79
|
+
return this.expr("managedBy");
|
|
80
|
+
}
|
|
81
|
+
set managedBy(value) {
|
|
82
|
+
this.setProperty("managedBy", value);
|
|
83
|
+
}
|
|
84
|
+
get tags() {
|
|
85
|
+
return this.state.tags === undefined
|
|
86
|
+
? undefined
|
|
87
|
+
: this.expr("tags");
|
|
88
|
+
}
|
|
89
|
+
set tags(value) {
|
|
90
|
+
this.setProperty("tags", value);
|
|
91
|
+
this._localDeploymentContext = {
|
|
92
|
+
...this._localDeploymentContext,
|
|
93
|
+
tags: deref(this.tags),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
add(ctor, ...args) {
|
|
97
|
+
return new ctor(this.self, ...args);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=resource-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-group.js","sourceRoot":"","sources":["../../../../src/constructs/built-in-resources/resource-group.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ProvisioningComponent } from \"../provisioning-component.js\";\nimport * as fn from \"../../fn.js\";\nimport {\n type Expression,\n type ExpressionOrValue,\n type InputRecord,\n} from \"../../expression/expressions.js\";\nimport type { ResourceNamingRules } from \"../../naming/naming-rules.js\";\nimport { deref } from \"../resource/resource-proxy.js\";\nimport type { ExistingResourceProps } from \"../resource/resource.js\";\nimport { Resource } from \"../resource/resource.js\";\nimport { createFlatModelShape, createRecordShape, createStringShape } from \"../../shape/shape.js\";\n\nconst resourceGroupNamingRules: ResourceNamingRules = {\n abbreviation: \"rg\",\n minLength: 1,\n maxLength: 90,\n validCharacters: {\n uppercase: true,\n hyphens: true,\n underscores: true,\n periods: true,\n },\n scope: \"subscription\",\n};\n\nexport interface ResourceGroupProps {\n name?: ExpressionOrValue<string> | undefined;\n location: ExpressionOrValue<string>;\n tags?: Record<string, ExpressionOrValue<string>>;\n managedBy?: ExpressionOrValue<string>;\n}\n\n/**\n * An Azure resource group that establishes a deployment boundary.\n *\n * @remarks\n * Resources created with a `ResourceGroup` as their parent inherit its\n * location, tags, and naming policy, and deploy at resource-group scope\n * in the generated Bicep.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack, ResourceGroup } from \"@azure/provisioning-core\";\n * import { KeyVault } from \"@azure/provisioning-keyvault\";\n *\n * const stack = new Stack(\"my-app\");\n * const rg = new ResourceGroup(stack, { location: \"eastus\" });\n * const vault = new KeyVault(rg, {\n * properties: { tenantId: \"...\", sku: { family: \"A\", name: \"standard\" } },\n * });\n * ```\n */\nexport class ResourceGroup extends Resource<\"Microsoft.Resources/resourceGroups\"> {\n static readonly resourceType = \"Microsoft.Resources/resourceGroups\" as const;\n static readonly apiVersion = \"2024-03-01\";\n\n protected static namingRules = resourceGroupNamingRules;\n\n static {\n this.registerShape(\n createFlatModelShape({\n name: { armPath: [\"name\"], value: createStringShape() },\n location: { armPath: [\"location\"], value: createStringShape() },\n tags: {\n armPath: [\"tags\"],\n value: createRecordShape(createStringShape()),\n },\n managedBy: { armPath: [\"managedBy\"], value: createStringShape() },\n }),\n );\n this.register();\n }\n\n constructor(\n context: ProvisioningComponent,\n props:\n (ResourceGroupProps & { existing?: false }) | (ExistingResourceProps & { existing: true }),\n ) {\n super(context, {\n ...props,\n type: ResourceGroup.resourceType,\n apiVersion: ResourceGroup.apiVersion,\n });\n\n this._localDeploymentContext = {\n // Resources inside this RG deploy at RG scope, so the canonical\n // default is the Bicep runtime expression `resourceGroup().location`\n // (i.e. the actual location of whichever RG hosts the deployment).\n // This is correct whether the RG is authored locally or referenced\n // as `existing`.\n location: fn.resourceGroup().location,\n tags: deref(this.tags),\n };\n }\n\n /** The resource group's location as an expression. */\n get location(): Expression<string> {\n return this.expr(\"location\");\n }\n set location(value: ExpressionOrValue<string>) {\n this.setProperty(\"location\", value);\n }\n\n get managedBy(): Expression<string> {\n return this.expr(\"managedBy\");\n }\n set managedBy(value: ExpressionOrValue<string> | undefined) {\n this.setProperty(\"managedBy\", value);\n }\n\n get tags(): InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined {\n return this.state.tags === undefined\n ? undefined\n : (this.expr(\"tags\") as InputRecord<ExpressionOrValue<string>, Record<string, string>>);\n }\n set tags(value: InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined) {\n this.setProperty(\"tags\", value);\n this._localDeploymentContext = {\n ...this._localDeploymentContext,\n tags: deref(this.tags),\n };\n }\n\n add<T extends new (context: ProvisioningComponent, ...args: any[]) => ProvisioningComponent>(\n ctor: T,\n ...args: ConstructorParameters<T> extends [any, ...infer Rest] ? Rest : never\n ): InstanceType<T> {\n return new ctor(this.self, ...args) as InstanceType<T>;\n }\n}\n"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { PrimitiveTypeMap, PrimitiveTypeName } from "../serialization/contract/index.js";
|
|
2
|
+
import type { ExpressionOrValue, InputOf } from "../expression/expressions.js";
|
|
3
|
+
import type { Resource } from "./resource/resource.js";
|
|
4
|
+
import type { Stack } from "./stack.js";
|
|
5
|
+
/**
|
|
6
|
+
* A value accepted as a deployment output's value: any JSON literal (scalar,
|
|
7
|
+
* `null`, array, object — recursively), an `Expression`, a resource view
|
|
8
|
+
* (`InputOf<unknown>`), or a {@link Resource} handle. The literal members are
|
|
9
|
+
* required so plain object/array literals are accepted (a bare
|
|
10
|
+
* `InputOf<unknown>` is a weak type and would reject them).
|
|
11
|
+
*/
|
|
12
|
+
export type OutputValue = string | number | boolean | null | readonly OutputValue[] | {
|
|
13
|
+
readonly [key: string]: OutputValue;
|
|
14
|
+
} | InputOf<unknown> | Resource;
|
|
15
|
+
/** Primitive Bicep type names supported by deployment outputs. */
|
|
16
|
+
export type OutputType = PrimitiveTypeName;
|
|
17
|
+
export type ScalarOutputType = "string" | "int" | "bool";
|
|
18
|
+
export type OutputValueFor<T extends OutputType> = T extends ScalarOutputType ? ExpressionOrValue<PrimitiveTypeMap[T]> : OutputValue;
|
|
19
|
+
export type OutputOptions = {
|
|
20
|
+
readonly description?: string | undefined;
|
|
21
|
+
readonly secure?: boolean | undefined;
|
|
22
|
+
readonly minValue?: number | undefined;
|
|
23
|
+
readonly maxValue?: number | undefined;
|
|
24
|
+
readonly minLength?: number | undefined;
|
|
25
|
+
readonly maxLength?: number | undefined;
|
|
26
|
+
readonly metadata?: Record<string, unknown> | undefined;
|
|
27
|
+
readonly discriminator?: string | undefined;
|
|
28
|
+
readonly sealed?: boolean | undefined;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Pure declaration data for a deployment output. Stored on the stack and read
|
|
32
|
+
* by the serializer at emit time. An output is a terminal sink — it has no
|
|
33
|
+
* expression handle.
|
|
34
|
+
*/
|
|
35
|
+
export interface OutputMetadata extends OutputOptions {
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly type: OutputType;
|
|
38
|
+
readonly value: OutputValue;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Authoring-time collection of a stack's deployment outputs. Backed by an
|
|
42
|
+
* ordered private array; supports add/get/delete/iteration. Outputs are
|
|
43
|
+
* terminal sinks (no expression handle), so iteration yields metadata.
|
|
44
|
+
*/
|
|
45
|
+
export declare class OutputCollection {
|
|
46
|
+
#private;
|
|
47
|
+
/** Add an output. Throws on duplicate name. Returns the stored metadata. */
|
|
48
|
+
add<T extends OutputType>(name: string, type: T, value: OutputValueFor<NoInfer<T>>, options?: OutputOptions): OutputMetadata;
|
|
49
|
+
/** The declaration metadata for an output, or `undefined`. */
|
|
50
|
+
get(name: string): OutputMetadata | undefined;
|
|
51
|
+
/** All output metadata, in insertion order. */
|
|
52
|
+
list(): readonly OutputMetadata[];
|
|
53
|
+
has(name: string): boolean;
|
|
54
|
+
/** Remove an output by name. Returns whether one was removed. */
|
|
55
|
+
delete(name: string): boolean;
|
|
56
|
+
get size(): number;
|
|
57
|
+
[Symbol.iterator](): IterableIterator<OutputMetadata>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A deployment output, compiled to a Bicep `output` declaration.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript snippet:ignore
|
|
64
|
+
* import { Stack } from "@azure/provisioning-core";
|
|
65
|
+
* import { KeyVault } from "@azure/provisioning-keyvault";
|
|
66
|
+
*
|
|
67
|
+
* const stack = new Stack("my-app", { targetScope: "resourceGroup" });
|
|
68
|
+
* const vault = new KeyVault(stack, {
|
|
69
|
+
* name: "kv-my-app",
|
|
70
|
+
* location: "eastus",
|
|
71
|
+
* properties: {
|
|
72
|
+
* tenantId: "11111111-1111-1111-1111-111111111111",
|
|
73
|
+
* sku: { family: "A", name: "standard" },
|
|
74
|
+
* },
|
|
75
|
+
* });
|
|
76
|
+
* stack.outputs.add("vaultUri", "string", vault.properties.vaultUri);
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare function createOutput<T extends OutputType>(stack: Stack, name: string, type: T, value: OutputValueFor<NoInfer<T>>, options?: OutputOptions): OutputMetadata;
|
|
80
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/constructs/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { isResource } from "./resource/resource-utils.js";
|
|
4
|
+
import { assertBicepIdentifier, assertValueAssignableToType } from "../util.js";
|
|
5
|
+
/**
|
|
6
|
+
* Authoring-time collection of a stack's deployment outputs. Backed by an
|
|
7
|
+
* ordered private array; supports add/get/delete/iteration. Outputs are
|
|
8
|
+
* terminal sinks (no expression handle), so iteration yields metadata.
|
|
9
|
+
*/
|
|
10
|
+
export class OutputCollection {
|
|
11
|
+
#entries = [];
|
|
12
|
+
/** Add an output. Throws on duplicate name. Returns the stored metadata. */
|
|
13
|
+
add(name, type, value, options) {
|
|
14
|
+
assertBicepIdentifier(name, "Deployment output");
|
|
15
|
+
if (this.has(name)) {
|
|
16
|
+
throw new Error(`Duplicate deployment output name: ${name}`);
|
|
17
|
+
}
|
|
18
|
+
if ((type === "string" || type === "int" || type === "bool") && isResource(value)) {
|
|
19
|
+
throw new Error(`Deployment output "${name}" expected type "${type}" but got resource.`);
|
|
20
|
+
}
|
|
21
|
+
assertValueAssignableToType(value, type, `Deployment output "${name}"`);
|
|
22
|
+
const metadata = { name, type, value, ...options };
|
|
23
|
+
this.#entries.push(metadata);
|
|
24
|
+
return metadata;
|
|
25
|
+
}
|
|
26
|
+
/** The declaration metadata for an output, or `undefined`. */
|
|
27
|
+
get(name) {
|
|
28
|
+
return this.#entries.find((e) => e.name === name);
|
|
29
|
+
}
|
|
30
|
+
/** All output metadata, in insertion order. */
|
|
31
|
+
list() {
|
|
32
|
+
return this.#entries;
|
|
33
|
+
}
|
|
34
|
+
has(name) {
|
|
35
|
+
return this.get(name) !== undefined;
|
|
36
|
+
}
|
|
37
|
+
/** Remove an output by name. Returns whether one was removed. */
|
|
38
|
+
delete(name) {
|
|
39
|
+
const i = this.#entries.findIndex((e) => e.name === name);
|
|
40
|
+
if (i === -1)
|
|
41
|
+
return false;
|
|
42
|
+
this.#entries.splice(i, 1);
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
get size() {
|
|
46
|
+
return this.#entries.length;
|
|
47
|
+
}
|
|
48
|
+
[Symbol.iterator]() {
|
|
49
|
+
return this.#entries[Symbol.iterator]();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A deployment output, compiled to a Bicep `output` declaration.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript snippet:ignore
|
|
57
|
+
* import { Stack } from "@azure/provisioning-core";
|
|
58
|
+
* import { KeyVault } from "@azure/provisioning-keyvault";
|
|
59
|
+
*
|
|
60
|
+
* const stack = new Stack("my-app", { targetScope: "resourceGroup" });
|
|
61
|
+
* const vault = new KeyVault(stack, {
|
|
62
|
+
* name: "kv-my-app",
|
|
63
|
+
* location: "eastus",
|
|
64
|
+
* properties: {
|
|
65
|
+
* tenantId: "11111111-1111-1111-1111-111111111111",
|
|
66
|
+
* sku: { family: "A", name: "standard" },
|
|
67
|
+
* },
|
|
68
|
+
* });
|
|
69
|
+
* stack.outputs.add("vaultUri", "string", vault.properties.vaultUri);
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export function createOutput(stack, name, type, value, options) {
|
|
73
|
+
return stack.outputs.add(name, type, value, options);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/constructs/output.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAkDhF;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B,QAAQ,GAAqB,EAAE,CAAC;IAEhC,4EAA4E;IAC5E,GAAG,CACD,IAAY,EACZ,IAAO,EACP,KAAiC,EACjC,OAAuB;QAEvB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,oBAAoB,IAAI,qBAAqB,CAAC,CAAC;QAC3F,CAAC;QACD,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,sBAAsB,IAAI,GAAG,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8DAA8D;IAC9D,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,+CAA+C;IAC/C,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IACtC,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,IAAY;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAY,EACZ,IAAY,EACZ,IAAO,EACP,KAAiC,EACjC,OAAuB;IAEvB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap, PrimitiveTypeName } from \"../serialization/contract/index.js\";\nimport type { ExpressionOrValue, InputOf } from \"../expression/expressions.js\";\nimport type { Resource } from \"./resource/resource.js\";\nimport { isResource } from \"./resource/resource-utils.js\";\nimport type { Stack } from \"./stack.js\";\nimport { assertBicepIdentifier, assertValueAssignableToType } from \"../util.js\";\n\n/**\n * A value accepted as a deployment output's value: any JSON literal (scalar,\n * `null`, array, object — recursively), an `Expression`, a resource view\n * (`InputOf<unknown>`), or a {@link Resource} handle. The literal members are\n * required so plain object/array literals are accepted (a bare\n * `InputOf<unknown>` is a weak type and would reject them).\n */\nexport type OutputValue =\n | string\n | number\n | boolean\n | null\n | readonly OutputValue[]\n | { readonly [key: string]: OutputValue }\n | InputOf<unknown>\n | Resource;\n\n/** Primitive Bicep type names supported by deployment outputs. */\nexport type OutputType = PrimitiveTypeName;\n\nexport type ScalarOutputType = \"string\" | \"int\" | \"bool\";\nexport type OutputValueFor<T extends OutputType> = T extends ScalarOutputType\n ? ExpressionOrValue<PrimitiveTypeMap[T]>\n : OutputValue;\n\nexport type OutputOptions = {\n readonly description?: string | undefined;\n readonly secure?: boolean | undefined;\n readonly minValue?: number | undefined;\n readonly maxValue?: number | undefined;\n readonly minLength?: number | undefined;\n readonly maxLength?: number | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n readonly discriminator?: string | undefined;\n readonly sealed?: boolean | undefined;\n};\n\n/**\n * Pure declaration data for a deployment output. Stored on the stack and read\n * by the serializer at emit time. An output is a terminal sink — it has no\n * expression handle.\n */\nexport interface OutputMetadata extends OutputOptions {\n readonly name: string;\n readonly type: OutputType;\n readonly value: OutputValue;\n}\n\n/**\n * Authoring-time collection of a stack's deployment outputs. Backed by an\n * ordered private array; supports add/get/delete/iteration. Outputs are\n * terminal sinks (no expression handle), so iteration yields metadata.\n */\nexport class OutputCollection {\n #entries: OutputMetadata[] = [];\n\n /** Add an output. Throws on duplicate name. Returns the stored metadata. */\n add<T extends OutputType>(\n name: string,\n type: T,\n value: OutputValueFor<NoInfer<T>>,\n options?: OutputOptions,\n ): OutputMetadata {\n assertBicepIdentifier(name, \"Deployment output\");\n if (this.has(name)) {\n throw new Error(`Duplicate deployment output name: ${name}`);\n }\n if ((type === \"string\" || type === \"int\" || type === \"bool\") && isResource(value)) {\n throw new Error(`Deployment output \"${name}\" expected type \"${type}\" but got resource.`);\n }\n assertValueAssignableToType(value, type, `Deployment output \"${name}\"`);\n const metadata: OutputMetadata = { name, type, value, ...options };\n this.#entries.push(metadata);\n return metadata;\n }\n\n /** The declaration metadata for an output, or `undefined`. */\n get(name: string): OutputMetadata | undefined {\n return this.#entries.find((e) => e.name === name);\n }\n\n /** All output metadata, in insertion order. */\n list(): readonly OutputMetadata[] {\n return this.#entries;\n }\n\n has(name: string): boolean {\n return this.get(name) !== undefined;\n }\n\n /** Remove an output by name. Returns whether one was removed. */\n delete(name: string): boolean {\n const i = this.#entries.findIndex((e) => e.name === name);\n if (i === -1) return false;\n this.#entries.splice(i, 1);\n return true;\n }\n\n get size(): number {\n return this.#entries.length;\n }\n\n [Symbol.iterator](): IterableIterator<OutputMetadata> {\n return this.#entries[Symbol.iterator]();\n }\n}\n\n/**\n * A deployment output, compiled to a Bicep `output` declaration.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack } from \"@azure/provisioning-core\";\n * import { KeyVault } from \"@azure/provisioning-keyvault\";\n *\n * const stack = new Stack(\"my-app\", { targetScope: \"resourceGroup\" });\n * const vault = new KeyVault(stack, {\n * name: \"kv-my-app\",\n * location: \"eastus\",\n * properties: {\n * tenantId: \"11111111-1111-1111-1111-111111111111\",\n * sku: { family: \"A\", name: \"standard\" },\n * },\n * });\n * stack.outputs.add(\"vaultUri\", \"string\", vault.properties.vaultUri);\n * ```\n */\nexport function createOutput<T extends OutputType>(\n stack: Stack,\n name: string,\n type: T,\n value: OutputValueFor<NoInfer<T>>,\n options?: OutputOptions,\n): OutputMetadata {\n return stack.outputs.add(name, type, value, options);\n}\n"]}
|
|
@@ -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":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { wrapExpression } from "../expression/expressions.js";
|
|
4
|
+
import { isExpression } from "../expression/expressions.js";
|
|
5
|
+
import { symbolicValueExpressionNode } from "../expression/ast-nodes.js";
|
|
6
|
+
import { assertBicepIdentifier, assertValueAssignableToType } from "../util.js";
|
|
7
|
+
/**
|
|
8
|
+
* Authoring-time collection of a stack's deployment parameters. Backed by an
|
|
9
|
+
* ordered private array; supports add/get/delete/iteration. Look parameters up
|
|
10
|
+
* by name via {@link ParameterCollection.get}.
|
|
11
|
+
*/
|
|
12
|
+
export class ParameterCollection {
|
|
13
|
+
#entries = [];
|
|
14
|
+
/** Add a parameter; returns its expression handle. Throws on duplicate name. */
|
|
15
|
+
add(name, type, options) {
|
|
16
|
+
assertBicepIdentifier(name, "Deployment parameter");
|
|
17
|
+
if (this.has(name)) {
|
|
18
|
+
throw new Error(`Duplicate deployment parameter name: ${name}`);
|
|
19
|
+
}
|
|
20
|
+
assertValueAssignableToType(options?.defaultValue, type, `Deployment parameter "${name}"`);
|
|
21
|
+
if (options?.defaultValue !== undefined &&
|
|
22
|
+
!isExpression(options.defaultValue) &&
|
|
23
|
+
options.allowed !== undefined &&
|
|
24
|
+
!options.allowed.includes(options.defaultValue)) {
|
|
25
|
+
throw new Error(`Deployment parameter "${name}" default value must be one of its allowed values.`);
|
|
26
|
+
}
|
|
27
|
+
const param = wrapExpression(symbolicValueExpressionNode(name));
|
|
28
|
+
this.#entries.push({
|
|
29
|
+
metadata: { name, type, ...options },
|
|
30
|
+
parameter: param,
|
|
31
|
+
});
|
|
32
|
+
return param;
|
|
33
|
+
}
|
|
34
|
+
/** The expression handle for a parameter, or `undefined`. */
|
|
35
|
+
get(name) {
|
|
36
|
+
return this.#find(name)?.parameter;
|
|
37
|
+
}
|
|
38
|
+
/** The declaration metadata for a parameter, or `undefined`. */
|
|
39
|
+
getMetadata(name) {
|
|
40
|
+
return this.#find(name)?.metadata;
|
|
41
|
+
}
|
|
42
|
+
/** All parameter handles, in insertion order. */
|
|
43
|
+
list() {
|
|
44
|
+
return this.#entries.map((e) => e.parameter);
|
|
45
|
+
}
|
|
46
|
+
/** All declaration metadata, in insertion order. */
|
|
47
|
+
listMetadata() {
|
|
48
|
+
return this.#entries.map((e) => e.metadata);
|
|
49
|
+
}
|
|
50
|
+
has(name) {
|
|
51
|
+
return this.#find(name) !== undefined;
|
|
52
|
+
}
|
|
53
|
+
/** Remove a parameter by name. Returns whether one was removed. */
|
|
54
|
+
delete(name) {
|
|
55
|
+
const i = this.#entries.findIndex((e) => e.metadata.name === name);
|
|
56
|
+
if (i === -1)
|
|
57
|
+
return false;
|
|
58
|
+
this.#entries.splice(i, 1);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
get size() {
|
|
62
|
+
return this.#entries.length;
|
|
63
|
+
}
|
|
64
|
+
[Symbol.iterator]() {
|
|
65
|
+
return this.#entries.map((e) => e.parameter)[Symbol.iterator]();
|
|
66
|
+
}
|
|
67
|
+
#find(name) {
|
|
68
|
+
return this.#entries.find((e) => e.metadata.name === name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A deploy-time input to a stack, compiled to a Bicep `param` declaration.
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* The returned value is an `Expression` that can be passed to resource
|
|
76
|
+
* properties. At deploy time, the user supplies the actual value. The
|
|
77
|
+
* declaration metadata is stored separately on the stack, keyed by name.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript snippet:ignore
|
|
81
|
+
* import { Stack, createParameter } from "@azure/provisioning-core";
|
|
82
|
+
*
|
|
83
|
+
* const stack = new Stack("my-app", { targetScope: "resourceGroup" });
|
|
84
|
+
* const env = createParameter(stack, "env", "string", {
|
|
85
|
+
* allowed: ["dev", "staging", "prod"] as const,
|
|
86
|
+
* defaultValue: "dev",
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export function createParameter(stack, name, type, options) {
|
|
91
|
+
return stack.parameters.add(name, type, options);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=parameter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../../src/constructs/parameter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap } from \"../serialization/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 —\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"]}
|