@azure/provisioning-core 0.1.0-alpha.20261026.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 (795) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +3 -3
  3. package/README.md +61 -90
  4. package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  5. package/dist/{constructs → browser/constructs}/built-in-resources/resource-group.js +1 -2
  6. package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -0
  7. package/dist/browser/constructs/output.d.ts.map +1 -0
  8. package/dist/{constructs → browser/constructs}/output.js +1 -2
  9. package/dist/browser/constructs/output.js.map +1 -0
  10. package/dist/{constructs → browser/constructs}/parameter.d.ts.map +1 -1
  11. package/dist/browser/constructs/parameter.js.map +1 -0
  12. package/dist/browser/constructs/provisioning-component.d.ts.map +1 -0
  13. package/dist/browser/constructs/provisioning-component.js.map +1 -0
  14. package/dist/browser/constructs/resource/resource-proxy.d.ts.map +1 -0
  15. package/dist/{constructs → browser/constructs}/resource/resource-proxy.js +7 -13
  16. package/dist/browser/constructs/resource/resource-proxy.js.map +1 -0
  17. package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -0
  18. package/dist/{constructs → browser/constructs}/resource/resource-query.js +2 -4
  19. package/dist/browser/constructs/resource/resource-query.js.map +1 -0
  20. package/dist/browser/constructs/resource/resource-registry.d.ts.map +1 -0
  21. package/dist/{constructs → browser/constructs}/resource/resource-registry.js +1 -1
  22. package/dist/browser/constructs/resource/resource-registry.js.map +1 -0
  23. package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
  24. package/dist/{constructs → browser/constructs}/resource/resource-relationships.js +3 -6
  25. package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
  26. package/dist/browser/constructs/resource/resource-type-registry.d.ts.map +1 -0
  27. package/dist/browser/constructs/resource/resource-type-registry.js.map +1 -0
  28. package/dist/browser/constructs/resource/resource-utils.d.ts.map +1 -0
  29. package/dist/{constructs → browser/constructs}/resource/resource-utils.js +1 -3
  30. package/dist/browser/constructs/resource/resource-utils.js.map +1 -0
  31. package/dist/browser/constructs/resource/resource.d.ts.map +1 -0
  32. package/dist/{constructs → browser/constructs}/resource/resource.js +8 -12
  33. package/dist/browser/constructs/resource/resource.js.map +1 -0
  34. package/dist/browser/constructs/stack.d.ts.map +1 -0
  35. package/dist/browser/constructs/stack.js.map +1 -0
  36. package/dist/browser/constructs/variable.d.ts.map +1 -0
  37. package/dist/browser/constructs/variable.js.map +1 -0
  38. package/dist/browser/deployment-context/deployment-context.d.ts.map +1 -0
  39. package/dist/browser/deployment-context/deployment-context.js.map +1 -0
  40. package/dist/browser/expression/ast-nodes.d.ts.map +1 -0
  41. package/dist/{expression → browser/expression}/ast-nodes.js +2 -4
  42. package/dist/browser/expression/ast-nodes.js.map +1 -0
  43. package/dist/browser/expression/expressions.d.ts.map +1 -0
  44. package/dist/{expression → browser/expression}/expressions.js +1 -1
  45. package/dist/browser/expression/expressions.js.map +1 -0
  46. package/dist/browser/expression/utils.d.ts.map +1 -0
  47. package/dist/browser/expression/utils.js.map +1 -0
  48. package/dist/browser/fn.d.ts.map +1 -0
  49. package/dist/{fn.js → browser/fn.js} +6 -25
  50. package/dist/browser/fn.js.map +1 -0
  51. package/dist/browser/index.d.ts.map +1 -0
  52. package/dist/{index.js → browser/index.js} +0 -2
  53. package/dist/browser/index.js.map +1 -0
  54. package/dist/{internal.d.ts → browser/internal.d.ts} +1 -1
  55. package/dist/browser/internal.d.ts.map +1 -0
  56. package/dist/{internal.js → browser/internal.js} +1 -1
  57. package/dist/browser/internal.js.map +1 -0
  58. package/dist/browser/naming/name-validation.d.ts.map +1 -0
  59. package/dist/{naming → browser/naming}/name-validation.js +1 -1
  60. package/dist/browser/naming/name-validation.js.map +1 -0
  61. package/dist/browser/naming/naming-policy.d.ts.map +1 -0
  62. package/dist/{naming → browser/naming}/naming-policy.js +3 -5
  63. package/dist/browser/naming/naming-policy.js.map +1 -0
  64. package/dist/browser/naming/naming-rules.d.ts.map +1 -0
  65. package/dist/browser/naming/naming-rules.js.map +1 -0
  66. package/dist/browser/package.json +8 -0
  67. package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
  68. package/dist/{serialization → browser/serialization}/arm-object-conversion.js +9 -18
  69. package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
  70. package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
  71. package/dist/{serialization → browser/serialization}/ast/declaration-builder.js +5 -12
  72. package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
  73. package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  74. package/dist/{serialization → browser/serialization}/ast/declaration-dependencies.js +1 -2
  75. package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
  76. package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
  77. package/dist/{serialization → browser/serialization}/ast/expression-builder.js +2 -4
  78. package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
  79. package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
  80. package/dist/{serialization → browser/serialization}/ast/expression-restorer.js +11 -4
  81. package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
  82. package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
  83. package/dist/{serialization → browser/serialization}/ast/expression-rewriter.js +12 -34
  84. package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
  85. package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
  86. package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
  87. package/dist/{serialization → browser/serialization}/ast/generated/ast.d.ts.map +1 -1
  88. package/dist/browser/serialization/ast/generated/ast.js.map +1 -0
  89. package/dist/browser/serialization/ast/index.d.ts.map +1 -0
  90. package/dist/browser/serialization/ast/index.js.map +1 -0
  91. package/dist/browser/serialization/ast/resource-utils.d.ts.map +1 -0
  92. package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
  93. package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  94. package/dist/{serialization → browser/serialization}/bicep/file-layout/authored-context.js +1 -2
  95. package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
  96. package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  97. package/dist/{serialization → browser/serialization}/bicep/file-layout/bicep-namer.js +11 -20
  98. package/dist/browser/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  99. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  100. package/dist/{serialization → browser/serialization}/bicep/file-layout/build-bicep-files.js +7 -20
  101. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  102. package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  103. package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-planning.js +2 -3
  104. package/dist/browser/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  105. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  106. package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-resource-utils.js +5 -9
  107. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  108. package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  109. package/dist/{serialization → browser/serialization}/bicep/file-layout/file-dependencies.js +2 -7
  110. package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  111. package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  112. package/dist/{serialization → browser/serialization}/bicep/file-layout/file-paths.js +1 -3
  113. package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
  114. package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  115. package/dist/{serialization → browser/serialization}/bicep/file-layout/file-preparation.js +8 -16
  116. package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  117. package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  118. package/dist/{serialization → browser/serialization}/bicep/file-layout/reference-wiring.js +4 -7
  119. package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  120. package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
  121. package/dist/browser/serialization/bicep/index.js.map +1 -0
  122. package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
  123. package/dist/{serialization → browser/serialization}/bicep/render.js +18 -34
  124. package/dist/browser/serialization/bicep/render.js.map +1 -0
  125. package/dist/browser/serialization/encoding.d.ts.map +1 -0
  126. package/dist/{serialization → browser/serialization}/encoding.js +2 -6
  127. package/dist/browser/serialization/encoding.js.map +1 -0
  128. package/dist/browser/serialization/identifiers.d.ts.map +1 -0
  129. package/dist/browser/serialization/identifiers.js.map +1 -0
  130. package/dist/browser/serialization/index.d.ts.map +1 -0
  131. package/dist/browser/serialization/index.js.map +1 -0
  132. package/dist/browser/serialization/json/deserialize.d.ts.map +1 -0
  133. package/dist/{serialization → browser/serialization}/json/deserialize.js +23 -64
  134. package/dist/browser/serialization/json/deserialize.js.map +1 -0
  135. package/dist/browser/serialization/json/serialize.d.ts.map +1 -0
  136. package/dist/{serialization → browser/serialization}/json/serialize.js +1 -3
  137. package/dist/browser/serialization/json/serialize.js.map +1 -0
  138. package/dist/browser/serialization/pluralize-config.d.ts.map +1 -0
  139. package/dist/browser/serialization/pluralize-config.js.map +1 -0
  140. package/dist/browser/serialization/symbol-map.d.ts.map +1 -0
  141. package/dist/browser/serialization/symbol-map.js.map +1 -0
  142. package/dist/browser/shape/shape-registry.d.ts.map +1 -0
  143. package/dist/browser/shape/shape-registry.js.map +1 -0
  144. package/dist/browser/shape/shape.d.ts.map +1 -0
  145. package/dist/{shape → browser/shape}/shape.js +6 -7
  146. package/dist/browser/shape/shape.js.map +1 -0
  147. package/dist/browser/shape/value-encoding.d.ts.map +1 -0
  148. package/dist/browser/shape/value-encoding.js.map +1 -0
  149. package/dist/browser/types.d.ts.map +1 -0
  150. package/dist/browser/types.js.map +1 -0
  151. package/dist/{util.d.ts → browser/util.d.ts} +1 -1
  152. package/dist/browser/util.d.ts.map +1 -0
  153. package/dist/{util.js → browser/util.js} +1 -5
  154. package/dist/browser/util.js.map +1 -0
  155. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +56 -0
  156. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  157. package/dist/commonjs/constructs/built-in-resources/resource-group.js +135 -0
  158. package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +7 -0
  159. package/dist/commonjs/constructs/output.d.ts +80 -0
  160. package/dist/commonjs/constructs/output.d.ts.map +1 -0
  161. package/dist/commonjs/constructs/output.js +75 -0
  162. package/dist/commonjs/constructs/output.js.map +7 -0
  163. package/dist/commonjs/constructs/parameter.d.ts +77 -0
  164. package/dist/commonjs/constructs/parameter.d.ts.map +1 -0
  165. package/dist/commonjs/constructs/parameter.js +95 -0
  166. package/dist/commonjs/constructs/parameter.js.map +7 -0
  167. package/dist/commonjs/constructs/provisioning-component.d.ts +91 -0
  168. package/dist/commonjs/constructs/provisioning-component.d.ts.map +1 -0
  169. package/dist/commonjs/constructs/provisioning-component.js +130 -0
  170. package/dist/commonjs/constructs/provisioning-component.js.map +7 -0
  171. package/dist/commonjs/constructs/resource/resource-proxy.d.ts +134 -0
  172. package/dist/commonjs/constructs/resource/resource-proxy.d.ts.map +1 -0
  173. package/dist/commonjs/constructs/resource/resource-proxy.js +456 -0
  174. package/dist/commonjs/constructs/resource/resource-proxy.js.map +7 -0
  175. package/dist/commonjs/constructs/resource/resource-query.d.ts +25 -0
  176. package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -0
  177. package/dist/commonjs/constructs/resource/resource-query.js +79 -0
  178. package/dist/commonjs/constructs/resource/resource-query.js.map +7 -0
  179. package/dist/commonjs/constructs/resource/resource-registry.d.ts +99 -0
  180. package/dist/commonjs/constructs/resource/resource-registry.d.ts.map +1 -0
  181. package/dist/commonjs/constructs/resource/resource-registry.js +49 -0
  182. package/dist/commonjs/constructs/resource/resource-registry.js.map +7 -0
  183. package/dist/commonjs/constructs/resource/resource-relationships.d.ts +9 -0
  184. package/dist/commonjs/constructs/resource/resource-relationships.d.ts.map +1 -0
  185. package/dist/commonjs/constructs/resource/resource-relationships.js +59 -0
  186. package/dist/commonjs/constructs/resource/resource-relationships.js.map +7 -0
  187. package/dist/commonjs/constructs/resource/resource-type-registry.d.ts +46 -0
  188. package/dist/commonjs/constructs/resource/resource-type-registry.d.ts.map +1 -0
  189. package/dist/commonjs/constructs/resource/resource-type-registry.js +178 -0
  190. package/dist/commonjs/constructs/resource/resource-type-registry.js.map +7 -0
  191. package/dist/commonjs/constructs/resource/resource-utils.d.ts +60 -0
  192. package/dist/commonjs/constructs/resource/resource-utils.d.ts.map +1 -0
  193. package/dist/commonjs/constructs/resource/resource-utils.js +51 -0
  194. package/dist/commonjs/constructs/resource/resource-utils.js.map +7 -0
  195. package/dist/commonjs/constructs/resource/resource.d.ts +454 -0
  196. package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -0
  197. package/dist/commonjs/constructs/resource/resource.js +477 -0
  198. package/dist/commonjs/constructs/resource/resource.js.map +7 -0
  199. package/dist/commonjs/constructs/stack.d.ts +96 -0
  200. package/dist/commonjs/constructs/stack.d.ts.map +1 -0
  201. package/dist/commonjs/constructs/stack.js +101 -0
  202. package/dist/commonjs/constructs/stack.js.map +7 -0
  203. package/dist/commonjs/constructs/variable.d.ts +63 -0
  204. package/dist/commonjs/constructs/variable.d.ts.map +1 -0
  205. package/dist/commonjs/constructs/variable.js +85 -0
  206. package/dist/commonjs/constructs/variable.js.map +7 -0
  207. package/dist/commonjs/deployment-context/deployment-context.d.ts +27 -0
  208. package/dist/commonjs/deployment-context/deployment-context.d.ts.map +1 -0
  209. package/dist/commonjs/deployment-context/deployment-context.js +16 -0
  210. package/dist/commonjs/deployment-context/deployment-context.js.map +7 -0
  211. package/dist/commonjs/expression/ast-nodes.d.ts +100 -0
  212. package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -0
  213. package/dist/commonjs/expression/ast-nodes.js +152 -0
  214. package/dist/commonjs/expression/ast-nodes.js.map +7 -0
  215. package/dist/commonjs/expression/expressions.d.ts +157 -0
  216. package/dist/commonjs/expression/expressions.d.ts.map +1 -0
  217. package/dist/commonjs/expression/expressions.js +171 -0
  218. package/dist/commonjs/expression/expressions.js.map +7 -0
  219. package/dist/commonjs/expression/utils.d.ts +5 -0
  220. package/dist/commonjs/expression/utils.d.ts.map +1 -0
  221. package/dist/commonjs/expression/utils.js +43 -0
  222. package/dist/commonjs/expression/utils.js.map +7 -0
  223. package/dist/commonjs/fn.d.ts +194 -0
  224. package/dist/commonjs/fn.d.ts.map +1 -0
  225. package/dist/commonjs/fn.js +382 -0
  226. package/dist/commonjs/fn.js.map +7 -0
  227. package/dist/commonjs/index.d.ts +25 -0
  228. package/dist/commonjs/index.d.ts.map +1 -0
  229. package/dist/commonjs/index.js +93 -0
  230. package/dist/commonjs/index.js.map +7 -0
  231. package/dist/commonjs/internal.d.ts +10 -0
  232. package/dist/commonjs/internal.d.ts.map +1 -0
  233. package/dist/commonjs/internal.js +82 -0
  234. package/dist/commonjs/internal.js.map +7 -0
  235. package/dist/commonjs/naming/name-validation.d.ts +15 -0
  236. package/dist/commonjs/naming/name-validation.d.ts.map +1 -0
  237. package/dist/commonjs/naming/name-validation.js +74 -0
  238. package/dist/commonjs/naming/name-validation.js.map +7 -0
  239. package/dist/commonjs/naming/naming-policy.d.ts +56 -0
  240. package/dist/commonjs/naming/naming-policy.d.ts.map +1 -0
  241. package/dist/commonjs/naming/naming-policy.js +209 -0
  242. package/dist/commonjs/naming/naming-policy.js.map +7 -0
  243. package/dist/commonjs/naming/naming-rules.d.ts +16 -0
  244. package/dist/commonjs/naming/naming-rules.d.ts.map +1 -0
  245. package/dist/commonjs/naming/naming-rules.js +32 -0
  246. package/dist/commonjs/naming/naming-rules.js.map +7 -0
  247. package/dist/commonjs/package.json +8 -0
  248. package/dist/commonjs/serialization/arm-object-conversion.d.ts +41 -0
  249. package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
  250. package/dist/commonjs/serialization/arm-object-conversion.js +272 -0
  251. package/dist/commonjs/serialization/arm-object-conversion.js.map +7 -0
  252. package/dist/commonjs/serialization/ast/declaration-builder.d.ts +10 -0
  253. package/dist/commonjs/serialization/ast/declaration-builder.d.ts.map +1 -0
  254. package/dist/commonjs/serialization/ast/declaration-builder.js +274 -0
  255. package/dist/commonjs/serialization/ast/declaration-builder.js.map +7 -0
  256. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts +18 -0
  257. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  258. package/dist/commonjs/serialization/ast/declaration-dependencies.js +109 -0
  259. package/dist/commonjs/serialization/ast/declaration-dependencies.js.map +7 -0
  260. package/dist/commonjs/serialization/ast/expression-builder.d.ts +14 -0
  261. package/dist/commonjs/serialization/ast/expression-builder.d.ts.map +1 -0
  262. package/dist/commonjs/serialization/ast/expression-builder.js +316 -0
  263. package/dist/commonjs/serialization/ast/expression-builder.js.map +7 -0
  264. package/dist/commonjs/serialization/ast/expression-restorer.d.ts +8 -0
  265. package/dist/commonjs/serialization/ast/expression-restorer.d.ts.map +1 -0
  266. package/dist/commonjs/serialization/ast/expression-restorer.js +193 -0
  267. package/dist/commonjs/serialization/ast/expression-restorer.js.map +7 -0
  268. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts +29 -0
  269. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts.map +1 -0
  270. package/dist/commonjs/serialization/ast/expression-rewriter.js +270 -0
  271. package/dist/commonjs/serialization/ast/expression-rewriter.js.map +7 -0
  272. package/dist/commonjs/serialization/ast/expression-walker.d.ts +16 -0
  273. package/dist/commonjs/serialization/ast/expression-walker.d.ts.map +1 -0
  274. package/dist/commonjs/serialization/ast/expression-walker.js +165 -0
  275. package/dist/commonjs/serialization/ast/expression-walker.js.map +7 -0
  276. package/dist/commonjs/serialization/ast/generated/ast.d.ts +508 -0
  277. package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
  278. package/dist/commonjs/serialization/ast/generated/ast.js +40 -0
  279. package/dist/commonjs/serialization/ast/generated/ast.js.map +7 -0
  280. package/dist/commonjs/serialization/ast/index.d.ts +7 -0
  281. package/dist/commonjs/serialization/ast/index.d.ts.map +1 -0
  282. package/dist/commonjs/serialization/ast/index.js +22 -0
  283. package/dist/commonjs/serialization/ast/index.js.map +7 -0
  284. package/dist/commonjs/serialization/ast/resource-utils.d.ts +10 -0
  285. package/dist/commonjs/serialization/ast/resource-utils.d.ts.map +1 -0
  286. package/dist/commonjs/serialization/ast/resource-utils.js +71 -0
  287. package/dist/commonjs/serialization/ast/resource-utils.js.map +7 -0
  288. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  289. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  290. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js +74 -0
  291. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js.map +7 -0
  292. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  293. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  294. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js +130 -0
  295. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js.map +7 -0
  296. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  297. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  298. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js +71 -0
  299. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js.map +7 -0
  300. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  301. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  302. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js +80 -0
  303. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js.map +7 -0
  304. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  305. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  306. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js +91 -0
  307. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js.map +7 -0
  308. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  309. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  310. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js +57 -0
  311. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js.map +7 -0
  312. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  313. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  314. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js +70 -0
  315. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js.map +7 -0
  316. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  317. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  318. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js +190 -0
  319. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js.map +7 -0
  320. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  321. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  322. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js +241 -0
  323. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js.map +7 -0
  324. package/dist/commonjs/serialization/bicep/index.d.ts +2 -0
  325. package/dist/commonjs/serialization/bicep/index.d.ts.map +1 -0
  326. package/dist/commonjs/serialization/bicep/index.js +28 -0
  327. package/dist/commonjs/serialization/bicep/index.js.map +7 -0
  328. package/dist/commonjs/serialization/bicep/render.d.ts +11 -0
  329. package/dist/commonjs/serialization/bicep/render.d.ts.map +1 -0
  330. package/dist/commonjs/serialization/bicep/render.js +312 -0
  331. package/dist/commonjs/serialization/bicep/render.js.map +7 -0
  332. package/dist/commonjs/serialization/encoding.d.ts +4 -0
  333. package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
  334. package/dist/commonjs/serialization/encoding.js +296 -0
  335. package/dist/commonjs/serialization/encoding.js.map +7 -0
  336. package/dist/commonjs/serialization/identifiers.d.ts +2 -0
  337. package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
  338. package/dist/commonjs/serialization/identifiers.js +37 -0
  339. package/dist/commonjs/serialization/identifiers.js.map +7 -0
  340. package/dist/commonjs/serialization/index.d.ts +4 -0
  341. package/dist/commonjs/serialization/index.d.ts.map +1 -0
  342. package/dist/commonjs/serialization/index.js +31 -0
  343. package/dist/commonjs/serialization/index.js.map +7 -0
  344. package/dist/commonjs/serialization/json/deserialize.d.ts +24 -0
  345. package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -0
  346. package/dist/commonjs/serialization/json/deserialize.js +456 -0
  347. package/dist/commonjs/serialization/json/deserialize.js.map +7 -0
  348. package/dist/commonjs/serialization/json/serialize.d.ts +12 -0
  349. package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -0
  350. package/dist/commonjs/serialization/json/serialize.js +50 -0
  351. package/dist/commonjs/serialization/json/serialize.js.map +7 -0
  352. package/dist/commonjs/serialization/pluralize-config.d.ts +3 -0
  353. package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
  354. package/dist/commonjs/serialization/pluralize-config.js +37 -0
  355. package/dist/commonjs/serialization/pluralize-config.js.map +7 -0
  356. package/dist/commonjs/serialization/symbol-map.d.ts +10 -0
  357. package/dist/commonjs/serialization/symbol-map.d.ts.map +1 -0
  358. package/dist/commonjs/serialization/symbol-map.js +72 -0
  359. package/dist/commonjs/serialization/symbol-map.js.map +7 -0
  360. package/dist/commonjs/shape/shape-registry.d.ts +51 -0
  361. package/dist/commonjs/shape/shape-registry.d.ts.map +1 -0
  362. package/dist/commonjs/shape/shape-registry.js +40 -0
  363. package/dist/commonjs/shape/shape-registry.js.map +7 -0
  364. package/dist/commonjs/shape/shape.d.ts +407 -0
  365. package/dist/commonjs/shape/shape.d.ts.map +1 -0
  366. package/dist/commonjs/shape/shape.js +290 -0
  367. package/dist/commonjs/shape/shape.js.map +7 -0
  368. package/dist/commonjs/shape/value-encoding.d.ts +121 -0
  369. package/dist/commonjs/shape/value-encoding.d.ts.map +1 -0
  370. package/dist/commonjs/shape/value-encoding.js +62 -0
  371. package/dist/commonjs/shape/value-encoding.js.map +7 -0
  372. package/dist/commonjs/tsdoc-metadata.json +11 -0
  373. package/dist/commonjs/types.d.ts +9 -0
  374. package/dist/commonjs/types.d.ts.map +1 -0
  375. package/dist/commonjs/types.js +16 -0
  376. package/dist/commonjs/types.js.map +7 -0
  377. package/dist/commonjs/util.d.ts +33 -0
  378. package/dist/commonjs/util.d.ts.map +1 -0
  379. package/dist/commonjs/util.js +73 -0
  380. package/dist/commonjs/util.js.map +7 -0
  381. package/dist/esm/constructs/built-in-resources/resource-group.d.ts +56 -0
  382. package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  383. package/dist/esm/constructs/built-in-resources/resource-group.js +120 -0
  384. package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -0
  385. package/dist/esm/constructs/output.d.ts +80 -0
  386. package/dist/esm/constructs/output.d.ts.map +1 -0
  387. package/dist/esm/constructs/output.js +75 -0
  388. package/dist/esm/constructs/output.js.map +1 -0
  389. package/dist/esm/constructs/parameter.d.ts +77 -0
  390. package/dist/esm/constructs/parameter.d.ts.map +1 -0
  391. package/dist/esm/constructs/parameter.js +93 -0
  392. package/dist/esm/constructs/parameter.js.map +1 -0
  393. package/dist/esm/constructs/provisioning-component.d.ts +91 -0
  394. package/dist/esm/constructs/provisioning-component.d.ts.map +1 -0
  395. package/dist/esm/constructs/provisioning-component.js +150 -0
  396. package/dist/esm/constructs/provisioning-component.js.map +1 -0
  397. package/dist/esm/constructs/resource/resource-proxy.d.ts +134 -0
  398. package/dist/esm/constructs/resource/resource-proxy.d.ts.map +1 -0
  399. package/dist/esm/constructs/resource/resource-proxy.js +517 -0
  400. package/dist/esm/constructs/resource/resource-proxy.js.map +1 -0
  401. package/dist/esm/constructs/resource/resource-query.d.ts +25 -0
  402. package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -0
  403. package/dist/esm/constructs/resource/resource-query.js +79 -0
  404. package/dist/esm/constructs/resource/resource-query.js.map +1 -0
  405. package/dist/esm/constructs/resource/resource-registry.d.ts +99 -0
  406. package/dist/esm/constructs/resource/resource-registry.d.ts.map +1 -0
  407. package/dist/esm/constructs/resource/resource-registry.js +51 -0
  408. package/dist/esm/constructs/resource/resource-registry.js.map +1 -0
  409. package/dist/esm/constructs/resource/resource-relationships.d.ts +9 -0
  410. package/dist/esm/constructs/resource/resource-relationships.d.ts.map +1 -0
  411. package/dist/esm/constructs/resource/resource-relationships.js +35 -0
  412. package/dist/esm/constructs/resource/resource-relationships.js.map +1 -0
  413. package/dist/esm/constructs/resource/resource-type-registry.d.ts +46 -0
  414. package/dist/esm/constructs/resource/resource-type-registry.d.ts.map +1 -0
  415. package/dist/esm/constructs/resource/resource-type-registry.js +156 -0
  416. package/dist/esm/constructs/resource/resource-type-registry.js.map +1 -0
  417. package/dist/esm/constructs/resource/resource-utils.d.ts +60 -0
  418. package/dist/esm/constructs/resource/resource-utils.d.ts.map +1 -0
  419. package/dist/esm/constructs/resource/resource-utils.js +75 -0
  420. package/dist/esm/constructs/resource/resource-utils.js.map +1 -0
  421. package/dist/esm/constructs/resource/resource.d.ts +454 -0
  422. package/dist/esm/constructs/resource/resource.d.ts.map +1 -0
  423. package/dist/esm/constructs/resource/resource.js +624 -0
  424. package/dist/esm/constructs/resource/resource.js.map +1 -0
  425. package/dist/esm/constructs/stack.d.ts +96 -0
  426. package/dist/esm/constructs/stack.d.ts.map +1 -0
  427. package/dist/esm/constructs/stack.js +96 -0
  428. package/dist/esm/constructs/stack.js.map +1 -0
  429. package/dist/esm/constructs/variable.d.ts +63 -0
  430. package/dist/esm/constructs/variable.d.ts.map +1 -0
  431. package/dist/esm/constructs/variable.js +74 -0
  432. package/dist/esm/constructs/variable.js.map +1 -0
  433. package/dist/esm/deployment-context/deployment-context.d.ts +27 -0
  434. package/dist/esm/deployment-context/deployment-context.d.ts.map +1 -0
  435. package/dist/esm/deployment-context/deployment-context.js +4 -0
  436. package/dist/esm/deployment-context/deployment-context.js.map +1 -0
  437. package/dist/esm/expression/ast-nodes.d.ts +100 -0
  438. package/dist/esm/expression/ast-nodes.d.ts.map +1 -0
  439. package/dist/esm/expression/ast-nodes.js +125 -0
  440. package/dist/esm/expression/ast-nodes.js.map +1 -0
  441. package/dist/esm/expression/expressions.d.ts +157 -0
  442. package/dist/esm/expression/expressions.d.ts.map +1 -0
  443. package/dist/esm/expression/expressions.js +204 -0
  444. package/dist/esm/expression/expressions.js.map +1 -0
  445. package/dist/esm/expression/utils.d.ts +5 -0
  446. package/dist/esm/expression/utils.d.ts.map +1 -0
  447. package/dist/esm/expression/utils.js +25 -0
  448. package/dist/esm/expression/utils.js.map +1 -0
  449. package/dist/esm/fn.d.ts +194 -0
  450. package/dist/esm/fn.d.ts.map +1 -0
  451. package/dist/esm/fn.js +334 -0
  452. package/dist/esm/fn.js.map +1 -0
  453. package/dist/esm/index.d.ts +25 -0
  454. package/dist/esm/index.d.ts.map +1 -0
  455. package/dist/esm/index.js +17 -0
  456. package/dist/esm/index.js.map +1 -0
  457. package/dist/esm/internal.d.ts +10 -0
  458. package/dist/esm/internal.d.ts.map +1 -0
  459. package/dist/esm/internal.js +8 -0
  460. package/dist/esm/internal.js.map +1 -0
  461. package/dist/esm/naming/name-validation.d.ts +15 -0
  462. package/dist/esm/naming/name-validation.d.ts.map +1 -0
  463. package/dist/esm/naming/name-validation.js +82 -0
  464. package/dist/esm/naming/name-validation.js.map +1 -0
  465. package/dist/esm/naming/naming-policy.d.ts +56 -0
  466. package/dist/esm/naming/naming-policy.d.ts.map +1 -0
  467. package/dist/esm/naming/naming-policy.js +230 -0
  468. package/dist/esm/naming/naming-policy.js.map +1 -0
  469. package/dist/esm/naming/naming-rules.d.ts +16 -0
  470. package/dist/esm/naming/naming-rules.d.ts.map +1 -0
  471. package/dist/esm/naming/naming-rules.js +8 -0
  472. package/dist/esm/naming/naming-rules.js.map +1 -0
  473. package/dist/esm/package.json +8 -0
  474. package/dist/esm/serialization/arm-object-conversion.d.ts +41 -0
  475. package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
  476. package/dist/esm/serialization/arm-object-conversion.js +334 -0
  477. package/dist/esm/serialization/arm-object-conversion.js.map +1 -0
  478. package/dist/esm/serialization/ast/declaration-builder.d.ts +10 -0
  479. package/dist/esm/serialization/ast/declaration-builder.d.ts.map +1 -0
  480. package/dist/esm/serialization/ast/declaration-builder.js +265 -0
  481. package/dist/esm/serialization/ast/declaration-builder.js.map +1 -0
  482. package/dist/esm/serialization/ast/declaration-dependencies.d.ts +18 -0
  483. package/dist/esm/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  484. package/dist/esm/serialization/ast/declaration-dependencies.js +96 -0
  485. package/dist/esm/serialization/ast/declaration-dependencies.js.map +1 -0
  486. package/dist/esm/serialization/ast/expression-builder.d.ts +14 -0
  487. package/dist/esm/serialization/ast/expression-builder.d.ts.map +1 -0
  488. package/dist/esm/serialization/ast/expression-builder.js +313 -0
  489. package/dist/esm/serialization/ast/expression-builder.js.map +1 -0
  490. package/dist/esm/serialization/ast/expression-restorer.d.ts +8 -0
  491. package/dist/esm/serialization/ast/expression-restorer.d.ts.map +1 -0
  492. package/dist/esm/serialization/ast/expression-restorer.js +162 -0
  493. package/dist/esm/serialization/ast/expression-restorer.js.map +1 -0
  494. package/dist/esm/serialization/ast/expression-rewriter.d.ts +29 -0
  495. package/dist/esm/serialization/ast/expression-rewriter.d.ts.map +1 -0
  496. package/dist/esm/serialization/ast/expression-rewriter.js +257 -0
  497. package/dist/esm/serialization/ast/expression-rewriter.js.map +1 -0
  498. package/dist/esm/serialization/ast/expression-walker.d.ts +16 -0
  499. package/dist/esm/serialization/ast/expression-walker.d.ts.map +1 -0
  500. package/dist/esm/serialization/ast/expression-walker.js +154 -0
  501. package/dist/esm/serialization/ast/expression-walker.js.map +1 -0
  502. package/dist/esm/serialization/ast/generated/ast.d.ts +508 -0
  503. package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
  504. package/dist/esm/serialization/ast/generated/ast.js +23 -0
  505. package/dist/esm/serialization/ast/generated/ast.js.map +1 -0
  506. package/dist/esm/serialization/ast/index.d.ts +7 -0
  507. package/dist/esm/serialization/ast/index.d.ts.map +1 -0
  508. package/dist/esm/serialization/ast/index.js +4 -0
  509. package/dist/esm/serialization/ast/index.js.map +1 -0
  510. package/dist/esm/serialization/ast/resource-utils.d.ts +10 -0
  511. package/dist/esm/serialization/ast/resource-utils.d.ts.map +1 -0
  512. package/dist/esm/serialization/ast/resource-utils.js +52 -0
  513. package/dist/esm/serialization/ast/resource-utils.js.map +1 -0
  514. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  515. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  516. package/dist/esm/serialization/bicep/file-layout/authored-context.js +57 -0
  517. package/dist/esm/serialization/bicep/file-layout/authored-context.js.map +1 -0
  518. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  519. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  520. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js +100 -0
  521. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  522. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  523. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  524. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js +46 -0
  525. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  526. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  527. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  528. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js +68 -0
  529. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  530. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  531. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  532. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
  533. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  534. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  535. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  536. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js +32 -0
  537. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  538. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  539. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  540. package/dist/esm/serialization/bicep/file-layout/file-paths.js +46 -0
  541. package/dist/esm/serialization/bicep/file-layout/file-paths.js.map +1 -0
  542. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  543. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  544. package/dist/esm/serialization/bicep/file-layout/file-preparation.js +140 -0
  545. package/dist/esm/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  546. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  547. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  548. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js +225 -0
  549. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  550. package/dist/esm/serialization/bicep/index.d.ts +2 -0
  551. package/dist/esm/serialization/bicep/index.d.ts.map +1 -0
  552. package/dist/esm/serialization/bicep/index.js +4 -0
  553. package/dist/esm/serialization/bicep/index.js.map +1 -0
  554. package/dist/esm/serialization/bicep/render.d.ts +11 -0
  555. package/dist/esm/serialization/bicep/render.d.ts.map +1 -0
  556. package/dist/esm/serialization/bicep/render.js +293 -0
  557. package/dist/esm/serialization/bicep/render.js.map +1 -0
  558. package/dist/esm/serialization/encoding.d.ts +4 -0
  559. package/dist/esm/serialization/encoding.d.ts.map +1 -0
  560. package/dist/esm/serialization/encoding.js +309 -0
  561. package/dist/esm/serialization/encoding.js.map +1 -0
  562. package/dist/esm/serialization/identifiers.d.ts +2 -0
  563. package/dist/esm/serialization/identifiers.d.ts.map +1 -0
  564. package/dist/esm/serialization/identifiers.js +19 -0
  565. package/dist/esm/serialization/identifiers.js.map +1 -0
  566. package/dist/esm/serialization/index.d.ts +4 -0
  567. package/dist/esm/serialization/index.d.ts.map +1 -0
  568. package/dist/esm/serialization/index.js +5 -0
  569. package/dist/esm/serialization/index.js.map +1 -0
  570. package/dist/esm/serialization/json/deserialize.d.ts +24 -0
  571. package/dist/esm/serialization/json/deserialize.d.ts.map +1 -0
  572. package/dist/esm/serialization/json/deserialize.js +529 -0
  573. package/dist/esm/serialization/json/deserialize.js.map +1 -0
  574. package/dist/esm/serialization/json/serialize.d.ts +12 -0
  575. package/dist/esm/serialization/json/serialize.d.ts.map +1 -0
  576. package/dist/esm/serialization/json/serialize.js +34 -0
  577. package/dist/esm/serialization/json/serialize.js.map +1 -0
  578. package/dist/esm/serialization/pluralize-config.d.ts +3 -0
  579. package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
  580. package/dist/esm/serialization/pluralize-config.js +7 -0
  581. package/dist/esm/serialization/pluralize-config.js.map +1 -0
  582. package/dist/esm/serialization/symbol-map.d.ts +10 -0
  583. package/dist/esm/serialization/symbol-map.d.ts.map +1 -0
  584. package/dist/esm/serialization/symbol-map.js +40 -0
  585. package/dist/esm/serialization/symbol-map.js.map +1 -0
  586. package/dist/esm/shape/shape-registry.d.ts +51 -0
  587. package/dist/esm/shape/shape-registry.d.ts.map +1 -0
  588. package/dist/esm/shape/shape-registry.js +41 -0
  589. package/dist/esm/shape/shape-registry.js.map +1 -0
  590. package/dist/esm/shape/shape.d.ts +407 -0
  591. package/dist/esm/shape/shape.d.ts.map +1 -0
  592. package/dist/esm/shape/shape.js +424 -0
  593. package/dist/esm/shape/shape.js.map +1 -0
  594. package/dist/esm/shape/value-encoding.d.ts +121 -0
  595. package/dist/esm/shape/value-encoding.d.ts.map +1 -0
  596. package/dist/esm/shape/value-encoding.js +32 -0
  597. package/dist/esm/shape/value-encoding.js.map +1 -0
  598. package/dist/esm/types.d.ts +9 -0
  599. package/dist/esm/types.d.ts.map +1 -0
  600. package/dist/esm/types.js +4 -0
  601. package/dist/esm/types.js.map +1 -0
  602. package/dist/esm/util.d.ts +33 -0
  603. package/dist/esm/util.d.ts.map +1 -0
  604. package/dist/esm/util.js +74 -0
  605. package/dist/esm/util.js.map +1 -0
  606. package/package.json +92 -27
  607. package/dist/constructs/built-in-resources/resource-group.d.ts.map +0 -1
  608. package/dist/constructs/built-in-resources/resource-group.js.map +0 -1
  609. package/dist/constructs/output.d.ts.map +0 -1
  610. package/dist/constructs/output.js.map +0 -1
  611. package/dist/constructs/parameter.js.map +0 -1
  612. package/dist/constructs/provisioning-component.d.ts.map +0 -1
  613. package/dist/constructs/provisioning-component.js.map +0 -1
  614. package/dist/constructs/resource/resource-proxy.d.ts.map +0 -1
  615. package/dist/constructs/resource/resource-proxy.js.map +0 -1
  616. package/dist/constructs/resource/resource-query.d.ts.map +0 -1
  617. package/dist/constructs/resource/resource-query.js.map +0 -1
  618. package/dist/constructs/resource/resource-registry.d.ts.map +0 -1
  619. package/dist/constructs/resource/resource-registry.js.map +0 -1
  620. package/dist/constructs/resource/resource-relationships.d.ts.map +0 -1
  621. package/dist/constructs/resource/resource-relationships.js.map +0 -1
  622. package/dist/constructs/resource/resource-type-registry.d.ts.map +0 -1
  623. package/dist/constructs/resource/resource-type-registry.js.map +0 -1
  624. package/dist/constructs/resource/resource-utils.d.ts.map +0 -1
  625. package/dist/constructs/resource/resource-utils.js.map +0 -1
  626. package/dist/constructs/resource/resource.d.ts.map +0 -1
  627. package/dist/constructs/resource/resource.js.map +0 -1
  628. package/dist/constructs/stack.d.ts.map +0 -1
  629. package/dist/constructs/stack.js.map +0 -1
  630. package/dist/constructs/variable.d.ts.map +0 -1
  631. package/dist/constructs/variable.js.map +0 -1
  632. package/dist/deployment-context/deployment-context.d.ts.map +0 -1
  633. package/dist/deployment-context/deployment-context.js.map +0 -1
  634. package/dist/expression/ast-nodes.d.ts.map +0 -1
  635. package/dist/expression/ast-nodes.js.map +0 -1
  636. package/dist/expression/expressions.d.ts.map +0 -1
  637. package/dist/expression/expressions.js.map +0 -1
  638. package/dist/expression/utils.d.ts.map +0 -1
  639. package/dist/expression/utils.js.map +0 -1
  640. package/dist/fn.d.ts.map +0 -1
  641. package/dist/fn.js.map +0 -1
  642. package/dist/index.d.ts.map +0 -1
  643. package/dist/index.js.map +0 -1
  644. package/dist/internal-loop.d.ts +0 -14
  645. package/dist/internal-loop.d.ts.map +0 -1
  646. package/dist/internal-loop.js +0 -16
  647. package/dist/internal-loop.js.map +0 -1
  648. package/dist/internal.d.ts.map +0 -1
  649. package/dist/internal.js.map +0 -1
  650. package/dist/naming/name-validation.d.ts.map +0 -1
  651. package/dist/naming/name-validation.js.map +0 -1
  652. package/dist/naming/naming-policy.d.ts.map +0 -1
  653. package/dist/naming/naming-policy.js.map +0 -1
  654. package/dist/naming/naming-rules.d.ts.map +0 -1
  655. package/dist/naming/naming-rules.js.map +0 -1
  656. package/dist/serialization/arm-object-conversion.d.ts.map +0 -1
  657. package/dist/serialization/arm-object-conversion.js.map +0 -1
  658. package/dist/serialization/ast/declaration-builder.d.ts.map +0 -1
  659. package/dist/serialization/ast/declaration-builder.js.map +0 -1
  660. package/dist/serialization/ast/declaration-dependencies.d.ts.map +0 -1
  661. package/dist/serialization/ast/declaration-dependencies.js.map +0 -1
  662. package/dist/serialization/ast/expression-builder.d.ts.map +0 -1
  663. package/dist/serialization/ast/expression-builder.js.map +0 -1
  664. package/dist/serialization/ast/expression-restorer.d.ts.map +0 -1
  665. package/dist/serialization/ast/expression-restorer.js.map +0 -1
  666. package/dist/serialization/ast/expression-rewriter.d.ts.map +0 -1
  667. package/dist/serialization/ast/expression-rewriter.js.map +0 -1
  668. package/dist/serialization/ast/expression-walker.d.ts.map +0 -1
  669. package/dist/serialization/ast/expression-walker.js.map +0 -1
  670. package/dist/serialization/ast/generated/ast.js.map +0 -1
  671. package/dist/serialization/ast/index.d.ts.map +0 -1
  672. package/dist/serialization/ast/index.js.map +0 -1
  673. package/dist/serialization/ast/resource-utils.d.ts.map +0 -1
  674. package/dist/serialization/ast/resource-utils.js.map +0 -1
  675. package/dist/serialization/bicep/file-layout/authored-context.d.ts.map +0 -1
  676. package/dist/serialization/bicep/file-layout/authored-context.js.map +0 -1
  677. package/dist/serialization/bicep/file-layout/bicep-namer.d.ts.map +0 -1
  678. package/dist/serialization/bicep/file-layout/bicep-namer.js.map +0 -1
  679. package/dist/serialization/bicep/file-layout/build-bicep-files.d.ts.map +0 -1
  680. package/dist/serialization/bicep/file-layout/build-bicep-files.js.map +0 -1
  681. package/dist/serialization/bicep/file-layout/deployment-planning.d.ts.map +0 -1
  682. package/dist/serialization/bicep/file-layout/deployment-planning.js.map +0 -1
  683. package/dist/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +0 -1
  684. package/dist/serialization/bicep/file-layout/deployment-resource-utils.js.map +0 -1
  685. package/dist/serialization/bicep/file-layout/file-dependencies.d.ts.map +0 -1
  686. package/dist/serialization/bicep/file-layout/file-dependencies.js.map +0 -1
  687. package/dist/serialization/bicep/file-layout/file-paths.d.ts.map +0 -1
  688. package/dist/serialization/bicep/file-layout/file-paths.js.map +0 -1
  689. package/dist/serialization/bicep/file-layout/file-preparation.d.ts.map +0 -1
  690. package/dist/serialization/bicep/file-layout/file-preparation.js.map +0 -1
  691. package/dist/serialization/bicep/file-layout/reference-wiring.d.ts.map +0 -1
  692. package/dist/serialization/bicep/file-layout/reference-wiring.js.map +0 -1
  693. package/dist/serialization/bicep/index.d.ts.map +0 -1
  694. package/dist/serialization/bicep/index.js.map +0 -1
  695. package/dist/serialization/bicep/render.d.ts.map +0 -1
  696. package/dist/serialization/bicep/render.js.map +0 -1
  697. package/dist/serialization/encoding.d.ts.map +0 -1
  698. package/dist/serialization/encoding.js.map +0 -1
  699. package/dist/serialization/identifiers.d.ts.map +0 -1
  700. package/dist/serialization/identifiers.js.map +0 -1
  701. package/dist/serialization/index.d.ts.map +0 -1
  702. package/dist/serialization/index.js.map +0 -1
  703. package/dist/serialization/json/deserialize.d.ts.map +0 -1
  704. package/dist/serialization/json/deserialize.js.map +0 -1
  705. package/dist/serialization/json/serialize.d.ts.map +0 -1
  706. package/dist/serialization/json/serialize.js.map +0 -1
  707. package/dist/serialization/pluralize-config.d.ts.map +0 -1
  708. package/dist/serialization/pluralize-config.js.map +0 -1
  709. package/dist/serialization/symbol-map.d.ts.map +0 -1
  710. package/dist/serialization/symbol-map.js.map +0 -1
  711. package/dist/shape/shape-registry.d.ts.map +0 -1
  712. package/dist/shape/shape-registry.js.map +0 -1
  713. package/dist/shape/shape.d.ts.map +0 -1
  714. package/dist/shape/shape.js.map +0 -1
  715. package/dist/shape/value-encoding.d.ts.map +0 -1
  716. package/dist/shape/value-encoding.js.map +0 -1
  717. package/dist/tsconfig.tsbuildinfo +0 -1
  718. package/dist/types.d.ts.map +0 -1
  719. package/dist/types.js.map +0 -1
  720. package/dist/util.d.ts.map +0 -1
  721. package/dist/util.js.map +0 -1
  722. /package/dist/{constructs → browser/constructs}/built-in-resources/resource-group.d.ts +0 -0
  723. /package/dist/{constructs → browser/constructs}/output.d.ts +0 -0
  724. /package/dist/{constructs → browser/constructs}/parameter.d.ts +0 -0
  725. /package/dist/{constructs → browser/constructs}/parameter.js +0 -0
  726. /package/dist/{constructs → browser/constructs}/provisioning-component.d.ts +0 -0
  727. /package/dist/{constructs → browser/constructs}/provisioning-component.js +0 -0
  728. /package/dist/{constructs → browser/constructs}/resource/resource-proxy.d.ts +0 -0
  729. /package/dist/{constructs → browser/constructs}/resource/resource-query.d.ts +0 -0
  730. /package/dist/{constructs → browser/constructs}/resource/resource-registry.d.ts +0 -0
  731. /package/dist/{constructs → browser/constructs}/resource/resource-relationships.d.ts +0 -0
  732. /package/dist/{constructs → browser/constructs}/resource/resource-type-registry.d.ts +0 -0
  733. /package/dist/{constructs → browser/constructs}/resource/resource-type-registry.js +0 -0
  734. /package/dist/{constructs → browser/constructs}/resource/resource-utils.d.ts +0 -0
  735. /package/dist/{constructs → browser/constructs}/resource/resource.d.ts +0 -0
  736. /package/dist/{constructs → browser/constructs}/stack.d.ts +0 -0
  737. /package/dist/{constructs → browser/constructs}/stack.js +0 -0
  738. /package/dist/{constructs → browser/constructs}/variable.d.ts +0 -0
  739. /package/dist/{constructs → browser/constructs}/variable.js +0 -0
  740. /package/dist/{deployment-context → browser/deployment-context}/deployment-context.d.ts +0 -0
  741. /package/dist/{deployment-context → browser/deployment-context}/deployment-context.js +0 -0
  742. /package/dist/{expression → browser/expression}/ast-nodes.d.ts +0 -0
  743. /package/dist/{expression → browser/expression}/expressions.d.ts +0 -0
  744. /package/dist/{expression → browser/expression}/utils.d.ts +0 -0
  745. /package/dist/{expression → browser/expression}/utils.js +0 -0
  746. /package/dist/{fn.d.ts → browser/fn.d.ts} +0 -0
  747. /package/dist/{index.d.ts → browser/index.d.ts} +0 -0
  748. /package/dist/{naming → browser/naming}/name-validation.d.ts +0 -0
  749. /package/dist/{naming → browser/naming}/naming-policy.d.ts +0 -0
  750. /package/dist/{naming → browser/naming}/naming-rules.d.ts +0 -0
  751. /package/dist/{naming → browser/naming}/naming-rules.js +0 -0
  752. /package/dist/{serialization → browser/serialization}/arm-object-conversion.d.ts +0 -0
  753. /package/dist/{serialization → browser/serialization}/ast/declaration-builder.d.ts +0 -0
  754. /package/dist/{serialization → browser/serialization}/ast/declaration-dependencies.d.ts +0 -0
  755. /package/dist/{serialization → browser/serialization}/ast/expression-builder.d.ts +0 -0
  756. /package/dist/{serialization → browser/serialization}/ast/expression-restorer.d.ts +0 -0
  757. /package/dist/{serialization → browser/serialization}/ast/expression-rewriter.d.ts +0 -0
  758. /package/dist/{serialization → browser/serialization}/ast/expression-walker.d.ts +0 -0
  759. /package/dist/{serialization → browser/serialization}/ast/expression-walker.js +0 -0
  760. /package/dist/{serialization → browser/serialization}/ast/generated/ast.d.ts +0 -0
  761. /package/dist/{serialization → browser/serialization}/ast/generated/ast.js +0 -0
  762. /package/dist/{serialization → browser/serialization}/ast/index.d.ts +0 -0
  763. /package/dist/{serialization → browser/serialization}/ast/index.js +0 -0
  764. /package/dist/{serialization → browser/serialization}/ast/resource-utils.d.ts +0 -0
  765. /package/dist/{serialization → browser/serialization}/ast/resource-utils.js +0 -0
  766. /package/dist/{serialization → browser/serialization}/bicep/file-layout/authored-context.d.ts +0 -0
  767. /package/dist/{serialization → browser/serialization}/bicep/file-layout/bicep-namer.d.ts +0 -0
  768. /package/dist/{serialization → browser/serialization}/bicep/file-layout/build-bicep-files.d.ts +0 -0
  769. /package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-planning.d.ts +0 -0
  770. /package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-resource-utils.d.ts +0 -0
  771. /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-dependencies.d.ts +0 -0
  772. /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-paths.d.ts +0 -0
  773. /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-preparation.d.ts +0 -0
  774. /package/dist/{serialization → browser/serialization}/bicep/file-layout/reference-wiring.d.ts +0 -0
  775. /package/dist/{serialization → browser/serialization}/bicep/index.d.ts +0 -0
  776. /package/dist/{serialization → browser/serialization}/bicep/index.js +0 -0
  777. /package/dist/{serialization → browser/serialization}/bicep/render.d.ts +0 -0
  778. /package/dist/{serialization → browser/serialization}/encoding.d.ts +0 -0
  779. /package/dist/{serialization → browser/serialization}/identifiers.d.ts +0 -0
  780. /package/dist/{serialization → browser/serialization}/identifiers.js +0 -0
  781. /package/dist/{serialization → browser/serialization}/index.d.ts +0 -0
  782. /package/dist/{serialization → browser/serialization}/index.js +0 -0
  783. /package/dist/{serialization → browser/serialization}/json/deserialize.d.ts +0 -0
  784. /package/dist/{serialization → browser/serialization}/json/serialize.d.ts +0 -0
  785. /package/dist/{serialization → browser/serialization}/pluralize-config.d.ts +0 -0
  786. /package/dist/{serialization → browser/serialization}/pluralize-config.js +0 -0
  787. /package/dist/{serialization → browser/serialization}/symbol-map.d.ts +0 -0
  788. /package/dist/{serialization → browser/serialization}/symbol-map.js +0 -0
  789. /package/dist/{shape → browser/shape}/shape-registry.d.ts +0 -0
  790. /package/dist/{shape → browser/shape}/shape-registry.js +0 -0
  791. /package/dist/{shape → browser/shape}/shape.d.ts +0 -0
  792. /package/dist/{shape → browser/shape}/value-encoding.d.ts +0 -0
  793. /package/dist/{shape → browser/shape}/value-encoding.js +0 -0
  794. /package/dist/{types.d.ts → browser/types.d.ts} +0 -0
  795. /package/dist/{types.js → browser/types.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaration-builder.js","sourceRoot":"","sources":["../../../../src/serialization/ast/declaration-builder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ParameterMetadata } from \"../../constructs/parameter.js\";\nimport type { VariableMetadata } from \"../../constructs/variable.js\";\nimport type { OutputMetadata } from \"../../constructs/output.js\";\nimport type { Stack } from \"../../constructs/stack.js\";\nimport type { Resource, ResourceDeclaration } from \"../../constructs/resource/resource.js\";\nimport {\n STATE_PARENT_INDEX,\n unwrapResourceHandle,\n} from \"../../constructs/resource/resource-proxy.js\";\nimport { definedProps } from \"../../util.js\";\nimport { getShape } from \"../../shape/shape-registry.js\";\nimport { isExpression } from \"../../expression/expressions.js\";\nimport { isExpressionNode } from \"../../expression/ast-nodes.js\";\nimport { isResource, isLoopedResource } from \"../../constructs/resource/resource-utils.js\";\nimport type {\n DeclarableBodyNode,\n DecoratorsNode,\n ExpressionNode,\n InfraNode,\n OutputDeclarationNode,\n ParameterDeclarationNode,\n ResourceDeclarationNode,\n VariableDeclarationNode,\n} from \"./index.js\";\nimport type { DeclarationSymbolMap } from \"../symbol-map.js\";\nimport {\n getArmParent,\n getResourceGroupAncestor,\n getResourceScope,\n} from \"../../constructs/resource/resource-relationships.js\";\nimport { convertToArmObject } from \"../arm-object-conversion.js\";\nimport {\n buildExpressionProperties,\n buildExpression,\n type ExpressionNodeInput,\n} from \"./expression-builder.js\";\n\nconst RESOURCE_RESERVED_KEYS = new Set<string>([\n \"apiVersion\",\n \"existing\",\n \"id\",\n \"name\",\n \"scope\",\n \"type\",\n \"condition\",\n \"dependsOn\",\n STATE_PARENT_INDEX,\n]);\n\nfunction hasNestedResourceHandle(value: unknown): boolean {\n if (isExpression(value) || isExpressionNode(value)) {\n return false;\n }\n\n if (isResource(value)) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.some((item) => hasNestedResourceHandle(item));\n }\n\n if (typeof value === \"object\" && value !== null) {\n return Object.values(value).some((item) => hasNestedResourceHandle(item));\n }\n\n return false;\n}\n\nfunction buildResourceProperties(\n resource: ResourceDeclaration,\n symbolMap: DeclarationSymbolMap,\n): Record<string, ExpressionNode> {\n const rawResource = unwrapResourceHandle(resource as unknown as Resource);\n const properties: Record<string, ExpressionNode> = {\n name: buildExpression(rawResource.name, symbolMap),\n };\n\n const armParent = getArmParent(resource);\n if (armParent !== undefined) {\n const parentId = symbolMap.get(armParent);\n\n if (parentId === undefined) {\n throw new Error(`Missing parent symbol for resource type ${rawResource.type}.`);\n }\n\n const parentNode: ExpressionNode = { kind: \"identifier\", id: parentId };\n // Explicit parent index recorded by `Resource`'s constructor when a\n // child is created with `parent.at(i)` / `parent.current()` as its\n // context. When the child is created under a looped parent without an\n // explicit index (only reachable by unwrapping the raw handle out of a\n // `LoopedResource` — not part of the user-facing API), we emit\n // `parent: parentSym` unchanged; Bicep rejects the resulting\n // `parent: parents` (an array) at validation, producing a loud failure\n // instead of a silently-guessed index variable.\n const parentIndex = (rawResource as unknown as Record<string, unknown>)[STATE_PARENT_INDEX];\n\n if (parentIndex !== undefined) {\n properties.parent = {\n kind: \"array-access\",\n base: parentNode,\n index: buildExpression(parentIndex as ExpressionNodeInput, symbolMap),\n nullish: false,\n fromEnd: false,\n };\n } else {\n properties.parent = parentNode;\n }\n }\n\n // Explicit scope comes from existing lookups or preserved import data.\n const scopeValue = getResourceScope(resource);\n if (scopeValue !== undefined) {\n properties.scope = buildExpression(scopeValue, symbolMap);\n } else if (armParent === undefined) {\n const rgAncestor = getResourceGroupAncestor(resource);\n if (rgAncestor !== undefined) {\n const groupId = symbolMap.get(rgAncestor);\n if (groupId === undefined) {\n throw new Error(\"Resource group not found in symbol map.\");\n }\n properties.scope = {\n kind: \"identifier\",\n id: groupId,\n };\n }\n }\n\n const dependsOn = (rawResource as unknown as Record<string, unknown>)[\"dependsOn\"] as\n readonly ResourceDeclaration[] | undefined;\n if (dependsOn !== undefined) {\n properties.dependsOn = {\n kind: \"array\",\n items: dependsOn.map((dependency) => {\n const identifier = symbolMap.get(dependency);\n if (identifier === undefined) {\n throw new Error(\n \"Dependency not found in symbol map. Ensure it belongs to the same stack.\",\n );\n }\n return { kind: \"identifier\", id: identifier };\n }),\n };\n }\n\n // Build the per-resource custom property bag first, applying ARM-\n // shape lowering (rename/flatten/encode) when a shape is\n // registered for `(type, apiVersion)`. The registry resolves\n // discriminated variants from the instance state. No-op when no\n // shape is registered for this resource type.\n const descriptor =\n typeof rawResource.type === \"string\" && typeof rawResource.apiVersion === \"string\"\n ? getShape(\n rawResource.type,\n rawResource.apiVersion,\n rawResource as unknown as Record<string, unknown>,\n )\n : undefined;\n\n const userProps: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(rawResource)) {\n if (rawResource.existing) continue;\n if (value === undefined || RESOURCE_RESERVED_KEYS.has(key) || hasNestedResourceHandle(value)) {\n continue;\n }\n userProps[key] = value;\n }\n\n const loweredUserProps = descriptor ? convertToArmObject(userProps, descriptor) : userProps;\n\n for (const key of Object.keys(loweredUserProps).sort()) {\n properties[key] = buildExpression(loweredUserProps[key] as ExpressionNodeInput, symbolMap);\n }\n\n return properties;\n}\n\nexport function buildResourceDeclaration(\n resource: ResourceDeclaration,\n symbolMap: DeclarationSymbolMap,\n): [string, ResourceDeclarationNode] {\n const resourceId = symbolMap.get(resource);\n\n if (resourceId === undefined) {\n throw new Error(`Missing synthesized symbol for resource type ${resource.type}.`);\n }\n\n const properties = buildResourceProperties(resource, symbolMap);\n const rawResource = unwrapResourceHandle(resource as unknown as Resource) as unknown as Record<\n string,\n unknown\n >;\n\n const condition =\n rawResource[\"condition\"] !== undefined\n ? buildExpression(rawResource[\"condition\"] as ExpressionNodeInput, symbolMap)\n : undefined;\n\n // Loop metadata lives on `LoopedResource.loop` — a public field on the\n // wrapper subclass. Scalar `Resource` instances don't have one.\n const loopCtx = isLoopedResource(resource) ? resource.loop : undefined;\n\n // Build decorators for the resource (currently only batchSize from forEach)\n const batchSize = loopCtx?.batchSize;\n const decorators = batchSize !== undefined ? { batchSize } : undefined;\n\n // Wrap `value` in `if-condition` / `for-expression` when the resource is\n // guarded / looped. Bicep source order is `for` outer, `if` inner —\n // `[for item in coll: if (cond) { ... }]` — so wrap if-condition first,\n // then for-expression around it.\n let wireValue: DeclarableBodyNode = { kind: \"object\", value: properties };\n if (condition !== undefined) {\n wireValue = { kind: \"if-condition\", condition, body: wireValue };\n }\n if (loopCtx !== undefined) {\n wireValue = {\n kind: \"for-expression\",\n itemVariable: loopCtx.itemVariable,\n ...(loopCtx.indexVariable !== undefined ? { indexVariable: loopCtx.indexVariable } : {}),\n collection: buildExpression(loopCtx.collection as ExpressionNodeInput, symbolMap),\n body: wireValue,\n };\n }\n\n const node: ResourceDeclarationNode = {\n bicepIdentifier: resourceId,\n type: resource.type,\n apiVersion: resource.apiVersion,\n existing: resource.existing ?? false,\n value: wireValue,\n ...(decorators !== undefined ? { decorators } : {}),\n };\n\n return [resourceId, node];\n}\n\nfunction buildDecorators(\n decl: ParameterMetadata | VariableMetadata | OutputMetadata,\n symbolMap: DeclarationSymbolMap,\n): DecoratorsNode | undefined {\n const d: Record<string, unknown> = {};\n\n if (decl.description !== undefined) d.description = decl.description;\n if (\"secure\" in decl && decl.secure) d.secure = true;\n if (\"minValue\" in decl && decl.minValue !== undefined) {\n d.minValue = decl.minValue;\n }\n if (\"maxValue\" in decl && decl.maxValue !== undefined) {\n d.maxValue = decl.maxValue;\n }\n if (\"minLength\" in decl && decl.minLength !== undefined) {\n d.minLength = decl.minLength;\n }\n if (\"maxLength\" in decl && decl.maxLength !== undefined) {\n d.maxLength = decl.maxLength;\n }\n if (\"metadata\" in decl && decl.metadata !== undefined) {\n d.metadata = buildExpressionProperties(\n decl.metadata as {\n readonly [key: string]: ExpressionNodeInput | undefined;\n },\n symbolMap,\n );\n }\n if (\"allowed\" in decl && decl.allowed !== undefined) {\n d.allowed = decl.allowed.map((v) => buildExpression(v as ExpressionNodeInput, symbolMap));\n }\n if (\"discriminator\" in decl && decl.discriminator !== undefined) {\n d.discriminator = decl.discriminator;\n }\n if (\"sealed\" in decl && decl.sealed) d.sealed = true;\n if (\"export\" in decl && decl.export) d.export = true;\n\n return Object.keys(d).length > 0 ? (d as DecoratorsNode) : undefined;\n}\n\nexport function buildParameterDeclarations(\n stack: Stack,\n symbolMap: DeclarationSymbolMap,\n): Record<string, ParameterDeclarationNode> | undefined {\n if (stack.parameters.size === 0) return undefined;\n return Object.fromEntries(\n stack.parameters.listMetadata().map((p) => {\n const identifier = symbolMap.get(p)!;\n const node: ParameterDeclarationNode = definedProps({\n bicepIdentifier: identifier,\n valueType: { kind: \"primitive-type\" as const, name: p.type },\n defaultValue:\n p.defaultValue !== undefined\n ? buildExpression(p.defaultValue as ExpressionNodeInput, symbolMap)\n : undefined,\n decorators: buildDecorators(p, symbolMap),\n });\n return [identifier, node];\n }),\n );\n}\n\nexport function buildVariableDeclarations(\n stack: Stack,\n symbolMap: DeclarationSymbolMap,\n): Record<string, VariableDeclarationNode> | undefined {\n if (stack.variables.size === 0) return undefined;\n return Object.fromEntries(\n stack.variables.listMetadata().map((v) => {\n const identifier = symbolMap.get(v)!;\n const node: VariableDeclarationNode = definedProps({\n bicepIdentifier: identifier,\n value: buildExpression(v.value as ExpressionNodeInput, symbolMap),\n decorators: buildDecorators(v, symbolMap),\n });\n return [identifier, node];\n }),\n );\n}\n\nexport function buildOutputDeclarations(\n stack: Stack,\n symbolMap: DeclarationSymbolMap,\n): Record<string, OutputDeclarationNode> | undefined {\n if (stack.outputs.size === 0) return undefined;\n return Object.fromEntries(\n stack.outputs.list().map((o) => {\n let value: ExpressionNode;\n if (isResource(o.value)) {\n const symbol = symbolMap.get(o.value);\n if (symbol === undefined) {\n throw new Error(`Resource not found in symbol map. Ensure it belongs to the same stack.`);\n }\n\n value = { kind: \"identifier\", id: symbol };\n } else {\n value = buildExpression(o.value as ExpressionNodeInput, symbolMap);\n }\n\n const node: OutputDeclarationNode = definedProps({\n bicepIdentifier: o.name,\n valueType: { kind: \"primitive-type\" as const, name: o.type },\n value,\n decorators: buildDecorators(o, symbolMap),\n });\n return [o.name, node];\n }),\n );\n}\n\nexport function buildStackDeclarations(\n stack: Stack,\n resources: readonly ResourceDeclaration[],\n symbols: DeclarationSymbolMap,\n): Pick<InfraNode, \"parameters\" | \"variables\" | \"resources\" | \"outputs\"> {\n return definedProps({\n parameters: buildParameterDeclarations(stack, symbols),\n variables: buildVariableDeclarations(stack, symbols),\n resources:\n resources.length === 0\n ? undefined\n : Object.fromEntries(\n resources.map((resource) => buildResourceDeclaration(resource, symbols)),\n ),\n outputs: buildOutputDeclarations(stack, symbols),\n });\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaration-dependencies.d.ts","sourceRoot":"","sources":["../../../../src/serialization/ast/declaration-dependencies.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAY,MAAM,YAAY,CAAC;AAG/E,MAAM,MAAM,4BAA4B,GACpC;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAC9B;IACE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;CAC1C,CAAC;AAEN;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,eAAe,GAAG,SAAS,eAAe,EAAE,EACnD,OAAO,CAAC,EAAE,4BAA4B,GACrC,GAAG,CAAC,MAAM,CAAC,CAkBb"}
@@ -37,8 +37,7 @@ function collectDirectDependencies(node) {
37
37
  collectIdentifierIdsFromType(node.valueType, identifiers);
38
38
  }
39
39
  walkDeclarationExpressions(node, (expression, boundIdentifiers) => {
40
- if (expression.kind === "identifier" &&
41
- !boundIdentifiers.has(expression.id)) {
40
+ if (expression.kind === "identifier" && !boundIdentifiers.has(expression.id)) {
42
41
  identifiers.add(expression.id);
43
42
  }
44
43
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaration-dependencies.js","sourceRoot":"","sources":["../../../../src/serialization/ast/declaration-dependencies.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AstDeclarationMap, DeclarationNode, TypeNode } from \"./index.js\";\nimport { walkDeclarationExpressions } from \"./expression-walker.js\";\n\nexport type DeclarationDependencyOptions =\n | { readonly recursive?: false }\n | {\n readonly recursive: true;\n /** Only references present in this emitted-identifier map are followed. */\n readonly declarations: AstDeclarationMap;\n };\n\n/**\n * Collects names referenced by declaration values/defaults, types, and decorators,\n * excluding loop-local identifiers. These are dependencies of the declarations,\n * not declarations that depend on them. By default, only direct names are collected.\n * Recursive mode follows references through the declaration map using a work queue.\n * Each declaration instance is inspected once per call, so cycles terminate without\n * being validated. Names with no resolved declaration remain in the result.\n */\nexport function collectDependenciesForDeclaration(\n input: DeclarationNode | readonly DeclarationNode[],\n options?: DeclarationDependencyOptions,\n): Set<string> {\n const identifiers = new Set<string>();\n const visited = new Set<DeclarationNode>();\n const pending = \"bicepIdentifier\" in input ? [input] : [...input];\n for (let index = 0; index < pending.length; index++) {\n const declaration = pending[index]!;\n if (visited.has(declaration)) continue;\n visited.add(declaration);\n for (const identifier of collectDirectDependencies(declaration)) {\n if (identifiers.has(identifier)) continue;\n identifiers.add(identifier);\n if (options?.recursive === true) {\n const dependency = options.declarations.get(identifier);\n if (dependency !== undefined) pending.push(dependency);\n }\n }\n }\n return identifiers;\n}\n\nfunction collectDirectDependencies(node: DeclarationNode): Set<string> {\n const identifiers = new Set<string>();\n if (\"valueType\" in node) {\n collectIdentifierIdsFromType(node.valueType, identifiers);\n }\n walkDeclarationExpressions(node, (expression, boundIdentifiers) => {\n if (expression.kind === \"identifier\" && !boundIdentifiers.has(expression.id)) {\n identifiers.add(expression.id);\n }\n });\n return identifiers;\n}\n\nfunction collectIdentifierIdsFromType(type: TypeNode, identifiers: Set<string>): void {\n switch (type.kind) {\n case \"type-reference\":\n identifiers.add(type.name);\n return;\n case \"union-type-member\":\n case \"parameterized-type-argument\":\n collectIdentifierIdsFromType(type.valueType, identifiers);\n return;\n case \"array-type\":\n collectIdentifierIdsFromType(type.item, identifiers);\n return;\n case \"object-type-property\":\n case \"object-type-additional-properties\":\n collectIdentifierIdsFromType(type.valueType, identifiers);\n return;\n case \"object-type\":\n for (const property of type.properties) {\n collectIdentifierIdsFromType(property, identifiers);\n }\n if (type.additionalProperties !== undefined) {\n collectIdentifierIdsFromType(type.additionalProperties, identifiers);\n }\n return;\n case \"union-type\":\n for (const member of type.members) {\n collectIdentifierIdsFromType(member.valueType, identifiers);\n }\n return;\n case \"nullable-type\":\n collectIdentifierIdsFromType(type.base, identifiers);\n return;\n case \"parameterized-type-instantiation\":\n collectIdentifierIdsFromType(type.base, identifiers);\n for (const argument of type.args) {\n collectIdentifierIdsFromType(argument.valueType, identifiers);\n }\n return;\n case \"primitive-type\":\n case \"string-type-literal\":\n case \"integer-type-literal\":\n case \"boolean-type-literal\":\n case \"null-type-literal\":\n return;\n default: {\n const exhaustive: never = type;\n throw new Error(`Unsupported type kind: ${(exhaustive as { kind: string }).kind}`);\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-builder.d.ts","sourceRoot":"","sources":["../../../../src/serialization/ast/expression-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,cAAc,IAAI,kBAAkB,EAG1C,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAc,cAAc,EAAuC,MAAM,YAAY,CAAC;AAElG,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,UAAU,CAAC,OAAO,CAAC,GACnB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,mBAAmB,EAAE,GAC9B;IACE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;CACzD,CAAC;AA6HN,4EAA4E;AAC5E,wBAAgB,yBAAyB,CACvC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAA;CAAE,EAClE,SAAS,EAAE,oBAAoB,GAC9B,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAMhC;AA4GD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,CAY7F;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,mBAAmB,EAC1B,SAAS,GAAE,oBAAgC,GAC1C,cAAc,CA6HhB"}
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
3
  import { accessExpressionNode, isExpressionNode, } from "../../expression/ast-nodes.js";
4
- import { isExpression, unwrapExpression, } from "../../expression/expressions.js";
4
+ import { isExpression, unwrapExpression } from "../../expression/expressions.js";
5
5
  // ---------------------------------------------------------------------------
6
6
  // ARM property path expansion
7
7
  // ---------------------------------------------------------------------------
@@ -110,9 +110,7 @@ function buildPlainObject(value, symbolMap) {
110
110
  }
111
111
  /** Builds a property map of expression nodes, omitting undefined values. */
112
112
  export function buildExpressionProperties(value, symbolMap) {
113
- return Object.fromEntries(Object.entries(value).flatMap(([key, propertyValue]) => propertyValue === undefined
114
- ? []
115
- : [[key, buildExpression(propertyValue, symbolMap)]]));
113
+ return Object.fromEntries(Object.entries(value).flatMap(([key, propertyValue]) => propertyValue === undefined ? [] : [[key, buildExpression(propertyValue, symbolMap)]]));
116
114
  }
117
115
  function buildArray(value, symbolMap) {
118
116
  return {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-builder.js","sourceRoot":"","sources":["../../../../src/serialization/ast/expression-builder.ts"],"names":[],"mappings":"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","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"]}
@@ -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"}
@@ -2,7 +2,7 @@
2
2
  // Licensed under the MIT License.
3
3
  import { arrayAccessExpressionNode, functionCallExpressionNode, identifierExpressionNode, instanceFunctionCallExpressionNode, propertyAccessExpressionNode, } from "../../expression/ast-nodes.js";
4
4
  import { isExpression, unwrapExpression, wrapExpression, } from "../../expression/expressions.js";
5
- import { isResource, isLoopedResource, } from "../../constructs/resource/resource-utils.js";
5
+ import { isResource, isLoopedResource } from "../../constructs/resource/resource-utils.js";
6
6
  // ---------------------------------------------------------------------------
7
7
  // Expression restoration: AST -> CDK value
8
8
  // ---------------------------------------------------------------------------
@@ -43,7 +43,9 @@ export function restoreExpression(node, symbols) {
43
43
  const base = restoreExpression(node.base, symbols);
44
44
  if (isResource(base)) {
45
45
  if (node.nullish) {
46
- return wrapExpression(propertyAccessExpressionNode(identifierExpressionNode(base), node.property, { nullish: node.nullish }));
46
+ return wrapExpression(propertyAccessExpressionNode(identifierExpressionNode(base), node.property, {
47
+ nullish: node.nullish,
48
+ }));
47
49
  }
48
50
  return base[node.property];
49
51
  }
@@ -53,7 +55,9 @@ export function restoreExpression(node, symbols) {
53
55
  nullish: node.nullish,
54
56
  }));
55
57
  }
56
- return wrapExpression(propertyAccessExpressionNode(identifierExpressionNode(String(base)), node.property, { nullish: node.nullish }));
58
+ return wrapExpression(propertyAccessExpressionNode(identifierExpressionNode(String(base)), node.property, {
59
+ nullish: node.nullish,
60
+ }));
57
61
  }
58
62
  case "array-access": {
59
63
  const base = restoreExpression(node.base, symbols);
@@ -88,7 +92,10 @@ export function restoreExpression(node, symbols) {
88
92
  // "[object Object]") so re-serialize maps it back to the resource's
89
93
  // symbol. The resulting expression proxy lets an outer `.prop` chain
90
94
  // (e.g. `looped.at(0).id`) render as `sym[idx].prop`.
91
- return wrapExpression(arrayAccessExpressionNode(identifierExpressionNode(base), idx, { nullish: node.nullish, fromEnd: node.fromEnd }));
95
+ return wrapExpression(arrayAccessExpressionNode(identifierExpressionNode(base), idx, {
96
+ nullish: node.nullish,
97
+ fromEnd: node.fromEnd,
98
+ }));
92
99
  }
93
100
  if (isExpression(base)) {
94
101
  const inner = unwrapExpression(base);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-restorer.js","sourceRoot":"","sources":["../../../../src/serialization/ast/expression-restorer.ts"],"names":[],"mappings":"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","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"]}
@@ -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"}
@@ -30,14 +30,11 @@ function getExpressionReference(expression) {
30
30
  export function rewriteExpressionReferences(expression, resolve) {
31
31
  function rewriteItems(items, boundIdentifiers) {
32
32
  const rewritten = items.map((item) => rewrite(item, boundIdentifiers));
33
- return rewritten.every((item, index) => item === items[index])
34
- ? items
35
- : rewritten;
33
+ return rewritten.every((item, index) => item === items[index]) ? items : rewritten;
36
34
  }
37
35
  function rewrite(node, boundIdentifiers) {
38
36
  const reference = getExpressionReference(node);
39
- if (reference !== undefined &&
40
- !boundIdentifiers.has(reference.identifier)) {
37
+ if (reference !== undefined && !boundIdentifiers.has(reference.identifier)) {
41
38
  const replacement = resolve(reference);
42
39
  if (replacement !== undefined)
43
40
  return replacement;
@@ -61,32 +58,22 @@ export function rewriteExpressionReferences(expression, resolve) {
61
58
  case "array-access": {
62
59
  const base = rewrite(node.base, boundIdentifiers);
63
60
  const index = rewrite(node.index, boundIdentifiers);
64
- return base === node.base && index === node.index
65
- ? node
66
- : { ...node, base, index };
61
+ return base === node.base && index === node.index ? node : { ...node, base, index };
67
62
  }
68
63
  case "function-call": {
69
- const target = typeof node.target === "string"
70
- ? node.target
71
- : rewrite(node.target, boundIdentifiers);
64
+ const target = typeof node.target === "string" ? node.target : rewrite(node.target, boundIdentifiers);
72
65
  const args = rewriteItems(node.args, boundIdentifiers);
73
- return target === node.target && args === node.args
74
- ? node
75
- : { ...node, target, args };
66
+ return target === node.target && args === node.args ? node : { ...node, target, args };
76
67
  }
77
68
  case "instance-function-call": {
78
69
  const base = rewrite(node.base, boundIdentifiers);
79
70
  const args = rewriteItems(node.args, boundIdentifiers);
80
- return base === node.base && args === node.args
81
- ? node
82
- : { ...node, base, args };
71
+ return base === node.base && args === node.args ? node : { ...node, base, args };
83
72
  }
84
73
  case "binary-operation": {
85
74
  const left = rewrite(node.left, boundIdentifiers);
86
75
  const right = rewrite(node.right, boundIdentifiers);
87
- return left === node.left && right === node.right
88
- ? node
89
- : { ...node, left, right };
76
+ return left === node.left && right === node.right ? node : { ...node, left, right };
90
77
  }
91
78
  case "unary-operation": {
92
79
  const argument = rewrite(node.argument, boundIdentifiers);
@@ -141,9 +128,7 @@ export function rewriteExpressionReferences(expression, resolve) {
141
128
  }
142
129
  function rewriteArray(items, rewrite) {
143
130
  const rewritten = items.map(rewrite);
144
- return rewritten.every((item, index) => item === items[index])
145
- ? items
146
- : rewritten;
131
+ return rewritten.every((item, index) => item === items[index]) ? items : rewritten;
147
132
  }
148
133
  function rewriteDecorators(decorators, rewriteExpression) {
149
134
  if (decorators === undefined)
@@ -191,8 +176,7 @@ function rewriteType(node, rewriteExpression) {
191
176
  const additionalProperties = node.additionalProperties === undefined
192
177
  ? undefined
193
178
  : rewriteTypeMember(node.additionalProperties, rewriteExpression);
194
- if (properties === node.properties &&
195
- additionalProperties === node.additionalProperties) {
179
+ if (properties === node.properties && additionalProperties === node.additionalProperties) {
196
180
  return node;
197
181
  }
198
182
  return {
@@ -217,9 +201,7 @@ function rewriteType(node, rewriteExpression) {
217
201
  case "parameterized-type-instantiation": {
218
202
  const base = rewriteType(node.base, rewriteExpression);
219
203
  const args = rewriteArray(node.args, (argument) => rewriteTypeMember(argument, rewriteExpression));
220
- return base === node.base && args === node.args
221
- ? node
222
- : { ...node, base, args };
204
+ return base === node.base && args === node.args ? node : { ...node, base, args };
223
205
  }
224
206
  case "primitive-type":
225
207
  case "type-reference":
@@ -243,9 +225,7 @@ export function rewriteDeclarationExpressions(node, rewriteExpression) {
243
225
  value.kind !== "for-expression") {
244
226
  throw new Error(`Rewriting declaration "${node.bicepIdentifier}" produced an invalid resource/module body: "${value.kind}".`);
245
227
  }
246
- const valueType = "valueType" in node
247
- ? rewriteType(node.valueType, rewriteExpression)
248
- : undefined;
228
+ const valueType = "valueType" in node ? rewriteType(node.valueType, rewriteExpression) : undefined;
249
229
  const decorators = rewriteDecorators(node.decorators, rewriteExpression);
250
230
  if (value === node.value &&
251
231
  decorators === node.decorators &&
@@ -259,9 +239,7 @@ export function rewriteDeclarationExpressions(node, rewriteExpression) {
259
239
  ...(decorators === undefined ? {} : { decorators }),
260
240
  };
261
241
  }
262
- const defaultValue = node.defaultValue === undefined
263
- ? undefined
264
- : rewriteExpression(node.defaultValue);
242
+ const defaultValue = node.defaultValue === undefined ? undefined : rewriteExpression(node.defaultValue);
265
243
  const valueType = rewriteType(node.valueType, rewriteExpression);
266
244
  const decorators = rewriteDecorators(node.decorators, rewriteExpression);
267
245
  if (defaultValue === node.defaultValue &&
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-rewriter.js","sourceRoot":"","sources":["../../../../src/serialization/ast/expression-rewriter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n DeclarableBodyNode,\n DeclarationNode,\n DecoratorsNode,\n ExpressionNode,\n ModuleDeclarationNode,\n OutputDeclarationNode,\n ParameterDeclarationNode,\n ResourceDeclarationNode,\n TypeNode,\n VariableDeclarationNode,\n} from \"./index.js\";\n\n/** An identifier-rooted access chain with its static path and original AST node. */\nexport interface ExpressionReference {\n readonly identifier: string;\n readonly path: readonly (string | number)[];\n readonly expression: ExpressionNode;\n}\n\nexport type ExpressionReferenceResolver = (\n reference: ExpressionReference,\n) => ExpressionNode | undefined;\n\nfunction getExpressionReference(expression: ExpressionNode): ExpressionReference | undefined {\n const path: (string | number)[] = [];\n let current = expression;\n for (;;) {\n switch (current.kind) {\n case \"identifier\":\n return { identifier: current.id, path: path.reverse(), expression };\n case \"property-access\":\n path.push(current.property);\n current = current.base;\n break;\n case \"array-access\":\n if (current.index.kind === \"integer\") {\n path.push(parseInt(current.index.value, 10));\n } else if (current.index.kind === \"string\") {\n path.push(current.index.value);\n } else return undefined;\n current = current.base;\n break;\n default:\n return undefined;\n }\n }\n}\n\n/**\n * Replaces identifier access chains, preserving unchanged branches and ignoring\n * loop-local references. The resolver receives the original expression.\n */\nexport function rewriteExpressionReferences(\n expression: DeclarableBodyNode,\n resolve: ExpressionReferenceResolver,\n): DeclarableBodyNode;\nexport function rewriteExpressionReferences(\n expression: ExpressionNode,\n resolve: ExpressionReferenceResolver,\n): ExpressionNode;\nexport function rewriteExpressionReferences(\n expression: ExpressionNode,\n resolve: ExpressionReferenceResolver,\n): ExpressionNode {\n function rewriteItems(\n items: readonly ExpressionNode[],\n boundIdentifiers: ReadonlySet<string>,\n ): readonly ExpressionNode[] {\n const rewritten = items.map((item) => rewrite(item, boundIdentifiers));\n return rewritten.every((item, index) => item === items[index]) ? items : rewritten;\n }\n\n function rewrite(node: ExpressionNode, boundIdentifiers: ReadonlySet<string>): ExpressionNode {\n const reference = getExpressionReference(node);\n if (reference !== undefined && !boundIdentifiers.has(reference.identifier)) {\n const replacement = resolve(reference);\n if (replacement !== undefined) return replacement;\n }\n\n switch (node.kind) {\n case \"object\": {\n const entries = Object.entries(node.value);\n const rewritten = entries.map(\n ([key, value]) => [key, rewrite(value, boundIdentifiers)] as const,\n );\n return rewritten.every(([, value], index) => value === entries[index]![1])\n ? node\n : { ...node, value: Object.fromEntries(rewritten) };\n }\n case \"array\": {\n const items = rewriteItems(node.items, boundIdentifiers);\n return items === node.items ? node : { ...node, items };\n }\n case \"property-access\": {\n const base = rewrite(node.base, boundIdentifiers);\n return base === node.base ? node : { ...node, base };\n }\n case \"array-access\": {\n const base = rewrite(node.base, boundIdentifiers);\n const index = rewrite(node.index, boundIdentifiers);\n return base === node.base && index === node.index ? node : { ...node, base, index };\n }\n case \"function-call\": {\n const target =\n typeof node.target === \"string\" ? node.target : rewrite(node.target, boundIdentifiers);\n const args = rewriteItems(node.args, boundIdentifiers);\n return target === node.target && args === node.args ? node : { ...node, target, args };\n }\n case \"instance-function-call\": {\n const base = rewrite(node.base, boundIdentifiers);\n const args = rewriteItems(node.args, boundIdentifiers);\n return base === node.base && args === node.args ? node : { ...node, base, args };\n }\n case \"binary-operation\": {\n const left = rewrite(node.left, boundIdentifiers);\n const right = rewrite(node.right, boundIdentifiers);\n return left === node.left && right === node.right ? node : { ...node, left, right };\n }\n case \"unary-operation\": {\n const argument = rewrite(node.argument, boundIdentifiers);\n return argument === node.argument ? node : { ...node, argument };\n }\n case \"ternary-operation\": {\n const condition = rewrite(node.condition, boundIdentifiers);\n const trueValue = rewrite(node.trueValue, boundIdentifiers);\n const falseValue = rewrite(node.falseValue, boundIdentifiers);\n return condition === node.condition &&\n trueValue === node.trueValue &&\n falseValue === node.falseValue\n ? node\n : { ...node, condition, trueValue, falseValue };\n }\n case \"if-condition\": {\n const condition = rewrite(node.condition, boundIdentifiers);\n const body = rewrite(node.body, boundIdentifiers);\n return condition === node.condition && body === node.body\n ? node\n : { ...node, condition, body };\n }\n case \"for-expression\": {\n const collection = rewrite(node.collection, boundIdentifiers);\n const loopBindings = new Set(boundIdentifiers);\n loopBindings.add(node.itemVariable);\n if (node.indexVariable !== undefined) {\n loopBindings.add(node.indexVariable);\n }\n const body = rewrite(node.body, loopBindings);\n return collection === node.collection && body === node.body\n ? node\n : { ...node, collection, body };\n }\n case \"interpolated-string\": {\n const segments = rewriteItems(node.segments, boundIdentifiers);\n return segments === node.segments ? node : { ...node, segments };\n }\n case \"identifier\":\n case \"null\":\n case \"boolean\":\n case \"integer\":\n case \"string\":\n return node;\n default: {\n const exhaustive: never = node;\n throw new Error(`Unsupported expression: ${String(exhaustive)}.`);\n }\n }\n }\n\n return rewrite(expression, new Set());\n}\n\ntype ExpressionRewriter = (expression: ExpressionNode) => ExpressionNode;\n\nfunction rewriteArray<T>(items: readonly T[], rewrite: (item: T) => T): readonly T[] {\n const rewritten = items.map(rewrite);\n return rewritten.every((item, index) => item === items[index]) ? items : rewritten;\n}\n\nfunction rewriteDecorators(\n decorators: DecoratorsNode | undefined,\n rewriteExpression: ExpressionRewriter,\n): DecoratorsNode | undefined {\n if (decorators === undefined) return undefined;\n let metadata = decorators.metadata;\n if (metadata !== undefined) {\n const entries = Object.entries(metadata);\n const rewritten = entries.map(([key, value]) => [key, rewriteExpression(value)] as const);\n if (rewritten.some(([, value], index) => value !== entries[index]![1])) {\n metadata = Object.fromEntries(rewritten);\n }\n }\n const allowed =\n decorators.allowed === undefined\n ? undefined\n : rewriteArray(decorators.allowed, rewriteExpression);\n if (metadata === decorators.metadata && allowed === decorators.allowed) {\n return decorators;\n }\n return {\n ...decorators,\n ...(metadata === undefined ? {} : { metadata }),\n ...(allowed === undefined ? {} : { allowed }),\n };\n}\n\nfunction rewriteTypeMember<\n T extends {\n readonly valueType: TypeNode;\n readonly decorators?: DecoratorsNode;\n },\n>(node: T, rewriteExpression: ExpressionRewriter): T {\n const valueType = rewriteType(node.valueType, rewriteExpression);\n const decorators = rewriteDecorators(node.decorators, rewriteExpression);\n if (valueType === node.valueType && decorators === node.decorators) {\n return node;\n }\n return {\n ...node,\n valueType,\n ...(decorators === undefined ? {} : { decorators }),\n };\n}\n\nfunction rewriteType(node: TypeNode, rewriteExpression: ExpressionRewriter): TypeNode {\n switch (node.kind) {\n case \"array-type\": {\n const item = rewriteType(node.item, rewriteExpression);\n return item === node.item ? node : { ...node, item };\n }\n case \"object-type\": {\n const properties = rewriteArray(node.properties, (property) =>\n rewriteTypeMember(property, rewriteExpression),\n );\n const additionalProperties =\n node.additionalProperties === undefined\n ? undefined\n : rewriteTypeMember(node.additionalProperties, rewriteExpression);\n if (properties === node.properties && additionalProperties === node.additionalProperties) {\n return node;\n }\n return {\n ...node,\n properties,\n ...(additionalProperties === undefined ? {} : { additionalProperties }),\n };\n }\n case \"object-type-property\":\n case \"object-type-additional-properties\":\n case \"union-type-member\":\n case \"parameterized-type-argument\":\n return rewriteTypeMember(node, rewriteExpression);\n case \"union-type\": {\n const members = rewriteArray(node.members, (member) =>\n rewriteTypeMember(member, rewriteExpression),\n );\n return members === node.members ? node : { ...node, members };\n }\n case \"nullable-type\": {\n const base = rewriteType(node.base, rewriteExpression);\n return base === node.base ? node : { ...node, base };\n }\n case \"parameterized-type-instantiation\": {\n const base = rewriteType(node.base, rewriteExpression);\n const args = rewriteArray(node.args, (argument) =>\n rewriteTypeMember(argument, rewriteExpression),\n );\n return base === node.base && args === node.args ? node : { ...node, base, args };\n }\n case \"primitive-type\":\n case \"type-reference\":\n case \"string-type-literal\":\n case \"integer-type-literal\":\n case \"boolean-type-literal\":\n case \"null-type-literal\":\n return node;\n default: {\n const exhaustive: never = node;\n throw new Error(`Unsupported type: ${String(exhaustive)}.`);\n }\n }\n}\n\n/**\n * Applies an expression transformation to a declaration's value, default,\n * decorators, and nested type decorators. The callback rewrites each complete\n * expression subtree; recursive expression traversal is its responsibility.\n * Unchanged branches are shared, and the input declaration is not mutated.\n */\nexport function rewriteDeclarationExpressions(\n node: ResourceDeclarationNode,\n rewriteExpression: ExpressionRewriter,\n): ResourceDeclarationNode;\nexport function rewriteDeclarationExpressions(\n node: ModuleDeclarationNode,\n rewriteExpression: ExpressionRewriter,\n): ModuleDeclarationNode;\nexport function rewriteDeclarationExpressions(\n node: OutputDeclarationNode,\n rewriteExpression: ExpressionRewriter,\n): OutputDeclarationNode;\nexport function rewriteDeclarationExpressions(\n node: ParameterDeclarationNode,\n rewriteExpression: ExpressionRewriter,\n): ParameterDeclarationNode;\nexport function rewriteDeclarationExpressions(\n node: VariableDeclarationNode,\n rewriteExpression: ExpressionRewriter,\n): VariableDeclarationNode;\nexport function rewriteDeclarationExpressions(\n node: DeclarationNode,\n rewriteExpression: ExpressionRewriter,\n): DeclarationNode;\nexport function rewriteDeclarationExpressions(\n node: DeclarationNode,\n rewriteExpression: ExpressionRewriter,\n): DeclarationNode {\n if (\"value\" in node) {\n const value = rewriteExpression(node.value);\n if (\n (\"type\" in node || \"path\" in node) &&\n value.kind !== \"object\" &&\n value.kind !== \"if-condition\" &&\n value.kind !== \"for-expression\"\n ) {\n throw new Error(\n `Rewriting declaration \"${node.bicepIdentifier}\" produced an invalid resource/module body: \"${value.kind}\".`,\n );\n }\n const valueType =\n \"valueType\" in node ? rewriteType(node.valueType, rewriteExpression) : undefined;\n const decorators = rewriteDecorators(node.decorators, rewriteExpression);\n if (\n value === node.value &&\n decorators === node.decorators &&\n (!(\"valueType\" in node) || valueType === node.valueType)\n ) {\n return node;\n }\n return {\n ...node,\n value,\n ...(valueType === undefined ? {} : { valueType }),\n ...(decorators === undefined ? {} : { decorators }),\n };\n }\n const defaultValue =\n node.defaultValue === undefined ? undefined : rewriteExpression(node.defaultValue);\n const valueType = rewriteType(node.valueType, rewriteExpression);\n const decorators = rewriteDecorators(node.decorators, rewriteExpression);\n if (\n defaultValue === node.defaultValue &&\n valueType === node.valueType &&\n decorators === node.decorators\n ) {\n return node;\n }\n return {\n ...node,\n valueType,\n ...(defaultValue === undefined ? {} : { defaultValue }),\n ...(decorators === undefined ? {} : { decorators }),\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-walker.d.ts","sourceRoot":"","sources":["../../../../src/serialization/ast/expression-walker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAkB,cAAc,EAAY,MAAM,YAAY,CAAC;AAE5F;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,IAAI,EAAE,cAAc,EACpB,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,KAClC,OAAO,GAAG,IAAI,CAAC;AAEpB,yFAAyF;AACzF,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,qBAAqB,GAC7B,IAAI,CAuEN;AA4DD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,qBAAqB,GAC7B,IAAI,CAUN"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-walker.js","sourceRoot":"","sources":["../../../../src/serialization/ast/expression-walker.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DeclarationNode, DecoratorsNode, ExpressionNode, TypeNode } from \"./index.js\";\n\n/**\n * Inspects a node; returning false skips its children. boundIdentifiers contains\n * item and index names introduced by enclosing loops, local to loop bodies.\n */\nexport type ExpressionNodeVisitor = (\n node: ExpressionNode,\n boundIdentifiers: ReadonlySet<string>,\n) => boolean | void;\n\n/** Visits original expression nodes in preorder without rebuilding or replacing them. */\nexport function walkExpressionNode(\n expression: ExpressionNode,\n visitor: ExpressionNodeVisitor,\n): void {\n function visit(node: ExpressionNode, boundIdentifiers: ReadonlySet<string>): void {\n if (visitor(node, boundIdentifiers) === false) return;\n switch (node.kind) {\n case \"object\":\n for (const value of Object.values(node.value)) {\n visit(value, boundIdentifiers);\n }\n break;\n case \"array\":\n for (const item of node.items) visit(item, boundIdentifiers);\n break;\n case \"property-access\":\n visit(node.base, boundIdentifiers);\n break;\n case \"array-access\":\n visit(node.base, boundIdentifiers);\n visit(node.index, boundIdentifiers);\n break;\n case \"function-call\":\n if (typeof node.target !== \"string\") {\n visit(node.target, boundIdentifiers);\n }\n for (const argument of node.args) visit(argument, boundIdentifiers);\n break;\n case \"instance-function-call\":\n visit(node.base, boundIdentifiers);\n for (const argument of node.args) visit(argument, boundIdentifiers);\n break;\n case \"binary-operation\":\n visit(node.left, boundIdentifiers);\n visit(node.right, boundIdentifiers);\n break;\n case \"unary-operation\":\n visit(node.argument, boundIdentifiers);\n break;\n case \"ternary-operation\":\n visit(node.condition, boundIdentifiers);\n visit(node.trueValue, boundIdentifiers);\n visit(node.falseValue, boundIdentifiers);\n break;\n case \"if-condition\":\n visit(node.condition, boundIdentifiers);\n visit(node.body, boundIdentifiers);\n break;\n case \"for-expression\": {\n visit(node.collection, boundIdentifiers);\n const loopBindings = new Set(boundIdentifiers);\n loopBindings.add(node.itemVariable);\n if (node.indexVariable !== undefined) {\n loopBindings.add(node.indexVariable);\n }\n visit(node.body, loopBindings);\n break;\n }\n case \"interpolated-string\":\n for (const segment of node.segments) visit(segment, boundIdentifiers);\n break;\n case \"identifier\":\n case \"null\":\n case \"boolean\":\n case \"integer\":\n case \"string\":\n break;\n default: {\n const exhaustive: never = node;\n throw new Error(`Unsupported expression: ${String(exhaustive)}.`);\n }\n }\n }\n visit(expression, new Set());\n}\n\nfunction walkDecoratorExpressions(\n decorators: DecoratorsNode | undefined,\n visitor: ExpressionNodeVisitor,\n): void {\n for (const expression of Object.values(decorators?.metadata ?? {})) {\n walkExpressionNode(expression, visitor);\n }\n for (const expression of decorators?.allowed ?? []) {\n walkExpressionNode(expression, visitor);\n }\n}\n\nfunction walkTypeExpressions(type: TypeNode, visitor: ExpressionNodeVisitor): void {\n switch (type.kind) {\n case \"array-type\":\n walkTypeExpressions(type.item, visitor);\n break;\n case \"object-type\":\n for (const property of type.properties) {\n walkTypeExpressions(property, visitor);\n }\n if (type.additionalProperties !== undefined) {\n walkTypeExpressions(type.additionalProperties, visitor);\n }\n break;\n case \"object-type-property\":\n case \"object-type-additional-properties\":\n walkTypeExpressions(type.valueType, visitor);\n walkDecoratorExpressions(type.decorators, visitor);\n break;\n case \"union-type-member\":\n case \"parameterized-type-argument\":\n walkTypeExpressions(type.valueType, visitor);\n break;\n case \"union-type\":\n for (const member of type.members) walkTypeExpressions(member, visitor);\n break;\n case \"nullable-type\":\n walkTypeExpressions(type.base, visitor);\n break;\n case \"parameterized-type-instantiation\":\n walkTypeExpressions(type.base, visitor);\n for (const argument of type.args) walkTypeExpressions(argument, visitor);\n break;\n case \"primitive-type\":\n case \"type-reference\":\n case \"string-type-literal\":\n case \"integer-type-literal\":\n case \"boolean-type-literal\":\n case \"null-type-literal\":\n break;\n default: {\n const exhaustive: never = type;\n throw new Error(`Unsupported type: ${String(exhaustive)}.`);\n }\n }\n}\n\n/**\n * Visits original expressions in a declaration's value/default, nested type\n * decorators, then declaration decorators, without rebuilding or mutating nodes.\n * Each expression is walked in preorder; returning false skips that expression's\n * children. Loop bindings do not carry into other expression roots.\n */\nexport function walkDeclarationExpressions(\n declaration: DeclarationNode,\n visitor: ExpressionNodeVisitor,\n): void {\n if (\"value\" in declaration) {\n walkExpressionNode(declaration.value, visitor);\n } else if (declaration.defaultValue !== undefined) {\n walkExpressionNode(declaration.defaultValue, visitor);\n }\n if (\"valueType\" in declaration) {\n walkTypeExpressions(declaration.valueType, visitor);\n }\n walkDecoratorExpressions(declaration.decorators, visitor);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../../src/serialization/ast/generated/ast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/ast/generated/ast.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,GAAG,QAAQ,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvF;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,GAAG,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,UAAU,GACV,WAAW,GACX,oBAAoB,GACpB,sBAAsB,GACtB,8BAA8B,GAC9B,wBAAwB,GACxB,qBAAqB,GACrB,yBAAyB,GACzB,wBAAwB,GACxB,0BAA0B,GAC1B,qBAAqB,GACrB,aAAa,GACb,4BAA4B,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,qBAAqB,GACrB,sBAAsB,GACtB,sBAAsB,GACtB,mBAAmB,GACnB,aAAa,GACb,sBAAsB,GACtB,kCAAkC,GAClC,cAAc,GACd,mBAAmB,GACnB,aAAa,GACb,gBAAgB,GAChB,6BAA6B,GAC7B,kCAAkC,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,qBAAqB,GAAG,aAAa,CAAC;AAErF;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAOxE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE7E;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC/D;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC7D;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACzD;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC7D;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAChD;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED;;;;GAIG;AACH,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACvD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,kCAAkC,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAClD;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,IAAI,EAAE,kCAAkC,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,6BAA6B,EAAE,CAAC;CACzD;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;CACvC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../../../src/serialization/ast/generated/ast.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAoGlC;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA8C;IAC3E,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * The deployment scope for a Bicep file.\n */\nexport type TargetScope = \"resourceGroup\" | \"subscription\" | \"managementGroup\" | \"tenant\";\n\n/**\n * The set of Bicep primitive type names.\n */\nexport type PrimitiveTypeName = \"any\" | \"array\" | \"bool\" | \"int\" | \"object\" | \"string\";\n\n/**\n * Binary operators supported in Bicep expressions.\n */\nexport type BinaryOperator =\n | \"%\"\n | \"*\"\n | \"+\"\n | \"-\"\n | \"/\"\n | \"<\"\n | \"<=\"\n | \"==\"\n | \"!=\"\n | \"=~\"\n | \"!~\"\n | \">\"\n | \">=\"\n | \"&&\"\n | \"||\"\n | \"??\";\n\n/**\n * Unary operators supported in Bicep expressions.\n */\nexport type UnaryOperator = \"!\" | \"-\";\n\n/**\n * Discriminated union of all expression node types.\n * This includes all ValueNode variants plus expression-specific variants.\n */\nexport type ExpressionNode =\n | NullValue\n | BooleanValue\n | IntegerValue\n | StringValue\n | ArrayValue\n | ObjectValue\n | IdentifierExpression\n | FunctionCallExpression\n | InstanceFunctionCallExpression\n | PropertyAccessExpression\n | ArrayAccessExpression\n | BinaryOperationExpression\n | UnaryOperationExpression\n | TernaryOperationExpression\n | IfConditionExpression\n | ForExpression\n | InterpolatedStringExpression;\n\n/**\n * Discriminated union of all type node kinds.\n */\nexport type TypeNode =\n | PrimitiveTypeNode\n | TypeReferenceNode\n | StringTypeLiteralNode\n | IntegerTypeLiteralNode\n | BooleanTypeLiteralNode\n | NullTypeLiteralNode\n | ArrayTypeNode\n | ObjectTypePropertyNode\n | ObjectTypeAdditionalPropertiesNode\n | ObjectTypeNode\n | UnionTypeMemberNode\n | UnionTypeNode\n | NullableTypeNode\n | ParameterizedTypeArgumentNode\n | ParameterizedTypeInstantiationNode;\n\n/**\n * An object body, optionally guarded by an `if` or produced by a `for`.\n */\nexport type DeclarableBodyNode = ObjectValue | IfConditionExpression | ForExpression;\n\n/**\n * Maps each Bicep primitive type name to its TypeScript authoring value type.\n *\n * Generated from TypeSpec and emitter mappings. Do not edit.\n */\nexport interface PrimitiveTypeMap {\n readonly any: unknown;\n readonly array: readonly unknown[];\n readonly bool: boolean;\n readonly int: number;\n readonly object: Record<string, unknown>;\n readonly string: string;\n}\n\n/**\n * Runtime lookup for PrimitiveTypeName values.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport const primitiveTypeNames: Readonly<Record<PrimitiveTypeName, true>> = {\n any: true,\n array: true,\n bool: true,\n int: true,\n object: true,\n string: true,\n};\n\n/**\n * Checks whether a string is a PrimitiveTypeName value. Generated from\n * TypeSpec. Do not edit.\n */\nexport function isPrimitiveTypeName(value: string): value is PrimitiveTypeName {\n return Object.hasOwn(primitiveTypeNames, value);\n}\n\n/**\n * Represents a single infrastructure unit in the serialization output.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface InfraNode {\n /**\n * The relative file path/name (e.g. \"main.bicep\", \"modules/storage.bicep\").\n */\n readonly fileName: string;\n /**\n * The deployment target scope. Defaults to \"resourceGroup\" if omitted.\n */\n readonly targetScope?: TargetScope;\n /**\n * Parameter declarations, keyed by Bicep identifier.\n */\n readonly parameters?: Record<string, ParameterDeclarationNode>;\n /**\n * Variable declarations, keyed by Bicep identifier.\n */\n readonly variables?: Record<string, VariableDeclarationNode>;\n /**\n * Output declarations, keyed by Bicep identifier.\n */\n readonly outputs?: Record<string, OutputDeclarationNode>;\n /**\n * Resource declarations, keyed by Bicep identifier.\n */\n readonly resources?: Record<string, ResourceDeclarationNode>;\n /**\n * Module declarations, keyed by Bicep identifier.\n */\n readonly modules?: Record<string, ModuleDeclarationNode>;\n}\n\n/**\n * A Bicep parameter declaration.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ParameterDeclarationNode {\n readonly bicepIdentifier: string;\n readonly valueType: TypeNode;\n readonly defaultValue?: ExpressionNode;\n readonly decorators?: DecoratorsNode;\n}\n\n/**\n * A built-in primitive type (e.g. `string`, `int`, `bool`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface PrimitiveTypeNode {\n readonly kind: \"primitive-type\";\n readonly name: PrimitiveTypeName;\n}\n\n/**\n * A reference to a named/user-defined type.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface TypeReferenceNode {\n readonly kind: \"type-reference\";\n readonly name: string;\n}\n\n/**\n * A string literal used as a type (e.g. `'Standard_GRS'`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface StringTypeLiteralNode {\n readonly kind: \"string-type-literal\";\n readonly value: string;\n}\n\n/**\n * An integer literal used as a type.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface IntegerTypeLiteralNode {\n readonly kind: \"integer-type-literal\";\n readonly value: string;\n}\n\n/**\n * A boolean literal used as a type.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface BooleanTypeLiteralNode {\n readonly kind: \"boolean-type-literal\";\n readonly value: boolean;\n}\n\n/**\n * A null literal used as a type.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface NullTypeLiteralNode {\n readonly kind: \"null-type-literal\";\n readonly value: null;\n}\n\n/**\n * An array type (e.g. `string[]`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ArrayTypeNode {\n readonly kind: \"array-type\";\n readonly item: TypeNode;\n}\n\n/**\n * A property within an object type definition.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ObjectTypePropertyNode {\n readonly kind: \"object-type-property\";\n readonly key: string;\n readonly valueType: TypeNode;\n readonly optional?: boolean;\n readonly decorators?: DecoratorsNode;\n}\n\n/**\n * Decorator metadata that can be applied to declarations and type properties.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface DecoratorsNode {\n readonly description?: string;\n readonly secure?: true;\n readonly minValue?: number;\n readonly maxValue?: number;\n readonly minLength?: number;\n readonly maxLength?: number;\n readonly metadata?: Record<string, ExpressionNode>;\n readonly allowed?: readonly ExpressionNode[];\n readonly discriminator?: string;\n readonly sealed?: true;\n readonly export?: true;\n readonly batchSize?: number;\n}\n\n/**\n * A null literal value.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface NullValue {\n readonly kind: \"null\";\n readonly value: null;\n}\n\n/**\n * A boolean literal value.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface BooleanValue {\n readonly kind: \"boolean\";\n readonly value: boolean;\n}\n\n/**\n * An integer literal value.\n * Stored as a string to preserve 64-bit integer fidelity.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface IntegerValue {\n readonly kind: \"integer\";\n readonly value: string;\n}\n\n/**\n * A string literal value.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface StringValue {\n readonly kind: \"string\";\n readonly value: string;\n}\n\n/**\n * An array of expression nodes.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ArrayValue {\n readonly kind: \"array\";\n readonly items: readonly ExpressionNode[];\n}\n\n/**\n * An object with named expression node properties.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ObjectValue {\n readonly kind: \"object\";\n readonly value: Record<string, ExpressionNode>;\n}\n\n/**\n * A reference to a named identifier (variable, parameter, resource, etc.).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface IdentifierExpression {\n readonly kind: \"identifier\";\n readonly id: string;\n}\n\n/**\n * A top-level function call (e.g. `toLower(...)`, `concat(...)`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface FunctionCallExpression {\n readonly kind: \"function-call\";\n /**\n * Function name or an expression that resolves to a callable.\n */\n readonly target: string | ExpressionNode;\n readonly args: readonly ExpressionNode[];\n}\n\n/**\n * An instance method call (e.g. `base.method(...)`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface InstanceFunctionCallExpression {\n readonly kind: \"instance-function-call\";\n readonly base: ExpressionNode;\n readonly name: string;\n readonly args: readonly ExpressionNode[];\n}\n\n/**\n * Property access on an expression (e.g. `base.property` or `base.?property`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface PropertyAccessExpression {\n readonly kind: \"property-access\";\n readonly base: ExpressionNode;\n readonly property: string;\n readonly nullish: boolean;\n}\n\n/**\n * Array/index access on an expression (e.g. `base[index]` or `base[^index]`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ArrayAccessExpression {\n readonly kind: \"array-access\";\n readonly base: ExpressionNode;\n readonly index: ExpressionNode;\n readonly nullish: boolean;\n readonly fromEnd: boolean;\n}\n\n/**\n * A binary operator expression (e.g. `a + b`, `a ?? b`, `a && b`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface BinaryOperationExpression {\n readonly kind: \"binary-operation\";\n readonly operator: BinaryOperator;\n readonly left: ExpressionNode;\n readonly right: ExpressionNode;\n}\n\n/**\n * A unary operator expression (e.g. `!enabled`, `-count`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface UnaryOperationExpression {\n readonly kind: \"unary-operation\";\n readonly operator: UnaryOperator;\n readonly argument: ExpressionNode;\n}\n\n/**\n * A ternary conditional expression (e.g. `condition ? whenTrue : whenFalse`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface TernaryOperationExpression {\n readonly kind: \"ternary-operation\";\n readonly condition: ExpressionNode;\n readonly trueValue: ExpressionNode;\n readonly falseValue: ExpressionNode;\n}\n\n/**\n * A conditional expression block (e.g. `if (enabled) { ... }`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface IfConditionExpression {\n readonly kind: \"if-condition\";\n readonly condition: ExpressionNode;\n readonly body: ExpressionNode;\n}\n\n/**\n * A `for` expression (e.g. `[for item in items: { ... }]`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ForExpression {\n readonly kind: \"for-expression\";\n readonly itemVariable: string;\n readonly indexVariable?: string;\n readonly collection: ExpressionNode;\n readonly body: ExpressionNode;\n}\n\n/**\n * An interpolated string expression (e.g. `'prefix${expr}suffix'`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface InterpolatedStringExpression {\n readonly kind: \"interpolated-string\";\n readonly segments: readonly ExpressionNode[];\n}\n\n/**\n * The additional-properties clause of an object type (`*: T`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ObjectTypeAdditionalPropertiesNode {\n readonly kind: \"object-type-additional-properties\";\n readonly valueType: TypeNode;\n readonly decorators?: DecoratorsNode;\n}\n\n/**\n * An object type with named properties and optional additional properties.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ObjectTypeNode {\n readonly kind: \"object-type\";\n readonly properties: readonly ObjectTypePropertyNode[];\n readonly additionalProperties?: ObjectTypeAdditionalPropertiesNode;\n}\n\n/**\n * An individual member in a union type.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface UnionTypeMemberNode {\n readonly kind: \"union-type-member\";\n readonly valueType: TypeNode;\n}\n\n/**\n * A union type (e.g. `string | int`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface UnionTypeNode {\n readonly kind: \"union-type\";\n readonly members: readonly UnionTypeMemberNode[];\n}\n\n/**\n * A nullable type wrapper (e.g. `string?`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface NullableTypeNode {\n readonly kind: \"nullable-type\";\n readonly base: TypeNode;\n}\n\n/**\n * A type argument in a parameterized type instantiation.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ParameterizedTypeArgumentNode {\n readonly kind: \"parameterized-type-argument\";\n readonly valueType: TypeNode;\n}\n\n/**\n * A parameterized type instantiation (e.g. `map<string>`).\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ParameterizedTypeInstantiationNode {\n readonly kind: \"parameterized-type-instantiation\";\n readonly base: TypeNode;\n readonly args: readonly ParameterizedTypeArgumentNode[];\n}\n\n/**\n * A Bicep variable declaration.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface VariableDeclarationNode {\n readonly bicepIdentifier: string;\n readonly value: ExpressionNode;\n readonly decorators?: DecoratorsNode;\n}\n\n/**\n * A Bicep output declaration.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface OutputDeclarationNode {\n readonly bicepIdentifier: string;\n readonly valueType: TypeNode;\n readonly value: ExpressionNode;\n readonly decorators?: DecoratorsNode;\n}\n\n/**\n * A Bicep resource declaration.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ResourceDeclarationNode {\n readonly bicepIdentifier: string;\n /**\n * The Azure resource type (e.g. \"Microsoft.Storage/storageAccounts\").\n */\n readonly type: string;\n /**\n * The API version (e.g. \"2024-01-01\").\n */\n readonly apiVersion: string;\n /**\n * Whether this references an existing resource (`existing` keyword).\n */\n readonly existing: boolean;\n /**\n * The resource body.\n */\n readonly value: DeclarableBodyNode;\n readonly decorators?: DecoratorsNode;\n}\n\n/**\n * A Bicep module declaration.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface ModuleDeclarationNode {\n readonly bicepIdentifier: string;\n /**\n * Relative path to the module file.\n */\n readonly path: string;\n /**\n * The module body.\n */\n readonly value: DeclarableBodyNode;\n readonly decorators?: DecoratorsNode;\n}\n\n/**\n * The root serialization document containing all infra nodes.\n *\n * Generated from TypeSpec. Do not edit.\n */\nexport interface SerializationDocument {\n /**\n * The collection of infra nodes that make up this deployment.\n */\n readonly infras: readonly InfraNode[];\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/serialization/ast/index.ts"],"names":[],"mappings":"AAGA,cAAc,oBAAoB,CAAC;AAEnC,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GACvB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,wBAAwB,GACxB,uBAAuB,CAAC;AAE5B,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/serialization/ast/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,oBAAoB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./generated/ast.js\";\n\nimport type {\n ModuleDeclarationNode,\n OutputDeclarationNode,\n ParameterDeclarationNode,\n ResourceDeclarationNode,\n VariableDeclarationNode,\n} from \"./generated/ast.js\";\n\n/** A declaration whose AST may contain expression and type dependencies. */\nexport type DeclarationNode =\n | ResourceDeclarationNode\n | ModuleDeclarationNode\n | OutputDeclarationNode\n | ParameterDeclarationNode\n | VariableDeclarationNode;\n\n/** Maps emitted identifiers to AST declarations for reference lookup. */\nexport type AstDeclarationMap = ReadonlyMap<string, DeclarationNode>;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-utils.d.ts","sourceRoot":"","sources":["../../../../src/serialization/ast/resource-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3F,iFAAiF;AACjF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,WAAW,GAC7C,kBAAkB,CAgBpB;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAUrE;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,uBAAuB,CAQ9F;AAED,iFAAiF;AACjF,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,uBAAuB,GAChC,MAAM,GAAG,SAAS,CAQpB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-utils.js","sourceRoot":"","sources":["../../../../src/serialization/ast/resource-utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,iFAAiF;AACjF,MAAM,UAAU,kBAAkB,CAChC,IAAwB,EACxB,SAA8C;IAE9C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,cAAc,CAAC;QACpB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc;gBACjC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EACnC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,IAAwB;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACxC,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EACnC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CAAC,QAAiC;IACnE,OAAO;QACL,GAAG,QAAQ;QACX,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACjD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9C,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,8BAA8B,CAC5C,QAAiC;IAEjC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAC5D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACxE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;AAC1F,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DeclarableBodyNode, ObjectValue, ResourceDeclarationNode } from \"./index.js\";\n\n/** Transforms a resource's object body while preserving conditions and loops. */\nexport function updateResourceBody(\n body: DeclarableBodyNode,\n transform: (value: ObjectValue) => ObjectValue,\n): DeclarableBodyNode {\n switch (body.kind) {\n case \"object\":\n return transform(body);\n case \"if-condition\":\n case \"for-expression\": {\n if (\n body.body.kind !== \"object\" &&\n body.body.kind !== \"if-condition\" &&\n body.body.kind !== \"for-expression\"\n ) {\n throw new Error(`Invalid resource body \"${body.body.kind}\".`);\n }\n return { ...body, body: updateResourceBody(body.body, transform) };\n }\n }\n}\n\n/** Gets the object body beneath a resource's condition and loop wrappers. */\nexport function getResourceBody(body: DeclarableBodyNode): ObjectValue {\n if (body.kind === \"object\") return body;\n if (\n body.body.kind !== \"object\" &&\n body.body.kind !== \"if-condition\" &&\n body.body.kind !== \"for-expression\"\n ) {\n throw new Error(`Invalid resource body \"${body.body.kind}\".`);\n }\n return getResourceBody(body.body);\n}\n\n/** Removes the scope field without changing other resource declaration data. */\nexport function removeResourceScope(resource: ResourceDeclarationNode): ResourceDeclarationNode {\n return {\n ...resource,\n value: updateResourceBody(resource.value, (body) => {\n const { scope: _scope, ...rest } = body.value;\n return { ...body, value: rest };\n }),\n };\n}\n\n/** Gets the parent declaration identifier, including indexed parent accesses. */\nexport function getResourceArmParentIdentifier(\n resource: ResourceDeclarationNode,\n): string | undefined {\n const parent = getResourceBody(resource.value).value.parent;\n if (parent === undefined) return undefined;\n if (parent.kind === \"identifier\") return parent.id;\n if (parent.kind === \"array-access\" && parent.base.kind === \"identifier\") {\n return parent.base.id;\n }\n throw new Error(`Unsupported ARM parent expression for \"${resource.bicepIdentifier}\".`);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authored-context.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/authored-context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAMpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,MAAM,WAAW,uBAAuB;IACtC,qEAAqE;IACrE,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,2GAA2G;IAC3G,QAAQ,CAAC,WAAW,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,eAAe,GAAG,MAAM,CAAC;CAChG;AAWD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,mBAAmB,EAAE,GACxC,IAAI,CAcN;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,mBAAmB,EAAE,EACzC,OAAO,EAAE,oBAAoB,GAC5B,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CA4B9C"}
@@ -47,8 +47,7 @@ export function collectAuthoredResourceContexts(resources, symbols) {
47
47
  ? "pass-through-explicit"
48
48
  : getResourceScope(resource) !== undefined
49
49
  ? "existing-explicit"
50
- : getArmParent(resource) === undefined &&
51
- getResourceGroupAncestor(resource) !== undefined
50
+ : getArmParent(resource) === undefined && getResourceGroupAncestor(resource) !== undefined
52
51
  ? "resourceGroup"
53
52
  : "none",
54
53
  });