@azure/provisioning-core 1.0.0-beta.1 → 1.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +49 -10
  3. package/dist/browser/constructs/built-in-resources/resource-group.d.ts +7 -1
  4. package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  5. package/dist/browser/constructs/built-in-resources/resource-group.js +26 -6
  6. package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -1
  7. package/dist/browser/constructs/output.d.ts +1 -1
  8. package/dist/browser/constructs/output.d.ts.map +1 -1
  9. package/dist/browser/constructs/output.js.map +1 -1
  10. package/dist/browser/constructs/parameter.d.ts +1 -1
  11. package/dist/browser/constructs/parameter.d.ts.map +1 -1
  12. package/dist/browser/constructs/parameter.js.map +1 -1
  13. package/dist/browser/constructs/resource/resource-query.d.ts +3 -1
  14. package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -1
  15. package/dist/browser/constructs/resource/resource-query.js +10 -0
  16. package/dist/browser/constructs/resource/resource-query.js.map +1 -1
  17. package/dist/browser/constructs/resource/resource-relationships.d.ts +9 -0
  18. package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
  19. package/dist/browser/constructs/resource/resource-relationships.js +35 -0
  20. package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
  21. package/dist/browser/constructs/resource/resource.d.ts +11 -17
  22. package/dist/browser/constructs/resource/resource.d.ts.map +1 -1
  23. package/dist/browser/constructs/resource/resource.js +70 -28
  24. package/dist/browser/constructs/resource/resource.js.map +1 -1
  25. package/dist/browser/constructs/stack.d.ts +2 -16
  26. package/dist/browser/constructs/stack.d.ts.map +1 -1
  27. package/dist/browser/constructs/stack.js +1 -15
  28. package/dist/browser/constructs/stack.js.map +1 -1
  29. package/dist/browser/expression/ast-nodes.d.ts +1 -1
  30. package/dist/browser/expression/ast-nodes.d.ts.map +1 -1
  31. package/dist/browser/expression/ast-nodes.js.map +1 -1
  32. package/dist/browser/expression/expressions.d.ts +2 -9
  33. package/dist/browser/expression/expressions.d.ts.map +1 -1
  34. package/dist/browser/expression/expressions.js +2 -9
  35. package/dist/browser/expression/expressions.js.map +1 -1
  36. package/dist/browser/expression/utils.d.ts +5 -0
  37. package/dist/browser/expression/utils.d.ts.map +1 -0
  38. package/dist/browser/expression/utils.js +25 -0
  39. package/dist/browser/expression/utils.js.map +1 -0
  40. package/dist/browser/index.d.ts +4 -4
  41. package/dist/browser/index.d.ts.map +1 -1
  42. package/dist/browser/index.js.map +1 -1
  43. package/dist/browser/internal.d.ts +2 -5
  44. package/dist/browser/internal.d.ts.map +1 -1
  45. package/dist/browser/internal.js +1 -3
  46. package/dist/browser/internal.js.map +1 -1
  47. package/dist/browser/naming/name-validation.d.ts +15 -0
  48. package/dist/browser/naming/name-validation.d.ts.map +1 -0
  49. package/dist/browser/naming/name-validation.js +82 -0
  50. package/dist/browser/naming/name-validation.js.map +1 -0
  51. package/dist/browser/naming/naming-policy.d.ts +7 -7
  52. package/dist/browser/naming/naming-policy.d.ts.map +1 -1
  53. package/dist/browser/naming/naming-policy.js +166 -33
  54. package/dist/browser/naming/naming-policy.js.map +1 -1
  55. package/dist/browser/naming/naming-rules.d.ts +12 -11
  56. package/dist/browser/naming/naming-rules.d.ts.map +1 -1
  57. package/dist/browser/naming/naming-rules.js +2 -9
  58. package/dist/browser/naming/naming-rules.js.map +1 -1
  59. package/dist/browser/package.json +1 -1
  60. package/dist/{esm/serialization/json/lower.d.ts → browser/serialization/arm-object-conversion.d.ts} +11 -11
  61. package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
  62. package/dist/{esm/serialization/json/lower.js → browser/serialization/arm-object-conversion.js} +20 -20
  63. package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
  64. package/dist/browser/serialization/ast/declaration-builder.d.ts +10 -0
  65. package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
  66. package/dist/browser/serialization/ast/declaration-builder.js +265 -0
  67. package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
  68. package/dist/browser/serialization/ast/declaration-dependencies.d.ts +18 -0
  69. package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  70. package/dist/browser/serialization/ast/declaration-dependencies.js +96 -0
  71. package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
  72. package/dist/browser/serialization/ast/expression-builder.d.ts +14 -0
  73. package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
  74. package/dist/browser/serialization/ast/expression-builder.js +313 -0
  75. package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
  76. package/dist/browser/serialization/ast/expression-restorer.d.ts +8 -0
  77. package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
  78. package/dist/browser/serialization/ast/expression-restorer.js +162 -0
  79. package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
  80. package/dist/browser/serialization/ast/expression-rewriter.d.ts +29 -0
  81. package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
  82. package/dist/browser/serialization/ast/expression-rewriter.js +257 -0
  83. package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
  84. package/dist/browser/serialization/ast/expression-walker.d.ts +16 -0
  85. package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
  86. package/dist/browser/serialization/ast/expression-walker.js +154 -0
  87. package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
  88. package/dist/browser/serialization/ast/generated/ast.d.ts.map +1 -0
  89. package/dist/browser/serialization/ast/generated/ast.js.map +1 -0
  90. package/dist/browser/serialization/ast/index.d.ts +7 -0
  91. package/dist/browser/serialization/ast/index.d.ts.map +1 -0
  92. package/dist/browser/serialization/ast/index.js.map +1 -0
  93. package/dist/browser/serialization/ast/resource-utils.d.ts +10 -0
  94. package/dist/browser/serialization/ast/resource-utils.d.ts.map +1 -0
  95. package/dist/browser/serialization/ast/resource-utils.js +52 -0
  96. package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
  97. package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  98. package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  99. package/dist/browser/serialization/bicep/file-layout/authored-context.js +57 -0
  100. package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
  101. package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  102. package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  103. package/dist/browser/serialization/bicep/file-layout/bicep-namer.js +100 -0
  104. package/dist/browser/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  105. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  106. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  107. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js +46 -0
  108. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  109. package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  110. package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  111. package/dist/browser/serialization/bicep/file-layout/deployment-planning.js +68 -0
  112. package/dist/browser/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  113. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  114. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  115. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
  116. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  117. package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  118. package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  119. package/dist/browser/serialization/bicep/file-layout/file-dependencies.js +32 -0
  120. package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  121. package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  122. package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  123. package/dist/browser/serialization/bicep/file-layout/file-paths.js +46 -0
  124. package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
  125. package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  126. package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  127. package/dist/browser/serialization/bicep/file-layout/file-preparation.js +140 -0
  128. package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  129. package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  130. package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  131. package/dist/browser/serialization/bicep/file-layout/reference-wiring.js +225 -0
  132. package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  133. package/dist/browser/serialization/bicep/index.d.ts +2 -0
  134. package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
  135. package/dist/browser/serialization/bicep/index.js +4 -0
  136. package/dist/browser/serialization/bicep/index.js.map +1 -0
  137. package/dist/browser/serialization/bicep/render.d.ts +11 -0
  138. package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
  139. package/dist/browser/serialization/bicep/render.js +293 -0
  140. package/dist/browser/serialization/bicep/render.js.map +1 -0
  141. package/dist/browser/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  142. package/dist/browser/serialization/encoding.d.ts.map +1 -0
  143. package/dist/browser/serialization/{json/encoding.js → encoding.js} +2 -12
  144. package/dist/browser/serialization/encoding.js.map +1 -0
  145. package/dist/browser/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  146. package/dist/browser/serialization/identifiers.d.ts.map +1 -0
  147. package/dist/browser/serialization/{json/util.js → identifiers.js} +1 -1
  148. package/dist/browser/serialization/identifiers.js.map +1 -0
  149. package/dist/browser/serialization/index.d.ts +1 -1
  150. package/dist/browser/serialization/index.d.ts.map +1 -1
  151. package/dist/browser/serialization/index.js.map +1 -1
  152. package/dist/browser/serialization/json/deserialize.d.ts.map +1 -1
  153. package/dist/browser/serialization/json/deserialize.js +131 -39
  154. package/dist/browser/serialization/json/deserialize.js.map +1 -1
  155. package/dist/browser/serialization/json/serialize.d.ts +1 -1
  156. package/dist/browser/serialization/json/serialize.d.ts.map +1 -1
  157. package/dist/browser/serialization/json/serialize.js +5 -360
  158. package/dist/browser/serialization/json/serialize.js.map +1 -1
  159. package/dist/browser/serialization/pluralize-config.d.ts.map +1 -0
  160. package/dist/browser/serialization/pluralize-config.js.map +1 -0
  161. package/dist/browser/serialization/symbol-map.d.ts +10 -0
  162. package/dist/browser/serialization/symbol-map.d.ts.map +1 -0
  163. package/dist/browser/serialization/symbol-map.js +40 -0
  164. package/dist/browser/serialization/symbol-map.js.map +1 -0
  165. package/dist/browser/shape/shape.d.ts +4 -4
  166. package/dist/browser/shape/shape.js +2 -2
  167. package/dist/browser/shape/shape.js.map +1 -1
  168. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +7 -1
  169. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  170. package/dist/commonjs/constructs/built-in-resources/resource-group.js +27 -6
  171. package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +2 -2
  172. package/dist/commonjs/constructs/output.d.ts +1 -1
  173. package/dist/commonjs/constructs/output.d.ts.map +1 -1
  174. package/dist/commonjs/constructs/output.js.map +1 -1
  175. package/dist/commonjs/constructs/parameter.d.ts +1 -1
  176. package/dist/commonjs/constructs/parameter.d.ts.map +1 -1
  177. package/dist/commonjs/constructs/parameter.js.map +1 -1
  178. package/dist/commonjs/constructs/resource/resource-query.d.ts +3 -1
  179. package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -1
  180. package/dist/commonjs/constructs/resource/resource-query.js +11 -0
  181. package/dist/commonjs/constructs/resource/resource-query.js.map +2 -2
  182. package/dist/commonjs/constructs/resource/resource-relationships.d.ts +9 -0
  183. package/dist/commonjs/constructs/resource/resource-relationships.d.ts.map +1 -0
  184. package/dist/commonjs/constructs/resource/resource-relationships.js +59 -0
  185. package/dist/commonjs/constructs/resource/resource-relationships.js.map +7 -0
  186. package/dist/commonjs/constructs/resource/resource.d.ts +11 -17
  187. package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -1
  188. package/dist/commonjs/constructs/resource/resource.js +57 -35
  189. package/dist/commonjs/constructs/resource/resource.js.map +2 -2
  190. package/dist/commonjs/constructs/stack.d.ts +2 -16
  191. package/dist/commonjs/constructs/stack.d.ts.map +1 -1
  192. package/dist/commonjs/constructs/stack.js.map +2 -2
  193. package/dist/commonjs/expression/ast-nodes.d.ts +1 -1
  194. package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -1
  195. package/dist/commonjs/expression/ast-nodes.js.map +1 -1
  196. package/dist/commonjs/expression/expressions.d.ts +2 -9
  197. package/dist/commonjs/expression/expressions.d.ts.map +1 -1
  198. package/dist/commonjs/expression/expressions.js.map +2 -2
  199. package/dist/commonjs/expression/utils.d.ts +5 -0
  200. package/dist/commonjs/expression/utils.d.ts.map +1 -0
  201. package/dist/commonjs/expression/utils.js +43 -0
  202. package/dist/commonjs/expression/utils.js.map +7 -0
  203. package/dist/commonjs/index.d.ts +4 -4
  204. package/dist/commonjs/index.d.ts.map +1 -1
  205. package/dist/commonjs/index.js.map +2 -2
  206. package/dist/commonjs/internal.d.ts +2 -5
  207. package/dist/commonjs/internal.d.ts.map +1 -1
  208. package/dist/commonjs/internal.js +3 -9
  209. package/dist/commonjs/internal.js.map +2 -2
  210. package/dist/commonjs/naming/name-validation.d.ts +15 -0
  211. package/dist/commonjs/naming/name-validation.d.ts.map +1 -0
  212. package/dist/commonjs/naming/name-validation.js +74 -0
  213. package/dist/commonjs/naming/name-validation.js.map +7 -0
  214. package/dist/commonjs/naming/naming-policy.d.ts +7 -7
  215. package/dist/commonjs/naming/naming-policy.d.ts.map +1 -1
  216. package/dist/commonjs/naming/naming-policy.js +136 -26
  217. package/dist/commonjs/naming/naming-policy.js.map +2 -2
  218. package/dist/commonjs/naming/naming-rules.d.ts +12 -11
  219. package/dist/commonjs/naming/naming-rules.d.ts.map +1 -1
  220. package/dist/commonjs/naming/naming-rules.js +4 -11
  221. package/dist/commonjs/naming/naming-rules.js.map +2 -2
  222. package/dist/commonjs/package.json +1 -1
  223. package/dist/{browser/serialization/json/lower.d.ts → commonjs/serialization/arm-object-conversion.d.ts} +11 -11
  224. package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
  225. package/dist/commonjs/serialization/{json/lower.js → arm-object-conversion.js} +15 -15
  226. package/dist/commonjs/serialization/arm-object-conversion.js.map +7 -0
  227. package/dist/commonjs/serialization/ast/declaration-builder.d.ts +10 -0
  228. package/dist/commonjs/serialization/ast/declaration-builder.d.ts.map +1 -0
  229. package/dist/commonjs/serialization/ast/declaration-builder.js +274 -0
  230. package/dist/commonjs/serialization/ast/declaration-builder.js.map +7 -0
  231. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts +18 -0
  232. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  233. package/dist/commonjs/serialization/ast/declaration-dependencies.js +109 -0
  234. package/dist/commonjs/serialization/ast/declaration-dependencies.js.map +7 -0
  235. package/dist/commonjs/serialization/ast/expression-builder.d.ts +14 -0
  236. package/dist/commonjs/serialization/ast/expression-builder.d.ts.map +1 -0
  237. package/dist/commonjs/serialization/ast/expression-builder.js +316 -0
  238. package/dist/commonjs/serialization/ast/expression-builder.js.map +7 -0
  239. package/dist/commonjs/serialization/ast/expression-restorer.d.ts +8 -0
  240. package/dist/commonjs/serialization/ast/expression-restorer.d.ts.map +1 -0
  241. package/dist/commonjs/serialization/ast/expression-restorer.js +193 -0
  242. package/dist/commonjs/serialization/ast/expression-restorer.js.map +7 -0
  243. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts +29 -0
  244. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts.map +1 -0
  245. package/dist/commonjs/serialization/ast/expression-rewriter.js +270 -0
  246. package/dist/commonjs/serialization/ast/expression-rewriter.js.map +7 -0
  247. package/dist/commonjs/serialization/ast/expression-walker.d.ts +16 -0
  248. package/dist/commonjs/serialization/ast/expression-walker.d.ts.map +1 -0
  249. package/dist/commonjs/serialization/ast/expression-walker.js +165 -0
  250. package/dist/commonjs/serialization/ast/expression-walker.js.map +7 -0
  251. package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
  252. package/dist/commonjs/serialization/{contract → ast}/generated/ast.js.map +1 -1
  253. package/dist/commonjs/serialization/ast/index.d.ts +7 -0
  254. package/dist/commonjs/serialization/ast/index.d.ts.map +1 -0
  255. package/dist/commonjs/serialization/{contract → ast}/index.js +3 -3
  256. package/dist/commonjs/serialization/ast/index.js.map +7 -0
  257. package/dist/commonjs/serialization/ast/resource-utils.d.ts +10 -0
  258. package/dist/commonjs/serialization/ast/resource-utils.d.ts.map +1 -0
  259. package/dist/commonjs/serialization/ast/resource-utils.js +71 -0
  260. package/dist/commonjs/serialization/ast/resource-utils.js.map +7 -0
  261. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  262. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  263. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js +74 -0
  264. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js.map +7 -0
  265. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  266. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  267. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js +130 -0
  268. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js.map +7 -0
  269. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  270. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  271. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js +71 -0
  272. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js.map +7 -0
  273. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  274. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  275. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js +80 -0
  276. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js.map +7 -0
  277. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  278. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  279. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js +91 -0
  280. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js.map +7 -0
  281. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  282. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  283. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js +57 -0
  284. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js.map +7 -0
  285. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  286. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  287. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js +70 -0
  288. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js.map +7 -0
  289. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  290. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  291. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js +190 -0
  292. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js.map +7 -0
  293. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  294. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  295. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js +241 -0
  296. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js.map +7 -0
  297. package/dist/commonjs/serialization/bicep/index.d.ts +2 -0
  298. package/dist/commonjs/serialization/bicep/index.d.ts.map +1 -0
  299. package/dist/commonjs/serialization/bicep/index.js +28 -0
  300. package/dist/commonjs/serialization/bicep/index.js.map +7 -0
  301. package/dist/commonjs/serialization/bicep/render.d.ts +11 -0
  302. package/dist/commonjs/serialization/bicep/render.d.ts.map +1 -0
  303. package/dist/commonjs/serialization/bicep/render.js +312 -0
  304. package/dist/commonjs/serialization/bicep/render.js.map +7 -0
  305. package/dist/commonjs/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  306. package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
  307. package/dist/commonjs/serialization/{json/encoding.js → encoding.js} +2 -12
  308. package/dist/commonjs/serialization/encoding.js.map +7 -0
  309. package/dist/commonjs/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  310. package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
  311. package/dist/commonjs/serialization/{json/util.js → identifiers.js} +4 -4
  312. package/dist/commonjs/serialization/{json/util.js.map → identifiers.js.map} +1 -1
  313. package/dist/commonjs/serialization/index.d.ts +1 -1
  314. package/dist/commonjs/serialization/index.d.ts.map +1 -1
  315. package/dist/commonjs/serialization/index.js.map +1 -1
  316. package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -1
  317. package/dist/commonjs/serialization/json/deserialize.js +115 -44
  318. package/dist/commonjs/serialization/json/deserialize.js.map +2 -2
  319. package/dist/commonjs/serialization/json/serialize.d.ts +1 -1
  320. package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -1
  321. package/dist/commonjs/serialization/json/serialize.js +6 -308
  322. package/dist/commonjs/serialization/json/serialize.js.map +3 -3
  323. package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
  324. package/dist/commonjs/serialization/{json/pluralize-config.js.map → pluralize-config.js.map} +1 -1
  325. package/dist/commonjs/serialization/symbol-map.d.ts +10 -0
  326. package/dist/commonjs/serialization/symbol-map.d.ts.map +1 -0
  327. package/dist/commonjs/serialization/symbol-map.js +72 -0
  328. package/dist/commonjs/serialization/symbol-map.js.map +7 -0
  329. package/dist/commonjs/shape/shape.d.ts +4 -4
  330. package/dist/commonjs/shape/shape.js.map +1 -1
  331. package/dist/commonjs/tsdoc-metadata.json +1 -1
  332. package/dist/esm/constructs/built-in-resources/resource-group.d.ts +7 -1
  333. package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  334. package/dist/esm/constructs/built-in-resources/resource-group.js +26 -6
  335. package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -1
  336. package/dist/esm/constructs/output.d.ts +1 -1
  337. package/dist/esm/constructs/output.d.ts.map +1 -1
  338. package/dist/esm/constructs/output.js.map +1 -1
  339. package/dist/esm/constructs/parameter.d.ts +1 -1
  340. package/dist/esm/constructs/parameter.d.ts.map +1 -1
  341. package/dist/esm/constructs/parameter.js.map +1 -1
  342. package/dist/esm/constructs/resource/resource-query.d.ts +3 -1
  343. package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -1
  344. package/dist/esm/constructs/resource/resource-query.js +10 -0
  345. package/dist/esm/constructs/resource/resource-query.js.map +1 -1
  346. package/dist/esm/constructs/resource/resource-relationships.d.ts +9 -0
  347. package/dist/esm/constructs/resource/resource-relationships.d.ts.map +1 -0
  348. package/dist/esm/constructs/resource/resource-relationships.js +35 -0
  349. package/dist/esm/constructs/resource/resource-relationships.js.map +1 -0
  350. package/dist/esm/constructs/resource/resource.d.ts +11 -17
  351. package/dist/esm/constructs/resource/resource.d.ts.map +1 -1
  352. package/dist/esm/constructs/resource/resource.js +70 -28
  353. package/dist/esm/constructs/resource/resource.js.map +1 -1
  354. package/dist/esm/constructs/stack.d.ts +2 -16
  355. package/dist/esm/constructs/stack.d.ts.map +1 -1
  356. package/dist/esm/constructs/stack.js +1 -15
  357. package/dist/esm/constructs/stack.js.map +1 -1
  358. package/dist/esm/expression/ast-nodes.d.ts +1 -1
  359. package/dist/esm/expression/ast-nodes.d.ts.map +1 -1
  360. package/dist/esm/expression/ast-nodes.js.map +1 -1
  361. package/dist/esm/expression/expressions.d.ts +2 -9
  362. package/dist/esm/expression/expressions.d.ts.map +1 -1
  363. package/dist/esm/expression/expressions.js +2 -9
  364. package/dist/esm/expression/expressions.js.map +1 -1
  365. package/dist/esm/expression/utils.d.ts +5 -0
  366. package/dist/esm/expression/utils.d.ts.map +1 -0
  367. package/dist/esm/expression/utils.js +25 -0
  368. package/dist/esm/expression/utils.js.map +1 -0
  369. package/dist/esm/index.d.ts +4 -4
  370. package/dist/esm/index.d.ts.map +1 -1
  371. package/dist/esm/index.js.map +1 -1
  372. package/dist/esm/internal.d.ts +2 -5
  373. package/dist/esm/internal.d.ts.map +1 -1
  374. package/dist/esm/internal.js +1 -3
  375. package/dist/esm/internal.js.map +1 -1
  376. package/dist/esm/naming/name-validation.d.ts +15 -0
  377. package/dist/esm/naming/name-validation.d.ts.map +1 -0
  378. package/dist/esm/naming/name-validation.js +82 -0
  379. package/dist/esm/naming/name-validation.js.map +1 -0
  380. package/dist/esm/naming/naming-policy.d.ts +7 -7
  381. package/dist/esm/naming/naming-policy.d.ts.map +1 -1
  382. package/dist/esm/naming/naming-policy.js +166 -33
  383. package/dist/esm/naming/naming-policy.js.map +1 -1
  384. package/dist/esm/naming/naming-rules.d.ts +12 -11
  385. package/dist/esm/naming/naming-rules.d.ts.map +1 -1
  386. package/dist/esm/naming/naming-rules.js +2 -9
  387. package/dist/esm/naming/naming-rules.js.map +1 -1
  388. package/dist/esm/package.json +1 -1
  389. package/dist/{commonjs/serialization/json/lower.d.ts → esm/serialization/arm-object-conversion.d.ts} +11 -11
  390. package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
  391. package/dist/{browser/serialization/json/lower.js → esm/serialization/arm-object-conversion.js} +20 -20
  392. package/dist/esm/serialization/arm-object-conversion.js.map +1 -0
  393. package/dist/esm/serialization/ast/declaration-builder.d.ts +10 -0
  394. package/dist/esm/serialization/ast/declaration-builder.d.ts.map +1 -0
  395. package/dist/esm/serialization/ast/declaration-builder.js +265 -0
  396. package/dist/esm/serialization/ast/declaration-builder.js.map +1 -0
  397. package/dist/esm/serialization/ast/declaration-dependencies.d.ts +18 -0
  398. package/dist/esm/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  399. package/dist/esm/serialization/ast/declaration-dependencies.js +96 -0
  400. package/dist/esm/serialization/ast/declaration-dependencies.js.map +1 -0
  401. package/dist/esm/serialization/ast/expression-builder.d.ts +14 -0
  402. package/dist/esm/serialization/ast/expression-builder.d.ts.map +1 -0
  403. package/dist/esm/serialization/ast/expression-builder.js +313 -0
  404. package/dist/esm/serialization/ast/expression-builder.js.map +1 -0
  405. package/dist/esm/serialization/ast/expression-restorer.d.ts +8 -0
  406. package/dist/esm/serialization/ast/expression-restorer.d.ts.map +1 -0
  407. package/dist/esm/serialization/ast/expression-restorer.js +162 -0
  408. package/dist/esm/serialization/ast/expression-restorer.js.map +1 -0
  409. package/dist/esm/serialization/ast/expression-rewriter.d.ts +29 -0
  410. package/dist/esm/serialization/ast/expression-rewriter.d.ts.map +1 -0
  411. package/dist/esm/serialization/ast/expression-rewriter.js +257 -0
  412. package/dist/esm/serialization/ast/expression-rewriter.js.map +1 -0
  413. package/dist/esm/serialization/ast/expression-walker.d.ts +16 -0
  414. package/dist/esm/serialization/ast/expression-walker.d.ts.map +1 -0
  415. package/dist/esm/serialization/ast/expression-walker.js +154 -0
  416. package/dist/esm/serialization/ast/expression-walker.js.map +1 -0
  417. package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
  418. package/dist/esm/serialization/ast/generated/ast.js.map +1 -0
  419. package/dist/esm/serialization/ast/index.d.ts +7 -0
  420. package/dist/esm/serialization/ast/index.d.ts.map +1 -0
  421. package/dist/esm/serialization/ast/index.js.map +1 -0
  422. package/dist/esm/serialization/ast/resource-utils.d.ts +10 -0
  423. package/dist/esm/serialization/ast/resource-utils.d.ts.map +1 -0
  424. package/dist/esm/serialization/ast/resource-utils.js +52 -0
  425. package/dist/esm/serialization/ast/resource-utils.js.map +1 -0
  426. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  427. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  428. package/dist/esm/serialization/bicep/file-layout/authored-context.js +57 -0
  429. package/dist/esm/serialization/bicep/file-layout/authored-context.js.map +1 -0
  430. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  431. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  432. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js +100 -0
  433. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  434. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  435. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  436. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js +46 -0
  437. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  438. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  439. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  440. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js +68 -0
  441. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  442. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  443. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  444. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
  445. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  446. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  447. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  448. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js +32 -0
  449. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  450. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  451. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  452. package/dist/esm/serialization/bicep/file-layout/file-paths.js +46 -0
  453. package/dist/esm/serialization/bicep/file-layout/file-paths.js.map +1 -0
  454. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  455. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  456. package/dist/esm/serialization/bicep/file-layout/file-preparation.js +140 -0
  457. package/dist/esm/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  458. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  459. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  460. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js +225 -0
  461. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  462. package/dist/esm/serialization/bicep/index.d.ts +2 -0
  463. package/dist/esm/serialization/bicep/index.d.ts.map +1 -0
  464. package/dist/esm/serialization/bicep/index.js +4 -0
  465. package/dist/esm/serialization/bicep/index.js.map +1 -0
  466. package/dist/esm/serialization/bicep/render.d.ts +11 -0
  467. package/dist/esm/serialization/bicep/render.d.ts.map +1 -0
  468. package/dist/esm/serialization/bicep/render.js +293 -0
  469. package/dist/esm/serialization/bicep/render.js.map +1 -0
  470. package/dist/esm/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  471. package/dist/esm/serialization/encoding.d.ts.map +1 -0
  472. package/dist/esm/serialization/{json/encoding.js → encoding.js} +2 -12
  473. package/dist/esm/serialization/encoding.js.map +1 -0
  474. package/dist/esm/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  475. package/dist/esm/serialization/identifiers.d.ts.map +1 -0
  476. package/dist/esm/serialization/{json/util.js → identifiers.js} +1 -1
  477. package/dist/esm/serialization/identifiers.js.map +1 -0
  478. package/dist/esm/serialization/index.d.ts +1 -1
  479. package/dist/esm/serialization/index.d.ts.map +1 -1
  480. package/dist/esm/serialization/index.js.map +1 -1
  481. package/dist/esm/serialization/json/deserialize.d.ts.map +1 -1
  482. package/dist/esm/serialization/json/deserialize.js +131 -39
  483. package/dist/esm/serialization/json/deserialize.js.map +1 -1
  484. package/dist/esm/serialization/json/serialize.d.ts +1 -1
  485. package/dist/esm/serialization/json/serialize.d.ts.map +1 -1
  486. package/dist/esm/serialization/json/serialize.js +5 -360
  487. package/dist/esm/serialization/json/serialize.js.map +1 -1
  488. package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
  489. package/dist/esm/serialization/pluralize-config.js.map +1 -0
  490. package/dist/esm/serialization/symbol-map.d.ts +10 -0
  491. package/dist/esm/serialization/symbol-map.d.ts.map +1 -0
  492. package/dist/esm/serialization/symbol-map.js +40 -0
  493. package/dist/esm/serialization/symbol-map.js.map +1 -0
  494. package/dist/esm/shape/shape.d.ts +4 -4
  495. package/dist/esm/shape/shape.js +2 -2
  496. package/dist/esm/shape/shape.js.map +1 -1
  497. package/package.json +3 -2
  498. package/dist/browser/serialization/contract/generated/ast.d.ts.map +0 -1
  499. package/dist/browser/serialization/contract/generated/ast.js.map +0 -1
  500. package/dist/browser/serialization/contract/index.d.ts +0 -2
  501. package/dist/browser/serialization/contract/index.d.ts.map +0 -1
  502. package/dist/browser/serialization/contract/index.js.map +0 -1
  503. package/dist/browser/serialization/json/encoding.d.ts.map +0 -1
  504. package/dist/browser/serialization/json/encoding.js.map +0 -1
  505. package/dist/browser/serialization/json/expression.d.ts +0 -32
  506. package/dist/browser/serialization/json/expression.d.ts.map +0 -1
  507. package/dist/browser/serialization/json/expression.js +0 -494
  508. package/dist/browser/serialization/json/expression.js.map +0 -1
  509. package/dist/browser/serialization/json/lower.d.ts.map +0 -1
  510. package/dist/browser/serialization/json/lower.js.map +0 -1
  511. package/dist/browser/serialization/json/pluralize-config.d.ts.map +0 -1
  512. package/dist/browser/serialization/json/pluralize-config.js.map +0 -1
  513. package/dist/browser/serialization/json/util.d.ts.map +0 -1
  514. package/dist/browser/serialization/json/util.js.map +0 -1
  515. package/dist/browser/serialization/utils.d.ts +0 -3
  516. package/dist/browser/serialization/utils.d.ts.map +0 -1
  517. package/dist/browser/serialization/utils.js +0 -146
  518. package/dist/browser/serialization/utils.js.map +0 -1
  519. package/dist/commonjs/serialization/contract/generated/ast.d.ts.map +0 -1
  520. package/dist/commonjs/serialization/contract/index.d.ts +0 -2
  521. package/dist/commonjs/serialization/contract/index.d.ts.map +0 -1
  522. package/dist/commonjs/serialization/contract/index.js.map +0 -7
  523. package/dist/commonjs/serialization/json/encoding.d.ts.map +0 -1
  524. package/dist/commonjs/serialization/json/encoding.js.map +0 -7
  525. package/dist/commonjs/serialization/json/expression.d.ts +0 -32
  526. package/dist/commonjs/serialization/json/expression.d.ts.map +0 -1
  527. package/dist/commonjs/serialization/json/expression.js +0 -509
  528. package/dist/commonjs/serialization/json/expression.js.map +0 -7
  529. package/dist/commonjs/serialization/json/lower.d.ts.map +0 -1
  530. package/dist/commonjs/serialization/json/lower.js.map +0 -7
  531. package/dist/commonjs/serialization/json/pluralize-config.d.ts.map +0 -1
  532. package/dist/commonjs/serialization/json/util.d.ts.map +0 -1
  533. package/dist/commonjs/serialization/utils.d.ts +0 -3
  534. package/dist/commonjs/serialization/utils.d.ts.map +0 -1
  535. package/dist/commonjs/serialization/utils.js +0 -169
  536. package/dist/commonjs/serialization/utils.js.map +0 -7
  537. package/dist/esm/serialization/contract/generated/ast.d.ts.map +0 -1
  538. package/dist/esm/serialization/contract/generated/ast.js.map +0 -1
  539. package/dist/esm/serialization/contract/index.d.ts +0 -2
  540. package/dist/esm/serialization/contract/index.d.ts.map +0 -1
  541. package/dist/esm/serialization/contract/index.js.map +0 -1
  542. package/dist/esm/serialization/json/encoding.d.ts.map +0 -1
  543. package/dist/esm/serialization/json/encoding.js.map +0 -1
  544. package/dist/esm/serialization/json/expression.d.ts +0 -32
  545. package/dist/esm/serialization/json/expression.d.ts.map +0 -1
  546. package/dist/esm/serialization/json/expression.js +0 -494
  547. package/dist/esm/serialization/json/expression.js.map +0 -1
  548. package/dist/esm/serialization/json/lower.d.ts.map +0 -1
  549. package/dist/esm/serialization/json/lower.js.map +0 -1
  550. package/dist/esm/serialization/json/pluralize-config.d.ts.map +0 -1
  551. package/dist/esm/serialization/json/pluralize-config.js.map +0 -1
  552. package/dist/esm/serialization/json/util.d.ts.map +0 -1
  553. package/dist/esm/serialization/json/util.js.map +0 -1
  554. package/dist/esm/serialization/utils.d.ts +0 -3
  555. package/dist/esm/serialization/utils.d.ts.map +0 -1
  556. package/dist/esm/serialization/utils.js +0 -146
  557. package/dist/esm/serialization/utils.js.map +0 -1
  558. /package/dist/browser/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  559. /package/dist/browser/serialization/{contract → ast}/generated/ast.js +0 -0
  560. /package/dist/browser/serialization/{contract → ast}/index.js +0 -0
  561. /package/dist/browser/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  562. /package/dist/browser/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
  563. /package/dist/commonjs/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  564. /package/dist/commonjs/serialization/{contract → ast}/generated/ast.js +0 -0
  565. /package/dist/commonjs/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  566. /package/dist/commonjs/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
  567. /package/dist/esm/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  568. /package/dist/esm/serialization/{contract → ast}/generated/ast.js +0 -0
  569. /package/dist/esm/serialization/{contract → ast}/index.js +0 -0
  570. /package/dist/esm/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  571. /package/dist/esm/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/serialization/bicep/render.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n DeclarableBodyNode,\n DecoratorsNode,\n ExpressionNode,\n InfraNode,\n ModuleDeclarationNode,\n OutputDeclarationNode,\n ParameterDeclarationNode,\n ResourceDeclarationNode,\n TypeNode,\n VariableDeclarationNode,\n} from \"../ast/index.js\";\nimport { Stack } from \"../../constructs/stack.js\";\n\nimport { buildBicepFiles } from \"./file-layout/build-bicep-files.js\";\n\nconst PRECEDENCE: Record<string, number> = {\n \"??\": 1,\n \"||\": 2,\n \"&&\": 3,\n \"==\": 4,\n \"!=\": 4,\n \"=~\": 4,\n \"!~\": 4,\n \"<\": 5,\n \"<=\": 5,\n \">\": 5,\n \">=\": 5,\n \"+\": 6,\n \"-\": 6,\n \"*\": 7,\n \"/\": 7,\n \"%\": 7,\n};\n\nconst TERNARY_CONDITION_PRECEDENCE = 0.5;\nconst ACCESS_PRECEDENCE = 9;\n\n/** A generated Bicep source file and its relative output path. */\nexport interface RenderedBicepFile {\n readonly path: string;\n readonly contents: string;\n}\n\n/** Render authored Stacks into Bicep files without writing or deploying them. */\nexport function renderBicepFiles(input: Stack | readonly Stack[]): readonly RenderedBicepFile[] {\n const stacks: readonly Stack[] = Array.isArray(input) ? input : [input];\n if (stacks.length === 0) return [];\n const names = new Set<string>();\n const files = stacks.flatMap((stack) => {\n if (!(stack instanceof Stack)) {\n throw new Error(\n \"Bicep generation requires authored Stacks. Restore supported JSON definitions with deserialize() first.\",\n );\n }\n return buildBicepFiles(stack).map((file) => renderBicepFile(file));\n });\n for (const file of files) {\n if (names.has(file.path)) {\n throw new Error(`Duplicate Bicep file path \"${file.path}\". Give Stacks distinct names.`);\n }\n names.add(file.path);\n }\n return files;\n}\n\nexport function renderBicepFile(file: InfraNode): RenderedBicepFile {\n const sections: string[] = [];\n\n if (file.targetScope !== undefined) {\n sections.push(`targetScope = ${renderStringLiteral(file.targetScope)}`);\n }\n\n sections.push(...renderNamedDeclarations(file.parameters, renderParameter));\n sections.push(...renderNamedDeclarations(file.variables, renderVariable));\n sections.push(...renderNamedDeclarations(file.resources, renderResource));\n sections.push(...renderNamedDeclarations(file.modules, renderModule));\n sections.push(...renderNamedDeclarations(file.outputs, renderOutput));\n\n return {\n path: file.fileName,\n contents: `${sections.filter((section) => section.length > 0).join(\"\\n\\n\")}\\n`,\n };\n}\n\nfunction renderNamedDeclarations<T extends { readonly bicepIdentifier: string }>(\n record: Record<string, T> | undefined,\n render: (name: string, value: T) => string,\n): string[] {\n if (record === undefined) {\n return [];\n }\n\n return Object.values(record).map((value) => render(value.bicepIdentifier, value));\n}\n\nfunction renderDecorators(decorators: DecoratorsNode | undefined): string {\n if (decorators === undefined) {\n return \"\";\n }\n\n const lines: string[] = [];\n\n if (decorators.description !== undefined) {\n lines.push(`@description(${renderStringLiteral(decorators.description)})`);\n }\n if (decorators.secure) lines.push(\"@secure()\");\n if (decorators.minValue !== undefined) {\n lines.push(`@minValue(${decorators.minValue})`);\n }\n if (decorators.maxValue !== undefined) {\n lines.push(`@maxValue(${decorators.maxValue})`);\n }\n if (decorators.minLength !== undefined) {\n lines.push(`@minLength(${decorators.minLength})`);\n }\n if (decorators.maxLength !== undefined) {\n lines.push(`@maxLength(${decorators.maxLength})`);\n }\n if (decorators.metadata !== undefined) {\n const obj: ExpressionNode = { kind: \"object\", value: decorators.metadata };\n lines.push(`@metadata(${renderExpression(obj)})`);\n }\n if (decorators.allowed !== undefined) {\n const arr: ExpressionNode = {\n kind: \"array\",\n items: [...decorators.allowed],\n };\n lines.push(`@allowed(${renderExpression(arr)})`);\n }\n if (decorators.discriminator !== undefined) {\n lines.push(`@discriminator(${renderStringLiteral(decorators.discriminator)})`);\n }\n if (decorators.sealed) lines.push(\"@sealed()\");\n if (decorators.export) lines.push(\"@export()\");\n if (decorators.batchSize !== undefined) {\n lines.push(`@batchSize(${decorators.batchSize})`);\n }\n\n return lines.length > 0 ? `${lines.join(\"\\n\")}\\n` : \"\";\n}\n\nfunction renderParameter(name: string, node: ParameterDeclarationNode): string {\n return `${renderDecorators(node.decorators)}param ${name} ${renderType(node.valueType)}${node.defaultValue === undefined ? \"\" : ` = ${renderExpression(node.defaultValue)}`}`;\n}\n\nfunction renderVariable(name: string, node: VariableDeclarationNode): string {\n return `${renderDecorators(node.decorators)}var ${name} = ${renderExpression(node.value)}`;\n}\n\nfunction renderOutput(name: string, node: OutputDeclarationNode): string {\n return `${renderDecorators(node.decorators)}output ${name} ${renderType(node.valueType)} = ${renderExpression(node.value)}`;\n}\n\nfunction renderResource(name: string, node: ResourceDeclarationNode): string {\n return `${renderDecorators(node.decorators)}resource ${name} ${renderStringLiteral(`${node.type}@${node.apiVersion}`)}${node.existing ? \" existing\" : \"\"} = ${renderDeclarableBody(node.value)}`;\n}\n\nfunction renderModule(name: string, node: ModuleDeclarationNode): string {\n return `${renderDecorators(node.decorators)}module ${name} ${renderStringLiteral(node.path)} = ${renderDeclarableBody(node.value)}`;\n}\n\nfunction renderDeclarableBody(node: DeclarableBodyNode): string {\n switch (node.kind) {\n case \"object\":\n return renderExpression(node);\n case \"if-condition\":\n return `if (${renderExpression(node.condition)}) ${renderExpression(node.body)}`;\n case \"for-expression\":\n return renderExpression(node);\n default:\n return assertNever(node);\n }\n}\n\nfunction renderExpression(node: ExpressionNode, parentPrecedence?: number): string {\n switch (node.kind) {\n case \"null\":\n return \"null\";\n case \"boolean\":\n return node.value ? \"true\" : \"false\";\n case \"integer\":\n return node.value;\n case \"string\":\n return renderStringLiteral(node.value);\n case \"array\":\n if (node.items.length === 0) {\n return \"[]\";\n }\n\n return `[\\n${indent(node.items.map((item) => renderExpression(item)).join(\"\\n\"))}\\n]`;\n case \"object\": {\n const entries = Object.entries(node.value);\n if (entries.length === 0) {\n return \"{}\";\n }\n\n return `{\\n${indent(entries.map(([key, value]) => `${renderPropertyKey(key)}: ${renderExpression(value)}`).join(\"\\n\"))}\\n}`;\n }\n case \"identifier\":\n return node.id;\n case \"function-call\": {\n // Bicep prefers string interpolation over concat() \u2014 transform at render time.\n if (typeof node.target === \"string\" && node.target === \"concat\" && node.args.length > 0) {\n const inner = node.args\n .map((arg) =>\n arg.kind === \"string\" ? escapeStringContent(arg.value) : `\\${${renderExpression(arg)}}`,\n )\n .join(\"\");\n return `'${inner}'`;\n }\n const target = typeof node.target === \"string\" ? node.target : renderExpression(node.target);\n return `${target}(${node.args.map((arg) => renderExpression(arg)).join(\", \")})`;\n }\n case \"instance-function-call\":\n return `${renderExpression(node.base, ACCESS_PRECEDENCE)}.${node.name}(${node.args.map((arg) => renderExpression(arg)).join(\", \")})`;\n case \"property-access\":\n return `${renderExpression(node.base, ACCESS_PRECEDENCE)}${node.nullish ? \".?\" : \".\"}${node.property}`;\n case \"array-access\":\n return `${renderExpression(node.base, ACCESS_PRECEDENCE)}[${node.nullish ? \"?\" : \"\"}${node.fromEnd ? \"^\" : \"\"}${renderExpression(node.index)}]`;\n case \"binary-operation\": {\n const prec = PRECEDENCE[node.operator] ?? 0;\n const inner = `${renderExpression(node.left, prec)} ${node.operator} ${renderExpression(node.right, prec + 0.5)}`;\n return parentPrecedence !== undefined && prec < parentPrecedence ? `(${inner})` : inner;\n }\n case \"unary-operation\": {\n const UNARY_PREC = 8;\n const inner = `${node.operator}${renderExpression(node.argument, UNARY_PREC)}`;\n return parentPrecedence !== undefined && parentPrecedence > UNARY_PREC ? `(${inner})` : inner;\n }\n case \"ternary-operation\": {\n const inner = `${renderExpression(node.condition, TERNARY_CONDITION_PRECEDENCE)} ? ${renderExpression(node.trueValue)} : ${renderExpression(node.falseValue)}`;\n return parentPrecedence !== undefined && parentPrecedence > 0 ? `(${inner})` : inner;\n }\n case \"if-condition\":\n return `if (${renderExpression(node.condition)}) ${renderExpression(node.body)}`;\n case \"for-expression\": {\n const variables =\n node.indexVariable === undefined\n ? node.itemVariable\n : `(${node.itemVariable}, ${node.indexVariable})`;\n return `[for ${variables} in ${renderExpression(node.collection)}: ${renderExpression(node.body)}]`;\n }\n case \"interpolated-string\": {\n const inner = node.segments\n .map((seg) =>\n seg.kind === \"string\" ? escapeStringContent(seg.value) : `\\${${renderExpression(seg)}}`,\n )\n .join(\"\");\n return `'${inner}'`;\n }\n default:\n return assertNever(node);\n }\n}\n\nfunction renderType(node: TypeNode): string {\n switch (node.kind) {\n case \"primitive-type\":\n return node.name;\n case \"type-reference\":\n return node.name;\n case \"string-type-literal\":\n return renderStringLiteral(node.value);\n case \"integer-type-literal\":\n return node.value;\n case \"boolean-type-literal\":\n return node.value ? \"true\" : \"false\";\n case \"null-type-literal\":\n return \"null\";\n case \"array-type\":\n return `${needsParenthesizedArrayItem(node.item) ? `(${renderType(node.item)})` : renderType(node.item)}[]`;\n case \"object-type-property\":\n return `${renderDecorators(node.decorators)}${renderPropertyKey(node.key)}${node.optional ? \"?\" : \"\"}: ${renderType(node.valueType)}`;\n case \"object-type-additional-properties\":\n return `${renderDecorators(node.decorators)}*: ${renderType(node.valueType)}`;\n case \"object-type\": {\n const members = [\n ...node.properties.map((property) => renderType(property)),\n ...(node.additionalProperties === undefined ? [] : [renderType(node.additionalProperties)]),\n ];\n if (members.length === 0) {\n return \"{}\";\n }\n return `{\\n${indent(members.join(\"\\n\"))}\\n}`;\n }\n case \"union-type-member\":\n return renderType(node.valueType);\n case \"union-type\":\n return node.members.map((member) => renderType(member.valueType)).join(\" | \");\n case \"nullable-type\":\n return `${renderType(node.base)}?`;\n case \"parameterized-type-argument\":\n return renderType(node.valueType);\n case \"parameterized-type-instantiation\":\n return `${renderType(node.base)}<${node.args.map((arg) => renderType(arg.valueType)).join(\", \")}>`;\n default:\n return assertNever(node);\n }\n}\n\nfunction needsParenthesizedArrayItem(node: TypeNode): boolean {\n switch (node.kind) {\n case \"primitive-type\":\n case \"type-reference\":\n case \"parameterized-type-instantiation\":\n return false;\n default:\n return true;\n }\n}\n\nfunction renderPropertyKey(key: string): string {\n return /^[A-Za-z_][A-Za-z0-9_]*$/u.test(key) ? key : renderStringLiteral(key);\n}\n\nfunction renderStringLiteral(value: string): string {\n return `'${escapeStringContent(value)}'`;\n}\n\nfunction escapeStringContent(value: string): string {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/'/g, \"\\\\'\")\n .replace(/\\$\\{/g, \"\\\\${\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\t/g, \"\\\\t\");\n}\n\nfunction indent(value: string, level = 1): string {\n const prefix = \" \".repeat(level);\n return value\n .split(\"\\n\")\n .map((line) => `${prefix}${line}`)\n .join(\"\\n\");\n}\n\nfunction unsupported(kind: string): Error {\n return new Error(`Unsupported Bicep renderer node kind: ${kind}.`);\n}\n\nfunction assertNever(value: never): never {\n throw unsupported((value as { kind?: string }).kind ?? \"unknown\");\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,4 +1,4 @@
1
- import type { ValueEncodingDescriptor } from "../../shape/value-encoding.js";
1
+ import type { ValueEncodingDescriptor } from "../shape/value-encoding.js";
2
2
  export declare function encodeWireValue(value: unknown, encoding: ValueEncodingDescriptor, path?: readonly string[]): unknown;
3
3
  export declare function decodeWireValue(value: unknown, encoding: ValueEncodingDescriptor, path?: readonly string[]): unknown;
4
4
  //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/serialization/encoding.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAOV,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAEpC,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,uBAAuB,EACjC,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,OAAO,CA8BT;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,uBAAuB,EACjC,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,OAAO,CAiCT"}
@@ -21,8 +21,8 @@ __export(encoding_exports, {
21
21
  encodeWireValue: () => encodeWireValue
22
22
  });
23
23
  module.exports = __toCommonJS(encoding_exports);
24
- var import_ast_nodes = require("../../expression/ast-nodes.js");
25
- var import_expressions = require("../../expression/expressions.js");
24
+ var import_ast_nodes = require("../expression/ast-nodes.js");
25
+ var import_expressions = require("../expression/expressions.js");
26
26
  function encodeWireValue(value, encoding, path = []) {
27
27
  if (value === null || value === void 0) return value;
28
28
  if ((0, import_expressions.isExpression)(value) || (0, import_ast_nodes.isExpressionNode)(value)) return value;
@@ -89,7 +89,6 @@ function encodeDateTimeText(value, encoding, path) {
89
89
  if (encoding.source === "offsetDateTime") {
90
90
  const clientText = requireDateString(value, "rfc3339", path);
91
91
  if (encoding.format === "rfc7231") {
92
- requireWholeSecondDateTime(clientText, path);
93
92
  return new Date(clientText).toUTCString();
94
93
  }
95
94
  return clientText;
@@ -98,9 +97,6 @@ function encodeDateTimeText(value, encoding, path) {
98
97
  }
99
98
  const date = requireDate(value, path);
100
99
  if (encoding.format === "rfc7231") {
101
- if (date.getUTCMilliseconds() !== 0) {
102
- fail(path, "RFC7231 conversion would lose millisecond precision.");
103
- }
104
100
  return date.toUTCString();
105
101
  }
106
102
  return date.toISOString();
@@ -152,12 +148,6 @@ function encodePlainDate(value, path) {
152
148
  }
153
149
  return date.toISOString().slice(0, 10);
154
150
  }
155
- function requireWholeSecondDateTime(value, path) {
156
- const fraction = /\.(\d+)(?:Z|[+-]\d{2}:\d{2})$/.exec(value)?.[1];
157
- if (fraction !== void 0 && /[1-9]/.test(fraction)) {
158
- fail(path, "RFC7231 conversion would lose subsecond precision.");
159
- }
160
- }
161
151
  function requireDateString(value, format, path) {
162
152
  const isValid = format === "rfc3339" ? isValidRfc3339(String(value)) : /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} GMT$/.test(
163
153
  String(value)
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/serialization/encoding.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isExpressionNode } from \"../expression/ast-nodes.js\";\nimport { isExpression } from \"../expression/expressions.js\";\nimport type {\n BytesEncodingDescriptor,\n DateTimeTextEncodingDescriptor,\n IntegerScalarName,\n NumericScalarName,\n NumericStringEncodingDescriptor,\n UnixTimestampEncodingDescriptor,\n ValueEncodingDescriptor,\n} from \"../shape/value-encoding.js\";\n\nexport function encodeWireValue(\n value: unknown,\n encoding: ValueEncodingDescriptor,\n path: readonly string[] = [],\n): unknown {\n if (value === null || value === undefined) return value;\n if (isExpression(value) || isExpressionNode(value)) return value;\n\n switch (encoding.kind) {\n case \"date-time-text\":\n return encodeDateTimeText(value, encoding, path);\n case \"unix-timestamp\":\n return encodeUnixTimestamp(value, encoding, path);\n case \"duration-iso8601\":\n return requireIsoDuration(value, path);\n case \"duration-numeric\":\n return requireInteger(value, encoding.wire.scalar, path);\n case \"bytes\":\n return encodeBytes(value, encoding, path);\n case \"plain-date\":\n return encoding.clientMode === \"wire\"\n ? requirePlainDate(value, path)\n : encodePlainDate(value, path);\n case \"numeric-string\":\n return requireNumericString(value, encoding, path);\n case \"boolean-string\":\n if (encoding.clientMode === \"wire\") {\n return requireBooleanString(value, path);\n }\n if (typeof value !== \"boolean\") {\n fail(path, `Expected a boolean, got ${describe(value)}.`);\n }\n return String(value);\n }\n}\n\nexport function decodeWireValue(\n value: unknown,\n encoding: ValueEncodingDescriptor,\n path: readonly string[] = [],\n): unknown {\n if (value === null || value === undefined) return value;\n if (isExpression(value) || isExpressionNode(value)) return value;\n\n switch (encoding.kind) {\n case \"date-time-text\":\n return decodeDateTimeText(value, encoding, path);\n case \"unix-timestamp\": {\n const seconds = requireInteger(value, encoding.wire.scalar, path);\n if (encoding.clientMode === \"wire\") return seconds;\n const date = new Date(seconds * 1000);\n if (Number.isNaN(date.getTime())) {\n fail(path, \"Unix timestamp is outside the JavaScript Date range.\");\n }\n return date;\n }\n case \"duration-iso8601\":\n return requireIsoDuration(value, path);\n case \"duration-numeric\":\n return requireInteger(value, encoding.wire.scalar, path);\n case \"bytes\":\n return decodeBytes(value, encoding, path);\n case \"plain-date\": {\n const date = requirePlainDate(value, path);\n return encoding.clientMode === \"wire\" ? date : new Date(`${date}T00:00:00.000Z`);\n }\n case \"numeric-string\":\n return requireNumericString(value, encoding, path);\n case \"boolean-string\": {\n const booleanText = requireBooleanString(value, path);\n return encoding.clientMode === \"wire\" ? booleanText : booleanText.toLowerCase() === \"true\";\n }\n }\n}\n\nfunction encodeDateTimeText(\n value: unknown,\n encoding: DateTimeTextEncodingDescriptor,\n path: readonly string[],\n): string {\n if (encoding.clientMode === \"wire\") {\n if (encoding.source === \"offsetDateTime\") {\n const clientText = requireDateString(value, \"rfc3339\", path);\n if (encoding.format === \"rfc7231\") {\n return new Date(clientText).toUTCString();\n }\n return clientText;\n }\n return requireDateString(value, encoding.format, path);\n }\n const date = requireDate(value, path);\n if (encoding.format === \"rfc7231\") {\n return date.toUTCString();\n }\n return date.toISOString();\n}\n\nfunction decodeDateTimeText(\n value: unknown,\n encoding: DateTimeTextEncodingDescriptor,\n path: readonly string[],\n): unknown {\n const text = requireDateString(value, encoding.format, path);\n if (encoding.source === \"offsetDateTime\") {\n return encoding.format === \"rfc7231\" ? new Date(text).toISOString() : text;\n }\n if (encoding.clientMode === \"wire\") return text;\n return new Date(text);\n}\n\nfunction encodeUnixTimestamp(\n value: unknown,\n encoding: UnixTimestampEncodingDescriptor,\n path: readonly string[],\n): number {\n if (encoding.clientMode === \"wire\") {\n return requireInteger(value, encoding.wire.scalar, path);\n }\n const date = requireDate(value, path);\n if (date.getTime() % 1000 !== 0) {\n fail(path, \"Unix timestamp conversion would lose millisecond precision.\");\n }\n return requireInteger(date.getTime() / 1000, encoding.wire.scalar, path);\n}\n\nfunction encodeBytes(\n value: unknown,\n encoding: BytesEncodingDescriptor,\n path: readonly string[],\n): string {\n if (encoding.clientMode === \"wire\") {\n return requireBase64(value, encoding.format, path);\n }\n if (!(value instanceof Uint8Array)) {\n fail(path, `Expected Uint8Array, got ${describe(value)}.`);\n }\n const base64 = uint8ArrayToBase64(value);\n return encoding.format === \"base64url\" ? base64ToBase64Url(base64) : base64;\n}\n\nfunction decodeBytes(\n value: unknown,\n encoding: BytesEncodingDescriptor,\n path: readonly string[],\n): unknown {\n const text = requireBase64(value, encoding.format, path);\n if (encoding.clientMode === \"wire\") return text;\n const base64 = encoding.format === \"base64url\" ? base64UrlToBase64(text) : text;\n return base64ToUint8Array(base64);\n}\n\nfunction requireDate(value: unknown, path: readonly string[]): Date {\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n fail(path, `Expected a valid Date, got ${describe(value)}.`);\n }\n return value;\n}\n\nfunction encodePlainDate(value: unknown, path: readonly string[]): string {\n const date = requireDate(value, path);\n if (\n date.getUTCHours() !== 0 ||\n date.getUTCMinutes() !== 0 ||\n date.getUTCSeconds() !== 0 ||\n date.getUTCMilliseconds() !== 0\n ) {\n fail(path, \"Plain-date conversion requires UTC midnight.\");\n }\n return date.toISOString().slice(0, 10);\n}\n\nfunction requireDateString(\n value: unknown,\n format: \"rfc3339\" | \"rfc7231\",\n path: readonly string[],\n): string {\n const isValid =\n format === \"rfc3339\"\n ? isValidRfc3339(String(value))\n : /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} GMT$/.test(\n String(value),\n ) &&\n !Number.isNaN(Date.parse(String(value))) &&\n new Date(String(value)).toUTCString() === value;\n if (typeof value !== \"string\" || !isValid) {\n fail(path, `Expected a valid ${format} date string, got ${describe(value)}.`);\n }\n return value;\n}\n\nconst ISO_DURATION =\n /^-?P(?=\\d|T\\d)(?:(?:\\d+(?:\\.\\d+)?Y)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?W)?(?:\\d+(?:\\.\\d+)?D)?)(?:T(?:\\d+(?:\\.\\d+)?H)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?S)?)?$/;\n\nfunction requireIsoDuration(value: unknown, path: readonly string[]): string {\n if (typeof value !== \"string\" || !ISO_DURATION.test(value)) {\n fail(path, `Expected an ISO8601 day/time duration, got ${describe(value)}.`);\n }\n\n return value;\n}\n\nfunction requirePlainDate(value: unknown, path: readonly string[]): string {\n if (\n typeof value !== \"string\" ||\n !/^\\d{4}-\\d{2}-\\d{2}$/.test(value) ||\n Number.isNaN(Date.parse(`${value}T00:00:00.000Z`)) ||\n new Date(`${value}T00:00:00.000Z`).toISOString().slice(0, 10) !== value\n ) {\n fail(path, `Expected a YYYY-MM-DD date, got ${describe(value)}.`);\n }\n return value;\n}\n\nfunction requireInteger(\n value: unknown,\n scalar: IntegerScalarName,\n path: readonly string[],\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n !inIntegerRange(BigInt(value), scalar)\n ) {\n fail(path, `Expected a safe ${scalar} value, got ${describe(value)}.`);\n }\n return value;\n}\n\nconst CANONICAL_NUMBER = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$/;\n\nfunction requireNumericString(\n value: unknown,\n encoding: NumericStringEncodingDescriptor,\n path: readonly string[],\n): string {\n const pattern = encoding.source === \"integer\" ? /^-?(?:0|[1-9]\\d*)$/ : CANONICAL_NUMBER;\n if (typeof value !== \"string\" || !pattern.test(value)) {\n fail(path, `Expected a canonical numeric string, got ${describe(value)}.`);\n }\n if (\n encoding.source === \"integer\"\n ? !inIntegerRange(BigInt(value), encoding.sourceScalar)\n : !inNumericRange(value, encoding.sourceScalar)\n ) {\n fail(path, `Numeric string is outside '${encoding.sourceScalar}' range.`);\n }\n return value;\n}\n\nfunction inNumericRange(value: string, scalar: NumericScalarName): boolean {\n if (scalar === \"numeric\" || scalar === \"decimal\") return true;\n if (scalar === \"decimal128\") {\n const match = /^(-?)(\\d+)(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/.exec(value);\n if (!match) return false;\n const integer = match[2]!;\n const fraction = match[3] ?? \"\";\n const significant = `${integer}${fraction}`.replace(/^0+/u, \"\");\n if (significant.length === 0) return true;\n if (significant.length > 34) return false;\n const exponent = Number(match[4] ?? 0);\n const adjustedExponent = exponent + integer.length - 1;\n return adjustedExponent >= -6176 && adjustedExponent <= 6144;\n }\n\n const number = Number(value);\n if (!Number.isFinite(number)) return false;\n if (scalar === \"float32\") {\n return Math.abs(number) <= 3.4028234663852886e38;\n }\n return true;\n}\n\nconst INTEGER_RANGES: Partial<Record<NumericScalarName, readonly [bigint, bigint]>> = {\n safeint: [BigInt(Number.MIN_SAFE_INTEGER), BigInt(Number.MAX_SAFE_INTEGER)],\n int8: [-128n, 127n],\n uint8: [0n, 255n],\n int16: [-32768n, 32767n],\n uint16: [0n, 65535n],\n int32: [-2147483648n, 2147483647n],\n uint32: [0n, 4294967295n],\n int64: [-9223372036854775808n, 9223372036854775807n],\n uint64: [0n, 18446744073709551615n],\n};\n\nfunction inIntegerRange(value: bigint, scalar: NumericScalarName): boolean {\n const range = INTEGER_RANGES[scalar];\n return range ? value >= range[0] && value <= range[1] : true;\n}\n\nfunction requireBooleanString(value: unknown, path: readonly string[]): string {\n if (value !== \"true\" && value !== \"false\") {\n fail(path, `Expected 'true' or 'false', got ${describe(value)}.`);\n }\n return value;\n}\n\nfunction isValidRfc3339(value: string): boolean {\n const match =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.\\d+)?(?:Z|[+-](\\d{2}):(\\d{2}))$/.exec(\n value,\n );\n if (!match) return false;\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n if (\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > new Date(Date.UTC(year, month, 0)).getUTCDate() ||\n Number(match[4]) > 23 ||\n Number(match[5]) > 59 ||\n Number(match[6]) > 59 ||\n Number(match[7] ?? 0) > 23 ||\n Number(match[8] ?? 0) > 59\n ) {\n return false;\n }\n return !Number.isNaN(Date.parse(value));\n}\n\nfunction requireBase64(\n value: unknown,\n format: \"base64\" | \"base64url\",\n path: readonly string[],\n): string {\n if (typeof value !== \"string\") {\n fail(path, `Expected a ${format} string, got ${describe(value)}.`);\n }\n const pattern =\n format === \"base64\"\n ? /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/\n : /^[A-Za-z0-9_-]*$/;\n if (!pattern.test(value)) {\n fail(path, `Expected a valid ${format} string.`);\n }\n if (format === \"base64url\" && value.length % 4 === 1) {\n fail(path, \"Expected a valid base64url string length.\");\n }\n const base64 = format === \"base64url\" ? base64UrlToBase64(value) : value;\n const canonical =\n format === \"base64url\"\n ? base64ToBase64Url(uint8ArrayToBase64(base64ToUint8Array(base64)))\n : uint8ArrayToBase64(base64ToUint8Array(base64));\n if (canonical !== value) {\n fail(path, `Expected a canonical ${format} string.`);\n }\n return value;\n}\n\nfunction uint8ArrayToBase64(value: Uint8Array): string {\n const chunks: string[] = [];\n const chunkSize = 0x8000;\n for (let offset = 0; offset < value.length; offset += chunkSize) {\n chunks.push(String.fromCharCode(...value.subarray(offset, offset + chunkSize)));\n }\n return btoa(chunks.join(\"\"));\n}\n\nfunction base64ToUint8Array(value: string): Uint8Array {\n const binary = atob(value);\n return Uint8Array.from(binary, (character) => character.charCodeAt(0));\n}\n\nfunction base64ToBase64Url(base64: string): string {\n return base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\n\nfunction base64UrlToBase64(base64url: string): string {\n const padded = base64url + \"=\".repeat((4 - (base64url.length % 4)) % 4);\n return padded.replace(/-/g, \"+\").replace(/_/g, \"/\");\n}\n\nfunction describe(value: unknown): string {\n if (value instanceof Date) return \"Date\";\n if (value instanceof Uint8Array) return \"Uint8Array\";\n return value === null ? \"null\" : typeof value;\n}\n\nfunction fail(path: readonly string[], message: string): never {\n const location = path.length > 0 ? path.join(\".\") : \"<value>\";\n throw new TypeError(`Invalid encoded value at '${location}': ${message}`);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,2 +1,2 @@
1
1
  export declare function sanitizeIdentifier(value: string, fallback?: string): string;
2
- //# sourceMappingURL=util.d.ts.map
2
+ //# sourceMappingURL=identifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../../src/serialization/identifiers.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,GAAG,MAAM,CAmB/E"}
@@ -15,11 +15,11 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var util_exports = {};
19
- __export(util_exports, {
18
+ var identifiers_exports = {};
19
+ __export(identifiers_exports, {
20
20
  sanitizeIdentifier: () => sanitizeIdentifier
21
21
  });
22
- module.exports = __toCommonJS(util_exports);
22
+ module.exports = __toCommonJS(identifiers_exports);
23
23
  function sanitizeIdentifier(value, fallback = "resource") {
24
24
  const words = value.replace(/[^A-Za-z0-9]+/g, " ").trim().split(/\s+/).filter((w) => w.length > 0);
25
25
  if (words.length === 0) {
@@ -34,4 +34,4 @@ function sanitizeIdentifier(value, fallback = "resource") {
34
34
  0 && (module.exports = {
35
35
  sanitizeIdentifier
36
36
  });
37
- //# sourceMappingURL=util.js.map
37
+ //# sourceMappingURL=identifiers.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/serialization/json/util.ts"],
3
+ "sources": ["../../../src/serialization/identifiers.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function sanitizeIdentifier(value: string, fallback = \"resource\"): string {\n const words = value\n .replace(/[^A-Za-z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter((w) => w.length > 0);\n\n if (words.length === 0) {\n return fallback;\n }\n\n const identifier = words\n .map((word, index) =>\n index === 0\n ? word.charAt(0).toLowerCase() + word.slice(1)\n : word.charAt(0).toUpperCase() + word.slice(1),\n )\n .join(\"\");\n return /^[0-9]/.test(identifier) ? `_${identifier}` : identifier;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,SAAS,mBAAmB,OAAe,WAAW,YAAoB;AAC/E,QAAM,QAAQ,MACX,QAAQ,kBAAkB,GAAG,EAC7B,KAAK,EACL,MAAM,KAAK,EACX,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AAE7B,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,MAChB;AAAA,IAAI,CAAC,MAAM,UACV,UAAU,IACN,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,IAC3C,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA,EACjD,EACC,KAAK,EAAE;AACV,SAAO,SAAS,KAAK,UAAU,IAAI,IAAI,UAAU,KAAK;AACxD;",
6
6
  "names": []
@@ -1,4 +1,4 @@
1
1
  export { deserialize, type DeserializeOptions } from "./json/deserialize.js";
2
2
  export { serialize } from "./json/serialize.js";
3
- export type { SerializationDocument } from "./contract/index.js";
3
+ export type { SerializationDocument } from "./ast/index.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/serialization/index.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { deserialize, type DeserializeOptions } from \"./json/deserialize.js\";\nexport { serialize } from \"./json/serialize.js\";\nexport type { SerializationDocument } from \"./contract/index.js\";\n"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { deserialize, type DeserializeOptions } from \"./json/deserialize.js\";\nexport { serialize } from \"./json/serialize.js\";\nexport type { SerializationDocument } from \"./ast/index.js\";\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAqD;AACrD,uBAA0B;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/deserialize.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AA8BlD;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,SAAS,KAAK,EAAE,CAQvF"}
1
+ {"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/deserialize.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAkClD;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,SAAS,KAAK,EAAE,CA6CvF"}
@@ -32,12 +32,28 @@ var import_naming_policy = require("../../naming/naming-policy.js");
32
32
  var import_shape_registry = require("../../shape/shape-registry.js");
33
33
  var import_ast_nodes = require("../../expression/ast-nodes.js");
34
34
  var import_resource_registry = require("../../constructs/resource/resource-registry.js");
35
- var import_contract = require("../contract/index.js");
36
- var import_expression = require("./expression.js");
37
- var import_lower = require("./lower.js");
38
- var import_utils = require("../utils.js");
35
+ var import_ast = require("../ast/index.js");
36
+ var import_expression_restorer = require("../ast/expression-restorer.js");
37
+ var import_arm_object_conversion = require("../arm-object-conversion.js");
38
+ var import_declaration_dependencies = require("../ast/declaration-dependencies.js");
39
+ var import_utils = require("../../expression/utils.js");
39
40
  function deserialize(raw, options) {
40
- const doc = JSON.parse(raw);
41
+ const doc = JSON.parse(raw, (_key, value) => {
42
+ if (typeof value !== "object" || value === null || !("kind" in value) || value.kind !== "contextual-variable" || "bicepIdentifier" in value || "fileName" in value || "infras" in value) {
43
+ return value;
44
+ }
45
+ if (!("context" in value) || typeof value.context !== "string" || !("property" in value) || typeof value.property !== "string") {
46
+ throw new Error(
47
+ "Invalid contextual-variable expression: context and property must be strings."
48
+ );
49
+ }
50
+ return {
51
+ kind: "property-access",
52
+ base: { kind: "function-call", target: value.context, args: [] },
53
+ property: value.property,
54
+ nullish: false
55
+ };
56
+ });
41
57
  if (doc.infras.length === 0) throw new Error("Empty SerializationDocument");
42
58
  if (doc.infras.some((infra) => Object.keys(infra.modules ?? {}).length > 0)) {
43
59
  throw new Error("Module deserialization is not supported.");
@@ -66,7 +82,7 @@ function assertSymbolAvailable(symbols, identifier) {
66
82
  function processParams(file, stackHandle, symbols) {
67
83
  for (const [, p] of Object.entries(file.parameters ?? {})) {
68
84
  assertSymbolAvailable(symbols, p.bicepIdentifier);
69
- if (p.valueType.kind !== "primitive-type" || !(0, import_contract.isPrimitiveTypeName)(p.valueType.name)) {
85
+ if (p.valueType.kind !== "primitive-type" || !(0, import_ast.isPrimitiveTypeName)(p.valueType.name)) {
70
86
  throw new Error(`Parameter "${p.bicepIdentifier}" has an unsupported non-primitive type.`);
71
87
  }
72
88
  const type = p.valueType.name;
@@ -74,11 +90,11 @@ function processParams(file, stackHandle, symbols) {
74
90
  ...p.decorators?.description !== void 0 ? { description: p.decorators.description } : {},
75
91
  ...p.decorators?.secure ? { secure: true } : {},
76
92
  ...p.defaultValue !== void 0 ? {
77
- defaultValue: (0, import_expression.deserializeExpression)(p.defaultValue, /* @__PURE__ */ new Map())
93
+ defaultValue: (0, import_expression_restorer.restoreExpression)(p.defaultValue, /* @__PURE__ */ new Map())
78
94
  } : {},
79
95
  ...p.decorators?.allowed?.length ? {
80
96
  allowed: p.decorators.allowed.map(
81
- (a) => (0, import_expression.deserializeExpression)(a, /* @__PURE__ */ new Map())
97
+ (a) => (0, import_expression_restorer.restoreExpression)(a, /* @__PURE__ */ new Map())
82
98
  )
83
99
  } : {},
84
100
  ...p.decorators?.minValue !== void 0 ? { minValue: p.decorators.minValue } : {},
@@ -89,7 +105,7 @@ function processParams(file, stackHandle, symbols) {
89
105
  metadata: Object.fromEntries(
90
106
  Object.entries(p.decorators.metadata).map(([k, v]) => [
91
107
  k,
92
- (0, import_expression.deserializeExpression)(v, /* @__PURE__ */ new Map())
108
+ (0, import_expression_restorer.restoreExpression)(v, /* @__PURE__ */ new Map())
93
109
  ])
94
110
  )
95
111
  } : {},
@@ -121,7 +137,7 @@ function processDeclarations(file, stackHandle, symbols, options) {
121
137
  const active = /* @__PURE__ */ new Map();
122
138
  function pushDeclaration(declaration) {
123
139
  const { node } = declaration;
124
- const identifiers = (0, import_utils.collectDependenciesForDeclaration)(node);
140
+ const identifiers = (0, import_declaration_dependencies.collectDependenciesForDeclaration)(node);
125
141
  active.set(node.bicepIdentifier, pending.length);
126
142
  pending.push({ declaration, dependencies: identifiers.values() });
127
143
  }
@@ -162,7 +178,7 @@ function processDeclarations(file, stackHandle, symbols, options) {
162
178
  const sym = (0, import_variable.createVariable)(
163
179
  stackHandle,
164
180
  node.bicepIdentifier,
165
- (0, import_expression.deserializeExpression)(node.value, symbols),
181
+ (0, import_expression_restorer.restoreExpression)(node.value, symbols),
166
182
  {
167
183
  ...node.decorators?.description !== void 0 ? { description: node.decorators.description } : {},
168
184
  ...node.decorators?.export ? { export: true } : {}
@@ -178,12 +194,12 @@ function processOutputs(file, stackHandle, symbols) {
178
194
  `Cannot deserialize output "${o.bicepIdentifier}" with non-primitive type "${o.valueType.kind}".`
179
195
  );
180
196
  }
181
- if (!(0, import_contract.isPrimitiveTypeName)(o.valueType.name)) {
197
+ if (!(0, import_ast.isPrimitiveTypeName)(o.valueType.name)) {
182
198
  throw new Error(
183
199
  `Cannot deserialize output "${o.bicepIdentifier}" with unknown primitive type "${o.valueType.name}".`
184
200
  );
185
201
  }
186
- const val = (0, import_expression.deserializeExpression)(o.value, symbols);
202
+ const val = (0, import_expression_restorer.restoreExpression)(o.value, symbols);
187
203
  (0, import_output.createOutput)(stackHandle, o.bicepIdentifier, o.valueType.name, val, {
188
204
  ...o.decorators?.description !== void 0 ? { description: o.decorators.description } : {},
189
205
  ...o.decorators?.secure ? { secure: true } : {},
@@ -195,7 +211,7 @@ function processOutputs(file, stackHandle, symbols) {
195
211
  metadata: Object.fromEntries(
196
212
  Object.entries(o.decorators.metadata).map(([k, v]) => [
197
213
  k,
198
- (0, import_expression.deserializeExpression)(v, symbols)
214
+ (0, import_expression_restorer.restoreExpression)(v, symbols)
199
215
  ])
200
216
  )
201
217
  } : {},
@@ -204,6 +220,35 @@ function processOutputs(file, stackHandle, symbols) {
204
220
  });
205
221
  }
206
222
  }
223
+ function resolveResourceReference(targetIdentifier, symbols, resourceIdentifier, field) {
224
+ const handle = symbols.get(targetIdentifier);
225
+ if (handle === void 0) {
226
+ throw new Error(
227
+ `Resource "${resourceIdentifier}" references unknown resource "${targetIdentifier}" in "${field}".`
228
+ );
229
+ }
230
+ if (!(0, import_resource_utils.isResource)(handle) && !(0, import_resource_utils.isLoopedResource)(handle)) {
231
+ throw new Error(
232
+ `Resource "${resourceIdentifier}" references non-resource symbol "${targetIdentifier}" in "${field}".`
233
+ );
234
+ }
235
+ return handle;
236
+ }
237
+ function restoreResourceDependencies(node, symbols, resourceIdentifier) {
238
+ if (node.kind !== "array") {
239
+ throw new Error(
240
+ `Resource "${resourceIdentifier}" has an invalid "dependsOn" value; expected an array.`
241
+ );
242
+ }
243
+ return node.items.map((item) => {
244
+ if (item.kind !== "identifier") {
245
+ throw new Error(
246
+ `Resource "${resourceIdentifier}" has an invalid "dependsOn" reference; expected a resource identifier.`
247
+ );
248
+ }
249
+ return resolveResourceReference(item.id, symbols, resourceIdentifier, "dependsOn");
250
+ });
251
+ }
207
252
  function createResource(res, defaultScope, symbols, options) {
208
253
  let wireBody = res.value;
209
254
  let loopWrapper;
@@ -227,7 +272,7 @@ function createResource(res, defaultScope, symbols, options) {
227
272
  }
228
273
  const scopedSymbols = loopWrapper === void 0 ? symbols : new Map(symbols);
229
274
  const loopAuthoring = loopWrapper !== void 0 ? {
230
- collection: (0, import_expression.deserializeExpression)(loopWrapper.collection, symbols),
275
+ collection: (0, import_expression_restorer.restoreExpression)(loopWrapper.collection, symbols),
231
276
  itemVariable: loopWrapper.itemVariable,
232
277
  ...loopWrapper.indexVariable !== void 0 ? { indexVariable: loopWrapper.indexVariable } : {},
233
278
  ...res.decorators?.batchSize !== void 0 ? { batchSize: res.decorators.batchSize } : {}
@@ -246,7 +291,7 @@ function createResource(res, defaultScope, symbols, options) {
246
291
  }
247
292
  const authoring = {
248
293
  ...conditionNode !== void 0 ? {
249
- condition: (0, import_expression.deserializeExpression)(conditionNode, scopedSymbols)
294
+ condition: (0, import_expression_restorer.restoreExpression)(conditionNode, scopedSymbols)
250
295
  } : {},
251
296
  ...loopAuthoring !== void 0 ? { loop: loopAuthoring } : {}
252
297
  };
@@ -266,16 +311,40 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
266
311
  if (parentNode !== void 0 && parentNode.kind !== "identifier" && parentNode.kind !== "array-access") {
267
312
  throw new Error(`Resource "${res.bicepIdentifier}" has an invalid "parent" reference.`);
268
313
  }
269
- if (!res.existing && scopeNode !== void 0 && scopeNode.kind !== "identifier") {
270
- throw new Error(`Resource "${res.bicepIdentifier}" has an invalid "scope" reference.`);
314
+ let relationship = parentNode;
315
+ let relationshipKind = "parent";
316
+ let resolvedScope = false;
317
+ if (parentNode === void 0 && scopeNode !== void 0) {
318
+ const scopeTargetSymbolName = scopeNode.kind === "identifier" ? scopeNode.id : scopeNode.kind === "array-access" && scopeNode.base.kind === "identifier" && !scopeNode.nullish && !scopeNode.fromEnd ? scopeNode.base.id : void 0;
319
+ const scopeTarget = scopeTargetSymbolName === void 0 ? void 0 : symbols.get(scopeTargetSymbolName);
320
+ if (scopeNode.kind === "identifier" && (0, import_resource_utils.isLoopedResource)(scopeTarget)) {
321
+ throw new Error(
322
+ `Resource "${res.bicepIdentifier}" references resource collection "${scopeNode.id}" in "scope"; expected a single resource.`
323
+ );
324
+ }
325
+ if (scopeNode.kind === "identifier" && (0, import_resource_utils.isResource)(scopeTarget) || scopeNode.kind === "array-access" && (0, import_resource_utils.isLoopedResource)(scopeTarget) && !scopeNode.nullish && !scopeNode.fromEnd && scopeNode.base.kind === "identifier") {
326
+ relationship = scopeNode;
327
+ relationshipKind = "scope";
328
+ resolvedScope = true;
329
+ }
271
330
  }
272
- if (parentNode?.kind === "identifier") {
273
- context = (0, import_expression.requireResourceHandle)(parentNode.id, symbols, res.bicepIdentifier, "parent");
274
- } else if (parentNode?.kind === "array-access") {
275
- const baseNode = parentNode.base;
331
+ if (relationship?.kind === "identifier") {
332
+ context = resolveResourceReference(
333
+ relationship.id,
334
+ symbols,
335
+ res.bicepIdentifier,
336
+ relationshipKind
337
+ );
338
+ } else if (relationship?.kind === "array-access") {
339
+ const baseNode = relationship.base;
276
340
  if (baseNode.kind === "identifier") {
277
- const rawParent = (0, import_expression.requireResourceHandle)(baseNode.id, symbols, res.bicepIdentifier, "parent");
278
- const indexValue = (0, import_expression.deserializeExpression)(parentNode.index, symbols);
341
+ const rawParent = resolveResourceReference(
342
+ baseNode.id,
343
+ symbols,
344
+ res.bicepIdentifier,
345
+ relationshipKind
346
+ );
347
+ const indexValue = (0, import_expression_restorer.restoreExpression)(relationship.index, symbols);
279
348
  context = (0, import_resource_proxy.createIndexedResourceProxy)(
280
349
  rawParent,
281
350
  indexValue
@@ -283,36 +352,30 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
283
352
  } else {
284
353
  throw new Error(`Resource "${res.bicepIdentifier}" has an invalid "parent" reference.`);
285
354
  }
286
- } else if (scopeNode?.kind === "identifier") {
287
- const scopeResource = (0, import_expression.requireResourceHandle)(
288
- scopeNode.id,
289
- symbols,
290
- res.bicepIdentifier,
291
- "scope"
292
- );
293
- if ((0, import_resource_utils.isLoopedResource)(scopeResource)) {
294
- throw new Error(
295
- `Resource "${res.bicepIdentifier}" references resource collection "${scopeNode.id}" in "scope"; expected a single resource.`
296
- );
297
- }
298
- context = scopeResource;
299
355
  }
300
356
  let existingScope;
301
- if (res.existing && scopeNode !== void 0 && scopeNode.kind !== "identifier") {
302
- const scope = (0, import_expression.deserializeExpression)(scopeNode, symbols);
357
+ let preservedScope;
358
+ if (scopeNode !== void 0 && !resolvedScope) {
359
+ const value = (0, import_expression_restorer.restoreExpression)(scopeNode, symbols);
360
+ const scope = (0, import_resource_utils.isResource)(value) ? (0, import_expressions.wrapExpression)((0, import_ast_nodes.identifierExpressionNode)(value)) : value;
303
361
  if (!(0, import_expressions.isExpression)(scope)) {
304
362
  throw new Error(
305
363
  `Resource "${res.bicepIdentifier}" has an invalid "scope" value: expected an expression, received "${scopeNode.kind}".`
306
364
  );
307
365
  }
308
- existingScope = scope;
366
+ const currentStackScope = parentNode === void 0 && defaultScope instanceof import_stack.Stack && scopeNode.kind === "function-call" && scopeNode.args.length === 0 && (0, import_utils.getScopeFunctionTarget)(scopeNode) === defaultScope.targetScope;
367
+ if (res.existing && (0, import_utils.getScopeFunctionTarget)(scopeNode) !== void 0) {
368
+ existingScope = scope;
369
+ } else if (!currentStackScope) {
370
+ preservedScope = scope;
371
+ }
309
372
  }
310
373
  const RESERVED = /* @__PURE__ */ new Set(["name", "parent", "scope", "dependsOn"]);
311
374
  const wireProps = /* @__PURE__ */ Object.create(null);
312
375
  for (const [key, valNode] of Object.entries(body)) {
313
376
  if (!RESERVED.has(key)) {
314
377
  Object.defineProperty(wireProps, key, {
315
- value: (0, import_expression.deserializeExpression)(valNode, symbols),
378
+ value: (0, import_expression_restorer.restoreExpression)(valNode, symbols),
316
379
  enumerable: true,
317
380
  configurable: true,
318
381
  writable: true
@@ -320,13 +383,13 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
320
383
  }
321
384
  }
322
385
  const nameNode = body["name"];
323
- const resourceName = nameNode === void 0 ? "unknown" : (0, import_expression.deserializeExpression)(nameNode, symbols);
386
+ const resourceName = nameNode === void 0 ? "unknown" : (0, import_expression_restorer.restoreExpression)(nameNode, symbols);
324
387
  const wireState = { name: resourceName, ...wireProps };
325
388
  const descriptor = (0, import_shape_registry.getShape)(res.type, res.apiVersion, wireState, {
326
389
  strict: options?.strict ?? false,
327
390
  valueKeyedBy: "arm"
328
391
  });
329
- const props = descriptor ? (0, import_lower.raiseState)(wireProps, descriptor) : wireProps;
392
+ const props = descriptor ? (0, import_arm_object_conversion.convertFromArmObject)(wireProps, descriptor) : wireProps;
330
393
  const baseProps = {
331
394
  type: res.type,
332
395
  apiVersion: res.apiVersion,
@@ -338,7 +401,7 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
338
401
  const resourceOptions = {
339
402
  ...authoring?.condition !== void 0 ? { condition: authoring.condition } : {},
340
403
  ...body.dependsOn !== void 0 ? {
341
- dependsOn: (0, import_expression.deserializeDependsOnExpression)(body.dependsOn, symbols, res.bicepIdentifier)
404
+ dependsOn: restoreResourceDependencies(body.dependsOn, symbols, res.bicepIdentifier)
342
405
  } : {}
343
406
  };
344
407
  const Ctor = (0, import_resource_registry.resolveResource)(res.type, res.apiVersion, wireState, options);
@@ -367,6 +430,14 @@ function buildResource(res, body, defaultScope, symbols, options, authoring) {
367
430
  const state = (0, import_resource_proxy.unwrapResourceHandle)(handle);
368
431
  state.condition = authoring.condition;
369
432
  }
433
+ if (preservedScope !== void 0) {
434
+ Object.defineProperty((0, import_resource_proxy.unwrapResourceHandle)(handle), "scope", {
435
+ value: (0, import_expressions.unwrapExpression)(preservedScope),
436
+ enumerable: true,
437
+ configurable: true,
438
+ writable: true
439
+ });
440
+ }
370
441
  return handle;
371
442
  }
372
443
  function objBody(node) {