@azure/provisioning-core 1.0.0-beta.1 → 1.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +49 -10
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/browser/constructs/built-in-resources/resource-group.js +26 -6
- package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -1
- package/dist/browser/constructs/output.d.ts +1 -1
- package/dist/browser/constructs/output.d.ts.map +1 -1
- package/dist/browser/constructs/output.js.map +1 -1
- package/dist/browser/constructs/parameter.d.ts +1 -1
- package/dist/browser/constructs/parameter.d.ts.map +1 -1
- package/dist/browser/constructs/parameter.js.map +1 -1
- package/dist/browser/constructs/resource/resource-query.d.ts +3 -1
- package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/browser/constructs/resource/resource-query.js +10 -0
- package/dist/browser/constructs/resource/resource-query.js.map +1 -1
- package/dist/browser/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/browser/constructs/resource/resource-relationships.js +35 -0
- package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
- package/dist/browser/constructs/resource/resource.d.ts +11 -17
- package/dist/browser/constructs/resource/resource.d.ts.map +1 -1
- package/dist/browser/constructs/resource/resource.js +70 -28
- package/dist/browser/constructs/resource/resource.js.map +1 -1
- package/dist/browser/constructs/stack.d.ts +2 -16
- package/dist/browser/constructs/stack.d.ts.map +1 -1
- package/dist/browser/constructs/stack.js +1 -15
- package/dist/browser/constructs/stack.js.map +1 -1
- package/dist/browser/expression/ast-nodes.d.ts +1 -1
- package/dist/browser/expression/ast-nodes.d.ts.map +1 -1
- package/dist/browser/expression/ast-nodes.js.map +1 -1
- package/dist/browser/expression/expressions.d.ts +2 -9
- package/dist/browser/expression/expressions.d.ts.map +1 -1
- package/dist/browser/expression/expressions.js +2 -9
- package/dist/browser/expression/expressions.js.map +1 -1
- package/dist/browser/expression/utils.d.ts +5 -0
- package/dist/browser/expression/utils.d.ts.map +1 -0
- package/dist/browser/expression/utils.js +25 -0
- package/dist/browser/expression/utils.js.map +1 -0
- package/dist/browser/index.d.ts +4 -4
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/internal.d.ts +2 -5
- package/dist/browser/internal.d.ts.map +1 -1
- package/dist/browser/internal.js +1 -3
- package/dist/browser/internal.js.map +1 -1
- package/dist/browser/naming/name-validation.d.ts +15 -0
- package/dist/browser/naming/name-validation.d.ts.map +1 -0
- package/dist/browser/naming/name-validation.js +82 -0
- package/dist/browser/naming/name-validation.js.map +1 -0
- package/dist/browser/naming/naming-policy.d.ts +7 -7
- package/dist/browser/naming/naming-policy.d.ts.map +1 -1
- package/dist/browser/naming/naming-policy.js +166 -33
- package/dist/browser/naming/naming-policy.js.map +1 -1
- package/dist/browser/naming/naming-rules.d.ts +12 -11
- package/dist/browser/naming/naming-rules.d.ts.map +1 -1
- package/dist/browser/naming/naming-rules.js +2 -9
- package/dist/browser/naming/naming-rules.js.map +1 -1
- package/dist/browser/package.json +1 -1
- package/dist/{esm/serialization/json/lower.d.ts → browser/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/{esm/serialization/json/lower.js → browser/serialization/arm-object-conversion.js} +20 -20
- package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
- package/dist/browser/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/browser/serialization/ast/declaration-builder.js +265 -0
- package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
- package/dist/browser/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/browser/serialization/ast/declaration-dependencies.js +96 -0
- package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
- package/dist/browser/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-builder.js +313 -0
- package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
- package/dist/browser/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-restorer.js +162 -0
- package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
- package/dist/browser/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-rewriter.js +257 -0
- package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
- package/dist/browser/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/browser/serialization/ast/expression-walker.js +154 -0
- package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
- package/dist/browser/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/browser/serialization/ast/generated/ast.js.map +1 -0
- package/dist/browser/serialization/ast/index.d.ts +7 -0
- package/dist/browser/serialization/ast/index.d.ts.map +1 -0
- package/dist/browser/serialization/ast/index.js.map +1 -0
- package/dist/browser/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/browser/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/browser/serialization/ast/resource-utils.js +52 -0
- package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.js +57 -0
- package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.js +100 -0
- package/dist/browser/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js +46 -0
- package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.js +68 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
- package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.js +32 -0
- package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.js +46 -0
- package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.js +140 -0
- package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.js +225 -0
- package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
- package/dist/browser/serialization/bicep/index.d.ts +2 -0
- package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/index.js +4 -0
- package/dist/browser/serialization/bicep/index.js.map +1 -0
- package/dist/browser/serialization/bicep/render.d.ts +11 -0
- package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
- package/dist/browser/serialization/bicep/render.js +293 -0
- package/dist/browser/serialization/bicep/render.js.map +1 -0
- package/dist/browser/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/browser/serialization/encoding.d.ts.map +1 -0
- package/dist/browser/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/browser/serialization/encoding.js.map +1 -0
- package/dist/browser/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/browser/serialization/identifiers.d.ts.map +1 -0
- package/dist/browser/serialization/{json/util.js → identifiers.js} +1 -1
- package/dist/browser/serialization/identifiers.js.map +1 -0
- package/dist/browser/serialization/index.d.ts +1 -1
- package/dist/browser/serialization/index.d.ts.map +1 -1
- package/dist/browser/serialization/index.js.map +1 -1
- package/dist/browser/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/browser/serialization/json/deserialize.js +131 -39
- package/dist/browser/serialization/json/deserialize.js.map +1 -1
- package/dist/browser/serialization/json/serialize.d.ts +1 -1
- package/dist/browser/serialization/json/serialize.d.ts.map +1 -1
- package/dist/browser/serialization/json/serialize.js +5 -360
- package/dist/browser/serialization/json/serialize.js.map +1 -1
- package/dist/browser/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/browser/serialization/pluralize-config.js.map +1 -0
- package/dist/browser/serialization/symbol-map.d.ts +10 -0
- package/dist/browser/serialization/symbol-map.d.ts.map +1 -0
- package/dist/browser/serialization/symbol-map.js +40 -0
- package/dist/browser/serialization/symbol-map.js.map +1 -0
- package/dist/browser/shape/shape.d.ts +4 -4
- package/dist/browser/shape/shape.js +2 -2
- package/dist/browser/shape/shape.js.map +1 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/commonjs/constructs/built-in-resources/resource-group.js +27 -6
- package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +2 -2
- package/dist/commonjs/constructs/output.d.ts +1 -1
- package/dist/commonjs/constructs/output.d.ts.map +1 -1
- package/dist/commonjs/constructs/output.js.map +1 -1
- package/dist/commonjs/constructs/parameter.d.ts +1 -1
- package/dist/commonjs/constructs/parameter.d.ts.map +1 -1
- package/dist/commonjs/constructs/parameter.js.map +1 -1
- package/dist/commonjs/constructs/resource/resource-query.d.ts +3 -1
- package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/commonjs/constructs/resource/resource-query.js +11 -0
- package/dist/commonjs/constructs/resource/resource-query.js.map +2 -2
- package/dist/commonjs/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/commonjs/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/commonjs/constructs/resource/resource-relationships.js +59 -0
- package/dist/commonjs/constructs/resource/resource-relationships.js.map +7 -0
- package/dist/commonjs/constructs/resource/resource.d.ts +11 -17
- package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -1
- package/dist/commonjs/constructs/resource/resource.js +57 -35
- package/dist/commonjs/constructs/resource/resource.js.map +2 -2
- package/dist/commonjs/constructs/stack.d.ts +2 -16
- package/dist/commonjs/constructs/stack.d.ts.map +1 -1
- package/dist/commonjs/constructs/stack.js.map +2 -2
- package/dist/commonjs/expression/ast-nodes.d.ts +1 -1
- package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -1
- package/dist/commonjs/expression/ast-nodes.js.map +1 -1
- package/dist/commonjs/expression/expressions.d.ts +2 -9
- package/dist/commonjs/expression/expressions.d.ts.map +1 -1
- package/dist/commonjs/expression/expressions.js.map +2 -2
- package/dist/commonjs/expression/utils.d.ts +5 -0
- package/dist/commonjs/expression/utils.d.ts.map +1 -0
- package/dist/commonjs/expression/utils.js +43 -0
- package/dist/commonjs/expression/utils.js.map +7 -0
- package/dist/commonjs/index.d.ts +4 -4
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js.map +2 -2
- package/dist/commonjs/internal.d.ts +2 -5
- package/dist/commonjs/internal.d.ts.map +1 -1
- package/dist/commonjs/internal.js +3 -9
- package/dist/commonjs/internal.js.map +2 -2
- package/dist/commonjs/naming/name-validation.d.ts +15 -0
- package/dist/commonjs/naming/name-validation.d.ts.map +1 -0
- package/dist/commonjs/naming/name-validation.js +74 -0
- package/dist/commonjs/naming/name-validation.js.map +7 -0
- package/dist/commonjs/naming/naming-policy.d.ts +7 -7
- package/dist/commonjs/naming/naming-policy.d.ts.map +1 -1
- package/dist/commonjs/naming/naming-policy.js +136 -26
- package/dist/commonjs/naming/naming-policy.js.map +2 -2
- package/dist/commonjs/naming/naming-rules.d.ts +12 -11
- package/dist/commonjs/naming/naming-rules.d.ts.map +1 -1
- package/dist/commonjs/naming/naming-rules.js +4 -11
- package/dist/commonjs/naming/naming-rules.js.map +2 -2
- package/dist/commonjs/package.json +1 -1
- package/dist/{browser/serialization/json/lower.d.ts → commonjs/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/lower.js → arm-object-conversion.js} +15 -15
- package/dist/commonjs/serialization/arm-object-conversion.js.map +7 -0
- package/dist/commonjs/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/commonjs/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/declaration-builder.js +274 -0
- package/dist/commonjs/serialization/ast/declaration-builder.js.map +7 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.js +109 -0
- package/dist/commonjs/serialization/ast/declaration-dependencies.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/commonjs/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-builder.js +316 -0
- package/dist/commonjs/serialization/ast/expression-builder.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/commonjs/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-restorer.js +193 -0
- package/dist/commonjs/serialization/ast/expression-restorer.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.js +270 -0
- package/dist/commonjs/serialization/ast/expression-rewriter.js.map +7 -0
- package/dist/commonjs/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/commonjs/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/expression-walker.js +165 -0
- package/dist/commonjs/serialization/ast/expression-walker.js.map +7 -0
- package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/commonjs/serialization/{contract → ast}/generated/ast.js.map +1 -1
- package/dist/commonjs/serialization/ast/index.d.ts +7 -0
- package/dist/commonjs/serialization/ast/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/{contract → ast}/index.js +3 -3
- package/dist/commonjs/serialization/ast/index.js.map +7 -0
- package/dist/commonjs/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/commonjs/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/commonjs/serialization/ast/resource-utils.js +71 -0
- package/dist/commonjs/serialization/ast/resource-utils.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.js +74 -0
- package/dist/commonjs/serialization/bicep/file-layout/authored-context.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js +130 -0
- package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js +71 -0
- package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js +80 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js +91 -0
- package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js +57 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.js +70 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-paths.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js +190 -0
- package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js.map +7 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js +241 -0
- package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js.map +7 -0
- package/dist/commonjs/serialization/bicep/index.d.ts +2 -0
- package/dist/commonjs/serialization/bicep/index.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/index.js +28 -0
- package/dist/commonjs/serialization/bicep/index.js.map +7 -0
- package/dist/commonjs/serialization/bicep/render.d.ts +11 -0
- package/dist/commonjs/serialization/bicep/render.d.ts.map +1 -0
- package/dist/commonjs/serialization/bicep/render.js +312 -0
- package/dist/commonjs/serialization/bicep/render.js.map +7 -0
- package/dist/commonjs/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/commonjs/serialization/encoding.js.map +7 -0
- package/dist/commonjs/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/util.js → identifiers.js} +4 -4
- package/dist/commonjs/serialization/{json/util.js.map → identifiers.js.map} +1 -1
- package/dist/commonjs/serialization/index.d.ts +1 -1
- package/dist/commonjs/serialization/index.d.ts.map +1 -1
- package/dist/commonjs/serialization/index.js.map +1 -1
- package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/commonjs/serialization/json/deserialize.js +115 -44
- package/dist/commonjs/serialization/json/deserialize.js.map +2 -2
- package/dist/commonjs/serialization/json/serialize.d.ts +1 -1
- package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -1
- package/dist/commonjs/serialization/json/serialize.js +6 -308
- package/dist/commonjs/serialization/json/serialize.js.map +3 -3
- package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/commonjs/serialization/{json/pluralize-config.js.map → pluralize-config.js.map} +1 -1
- package/dist/commonjs/serialization/symbol-map.d.ts +10 -0
- package/dist/commonjs/serialization/symbol-map.d.ts.map +1 -0
- package/dist/commonjs/serialization/symbol-map.js +72 -0
- package/dist/commonjs/serialization/symbol-map.js.map +7 -0
- package/dist/commonjs/shape/shape.d.ts +4 -4
- package/dist/commonjs/shape/shape.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts +7 -1
- package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -1
- package/dist/esm/constructs/built-in-resources/resource-group.js +26 -6
- package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -1
- package/dist/esm/constructs/output.d.ts +1 -1
- package/dist/esm/constructs/output.d.ts.map +1 -1
- package/dist/esm/constructs/output.js.map +1 -1
- package/dist/esm/constructs/parameter.d.ts +1 -1
- package/dist/esm/constructs/parameter.d.ts.map +1 -1
- package/dist/esm/constructs/parameter.js.map +1 -1
- package/dist/esm/constructs/resource/resource-query.d.ts +3 -1
- package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -1
- package/dist/esm/constructs/resource/resource-query.js +10 -0
- package/dist/esm/constructs/resource/resource-query.js.map +1 -1
- package/dist/esm/constructs/resource/resource-relationships.d.ts +9 -0
- package/dist/esm/constructs/resource/resource-relationships.d.ts.map +1 -0
- package/dist/esm/constructs/resource/resource-relationships.js +35 -0
- package/dist/esm/constructs/resource/resource-relationships.js.map +1 -0
- package/dist/esm/constructs/resource/resource.d.ts +11 -17
- package/dist/esm/constructs/resource/resource.d.ts.map +1 -1
- package/dist/esm/constructs/resource/resource.js +70 -28
- package/dist/esm/constructs/resource/resource.js.map +1 -1
- package/dist/esm/constructs/stack.d.ts +2 -16
- package/dist/esm/constructs/stack.d.ts.map +1 -1
- package/dist/esm/constructs/stack.js +1 -15
- package/dist/esm/constructs/stack.js.map +1 -1
- package/dist/esm/expression/ast-nodes.d.ts +1 -1
- package/dist/esm/expression/ast-nodes.d.ts.map +1 -1
- package/dist/esm/expression/ast-nodes.js.map +1 -1
- package/dist/esm/expression/expressions.d.ts +2 -9
- package/dist/esm/expression/expressions.d.ts.map +1 -1
- package/dist/esm/expression/expressions.js +2 -9
- package/dist/esm/expression/expressions.js.map +1 -1
- package/dist/esm/expression/utils.d.ts +5 -0
- package/dist/esm/expression/utils.d.ts.map +1 -0
- package/dist/esm/expression/utils.js +25 -0
- package/dist/esm/expression/utils.js.map +1 -0
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal.d.ts +2 -5
- package/dist/esm/internal.d.ts.map +1 -1
- package/dist/esm/internal.js +1 -3
- package/dist/esm/internal.js.map +1 -1
- package/dist/esm/naming/name-validation.d.ts +15 -0
- package/dist/esm/naming/name-validation.d.ts.map +1 -0
- package/dist/esm/naming/name-validation.js +82 -0
- package/dist/esm/naming/name-validation.js.map +1 -0
- package/dist/esm/naming/naming-policy.d.ts +7 -7
- package/dist/esm/naming/naming-policy.d.ts.map +1 -1
- package/dist/esm/naming/naming-policy.js +166 -33
- package/dist/esm/naming/naming-policy.js.map +1 -1
- package/dist/esm/naming/naming-rules.d.ts +12 -11
- package/dist/esm/naming/naming-rules.d.ts.map +1 -1
- package/dist/esm/naming/naming-rules.js +2 -9
- package/dist/esm/naming/naming-rules.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/{commonjs/serialization/json/lower.d.ts → esm/serialization/arm-object-conversion.d.ts} +11 -11
- package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
- package/dist/{browser/serialization/json/lower.js → esm/serialization/arm-object-conversion.js} +20 -20
- package/dist/esm/serialization/arm-object-conversion.js.map +1 -0
- package/dist/esm/serialization/ast/declaration-builder.d.ts +10 -0
- package/dist/esm/serialization/ast/declaration-builder.d.ts.map +1 -0
- package/dist/esm/serialization/ast/declaration-builder.js +265 -0
- package/dist/esm/serialization/ast/declaration-builder.js.map +1 -0
- package/dist/esm/serialization/ast/declaration-dependencies.d.ts +18 -0
- package/dist/esm/serialization/ast/declaration-dependencies.d.ts.map +1 -0
- package/dist/esm/serialization/ast/declaration-dependencies.js +96 -0
- package/dist/esm/serialization/ast/declaration-dependencies.js.map +1 -0
- package/dist/esm/serialization/ast/expression-builder.d.ts +14 -0
- package/dist/esm/serialization/ast/expression-builder.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-builder.js +313 -0
- package/dist/esm/serialization/ast/expression-builder.js.map +1 -0
- package/dist/esm/serialization/ast/expression-restorer.d.ts +8 -0
- package/dist/esm/serialization/ast/expression-restorer.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-restorer.js +162 -0
- package/dist/esm/serialization/ast/expression-restorer.js.map +1 -0
- package/dist/esm/serialization/ast/expression-rewriter.d.ts +29 -0
- package/dist/esm/serialization/ast/expression-rewriter.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-rewriter.js +257 -0
- package/dist/esm/serialization/ast/expression-rewriter.js.map +1 -0
- package/dist/esm/serialization/ast/expression-walker.d.ts +16 -0
- package/dist/esm/serialization/ast/expression-walker.d.ts.map +1 -0
- package/dist/esm/serialization/ast/expression-walker.js +154 -0
- package/dist/esm/serialization/ast/expression-walker.js.map +1 -0
- package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
- package/dist/esm/serialization/ast/generated/ast.js.map +1 -0
- package/dist/esm/serialization/ast/index.d.ts +7 -0
- package/dist/esm/serialization/ast/index.d.ts.map +1 -0
- package/dist/esm/serialization/ast/index.js.map +1 -0
- package/dist/esm/serialization/ast/resource-utils.d.ts +10 -0
- package/dist/esm/serialization/ast/resource-utils.d.ts.map +1 -0
- package/dist/esm/serialization/ast/resource-utils.js +52 -0
- package/dist/esm/serialization/ast/resource-utils.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts +12 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.js +57 -0
- package/dist/esm/serialization/bicep/file-layout/authored-context.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.js +100 -0
- package/dist/esm/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js +46 -0
- package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.js +68 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
- package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.js +32 -0
- package/dist/esm/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts +3 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.js +46 -0
- package/dist/esm/serialization/bicep/file-layout/file-paths.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.js +140 -0
- package/dist/esm/serialization/bicep/file-layout/file-preparation.js.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.js +225 -0
- package/dist/esm/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
- package/dist/esm/serialization/bicep/index.d.ts +2 -0
- package/dist/esm/serialization/bicep/index.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/index.js +4 -0
- package/dist/esm/serialization/bicep/index.js.map +1 -0
- package/dist/esm/serialization/bicep/render.d.ts +11 -0
- package/dist/esm/serialization/bicep/render.d.ts.map +1 -0
- package/dist/esm/serialization/bicep/render.js +293 -0
- package/dist/esm/serialization/bicep/render.js.map +1 -0
- package/dist/esm/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
- package/dist/esm/serialization/encoding.d.ts.map +1 -0
- package/dist/esm/serialization/{json/encoding.js → encoding.js} +2 -12
- package/dist/esm/serialization/encoding.js.map +1 -0
- package/dist/esm/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
- package/dist/esm/serialization/identifiers.d.ts.map +1 -0
- package/dist/esm/serialization/{json/util.js → identifiers.js} +1 -1
- package/dist/esm/serialization/identifiers.js.map +1 -0
- package/dist/esm/serialization/index.d.ts +1 -1
- package/dist/esm/serialization/index.d.ts.map +1 -1
- package/dist/esm/serialization/index.js.map +1 -1
- package/dist/esm/serialization/json/deserialize.d.ts.map +1 -1
- package/dist/esm/serialization/json/deserialize.js +131 -39
- package/dist/esm/serialization/json/deserialize.js.map +1 -1
- package/dist/esm/serialization/json/serialize.d.ts +1 -1
- package/dist/esm/serialization/json/serialize.d.ts.map +1 -1
- package/dist/esm/serialization/json/serialize.js +5 -360
- package/dist/esm/serialization/json/serialize.js.map +1 -1
- package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
- package/dist/esm/serialization/pluralize-config.js.map +1 -0
- package/dist/esm/serialization/symbol-map.d.ts +10 -0
- package/dist/esm/serialization/symbol-map.d.ts.map +1 -0
- package/dist/esm/serialization/symbol-map.js +40 -0
- package/dist/esm/serialization/symbol-map.js.map +1 -0
- package/dist/esm/shape/shape.d.ts +4 -4
- package/dist/esm/shape/shape.js +2 -2
- package/dist/esm/shape/shape.js.map +1 -1
- package/package.json +3 -2
- package/dist/browser/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/browser/serialization/contract/generated/ast.js.map +0 -1
- package/dist/browser/serialization/contract/index.d.ts +0 -2
- package/dist/browser/serialization/contract/index.d.ts.map +0 -1
- package/dist/browser/serialization/contract/index.js.map +0 -1
- package/dist/browser/serialization/json/encoding.d.ts.map +0 -1
- package/dist/browser/serialization/json/encoding.js.map +0 -1
- package/dist/browser/serialization/json/expression.d.ts +0 -32
- package/dist/browser/serialization/json/expression.d.ts.map +0 -1
- package/dist/browser/serialization/json/expression.js +0 -494
- package/dist/browser/serialization/json/expression.js.map +0 -1
- package/dist/browser/serialization/json/lower.d.ts.map +0 -1
- package/dist/browser/serialization/json/lower.js.map +0 -1
- package/dist/browser/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/browser/serialization/json/pluralize-config.js.map +0 -1
- package/dist/browser/serialization/json/util.d.ts.map +0 -1
- package/dist/browser/serialization/json/util.js.map +0 -1
- package/dist/browser/serialization/utils.d.ts +0 -3
- package/dist/browser/serialization/utils.d.ts.map +0 -1
- package/dist/browser/serialization/utils.js +0 -146
- package/dist/browser/serialization/utils.js.map +0 -1
- package/dist/commonjs/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/commonjs/serialization/contract/index.d.ts +0 -2
- package/dist/commonjs/serialization/contract/index.d.ts.map +0 -1
- package/dist/commonjs/serialization/contract/index.js.map +0 -7
- package/dist/commonjs/serialization/json/encoding.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/encoding.js.map +0 -7
- package/dist/commonjs/serialization/json/expression.d.ts +0 -32
- package/dist/commonjs/serialization/json/expression.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/expression.js +0 -509
- package/dist/commonjs/serialization/json/expression.js.map +0 -7
- package/dist/commonjs/serialization/json/lower.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/lower.js.map +0 -7
- package/dist/commonjs/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/commonjs/serialization/json/util.d.ts.map +0 -1
- package/dist/commonjs/serialization/utils.d.ts +0 -3
- package/dist/commonjs/serialization/utils.d.ts.map +0 -1
- package/dist/commonjs/serialization/utils.js +0 -169
- package/dist/commonjs/serialization/utils.js.map +0 -7
- package/dist/esm/serialization/contract/generated/ast.d.ts.map +0 -1
- package/dist/esm/serialization/contract/generated/ast.js.map +0 -1
- package/dist/esm/serialization/contract/index.d.ts +0 -2
- package/dist/esm/serialization/contract/index.d.ts.map +0 -1
- package/dist/esm/serialization/contract/index.js.map +0 -1
- package/dist/esm/serialization/json/encoding.d.ts.map +0 -1
- package/dist/esm/serialization/json/encoding.js.map +0 -1
- package/dist/esm/serialization/json/expression.d.ts +0 -32
- package/dist/esm/serialization/json/expression.d.ts.map +0 -1
- package/dist/esm/serialization/json/expression.js +0 -494
- package/dist/esm/serialization/json/expression.js.map +0 -1
- package/dist/esm/serialization/json/lower.d.ts.map +0 -1
- package/dist/esm/serialization/json/lower.js.map +0 -1
- package/dist/esm/serialization/json/pluralize-config.d.ts.map +0 -1
- package/dist/esm/serialization/json/pluralize-config.js.map +0 -1
- package/dist/esm/serialization/json/util.d.ts.map +0 -1
- package/dist/esm/serialization/json/util.js.map +0 -1
- package/dist/esm/serialization/utils.d.ts +0 -3
- package/dist/esm/serialization/utils.d.ts.map +0 -1
- package/dist/esm/serialization/utils.js +0 -146
- package/dist/esm/serialization/utils.js.map +0 -1
- /package/dist/browser/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/browser/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/browser/serialization/{contract → ast}/index.js +0 -0
- /package/dist/browser/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/browser/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
- /package/dist/commonjs/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/commonjs/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/commonjs/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/commonjs/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
- /package/dist/esm/serialization/{contract → ast}/generated/ast.d.ts +0 -0
- /package/dist/esm/serialization/{contract → ast}/generated/ast.js +0 -0
- /package/dist/esm/serialization/{contract → ast}/index.js +0 -0
- /package/dist/esm/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
- /package/dist/esm/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/serialization/bicep/render.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n DeclarableBodyNode,\n DecoratorsNode,\n ExpressionNode,\n InfraNode,\n ModuleDeclarationNode,\n OutputDeclarationNode,\n ParameterDeclarationNode,\n ResourceDeclarationNode,\n TypeNode,\n VariableDeclarationNode,\n} from \"../ast/index.js\";\nimport { Stack } from \"../../constructs/stack.js\";\n\nimport { buildBicepFiles } from \"./file-layout/build-bicep-files.js\";\n\nconst PRECEDENCE: Record<string, number> = {\n \"??\": 1,\n \"||\": 2,\n \"&&\": 3,\n \"==\": 4,\n \"!=\": 4,\n \"=~\": 4,\n \"!~\": 4,\n \"<\": 5,\n \"<=\": 5,\n \">\": 5,\n \">=\": 5,\n \"+\": 6,\n \"-\": 6,\n \"*\": 7,\n \"/\": 7,\n \"%\": 7,\n};\n\nconst TERNARY_CONDITION_PRECEDENCE = 0.5;\nconst ACCESS_PRECEDENCE = 9;\n\n/** A generated Bicep source file and its relative output path. */\nexport interface RenderedBicepFile {\n readonly path: string;\n readonly contents: string;\n}\n\n/** Render authored Stacks into Bicep files without writing or deploying them. */\nexport function renderBicepFiles(input: Stack | readonly Stack[]): readonly RenderedBicepFile[] {\n const stacks: readonly Stack[] = Array.isArray(input) ? input : [input];\n if (stacks.length === 0) return [];\n const names = new Set<string>();\n const files = stacks.flatMap((stack) => {\n if (!(stack instanceof Stack)) {\n throw new Error(\n \"Bicep generation requires authored Stacks. Restore supported JSON definitions with deserialize() first.\",\n );\n }\n return buildBicepFiles(stack).map((file) => renderBicepFile(file));\n });\n for (const file of files) {\n if (names.has(file.path)) {\n throw new Error(`Duplicate Bicep file path \"${file.path}\". Give Stacks distinct names.`);\n }\n names.add(file.path);\n }\n return files;\n}\n\nexport function renderBicepFile(file: InfraNode): RenderedBicepFile {\n const sections: string[] = [];\n\n if (file.targetScope !== undefined) {\n sections.push(`targetScope = ${renderStringLiteral(file.targetScope)}`);\n }\n\n sections.push(...renderNamedDeclarations(file.parameters, renderParameter));\n sections.push(...renderNamedDeclarations(file.variables, renderVariable));\n sections.push(...renderNamedDeclarations(file.resources, renderResource));\n sections.push(...renderNamedDeclarations(file.modules, renderModule));\n sections.push(...renderNamedDeclarations(file.outputs, renderOutput));\n\n return {\n path: file.fileName,\n contents: `${sections.filter((section) => section.length > 0).join(\"\\n\\n\")}\\n`,\n };\n}\n\nfunction renderNamedDeclarations<T extends { readonly bicepIdentifier: string }>(\n record: Record<string, T> | undefined,\n render: (name: string, value: T) => string,\n): string[] {\n if (record === undefined) {\n return [];\n }\n\n return Object.values(record).map((value) => render(value.bicepIdentifier, value));\n}\n\nfunction renderDecorators(decorators: DecoratorsNode | undefined): string {\n if (decorators === undefined) {\n return \"\";\n }\n\n const lines: string[] = [];\n\n if (decorators.description !== undefined) {\n lines.push(`@description(${renderStringLiteral(decorators.description)})`);\n }\n if (decorators.secure) lines.push(\"@secure()\");\n if (decorators.minValue !== undefined) {\n lines.push(`@minValue(${decorators.minValue})`);\n }\n if (decorators.maxValue !== undefined) {\n lines.push(`@maxValue(${decorators.maxValue})`);\n }\n if (decorators.minLength !== undefined) {\n lines.push(`@minLength(${decorators.minLength})`);\n }\n if (decorators.maxLength !== undefined) {\n lines.push(`@maxLength(${decorators.maxLength})`);\n }\n if (decorators.metadata !== undefined) {\n const obj: ExpressionNode = { kind: \"object\", value: decorators.metadata };\n lines.push(`@metadata(${renderExpression(obj)})`);\n }\n if (decorators.allowed !== undefined) {\n const arr: ExpressionNode = {\n kind: \"array\",\n items: [...decorators.allowed],\n };\n lines.push(`@allowed(${renderExpression(arr)})`);\n }\n if (decorators.discriminator !== undefined) {\n lines.push(`@discriminator(${renderStringLiteral(decorators.discriminator)})`);\n }\n if (decorators.sealed) lines.push(\"@sealed()\");\n if (decorators.export) lines.push(\"@export()\");\n if (decorators.batchSize !== undefined) {\n lines.push(`@batchSize(${decorators.batchSize})`);\n }\n\n return lines.length > 0 ? `${lines.join(\"\\n\")}\\n` : \"\";\n}\n\nfunction renderParameter(name: string, node: ParameterDeclarationNode): string {\n return `${renderDecorators(node.decorators)}param ${name} ${renderType(node.valueType)}${node.defaultValue === undefined ? \"\" : ` = ${renderExpression(node.defaultValue)}`}`;\n}\n\nfunction renderVariable(name: string, node: VariableDeclarationNode): string {\n return `${renderDecorators(node.decorators)}var ${name} = ${renderExpression(node.value)}`;\n}\n\nfunction renderOutput(name: string, node: OutputDeclarationNode): string {\n return `${renderDecorators(node.decorators)}output ${name} ${renderType(node.valueType)} = ${renderExpression(node.value)}`;\n}\n\nfunction renderResource(name: string, node: ResourceDeclarationNode): string {\n return `${renderDecorators(node.decorators)}resource ${name} ${renderStringLiteral(`${node.type}@${node.apiVersion}`)}${node.existing ? \" existing\" : \"\"} = ${renderDeclarableBody(node.value)}`;\n}\n\nfunction renderModule(name: string, node: ModuleDeclarationNode): string {\n return `${renderDecorators(node.decorators)}module ${name} ${renderStringLiteral(node.path)} = ${renderDeclarableBody(node.value)}`;\n}\n\nfunction renderDeclarableBody(node: DeclarableBodyNode): string {\n switch (node.kind) {\n case \"object\":\n return renderExpression(node);\n case \"if-condition\":\n return `if (${renderExpression(node.condition)}) ${renderExpression(node.body)}`;\n case \"for-expression\":\n return renderExpression(node);\n default:\n return assertNever(node);\n }\n}\n\nfunction renderExpression(node: ExpressionNode, parentPrecedence?: number): string {\n switch (node.kind) {\n case \"null\":\n return \"null\";\n case \"boolean\":\n return node.value ? \"true\" : \"false\";\n case \"integer\":\n return node.value;\n case \"string\":\n return renderStringLiteral(node.value);\n case \"array\":\n if (node.items.length === 0) {\n return \"[]\";\n }\n\n return `[\\n${indent(node.items.map((item) => renderExpression(item)).join(\"\\n\"))}\\n]`;\n case \"object\": {\n const entries = Object.entries(node.value);\n if (entries.length === 0) {\n return \"{}\";\n }\n\n return `{\\n${indent(entries.map(([key, value]) => `${renderPropertyKey(key)}: ${renderExpression(value)}`).join(\"\\n\"))}\\n}`;\n }\n case \"identifier\":\n return node.id;\n case \"function-call\": {\n // Bicep prefers string interpolation over concat() \u2014 transform at render time.\n if (typeof node.target === \"string\" && node.target === \"concat\" && node.args.length > 0) {\n const inner = node.args\n .map((arg) =>\n arg.kind === \"string\" ? escapeStringContent(arg.value) : `\\${${renderExpression(arg)}}`,\n )\n .join(\"\");\n return `'${inner}'`;\n }\n const target = typeof node.target === \"string\" ? node.target : renderExpression(node.target);\n return `${target}(${node.args.map((arg) => renderExpression(arg)).join(\", \")})`;\n }\n case \"instance-function-call\":\n return `${renderExpression(node.base, ACCESS_PRECEDENCE)}.${node.name}(${node.args.map((arg) => renderExpression(arg)).join(\", \")})`;\n case \"property-access\":\n return `${renderExpression(node.base, ACCESS_PRECEDENCE)}${node.nullish ? \".?\" : \".\"}${node.property}`;\n case \"array-access\":\n return `${renderExpression(node.base, ACCESS_PRECEDENCE)}[${node.nullish ? \"?\" : \"\"}${node.fromEnd ? \"^\" : \"\"}${renderExpression(node.index)}]`;\n case \"binary-operation\": {\n const prec = PRECEDENCE[node.operator] ?? 0;\n const inner = `${renderExpression(node.left, prec)} ${node.operator} ${renderExpression(node.right, prec + 0.5)}`;\n return parentPrecedence !== undefined && prec < parentPrecedence ? `(${inner})` : inner;\n }\n case \"unary-operation\": {\n const UNARY_PREC = 8;\n const inner = `${node.operator}${renderExpression(node.argument, UNARY_PREC)}`;\n return parentPrecedence !== undefined && parentPrecedence > UNARY_PREC ? `(${inner})` : inner;\n }\n case \"ternary-operation\": {\n const inner = `${renderExpression(node.condition, TERNARY_CONDITION_PRECEDENCE)} ? ${renderExpression(node.trueValue)} : ${renderExpression(node.falseValue)}`;\n return parentPrecedence !== undefined && parentPrecedence > 0 ? `(${inner})` : inner;\n }\n case \"if-condition\":\n return `if (${renderExpression(node.condition)}) ${renderExpression(node.body)}`;\n case \"for-expression\": {\n const variables =\n node.indexVariable === undefined\n ? node.itemVariable\n : `(${node.itemVariable}, ${node.indexVariable})`;\n return `[for ${variables} in ${renderExpression(node.collection)}: ${renderExpression(node.body)}]`;\n }\n case \"interpolated-string\": {\n const inner = node.segments\n .map((seg) =>\n seg.kind === \"string\" ? escapeStringContent(seg.value) : `\\${${renderExpression(seg)}}`,\n )\n .join(\"\");\n return `'${inner}'`;\n }\n default:\n return assertNever(node);\n }\n}\n\nfunction renderType(node: TypeNode): string {\n switch (node.kind) {\n case \"primitive-type\":\n return node.name;\n case \"type-reference\":\n return node.name;\n case \"string-type-literal\":\n return renderStringLiteral(node.value);\n case \"integer-type-literal\":\n return node.value;\n case \"boolean-type-literal\":\n return node.value ? \"true\" : \"false\";\n case \"null-type-literal\":\n return \"null\";\n case \"array-type\":\n return `${needsParenthesizedArrayItem(node.item) ? `(${renderType(node.item)})` : renderType(node.item)}[]`;\n case \"object-type-property\":\n return `${renderDecorators(node.decorators)}${renderPropertyKey(node.key)}${node.optional ? \"?\" : \"\"}: ${renderType(node.valueType)}`;\n case \"object-type-additional-properties\":\n return `${renderDecorators(node.decorators)}*: ${renderType(node.valueType)}`;\n case \"object-type\": {\n const members = [\n ...node.properties.map((property) => renderType(property)),\n ...(node.additionalProperties === undefined ? [] : [renderType(node.additionalProperties)]),\n ];\n if (members.length === 0) {\n return \"{}\";\n }\n return `{\\n${indent(members.join(\"\\n\"))}\\n}`;\n }\n case \"union-type-member\":\n return renderType(node.valueType);\n case \"union-type\":\n return node.members.map((member) => renderType(member.valueType)).join(\" | \");\n case \"nullable-type\":\n return `${renderType(node.base)}?`;\n case \"parameterized-type-argument\":\n return renderType(node.valueType);\n case \"parameterized-type-instantiation\":\n return `${renderType(node.base)}<${node.args.map((arg) => renderType(arg.valueType)).join(\", \")}>`;\n default:\n return assertNever(node);\n }\n}\n\nfunction needsParenthesizedArrayItem(node: TypeNode): boolean {\n switch (node.kind) {\n case \"primitive-type\":\n case \"type-reference\":\n case \"parameterized-type-instantiation\":\n return false;\n default:\n return true;\n }\n}\n\nfunction renderPropertyKey(key: string): string {\n return /^[A-Za-z_][A-Za-z0-9_]*$/u.test(key) ? key : renderStringLiteral(key);\n}\n\nfunction renderStringLiteral(value: string): string {\n return `'${escapeStringContent(value)}'`;\n}\n\nfunction escapeStringContent(value: string): string {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/'/g, \"\\\\'\")\n .replace(/\\$\\{/g, \"\\\\${\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\t/g, \"\\\\t\");\n}\n\nfunction indent(value: string, level = 1): string {\n const prefix = \" \".repeat(level);\n return value\n .split(\"\\n\")\n .map((line) => `${prefix}${line}`)\n .join(\"\\n\");\n}\n\nfunction unsupported(kind: string): Error {\n return new Error(`Unsupported Bicep renderer node kind: ${kind}.`);\n}\n\nfunction assertNever(value: never): never {\n throw unsupported((value as { kind?: string }).kind ?? \"unknown\");\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ValueEncodingDescriptor } from "
|
|
1
|
+
import type { ValueEncodingDescriptor } from "../shape/value-encoding.js";
|
|
2
2
|
export declare function encodeWireValue(value: unknown, encoding: ValueEncodingDescriptor, path?: readonly string[]): unknown;
|
|
3
3
|
export declare function decodeWireValue(value: unknown, encoding: ValueEncodingDescriptor, path?: readonly string[]): unknown;
|
|
4
4
|
//# sourceMappingURL=encoding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/serialization/encoding.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAOV,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAEpC,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,uBAAuB,EACjC,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,OAAO,CA8BT;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,uBAAuB,EACjC,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,OAAO,CAiCT"}
|
|
@@ -21,8 +21,8 @@ __export(encoding_exports, {
|
|
|
21
21
|
encodeWireValue: () => encodeWireValue
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(encoding_exports);
|
|
24
|
-
var import_ast_nodes = require("
|
|
25
|
-
var import_expressions = require("
|
|
24
|
+
var import_ast_nodes = require("../expression/ast-nodes.js");
|
|
25
|
+
var import_expressions = require("../expression/expressions.js");
|
|
26
26
|
function encodeWireValue(value, encoding, path = []) {
|
|
27
27
|
if (value === null || value === void 0) return value;
|
|
28
28
|
if ((0, import_expressions.isExpression)(value) || (0, import_ast_nodes.isExpressionNode)(value)) return value;
|
|
@@ -89,7 +89,6 @@ function encodeDateTimeText(value, encoding, path) {
|
|
|
89
89
|
if (encoding.source === "offsetDateTime") {
|
|
90
90
|
const clientText = requireDateString(value, "rfc3339", path);
|
|
91
91
|
if (encoding.format === "rfc7231") {
|
|
92
|
-
requireWholeSecondDateTime(clientText, path);
|
|
93
92
|
return new Date(clientText).toUTCString();
|
|
94
93
|
}
|
|
95
94
|
return clientText;
|
|
@@ -98,9 +97,6 @@ function encodeDateTimeText(value, encoding, path) {
|
|
|
98
97
|
}
|
|
99
98
|
const date = requireDate(value, path);
|
|
100
99
|
if (encoding.format === "rfc7231") {
|
|
101
|
-
if (date.getUTCMilliseconds() !== 0) {
|
|
102
|
-
fail(path, "RFC7231 conversion would lose millisecond precision.");
|
|
103
|
-
}
|
|
104
100
|
return date.toUTCString();
|
|
105
101
|
}
|
|
106
102
|
return date.toISOString();
|
|
@@ -152,12 +148,6 @@ function encodePlainDate(value, path) {
|
|
|
152
148
|
}
|
|
153
149
|
return date.toISOString().slice(0, 10);
|
|
154
150
|
}
|
|
155
|
-
function requireWholeSecondDateTime(value, path) {
|
|
156
|
-
const fraction = /\.(\d+)(?:Z|[+-]\d{2}:\d{2})$/.exec(value)?.[1];
|
|
157
|
-
if (fraction !== void 0 && /[1-9]/.test(fraction)) {
|
|
158
|
-
fail(path, "RFC7231 conversion would lose subsecond precision.");
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
151
|
function requireDateString(value, format, path) {
|
|
162
152
|
const isValid = format === "rfc3339" ? isValidRfc3339(String(value)) : /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} GMT$/.test(
|
|
163
153
|
String(value)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/serialization/encoding.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isExpressionNode } from \"../expression/ast-nodes.js\";\nimport { isExpression } from \"../expression/expressions.js\";\nimport type {\n BytesEncodingDescriptor,\n DateTimeTextEncodingDescriptor,\n IntegerScalarName,\n NumericScalarName,\n NumericStringEncodingDescriptor,\n UnixTimestampEncodingDescriptor,\n ValueEncodingDescriptor,\n} from \"../shape/value-encoding.js\";\n\nexport function encodeWireValue(\n value: unknown,\n encoding: ValueEncodingDescriptor,\n path: readonly string[] = [],\n): unknown {\n if (value === null || value === undefined) return value;\n if (isExpression(value) || isExpressionNode(value)) return value;\n\n switch (encoding.kind) {\n case \"date-time-text\":\n return encodeDateTimeText(value, encoding, path);\n case \"unix-timestamp\":\n return encodeUnixTimestamp(value, encoding, path);\n case \"duration-iso8601\":\n return requireIsoDuration(value, path);\n case \"duration-numeric\":\n return requireInteger(value, encoding.wire.scalar, path);\n case \"bytes\":\n return encodeBytes(value, encoding, path);\n case \"plain-date\":\n return encoding.clientMode === \"wire\"\n ? requirePlainDate(value, path)\n : encodePlainDate(value, path);\n case \"numeric-string\":\n return requireNumericString(value, encoding, path);\n case \"boolean-string\":\n if (encoding.clientMode === \"wire\") {\n return requireBooleanString(value, path);\n }\n if (typeof value !== \"boolean\") {\n fail(path, `Expected a boolean, got ${describe(value)}.`);\n }\n return String(value);\n }\n}\n\nexport function decodeWireValue(\n value: unknown,\n encoding: ValueEncodingDescriptor,\n path: readonly string[] = [],\n): unknown {\n if (value === null || value === undefined) return value;\n if (isExpression(value) || isExpressionNode(value)) return value;\n\n switch (encoding.kind) {\n case \"date-time-text\":\n return decodeDateTimeText(value, encoding, path);\n case \"unix-timestamp\": {\n const seconds = requireInteger(value, encoding.wire.scalar, path);\n if (encoding.clientMode === \"wire\") return seconds;\n const date = new Date(seconds * 1000);\n if (Number.isNaN(date.getTime())) {\n fail(path, \"Unix timestamp is outside the JavaScript Date range.\");\n }\n return date;\n }\n case \"duration-iso8601\":\n return requireIsoDuration(value, path);\n case \"duration-numeric\":\n return requireInteger(value, encoding.wire.scalar, path);\n case \"bytes\":\n return decodeBytes(value, encoding, path);\n case \"plain-date\": {\n const date = requirePlainDate(value, path);\n return encoding.clientMode === \"wire\" ? date : new Date(`${date}T00:00:00.000Z`);\n }\n case \"numeric-string\":\n return requireNumericString(value, encoding, path);\n case \"boolean-string\": {\n const booleanText = requireBooleanString(value, path);\n return encoding.clientMode === \"wire\" ? booleanText : booleanText.toLowerCase() === \"true\";\n }\n }\n}\n\nfunction encodeDateTimeText(\n value: unknown,\n encoding: DateTimeTextEncodingDescriptor,\n path: readonly string[],\n): string {\n if (encoding.clientMode === \"wire\") {\n if (encoding.source === \"offsetDateTime\") {\n const clientText = requireDateString(value, \"rfc3339\", path);\n if (encoding.format === \"rfc7231\") {\n return new Date(clientText).toUTCString();\n }\n return clientText;\n }\n return requireDateString(value, encoding.format, path);\n }\n const date = requireDate(value, path);\n if (encoding.format === \"rfc7231\") {\n return date.toUTCString();\n }\n return date.toISOString();\n}\n\nfunction decodeDateTimeText(\n value: unknown,\n encoding: DateTimeTextEncodingDescriptor,\n path: readonly string[],\n): unknown {\n const text = requireDateString(value, encoding.format, path);\n if (encoding.source === \"offsetDateTime\") {\n return encoding.format === \"rfc7231\" ? new Date(text).toISOString() : text;\n }\n if (encoding.clientMode === \"wire\") return text;\n return new Date(text);\n}\n\nfunction encodeUnixTimestamp(\n value: unknown,\n encoding: UnixTimestampEncodingDescriptor,\n path: readonly string[],\n): number {\n if (encoding.clientMode === \"wire\") {\n return requireInteger(value, encoding.wire.scalar, path);\n }\n const date = requireDate(value, path);\n if (date.getTime() % 1000 !== 0) {\n fail(path, \"Unix timestamp conversion would lose millisecond precision.\");\n }\n return requireInteger(date.getTime() / 1000, encoding.wire.scalar, path);\n}\n\nfunction encodeBytes(\n value: unknown,\n encoding: BytesEncodingDescriptor,\n path: readonly string[],\n): string {\n if (encoding.clientMode === \"wire\") {\n return requireBase64(value, encoding.format, path);\n }\n if (!(value instanceof Uint8Array)) {\n fail(path, `Expected Uint8Array, got ${describe(value)}.`);\n }\n const base64 = uint8ArrayToBase64(value);\n return encoding.format === \"base64url\" ? base64ToBase64Url(base64) : base64;\n}\n\nfunction decodeBytes(\n value: unknown,\n encoding: BytesEncodingDescriptor,\n path: readonly string[],\n): unknown {\n const text = requireBase64(value, encoding.format, path);\n if (encoding.clientMode === \"wire\") return text;\n const base64 = encoding.format === \"base64url\" ? base64UrlToBase64(text) : text;\n return base64ToUint8Array(base64);\n}\n\nfunction requireDate(value: unknown, path: readonly string[]): Date {\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n fail(path, `Expected a valid Date, got ${describe(value)}.`);\n }\n return value;\n}\n\nfunction encodePlainDate(value: unknown, path: readonly string[]): string {\n const date = requireDate(value, path);\n if (\n date.getUTCHours() !== 0 ||\n date.getUTCMinutes() !== 0 ||\n date.getUTCSeconds() !== 0 ||\n date.getUTCMilliseconds() !== 0\n ) {\n fail(path, \"Plain-date conversion requires UTC midnight.\");\n }\n return date.toISOString().slice(0, 10);\n}\n\nfunction requireDateString(\n value: unknown,\n format: \"rfc3339\" | \"rfc7231\",\n path: readonly string[],\n): string {\n const isValid =\n format === \"rfc3339\"\n ? isValidRfc3339(String(value))\n : /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} GMT$/.test(\n String(value),\n ) &&\n !Number.isNaN(Date.parse(String(value))) &&\n new Date(String(value)).toUTCString() === value;\n if (typeof value !== \"string\" || !isValid) {\n fail(path, `Expected a valid ${format} date string, got ${describe(value)}.`);\n }\n return value;\n}\n\nconst ISO_DURATION =\n /^-?P(?=\\d|T\\d)(?:(?:\\d+(?:\\.\\d+)?Y)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?W)?(?:\\d+(?:\\.\\d+)?D)?)(?:T(?:\\d+(?:\\.\\d+)?H)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?S)?)?$/;\n\nfunction requireIsoDuration(value: unknown, path: readonly string[]): string {\n if (typeof value !== \"string\" || !ISO_DURATION.test(value)) {\n fail(path, `Expected an ISO8601 day/time duration, got ${describe(value)}.`);\n }\n\n return value;\n}\n\nfunction requirePlainDate(value: unknown, path: readonly string[]): string {\n if (\n typeof value !== \"string\" ||\n !/^\\d{4}-\\d{2}-\\d{2}$/.test(value) ||\n Number.isNaN(Date.parse(`${value}T00:00:00.000Z`)) ||\n new Date(`${value}T00:00:00.000Z`).toISOString().slice(0, 10) !== value\n ) {\n fail(path, `Expected a YYYY-MM-DD date, got ${describe(value)}.`);\n }\n return value;\n}\n\nfunction requireInteger(\n value: unknown,\n scalar: IntegerScalarName,\n path: readonly string[],\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n !inIntegerRange(BigInt(value), scalar)\n ) {\n fail(path, `Expected a safe ${scalar} value, got ${describe(value)}.`);\n }\n return value;\n}\n\nconst CANONICAL_NUMBER = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$/;\n\nfunction requireNumericString(\n value: unknown,\n encoding: NumericStringEncodingDescriptor,\n path: readonly string[],\n): string {\n const pattern = encoding.source === \"integer\" ? /^-?(?:0|[1-9]\\d*)$/ : CANONICAL_NUMBER;\n if (typeof value !== \"string\" || !pattern.test(value)) {\n fail(path, `Expected a canonical numeric string, got ${describe(value)}.`);\n }\n if (\n encoding.source === \"integer\"\n ? !inIntegerRange(BigInt(value), encoding.sourceScalar)\n : !inNumericRange(value, encoding.sourceScalar)\n ) {\n fail(path, `Numeric string is outside '${encoding.sourceScalar}' range.`);\n }\n return value;\n}\n\nfunction inNumericRange(value: string, scalar: NumericScalarName): boolean {\n if (scalar === \"numeric\" || scalar === \"decimal\") return true;\n if (scalar === \"decimal128\") {\n const match = /^(-?)(\\d+)(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/.exec(value);\n if (!match) return false;\n const integer = match[2]!;\n const fraction = match[3] ?? \"\";\n const significant = `${integer}${fraction}`.replace(/^0+/u, \"\");\n if (significant.length === 0) return true;\n if (significant.length > 34) return false;\n const exponent = Number(match[4] ?? 0);\n const adjustedExponent = exponent + integer.length - 1;\n return adjustedExponent >= -6176 && adjustedExponent <= 6144;\n }\n\n const number = Number(value);\n if (!Number.isFinite(number)) return false;\n if (scalar === \"float32\") {\n return Math.abs(number) <= 3.4028234663852886e38;\n }\n return true;\n}\n\nconst INTEGER_RANGES: Partial<Record<NumericScalarName, readonly [bigint, bigint]>> = {\n safeint: [BigInt(Number.MIN_SAFE_INTEGER), BigInt(Number.MAX_SAFE_INTEGER)],\n int8: [-128n, 127n],\n uint8: [0n, 255n],\n int16: [-32768n, 32767n],\n uint16: [0n, 65535n],\n int32: [-2147483648n, 2147483647n],\n uint32: [0n, 4294967295n],\n int64: [-9223372036854775808n, 9223372036854775807n],\n uint64: [0n, 18446744073709551615n],\n};\n\nfunction inIntegerRange(value: bigint, scalar: NumericScalarName): boolean {\n const range = INTEGER_RANGES[scalar];\n return range ? value >= range[0] && value <= range[1] : true;\n}\n\nfunction requireBooleanString(value: unknown, path: readonly string[]): string {\n if (value !== \"true\" && value !== \"false\") {\n fail(path, `Expected 'true' or 'false', got ${describe(value)}.`);\n }\n return value;\n}\n\nfunction isValidRfc3339(value: string): boolean {\n const match =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.\\d+)?(?:Z|[+-](\\d{2}):(\\d{2}))$/.exec(\n value,\n );\n if (!match) return false;\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n if (\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > new Date(Date.UTC(year, month, 0)).getUTCDate() ||\n Number(match[4]) > 23 ||\n Number(match[5]) > 59 ||\n Number(match[6]) > 59 ||\n Number(match[7] ?? 0) > 23 ||\n Number(match[8] ?? 0) > 59\n ) {\n return false;\n }\n return !Number.isNaN(Date.parse(value));\n}\n\nfunction requireBase64(\n value: unknown,\n format: \"base64\" | \"base64url\",\n path: readonly string[],\n): string {\n if (typeof value !== \"string\") {\n fail(path, `Expected a ${format} string, got ${describe(value)}.`);\n }\n const pattern =\n format === \"base64\"\n ? /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/\n : /^[A-Za-z0-9_-]*$/;\n if (!pattern.test(value)) {\n fail(path, `Expected a valid ${format} string.`);\n }\n if (format === \"base64url\" && value.length % 4 === 1) {\n fail(path, \"Expected a valid base64url string length.\");\n }\n const base64 = format === \"base64url\" ? base64UrlToBase64(value) : value;\n const canonical =\n format === \"base64url\"\n ? base64ToBase64Url(uint8ArrayToBase64(base64ToUint8Array(base64)))\n : uint8ArrayToBase64(base64ToUint8Array(base64));\n if (canonical !== value) {\n fail(path, `Expected a canonical ${format} string.`);\n }\n return value;\n}\n\nfunction uint8ArrayToBase64(value: Uint8Array): string {\n const chunks: string[] = [];\n const chunkSize = 0x8000;\n for (let offset = 0; offset < value.length; offset += chunkSize) {\n chunks.push(String.fromCharCode(...value.subarray(offset, offset + chunkSize)));\n }\n return btoa(chunks.join(\"\"));\n}\n\nfunction base64ToUint8Array(value: string): Uint8Array {\n const binary = atob(value);\n return Uint8Array.from(binary, (character) => character.charCodeAt(0));\n}\n\nfunction base64ToBase64Url(base64: string): string {\n return base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\n\nfunction base64UrlToBase64(base64url: string): string {\n const padded = base64url + \"=\".repeat((4 - (base64url.length % 4)) % 4);\n return padded.replace(/-/g, \"+\").replace(/_/g, \"/\");\n}\n\nfunction describe(value: unknown): string {\n if (value instanceof Date) return \"Date\";\n if (value instanceof Uint8Array) return \"Uint8Array\";\n return value === null ? \"null\" : typeof value;\n}\n\nfunction fail(path: readonly string[], message: string): never {\n const location = path.length > 0 ? path.join(\".\") : \"<value>\";\n throw new TypeError(`Invalid encoded value at '${location}': ${message}`);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAAiC;AACjC,yBAA6B;AAWtB,SAAS,gBACd,OACA,UACA,OAA0B,CAAC,GAClB;AACT,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,UAAI,iCAAa,KAAK,SAAK,mCAAiB,KAAK,EAAG,QAAO;AAE3D,UAAQ,SAAS,MAAM;AAAA,IACrB,KAAK;AACH,aAAO,mBAAmB,OAAO,UAAU,IAAI;AAAA,IACjD,KAAK;AACH,aAAO,oBAAoB,OAAO,UAAU,IAAI;AAAA,IAClD,KAAK;AACH,aAAO,mBAAmB,OAAO,IAAI;AAAA,IACvC,KAAK;AACH,aAAO,eAAe,OAAO,SAAS,KAAK,QAAQ,IAAI;AAAA,IACzD,KAAK;AACH,aAAO,YAAY,OAAO,UAAU,IAAI;AAAA,IAC1C,KAAK;AACH,aAAO,SAAS,eAAe,SAC3B,iBAAiB,OAAO,IAAI,IAC5B,gBAAgB,OAAO,IAAI;AAAA,IACjC,KAAK;AACH,aAAO,qBAAqB,OAAO,UAAU,IAAI;AAAA,IACnD,KAAK;AACH,UAAI,SAAS,eAAe,QAAQ;AAClC,eAAO,qBAAqB,OAAO,IAAI;AAAA,MACzC;AACA,UAAI,OAAO,UAAU,WAAW;AAC9B,aAAK,MAAM,2BAA2B,SAAS,KAAK,CAAC,GAAG;AAAA,MAC1D;AACA,aAAO,OAAO,KAAK;AAAA,EACvB;AACF;AAEO,SAAS,gBACd,OACA,UACA,OAA0B,CAAC,GAClB;AACT,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,UAAI,iCAAa,KAAK,SAAK,mCAAiB,KAAK,EAAG,QAAO;AAE3D,UAAQ,SAAS,MAAM;AAAA,IACrB,KAAK;AACH,aAAO,mBAAmB,OAAO,UAAU,IAAI;AAAA,IACjD,KAAK,kBAAkB;AACrB,YAAM,UAAU,eAAe,OAAO,SAAS,KAAK,QAAQ,IAAI;AAChE,UAAI,SAAS,eAAe,OAAQ,QAAO;AAC3C,YAAM,OAAO,IAAI,KAAK,UAAU,GAAI;AACpC,UAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG;AAChC,aAAK,MAAM,sDAAsD;AAAA,MACnE;AACA,aAAO;AAAA,IACT;AAAA,IACA,KAAK;AACH,aAAO,mBAAmB,OAAO,IAAI;AAAA,IACvC,KAAK;AACH,aAAO,eAAe,OAAO,SAAS,KAAK,QAAQ,IAAI;AAAA,IACzD,KAAK;AACH,aAAO,YAAY,OAAO,UAAU,IAAI;AAAA,IAC1C,KAAK,cAAc;AACjB,YAAM,OAAO,iBAAiB,OAAO,IAAI;AACzC,aAAO,SAAS,eAAe,SAAS,OAAO,oBAAI,KAAK,GAAG,IAAI,gBAAgB;AAAA,IACjF;AAAA,IACA,KAAK;AACH,aAAO,qBAAqB,OAAO,UAAU,IAAI;AAAA,IACnD,KAAK,kBAAkB;AACrB,YAAM,cAAc,qBAAqB,OAAO,IAAI;AACpD,aAAO,SAAS,eAAe,SAAS,cAAc,YAAY,YAAY,MAAM;AAAA,IACtF;AAAA,EACF;AACF;AAEA,SAAS,mBACP,OACA,UACA,MACQ;AACR,MAAI,SAAS,eAAe,QAAQ;AAClC,QAAI,SAAS,WAAW,kBAAkB;AACxC,YAAM,aAAa,kBAAkB,OAAO,WAAW,IAAI;AAC3D,UAAI,SAAS,WAAW,WAAW;AACjC,eAAO,IAAI,KAAK,UAAU,EAAE,YAAY;AAAA,MAC1C;AACA,aAAO;AAAA,IACT;AACA,WAAO,kBAAkB,OAAO,SAAS,QAAQ,IAAI;AAAA,EACvD;AACA,QAAM,OAAO,YAAY,OAAO,IAAI;AACpC,MAAI,SAAS,WAAW,WAAW;AACjC,WAAO,KAAK,YAAY;AAAA,EAC1B;AACA,SAAO,KAAK,YAAY;AAC1B;AAEA,SAAS,mBACP,OACA,UACA,MACS;AACT,QAAM,OAAO,kBAAkB,OAAO,SAAS,QAAQ,IAAI;AAC3D,MAAI,SAAS,WAAW,kBAAkB;AACxC,WAAO,SAAS,WAAW,YAAY,IAAI,KAAK,IAAI,EAAE,YAAY,IAAI;AAAA,EACxE;AACA,MAAI,SAAS,eAAe,OAAQ,QAAO;AAC3C,SAAO,IAAI,KAAK,IAAI;AACtB;AAEA,SAAS,oBACP,OACA,UACA,MACQ;AACR,MAAI,SAAS,eAAe,QAAQ;AAClC,WAAO,eAAe,OAAO,SAAS,KAAK,QAAQ,IAAI;AAAA,EACzD;AACA,QAAM,OAAO,YAAY,OAAO,IAAI;AACpC,MAAI,KAAK,QAAQ,IAAI,QAAS,GAAG;AAC/B,SAAK,MAAM,6DAA6D;AAAA,EAC1E;AACA,SAAO,eAAe,KAAK,QAAQ,IAAI,KAAM,SAAS,KAAK,QAAQ,IAAI;AACzE;AAEA,SAAS,YACP,OACA,UACA,MACQ;AACR,MAAI,SAAS,eAAe,QAAQ;AAClC,WAAO,cAAc,OAAO,SAAS,QAAQ,IAAI;AAAA,EACnD;AACA,MAAI,EAAE,iBAAiB,aAAa;AAClC,SAAK,MAAM,4BAA4B,SAAS,KAAK,CAAC,GAAG;AAAA,EAC3D;AACA,QAAM,SAAS,mBAAmB,KAAK;AACvC,SAAO,SAAS,WAAW,cAAc,kBAAkB,MAAM,IAAI;AACvE;AAEA,SAAS,YACP,OACA,UACA,MACS;AACT,QAAM,OAAO,cAAc,OAAO,SAAS,QAAQ,IAAI;AACvD,MAAI,SAAS,eAAe,OAAQ,QAAO;AAC3C,QAAM,SAAS,SAAS,WAAW,cAAc,kBAAkB,IAAI,IAAI;AAC3E,SAAO,mBAAmB,MAAM;AAClC;AAEA,SAAS,YAAY,OAAgB,MAA+B;AAClE,MAAI,EAAE,iBAAiB,SAAS,OAAO,MAAM,MAAM,QAAQ,CAAC,GAAG;AAC7D,SAAK,MAAM,8BAA8B,SAAS,KAAK,CAAC,GAAG;AAAA,EAC7D;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,OAAgB,MAAiC;AACxE,QAAM,OAAO,YAAY,OAAO,IAAI;AACpC,MACE,KAAK,YAAY,MAAM,KACvB,KAAK,cAAc,MAAM,KACzB,KAAK,cAAc,MAAM,KACzB,KAAK,mBAAmB,MAAM,GAC9B;AACA,SAAK,MAAM,8CAA8C;AAAA,EAC3D;AACA,SAAO,KAAK,YAAY,EAAE,MAAM,GAAG,EAAE;AACvC;AAEA,SAAS,kBACP,OACA,QACA,MACQ;AACR,QAAM,UACJ,WAAW,YACP,eAAe,OAAO,KAAK,CAAC,IAC5B,2HAA2H;AAAA,IACzH,OAAO,KAAK;AAAA,EACd,KACA,CAAC,OAAO,MAAM,KAAK,MAAM,OAAO,KAAK,CAAC,CAAC,KACvC,IAAI,KAAK,OAAO,KAAK,CAAC,EAAE,YAAY,MAAM;AAChD,MAAI,OAAO,UAAU,YAAY,CAAC,SAAS;AACzC,SAAK,MAAM,oBAAoB,MAAM,qBAAqB,SAAS,KAAK,CAAC,GAAG;AAAA,EAC9E;AACA,SAAO;AACT;AAEA,MAAM,eACJ;AAEF,SAAS,mBAAmB,OAAgB,MAAiC;AAC3E,MAAI,OAAO,UAAU,YAAY,CAAC,aAAa,KAAK,KAAK,GAAG;AAC1D,SAAK,MAAM,8CAA8C,SAAS,KAAK,CAAC,GAAG;AAAA,EAC7E;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAAgB,MAAiC;AACzE,MACE,OAAO,UAAU,YACjB,CAAC,sBAAsB,KAAK,KAAK,KACjC,OAAO,MAAM,KAAK,MAAM,GAAG,KAAK,gBAAgB,CAAC,MACjD,oBAAI,KAAK,GAAG,KAAK,gBAAgB,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE,MAAM,OAClE;AACA,SAAK,MAAM,mCAAmC,SAAS,KAAK,CAAC,GAAG;AAAA,EAClE;AACA,SAAO;AACT;AAEA,SAAS,eACP,OACA,QACA,MACQ;AACR,MACE,OAAO,UAAU,YACjB,CAAC,OAAO,cAAc,KAAK,KAC3B,CAAC,eAAe,OAAO,KAAK,GAAG,MAAM,GACrC;AACA,SAAK,MAAM,mBAAmB,MAAM,eAAe,SAAS,KAAK,CAAC,GAAG;AAAA,EACvE;AACA,SAAO;AACT;AAEA,MAAM,mBAAmB;AAEzB,SAAS,qBACP,OACA,UACA,MACQ;AACR,QAAM,UAAU,SAAS,WAAW,YAAY,uBAAuB;AACvE,MAAI,OAAO,UAAU,YAAY,CAAC,QAAQ,KAAK,KAAK,GAAG;AACrD,SAAK,MAAM,4CAA4C,SAAS,KAAK,CAAC,GAAG;AAAA,EAC3E;AACA,MACE,SAAS,WAAW,YAChB,CAAC,eAAe,OAAO,KAAK,GAAG,SAAS,YAAY,IACpD,CAAC,eAAe,OAAO,SAAS,YAAY,GAChD;AACA,SAAK,MAAM,8BAA8B,SAAS,YAAY,UAAU;AAAA,EAC1E;AACA,SAAO;AACT;AAEA,SAAS,eAAe,OAAe,QAAoC;AACzE,MAAI,WAAW,aAAa,WAAW,UAAW,QAAO;AACzD,MAAI,WAAW,cAAc;AAC3B,UAAM,QAAQ,6CAA6C,KAAK,KAAK;AACrE,QAAI,CAAC,MAAO,QAAO;AACnB,UAAM,UAAU,MAAM,CAAC;AACvB,UAAM,WAAW,MAAM,CAAC,KAAK;AAC7B,UAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,QAAQ,EAAE;AAC9D,QAAI,YAAY,WAAW,EAAG,QAAO;AACrC,QAAI,YAAY,SAAS,GAAI,QAAO;AACpC,UAAM,WAAW,OAAO,MAAM,CAAC,KAAK,CAAC;AACrC,UAAM,mBAAmB,WAAW,QAAQ,SAAS;AACrD,WAAO,oBAAoB,SAAS,oBAAoB;AAAA,EAC1D;AAEA,QAAM,SAAS,OAAO,KAAK;AAC3B,MAAI,CAAC,OAAO,SAAS,MAAM,EAAG,QAAO;AACrC,MAAI,WAAW,WAAW;AACxB,WAAO,KAAK,IAAI,MAAM,KAAK;AAAA,EAC7B;AACA,SAAO;AACT;AAEA,MAAM,iBAAgF;AAAA,EACpF,SAAS,CAAC,OAAO,OAAO,gBAAgB,GAAG,OAAO,OAAO,gBAAgB,CAAC;AAAA,EAC1E,MAAM,CAAC,CAAC,MAAM,IAAI;AAAA,EAClB,OAAO,CAAC,IAAI,IAAI;AAAA,EAChB,OAAO,CAAC,CAAC,QAAQ,MAAM;AAAA,EACvB,QAAQ,CAAC,IAAI,MAAM;AAAA,EACnB,OAAO,CAAC,CAAC,aAAa,WAAW;AAAA,EACjC,QAAQ,CAAC,IAAI,WAAW;AAAA,EACxB,OAAO,CAAC,CAAC,sBAAsB,oBAAoB;AAAA,EACnD,QAAQ,CAAC,IAAI,qBAAqB;AACpC;AAEA,SAAS,eAAe,OAAe,QAAoC;AACzE,QAAM,QAAQ,eAAe,MAAM;AACnC,SAAO,QAAQ,SAAS,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,IAAI;AAC1D;AAEA,SAAS,qBAAqB,OAAgB,MAAiC;AAC7E,MAAI,UAAU,UAAU,UAAU,SAAS;AACzC,SAAK,MAAM,mCAAmC,SAAS,KAAK,CAAC,GAAG;AAAA,EAClE;AACA,SAAO;AACT;AAEA,SAAS,eAAe,OAAwB;AAC9C,QAAM,QACJ,uFAAuF;AAAA,IACrF;AAAA,EACF;AACF,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,OAAO,OAAO,MAAM,CAAC,CAAC;AAC5B,QAAM,QAAQ,OAAO,MAAM,CAAC,CAAC;AAC7B,QAAM,MAAM,OAAO,MAAM,CAAC,CAAC;AAC3B,MACE,QAAQ,KACR,QAAQ,MACR,MAAM,KACN,MAAM,IAAI,KAAK,KAAK,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,WAAW,KACpD,OAAO,MAAM,CAAC,CAAC,IAAI,MACnB,OAAO,MAAM,CAAC,CAAC,IAAI,MACnB,OAAO,MAAM,CAAC,CAAC,IAAI,MACnB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,MACxB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,IACxB;AACA,WAAO;AAAA,EACT;AACA,SAAO,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,CAAC;AACxC;AAEA,SAAS,cACP,OACA,QACA,MACQ;AACR,MAAI,OAAO,UAAU,UAAU;AAC7B,SAAK,MAAM,cAAc,MAAM,gBAAgB,SAAS,KAAK,CAAC,GAAG;AAAA,EACnE;AACA,QAAM,UACJ,WAAW,WACP,qEACA;AACN,MAAI,CAAC,QAAQ,KAAK,KAAK,GAAG;AACxB,SAAK,MAAM,oBAAoB,MAAM,UAAU;AAAA,EACjD;AACA,MAAI,WAAW,eAAe,MAAM,SAAS,MAAM,GAAG;AACpD,SAAK,MAAM,2CAA2C;AAAA,EACxD;AACA,QAAM,SAAS,WAAW,cAAc,kBAAkB,KAAK,IAAI;AACnE,QAAM,YACJ,WAAW,cACP,kBAAkB,mBAAmB,mBAAmB,MAAM,CAAC,CAAC,IAChE,mBAAmB,mBAAmB,MAAM,CAAC;AACnD,MAAI,cAAc,OAAO;AACvB,SAAK,MAAM,wBAAwB,MAAM,UAAU;AAAA,EACrD;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,OAA2B;AACrD,QAAM,SAAmB,CAAC;AAC1B,QAAM,YAAY;AAClB,WAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU,WAAW;AAC/D,WAAO,KAAK,OAAO,aAAa,GAAG,MAAM,SAAS,QAAQ,SAAS,SAAS,CAAC,CAAC;AAAA,EAChF;AACA,SAAO,KAAK,OAAO,KAAK,EAAE,CAAC;AAC7B;AAEA,SAAS,mBAAmB,OAA2B;AACrD,QAAM,SAAS,KAAK,KAAK;AACzB,SAAO,WAAW,KAAK,QAAQ,CAAC,cAAc,UAAU,WAAW,CAAC,CAAC;AACvE;AAEA,SAAS,kBAAkB,QAAwB;AACjD,SAAO,OAAO,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AACzE;AAEA,SAAS,kBAAkB,WAA2B;AACpD,QAAM,SAAS,YAAY,IAAI,QAAQ,IAAK,UAAU,SAAS,KAAM,CAAC;AACtE,SAAO,OAAO,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AACpD;AAEA,SAAS,SAAS,OAAwB;AACxC,MAAI,iBAAiB,KAAM,QAAO;AAClC,MAAI,iBAAiB,WAAY,QAAO;AACxC,SAAO,UAAU,OAAO,SAAS,OAAO;AAC1C;AAEA,SAAS,KAAK,MAAyB,SAAwB;AAC7D,QAAM,WAAW,KAAK,SAAS,IAAI,KAAK,KAAK,GAAG,IAAI;AACpD,QAAM,IAAI,UAAU,6BAA6B,QAAQ,MAAM,OAAO,EAAE;AAC1E;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare function sanitizeIdentifier(value: string, fallback?: string): string;
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=identifiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../../src/serialization/identifiers.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,GAAG,MAAM,CAmB/E"}
|
|
@@ -15,11 +15,11 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var
|
|
19
|
-
__export(
|
|
18
|
+
var identifiers_exports = {};
|
|
19
|
+
__export(identifiers_exports, {
|
|
20
20
|
sanitizeIdentifier: () => sanitizeIdentifier
|
|
21
21
|
});
|
|
22
|
-
module.exports = __toCommonJS(
|
|
22
|
+
module.exports = __toCommonJS(identifiers_exports);
|
|
23
23
|
function sanitizeIdentifier(value, fallback = "resource") {
|
|
24
24
|
const words = value.replace(/[^A-Za-z0-9]+/g, " ").trim().split(/\s+/).filter((w) => w.length > 0);
|
|
25
25
|
if (words.length === 0) {
|
|
@@ -34,4 +34,4 @@ function sanitizeIdentifier(value, fallback = "resource") {
|
|
|
34
34
|
0 && (module.exports = {
|
|
35
35
|
sanitizeIdentifier
|
|
36
36
|
});
|
|
37
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=identifiers.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../src/serialization/identifiers.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function sanitizeIdentifier(value: string, fallback = \"resource\"): string {\n const words = value\n .replace(/[^A-Za-z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter((w) => w.length > 0);\n\n if (words.length === 0) {\n return fallback;\n }\n\n const identifier = words\n .map((word, index) =>\n index === 0\n ? word.charAt(0).toLowerCase() + word.slice(1)\n : word.charAt(0).toUpperCase() + word.slice(1),\n )\n .join(\"\");\n return /^[0-9]/.test(identifier) ? `_${identifier}` : identifier;\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,SAAS,mBAAmB,OAAe,WAAW,YAAoB;AAC/E,QAAM,QAAQ,MACX,QAAQ,kBAAkB,GAAG,EAC7B,KAAK,EACL,MAAM,KAAK,EACX,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AAE7B,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,MAChB;AAAA,IAAI,CAAC,MAAM,UACV,UAAU,IACN,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,IAC3C,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA,EACjD,EACC,KAAK,EAAE;AACV,SAAO,SAAS,KAAK,UAAU,IAAI,IAAI,UAAU,KAAK;AACxD;",
|
|
6
6
|
"names": []
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { deserialize, type DeserializeOptions } from "./json/deserialize.js";
|
|
2
2
|
export { serialize } from "./json/serialize.js";
|
|
3
|
-
export type { SerializationDocument } from "./
|
|
3
|
+
export type { SerializationDocument } from "./ast/index.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/serialization/index.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { deserialize, type DeserializeOptions } from \"./json/deserialize.js\";\nexport { serialize } from \"./json/serialize.js\";\nexport type { SerializationDocument } from \"./
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { deserialize, type DeserializeOptions } from \"./json/deserialize.js\";\nexport { serialize } from \"./json/serialize.js\";\nexport type { SerializationDocument } from \"./ast/index.js\";\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAqD;AACrD,uBAA0B;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/deserialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/deserialize.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAkClD;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,SAAS,KAAK,EAAE,CA6CvF"}
|
|
@@ -32,12 +32,28 @@ var import_naming_policy = require("../../naming/naming-policy.js");
|
|
|
32
32
|
var import_shape_registry = require("../../shape/shape-registry.js");
|
|
33
33
|
var import_ast_nodes = require("../../expression/ast-nodes.js");
|
|
34
34
|
var import_resource_registry = require("../../constructs/resource/resource-registry.js");
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var
|
|
35
|
+
var import_ast = require("../ast/index.js");
|
|
36
|
+
var import_expression_restorer = require("../ast/expression-restorer.js");
|
|
37
|
+
var import_arm_object_conversion = require("../arm-object-conversion.js");
|
|
38
|
+
var import_declaration_dependencies = require("../ast/declaration-dependencies.js");
|
|
39
|
+
var import_utils = require("../../expression/utils.js");
|
|
39
40
|
function deserialize(raw, options) {
|
|
40
|
-
const doc = JSON.parse(raw)
|
|
41
|
+
const doc = JSON.parse(raw, (_key, value) => {
|
|
42
|
+
if (typeof value !== "object" || value === null || !("kind" in value) || value.kind !== "contextual-variable" || "bicepIdentifier" in value || "fileName" in value || "infras" in value) {
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
if (!("context" in value) || typeof value.context !== "string" || !("property" in value) || typeof value.property !== "string") {
|
|
46
|
+
throw new Error(
|
|
47
|
+
"Invalid contextual-variable expression: context and property must be strings."
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
kind: "property-access",
|
|
52
|
+
base: { kind: "function-call", target: value.context, args: [] },
|
|
53
|
+
property: value.property,
|
|
54
|
+
nullish: false
|
|
55
|
+
};
|
|
56
|
+
});
|
|
41
57
|
if (doc.infras.length === 0) throw new Error("Empty SerializationDocument");
|
|
42
58
|
if (doc.infras.some((infra) => Object.keys(infra.modules ?? {}).length > 0)) {
|
|
43
59
|
throw new Error("Module deserialization is not supported.");
|
|
@@ -66,7 +82,7 @@ function assertSymbolAvailable(symbols, identifier) {
|
|
|
66
82
|
function processParams(file, stackHandle, symbols) {
|
|
67
83
|
for (const [, p] of Object.entries(file.parameters ?? {})) {
|
|
68
84
|
assertSymbolAvailable(symbols, p.bicepIdentifier);
|
|
69
|
-
if (p.valueType.kind !== "primitive-type" || !(0,
|
|
85
|
+
if (p.valueType.kind !== "primitive-type" || !(0, import_ast.isPrimitiveTypeName)(p.valueType.name)) {
|
|
70
86
|
throw new Error(`Parameter "${p.bicepIdentifier}" has an unsupported non-primitive type.`);
|
|
71
87
|
}
|
|
72
88
|
const type = p.valueType.name;
|
|
@@ -74,11 +90,11 @@ function processParams(file, stackHandle, symbols) {
|
|
|
74
90
|
...p.decorators?.description !== void 0 ? { description: p.decorators.description } : {},
|
|
75
91
|
...p.decorators?.secure ? { secure: true } : {},
|
|
76
92
|
...p.defaultValue !== void 0 ? {
|
|
77
|
-
defaultValue: (0,
|
|
93
|
+
defaultValue: (0, import_expression_restorer.restoreExpression)(p.defaultValue, /* @__PURE__ */ new Map())
|
|
78
94
|
} : {},
|
|
79
95
|
...p.decorators?.allowed?.length ? {
|
|
80
96
|
allowed: p.decorators.allowed.map(
|
|
81
|
-
(a) => (0,
|
|
97
|
+
(a) => (0, import_expression_restorer.restoreExpression)(a, /* @__PURE__ */ new Map())
|
|
82
98
|
)
|
|
83
99
|
} : {},
|
|
84
100
|
...p.decorators?.minValue !== void 0 ? { minValue: p.decorators.minValue } : {},
|
|
@@ -89,7 +105,7 @@ function processParams(file, stackHandle, symbols) {
|
|
|
89
105
|
metadata: Object.fromEntries(
|
|
90
106
|
Object.entries(p.decorators.metadata).map(([k, v]) => [
|
|
91
107
|
k,
|
|
92
|
-
(0,
|
|
108
|
+
(0, import_expression_restorer.restoreExpression)(v, /* @__PURE__ */ new Map())
|
|
93
109
|
])
|
|
94
110
|
)
|
|
95
111
|
} : {},
|
|
@@ -121,7 +137,7 @@ function processDeclarations(file, stackHandle, symbols, options) {
|
|
|
121
137
|
const active = /* @__PURE__ */ new Map();
|
|
122
138
|
function pushDeclaration(declaration) {
|
|
123
139
|
const { node } = declaration;
|
|
124
|
-
const identifiers = (0,
|
|
140
|
+
const identifiers = (0, import_declaration_dependencies.collectDependenciesForDeclaration)(node);
|
|
125
141
|
active.set(node.bicepIdentifier, pending.length);
|
|
126
142
|
pending.push({ declaration, dependencies: identifiers.values() });
|
|
127
143
|
}
|
|
@@ -162,7 +178,7 @@ function processDeclarations(file, stackHandle, symbols, options) {
|
|
|
162
178
|
const sym = (0, import_variable.createVariable)(
|
|
163
179
|
stackHandle,
|
|
164
180
|
node.bicepIdentifier,
|
|
165
|
-
(0,
|
|
181
|
+
(0, import_expression_restorer.restoreExpression)(node.value, symbols),
|
|
166
182
|
{
|
|
167
183
|
...node.decorators?.description !== void 0 ? { description: node.decorators.description } : {},
|
|
168
184
|
...node.decorators?.export ? { export: true } : {}
|
|
@@ -178,12 +194,12 @@ function processOutputs(file, stackHandle, symbols) {
|
|
|
178
194
|
`Cannot deserialize output "${o.bicepIdentifier}" with non-primitive type "${o.valueType.kind}".`
|
|
179
195
|
);
|
|
180
196
|
}
|
|
181
|
-
if (!(0,
|
|
197
|
+
if (!(0, import_ast.isPrimitiveTypeName)(o.valueType.name)) {
|
|
182
198
|
throw new Error(
|
|
183
199
|
`Cannot deserialize output "${o.bicepIdentifier}" with unknown primitive type "${o.valueType.name}".`
|
|
184
200
|
);
|
|
185
201
|
}
|
|
186
|
-
const val = (0,
|
|
202
|
+
const val = (0, import_expression_restorer.restoreExpression)(o.value, symbols);
|
|
187
203
|
(0, import_output.createOutput)(stackHandle, o.bicepIdentifier, o.valueType.name, val, {
|
|
188
204
|
...o.decorators?.description !== void 0 ? { description: o.decorators.description } : {},
|
|
189
205
|
...o.decorators?.secure ? { secure: true } : {},
|
|
@@ -195,7 +211,7 @@ function processOutputs(file, stackHandle, symbols) {
|
|
|
195
211
|
metadata: Object.fromEntries(
|
|
196
212
|
Object.entries(o.decorators.metadata).map(([k, v]) => [
|
|
197
213
|
k,
|
|
198
|
-
(0,
|
|
214
|
+
(0, import_expression_restorer.restoreExpression)(v, symbols)
|
|
199
215
|
])
|
|
200
216
|
)
|
|
201
217
|
} : {},
|
|
@@ -204,6 +220,35 @@ function processOutputs(file, stackHandle, symbols) {
|
|
|
204
220
|
});
|
|
205
221
|
}
|
|
206
222
|
}
|
|
223
|
+
function resolveResourceReference(targetIdentifier, symbols, resourceIdentifier, field) {
|
|
224
|
+
const handle = symbols.get(targetIdentifier);
|
|
225
|
+
if (handle === void 0) {
|
|
226
|
+
throw new Error(
|
|
227
|
+
`Resource "${resourceIdentifier}" references unknown resource "${targetIdentifier}" in "${field}".`
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
if (!(0, import_resource_utils.isResource)(handle) && !(0, import_resource_utils.isLoopedResource)(handle)) {
|
|
231
|
+
throw new Error(
|
|
232
|
+
`Resource "${resourceIdentifier}" references non-resource symbol "${targetIdentifier}" in "${field}".`
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
return handle;
|
|
236
|
+
}
|
|
237
|
+
function restoreResourceDependencies(node, symbols, resourceIdentifier) {
|
|
238
|
+
if (node.kind !== "array") {
|
|
239
|
+
throw new Error(
|
|
240
|
+
`Resource "${resourceIdentifier}" has an invalid "dependsOn" value; expected an array.`
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
return node.items.map((item) => {
|
|
244
|
+
if (item.kind !== "identifier") {
|
|
245
|
+
throw new Error(
|
|
246
|
+
`Resource "${resourceIdentifier}" has an invalid "dependsOn" reference; expected a resource identifier.`
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
return resolveResourceReference(item.id, symbols, resourceIdentifier, "dependsOn");
|
|
250
|
+
});
|
|
251
|
+
}
|
|
207
252
|
function createResource(res, defaultScope, symbols, options) {
|
|
208
253
|
let wireBody = res.value;
|
|
209
254
|
let loopWrapper;
|
|
@@ -227,7 +272,7 @@ function createResource(res, defaultScope, symbols, options) {
|
|
|
227
272
|
}
|
|
228
273
|
const scopedSymbols = loopWrapper === void 0 ? symbols : new Map(symbols);
|
|
229
274
|
const loopAuthoring = loopWrapper !== void 0 ? {
|
|
230
|
-
collection: (0,
|
|
275
|
+
collection: (0, import_expression_restorer.restoreExpression)(loopWrapper.collection, symbols),
|
|
231
276
|
itemVariable: loopWrapper.itemVariable,
|
|
232
277
|
...loopWrapper.indexVariable !== void 0 ? { indexVariable: loopWrapper.indexVariable } : {},
|
|
233
278
|
...res.decorators?.batchSize !== void 0 ? { batchSize: res.decorators.batchSize } : {}
|
|
@@ -246,7 +291,7 @@ function createResource(res, defaultScope, symbols, options) {
|
|
|
246
291
|
}
|
|
247
292
|
const authoring = {
|
|
248
293
|
...conditionNode !== void 0 ? {
|
|
249
|
-
condition: (0,
|
|
294
|
+
condition: (0, import_expression_restorer.restoreExpression)(conditionNode, scopedSymbols)
|
|
250
295
|
} : {},
|
|
251
296
|
...loopAuthoring !== void 0 ? { loop: loopAuthoring } : {}
|
|
252
297
|
};
|
|
@@ -266,16 +311,40 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
|
|
|
266
311
|
if (parentNode !== void 0 && parentNode.kind !== "identifier" && parentNode.kind !== "array-access") {
|
|
267
312
|
throw new Error(`Resource "${res.bicepIdentifier}" has an invalid "parent" reference.`);
|
|
268
313
|
}
|
|
269
|
-
|
|
270
|
-
|
|
314
|
+
let relationship = parentNode;
|
|
315
|
+
let relationshipKind = "parent";
|
|
316
|
+
let resolvedScope = false;
|
|
317
|
+
if (parentNode === void 0 && scopeNode !== void 0) {
|
|
318
|
+
const scopeTargetSymbolName = scopeNode.kind === "identifier" ? scopeNode.id : scopeNode.kind === "array-access" && scopeNode.base.kind === "identifier" && !scopeNode.nullish && !scopeNode.fromEnd ? scopeNode.base.id : void 0;
|
|
319
|
+
const scopeTarget = scopeTargetSymbolName === void 0 ? void 0 : symbols.get(scopeTargetSymbolName);
|
|
320
|
+
if (scopeNode.kind === "identifier" && (0, import_resource_utils.isLoopedResource)(scopeTarget)) {
|
|
321
|
+
throw new Error(
|
|
322
|
+
`Resource "${res.bicepIdentifier}" references resource collection "${scopeNode.id}" in "scope"; expected a single resource.`
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
if (scopeNode.kind === "identifier" && (0, import_resource_utils.isResource)(scopeTarget) || scopeNode.kind === "array-access" && (0, import_resource_utils.isLoopedResource)(scopeTarget) && !scopeNode.nullish && !scopeNode.fromEnd && scopeNode.base.kind === "identifier") {
|
|
326
|
+
relationship = scopeNode;
|
|
327
|
+
relationshipKind = "scope";
|
|
328
|
+
resolvedScope = true;
|
|
329
|
+
}
|
|
271
330
|
}
|
|
272
|
-
if (
|
|
273
|
-
context = (
|
|
274
|
-
|
|
275
|
-
|
|
331
|
+
if (relationship?.kind === "identifier") {
|
|
332
|
+
context = resolveResourceReference(
|
|
333
|
+
relationship.id,
|
|
334
|
+
symbols,
|
|
335
|
+
res.bicepIdentifier,
|
|
336
|
+
relationshipKind
|
|
337
|
+
);
|
|
338
|
+
} else if (relationship?.kind === "array-access") {
|
|
339
|
+
const baseNode = relationship.base;
|
|
276
340
|
if (baseNode.kind === "identifier") {
|
|
277
|
-
const rawParent = (
|
|
278
|
-
|
|
341
|
+
const rawParent = resolveResourceReference(
|
|
342
|
+
baseNode.id,
|
|
343
|
+
symbols,
|
|
344
|
+
res.bicepIdentifier,
|
|
345
|
+
relationshipKind
|
|
346
|
+
);
|
|
347
|
+
const indexValue = (0, import_expression_restorer.restoreExpression)(relationship.index, symbols);
|
|
279
348
|
context = (0, import_resource_proxy.createIndexedResourceProxy)(
|
|
280
349
|
rawParent,
|
|
281
350
|
indexValue
|
|
@@ -283,36 +352,30 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
|
|
|
283
352
|
} else {
|
|
284
353
|
throw new Error(`Resource "${res.bicepIdentifier}" has an invalid "parent" reference.`);
|
|
285
354
|
}
|
|
286
|
-
} else if (scopeNode?.kind === "identifier") {
|
|
287
|
-
const scopeResource = (0, import_expression.requireResourceHandle)(
|
|
288
|
-
scopeNode.id,
|
|
289
|
-
symbols,
|
|
290
|
-
res.bicepIdentifier,
|
|
291
|
-
"scope"
|
|
292
|
-
);
|
|
293
|
-
if ((0, import_resource_utils.isLoopedResource)(scopeResource)) {
|
|
294
|
-
throw new Error(
|
|
295
|
-
`Resource "${res.bicepIdentifier}" references resource collection "${scopeNode.id}" in "scope"; expected a single resource.`
|
|
296
|
-
);
|
|
297
|
-
}
|
|
298
|
-
context = scopeResource;
|
|
299
355
|
}
|
|
300
356
|
let existingScope;
|
|
301
|
-
|
|
302
|
-
|
|
357
|
+
let preservedScope;
|
|
358
|
+
if (scopeNode !== void 0 && !resolvedScope) {
|
|
359
|
+
const value = (0, import_expression_restorer.restoreExpression)(scopeNode, symbols);
|
|
360
|
+
const scope = (0, import_resource_utils.isResource)(value) ? (0, import_expressions.wrapExpression)((0, import_ast_nodes.identifierExpressionNode)(value)) : value;
|
|
303
361
|
if (!(0, import_expressions.isExpression)(scope)) {
|
|
304
362
|
throw new Error(
|
|
305
363
|
`Resource "${res.bicepIdentifier}" has an invalid "scope" value: expected an expression, received "${scopeNode.kind}".`
|
|
306
364
|
);
|
|
307
365
|
}
|
|
308
|
-
|
|
366
|
+
const currentStackScope = parentNode === void 0 && defaultScope instanceof import_stack.Stack && scopeNode.kind === "function-call" && scopeNode.args.length === 0 && (0, import_utils.getScopeFunctionTarget)(scopeNode) === defaultScope.targetScope;
|
|
367
|
+
if (res.existing && (0, import_utils.getScopeFunctionTarget)(scopeNode) !== void 0) {
|
|
368
|
+
existingScope = scope;
|
|
369
|
+
} else if (!currentStackScope) {
|
|
370
|
+
preservedScope = scope;
|
|
371
|
+
}
|
|
309
372
|
}
|
|
310
373
|
const RESERVED = /* @__PURE__ */ new Set(["name", "parent", "scope", "dependsOn"]);
|
|
311
374
|
const wireProps = /* @__PURE__ */ Object.create(null);
|
|
312
375
|
for (const [key, valNode] of Object.entries(body)) {
|
|
313
376
|
if (!RESERVED.has(key)) {
|
|
314
377
|
Object.defineProperty(wireProps, key, {
|
|
315
|
-
value: (0,
|
|
378
|
+
value: (0, import_expression_restorer.restoreExpression)(valNode, symbols),
|
|
316
379
|
enumerable: true,
|
|
317
380
|
configurable: true,
|
|
318
381
|
writable: true
|
|
@@ -320,13 +383,13 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
|
|
|
320
383
|
}
|
|
321
384
|
}
|
|
322
385
|
const nameNode = body["name"];
|
|
323
|
-
const resourceName = nameNode === void 0 ? "unknown" : (0,
|
|
386
|
+
const resourceName = nameNode === void 0 ? "unknown" : (0, import_expression_restorer.restoreExpression)(nameNode, symbols);
|
|
324
387
|
const wireState = { name: resourceName, ...wireProps };
|
|
325
388
|
const descriptor = (0, import_shape_registry.getShape)(res.type, res.apiVersion, wireState, {
|
|
326
389
|
strict: options?.strict ?? false,
|
|
327
390
|
valueKeyedBy: "arm"
|
|
328
391
|
});
|
|
329
|
-
const props = descriptor ? (0,
|
|
392
|
+
const props = descriptor ? (0, import_arm_object_conversion.convertFromArmObject)(wireProps, descriptor) : wireProps;
|
|
330
393
|
const baseProps = {
|
|
331
394
|
type: res.type,
|
|
332
395
|
apiVersion: res.apiVersion,
|
|
@@ -338,7 +401,7 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
|
|
|
338
401
|
const resourceOptions = {
|
|
339
402
|
...authoring?.condition !== void 0 ? { condition: authoring.condition } : {},
|
|
340
403
|
...body.dependsOn !== void 0 ? {
|
|
341
|
-
dependsOn: (
|
|
404
|
+
dependsOn: restoreResourceDependencies(body.dependsOn, symbols, res.bicepIdentifier)
|
|
342
405
|
} : {}
|
|
343
406
|
};
|
|
344
407
|
const Ctor = (0, import_resource_registry.resolveResource)(res.type, res.apiVersion, wireState, options);
|
|
@@ -367,6 +430,14 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
|
|
|
367
430
|
const state = (0, import_resource_proxy.unwrapResourceHandle)(handle);
|
|
368
431
|
state.condition = authoring.condition;
|
|
369
432
|
}
|
|
433
|
+
if (preservedScope !== void 0) {
|
|
434
|
+
Object.defineProperty((0, import_resource_proxy.unwrapResourceHandle)(handle), "scope", {
|
|
435
|
+
value: (0, import_expressions.unwrapExpression)(preservedScope),
|
|
436
|
+
enumerable: true,
|
|
437
|
+
configurable: true,
|
|
438
|
+
writable: true
|
|
439
|
+
});
|
|
440
|
+
}
|
|
370
441
|
return handle;
|
|
371
442
|
}
|
|
372
443
|
function objBody(node) {
|