@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 @@
1
+ {"version":3,"file":"file-dependencies.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-dependencies.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iCAAiC,EAAE,MAAM,uCAAuC,CAAC;AAI1F,MAAM,UAAU,uBAAuB,CACrC,GAAa,EACb,QAAkB,EAClB,OAAqD;IAErD,MAAM,YAAY,GAAG,IAAI,GAAG,CAA0B;QACpD,GAAG,QAAQ,CAAC,SAAS;QACrB,GAAG,QAAQ,CAAC,UAAU;QACtB,GAAG,OAAO;QACV,GAAG,GAAG,CAAC,SAAS;KACjB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,iCAAiC,CAClD,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAC7E,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAClC,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACpD,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { collectDependenciesForDeclaration } from \"../../ast/declaration-dependencies.js\";\nimport type { DeclarationNode, ResourceDeclarationNode } from \"../../ast/index.js\";\nimport type { BicepAst } from \"./file-preparation.js\";\n\nexport function resolveFileDependencies(\n ast: BicepAst,\n stackAst: BicepAst,\n lookups: ReadonlyMap<string, ResourceDeclarationNode>,\n): void {\n const declarations = new Map<string, DeclarationNode>([\n ...stackAst.variables,\n ...stackAst.parameters,\n ...lookups,\n ...ast.resources,\n ]);\n const references = collectDependenciesForDeclaration(\n [...ast.resources.values(), ...ast.outputs.values(), ...ast.modules.values()],\n { recursive: true, declarations },\n );\n const selectedResources = new Map([...lookups, ...ast.resources]);\n const includedResources = new Set(ast.resources.keys());\n ast.resources.clear();\n for (const name of stackAst.resources.keys()) {\n const resource = selectedResources.get(name);\n if (resource !== undefined && (includedResources.has(name) || references.has(name))) {\n ast.resources.set(name, resource);\n }\n }\n ast.variables.clear();\n for (const [name, variable] of stackAst.variables) {\n if (references.has(name)) ast.variables.set(name, variable);\n }\n ast.parameters.clear();\n for (const [name, parameter] of stackAst.parameters) {\n if (references.has(name)) ast.parameters.set(name, parameter);\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare function joinFilePath(directory: string, fileName: string): string;
2
+ export declare function relativeImportPath(from: string, to: string): string;
3
+ //# sourceMappingURL=file-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-paths.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-paths.ts"],"names":[],"mappings":"AAsBA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAmBnE"}
@@ -0,0 +1,46 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ function parseFilePath(path) {
4
+ const normalized = path.replace(/\\/g, "/");
5
+ const root = normalized.match(/^(?:[A-Za-z]:)?\//)?.[0] ?? "";
6
+ const segments = [];
7
+ for (const segment of normalized.slice(root.length).split("/")) {
8
+ if (segment === "" || segment === ".")
9
+ continue;
10
+ if (segment === "..") {
11
+ if (segments.length > 0 && segments.at(-1) !== "..") {
12
+ segments.pop();
13
+ }
14
+ else if (root === "") {
15
+ segments.push(segment);
16
+ }
17
+ }
18
+ else {
19
+ segments.push(segment);
20
+ }
21
+ }
22
+ return { root, segments };
23
+ }
24
+ export function joinFilePath(directory, fileName) {
25
+ const { root, segments } = parseFilePath(directory === "" ? fileName : `${directory}/${fileName}`);
26
+ return root + segments.join("/");
27
+ }
28
+ export function relativeImportPath(from, to) {
29
+ const source = parseFilePath(from);
30
+ const target = parseFilePath(to);
31
+ if (source.root !== target.root) {
32
+ throw new Error(`Cannot reference file "${to}" from "${from}" across different path roots.`);
33
+ }
34
+ source.segments.pop();
35
+ let commonSegments = 0;
36
+ while (commonSegments < source.segments.length &&
37
+ source.segments[commonSegments] === target.segments[commonSegments]) {
38
+ commonSegments++;
39
+ }
40
+ const relative = [
41
+ ...source.segments.slice(commonSegments).map(() => ".."),
42
+ ...target.segments.slice(commonSegments),
43
+ ].join("/");
44
+ return relative === ".." || relative.startsWith("../") ? relative : `./${relative}`;
45
+ }
46
+ //# sourceMappingURL=file-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-paths.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-paths.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG;YAAE,SAAS;QAChD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,QAAQ,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC;iBAAM,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,QAAgB;IAC9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,CACtC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CACzD,CAAC;IACF,OAAO,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,EAAU;IACzD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,WAAW,IAAI,gCAAgC,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,OACE,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;QACvC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EACnE,CAAC;QACD,cAAc,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACxD,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;KACzC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;AACtF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nfunction parseFilePath(path: string): { root: string; segments: string[] } {\n const normalized = path.replace(/\\\\/g, \"/\");\n const root = normalized.match(/^(?:[A-Za-z]:)?\\//)?.[0] ?? \"\";\n const segments: string[] = [];\n for (const segment of normalized.slice(root.length).split(\"/\")) {\n if (segment === \"\" || segment === \".\") continue;\n if (segment === \"..\") {\n if (segments.length > 0 && segments.at(-1) !== \"..\") {\n segments.pop();\n } else if (root === \"\") {\n segments.push(segment);\n }\n } else {\n segments.push(segment);\n }\n }\n return { root, segments };\n}\n\nexport function joinFilePath(directory: string, fileName: string): string {\n const { root, segments } = parseFilePath(\n directory === \"\" ? fileName : `${directory}/${fileName}`,\n );\n return root + segments.join(\"/\");\n}\n\nexport function relativeImportPath(from: string, to: string): string {\n const source = parseFilePath(from);\n const target = parseFilePath(to);\n if (source.root !== target.root) {\n throw new Error(`Cannot reference file \"${to}\" from \"${from}\" across different path roots.`);\n }\n source.segments.pop();\n let commonSegments = 0;\n while (\n commonSegments < source.segments.length &&\n source.segments[commonSegments] === target.segments[commonSegments]\n ) {\n commonSegments++;\n }\n const relative = [\n ...source.segments.slice(commonSegments).map(() => \"..\"),\n ...target.segments.slice(commonSegments),\n ].join(\"/\");\n return relative === \"..\" || relative.startsWith(\"../\") ? relative : `./${relative}`;\n}\n"]}
@@ -0,0 +1,34 @@
1
+ import { type ExpressionNode, type ModuleDeclarationNode, type OutputDeclarationNode, type ParameterDeclarationNode, type ResourceDeclarationNode, type TargetScope, type VariableDeclarationNode } from "../../ast/index.js";
2
+ import type { AuthoredResourceContext } from "./authored-context.js";
3
+ import { BicepNamer } from "./bicep-namer.js";
4
+ import type { DeploymentLayout } from "./deployment-planning.js";
5
+ export interface BicepAst {
6
+ readonly targetScope: TargetScope;
7
+ readonly resources: Map<string, ResourceDeclarationNode>;
8
+ readonly parameters: Map<string, ParameterDeclarationNode>;
9
+ readonly variables: Map<string, VariableDeclarationNode>;
10
+ readonly outputs: Map<string, OutputDeclarationNode>;
11
+ readonly modules: Map<string, ModuleDeclarationNode>;
12
+ }
13
+ export interface PreparedBicepFile {
14
+ readonly fileName: string;
15
+ readonly targetScope: TargetScope;
16
+ readonly ast: BicepAst;
17
+ }
18
+ export interface PreparedModule {
19
+ readonly file: PreparedBicepFile;
20
+ readonly assignedResources: ReadonlySet<string>;
21
+ readonly moduleScope: ExpressionNode | undefined;
22
+ readonly moduleName: string;
23
+ readonly namer: BicepNamer;
24
+ readonly outputNames: Map<string, string>;
25
+ }
26
+ export interface PreparedDeploymentFiles {
27
+ readonly stackAst: BicepAst;
28
+ readonly entry: PreparedBicepFile;
29
+ readonly entryAssignedResources: ReadonlySet<string>;
30
+ readonly modules: readonly PreparedModule[];
31
+ readonly entryExistingResourceCandidates: ReadonlyMap<string, ResourceDeclarationNode>;
32
+ }
33
+ export declare function prepareDeploymentFiles(stackName: string, stackAst: BicepAst, authoredContexts: ReadonlyMap<string, AuthoredResourceContext>, layout: DeploymentLayout, stackNamer: BicepNamer): PreparedDeploymentFiles;
34
+ //# sourceMappingURL=file-preparation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-preparation.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-preparation.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIrF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACzD,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC3D,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,+BAA+B,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACxF;AA4FD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAC9D,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU,GACrB,uBAAuB,CAmHzB"}
@@ -0,0 +1,140 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { removeResourceScope } from "../../ast/resource-utils.js";
4
+ import { hasArmParent, normalizeExtensionScopes } from "./deployment-resource-utils.js";
5
+ import { BicepNamer } from "./bicep-namer.js";
6
+ import { resolveFileDependencies } from "./file-dependencies.js";
7
+ import { joinFilePath } from "./file-paths.js";
8
+ function createFile(fileName, targetScope, selectedResources, stackAst, includeOutputs) {
9
+ const ast = {
10
+ targetScope,
11
+ resources: new Map(),
12
+ parameters: new Map(),
13
+ variables: new Map(),
14
+ modules: new Map(),
15
+ outputs: new Map(includeOutputs ? stackAst.outputs : []),
16
+ };
17
+ for (const [name, resource] of stackAst.resources) {
18
+ if (selectedResources.has(name))
19
+ ast.resources.set(name, resource);
20
+ }
21
+ return { fileName, targetScope, ast };
22
+ }
23
+ function resourceFileName(stackName, name) {
24
+ return joinFilePath(stackName, `${name}.bicep`);
25
+ }
26
+ /**
27
+ * Candidate rules:
28
+ * - Only pure existing resources, without deployment-file ownership.
29
+ * - Entry: all pure existing resources.
30
+ * - Other files: same authored RG or inherited Stack scope, with no explicit root scope.
31
+ * - Do not copy existing references with explicit scope (own or inherited) into
32
+ * modules for explicitly scoped authored RGs; relative scope expressions may change meaning.
33
+ *
34
+ * Dependency selection includes only the candidates actually needed.
35
+ */
36
+ function getExistingResourceCandidatesForPlan(plan, stackAst, authoredContexts, layout) {
37
+ const { entryPlan, pureExistingResources, existingResourceToAuthoredResourceGroup, existingResourcesWithExplicitScope, } = layout;
38
+ const result = new Map();
39
+ for (const [name, resource] of stackAst.resources) {
40
+ if (!pureExistingResources.has(name))
41
+ continue;
42
+ if (plan !== entryPlan) {
43
+ let passThroughExplicitScope = false;
44
+ for (let ancestor = name; ancestor !== undefined; ancestor = authoredContexts.get(ancestor).authoredParent) {
45
+ if (authoredContexts.get(ancestor).scopeOrigin === "pass-through-explicit") {
46
+ passThroughExplicitScope = true;
47
+ break;
48
+ }
49
+ }
50
+ if (passThroughExplicitScope)
51
+ continue;
52
+ }
53
+ // Do not relocate relative lookups across authored deployment boundaries.
54
+ if (plan !== entryPlan &&
55
+ (existingResourceToAuthoredResourceGroup.get(name) !== plan.authoredResourceGroup ||
56
+ (plan.boundary !== undefined &&
57
+ authoredContexts.get(plan.boundary).scopeOrigin === "existing-explicit") ||
58
+ (plan.authoredResourceGroup === undefined && plan.moduleScope !== undefined) ||
59
+ (existingResourcesWithExplicitScope.has(name) &&
60
+ plan.authoredResourceGroup !== undefined &&
61
+ authoredContexts.get(plan.authoredResourceGroup).scopeOrigin === "existing-explicit"))) {
62
+ continue;
63
+ }
64
+ let node = resource;
65
+ if (plan !== entryPlan &&
66
+ !existingResourcesWithExplicitScope.has(name) &&
67
+ !hasArmParent(name, stackAst.resources, authoredContexts)) {
68
+ node = removeResourceScope(node);
69
+ }
70
+ result.set(name, node);
71
+ }
72
+ return result;
73
+ }
74
+ export function prepareDeploymentFiles(stackName, stackAst, authoredContexts, layout, stackNamer) {
75
+ const { entryPlan, deployments, pureExistingResources } = layout;
76
+ const entryResources = entryPlan.resources;
77
+ normalizeExtensionScopes(stackAst);
78
+ if (deployments.length === 0) {
79
+ const selectedResources = entryResources.size === 0 ? pureExistingResources : entryResources;
80
+ const entry = createFile(`${stackName}.bicep`, stackAst.targetScope, selectedResources, stackAst, true);
81
+ const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(entryPlan, stackAst, authoredContexts, layout);
82
+ resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);
83
+ return {
84
+ stackAst,
85
+ entry,
86
+ entryAssignedResources: new Set(entryResources),
87
+ modules: [],
88
+ entryExistingResourceCandidates,
89
+ };
90
+ }
91
+ if (entryResources.size === 0 &&
92
+ deployments.every((plan) => plan.moduleScope === undefined && plan.targetScope === stackAst.targetScope)) {
93
+ const firstTree = deployments[0];
94
+ const mergedResources = new Set(deployments.flatMap((plan) => [...plan.resources]));
95
+ const entry = createFile(resourceFileName(stackName, firstTree.boundary), stackAst.targetScope, mergedResources, stackAst, true);
96
+ const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(firstTree, stackAst, authoredContexts, layout);
97
+ resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);
98
+ return {
99
+ stackAst,
100
+ entry,
101
+ entryAssignedResources: mergedResources,
102
+ modules: [],
103
+ entryExistingResourceCandidates,
104
+ };
105
+ }
106
+ const modules = deployments.map((plan) => {
107
+ const boundaryIdentifier = plan.boundary;
108
+ const file = createFile(resourceFileName(stackName, boundaryIdentifier), plan.targetScope, plan.resources, stackAst, false);
109
+ for (const name of plan.resources) {
110
+ if (authoredContexts.get(name).scopeOrigin === "pass-through-explicit") {
111
+ continue;
112
+ }
113
+ if (name !== plan.boundary && hasArmParent(name, stackAst.resources, authoredContexts)) {
114
+ continue;
115
+ }
116
+ const node = file.ast.resources.get(name);
117
+ file.ast.resources.set(name, removeResourceScope(node));
118
+ }
119
+ resolveFileDependencies(file.ast, stackAst, getExistingResourceCandidatesForPlan(plan, stackAst, authoredContexts, layout));
120
+ return {
121
+ file,
122
+ assignedResources: new Set(plan.resources),
123
+ moduleScope: plan.moduleScope,
124
+ moduleName: stackNamer.moduleName(boundaryIdentifier, file.fileName),
125
+ namer: new BicepNamer(file.ast),
126
+ outputNames: new Map(),
127
+ };
128
+ });
129
+ const entry = createFile(`${stackName}.bicep`, stackAst.targetScope, entryResources, stackAst, true);
130
+ const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(entryPlan, stackAst, authoredContexts, layout);
131
+ resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);
132
+ return {
133
+ stackAst,
134
+ entry,
135
+ entryAssignedResources: new Set(entryResources),
136
+ modules,
137
+ entryExistingResourceCandidates,
138
+ };
139
+ }
140
+ //# sourceMappingURL=file-preparation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-preparation.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-preparation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type ExpressionNode,\n type ModuleDeclarationNode,\n type OutputDeclarationNode,\n type ParameterDeclarationNode,\n type ResourceDeclarationNode,\n type TargetScope,\n type VariableDeclarationNode,\n} from \"../../ast/index.js\";\nimport { removeResourceScope } from \"../../ast/resource-utils.js\";\nimport type { AuthoredResourceContext } from \"./authored-context.js\";\nimport { hasArmParent, normalizeExtensionScopes } from \"./deployment-resource-utils.js\";\nimport { BicepNamer } from \"./bicep-namer.js\";\nimport type { DeploymentFilePlan, DeploymentLayout } from \"./deployment-planning.js\";\nimport { resolveFileDependencies } from \"./file-dependencies.js\";\nimport { joinFilePath } from \"./file-paths.js\";\n\nexport interface BicepAst {\n readonly targetScope: TargetScope;\n readonly resources: Map<string, ResourceDeclarationNode>;\n readonly parameters: Map<string, ParameterDeclarationNode>;\n readonly variables: Map<string, VariableDeclarationNode>;\n readonly outputs: Map<string, OutputDeclarationNode>;\n readonly modules: Map<string, ModuleDeclarationNode>;\n}\n\nexport interface PreparedBicepFile {\n readonly fileName: string;\n readonly targetScope: TargetScope;\n readonly ast: BicepAst;\n}\n\nexport interface PreparedModule {\n readonly file: PreparedBicepFile;\n readonly assignedResources: ReadonlySet<string>;\n readonly moduleScope: ExpressionNode | undefined;\n readonly moduleName: string;\n readonly namer: BicepNamer;\n readonly outputNames: Map<string, string>;\n}\n\nexport interface PreparedDeploymentFiles {\n readonly stackAst: BicepAst;\n readonly entry: PreparedBicepFile;\n readonly entryAssignedResources: ReadonlySet<string>;\n readonly modules: readonly PreparedModule[];\n readonly entryExistingResourceCandidates: ReadonlyMap<string, ResourceDeclarationNode>;\n}\n\nfunction createFile(\n fileName: string,\n targetScope: TargetScope,\n selectedResources: ReadonlySet<string>,\n stackAst: BicepAst,\n includeOutputs: boolean,\n): PreparedBicepFile {\n const ast: BicepAst = {\n targetScope,\n resources: new Map(),\n parameters: new Map(),\n variables: new Map(),\n modules: new Map(),\n outputs: new Map(includeOutputs ? stackAst.outputs : []),\n };\n for (const [name, resource] of stackAst.resources) {\n if (selectedResources.has(name)) ast.resources.set(name, resource);\n }\n return { fileName, targetScope, ast };\n}\n\nfunction resourceFileName(stackName: string, name: string): string {\n return joinFilePath(stackName, `${name}.bicep`);\n}\n\n/**\n * Candidate rules:\n * - Only pure existing resources, without deployment-file ownership.\n * - Entry: all pure existing resources.\n * - Other files: same authored RG or inherited Stack scope, with no explicit root scope.\n * - Do not copy existing references with explicit scope (own or inherited) into\n * modules for explicitly scoped authored RGs; relative scope expressions may change meaning.\n *\n * Dependency selection includes only the candidates actually needed.\n */\nfunction getExistingResourceCandidatesForPlan(\n plan: DeploymentFilePlan,\n stackAst: BicepAst,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n layout: DeploymentLayout,\n): Map<string, ResourceDeclarationNode> {\n const {\n entryPlan,\n pureExistingResources,\n existingResourceToAuthoredResourceGroup,\n existingResourcesWithExplicitScope,\n } = layout;\n const result = new Map<string, ResourceDeclarationNode>();\n for (const [name, resource] of stackAst.resources) {\n if (!pureExistingResources.has(name)) continue;\n if (plan !== entryPlan) {\n let passThroughExplicitScope = false;\n for (\n let ancestor: string | undefined = name;\n ancestor !== undefined;\n ancestor = authoredContexts.get(ancestor)!.authoredParent\n ) {\n if (authoredContexts.get(ancestor)!.scopeOrigin === \"pass-through-explicit\") {\n passThroughExplicitScope = true;\n break;\n }\n }\n if (passThroughExplicitScope) continue;\n }\n // Do not relocate relative lookups across authored deployment boundaries.\n if (\n plan !== entryPlan &&\n (existingResourceToAuthoredResourceGroup.get(name) !== plan.authoredResourceGroup ||\n (plan.boundary !== undefined &&\n authoredContexts.get(plan.boundary)!.scopeOrigin === \"existing-explicit\") ||\n (plan.authoredResourceGroup === undefined && plan.moduleScope !== undefined) ||\n (existingResourcesWithExplicitScope.has(name) &&\n plan.authoredResourceGroup !== undefined &&\n authoredContexts.get(plan.authoredResourceGroup)!.scopeOrigin === \"existing-explicit\"))\n ) {\n continue;\n }\n let node = resource;\n if (\n plan !== entryPlan &&\n !existingResourcesWithExplicitScope.has(name) &&\n !hasArmParent(name, stackAst.resources, authoredContexts)\n ) {\n node = removeResourceScope(node);\n }\n result.set(name, node);\n }\n return result;\n}\n\nexport function prepareDeploymentFiles(\n stackName: string,\n stackAst: BicepAst,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n layout: DeploymentLayout,\n stackNamer: BicepNamer,\n): PreparedDeploymentFiles {\n const { entryPlan, deployments, pureExistingResources } = layout;\n const entryResources = entryPlan.resources;\n normalizeExtensionScopes(stackAst);\n\n if (deployments.length === 0) {\n const selectedResources = entryResources.size === 0 ? pureExistingResources : entryResources;\n const entry = createFile(\n `${stackName}.bicep`,\n stackAst.targetScope,\n selectedResources,\n stackAst,\n true,\n );\n const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(\n entryPlan,\n stackAst,\n authoredContexts,\n layout,\n );\n resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);\n return {\n stackAst,\n entry,\n entryAssignedResources: new Set(entryResources),\n modules: [],\n entryExistingResourceCandidates,\n };\n }\n\n if (\n entryResources.size === 0 &&\n deployments.every(\n (plan) => plan.moduleScope === undefined && plan.targetScope === stackAst.targetScope,\n )\n ) {\n const firstTree = deployments[0]!;\n const mergedResources = new Set(deployments.flatMap((plan) => [...plan.resources]));\n const entry = createFile(\n resourceFileName(stackName, firstTree.boundary!),\n stackAst.targetScope,\n mergedResources,\n stackAst,\n true,\n );\n const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(\n firstTree,\n stackAst,\n authoredContexts,\n layout,\n );\n resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);\n return {\n stackAst,\n entry,\n entryAssignedResources: mergedResources,\n modules: [],\n entryExistingResourceCandidates,\n };\n }\n\n const modules = deployments.map((plan): PreparedModule => {\n const boundaryIdentifier = plan.boundary!;\n const file = createFile(\n resourceFileName(stackName, boundaryIdentifier),\n plan.targetScope,\n plan.resources,\n stackAst,\n false,\n );\n for (const name of plan.resources) {\n if (authoredContexts.get(name)!.scopeOrigin === \"pass-through-explicit\") {\n continue;\n }\n if (name !== plan.boundary && hasArmParent(name, stackAst.resources, authoredContexts)) {\n continue;\n }\n const node = file.ast.resources.get(name)!;\n file.ast.resources.set(name, removeResourceScope(node));\n }\n resolveFileDependencies(\n file.ast,\n stackAst,\n getExistingResourceCandidatesForPlan(plan, stackAst, authoredContexts, layout),\n );\n return {\n file,\n assignedResources: new Set(plan.resources),\n moduleScope: plan.moduleScope,\n moduleName: stackNamer.moduleName(boundaryIdentifier, file.fileName),\n namer: new BicepNamer(file.ast),\n outputNames: new Map<string, string>(),\n };\n });\n const entry = createFile(\n `${stackName}.bicep`,\n stackAst.targetScope,\n entryResources,\n stackAst,\n true,\n );\n const entryExistingResourceCandidates = getExistingResourceCandidatesForPlan(\n entryPlan,\n stackAst,\n authoredContexts,\n layout,\n );\n resolveFileDependencies(entry.ast, stackAst, entryExistingResourceCandidates);\n return {\n stackAst,\n entry,\n entryAssignedResources: new Set(entryResources),\n modules,\n entryExistingResourceCandidates,\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { PreparedDeploymentFiles } from "./file-preparation.js";
2
+ export declare function wireDeploymentFiles(stackName: string, prepared: PreparedDeploymentFiles): void;
3
+ //# sourceMappingURL=reference-wiring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-wiring.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/reference-wiring.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAY,uBAAuB,EAAkB,MAAM,uBAAuB,CAAC;AAyD/F,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAoL9F"}
@@ -0,0 +1,225 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { collectDependenciesForDeclaration } from "../../ast/declaration-dependencies.js";
4
+ import { moduleOutputExpression } from "../../ast/expression-builder.js";
5
+ import { rewriteDeclarationExpressions, rewriteExpressionReferences, } from "../../ast/expression-rewriter.js";
6
+ import { resolveFileDependencies } from "./file-dependencies.js";
7
+ import { relativeImportPath } from "./file-paths.js";
8
+ import { getResourceBody, updateResourceBody } from "../../ast/resource-utils.js";
9
+ function rewriteFileReferences(ast, resolve) {
10
+ const rewrite = (expression) => rewriteExpressionReferences(expression, resolve);
11
+ for (const [name, resource] of ast.resources) {
12
+ ast.resources.set(name, rewriteDeclarationExpressions(resource, rewrite));
13
+ }
14
+ for (const [name, variable] of ast.variables) {
15
+ ast.variables.set(name, rewriteDeclarationExpressions(variable, rewrite));
16
+ }
17
+ for (const [name, output] of ast.outputs) {
18
+ ast.outputs.set(name, rewriteDeclarationExpressions(output, rewrite));
19
+ }
20
+ for (const [name, parameter] of ast.parameters) {
21
+ ast.parameters.set(name, rewriteDeclarationExpressions(parameter, rewrite));
22
+ }
23
+ for (const [name, module] of ast.modules) {
24
+ ast.modules.set(name, rewriteDeclarationExpressions(module, rewrite));
25
+ }
26
+ }
27
+ function prepareModuleOutput(reference, prepared, ownerByResource, preferredName) {
28
+ const { stackAst, entryAssignedResources, entryExistingResourceCandidates } = prepared;
29
+ if (!stackAst.resources.has(reference.identifier)) {
30
+ throw new Error(`Unknown resource reference "${reference.identifier}".`);
31
+ }
32
+ const owner = ownerByResource.get(reference.identifier);
33
+ if (owner === undefined) {
34
+ if (!entryAssignedResources.has(reference.identifier) &&
35
+ !entryExistingResourceCandidates.has(reference.identifier)) {
36
+ throw new Error(`Missing deployment owner for "${reference.identifier}".`);
37
+ }
38
+ return reference.expression;
39
+ }
40
+ const key = JSON.stringify(reference.expression);
41
+ let outputName = owner.outputNames.get(key);
42
+ if (outputName === undefined) {
43
+ outputName = owner.namer.outputName(reference, preferredName);
44
+ owner.file.ast.outputs.set(outputName, {
45
+ bicepIdentifier: outputName,
46
+ valueType: { kind: "primitive-type", name: "any" },
47
+ value: reference.expression,
48
+ });
49
+ owner.outputNames.set(key, outputName);
50
+ }
51
+ return moduleOutputExpression(owner.moduleName, outputName);
52
+ }
53
+ export function wireDeploymentFiles(stackName, prepared) {
54
+ const { stackAst, entry, entryAssignedResources, modules, entryExistingResourceCandidates } = prepared;
55
+ const entryAst = entry.ast;
56
+ const ownerByResource = new Map();
57
+ for (const owner of modules) {
58
+ for (const resource of owner.assignedResources) {
59
+ ownerByResource.set(resource, owner);
60
+ }
61
+ }
62
+ for (const owner of modules) {
63
+ const { file, assignedResources, moduleScope, moduleName, namer } = owner;
64
+ const { ast } = file;
65
+ const moduleDependencies = new Set();
66
+ for (const name of assignedResources) {
67
+ const node = ast.resources.get(name);
68
+ const dependencies = getResourceBody(node.value).value.dependsOn;
69
+ if (dependencies === undefined)
70
+ continue;
71
+ if (dependencies.kind !== "array") {
72
+ throw new Error(`Invalid dependsOn for resource "${name}".`);
73
+ }
74
+ const local = [];
75
+ for (const dependency of dependencies.items) {
76
+ if (dependency.kind !== "identifier") {
77
+ throw new Error(`Invalid dependsOn target for resource "${name}".`);
78
+ }
79
+ const identifier = dependency.id;
80
+ if (!stackAst.resources.has(identifier)) {
81
+ throw new Error(`Dependency is outside Stack "${stackName}".`);
82
+ }
83
+ const target = ownerByResource.get(identifier);
84
+ if (target !== undefined && target !== owner) {
85
+ moduleDependencies.add(target.moduleName);
86
+ }
87
+ else if (target === undefined && entryAssignedResources.has(identifier)) {
88
+ moduleDependencies.add(identifier);
89
+ }
90
+ else {
91
+ local.push({ kind: "identifier", id: identifier });
92
+ }
93
+ }
94
+ ast.resources.set(name, {
95
+ ...node,
96
+ value: updateResourceBody(node.value, (body) => {
97
+ const { dependsOn: _dependsOn, ...rest } = body.value;
98
+ return {
99
+ ...body,
100
+ value: {
101
+ ...rest,
102
+ ...(local.length === 0 ? {} : { dependsOn: { kind: "array", items: local } }),
103
+ },
104
+ };
105
+ }),
106
+ });
107
+ }
108
+ const parameterAssignments = new Map([...ast.parameters.values()].map((parameter) => [
109
+ parameter.bicepIdentifier,
110
+ { kind: "identifier", id: parameter.bicepIdentifier },
111
+ ]));
112
+ const generatedParameters = new Map();
113
+ const parameterNames = new Map();
114
+ rewriteFileReferences(ast, (reference) => {
115
+ if (reference.path.length === 0 ||
116
+ ast.resources.has(reference.identifier) ||
117
+ !stackAst.resources.has(reference.identifier)) {
118
+ return undefined;
119
+ }
120
+ const key = JSON.stringify(reference.expression);
121
+ let parameterName = parameterNames.get(key);
122
+ if (parameterName === undefined) {
123
+ parameterName = namer.parameterName(reference);
124
+ parameterNames.set(key, parameterName);
125
+ generatedParameters.set(parameterName, {
126
+ bicepIdentifier: parameterName,
127
+ valueType: { kind: "primitive-type", name: "any" },
128
+ });
129
+ parameterAssignments.set(parameterName, prepareModuleOutput(reference, prepared, ownerByResource, parameterName));
130
+ }
131
+ return { kind: "identifier", id: parameterName };
132
+ });
133
+ for (const [name, parameter] of generatedParameters) {
134
+ ast.parameters.set(name, parameter);
135
+ }
136
+ entryAst.modules.set(moduleName, {
137
+ bicepIdentifier: moduleName,
138
+ path: relativeImportPath(entry.fileName, file.fileName),
139
+ value: {
140
+ kind: "object",
141
+ value: {
142
+ name: { kind: "string", value: moduleName },
143
+ ...(moduleScope === undefined ? {} : { scope: moduleScope }),
144
+ ...(parameterAssignments.size === 0
145
+ ? {}
146
+ : {
147
+ params: {
148
+ kind: "object",
149
+ value: Object.fromEntries(parameterAssignments),
150
+ },
151
+ }),
152
+ ...(moduleDependencies.size === 0
153
+ ? {}
154
+ : {
155
+ dependsOn: {
156
+ kind: "array",
157
+ items: [...moduleDependencies].map((id) => ({
158
+ kind: "identifier",
159
+ id,
160
+ })),
161
+ },
162
+ }),
163
+ },
164
+ },
165
+ });
166
+ }
167
+ resolveFileDependencies(entryAst, stackAst, entryExistingResourceCandidates);
168
+ for (const [name, resource] of entryAst.resources) {
169
+ const dependencies = getResourceBody(resource.value).value.dependsOn;
170
+ if (dependencies === undefined)
171
+ continue;
172
+ if (dependencies.kind !== "array") {
173
+ throw new Error(`Invalid dependsOn for resource "${name}".`);
174
+ }
175
+ const identifiers = new Set();
176
+ for (const dependency of dependencies.items) {
177
+ if (dependency.kind !== "identifier") {
178
+ throw new Error(`Invalid dependsOn target for resource "${name}".`);
179
+ }
180
+ if (!stackAst.resources.has(dependency.id)) {
181
+ throw new Error(`Dependency is outside Stack "${stackName}".`);
182
+ }
183
+ identifiers.add(ownerByResource.get(dependency.id)?.moduleName ?? dependency.id);
184
+ }
185
+ entryAst.resources.set(name, {
186
+ ...resource,
187
+ value: updateResourceBody(resource.value, (body) => ({
188
+ ...body,
189
+ value: {
190
+ ...body.value,
191
+ dependsOn: {
192
+ kind: "array",
193
+ items: [...identifiers].map((id) => ({
194
+ kind: "identifier",
195
+ id,
196
+ })),
197
+ },
198
+ },
199
+ })),
200
+ });
201
+ }
202
+ rewriteFileReferences(entryAst, (reference) => {
203
+ if (reference.path.length === 0 ||
204
+ entryAst.resources.has(reference.identifier) ||
205
+ !stackAst.resources.has(reference.identifier)) {
206
+ return undefined;
207
+ }
208
+ return prepareModuleOutput(reference, prepared, ownerByResource);
209
+ });
210
+ const entryDeclarations = new Map([
211
+ ...entryAst.resources,
212
+ ...entryAst.parameters,
213
+ ...entryAst.variables,
214
+ ...entryAst.modules,
215
+ ]);
216
+ for (const [name, module] of entryAst.modules) {
217
+ if (collectDependenciesForDeclaration(module, {
218
+ recursive: true,
219
+ declarations: entryDeclarations,
220
+ }).has(name)) {
221
+ throw new Error(`Cyclic module dependency involving "${name}" in Stack "${stackName}".`);
222
+ }
223
+ }
224
+ }
225
+ //# sourceMappingURL=reference-wiring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-wiring.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/reference-wiring.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { collectDependenciesForDeclaration } from \"../../ast/declaration-dependencies.js\";\nimport { moduleOutputExpression } from \"../../ast/expression-builder.js\";\nimport {\n rewriteDeclarationExpressions,\n rewriteExpressionReferences,\n type ExpressionReference,\n type ExpressionReferenceResolver,\n} from \"../../ast/expression-rewriter.js\";\nimport type { DeclarationNode, ExpressionNode, ParameterDeclarationNode } from \"../../ast/index.js\";\nimport { resolveFileDependencies } from \"./file-dependencies.js\";\nimport { relativeImportPath } from \"./file-paths.js\";\nimport type { BicepAst, PreparedDeploymentFiles, PreparedModule } from \"./file-preparation.js\";\nimport { getResourceBody, updateResourceBody } from \"../../ast/resource-utils.js\";\n\nfunction rewriteFileReferences(ast: BicepAst, resolve: ExpressionReferenceResolver): void {\n const rewrite = (expression: ExpressionNode): ExpressionNode =>\n rewriteExpressionReferences(expression, resolve);\n for (const [name, resource] of ast.resources) {\n ast.resources.set(name, rewriteDeclarationExpressions(resource, rewrite));\n }\n for (const [name, variable] of ast.variables) {\n ast.variables.set(name, rewriteDeclarationExpressions(variable, rewrite));\n }\n for (const [name, output] of ast.outputs) {\n ast.outputs.set(name, rewriteDeclarationExpressions(output, rewrite));\n }\n for (const [name, parameter] of ast.parameters) {\n ast.parameters.set(name, rewriteDeclarationExpressions(parameter, rewrite));\n }\n for (const [name, module] of ast.modules) {\n ast.modules.set(name, rewriteDeclarationExpressions(module, rewrite));\n }\n}\n\nfunction prepareModuleOutput(\n reference: ExpressionReference,\n prepared: PreparedDeploymentFiles,\n ownerByResource: ReadonlyMap<string, PreparedModule>,\n preferredName?: string,\n): ExpressionNode {\n const { stackAst, entryAssignedResources, entryExistingResourceCandidates } = prepared;\n if (!stackAst.resources.has(reference.identifier)) {\n throw new Error(`Unknown resource reference \"${reference.identifier}\".`);\n }\n const owner = ownerByResource.get(reference.identifier);\n if (owner === undefined) {\n if (\n !entryAssignedResources.has(reference.identifier) &&\n !entryExistingResourceCandidates.has(reference.identifier)\n ) {\n throw new Error(`Missing deployment owner for \"${reference.identifier}\".`);\n }\n return reference.expression;\n }\n const key = JSON.stringify(reference.expression);\n let outputName = owner.outputNames.get(key);\n if (outputName === undefined) {\n outputName = owner.namer.outputName(reference, preferredName);\n owner.file.ast.outputs.set(outputName, {\n bicepIdentifier: outputName,\n valueType: { kind: \"primitive-type\", name: \"any\" },\n value: reference.expression,\n });\n owner.outputNames.set(key, outputName);\n }\n return moduleOutputExpression(owner.moduleName, outputName);\n}\n\nexport function wireDeploymentFiles(stackName: string, prepared: PreparedDeploymentFiles): void {\n const { stackAst, entry, entryAssignedResources, modules, entryExistingResourceCandidates } =\n prepared;\n const entryAst = entry.ast;\n const ownerByResource = new Map<string, PreparedModule>();\n for (const owner of modules) {\n for (const resource of owner.assignedResources) {\n ownerByResource.set(resource, owner);\n }\n }\n\n for (const owner of modules) {\n const { file, assignedResources, moduleScope, moduleName, namer } = owner;\n const { ast } = file;\n const moduleDependencies = new Set<string>();\n for (const name of assignedResources) {\n const node = ast.resources.get(name)!;\n const dependencies = getResourceBody(node.value).value.dependsOn;\n if (dependencies === undefined) continue;\n if (dependencies.kind !== \"array\") {\n throw new Error(`Invalid dependsOn for resource \"${name}\".`);\n }\n const local: ExpressionNode[] = [];\n for (const dependency of dependencies.items) {\n if (dependency.kind !== \"identifier\") {\n throw new Error(`Invalid dependsOn target for resource \"${name}\".`);\n }\n const identifier = dependency.id;\n if (!stackAst.resources.has(identifier)) {\n throw new Error(`Dependency is outside Stack \"${stackName}\".`);\n }\n const target = ownerByResource.get(identifier);\n if (target !== undefined && target !== owner) {\n moduleDependencies.add(target.moduleName);\n } else if (target === undefined && entryAssignedResources.has(identifier)) {\n moduleDependencies.add(identifier);\n } else {\n local.push({ kind: \"identifier\", id: identifier });\n }\n }\n ast.resources.set(name, {\n ...node,\n value: updateResourceBody(node.value, (body) => {\n const { dependsOn: _dependsOn, ...rest } = body.value;\n return {\n ...body,\n value: {\n ...rest,\n ...(local.length === 0 ? {} : { dependsOn: { kind: \"array\", items: local } }),\n },\n };\n }),\n });\n }\n const parameterAssignments = new Map<string, ExpressionNode>(\n [...ast.parameters.values()].map((parameter) => [\n parameter.bicepIdentifier,\n { kind: \"identifier\", id: parameter.bicepIdentifier },\n ]),\n );\n const generatedParameters = new Map<string, ParameterDeclarationNode>();\n const parameterNames = new Map<string, string>();\n rewriteFileReferences(ast, (reference) => {\n if (\n reference.path.length === 0 ||\n ast.resources.has(reference.identifier) ||\n !stackAst.resources.has(reference.identifier)\n ) {\n return undefined;\n }\n const key = JSON.stringify(reference.expression);\n let parameterName = parameterNames.get(key);\n if (parameterName === undefined) {\n parameterName = namer.parameterName(reference);\n parameterNames.set(key, parameterName);\n generatedParameters.set(parameterName, {\n bicepIdentifier: parameterName,\n valueType: { kind: \"primitive-type\", name: \"any\" },\n });\n parameterAssignments.set(\n parameterName,\n prepareModuleOutput(reference, prepared, ownerByResource, parameterName),\n );\n }\n return { kind: \"identifier\", id: parameterName };\n });\n for (const [name, parameter] of generatedParameters) {\n ast.parameters.set(name, parameter);\n }\n entryAst.modules.set(moduleName, {\n bicepIdentifier: moduleName,\n path: relativeImportPath(entry.fileName, file.fileName),\n value: {\n kind: \"object\",\n value: {\n name: { kind: \"string\", value: moduleName },\n ...(moduleScope === undefined ? {} : { scope: moduleScope }),\n ...(parameterAssignments.size === 0\n ? {}\n : {\n params: {\n kind: \"object\",\n value: Object.fromEntries(parameterAssignments),\n },\n }),\n ...(moduleDependencies.size === 0\n ? {}\n : {\n dependsOn: {\n kind: \"array\",\n items: [...moduleDependencies].map((id) => ({\n kind: \"identifier\",\n id,\n })),\n },\n }),\n },\n },\n });\n }\n resolveFileDependencies(entryAst, stackAst, entryExistingResourceCandidates);\n for (const [name, resource] of entryAst.resources) {\n const dependencies = getResourceBody(resource.value).value.dependsOn;\n if (dependencies === undefined) continue;\n if (dependencies.kind !== \"array\") {\n throw new Error(`Invalid dependsOn for resource \"${name}\".`);\n }\n const identifiers = new Set<string>();\n for (const dependency of dependencies.items) {\n if (dependency.kind !== \"identifier\") {\n throw new Error(`Invalid dependsOn target for resource \"${name}\".`);\n }\n if (!stackAst.resources.has(dependency.id)) {\n throw new Error(`Dependency is outside Stack \"${stackName}\".`);\n }\n identifiers.add(ownerByResource.get(dependency.id)?.moduleName ?? dependency.id);\n }\n entryAst.resources.set(name, {\n ...resource,\n value: updateResourceBody(resource.value, (body) => ({\n ...body,\n value: {\n ...body.value,\n dependsOn: {\n kind: \"array\",\n items: [...identifiers].map((id) => ({\n kind: \"identifier\",\n id,\n })),\n },\n },\n })),\n });\n }\n rewriteFileReferences(entryAst, (reference) => {\n if (\n reference.path.length === 0 ||\n entryAst.resources.has(reference.identifier) ||\n !stackAst.resources.has(reference.identifier)\n ) {\n return undefined;\n }\n return prepareModuleOutput(reference, prepared, ownerByResource);\n });\n const entryDeclarations = new Map<string, DeclarationNode>([\n ...entryAst.resources,\n ...entryAst.parameters,\n ...entryAst.variables,\n ...entryAst.modules,\n ]);\n for (const [name, module] of entryAst.modules) {\n if (\n collectDependenciesForDeclaration(module, {\n recursive: true,\n declarations: entryDeclarations,\n }).has(name)\n ) {\n throw new Error(`Cyclic module dependency involving \"${name}\" in Stack \"${stackName}\".`);\n }\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { renderBicepFiles, type RenderedBicepFile } from "./render.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/serialization/bicep/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ export { renderBicepFiles } from "./render.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/serialization/bicep/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { renderBicepFiles, type RenderedBicepFile } from \"./render.js\";\n"]}
@@ -0,0 +1,11 @@
1
+ import type { InfraNode } from "../ast/index.js";
2
+ import { Stack } from "../../constructs/stack.js";
3
+ /** A generated Bicep source file and its relative output path. */
4
+ export interface RenderedBicepFile {
5
+ readonly path: string;
6
+ readonly contents: string;
7
+ }
8
+ /** Render authored Stacks into Bicep files without writing or deploying them. */
9
+ export declare function renderBicepFiles(input: Stack | readonly Stack[]): readonly RenderedBicepFile[];
10
+ export declare function renderBicepFile(file: InfraNode): RenderedBicepFile;
11
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/serialization/bicep/render.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,SAAS,EAOV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AA0BlD,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,SAAS,iBAAiB,EAAE,CAmB9F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,CAiBlE"}