@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,316 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var expression_builder_exports = {};
|
|
19
|
+
__export(expression_builder_exports, {
|
|
20
|
+
buildExpression: () => buildExpression,
|
|
21
|
+
buildExpressionProperties: () => buildExpressionProperties,
|
|
22
|
+
moduleOutputExpression: () => moduleOutputExpression
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(expression_builder_exports);
|
|
25
|
+
var import_ast_nodes = require("../../expression/ast-nodes.js");
|
|
26
|
+
var import_expressions = require("../../expression/expressions.js");
|
|
27
|
+
function expandArmPropertyPaths(node) {
|
|
28
|
+
if (node.kind !== "property-access") return node;
|
|
29
|
+
const expandedBase = expandArmPropertyPaths(node.base);
|
|
30
|
+
if (node.armPath !== void 0) {
|
|
31
|
+
const path = node.armPath.length > 0 ? node.armPath : [node.property];
|
|
32
|
+
let current = expandedBase;
|
|
33
|
+
for (const segment of path) {
|
|
34
|
+
current = (0, import_ast_nodes.accessExpressionNode)(current, segment, {
|
|
35
|
+
nullish: node.nullish
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return current;
|
|
39
|
+
}
|
|
40
|
+
if (expandedBase === node.base) return node;
|
|
41
|
+
return { ...node, base: expandedBase };
|
|
42
|
+
}
|
|
43
|
+
function splitSymbolicPath(path) {
|
|
44
|
+
const parts = [];
|
|
45
|
+
let current = "";
|
|
46
|
+
let depth = 0;
|
|
47
|
+
for (const character of path) {
|
|
48
|
+
if (character === "." && depth === 0) {
|
|
49
|
+
if (current.length > 0) {
|
|
50
|
+
parts.push(current);
|
|
51
|
+
current = "";
|
|
52
|
+
}
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (character === "(") {
|
|
56
|
+
depth += 1;
|
|
57
|
+
} else if (character === ")") {
|
|
58
|
+
depth -= 1;
|
|
59
|
+
}
|
|
60
|
+
current += character;
|
|
61
|
+
}
|
|
62
|
+
if (current.length > 0) {
|
|
63
|
+
parts.push(current);
|
|
64
|
+
}
|
|
65
|
+
return parts;
|
|
66
|
+
}
|
|
67
|
+
function buildSymbolicPath(path) {
|
|
68
|
+
const parts = splitSymbolicPath(path);
|
|
69
|
+
let current;
|
|
70
|
+
for (const part of parts) {
|
|
71
|
+
if (part.endsWith("()")) {
|
|
72
|
+
const target = part.slice(0, -2);
|
|
73
|
+
const callNode = {
|
|
74
|
+
kind: "function-call",
|
|
75
|
+
target,
|
|
76
|
+
args: []
|
|
77
|
+
};
|
|
78
|
+
current = current === void 0 ? callNode : {
|
|
79
|
+
kind: "instance-function-call",
|
|
80
|
+
base: current,
|
|
81
|
+
name: target,
|
|
82
|
+
args: []
|
|
83
|
+
};
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
current = current === void 0 ? {
|
|
87
|
+
kind: "identifier",
|
|
88
|
+
id: part
|
|
89
|
+
} : {
|
|
90
|
+
kind: "property-access",
|
|
91
|
+
base: current,
|
|
92
|
+
property: part,
|
|
93
|
+
nullish: false
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (current === void 0) {
|
|
97
|
+
throw new Error(`Cannot serialize empty symbolic path.`);
|
|
98
|
+
}
|
|
99
|
+
return current;
|
|
100
|
+
}
|
|
101
|
+
function buildPlainObject(value, symbolMap) {
|
|
102
|
+
return {
|
|
103
|
+
kind: "object",
|
|
104
|
+
value: buildExpressionProperties(value, symbolMap)
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function buildExpressionProperties(value, symbolMap) {
|
|
108
|
+
return Object.fromEntries(
|
|
109
|
+
Object.entries(value).flatMap(
|
|
110
|
+
([key, propertyValue]) => propertyValue === void 0 ? [] : [[key, buildExpression(propertyValue, symbolMap)]]
|
|
111
|
+
)
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
function buildArray(value, symbolMap) {
|
|
115
|
+
return {
|
|
116
|
+
kind: "array",
|
|
117
|
+
items: value.map((item) => buildExpression(item, symbolMap))
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function isSerializableObject(value) {
|
|
121
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
122
|
+
}
|
|
123
|
+
function buildIdentifierExpression(value, symbolMap) {
|
|
124
|
+
if (typeof value.id === "string") {
|
|
125
|
+
return {
|
|
126
|
+
kind: "identifier",
|
|
127
|
+
id: value.id
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const identifier = symbolMap.get(value.id);
|
|
131
|
+
if (identifier === void 0) {
|
|
132
|
+
throw new Error(`Missing synthesized symbol for referenced resource type ${value.id.type}.`);
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
kind: "identifier",
|
|
136
|
+
id: identifier
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function isBicepIdentifierSegment(segment) {
|
|
140
|
+
return /^[A-Za-z_][A-Za-z0-9_]*$/u.test(segment);
|
|
141
|
+
}
|
|
142
|
+
function buildMemberAccessExpression(value, symbolMap) {
|
|
143
|
+
const base = buildExpression(value.base, symbolMap);
|
|
144
|
+
if (value.kind === "property-access") {
|
|
145
|
+
return {
|
|
146
|
+
kind: "property-access",
|
|
147
|
+
base,
|
|
148
|
+
property: value.property,
|
|
149
|
+
nullish: value.nullish
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (typeof value.index === "number") {
|
|
153
|
+
return {
|
|
154
|
+
kind: "array-access",
|
|
155
|
+
base,
|
|
156
|
+
index: {
|
|
157
|
+
kind: "integer",
|
|
158
|
+
value: String(value.index)
|
|
159
|
+
},
|
|
160
|
+
nullish: value.nullish,
|
|
161
|
+
fromEnd: value.fromEnd
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
if (typeof value.index === "string") {
|
|
165
|
+
if (value.fromEnd) {
|
|
166
|
+
throw new Error("Reverse indexing requires an integer index, not a string.");
|
|
167
|
+
}
|
|
168
|
+
return isBicepIdentifierSegment(value.index) ? {
|
|
169
|
+
kind: "property-access",
|
|
170
|
+
base,
|
|
171
|
+
property: value.index,
|
|
172
|
+
nullish: value.nullish
|
|
173
|
+
} : {
|
|
174
|
+
kind: "array-access",
|
|
175
|
+
base,
|
|
176
|
+
index: {
|
|
177
|
+
kind: "string",
|
|
178
|
+
value: value.index
|
|
179
|
+
},
|
|
180
|
+
nullish: value.nullish,
|
|
181
|
+
fromEnd: value.fromEnd
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
kind: "array-access",
|
|
186
|
+
base,
|
|
187
|
+
index: buildExpression(value.index, symbolMap),
|
|
188
|
+
nullish: value.nullish,
|
|
189
|
+
fromEnd: value.fromEnd
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
function moduleOutputExpression(moduleName, outputName) {
|
|
193
|
+
return {
|
|
194
|
+
kind: "property-access",
|
|
195
|
+
base: {
|
|
196
|
+
kind: "property-access",
|
|
197
|
+
base: { kind: "identifier", id: moduleName },
|
|
198
|
+
property: "outputs",
|
|
199
|
+
nullish: false
|
|
200
|
+
},
|
|
201
|
+
property: outputName,
|
|
202
|
+
nullish: false
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function buildExpression(value, symbolMap = /* @__PURE__ */ new Map()) {
|
|
206
|
+
if ((0, import_expressions.isExpression)(value)) {
|
|
207
|
+
return buildExpression((0, import_expressions.unwrapExpression)(value), symbolMap);
|
|
208
|
+
}
|
|
209
|
+
if (value !== null && typeof value === "object" && (0, import_ast_nodes.isExpressionNode)(value)) {
|
|
210
|
+
const expanded = expandArmPropertyPaths(value);
|
|
211
|
+
if (expanded !== value) {
|
|
212
|
+
return buildExpression(expanded, symbolMap);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (typeof value === "string") {
|
|
216
|
+
return {
|
|
217
|
+
kind: "string",
|
|
218
|
+
value
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
if (typeof value === "number") {
|
|
222
|
+
if (!Number.isInteger(value)) {
|
|
223
|
+
throw new Error(`Bicep serialization currently only supports integer numbers.`);
|
|
224
|
+
}
|
|
225
|
+
if (!Number.isSafeInteger(value)) {
|
|
226
|
+
throw new Error(`Bicep serialization currently only supports safe integer numbers.`);
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
kind: "integer",
|
|
230
|
+
value: String(value)
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
if (typeof value === "boolean") {
|
|
234
|
+
return {
|
|
235
|
+
kind: "boolean",
|
|
236
|
+
value
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
if (value === null) {
|
|
240
|
+
return {
|
|
241
|
+
kind: "null",
|
|
242
|
+
value: null
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
if (Array.isArray(value)) {
|
|
246
|
+
return buildArray(value, symbolMap);
|
|
247
|
+
}
|
|
248
|
+
if ((0, import_ast_nodes.isExpressionNode)(value)) {
|
|
249
|
+
switch (value.kind) {
|
|
250
|
+
case "binary":
|
|
251
|
+
return {
|
|
252
|
+
kind: "binary-operation",
|
|
253
|
+
operator: value.operator,
|
|
254
|
+
left: buildExpression(value.left, symbolMap),
|
|
255
|
+
right: buildExpression(value.right, symbolMap)
|
|
256
|
+
};
|
|
257
|
+
case "unary":
|
|
258
|
+
return {
|
|
259
|
+
kind: "unary-operation",
|
|
260
|
+
operator: value.operator,
|
|
261
|
+
argument: buildExpression(value.argument, symbolMap)
|
|
262
|
+
};
|
|
263
|
+
case "ternary":
|
|
264
|
+
return {
|
|
265
|
+
kind: "ternary-operation",
|
|
266
|
+
condition: buildExpression(value.condition, symbolMap),
|
|
267
|
+
trueValue: buildExpression(value.trueValue, symbolMap),
|
|
268
|
+
falseValue: buildExpression(value.falseValue, symbolMap)
|
|
269
|
+
};
|
|
270
|
+
case "fn-call":
|
|
271
|
+
return {
|
|
272
|
+
kind: "function-call",
|
|
273
|
+
target: value.operator,
|
|
274
|
+
args: value.args.map(
|
|
275
|
+
(argument) => buildExpression(argument, symbolMap)
|
|
276
|
+
)
|
|
277
|
+
};
|
|
278
|
+
case "instance-function-call":
|
|
279
|
+
return {
|
|
280
|
+
kind: "instance-function-call",
|
|
281
|
+
base: buildExpression(value.base, symbolMap),
|
|
282
|
+
name: value.name,
|
|
283
|
+
args: value.args.map(
|
|
284
|
+
(argument) => buildExpression(argument, symbolMap)
|
|
285
|
+
)
|
|
286
|
+
};
|
|
287
|
+
case "interpolated-string":
|
|
288
|
+
return {
|
|
289
|
+
kind: "interpolated-string",
|
|
290
|
+
segments: value.segments.map(
|
|
291
|
+
(segment) => buildExpression(segment, symbolMap)
|
|
292
|
+
)
|
|
293
|
+
};
|
|
294
|
+
case "identifier":
|
|
295
|
+
return buildIdentifierExpression(value, symbolMap);
|
|
296
|
+
case "property-access":
|
|
297
|
+
case "array-access":
|
|
298
|
+
return buildMemberAccessExpression(value, symbolMap);
|
|
299
|
+
case "symbolic-value": {
|
|
300
|
+
const identifier = symbolMap.get(value);
|
|
301
|
+
return identifier === void 0 ? buildSymbolicPath(value.path) : { kind: "identifier", id: identifier };
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (isSerializableObject(value)) {
|
|
306
|
+
return buildPlainObject(value, symbolMap);
|
|
307
|
+
}
|
|
308
|
+
throw new Error(`Unsupported serialization input.`);
|
|
309
|
+
}
|
|
310
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
311
|
+
0 && (module.exports = {
|
|
312
|
+
buildExpression,
|
|
313
|
+
buildExpressionProperties,
|
|
314
|
+
moduleOutputExpression
|
|
315
|
+
});
|
|
316
|
+
//# sourceMappingURL=expression-builder.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/serialization/ast/expression-builder.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n accessExpressionNode,\n isExpressionNode,\n type ArrayAccessExpressionNode,\n type ExpressionNode as CoreExpressionNode,\n type IdentifierExpressionNode,\n type PropertyAccessExpressionNode,\n} from \"../../expression/ast-nodes.js\";\nimport { isExpression, unwrapExpression, type Expression } from \"../../expression/expressions.js\";\nimport type { DeclarationSymbolMap } from \"../symbol-map.js\";\nimport type { ArrayValue, ExpressionNode, FunctionCallExpression, ObjectValue } from \"./index.js\";\n\nexport type ExpressionNodeInput =\n | CoreExpressionNode\n | Expression<unknown>\n | string\n | number\n | boolean\n | null\n | readonly ExpressionNodeInput[]\n | {\n readonly [key: string]: ExpressionNodeInput | undefined;\n };\n\n// ---------------------------------------------------------------------------\n// ARM property path expansion\n// ---------------------------------------------------------------------------\n\n/**\n * Expands armPath stamps along a core property-access chain, replacing each\n * stamped property with its ARM path relative to the expanded base. Empty\n * paths fall back to the original property name. Generated accesses carry\n * no stamps; unchanged nodes retain their identity.\n *\n * Recursion stops at non-property-access nodes and leaves their children\n * untouched. buildExpression traverses those children and invokes this\n * helper as it reaches them.\n */\nfunction expandArmPropertyPaths(node: CoreExpressionNode): CoreExpressionNode {\n if (node.kind !== \"property-access\") return node;\n\n const expandedBase = expandArmPropertyPaths(node.base);\n if (node.armPath !== undefined) {\n const path = node.armPath.length > 0 ? node.armPath : [node.property];\n let current: CoreExpressionNode = expandedBase;\n for (const segment of path) {\n // A flattened optional property may be absent at any wire-path segment.\n current = accessExpressionNode(current, segment, {\n nullish: node.nullish,\n });\n }\n return current;\n }\n if (expandedBase === node.base) return node;\n return { ...node, base: expandedBase };\n}\n\n// ---------------------------------------------------------------------------\n// Expression building: CDK value -> AST\n// ---------------------------------------------------------------------------\n\nfunction splitSymbolicPath(path: string): string[] {\n const parts: string[] = [];\n let current = \"\";\n let depth = 0;\n\n for (const character of path) {\n if (character === \".\" && depth === 0) {\n if (current.length > 0) {\n parts.push(current);\n current = \"\";\n }\n continue;\n }\n\n if (character === \"(\") {\n depth += 1;\n } else if (character === \")\") {\n depth -= 1;\n }\n\n current += character;\n }\n\n if (current.length > 0) {\n parts.push(current);\n }\n\n return parts;\n}\n\nfunction buildSymbolicPath(path: string): ExpressionNode {\n const parts = splitSymbolicPath(path);\n let current: ExpressionNode | undefined;\n\n for (const part of parts) {\n if (part.endsWith(\"()\")) {\n const target = part.slice(0, -2);\n const callNode: FunctionCallExpression = {\n kind: \"function-call\",\n target,\n args: [],\n };\n\n current =\n current === undefined\n ? callNode\n : {\n kind: \"instance-function-call\",\n base: current,\n name: target,\n args: [],\n };\n continue;\n }\n\n current =\n current === undefined\n ? {\n kind: \"identifier\",\n id: part,\n }\n : {\n kind: \"property-access\",\n base: current,\n property: part,\n nullish: false,\n };\n }\n\n if (current === undefined) {\n throw new Error(`Cannot serialize empty symbolic path.`);\n }\n\n return current;\n}\n\nfunction buildPlainObject(\n value: { readonly [key: string]: ExpressionNodeInput | undefined },\n symbolMap: DeclarationSymbolMap,\n): ObjectValue {\n return {\n kind: \"object\",\n value: buildExpressionProperties(value, symbolMap),\n };\n}\n\n/** Builds a property map of expression nodes, omitting undefined values. */\nexport function buildExpressionProperties(\n value: { readonly [key: string]: ExpressionNodeInput | undefined },\n symbolMap: DeclarationSymbolMap,\n): Record<string, ExpressionNode> {\n return Object.fromEntries(\n Object.entries(value).flatMap(([key, propertyValue]) =>\n propertyValue === undefined ? [] : [[key, buildExpression(propertyValue, symbolMap)]],\n ),\n );\n}\n\nfunction buildArray(\n value: readonly ExpressionNodeInput[],\n symbolMap: DeclarationSymbolMap,\n): ArrayValue {\n return {\n kind: \"array\",\n items: value.map((item) => buildExpression(item, symbolMap)),\n };\n}\n\nfunction isSerializableObject(\n value: ExpressionNodeInput,\n): value is { readonly [key: string]: ExpressionNodeInput | undefined } {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction buildIdentifierExpression(\n value: IdentifierExpressionNode,\n symbolMap: DeclarationSymbolMap,\n): ExpressionNode {\n if (typeof value.id === \"string\") {\n return {\n kind: \"identifier\",\n id: value.id,\n };\n }\n\n const identifier = symbolMap.get(value.id);\n\n if (identifier === undefined) {\n throw new Error(`Missing synthesized symbol for referenced resource type ${value.id.type}.`);\n }\n\n return {\n kind: \"identifier\",\n id: identifier,\n };\n}\n\nfunction isBicepIdentifierSegment(segment: string): boolean {\n return /^[A-Za-z_][A-Za-z0-9_]*$/u.test(segment);\n}\n\nfunction buildMemberAccessExpression(\n value: PropertyAccessExpressionNode | ArrayAccessExpressionNode,\n symbolMap: DeclarationSymbolMap,\n): ExpressionNode {\n const base = buildExpression(value.base, symbolMap);\n\n if (value.kind === \"property-access\") {\n return {\n kind: \"property-access\",\n base,\n property: value.property,\n nullish: value.nullish,\n };\n }\n\n if (typeof value.index === \"number\") {\n return {\n kind: \"array-access\",\n base,\n index: {\n kind: \"integer\",\n value: String(value.index),\n },\n nullish: value.nullish,\n fromEnd: value.fromEnd,\n };\n }\n\n if (typeof value.index === \"string\") {\n if (value.fromEnd) {\n throw new Error(\"Reverse indexing requires an integer index, not a string.\");\n }\n return isBicepIdentifierSegment(value.index)\n ? {\n kind: \"property-access\",\n base,\n property: value.index,\n nullish: value.nullish,\n }\n : {\n kind: \"array-access\",\n base,\n index: {\n kind: \"string\",\n value: value.index,\n },\n nullish: value.nullish,\n fromEnd: value.fromEnd,\n };\n }\n\n // Expression-shaped index (e.g. a loop's `.index` symbolic value or any\n // `Expression<number>` proxy). Recursively serialize into the wire\n // array-access's `index` slot.\n return {\n kind: \"array-access\",\n base,\n index: buildExpression(value.index as ExpressionNodeInput, symbolMap),\n nullish: value.nullish,\n fromEnd: value.fromEnd,\n };\n}\n\nexport function moduleOutputExpression(moduleName: string, outputName: string): ExpressionNode {\n return {\n kind: \"property-access\",\n base: {\n kind: \"property-access\",\n base: { kind: \"identifier\", id: moduleName },\n property: \"outputs\",\n nullish: false,\n },\n property: outputName,\n nullish: false,\n };\n}\n\nexport function buildExpression(\n value: ExpressionNodeInput,\n symbolMap: DeclarationSymbolMap = new Map(),\n): ExpressionNode {\n if (isExpression(value)) {\n return buildExpression(unwrapExpression(value) as ExpressionNodeInput, symbolMap);\n }\n\n // Expand the current property paths; recursion below visits other expressions.\n if (value !== null && typeof value === \"object\" && isExpressionNode(value)) {\n const expanded = expandArmPropertyPaths(value as CoreExpressionNode);\n if (expanded !== value) {\n return buildExpression(expanded as ExpressionNodeInput, symbolMap);\n }\n }\n\n if (typeof value === \"string\") {\n return {\n kind: \"string\",\n value,\n };\n }\n\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw new Error(`Bicep serialization currently only supports integer numbers.`);\n }\n if (!Number.isSafeInteger(value)) {\n throw new Error(`Bicep serialization currently only supports safe integer numbers.`);\n }\n\n return {\n kind: \"integer\",\n value: String(value),\n };\n }\n\n if (typeof value === \"boolean\") {\n return {\n kind: \"boolean\",\n value,\n };\n }\n\n if (value === null) {\n return {\n kind: \"null\",\n value: null,\n };\n }\n\n if (Array.isArray(value)) {\n return buildArray(value, symbolMap);\n }\n\n if (isExpressionNode(value)) {\n switch (value.kind) {\n case \"binary\":\n return {\n kind: \"binary-operation\",\n operator: value.operator,\n left: buildExpression(value.left as ExpressionNodeInput, symbolMap),\n right: buildExpression(value.right as ExpressionNodeInput, symbolMap),\n };\n\n case \"unary\":\n return {\n kind: \"unary-operation\",\n operator: value.operator,\n argument: buildExpression(value.argument as ExpressionNodeInput, symbolMap),\n };\n\n case \"ternary\":\n return {\n kind: \"ternary-operation\",\n condition: buildExpression(value.condition as ExpressionNodeInput, symbolMap),\n trueValue: buildExpression(value.trueValue as ExpressionNodeInput, symbolMap),\n falseValue: buildExpression(value.falseValue as ExpressionNodeInput, symbolMap),\n };\n\n case \"fn-call\":\n return {\n kind: \"function-call\",\n target: value.operator,\n args: value.args.map((argument) =>\n buildExpression(argument as ExpressionNodeInput, symbolMap),\n ),\n };\n\n case \"instance-function-call\":\n return {\n kind: \"instance-function-call\",\n base: buildExpression(value.base as ExpressionNodeInput, symbolMap),\n name: value.name,\n args: value.args.map((argument) =>\n buildExpression(argument as ExpressionNodeInput, symbolMap),\n ),\n };\n\n case \"interpolated-string\":\n return {\n kind: \"interpolated-string\",\n segments: value.segments.map((segment) =>\n buildExpression(segment as ExpressionNodeInput, symbolMap),\n ),\n };\n\n case \"identifier\":\n return buildIdentifierExpression(value, symbolMap);\n\n case \"property-access\":\n case \"array-access\":\n return buildMemberAccessExpression(value, symbolMap);\n\n case \"symbolic-value\": {\n const identifier = symbolMap.get(value);\n return identifier === undefined\n ? buildSymbolicPath(value.path)\n : { kind: \"identifier\", id: identifier };\n }\n }\n }\n\n if (isSerializableObject(value)) {\n return buildPlainObject(value, symbolMap);\n }\n\n throw new Error(`Unsupported serialization input.`);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Expression } from "../../expression/expressions.js";
|
|
2
|
+
import type { LoopedResource, Resource } from "../../constructs/resource/resource.js";
|
|
3
|
+
import type { ExpressionNode } from "./index.js";
|
|
4
|
+
type SymbolValue = Expression<unknown> | Resource | LoopedResource<Resource>;
|
|
5
|
+
export type DeclarationReferenceMap = Map<string, SymbolValue>;
|
|
6
|
+
export declare function restoreExpression(node: ExpressionNode, symbols: DeclarationReferenceMap): unknown;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=expression-restorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-restorer.d.ts","sourceRoot":"","sources":["../../../../src/serialization/ast/expression-restorer.ts"],"names":[],"mappings":"AAeA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAEV,cAAc,EAGf,MAAM,YAAY,CAAC;AAEpB,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC7E,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAM/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CA0LjG"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var expression_restorer_exports = {};
|
|
19
|
+
__export(expression_restorer_exports, {
|
|
20
|
+
restoreExpression: () => restoreExpression
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(expression_restorer_exports);
|
|
23
|
+
var import_ast_nodes = require("../../expression/ast-nodes.js");
|
|
24
|
+
var import_expressions = require("../../expression/expressions.js");
|
|
25
|
+
var import_resource_utils = require("../../constructs/resource/resource-utils.js");
|
|
26
|
+
function restoreExpression(node, symbols) {
|
|
27
|
+
switch (node.kind) {
|
|
28
|
+
case "string":
|
|
29
|
+
return node.value;
|
|
30
|
+
case "integer": {
|
|
31
|
+
const value = parseInt(node.value, 10);
|
|
32
|
+
if (!Number.isSafeInteger(value)) {
|
|
33
|
+
throw new Error(`Cannot deserialize unsafe integer literal "${node.value}".`);
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
case "boolean":
|
|
38
|
+
return node.value;
|
|
39
|
+
case "null":
|
|
40
|
+
return null;
|
|
41
|
+
case "identifier": {
|
|
42
|
+
const sym = symbols.get(node.id);
|
|
43
|
+
if (sym !== void 0) return sym;
|
|
44
|
+
return (0, import_expressions.wrapExpression)((0, import_ast_nodes.identifierExpressionNode)(node.id));
|
|
45
|
+
}
|
|
46
|
+
case "function-call":
|
|
47
|
+
if (typeof node.target !== "string") {
|
|
48
|
+
throw new Error("Cannot deserialize function call with an expression target.");
|
|
49
|
+
}
|
|
50
|
+
return (0, import_expressions.wrapExpression)(
|
|
51
|
+
(0, import_ast_nodes.functionCallExpressionNode)(
|
|
52
|
+
node.target,
|
|
53
|
+
node.args.map((a) => restoreExpression(a, symbols))
|
|
54
|
+
)
|
|
55
|
+
);
|
|
56
|
+
case "instance-function-call": {
|
|
57
|
+
const base = restoreExpression(node.base, symbols);
|
|
58
|
+
const baseNode = (0, import_expressions.isExpression)(base) ? (0, import_expressions.unwrapExpression)(base) : (0, import_ast_nodes.identifierExpressionNode)((0, import_resource_utils.isResource)(base) ? base : String(base));
|
|
59
|
+
return (0, import_expressions.wrapExpression)(
|
|
60
|
+
(0, import_ast_nodes.instanceFunctionCallExpressionNode)(
|
|
61
|
+
baseNode,
|
|
62
|
+
node.name,
|
|
63
|
+
node.args.map((a) => restoreExpression(a, symbols))
|
|
64
|
+
)
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
case "property-access": {
|
|
68
|
+
const base = restoreExpression(node.base, symbols);
|
|
69
|
+
if ((0, import_resource_utils.isResource)(base)) {
|
|
70
|
+
if (node.nullish) {
|
|
71
|
+
return (0, import_expressions.wrapExpression)(
|
|
72
|
+
(0, import_ast_nodes.propertyAccessExpressionNode)((0, import_ast_nodes.identifierExpressionNode)(base), node.property, {
|
|
73
|
+
nullish: node.nullish
|
|
74
|
+
})
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
return base[node.property];
|
|
78
|
+
}
|
|
79
|
+
if ((0, import_expressions.isExpression)(base)) {
|
|
80
|
+
const inner = (0, import_expressions.unwrapExpression)(base);
|
|
81
|
+
return (0, import_expressions.wrapExpression)(
|
|
82
|
+
(0, import_ast_nodes.propertyAccessExpressionNode)(inner, node.property, {
|
|
83
|
+
nullish: node.nullish
|
|
84
|
+
})
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
return (0, import_expressions.wrapExpression)(
|
|
88
|
+
(0, import_ast_nodes.propertyAccessExpressionNode)((0, import_ast_nodes.identifierExpressionNode)(String(base)), node.property, {
|
|
89
|
+
nullish: node.nullish
|
|
90
|
+
})
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
case "array-access": {
|
|
94
|
+
const base = restoreExpression(node.base, symbols);
|
|
95
|
+
let idx;
|
|
96
|
+
if (node.index.kind === "integer") {
|
|
97
|
+
idx = parseInt(node.index.value, 10);
|
|
98
|
+
} else if (node.index.kind === "string") {
|
|
99
|
+
idx = node.index.value;
|
|
100
|
+
} else {
|
|
101
|
+
const deserializedIndex = restoreExpression(node.index, symbols);
|
|
102
|
+
idx = (0, import_expressions.isExpression)(deserializedIndex) ? (0, import_expressions.unwrapExpression)(deserializedIndex) : deserializedIndex;
|
|
103
|
+
}
|
|
104
|
+
if ((0, import_resource_utils.isResource)(base)) {
|
|
105
|
+
if (node.nullish || node.fromEnd) {
|
|
106
|
+
return (0, import_expressions.wrapExpression)(
|
|
107
|
+
(0, import_ast_nodes.arrayAccessExpressionNode)((0, import_ast_nodes.identifierExpressionNode)(base), idx, {
|
|
108
|
+
nullish: node.nullish,
|
|
109
|
+
fromEnd: node.fromEnd
|
|
110
|
+
})
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
return base[String(idx)];
|
|
114
|
+
}
|
|
115
|
+
if ((0, import_resource_utils.isLoopedResource)(base)) {
|
|
116
|
+
return (0, import_expressions.wrapExpression)(
|
|
117
|
+
(0, import_ast_nodes.arrayAccessExpressionNode)((0, import_ast_nodes.identifierExpressionNode)(base), idx, {
|
|
118
|
+
nullish: node.nullish,
|
|
119
|
+
fromEnd: node.fromEnd
|
|
120
|
+
})
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
if ((0, import_expressions.isExpression)(base)) {
|
|
124
|
+
const inner = (0, import_expressions.unwrapExpression)(base);
|
|
125
|
+
return (0, import_expressions.wrapExpression)(
|
|
126
|
+
(0, import_ast_nodes.arrayAccessExpressionNode)(inner, idx, {
|
|
127
|
+
nullish: node.nullish,
|
|
128
|
+
fromEnd: node.fromEnd
|
|
129
|
+
})
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
return (0, import_expressions.wrapExpression)(
|
|
133
|
+
(0, import_ast_nodes.arrayAccessExpressionNode)((0, import_ast_nodes.identifierExpressionNode)(String(base)), idx, {
|
|
134
|
+
nullish: node.nullish,
|
|
135
|
+
fromEnd: node.fromEnd
|
|
136
|
+
})
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
case "object": {
|
|
140
|
+
const obj = /* @__PURE__ */ Object.create(null);
|
|
141
|
+
for (const [key, value] of Object.entries(node.value)) {
|
|
142
|
+
Object.defineProperty(obj, key, {
|
|
143
|
+
value: restoreExpression(value, symbols),
|
|
144
|
+
enumerable: true,
|
|
145
|
+
configurable: true,
|
|
146
|
+
writable: true
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return obj;
|
|
150
|
+
}
|
|
151
|
+
case "array":
|
|
152
|
+
return node.items.map((item) => restoreExpression(item, symbols));
|
|
153
|
+
case "binary-operation": {
|
|
154
|
+
const operation = node;
|
|
155
|
+
return (0, import_expressions.wrapExpression)({
|
|
156
|
+
kind: "binary",
|
|
157
|
+
operator: operation.operator,
|
|
158
|
+
left: restoreExpression(operation.left, symbols),
|
|
159
|
+
right: restoreExpression(operation.right, symbols)
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
case "unary-operation": {
|
|
163
|
+
const operation = node;
|
|
164
|
+
return (0, import_expressions.wrapExpression)({
|
|
165
|
+
kind: "unary",
|
|
166
|
+
operator: operation.operator,
|
|
167
|
+
argument: restoreExpression(operation.argument, symbols)
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
case "ternary-operation": {
|
|
171
|
+
const operation = node;
|
|
172
|
+
return (0, import_expressions.wrapExpression)({
|
|
173
|
+
kind: "ternary",
|
|
174
|
+
condition: restoreExpression(operation.condition, symbols),
|
|
175
|
+
trueValue: restoreExpression(operation.trueValue, symbols),
|
|
176
|
+
falseValue: restoreExpression(operation.falseValue, symbols)
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
case "interpolated-string": {
|
|
180
|
+
return (0, import_expressions.wrapExpression)({
|
|
181
|
+
kind: "interpolated-string",
|
|
182
|
+
segments: node.segments.map((segment) => restoreExpression(segment, symbols))
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
default:
|
|
186
|
+
throw new Error(`Unsupported expression node kind: ${node.kind}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
190
|
+
0 && (module.exports = {
|
|
191
|
+
restoreExpression
|
|
192
|
+
});
|
|
193
|
+
//# sourceMappingURL=expression-restorer.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/serialization/ast/expression-restorer.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n arrayAccessExpressionNode,\n functionCallExpressionNode,\n identifierExpressionNode,\n instanceFunctionCallExpressionNode,\n propertyAccessExpressionNode,\n type ArrayAccessIndex,\n type BinaryExpressionNode,\n type ExpressionNode as CoreExpressionNode,\n type TernaryExpressionNode,\n type UnaryExpressionNode,\n} from \"../../expression/ast-nodes.js\";\nimport {\n isExpression,\n unwrapExpression,\n wrapExpression,\n type Expression,\n} from \"../../expression/expressions.js\";\nimport { isResource, isLoopedResource } from \"../../constructs/resource/resource-utils.js\";\nimport type { LoopedResource, Resource } from \"../../constructs/resource/resource.js\";\nimport type {\n BinaryOperationExpression,\n ExpressionNode,\n TernaryOperationExpression,\n UnaryOperationExpression,\n} from \"./index.js\";\n\ntype SymbolValue = Expression<unknown> | Resource | LoopedResource<Resource>;\nexport type DeclarationReferenceMap = Map<string, SymbolValue>;\n\n// ---------------------------------------------------------------------------\n// Expression restoration: AST -> CDK value\n// ---------------------------------------------------------------------------\n\nexport function restoreExpression(node: ExpressionNode, symbols: DeclarationReferenceMap): unknown {\n switch (node.kind) {\n case \"string\":\n return node.value;\n case \"integer\": {\n const value = parseInt(node.value, 10);\n if (!Number.isSafeInteger(value)) {\n throw new Error(`Cannot deserialize unsafe integer literal \"${node.value}\".`);\n }\n return value;\n }\n case \"boolean\":\n return node.value;\n case \"null\":\n return null;\n\n case \"identifier\": {\n const sym = symbols.get(node.id);\n if (sym !== undefined) return sym;\n return wrapExpression(identifierExpressionNode(node.id));\n }\n\n case \"function-call\":\n if (typeof node.target !== \"string\") {\n throw new Error(\"Cannot deserialize function call with an expression target.\");\n }\n return wrapExpression(\n functionCallExpressionNode(\n node.target,\n node.args.map((a) => restoreExpression(a, symbols)),\n ),\n );\n\n case \"instance-function-call\": {\n const base = restoreExpression(node.base, symbols);\n const baseNode = isExpression(base)\n ? unwrapExpression(base as Expression<unknown>)\n : identifierExpressionNode(isResource(base) ? base : String(base));\n return wrapExpression(\n instanceFunctionCallExpressionNode(\n baseNode,\n node.name,\n node.args.map((a) => restoreExpression(a, symbols)),\n ),\n );\n }\n\n case \"property-access\": {\n const base = restoreExpression(node.base, symbols);\n if (isResource(base)) {\n if (node.nullish) {\n return wrapExpression(\n propertyAccessExpressionNode(identifierExpressionNode(base), node.property, {\n nullish: node.nullish,\n }),\n );\n }\n return (base as unknown as Record<string, unknown>)[node.property];\n }\n if (isExpression(base)) {\n const inner = unwrapExpression(base as Expression<unknown>);\n return wrapExpression(\n propertyAccessExpressionNode(inner, node.property, {\n nullish: node.nullish,\n }),\n );\n }\n return wrapExpression(\n propertyAccessExpressionNode(identifierExpressionNode(String(base)), node.property, {\n nullish: node.nullish,\n }),\n );\n }\n\n case \"array-access\": {\n const base = restoreExpression(node.base, symbols);\n // Preserve non-literal indexes as expressions so `sym[<expr>]` round-\n // trips faithfully. Literal integer/string indexes lower to native\n // JS number/string values as before.\n let idx: ArrayAccessIndex;\n if (node.index.kind === \"integer\") {\n idx = parseInt(node.index.value, 10);\n } else if (node.index.kind === \"string\") {\n idx = node.index.value;\n } else {\n const deserializedIndex = restoreExpression(node.index, symbols);\n idx = isExpression(deserializedIndex)\n ? unwrapExpression(deserializedIndex as Expression<unknown>)\n : (deserializedIndex as ArrayAccessIndex);\n }\n if (isResource(base)) {\n if (node.nullish || node.fromEnd) {\n return wrapExpression(\n arrayAccessExpressionNode(identifierExpressionNode(base), idx, {\n nullish: node.nullish,\n fromEnd: node.fromEnd,\n }),\n );\n }\n return (base as unknown as Record<string, unknown>)[String(idx)];\n }\n if (isLoopedResource(base)) {\n // `sym[idx]` on a looped declaration. Carry the handle itself as the\n // identifier id (not `String(base)`, which would stringify to\n // \"[object Object]\") so re-serialize maps it back to the resource's\n // symbol. The resulting expression proxy lets an outer `.prop` chain\n // (e.g. `looped.at(0).id`) render as `sym[idx].prop`.\n return wrapExpression(\n arrayAccessExpressionNode(identifierExpressionNode(base as unknown as Resource), idx, {\n nullish: node.nullish,\n fromEnd: node.fromEnd,\n }),\n );\n }\n if (isExpression(base)) {\n const inner = unwrapExpression(base as Expression<unknown>);\n return wrapExpression(\n arrayAccessExpressionNode(inner, idx, {\n nullish: node.nullish,\n fromEnd: node.fromEnd,\n }),\n );\n }\n return wrapExpression(\n arrayAccessExpressionNode(identifierExpressionNode(String(base)), idx, {\n nullish: node.nullish,\n fromEnd: node.fromEnd,\n }),\n );\n }\n\n case \"object\": {\n const obj: Record<string, unknown> = Object.create(null);\n for (const [key, value] of Object.entries(node.value)) {\n Object.defineProperty(obj, key, {\n value: restoreExpression(value, symbols),\n enumerable: true,\n configurable: true,\n writable: true,\n });\n }\n return obj;\n }\n\n case \"array\":\n return node.items.map((item) => restoreExpression(item, symbols));\n\n case \"binary-operation\": {\n const operation = node as BinaryOperationExpression;\n return wrapExpression({\n kind: \"binary\",\n operator: operation.operator,\n left: restoreExpression(operation.left, symbols),\n right: restoreExpression(operation.right, symbols),\n } as BinaryExpressionNode as CoreExpressionNode);\n }\n\n case \"unary-operation\": {\n const operation = node as UnaryOperationExpression;\n return wrapExpression({\n kind: \"unary\",\n operator: operation.operator,\n argument: restoreExpression(operation.argument, symbols),\n } as UnaryExpressionNode as CoreExpressionNode);\n }\n\n case \"ternary-operation\": {\n const operation = node as TernaryOperationExpression;\n return wrapExpression({\n kind: \"ternary\",\n condition: restoreExpression(operation.condition, symbols),\n trueValue: restoreExpression(operation.trueValue, symbols),\n falseValue: restoreExpression(operation.falseValue, symbols),\n } as TernaryExpressionNode as CoreExpressionNode);\n }\n\n case \"interpolated-string\": {\n return wrapExpression({\n kind: \"interpolated-string\",\n segments: node.segments.map((segment) => restoreExpression(segment, symbols)),\n } as CoreExpressionNode);\n }\n\n default:\n throw new Error(`Unsupported expression node kind: ${node.kind}`);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAWO;AACP,yBAKO;AACP,4BAA6C;AAgBtC,SAAS,kBAAkB,MAAsB,SAA2C;AACjG,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO,KAAK;AAAA,IACd,KAAK,WAAW;AACd,YAAM,QAAQ,SAAS,KAAK,OAAO,EAAE;AACrC,UAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAChC,cAAM,IAAI,MAAM,8CAA8C,KAAK,KAAK,IAAI;AAAA,MAC9E;AACA,aAAO;AAAA,IACT;AAAA,IACA,KAAK;AACH,aAAO,KAAK;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IAET,KAAK,cAAc;AACjB,YAAM,MAAM,QAAQ,IAAI,KAAK,EAAE;AAC/B,UAAI,QAAQ,OAAW,QAAO;AAC9B,iBAAO,uCAAe,2CAAyB,KAAK,EAAE,CAAC;AAAA,IACzD;AAAA,IAEA,KAAK;AACH,UAAI,OAAO,KAAK,WAAW,UAAU;AACnC,cAAM,IAAI,MAAM,6DAA6D;AAAA,MAC/E;AACA,iBAAO;AAAA,YACL;AAAA,UACE,KAAK;AAAA,UACL,KAAK,KAAK,IAAI,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAAA,QACpD;AAAA,MACF;AAAA,IAEF,KAAK,0BAA0B;AAC7B,YAAM,OAAO,kBAAkB,KAAK,MAAM,OAAO;AACjD,YAAM,eAAW,iCAAa,IAAI,QAC9B,qCAAiB,IAA2B,QAC5C,+CAAyB,kCAAW,IAAI,IAAI,OAAO,OAAO,IAAI,CAAC;AACnE,iBAAO;AAAA,YACL;AAAA,UACE;AAAA,UACA,KAAK;AAAA,UACL,KAAK,KAAK,IAAI,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAAA,QACpD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,KAAK,mBAAmB;AACtB,YAAM,OAAO,kBAAkB,KAAK,MAAM,OAAO;AACjD,cAAI,kCAAW,IAAI,GAAG;AACpB,YAAI,KAAK,SAAS;AAChB,qBAAO;AAAA,gBACL,mDAA6B,2CAAyB,IAAI,GAAG,KAAK,UAAU;AAAA,cAC1E,SAAS,KAAK;AAAA,YAChB,CAAC;AAAA,UACH;AAAA,QACF;AACA,eAAQ,KAA4C,KAAK,QAAQ;AAAA,MACnE;AACA,cAAI,iCAAa,IAAI,GAAG;AACtB,cAAM,YAAQ,qCAAiB,IAA2B;AAC1D,mBAAO;AAAA,cACL,+CAA6B,OAAO,KAAK,UAAU;AAAA,YACjD,SAAS,KAAK;AAAA,UAChB,CAAC;AAAA,QACH;AAAA,MACF;AACA,iBAAO;AAAA,YACL,mDAA6B,2CAAyB,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU;AAAA,UAClF,SAAS,KAAK;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,KAAK,gBAAgB;AACnB,YAAM,OAAO,kBAAkB,KAAK,MAAM,OAAO;AAIjD,UAAI;AACJ,UAAI,KAAK,MAAM,SAAS,WAAW;AACjC,cAAM,SAAS,KAAK,MAAM,OAAO,EAAE;AAAA,MACrC,WAAW,KAAK,MAAM,SAAS,UAAU;AACvC,cAAM,KAAK,MAAM;AAAA,MACnB,OAAO;AACL,cAAM,oBAAoB,kBAAkB,KAAK,OAAO,OAAO;AAC/D,kBAAM,iCAAa,iBAAiB,QAChC,qCAAiB,iBAAwC,IACxD;AAAA,MACP;AACA,cAAI,kCAAW,IAAI,GAAG;AACpB,YAAI,KAAK,WAAW,KAAK,SAAS;AAChC,qBAAO;AAAA,gBACL,gDAA0B,2CAAyB,IAAI,GAAG,KAAK;AAAA,cAC7D,SAAS,KAAK;AAAA,cACd,SAAS,KAAK;AAAA,YAChB,CAAC;AAAA,UACH;AAAA,QACF;AACA,eAAQ,KAA4C,OAAO,GAAG,CAAC;AAAA,MACjE;AACA,cAAI,wCAAiB,IAAI,GAAG;AAM1B,mBAAO;AAAA,cACL,gDAA0B,2CAAyB,IAA2B,GAAG,KAAK;AAAA,YACpF,SAAS,KAAK;AAAA,YACd,SAAS,KAAK;AAAA,UAChB,CAAC;AAAA,QACH;AAAA,MACF;AACA,cAAI,iCAAa,IAAI,GAAG;AACtB,cAAM,YAAQ,qCAAiB,IAA2B;AAC1D,mBAAO;AAAA,cACL,4CAA0B,OAAO,KAAK;AAAA,YACpC,SAAS,KAAK;AAAA,YACd,SAAS,KAAK;AAAA,UAChB,CAAC;AAAA,QACH;AAAA,MACF;AACA,iBAAO;AAAA,YACL,gDAA0B,2CAAyB,OAAO,IAAI,CAAC,GAAG,KAAK;AAAA,UACrE,SAAS,KAAK;AAAA,UACd,SAAS,KAAK;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,KAAK,UAAU;AACb,YAAM,MAA+B,uBAAO,OAAO,IAAI;AACvD,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,KAAK,GAAG;AACrD,eAAO,eAAe,KAAK,KAAK;AAAA,UAC9B,OAAO,kBAAkB,OAAO,OAAO;AAAA,UACvC,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,IAEA,KAAK;AACH,aAAO,KAAK,MAAM,IAAI,CAAC,SAAS,kBAAkB,MAAM,OAAO,CAAC;AAAA,IAElE,KAAK,oBAAoB;AACvB,YAAM,YAAY;AAClB,iBAAO,mCAAe;AAAA,QACpB,MAAM;AAAA,QACN,UAAU,UAAU;AAAA,QACpB,MAAM,kBAAkB,UAAU,MAAM,OAAO;AAAA,QAC/C,OAAO,kBAAkB,UAAU,OAAO,OAAO;AAAA,MACnD,CAA+C;AAAA,IACjD;AAAA,IAEA,KAAK,mBAAmB;AACtB,YAAM,YAAY;AAClB,iBAAO,mCAAe;AAAA,QACpB,MAAM;AAAA,QACN,UAAU,UAAU;AAAA,QACpB,UAAU,kBAAkB,UAAU,UAAU,OAAO;AAAA,MACzD,CAA8C;AAAA,IAChD;AAAA,IAEA,KAAK,qBAAqB;AACxB,YAAM,YAAY;AAClB,iBAAO,mCAAe;AAAA,QACpB,MAAM;AAAA,QACN,WAAW,kBAAkB,UAAU,WAAW,OAAO;AAAA,QACzD,WAAW,kBAAkB,UAAU,WAAW,OAAO;AAAA,QACzD,YAAY,kBAAkB,UAAU,YAAY,OAAO;AAAA,MAC7D,CAAgD;AAAA,IAClD;AAAA,IAEA,KAAK,uBAAuB;AAC1B,iBAAO,mCAAe;AAAA,QACpB,MAAM;AAAA,QACN,UAAU,KAAK,SAAS,IAAI,CAAC,YAAY,kBAAkB,SAAS,OAAO,CAAC;AAAA,MAC9E,CAAuB;AAAA,IACzB;AAAA,IAEA;AACE,YAAM,IAAI,MAAM,qCAAqC,KAAK,IAAI,EAAE;AAAA,EACpE;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { DeclarableBodyNode, DeclarationNode, ExpressionNode, ModuleDeclarationNode, OutputDeclarationNode, ParameterDeclarationNode, ResourceDeclarationNode, VariableDeclarationNode } from "./index.js";
|
|
2
|
+
/** An identifier-rooted access chain with its static path and original AST node. */
|
|
3
|
+
export interface ExpressionReference {
|
|
4
|
+
readonly identifier: string;
|
|
5
|
+
readonly path: readonly (string | number)[];
|
|
6
|
+
readonly expression: ExpressionNode;
|
|
7
|
+
}
|
|
8
|
+
export type ExpressionReferenceResolver = (reference: ExpressionReference) => ExpressionNode | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Replaces identifier access chains, preserving unchanged branches and ignoring
|
|
11
|
+
* loop-local references. The resolver receives the original expression.
|
|
12
|
+
*/
|
|
13
|
+
export declare function rewriteExpressionReferences(expression: DeclarableBodyNode, resolve: ExpressionReferenceResolver): DeclarableBodyNode;
|
|
14
|
+
export declare function rewriteExpressionReferences(expression: ExpressionNode, resolve: ExpressionReferenceResolver): ExpressionNode;
|
|
15
|
+
type ExpressionRewriter = (expression: ExpressionNode) => ExpressionNode;
|
|
16
|
+
/**
|
|
17
|
+
* Applies an expression transformation to a declaration's value, default,
|
|
18
|
+
* decorators, and nested type decorators. The callback rewrites each complete
|
|
19
|
+
* expression subtree; recursive expression traversal is its responsibility.
|
|
20
|
+
* Unchanged branches are shared, and the input declaration is not mutated.
|
|
21
|
+
*/
|
|
22
|
+
export declare function rewriteDeclarationExpressions(node: ResourceDeclarationNode, rewriteExpression: ExpressionRewriter): ResourceDeclarationNode;
|
|
23
|
+
export declare function rewriteDeclarationExpressions(node: ModuleDeclarationNode, rewriteExpression: ExpressionRewriter): ModuleDeclarationNode;
|
|
24
|
+
export declare function rewriteDeclarationExpressions(node: OutputDeclarationNode, rewriteExpression: ExpressionRewriter): OutputDeclarationNode;
|
|
25
|
+
export declare function rewriteDeclarationExpressions(node: ParameterDeclarationNode, rewriteExpression: ExpressionRewriter): ParameterDeclarationNode;
|
|
26
|
+
export declare function rewriteDeclarationExpressions(node: VariableDeclarationNode, rewriteExpression: ExpressionRewriter): VariableDeclarationNode;
|
|
27
|
+
export declare function rewriteDeclarationExpressions(node: DeclarationNode, rewriteExpression: ExpressionRewriter): DeclarationNode;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=expression-rewriter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-rewriter.d.ts","sourceRoot":"","sources":["../../../../src/serialization/ast/expression-rewriter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EAEf,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;CACrC;AAED,MAAM,MAAM,2BAA2B,GAAG,CACxC,SAAS,EAAE,mBAAmB,KAC3B,cAAc,GAAG,SAAS,CAAC;AA2BhC;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,2BAA2B,GACnC,kBAAkB,CAAC;AACtB,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,2BAA2B,GACnC,cAAc,CAAC;AAgHlB,KAAK,kBAAkB,GAAG,CAAC,UAAU,EAAE,cAAc,KAAK,cAAc,CAAC;AA+GzE;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,uBAAuB,EAC7B,iBAAiB,EAAE,kBAAkB,GACpC,uBAAuB,CAAC;AAC3B,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,qBAAqB,EAC3B,iBAAiB,EAAE,kBAAkB,GACpC,qBAAqB,CAAC;AACzB,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,qBAAqB,EAC3B,iBAAiB,EAAE,kBAAkB,GACpC,qBAAqB,CAAC;AACzB,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,wBAAwB,EAC9B,iBAAiB,EAAE,kBAAkB,GACpC,wBAAwB,CAAC;AAC5B,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,uBAAuB,EAC7B,iBAAiB,EAAE,kBAAkB,GACpC,uBAAuB,CAAC;AAC3B,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,eAAe,EACrB,iBAAiB,EAAE,kBAAkB,GACpC,eAAe,CAAC"}
|