@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.
Files changed (571) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +49 -10
  3. package/dist/browser/constructs/built-in-resources/resource-group.d.ts +7 -1
  4. package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  5. package/dist/browser/constructs/built-in-resources/resource-group.js +26 -6
  6. package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -1
  7. package/dist/browser/constructs/output.d.ts +1 -1
  8. package/dist/browser/constructs/output.d.ts.map +1 -1
  9. package/dist/browser/constructs/output.js.map +1 -1
  10. package/dist/browser/constructs/parameter.d.ts +1 -1
  11. package/dist/browser/constructs/parameter.d.ts.map +1 -1
  12. package/dist/browser/constructs/parameter.js.map +1 -1
  13. package/dist/browser/constructs/resource/resource-query.d.ts +3 -1
  14. package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -1
  15. package/dist/browser/constructs/resource/resource-query.js +10 -0
  16. package/dist/browser/constructs/resource/resource-query.js.map +1 -1
  17. package/dist/browser/constructs/resource/resource-relationships.d.ts +9 -0
  18. package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
  19. package/dist/browser/constructs/resource/resource-relationships.js +35 -0
  20. package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
  21. package/dist/browser/constructs/resource/resource.d.ts +11 -17
  22. package/dist/browser/constructs/resource/resource.d.ts.map +1 -1
  23. package/dist/browser/constructs/resource/resource.js +70 -28
  24. package/dist/browser/constructs/resource/resource.js.map +1 -1
  25. package/dist/browser/constructs/stack.d.ts +2 -16
  26. package/dist/browser/constructs/stack.d.ts.map +1 -1
  27. package/dist/browser/constructs/stack.js +1 -15
  28. package/dist/browser/constructs/stack.js.map +1 -1
  29. package/dist/browser/expression/ast-nodes.d.ts +1 -1
  30. package/dist/browser/expression/ast-nodes.d.ts.map +1 -1
  31. package/dist/browser/expression/ast-nodes.js.map +1 -1
  32. package/dist/browser/expression/expressions.d.ts +2 -9
  33. package/dist/browser/expression/expressions.d.ts.map +1 -1
  34. package/dist/browser/expression/expressions.js +2 -9
  35. package/dist/browser/expression/expressions.js.map +1 -1
  36. package/dist/browser/expression/utils.d.ts +5 -0
  37. package/dist/browser/expression/utils.d.ts.map +1 -0
  38. package/dist/browser/expression/utils.js +25 -0
  39. package/dist/browser/expression/utils.js.map +1 -0
  40. package/dist/browser/index.d.ts +4 -4
  41. package/dist/browser/index.d.ts.map +1 -1
  42. package/dist/browser/index.js.map +1 -1
  43. package/dist/browser/internal.d.ts +2 -5
  44. package/dist/browser/internal.d.ts.map +1 -1
  45. package/dist/browser/internal.js +1 -3
  46. package/dist/browser/internal.js.map +1 -1
  47. package/dist/browser/naming/name-validation.d.ts +15 -0
  48. package/dist/browser/naming/name-validation.d.ts.map +1 -0
  49. package/dist/browser/naming/name-validation.js +82 -0
  50. package/dist/browser/naming/name-validation.js.map +1 -0
  51. package/dist/browser/naming/naming-policy.d.ts +7 -7
  52. package/dist/browser/naming/naming-policy.d.ts.map +1 -1
  53. package/dist/browser/naming/naming-policy.js +166 -33
  54. package/dist/browser/naming/naming-policy.js.map +1 -1
  55. package/dist/browser/naming/naming-rules.d.ts +12 -11
  56. package/dist/browser/naming/naming-rules.d.ts.map +1 -1
  57. package/dist/browser/naming/naming-rules.js +2 -9
  58. package/dist/browser/naming/naming-rules.js.map +1 -1
  59. package/dist/browser/package.json +1 -1
  60. package/dist/{esm/serialization/json/lower.d.ts → browser/serialization/arm-object-conversion.d.ts} +11 -11
  61. package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
  62. package/dist/{esm/serialization/json/lower.js → browser/serialization/arm-object-conversion.js} +20 -20
  63. package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
  64. package/dist/browser/serialization/ast/declaration-builder.d.ts +10 -0
  65. package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
  66. package/dist/browser/serialization/ast/declaration-builder.js +265 -0
  67. package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
  68. package/dist/browser/serialization/ast/declaration-dependencies.d.ts +18 -0
  69. package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  70. package/dist/browser/serialization/ast/declaration-dependencies.js +96 -0
  71. package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
  72. package/dist/browser/serialization/ast/expression-builder.d.ts +14 -0
  73. package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
  74. package/dist/browser/serialization/ast/expression-builder.js +313 -0
  75. package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
  76. package/dist/browser/serialization/ast/expression-restorer.d.ts +8 -0
  77. package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
  78. package/dist/browser/serialization/ast/expression-restorer.js +162 -0
  79. package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
  80. package/dist/browser/serialization/ast/expression-rewriter.d.ts +29 -0
  81. package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
  82. package/dist/browser/serialization/ast/expression-rewriter.js +257 -0
  83. package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
  84. package/dist/browser/serialization/ast/expression-walker.d.ts +16 -0
  85. package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
  86. package/dist/browser/serialization/ast/expression-walker.js +154 -0
  87. package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
  88. package/dist/browser/serialization/ast/generated/ast.d.ts.map +1 -0
  89. package/dist/browser/serialization/ast/generated/ast.js.map +1 -0
  90. package/dist/browser/serialization/ast/index.d.ts +7 -0
  91. package/dist/browser/serialization/ast/index.d.ts.map +1 -0
  92. package/dist/browser/serialization/ast/index.js.map +1 -0
  93. package/dist/browser/serialization/ast/resource-utils.d.ts +10 -0
  94. package/dist/browser/serialization/ast/resource-utils.d.ts.map +1 -0
  95. package/dist/browser/serialization/ast/resource-utils.js +52 -0
  96. package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
  97. package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  98. package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  99. package/dist/browser/serialization/bicep/file-layout/authored-context.js +57 -0
  100. package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
  101. package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  102. package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  103. package/dist/browser/serialization/bicep/file-layout/bicep-namer.js +100 -0
  104. package/dist/browser/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  105. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  106. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  107. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js +46 -0
  108. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  109. package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  110. package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  111. package/dist/browser/serialization/bicep/file-layout/deployment-planning.js +68 -0
  112. package/dist/browser/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  113. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  114. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  115. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
  116. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  117. package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  118. package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  119. package/dist/browser/serialization/bicep/file-layout/file-dependencies.js +32 -0
  120. package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  121. package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  122. package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  123. package/dist/browser/serialization/bicep/file-layout/file-paths.js +46 -0
  124. package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
  125. package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  126. package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  127. package/dist/browser/serialization/bicep/file-layout/file-preparation.js +140 -0
  128. package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  129. package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  130. package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  131. package/dist/browser/serialization/bicep/file-layout/reference-wiring.js +225 -0
  132. package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  133. package/dist/browser/serialization/bicep/index.d.ts +2 -0
  134. package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
  135. package/dist/browser/serialization/bicep/index.js +4 -0
  136. package/dist/browser/serialization/bicep/index.js.map +1 -0
  137. package/dist/browser/serialization/bicep/render.d.ts +11 -0
  138. package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
  139. package/dist/browser/serialization/bicep/render.js +293 -0
  140. package/dist/browser/serialization/bicep/render.js.map +1 -0
  141. package/dist/browser/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  142. package/dist/browser/serialization/encoding.d.ts.map +1 -0
  143. package/dist/browser/serialization/{json/encoding.js → encoding.js} +2 -12
  144. package/dist/browser/serialization/encoding.js.map +1 -0
  145. package/dist/browser/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  146. package/dist/browser/serialization/identifiers.d.ts.map +1 -0
  147. package/dist/browser/serialization/{json/util.js → identifiers.js} +1 -1
  148. package/dist/browser/serialization/identifiers.js.map +1 -0
  149. package/dist/browser/serialization/index.d.ts +1 -1
  150. package/dist/browser/serialization/index.d.ts.map +1 -1
  151. package/dist/browser/serialization/index.js.map +1 -1
  152. package/dist/browser/serialization/json/deserialize.d.ts.map +1 -1
  153. package/dist/browser/serialization/json/deserialize.js +131 -39
  154. package/dist/browser/serialization/json/deserialize.js.map +1 -1
  155. package/dist/browser/serialization/json/serialize.d.ts +1 -1
  156. package/dist/browser/serialization/json/serialize.d.ts.map +1 -1
  157. package/dist/browser/serialization/json/serialize.js +5 -360
  158. package/dist/browser/serialization/json/serialize.js.map +1 -1
  159. package/dist/browser/serialization/pluralize-config.d.ts.map +1 -0
  160. package/dist/browser/serialization/pluralize-config.js.map +1 -0
  161. package/dist/browser/serialization/symbol-map.d.ts +10 -0
  162. package/dist/browser/serialization/symbol-map.d.ts.map +1 -0
  163. package/dist/browser/serialization/symbol-map.js +40 -0
  164. package/dist/browser/serialization/symbol-map.js.map +1 -0
  165. package/dist/browser/shape/shape.d.ts +4 -4
  166. package/dist/browser/shape/shape.js +2 -2
  167. package/dist/browser/shape/shape.js.map +1 -1
  168. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +7 -1
  169. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  170. package/dist/commonjs/constructs/built-in-resources/resource-group.js +27 -6
  171. package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +2 -2
  172. package/dist/commonjs/constructs/output.d.ts +1 -1
  173. package/dist/commonjs/constructs/output.d.ts.map +1 -1
  174. package/dist/commonjs/constructs/output.js.map +1 -1
  175. package/dist/commonjs/constructs/parameter.d.ts +1 -1
  176. package/dist/commonjs/constructs/parameter.d.ts.map +1 -1
  177. package/dist/commonjs/constructs/parameter.js.map +1 -1
  178. package/dist/commonjs/constructs/resource/resource-query.d.ts +3 -1
  179. package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -1
  180. package/dist/commonjs/constructs/resource/resource-query.js +11 -0
  181. package/dist/commonjs/constructs/resource/resource-query.js.map +2 -2
  182. package/dist/commonjs/constructs/resource/resource-relationships.d.ts +9 -0
  183. package/dist/commonjs/constructs/resource/resource-relationships.d.ts.map +1 -0
  184. package/dist/commonjs/constructs/resource/resource-relationships.js +59 -0
  185. package/dist/commonjs/constructs/resource/resource-relationships.js.map +7 -0
  186. package/dist/commonjs/constructs/resource/resource.d.ts +11 -17
  187. package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -1
  188. package/dist/commonjs/constructs/resource/resource.js +57 -35
  189. package/dist/commonjs/constructs/resource/resource.js.map +2 -2
  190. package/dist/commonjs/constructs/stack.d.ts +2 -16
  191. package/dist/commonjs/constructs/stack.d.ts.map +1 -1
  192. package/dist/commonjs/constructs/stack.js.map +2 -2
  193. package/dist/commonjs/expression/ast-nodes.d.ts +1 -1
  194. package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -1
  195. package/dist/commonjs/expression/ast-nodes.js.map +1 -1
  196. package/dist/commonjs/expression/expressions.d.ts +2 -9
  197. package/dist/commonjs/expression/expressions.d.ts.map +1 -1
  198. package/dist/commonjs/expression/expressions.js.map +2 -2
  199. package/dist/commonjs/expression/utils.d.ts +5 -0
  200. package/dist/commonjs/expression/utils.d.ts.map +1 -0
  201. package/dist/commonjs/expression/utils.js +43 -0
  202. package/dist/commonjs/expression/utils.js.map +7 -0
  203. package/dist/commonjs/index.d.ts +4 -4
  204. package/dist/commonjs/index.d.ts.map +1 -1
  205. package/dist/commonjs/index.js.map +2 -2
  206. package/dist/commonjs/internal.d.ts +2 -5
  207. package/dist/commonjs/internal.d.ts.map +1 -1
  208. package/dist/commonjs/internal.js +3 -9
  209. package/dist/commonjs/internal.js.map +2 -2
  210. package/dist/commonjs/naming/name-validation.d.ts +15 -0
  211. package/dist/commonjs/naming/name-validation.d.ts.map +1 -0
  212. package/dist/commonjs/naming/name-validation.js +74 -0
  213. package/dist/commonjs/naming/name-validation.js.map +7 -0
  214. package/dist/commonjs/naming/naming-policy.d.ts +7 -7
  215. package/dist/commonjs/naming/naming-policy.d.ts.map +1 -1
  216. package/dist/commonjs/naming/naming-policy.js +136 -26
  217. package/dist/commonjs/naming/naming-policy.js.map +2 -2
  218. package/dist/commonjs/naming/naming-rules.d.ts +12 -11
  219. package/dist/commonjs/naming/naming-rules.d.ts.map +1 -1
  220. package/dist/commonjs/naming/naming-rules.js +4 -11
  221. package/dist/commonjs/naming/naming-rules.js.map +2 -2
  222. package/dist/commonjs/package.json +1 -1
  223. package/dist/{browser/serialization/json/lower.d.ts → commonjs/serialization/arm-object-conversion.d.ts} +11 -11
  224. package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
  225. package/dist/commonjs/serialization/{json/lower.js → arm-object-conversion.js} +15 -15
  226. package/dist/commonjs/serialization/arm-object-conversion.js.map +7 -0
  227. package/dist/commonjs/serialization/ast/declaration-builder.d.ts +10 -0
  228. package/dist/commonjs/serialization/ast/declaration-builder.d.ts.map +1 -0
  229. package/dist/commonjs/serialization/ast/declaration-builder.js +274 -0
  230. package/dist/commonjs/serialization/ast/declaration-builder.js.map +7 -0
  231. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts +18 -0
  232. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  233. package/dist/commonjs/serialization/ast/declaration-dependencies.js +109 -0
  234. package/dist/commonjs/serialization/ast/declaration-dependencies.js.map +7 -0
  235. package/dist/commonjs/serialization/ast/expression-builder.d.ts +14 -0
  236. package/dist/commonjs/serialization/ast/expression-builder.d.ts.map +1 -0
  237. package/dist/commonjs/serialization/ast/expression-builder.js +316 -0
  238. package/dist/commonjs/serialization/ast/expression-builder.js.map +7 -0
  239. package/dist/commonjs/serialization/ast/expression-restorer.d.ts +8 -0
  240. package/dist/commonjs/serialization/ast/expression-restorer.d.ts.map +1 -0
  241. package/dist/commonjs/serialization/ast/expression-restorer.js +193 -0
  242. package/dist/commonjs/serialization/ast/expression-restorer.js.map +7 -0
  243. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts +29 -0
  244. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts.map +1 -0
  245. package/dist/commonjs/serialization/ast/expression-rewriter.js +270 -0
  246. package/dist/commonjs/serialization/ast/expression-rewriter.js.map +7 -0
  247. package/dist/commonjs/serialization/ast/expression-walker.d.ts +16 -0
  248. package/dist/commonjs/serialization/ast/expression-walker.d.ts.map +1 -0
  249. package/dist/commonjs/serialization/ast/expression-walker.js +165 -0
  250. package/dist/commonjs/serialization/ast/expression-walker.js.map +7 -0
  251. package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
  252. package/dist/commonjs/serialization/{contract → ast}/generated/ast.js.map +1 -1
  253. package/dist/commonjs/serialization/ast/index.d.ts +7 -0
  254. package/dist/commonjs/serialization/ast/index.d.ts.map +1 -0
  255. package/dist/commonjs/serialization/{contract → ast}/index.js +3 -3
  256. package/dist/commonjs/serialization/ast/index.js.map +7 -0
  257. package/dist/commonjs/serialization/ast/resource-utils.d.ts +10 -0
  258. package/dist/commonjs/serialization/ast/resource-utils.d.ts.map +1 -0
  259. package/dist/commonjs/serialization/ast/resource-utils.js +71 -0
  260. package/dist/commonjs/serialization/ast/resource-utils.js.map +7 -0
  261. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  262. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  263. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js +74 -0
  264. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js.map +7 -0
  265. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  266. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  267. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js +130 -0
  268. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js.map +7 -0
  269. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  270. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  271. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js +71 -0
  272. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js.map +7 -0
  273. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  274. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  275. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js +80 -0
  276. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js.map +7 -0
  277. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  278. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  279. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js +91 -0
  280. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js.map +7 -0
  281. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  282. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  283. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js +57 -0
  284. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js.map +7 -0
  285. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  286. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  287. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js +70 -0
  288. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js.map +7 -0
  289. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  290. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  291. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js +190 -0
  292. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js.map +7 -0
  293. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  294. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  295. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js +241 -0
  296. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js.map +7 -0
  297. package/dist/commonjs/serialization/bicep/index.d.ts +2 -0
  298. package/dist/commonjs/serialization/bicep/index.d.ts.map +1 -0
  299. package/dist/commonjs/serialization/bicep/index.js +28 -0
  300. package/dist/commonjs/serialization/bicep/index.js.map +7 -0
  301. package/dist/commonjs/serialization/bicep/render.d.ts +11 -0
  302. package/dist/commonjs/serialization/bicep/render.d.ts.map +1 -0
  303. package/dist/commonjs/serialization/bicep/render.js +312 -0
  304. package/dist/commonjs/serialization/bicep/render.js.map +7 -0
  305. package/dist/commonjs/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  306. package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
  307. package/dist/commonjs/serialization/{json/encoding.js → encoding.js} +2 -12
  308. package/dist/commonjs/serialization/encoding.js.map +7 -0
  309. package/dist/commonjs/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  310. package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
  311. package/dist/commonjs/serialization/{json/util.js → identifiers.js} +4 -4
  312. package/dist/commonjs/serialization/{json/util.js.map → identifiers.js.map} +1 -1
  313. package/dist/commonjs/serialization/index.d.ts +1 -1
  314. package/dist/commonjs/serialization/index.d.ts.map +1 -1
  315. package/dist/commonjs/serialization/index.js.map +1 -1
  316. package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -1
  317. package/dist/commonjs/serialization/json/deserialize.js +115 -44
  318. package/dist/commonjs/serialization/json/deserialize.js.map +2 -2
  319. package/dist/commonjs/serialization/json/serialize.d.ts +1 -1
  320. package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -1
  321. package/dist/commonjs/serialization/json/serialize.js +6 -308
  322. package/dist/commonjs/serialization/json/serialize.js.map +3 -3
  323. package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
  324. package/dist/commonjs/serialization/{json/pluralize-config.js.map → pluralize-config.js.map} +1 -1
  325. package/dist/commonjs/serialization/symbol-map.d.ts +10 -0
  326. package/dist/commonjs/serialization/symbol-map.d.ts.map +1 -0
  327. package/dist/commonjs/serialization/symbol-map.js +72 -0
  328. package/dist/commonjs/serialization/symbol-map.js.map +7 -0
  329. package/dist/commonjs/shape/shape.d.ts +4 -4
  330. package/dist/commonjs/shape/shape.js.map +1 -1
  331. package/dist/commonjs/tsdoc-metadata.json +1 -1
  332. package/dist/esm/constructs/built-in-resources/resource-group.d.ts +7 -1
  333. package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  334. package/dist/esm/constructs/built-in-resources/resource-group.js +26 -6
  335. package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -1
  336. package/dist/esm/constructs/output.d.ts +1 -1
  337. package/dist/esm/constructs/output.d.ts.map +1 -1
  338. package/dist/esm/constructs/output.js.map +1 -1
  339. package/dist/esm/constructs/parameter.d.ts +1 -1
  340. package/dist/esm/constructs/parameter.d.ts.map +1 -1
  341. package/dist/esm/constructs/parameter.js.map +1 -1
  342. package/dist/esm/constructs/resource/resource-query.d.ts +3 -1
  343. package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -1
  344. package/dist/esm/constructs/resource/resource-query.js +10 -0
  345. package/dist/esm/constructs/resource/resource-query.js.map +1 -1
  346. package/dist/esm/constructs/resource/resource-relationships.d.ts +9 -0
  347. package/dist/esm/constructs/resource/resource-relationships.d.ts.map +1 -0
  348. package/dist/esm/constructs/resource/resource-relationships.js +35 -0
  349. package/dist/esm/constructs/resource/resource-relationships.js.map +1 -0
  350. package/dist/esm/constructs/resource/resource.d.ts +11 -17
  351. package/dist/esm/constructs/resource/resource.d.ts.map +1 -1
  352. package/dist/esm/constructs/resource/resource.js +70 -28
  353. package/dist/esm/constructs/resource/resource.js.map +1 -1
  354. package/dist/esm/constructs/stack.d.ts +2 -16
  355. package/dist/esm/constructs/stack.d.ts.map +1 -1
  356. package/dist/esm/constructs/stack.js +1 -15
  357. package/dist/esm/constructs/stack.js.map +1 -1
  358. package/dist/esm/expression/ast-nodes.d.ts +1 -1
  359. package/dist/esm/expression/ast-nodes.d.ts.map +1 -1
  360. package/dist/esm/expression/ast-nodes.js.map +1 -1
  361. package/dist/esm/expression/expressions.d.ts +2 -9
  362. package/dist/esm/expression/expressions.d.ts.map +1 -1
  363. package/dist/esm/expression/expressions.js +2 -9
  364. package/dist/esm/expression/expressions.js.map +1 -1
  365. package/dist/esm/expression/utils.d.ts +5 -0
  366. package/dist/esm/expression/utils.d.ts.map +1 -0
  367. package/dist/esm/expression/utils.js +25 -0
  368. package/dist/esm/expression/utils.js.map +1 -0
  369. package/dist/esm/index.d.ts +4 -4
  370. package/dist/esm/index.d.ts.map +1 -1
  371. package/dist/esm/index.js.map +1 -1
  372. package/dist/esm/internal.d.ts +2 -5
  373. package/dist/esm/internal.d.ts.map +1 -1
  374. package/dist/esm/internal.js +1 -3
  375. package/dist/esm/internal.js.map +1 -1
  376. package/dist/esm/naming/name-validation.d.ts +15 -0
  377. package/dist/esm/naming/name-validation.d.ts.map +1 -0
  378. package/dist/esm/naming/name-validation.js +82 -0
  379. package/dist/esm/naming/name-validation.js.map +1 -0
  380. package/dist/esm/naming/naming-policy.d.ts +7 -7
  381. package/dist/esm/naming/naming-policy.d.ts.map +1 -1
  382. package/dist/esm/naming/naming-policy.js +166 -33
  383. package/dist/esm/naming/naming-policy.js.map +1 -1
  384. package/dist/esm/naming/naming-rules.d.ts +12 -11
  385. package/dist/esm/naming/naming-rules.d.ts.map +1 -1
  386. package/dist/esm/naming/naming-rules.js +2 -9
  387. package/dist/esm/naming/naming-rules.js.map +1 -1
  388. package/dist/esm/package.json +1 -1
  389. package/dist/{commonjs/serialization/json/lower.d.ts → esm/serialization/arm-object-conversion.d.ts} +11 -11
  390. package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
  391. package/dist/{browser/serialization/json/lower.js → esm/serialization/arm-object-conversion.js} +20 -20
  392. package/dist/esm/serialization/arm-object-conversion.js.map +1 -0
  393. package/dist/esm/serialization/ast/declaration-builder.d.ts +10 -0
  394. package/dist/esm/serialization/ast/declaration-builder.d.ts.map +1 -0
  395. package/dist/esm/serialization/ast/declaration-builder.js +265 -0
  396. package/dist/esm/serialization/ast/declaration-builder.js.map +1 -0
  397. package/dist/esm/serialization/ast/declaration-dependencies.d.ts +18 -0
  398. package/dist/esm/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  399. package/dist/esm/serialization/ast/declaration-dependencies.js +96 -0
  400. package/dist/esm/serialization/ast/declaration-dependencies.js.map +1 -0
  401. package/dist/esm/serialization/ast/expression-builder.d.ts +14 -0
  402. package/dist/esm/serialization/ast/expression-builder.d.ts.map +1 -0
  403. package/dist/esm/serialization/ast/expression-builder.js +313 -0
  404. package/dist/esm/serialization/ast/expression-builder.js.map +1 -0
  405. package/dist/esm/serialization/ast/expression-restorer.d.ts +8 -0
  406. package/dist/esm/serialization/ast/expression-restorer.d.ts.map +1 -0
  407. package/dist/esm/serialization/ast/expression-restorer.js +162 -0
  408. package/dist/esm/serialization/ast/expression-restorer.js.map +1 -0
  409. package/dist/esm/serialization/ast/expression-rewriter.d.ts +29 -0
  410. package/dist/esm/serialization/ast/expression-rewriter.d.ts.map +1 -0
  411. package/dist/esm/serialization/ast/expression-rewriter.js +257 -0
  412. package/dist/esm/serialization/ast/expression-rewriter.js.map +1 -0
  413. package/dist/esm/serialization/ast/expression-walker.d.ts +16 -0
  414. package/dist/esm/serialization/ast/expression-walker.d.ts.map +1 -0
  415. package/dist/esm/serialization/ast/expression-walker.js +154 -0
  416. package/dist/esm/serialization/ast/expression-walker.js.map +1 -0
  417. package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
  418. package/dist/esm/serialization/ast/generated/ast.js.map +1 -0
  419. package/dist/esm/serialization/ast/index.d.ts +7 -0
  420. package/dist/esm/serialization/ast/index.d.ts.map +1 -0
  421. package/dist/esm/serialization/ast/index.js.map +1 -0
  422. package/dist/esm/serialization/ast/resource-utils.d.ts +10 -0
  423. package/dist/esm/serialization/ast/resource-utils.d.ts.map +1 -0
  424. package/dist/esm/serialization/ast/resource-utils.js +52 -0
  425. package/dist/esm/serialization/ast/resource-utils.js.map +1 -0
  426. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  427. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  428. package/dist/esm/serialization/bicep/file-layout/authored-context.js +57 -0
  429. package/dist/esm/serialization/bicep/file-layout/authored-context.js.map +1 -0
  430. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  431. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  432. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js +100 -0
  433. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  434. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  435. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  436. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js +46 -0
  437. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  438. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  439. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  440. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js +68 -0
  441. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  442. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  443. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  444. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
  445. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  446. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  447. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  448. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js +32 -0
  449. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  450. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  451. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  452. package/dist/esm/serialization/bicep/file-layout/file-paths.js +46 -0
  453. package/dist/esm/serialization/bicep/file-layout/file-paths.js.map +1 -0
  454. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  455. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  456. package/dist/esm/serialization/bicep/file-layout/file-preparation.js +140 -0
  457. package/dist/esm/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  458. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  459. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  460. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js +225 -0
  461. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  462. package/dist/esm/serialization/bicep/index.d.ts +2 -0
  463. package/dist/esm/serialization/bicep/index.d.ts.map +1 -0
  464. package/dist/esm/serialization/bicep/index.js +4 -0
  465. package/dist/esm/serialization/bicep/index.js.map +1 -0
  466. package/dist/esm/serialization/bicep/render.d.ts +11 -0
  467. package/dist/esm/serialization/bicep/render.d.ts.map +1 -0
  468. package/dist/esm/serialization/bicep/render.js +293 -0
  469. package/dist/esm/serialization/bicep/render.js.map +1 -0
  470. package/dist/esm/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  471. package/dist/esm/serialization/encoding.d.ts.map +1 -0
  472. package/dist/esm/serialization/{json/encoding.js → encoding.js} +2 -12
  473. package/dist/esm/serialization/encoding.js.map +1 -0
  474. package/dist/esm/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  475. package/dist/esm/serialization/identifiers.d.ts.map +1 -0
  476. package/dist/esm/serialization/{json/util.js → identifiers.js} +1 -1
  477. package/dist/esm/serialization/identifiers.js.map +1 -0
  478. package/dist/esm/serialization/index.d.ts +1 -1
  479. package/dist/esm/serialization/index.d.ts.map +1 -1
  480. package/dist/esm/serialization/index.js.map +1 -1
  481. package/dist/esm/serialization/json/deserialize.d.ts.map +1 -1
  482. package/dist/esm/serialization/json/deserialize.js +131 -39
  483. package/dist/esm/serialization/json/deserialize.js.map +1 -1
  484. package/dist/esm/serialization/json/serialize.d.ts +1 -1
  485. package/dist/esm/serialization/json/serialize.d.ts.map +1 -1
  486. package/dist/esm/serialization/json/serialize.js +5 -360
  487. package/dist/esm/serialization/json/serialize.js.map +1 -1
  488. package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
  489. package/dist/esm/serialization/pluralize-config.js.map +1 -0
  490. package/dist/esm/serialization/symbol-map.d.ts +10 -0
  491. package/dist/esm/serialization/symbol-map.d.ts.map +1 -0
  492. package/dist/esm/serialization/symbol-map.js +40 -0
  493. package/dist/esm/serialization/symbol-map.js.map +1 -0
  494. package/dist/esm/shape/shape.d.ts +4 -4
  495. package/dist/esm/shape/shape.js +2 -2
  496. package/dist/esm/shape/shape.js.map +1 -1
  497. package/package.json +3 -2
  498. package/dist/browser/serialization/contract/generated/ast.d.ts.map +0 -1
  499. package/dist/browser/serialization/contract/generated/ast.js.map +0 -1
  500. package/dist/browser/serialization/contract/index.d.ts +0 -2
  501. package/dist/browser/serialization/contract/index.d.ts.map +0 -1
  502. package/dist/browser/serialization/contract/index.js.map +0 -1
  503. package/dist/browser/serialization/json/encoding.d.ts.map +0 -1
  504. package/dist/browser/serialization/json/encoding.js.map +0 -1
  505. package/dist/browser/serialization/json/expression.d.ts +0 -32
  506. package/dist/browser/serialization/json/expression.d.ts.map +0 -1
  507. package/dist/browser/serialization/json/expression.js +0 -494
  508. package/dist/browser/serialization/json/expression.js.map +0 -1
  509. package/dist/browser/serialization/json/lower.d.ts.map +0 -1
  510. package/dist/browser/serialization/json/lower.js.map +0 -1
  511. package/dist/browser/serialization/json/pluralize-config.d.ts.map +0 -1
  512. package/dist/browser/serialization/json/pluralize-config.js.map +0 -1
  513. package/dist/browser/serialization/json/util.d.ts.map +0 -1
  514. package/dist/browser/serialization/json/util.js.map +0 -1
  515. package/dist/browser/serialization/utils.d.ts +0 -3
  516. package/dist/browser/serialization/utils.d.ts.map +0 -1
  517. package/dist/browser/serialization/utils.js +0 -146
  518. package/dist/browser/serialization/utils.js.map +0 -1
  519. package/dist/commonjs/serialization/contract/generated/ast.d.ts.map +0 -1
  520. package/dist/commonjs/serialization/contract/index.d.ts +0 -2
  521. package/dist/commonjs/serialization/contract/index.d.ts.map +0 -1
  522. package/dist/commonjs/serialization/contract/index.js.map +0 -7
  523. package/dist/commonjs/serialization/json/encoding.d.ts.map +0 -1
  524. package/dist/commonjs/serialization/json/encoding.js.map +0 -7
  525. package/dist/commonjs/serialization/json/expression.d.ts +0 -32
  526. package/dist/commonjs/serialization/json/expression.d.ts.map +0 -1
  527. package/dist/commonjs/serialization/json/expression.js +0 -509
  528. package/dist/commonjs/serialization/json/expression.js.map +0 -7
  529. package/dist/commonjs/serialization/json/lower.d.ts.map +0 -1
  530. package/dist/commonjs/serialization/json/lower.js.map +0 -7
  531. package/dist/commonjs/serialization/json/pluralize-config.d.ts.map +0 -1
  532. package/dist/commonjs/serialization/json/util.d.ts.map +0 -1
  533. package/dist/commonjs/serialization/utils.d.ts +0 -3
  534. package/dist/commonjs/serialization/utils.d.ts.map +0 -1
  535. package/dist/commonjs/serialization/utils.js +0 -169
  536. package/dist/commonjs/serialization/utils.js.map +0 -7
  537. package/dist/esm/serialization/contract/generated/ast.d.ts.map +0 -1
  538. package/dist/esm/serialization/contract/generated/ast.js.map +0 -1
  539. package/dist/esm/serialization/contract/index.d.ts +0 -2
  540. package/dist/esm/serialization/contract/index.d.ts.map +0 -1
  541. package/dist/esm/serialization/contract/index.js.map +0 -1
  542. package/dist/esm/serialization/json/encoding.d.ts.map +0 -1
  543. package/dist/esm/serialization/json/encoding.js.map +0 -1
  544. package/dist/esm/serialization/json/expression.d.ts +0 -32
  545. package/dist/esm/serialization/json/expression.d.ts.map +0 -1
  546. package/dist/esm/serialization/json/expression.js +0 -494
  547. package/dist/esm/serialization/json/expression.js.map +0 -1
  548. package/dist/esm/serialization/json/lower.d.ts.map +0 -1
  549. package/dist/esm/serialization/json/lower.js.map +0 -1
  550. package/dist/esm/serialization/json/pluralize-config.d.ts.map +0 -1
  551. package/dist/esm/serialization/json/pluralize-config.js.map +0 -1
  552. package/dist/esm/serialization/json/util.d.ts.map +0 -1
  553. package/dist/esm/serialization/json/util.js.map +0 -1
  554. package/dist/esm/serialization/utils.d.ts +0 -3
  555. package/dist/esm/serialization/utils.d.ts.map +0 -1
  556. package/dist/esm/serialization/utils.js +0 -146
  557. package/dist/esm/serialization/utils.js.map +0 -1
  558. /package/dist/browser/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  559. /package/dist/browser/serialization/{contract → ast}/generated/ast.js +0 -0
  560. /package/dist/browser/serialization/{contract → ast}/index.js +0 -0
  561. /package/dist/browser/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  562. /package/dist/browser/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
  563. /package/dist/commonjs/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  564. /package/dist/commonjs/serialization/{contract → ast}/generated/ast.js +0 -0
  565. /package/dist/commonjs/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  566. /package/dist/commonjs/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
  567. /package/dist/esm/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  568. /package/dist/esm/serialization/{contract → ast}/generated/ast.js +0 -0
  569. /package/dist/esm/serialization/{contract → ast}/index.js +0 -0
  570. /package/dist/esm/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  571. /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": "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",
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"}