@azure/provisioning-core 0.1.0-alpha.20261026.1 → 1.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (795) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +3 -3
  3. package/README.md +61 -90
  4. package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  5. package/dist/{constructs → browser/constructs}/built-in-resources/resource-group.js +1 -2
  6. package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -0
  7. package/dist/browser/constructs/output.d.ts.map +1 -0
  8. package/dist/{constructs → browser/constructs}/output.js +1 -2
  9. package/dist/browser/constructs/output.js.map +1 -0
  10. package/dist/{constructs → browser/constructs}/parameter.d.ts.map +1 -1
  11. package/dist/browser/constructs/parameter.js.map +1 -0
  12. package/dist/browser/constructs/provisioning-component.d.ts.map +1 -0
  13. package/dist/browser/constructs/provisioning-component.js.map +1 -0
  14. package/dist/browser/constructs/resource/resource-proxy.d.ts.map +1 -0
  15. package/dist/{constructs → browser/constructs}/resource/resource-proxy.js +7 -13
  16. package/dist/browser/constructs/resource/resource-proxy.js.map +1 -0
  17. package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -0
  18. package/dist/{constructs → browser/constructs}/resource/resource-query.js +2 -4
  19. package/dist/browser/constructs/resource/resource-query.js.map +1 -0
  20. package/dist/browser/constructs/resource/resource-registry.d.ts.map +1 -0
  21. package/dist/{constructs → browser/constructs}/resource/resource-registry.js +1 -1
  22. package/dist/browser/constructs/resource/resource-registry.js.map +1 -0
  23. package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
  24. package/dist/{constructs → browser/constructs}/resource/resource-relationships.js +3 -6
  25. package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
  26. package/dist/browser/constructs/resource/resource-type-registry.d.ts.map +1 -0
  27. package/dist/browser/constructs/resource/resource-type-registry.js.map +1 -0
  28. package/dist/browser/constructs/resource/resource-utils.d.ts.map +1 -0
  29. package/dist/{constructs → browser/constructs}/resource/resource-utils.js +1 -3
  30. package/dist/browser/constructs/resource/resource-utils.js.map +1 -0
  31. package/dist/browser/constructs/resource/resource.d.ts.map +1 -0
  32. package/dist/{constructs → browser/constructs}/resource/resource.js +8 -12
  33. package/dist/browser/constructs/resource/resource.js.map +1 -0
  34. package/dist/browser/constructs/stack.d.ts.map +1 -0
  35. package/dist/browser/constructs/stack.js.map +1 -0
  36. package/dist/browser/constructs/variable.d.ts.map +1 -0
  37. package/dist/browser/constructs/variable.js.map +1 -0
  38. package/dist/browser/deployment-context/deployment-context.d.ts.map +1 -0
  39. package/dist/browser/deployment-context/deployment-context.js.map +1 -0
  40. package/dist/browser/expression/ast-nodes.d.ts.map +1 -0
  41. package/dist/{expression → browser/expression}/ast-nodes.js +2 -4
  42. package/dist/browser/expression/ast-nodes.js.map +1 -0
  43. package/dist/browser/expression/expressions.d.ts.map +1 -0
  44. package/dist/{expression → browser/expression}/expressions.js +1 -1
  45. package/dist/browser/expression/expressions.js.map +1 -0
  46. package/dist/browser/expression/utils.d.ts.map +1 -0
  47. package/dist/browser/expression/utils.js.map +1 -0
  48. package/dist/browser/fn.d.ts.map +1 -0
  49. package/dist/{fn.js → browser/fn.js} +6 -25
  50. package/dist/browser/fn.js.map +1 -0
  51. package/dist/browser/index.d.ts.map +1 -0
  52. package/dist/{index.js → browser/index.js} +0 -2
  53. package/dist/browser/index.js.map +1 -0
  54. package/dist/{internal.d.ts → browser/internal.d.ts} +1 -1
  55. package/dist/browser/internal.d.ts.map +1 -0
  56. package/dist/{internal.js → browser/internal.js} +1 -1
  57. package/dist/browser/internal.js.map +1 -0
  58. package/dist/browser/naming/name-validation.d.ts.map +1 -0
  59. package/dist/{naming → browser/naming}/name-validation.js +1 -1
  60. package/dist/browser/naming/name-validation.js.map +1 -0
  61. package/dist/browser/naming/naming-policy.d.ts.map +1 -0
  62. package/dist/{naming → browser/naming}/naming-policy.js +3 -5
  63. package/dist/browser/naming/naming-policy.js.map +1 -0
  64. package/dist/browser/naming/naming-rules.d.ts.map +1 -0
  65. package/dist/browser/naming/naming-rules.js.map +1 -0
  66. package/dist/browser/package.json +8 -0
  67. package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
  68. package/dist/{serialization → browser/serialization}/arm-object-conversion.js +9 -18
  69. package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
  70. package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
  71. package/dist/{serialization → browser/serialization}/ast/declaration-builder.js +5 -12
  72. package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
  73. package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  74. package/dist/{serialization → browser/serialization}/ast/declaration-dependencies.js +1 -2
  75. package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
  76. package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
  77. package/dist/{serialization → browser/serialization}/ast/expression-builder.js +2 -4
  78. package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
  79. package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
  80. package/dist/{serialization → browser/serialization}/ast/expression-restorer.js +11 -4
  81. package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
  82. package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
  83. package/dist/{serialization → browser/serialization}/ast/expression-rewriter.js +12 -34
  84. package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
  85. package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
  86. package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
  87. package/dist/{serialization → browser/serialization}/ast/generated/ast.d.ts.map +1 -1
  88. package/dist/browser/serialization/ast/generated/ast.js.map +1 -0
  89. package/dist/browser/serialization/ast/index.d.ts.map +1 -0
  90. package/dist/browser/serialization/ast/index.js.map +1 -0
  91. package/dist/browser/serialization/ast/resource-utils.d.ts.map +1 -0
  92. package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
  93. package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  94. package/dist/{serialization → browser/serialization}/bicep/file-layout/authored-context.js +1 -2
  95. package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
  96. package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  97. package/dist/{serialization → browser/serialization}/bicep/file-layout/bicep-namer.js +11 -20
  98. package/dist/browser/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  99. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  100. package/dist/{serialization → browser/serialization}/bicep/file-layout/build-bicep-files.js +7 -20
  101. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  102. package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  103. package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-planning.js +2 -3
  104. package/dist/browser/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  105. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  106. package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-resource-utils.js +5 -9
  107. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  108. package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  109. package/dist/{serialization → browser/serialization}/bicep/file-layout/file-dependencies.js +2 -7
  110. package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  111. package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  112. package/dist/{serialization → browser/serialization}/bicep/file-layout/file-paths.js +1 -3
  113. package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
  114. package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  115. package/dist/{serialization → browser/serialization}/bicep/file-layout/file-preparation.js +8 -16
  116. package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  117. package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  118. package/dist/{serialization → browser/serialization}/bicep/file-layout/reference-wiring.js +4 -7
  119. package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  120. package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
  121. package/dist/browser/serialization/bicep/index.js.map +1 -0
  122. package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
  123. package/dist/{serialization → browser/serialization}/bicep/render.js +18 -34
  124. package/dist/browser/serialization/bicep/render.js.map +1 -0
  125. package/dist/browser/serialization/encoding.d.ts.map +1 -0
  126. package/dist/{serialization → browser/serialization}/encoding.js +2 -6
  127. package/dist/browser/serialization/encoding.js.map +1 -0
  128. package/dist/browser/serialization/identifiers.d.ts.map +1 -0
  129. package/dist/browser/serialization/identifiers.js.map +1 -0
  130. package/dist/browser/serialization/index.d.ts.map +1 -0
  131. package/dist/browser/serialization/index.js.map +1 -0
  132. package/dist/browser/serialization/json/deserialize.d.ts.map +1 -0
  133. package/dist/{serialization → browser/serialization}/json/deserialize.js +23 -64
  134. package/dist/browser/serialization/json/deserialize.js.map +1 -0
  135. package/dist/browser/serialization/json/serialize.d.ts.map +1 -0
  136. package/dist/{serialization → browser/serialization}/json/serialize.js +1 -3
  137. package/dist/browser/serialization/json/serialize.js.map +1 -0
  138. package/dist/browser/serialization/pluralize-config.d.ts.map +1 -0
  139. package/dist/browser/serialization/pluralize-config.js.map +1 -0
  140. package/dist/browser/serialization/symbol-map.d.ts.map +1 -0
  141. package/dist/browser/serialization/symbol-map.js.map +1 -0
  142. package/dist/browser/shape/shape-registry.d.ts.map +1 -0
  143. package/dist/browser/shape/shape-registry.js.map +1 -0
  144. package/dist/browser/shape/shape.d.ts.map +1 -0
  145. package/dist/{shape → browser/shape}/shape.js +6 -7
  146. package/dist/browser/shape/shape.js.map +1 -0
  147. package/dist/browser/shape/value-encoding.d.ts.map +1 -0
  148. package/dist/browser/shape/value-encoding.js.map +1 -0
  149. package/dist/browser/types.d.ts.map +1 -0
  150. package/dist/browser/types.js.map +1 -0
  151. package/dist/{util.d.ts → browser/util.d.ts} +1 -1
  152. package/dist/browser/util.d.ts.map +1 -0
  153. package/dist/{util.js → browser/util.js} +1 -5
  154. package/dist/browser/util.js.map +1 -0
  155. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +56 -0
  156. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  157. package/dist/commonjs/constructs/built-in-resources/resource-group.js +135 -0
  158. package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +7 -0
  159. package/dist/commonjs/constructs/output.d.ts +80 -0
  160. package/dist/commonjs/constructs/output.d.ts.map +1 -0
  161. package/dist/commonjs/constructs/output.js +75 -0
  162. package/dist/commonjs/constructs/output.js.map +7 -0
  163. package/dist/commonjs/constructs/parameter.d.ts +77 -0
  164. package/dist/commonjs/constructs/parameter.d.ts.map +1 -0
  165. package/dist/commonjs/constructs/parameter.js +95 -0
  166. package/dist/commonjs/constructs/parameter.js.map +7 -0
  167. package/dist/commonjs/constructs/provisioning-component.d.ts +91 -0
  168. package/dist/commonjs/constructs/provisioning-component.d.ts.map +1 -0
  169. package/dist/commonjs/constructs/provisioning-component.js +130 -0
  170. package/dist/commonjs/constructs/provisioning-component.js.map +7 -0
  171. package/dist/commonjs/constructs/resource/resource-proxy.d.ts +134 -0
  172. package/dist/commonjs/constructs/resource/resource-proxy.d.ts.map +1 -0
  173. package/dist/commonjs/constructs/resource/resource-proxy.js +456 -0
  174. package/dist/commonjs/constructs/resource/resource-proxy.js.map +7 -0
  175. package/dist/commonjs/constructs/resource/resource-query.d.ts +25 -0
  176. package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -0
  177. package/dist/commonjs/constructs/resource/resource-query.js +79 -0
  178. package/dist/commonjs/constructs/resource/resource-query.js.map +7 -0
  179. package/dist/commonjs/constructs/resource/resource-registry.d.ts +99 -0
  180. package/dist/commonjs/constructs/resource/resource-registry.d.ts.map +1 -0
  181. package/dist/commonjs/constructs/resource/resource-registry.js +49 -0
  182. package/dist/commonjs/constructs/resource/resource-registry.js.map +7 -0
  183. package/dist/commonjs/constructs/resource/resource-relationships.d.ts +9 -0
  184. package/dist/commonjs/constructs/resource/resource-relationships.d.ts.map +1 -0
  185. package/dist/commonjs/constructs/resource/resource-relationships.js +59 -0
  186. package/dist/commonjs/constructs/resource/resource-relationships.js.map +7 -0
  187. package/dist/commonjs/constructs/resource/resource-type-registry.d.ts +46 -0
  188. package/dist/commonjs/constructs/resource/resource-type-registry.d.ts.map +1 -0
  189. package/dist/commonjs/constructs/resource/resource-type-registry.js +178 -0
  190. package/dist/commonjs/constructs/resource/resource-type-registry.js.map +7 -0
  191. package/dist/commonjs/constructs/resource/resource-utils.d.ts +60 -0
  192. package/dist/commonjs/constructs/resource/resource-utils.d.ts.map +1 -0
  193. package/dist/commonjs/constructs/resource/resource-utils.js +51 -0
  194. package/dist/commonjs/constructs/resource/resource-utils.js.map +7 -0
  195. package/dist/commonjs/constructs/resource/resource.d.ts +454 -0
  196. package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -0
  197. package/dist/commonjs/constructs/resource/resource.js +477 -0
  198. package/dist/commonjs/constructs/resource/resource.js.map +7 -0
  199. package/dist/commonjs/constructs/stack.d.ts +96 -0
  200. package/dist/commonjs/constructs/stack.d.ts.map +1 -0
  201. package/dist/commonjs/constructs/stack.js +101 -0
  202. package/dist/commonjs/constructs/stack.js.map +7 -0
  203. package/dist/commonjs/constructs/variable.d.ts +63 -0
  204. package/dist/commonjs/constructs/variable.d.ts.map +1 -0
  205. package/dist/commonjs/constructs/variable.js +85 -0
  206. package/dist/commonjs/constructs/variable.js.map +7 -0
  207. package/dist/commonjs/deployment-context/deployment-context.d.ts +27 -0
  208. package/dist/commonjs/deployment-context/deployment-context.d.ts.map +1 -0
  209. package/dist/commonjs/deployment-context/deployment-context.js +16 -0
  210. package/dist/commonjs/deployment-context/deployment-context.js.map +7 -0
  211. package/dist/commonjs/expression/ast-nodes.d.ts +100 -0
  212. package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -0
  213. package/dist/commonjs/expression/ast-nodes.js +152 -0
  214. package/dist/commonjs/expression/ast-nodes.js.map +7 -0
  215. package/dist/commonjs/expression/expressions.d.ts +157 -0
  216. package/dist/commonjs/expression/expressions.d.ts.map +1 -0
  217. package/dist/commonjs/expression/expressions.js +171 -0
  218. package/dist/commonjs/expression/expressions.js.map +7 -0
  219. package/dist/commonjs/expression/utils.d.ts +5 -0
  220. package/dist/commonjs/expression/utils.d.ts.map +1 -0
  221. package/dist/commonjs/expression/utils.js +43 -0
  222. package/dist/commonjs/expression/utils.js.map +7 -0
  223. package/dist/commonjs/fn.d.ts +194 -0
  224. package/dist/commonjs/fn.d.ts.map +1 -0
  225. package/dist/commonjs/fn.js +382 -0
  226. package/dist/commonjs/fn.js.map +7 -0
  227. package/dist/commonjs/index.d.ts +25 -0
  228. package/dist/commonjs/index.d.ts.map +1 -0
  229. package/dist/commonjs/index.js +93 -0
  230. package/dist/commonjs/index.js.map +7 -0
  231. package/dist/commonjs/internal.d.ts +10 -0
  232. package/dist/commonjs/internal.d.ts.map +1 -0
  233. package/dist/commonjs/internal.js +82 -0
  234. package/dist/commonjs/internal.js.map +7 -0
  235. package/dist/commonjs/naming/name-validation.d.ts +15 -0
  236. package/dist/commonjs/naming/name-validation.d.ts.map +1 -0
  237. package/dist/commonjs/naming/name-validation.js +74 -0
  238. package/dist/commonjs/naming/name-validation.js.map +7 -0
  239. package/dist/commonjs/naming/naming-policy.d.ts +56 -0
  240. package/dist/commonjs/naming/naming-policy.d.ts.map +1 -0
  241. package/dist/commonjs/naming/naming-policy.js +209 -0
  242. package/dist/commonjs/naming/naming-policy.js.map +7 -0
  243. package/dist/commonjs/naming/naming-rules.d.ts +16 -0
  244. package/dist/commonjs/naming/naming-rules.d.ts.map +1 -0
  245. package/dist/commonjs/naming/naming-rules.js +32 -0
  246. package/dist/commonjs/naming/naming-rules.js.map +7 -0
  247. package/dist/commonjs/package.json +8 -0
  248. package/dist/commonjs/serialization/arm-object-conversion.d.ts +41 -0
  249. package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
  250. package/dist/commonjs/serialization/arm-object-conversion.js +272 -0
  251. package/dist/commonjs/serialization/arm-object-conversion.js.map +7 -0
  252. package/dist/commonjs/serialization/ast/declaration-builder.d.ts +10 -0
  253. package/dist/commonjs/serialization/ast/declaration-builder.d.ts.map +1 -0
  254. package/dist/commonjs/serialization/ast/declaration-builder.js +274 -0
  255. package/dist/commonjs/serialization/ast/declaration-builder.js.map +7 -0
  256. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts +18 -0
  257. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  258. package/dist/commonjs/serialization/ast/declaration-dependencies.js +109 -0
  259. package/dist/commonjs/serialization/ast/declaration-dependencies.js.map +7 -0
  260. package/dist/commonjs/serialization/ast/expression-builder.d.ts +14 -0
  261. package/dist/commonjs/serialization/ast/expression-builder.d.ts.map +1 -0
  262. package/dist/commonjs/serialization/ast/expression-builder.js +316 -0
  263. package/dist/commonjs/serialization/ast/expression-builder.js.map +7 -0
  264. package/dist/commonjs/serialization/ast/expression-restorer.d.ts +8 -0
  265. package/dist/commonjs/serialization/ast/expression-restorer.d.ts.map +1 -0
  266. package/dist/commonjs/serialization/ast/expression-restorer.js +193 -0
  267. package/dist/commonjs/serialization/ast/expression-restorer.js.map +7 -0
  268. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts +29 -0
  269. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts.map +1 -0
  270. package/dist/commonjs/serialization/ast/expression-rewriter.js +270 -0
  271. package/dist/commonjs/serialization/ast/expression-rewriter.js.map +7 -0
  272. package/dist/commonjs/serialization/ast/expression-walker.d.ts +16 -0
  273. package/dist/commonjs/serialization/ast/expression-walker.d.ts.map +1 -0
  274. package/dist/commonjs/serialization/ast/expression-walker.js +165 -0
  275. package/dist/commonjs/serialization/ast/expression-walker.js.map +7 -0
  276. package/dist/commonjs/serialization/ast/generated/ast.d.ts +508 -0
  277. package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
  278. package/dist/commonjs/serialization/ast/generated/ast.js +40 -0
  279. package/dist/commonjs/serialization/ast/generated/ast.js.map +7 -0
  280. package/dist/commonjs/serialization/ast/index.d.ts +7 -0
  281. package/dist/commonjs/serialization/ast/index.d.ts.map +1 -0
  282. package/dist/commonjs/serialization/ast/index.js +22 -0
  283. package/dist/commonjs/serialization/ast/index.js.map +7 -0
  284. package/dist/commonjs/serialization/ast/resource-utils.d.ts +10 -0
  285. package/dist/commonjs/serialization/ast/resource-utils.d.ts.map +1 -0
  286. package/dist/commonjs/serialization/ast/resource-utils.js +71 -0
  287. package/dist/commonjs/serialization/ast/resource-utils.js.map +7 -0
  288. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  289. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  290. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js +74 -0
  291. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js.map +7 -0
  292. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  293. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  294. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js +130 -0
  295. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js.map +7 -0
  296. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  297. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  298. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js +71 -0
  299. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js.map +7 -0
  300. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  301. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  302. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js +80 -0
  303. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js.map +7 -0
  304. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  305. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  306. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js +91 -0
  307. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js.map +7 -0
  308. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  309. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  310. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js +57 -0
  311. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js.map +7 -0
  312. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  313. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  314. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js +70 -0
  315. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js.map +7 -0
  316. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  317. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  318. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js +190 -0
  319. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js.map +7 -0
  320. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  321. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  322. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js +241 -0
  323. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js.map +7 -0
  324. package/dist/commonjs/serialization/bicep/index.d.ts +2 -0
  325. package/dist/commonjs/serialization/bicep/index.d.ts.map +1 -0
  326. package/dist/commonjs/serialization/bicep/index.js +28 -0
  327. package/dist/commonjs/serialization/bicep/index.js.map +7 -0
  328. package/dist/commonjs/serialization/bicep/render.d.ts +11 -0
  329. package/dist/commonjs/serialization/bicep/render.d.ts.map +1 -0
  330. package/dist/commonjs/serialization/bicep/render.js +312 -0
  331. package/dist/commonjs/serialization/bicep/render.js.map +7 -0
  332. package/dist/commonjs/serialization/encoding.d.ts +4 -0
  333. package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
  334. package/dist/commonjs/serialization/encoding.js +296 -0
  335. package/dist/commonjs/serialization/encoding.js.map +7 -0
  336. package/dist/commonjs/serialization/identifiers.d.ts +2 -0
  337. package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
  338. package/dist/commonjs/serialization/identifiers.js +37 -0
  339. package/dist/commonjs/serialization/identifiers.js.map +7 -0
  340. package/dist/commonjs/serialization/index.d.ts +4 -0
  341. package/dist/commonjs/serialization/index.d.ts.map +1 -0
  342. package/dist/commonjs/serialization/index.js +31 -0
  343. package/dist/commonjs/serialization/index.js.map +7 -0
  344. package/dist/commonjs/serialization/json/deserialize.d.ts +24 -0
  345. package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -0
  346. package/dist/commonjs/serialization/json/deserialize.js +456 -0
  347. package/dist/commonjs/serialization/json/deserialize.js.map +7 -0
  348. package/dist/commonjs/serialization/json/serialize.d.ts +12 -0
  349. package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -0
  350. package/dist/commonjs/serialization/json/serialize.js +50 -0
  351. package/dist/commonjs/serialization/json/serialize.js.map +7 -0
  352. package/dist/commonjs/serialization/pluralize-config.d.ts +3 -0
  353. package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
  354. package/dist/commonjs/serialization/pluralize-config.js +37 -0
  355. package/dist/commonjs/serialization/pluralize-config.js.map +7 -0
  356. package/dist/commonjs/serialization/symbol-map.d.ts +10 -0
  357. package/dist/commonjs/serialization/symbol-map.d.ts.map +1 -0
  358. package/dist/commonjs/serialization/symbol-map.js +72 -0
  359. package/dist/commonjs/serialization/symbol-map.js.map +7 -0
  360. package/dist/commonjs/shape/shape-registry.d.ts +51 -0
  361. package/dist/commonjs/shape/shape-registry.d.ts.map +1 -0
  362. package/dist/commonjs/shape/shape-registry.js +40 -0
  363. package/dist/commonjs/shape/shape-registry.js.map +7 -0
  364. package/dist/commonjs/shape/shape.d.ts +407 -0
  365. package/dist/commonjs/shape/shape.d.ts.map +1 -0
  366. package/dist/commonjs/shape/shape.js +290 -0
  367. package/dist/commonjs/shape/shape.js.map +7 -0
  368. package/dist/commonjs/shape/value-encoding.d.ts +121 -0
  369. package/dist/commonjs/shape/value-encoding.d.ts.map +1 -0
  370. package/dist/commonjs/shape/value-encoding.js +62 -0
  371. package/dist/commonjs/shape/value-encoding.js.map +7 -0
  372. package/dist/commonjs/tsdoc-metadata.json +11 -0
  373. package/dist/commonjs/types.d.ts +9 -0
  374. package/dist/commonjs/types.d.ts.map +1 -0
  375. package/dist/commonjs/types.js +16 -0
  376. package/dist/commonjs/types.js.map +7 -0
  377. package/dist/commonjs/util.d.ts +33 -0
  378. package/dist/commonjs/util.d.ts.map +1 -0
  379. package/dist/commonjs/util.js +73 -0
  380. package/dist/commonjs/util.js.map +7 -0
  381. package/dist/esm/constructs/built-in-resources/resource-group.d.ts +56 -0
  382. package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  383. package/dist/esm/constructs/built-in-resources/resource-group.js +120 -0
  384. package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -0
  385. package/dist/esm/constructs/output.d.ts +80 -0
  386. package/dist/esm/constructs/output.d.ts.map +1 -0
  387. package/dist/esm/constructs/output.js +75 -0
  388. package/dist/esm/constructs/output.js.map +1 -0
  389. package/dist/esm/constructs/parameter.d.ts +77 -0
  390. package/dist/esm/constructs/parameter.d.ts.map +1 -0
  391. package/dist/esm/constructs/parameter.js +93 -0
  392. package/dist/esm/constructs/parameter.js.map +1 -0
  393. package/dist/esm/constructs/provisioning-component.d.ts +91 -0
  394. package/dist/esm/constructs/provisioning-component.d.ts.map +1 -0
  395. package/dist/esm/constructs/provisioning-component.js +150 -0
  396. package/dist/esm/constructs/provisioning-component.js.map +1 -0
  397. package/dist/esm/constructs/resource/resource-proxy.d.ts +134 -0
  398. package/dist/esm/constructs/resource/resource-proxy.d.ts.map +1 -0
  399. package/dist/esm/constructs/resource/resource-proxy.js +517 -0
  400. package/dist/esm/constructs/resource/resource-proxy.js.map +1 -0
  401. package/dist/esm/constructs/resource/resource-query.d.ts +25 -0
  402. package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -0
  403. package/dist/esm/constructs/resource/resource-query.js +79 -0
  404. package/dist/esm/constructs/resource/resource-query.js.map +1 -0
  405. package/dist/esm/constructs/resource/resource-registry.d.ts +99 -0
  406. package/dist/esm/constructs/resource/resource-registry.d.ts.map +1 -0
  407. package/dist/esm/constructs/resource/resource-registry.js +51 -0
  408. package/dist/esm/constructs/resource/resource-registry.js.map +1 -0
  409. package/dist/esm/constructs/resource/resource-relationships.d.ts +9 -0
  410. package/dist/esm/constructs/resource/resource-relationships.d.ts.map +1 -0
  411. package/dist/esm/constructs/resource/resource-relationships.js +35 -0
  412. package/dist/esm/constructs/resource/resource-relationships.js.map +1 -0
  413. package/dist/esm/constructs/resource/resource-type-registry.d.ts +46 -0
  414. package/dist/esm/constructs/resource/resource-type-registry.d.ts.map +1 -0
  415. package/dist/esm/constructs/resource/resource-type-registry.js +156 -0
  416. package/dist/esm/constructs/resource/resource-type-registry.js.map +1 -0
  417. package/dist/esm/constructs/resource/resource-utils.d.ts +60 -0
  418. package/dist/esm/constructs/resource/resource-utils.d.ts.map +1 -0
  419. package/dist/esm/constructs/resource/resource-utils.js +75 -0
  420. package/dist/esm/constructs/resource/resource-utils.js.map +1 -0
  421. package/dist/esm/constructs/resource/resource.d.ts +454 -0
  422. package/dist/esm/constructs/resource/resource.d.ts.map +1 -0
  423. package/dist/esm/constructs/resource/resource.js +624 -0
  424. package/dist/esm/constructs/resource/resource.js.map +1 -0
  425. package/dist/esm/constructs/stack.d.ts +96 -0
  426. package/dist/esm/constructs/stack.d.ts.map +1 -0
  427. package/dist/esm/constructs/stack.js +96 -0
  428. package/dist/esm/constructs/stack.js.map +1 -0
  429. package/dist/esm/constructs/variable.d.ts +63 -0
  430. package/dist/esm/constructs/variable.d.ts.map +1 -0
  431. package/dist/esm/constructs/variable.js +74 -0
  432. package/dist/esm/constructs/variable.js.map +1 -0
  433. package/dist/esm/deployment-context/deployment-context.d.ts +27 -0
  434. package/dist/esm/deployment-context/deployment-context.d.ts.map +1 -0
  435. package/dist/esm/deployment-context/deployment-context.js +4 -0
  436. package/dist/esm/deployment-context/deployment-context.js.map +1 -0
  437. package/dist/esm/expression/ast-nodes.d.ts +100 -0
  438. package/dist/esm/expression/ast-nodes.d.ts.map +1 -0
  439. package/dist/esm/expression/ast-nodes.js +125 -0
  440. package/dist/esm/expression/ast-nodes.js.map +1 -0
  441. package/dist/esm/expression/expressions.d.ts +157 -0
  442. package/dist/esm/expression/expressions.d.ts.map +1 -0
  443. package/dist/esm/expression/expressions.js +204 -0
  444. package/dist/esm/expression/expressions.js.map +1 -0
  445. package/dist/esm/expression/utils.d.ts +5 -0
  446. package/dist/esm/expression/utils.d.ts.map +1 -0
  447. package/dist/esm/expression/utils.js +25 -0
  448. package/dist/esm/expression/utils.js.map +1 -0
  449. package/dist/esm/fn.d.ts +194 -0
  450. package/dist/esm/fn.d.ts.map +1 -0
  451. package/dist/esm/fn.js +334 -0
  452. package/dist/esm/fn.js.map +1 -0
  453. package/dist/esm/index.d.ts +25 -0
  454. package/dist/esm/index.d.ts.map +1 -0
  455. package/dist/esm/index.js +17 -0
  456. package/dist/esm/index.js.map +1 -0
  457. package/dist/esm/internal.d.ts +10 -0
  458. package/dist/esm/internal.d.ts.map +1 -0
  459. package/dist/esm/internal.js +8 -0
  460. package/dist/esm/internal.js.map +1 -0
  461. package/dist/esm/naming/name-validation.d.ts +15 -0
  462. package/dist/esm/naming/name-validation.d.ts.map +1 -0
  463. package/dist/esm/naming/name-validation.js +82 -0
  464. package/dist/esm/naming/name-validation.js.map +1 -0
  465. package/dist/esm/naming/naming-policy.d.ts +56 -0
  466. package/dist/esm/naming/naming-policy.d.ts.map +1 -0
  467. package/dist/esm/naming/naming-policy.js +230 -0
  468. package/dist/esm/naming/naming-policy.js.map +1 -0
  469. package/dist/esm/naming/naming-rules.d.ts +16 -0
  470. package/dist/esm/naming/naming-rules.d.ts.map +1 -0
  471. package/dist/esm/naming/naming-rules.js +8 -0
  472. package/dist/esm/naming/naming-rules.js.map +1 -0
  473. package/dist/esm/package.json +8 -0
  474. package/dist/esm/serialization/arm-object-conversion.d.ts +41 -0
  475. package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
  476. package/dist/esm/serialization/arm-object-conversion.js +334 -0
  477. package/dist/esm/serialization/arm-object-conversion.js.map +1 -0
  478. package/dist/esm/serialization/ast/declaration-builder.d.ts +10 -0
  479. package/dist/esm/serialization/ast/declaration-builder.d.ts.map +1 -0
  480. package/dist/esm/serialization/ast/declaration-builder.js +265 -0
  481. package/dist/esm/serialization/ast/declaration-builder.js.map +1 -0
  482. package/dist/esm/serialization/ast/declaration-dependencies.d.ts +18 -0
  483. package/dist/esm/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  484. package/dist/esm/serialization/ast/declaration-dependencies.js +96 -0
  485. package/dist/esm/serialization/ast/declaration-dependencies.js.map +1 -0
  486. package/dist/esm/serialization/ast/expression-builder.d.ts +14 -0
  487. package/dist/esm/serialization/ast/expression-builder.d.ts.map +1 -0
  488. package/dist/esm/serialization/ast/expression-builder.js +313 -0
  489. package/dist/esm/serialization/ast/expression-builder.js.map +1 -0
  490. package/dist/esm/serialization/ast/expression-restorer.d.ts +8 -0
  491. package/dist/esm/serialization/ast/expression-restorer.d.ts.map +1 -0
  492. package/dist/esm/serialization/ast/expression-restorer.js +162 -0
  493. package/dist/esm/serialization/ast/expression-restorer.js.map +1 -0
  494. package/dist/esm/serialization/ast/expression-rewriter.d.ts +29 -0
  495. package/dist/esm/serialization/ast/expression-rewriter.d.ts.map +1 -0
  496. package/dist/esm/serialization/ast/expression-rewriter.js +257 -0
  497. package/dist/esm/serialization/ast/expression-rewriter.js.map +1 -0
  498. package/dist/esm/serialization/ast/expression-walker.d.ts +16 -0
  499. package/dist/esm/serialization/ast/expression-walker.d.ts.map +1 -0
  500. package/dist/esm/serialization/ast/expression-walker.js +154 -0
  501. package/dist/esm/serialization/ast/expression-walker.js.map +1 -0
  502. package/dist/esm/serialization/ast/generated/ast.d.ts +508 -0
  503. package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
  504. package/dist/esm/serialization/ast/generated/ast.js +23 -0
  505. package/dist/esm/serialization/ast/generated/ast.js.map +1 -0
  506. package/dist/esm/serialization/ast/index.d.ts +7 -0
  507. package/dist/esm/serialization/ast/index.d.ts.map +1 -0
  508. package/dist/esm/serialization/ast/index.js +4 -0
  509. package/dist/esm/serialization/ast/index.js.map +1 -0
  510. package/dist/esm/serialization/ast/resource-utils.d.ts +10 -0
  511. package/dist/esm/serialization/ast/resource-utils.d.ts.map +1 -0
  512. package/dist/esm/serialization/ast/resource-utils.js +52 -0
  513. package/dist/esm/serialization/ast/resource-utils.js.map +1 -0
  514. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  515. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  516. package/dist/esm/serialization/bicep/file-layout/authored-context.js +57 -0
  517. package/dist/esm/serialization/bicep/file-layout/authored-context.js.map +1 -0
  518. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  519. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  520. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js +100 -0
  521. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  522. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  523. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  524. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js +46 -0
  525. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  526. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  527. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  528. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js +68 -0
  529. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  530. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  531. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  532. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
  533. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  534. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  535. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  536. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js +32 -0
  537. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  538. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  539. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  540. package/dist/esm/serialization/bicep/file-layout/file-paths.js +46 -0
  541. package/dist/esm/serialization/bicep/file-layout/file-paths.js.map +1 -0
  542. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  543. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  544. package/dist/esm/serialization/bicep/file-layout/file-preparation.js +140 -0
  545. package/dist/esm/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  546. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  547. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  548. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js +225 -0
  549. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  550. package/dist/esm/serialization/bicep/index.d.ts +2 -0
  551. package/dist/esm/serialization/bicep/index.d.ts.map +1 -0
  552. package/dist/esm/serialization/bicep/index.js +4 -0
  553. package/dist/esm/serialization/bicep/index.js.map +1 -0
  554. package/dist/esm/serialization/bicep/render.d.ts +11 -0
  555. package/dist/esm/serialization/bicep/render.d.ts.map +1 -0
  556. package/dist/esm/serialization/bicep/render.js +293 -0
  557. package/dist/esm/serialization/bicep/render.js.map +1 -0
  558. package/dist/esm/serialization/encoding.d.ts +4 -0
  559. package/dist/esm/serialization/encoding.d.ts.map +1 -0
  560. package/dist/esm/serialization/encoding.js +309 -0
  561. package/dist/esm/serialization/encoding.js.map +1 -0
  562. package/dist/esm/serialization/identifiers.d.ts +2 -0
  563. package/dist/esm/serialization/identifiers.d.ts.map +1 -0
  564. package/dist/esm/serialization/identifiers.js +19 -0
  565. package/dist/esm/serialization/identifiers.js.map +1 -0
  566. package/dist/esm/serialization/index.d.ts +4 -0
  567. package/dist/esm/serialization/index.d.ts.map +1 -0
  568. package/dist/esm/serialization/index.js +5 -0
  569. package/dist/esm/serialization/index.js.map +1 -0
  570. package/dist/esm/serialization/json/deserialize.d.ts +24 -0
  571. package/dist/esm/serialization/json/deserialize.d.ts.map +1 -0
  572. package/dist/esm/serialization/json/deserialize.js +529 -0
  573. package/dist/esm/serialization/json/deserialize.js.map +1 -0
  574. package/dist/esm/serialization/json/serialize.d.ts +12 -0
  575. package/dist/esm/serialization/json/serialize.d.ts.map +1 -0
  576. package/dist/esm/serialization/json/serialize.js +34 -0
  577. package/dist/esm/serialization/json/serialize.js.map +1 -0
  578. package/dist/esm/serialization/pluralize-config.d.ts +3 -0
  579. package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
  580. package/dist/esm/serialization/pluralize-config.js +7 -0
  581. package/dist/esm/serialization/pluralize-config.js.map +1 -0
  582. package/dist/esm/serialization/symbol-map.d.ts +10 -0
  583. package/dist/esm/serialization/symbol-map.d.ts.map +1 -0
  584. package/dist/esm/serialization/symbol-map.js +40 -0
  585. package/dist/esm/serialization/symbol-map.js.map +1 -0
  586. package/dist/esm/shape/shape-registry.d.ts +51 -0
  587. package/dist/esm/shape/shape-registry.d.ts.map +1 -0
  588. package/dist/esm/shape/shape-registry.js +41 -0
  589. package/dist/esm/shape/shape-registry.js.map +1 -0
  590. package/dist/esm/shape/shape.d.ts +407 -0
  591. package/dist/esm/shape/shape.d.ts.map +1 -0
  592. package/dist/esm/shape/shape.js +424 -0
  593. package/dist/esm/shape/shape.js.map +1 -0
  594. package/dist/esm/shape/value-encoding.d.ts +121 -0
  595. package/dist/esm/shape/value-encoding.d.ts.map +1 -0
  596. package/dist/esm/shape/value-encoding.js +32 -0
  597. package/dist/esm/shape/value-encoding.js.map +1 -0
  598. package/dist/esm/types.d.ts +9 -0
  599. package/dist/esm/types.d.ts.map +1 -0
  600. package/dist/esm/types.js +4 -0
  601. package/dist/esm/types.js.map +1 -0
  602. package/dist/esm/util.d.ts +33 -0
  603. package/dist/esm/util.d.ts.map +1 -0
  604. package/dist/esm/util.js +74 -0
  605. package/dist/esm/util.js.map +1 -0
  606. package/package.json +92 -27
  607. package/dist/constructs/built-in-resources/resource-group.d.ts.map +0 -1
  608. package/dist/constructs/built-in-resources/resource-group.js.map +0 -1
  609. package/dist/constructs/output.d.ts.map +0 -1
  610. package/dist/constructs/output.js.map +0 -1
  611. package/dist/constructs/parameter.js.map +0 -1
  612. package/dist/constructs/provisioning-component.d.ts.map +0 -1
  613. package/dist/constructs/provisioning-component.js.map +0 -1
  614. package/dist/constructs/resource/resource-proxy.d.ts.map +0 -1
  615. package/dist/constructs/resource/resource-proxy.js.map +0 -1
  616. package/dist/constructs/resource/resource-query.d.ts.map +0 -1
  617. package/dist/constructs/resource/resource-query.js.map +0 -1
  618. package/dist/constructs/resource/resource-registry.d.ts.map +0 -1
  619. package/dist/constructs/resource/resource-registry.js.map +0 -1
  620. package/dist/constructs/resource/resource-relationships.d.ts.map +0 -1
  621. package/dist/constructs/resource/resource-relationships.js.map +0 -1
  622. package/dist/constructs/resource/resource-type-registry.d.ts.map +0 -1
  623. package/dist/constructs/resource/resource-type-registry.js.map +0 -1
  624. package/dist/constructs/resource/resource-utils.d.ts.map +0 -1
  625. package/dist/constructs/resource/resource-utils.js.map +0 -1
  626. package/dist/constructs/resource/resource.d.ts.map +0 -1
  627. package/dist/constructs/resource/resource.js.map +0 -1
  628. package/dist/constructs/stack.d.ts.map +0 -1
  629. package/dist/constructs/stack.js.map +0 -1
  630. package/dist/constructs/variable.d.ts.map +0 -1
  631. package/dist/constructs/variable.js.map +0 -1
  632. package/dist/deployment-context/deployment-context.d.ts.map +0 -1
  633. package/dist/deployment-context/deployment-context.js.map +0 -1
  634. package/dist/expression/ast-nodes.d.ts.map +0 -1
  635. package/dist/expression/ast-nodes.js.map +0 -1
  636. package/dist/expression/expressions.d.ts.map +0 -1
  637. package/dist/expression/expressions.js.map +0 -1
  638. package/dist/expression/utils.d.ts.map +0 -1
  639. package/dist/expression/utils.js.map +0 -1
  640. package/dist/fn.d.ts.map +0 -1
  641. package/dist/fn.js.map +0 -1
  642. package/dist/index.d.ts.map +0 -1
  643. package/dist/index.js.map +0 -1
  644. package/dist/internal-loop.d.ts +0 -14
  645. package/dist/internal-loop.d.ts.map +0 -1
  646. package/dist/internal-loop.js +0 -16
  647. package/dist/internal-loop.js.map +0 -1
  648. package/dist/internal.d.ts.map +0 -1
  649. package/dist/internal.js.map +0 -1
  650. package/dist/naming/name-validation.d.ts.map +0 -1
  651. package/dist/naming/name-validation.js.map +0 -1
  652. package/dist/naming/naming-policy.d.ts.map +0 -1
  653. package/dist/naming/naming-policy.js.map +0 -1
  654. package/dist/naming/naming-rules.d.ts.map +0 -1
  655. package/dist/naming/naming-rules.js.map +0 -1
  656. package/dist/serialization/arm-object-conversion.d.ts.map +0 -1
  657. package/dist/serialization/arm-object-conversion.js.map +0 -1
  658. package/dist/serialization/ast/declaration-builder.d.ts.map +0 -1
  659. package/dist/serialization/ast/declaration-builder.js.map +0 -1
  660. package/dist/serialization/ast/declaration-dependencies.d.ts.map +0 -1
  661. package/dist/serialization/ast/declaration-dependencies.js.map +0 -1
  662. package/dist/serialization/ast/expression-builder.d.ts.map +0 -1
  663. package/dist/serialization/ast/expression-builder.js.map +0 -1
  664. package/dist/serialization/ast/expression-restorer.d.ts.map +0 -1
  665. package/dist/serialization/ast/expression-restorer.js.map +0 -1
  666. package/dist/serialization/ast/expression-rewriter.d.ts.map +0 -1
  667. package/dist/serialization/ast/expression-rewriter.js.map +0 -1
  668. package/dist/serialization/ast/expression-walker.d.ts.map +0 -1
  669. package/dist/serialization/ast/expression-walker.js.map +0 -1
  670. package/dist/serialization/ast/generated/ast.js.map +0 -1
  671. package/dist/serialization/ast/index.d.ts.map +0 -1
  672. package/dist/serialization/ast/index.js.map +0 -1
  673. package/dist/serialization/ast/resource-utils.d.ts.map +0 -1
  674. package/dist/serialization/ast/resource-utils.js.map +0 -1
  675. package/dist/serialization/bicep/file-layout/authored-context.d.ts.map +0 -1
  676. package/dist/serialization/bicep/file-layout/authored-context.js.map +0 -1
  677. package/dist/serialization/bicep/file-layout/bicep-namer.d.ts.map +0 -1
  678. package/dist/serialization/bicep/file-layout/bicep-namer.js.map +0 -1
  679. package/dist/serialization/bicep/file-layout/build-bicep-files.d.ts.map +0 -1
  680. package/dist/serialization/bicep/file-layout/build-bicep-files.js.map +0 -1
  681. package/dist/serialization/bicep/file-layout/deployment-planning.d.ts.map +0 -1
  682. package/dist/serialization/bicep/file-layout/deployment-planning.js.map +0 -1
  683. package/dist/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +0 -1
  684. package/dist/serialization/bicep/file-layout/deployment-resource-utils.js.map +0 -1
  685. package/dist/serialization/bicep/file-layout/file-dependencies.d.ts.map +0 -1
  686. package/dist/serialization/bicep/file-layout/file-dependencies.js.map +0 -1
  687. package/dist/serialization/bicep/file-layout/file-paths.d.ts.map +0 -1
  688. package/dist/serialization/bicep/file-layout/file-paths.js.map +0 -1
  689. package/dist/serialization/bicep/file-layout/file-preparation.d.ts.map +0 -1
  690. package/dist/serialization/bicep/file-layout/file-preparation.js.map +0 -1
  691. package/dist/serialization/bicep/file-layout/reference-wiring.d.ts.map +0 -1
  692. package/dist/serialization/bicep/file-layout/reference-wiring.js.map +0 -1
  693. package/dist/serialization/bicep/index.d.ts.map +0 -1
  694. package/dist/serialization/bicep/index.js.map +0 -1
  695. package/dist/serialization/bicep/render.d.ts.map +0 -1
  696. package/dist/serialization/bicep/render.js.map +0 -1
  697. package/dist/serialization/encoding.d.ts.map +0 -1
  698. package/dist/serialization/encoding.js.map +0 -1
  699. package/dist/serialization/identifiers.d.ts.map +0 -1
  700. package/dist/serialization/identifiers.js.map +0 -1
  701. package/dist/serialization/index.d.ts.map +0 -1
  702. package/dist/serialization/index.js.map +0 -1
  703. package/dist/serialization/json/deserialize.d.ts.map +0 -1
  704. package/dist/serialization/json/deserialize.js.map +0 -1
  705. package/dist/serialization/json/serialize.d.ts.map +0 -1
  706. package/dist/serialization/json/serialize.js.map +0 -1
  707. package/dist/serialization/pluralize-config.d.ts.map +0 -1
  708. package/dist/serialization/pluralize-config.js.map +0 -1
  709. package/dist/serialization/symbol-map.d.ts.map +0 -1
  710. package/dist/serialization/symbol-map.js.map +0 -1
  711. package/dist/shape/shape-registry.d.ts.map +0 -1
  712. package/dist/shape/shape-registry.js.map +0 -1
  713. package/dist/shape/shape.d.ts.map +0 -1
  714. package/dist/shape/shape.js.map +0 -1
  715. package/dist/shape/value-encoding.d.ts.map +0 -1
  716. package/dist/shape/value-encoding.js.map +0 -1
  717. package/dist/tsconfig.tsbuildinfo +0 -1
  718. package/dist/types.d.ts.map +0 -1
  719. package/dist/types.js.map +0 -1
  720. package/dist/util.d.ts.map +0 -1
  721. package/dist/util.js.map +0 -1
  722. /package/dist/{constructs → browser/constructs}/built-in-resources/resource-group.d.ts +0 -0
  723. /package/dist/{constructs → browser/constructs}/output.d.ts +0 -0
  724. /package/dist/{constructs → browser/constructs}/parameter.d.ts +0 -0
  725. /package/dist/{constructs → browser/constructs}/parameter.js +0 -0
  726. /package/dist/{constructs → browser/constructs}/provisioning-component.d.ts +0 -0
  727. /package/dist/{constructs → browser/constructs}/provisioning-component.js +0 -0
  728. /package/dist/{constructs → browser/constructs}/resource/resource-proxy.d.ts +0 -0
  729. /package/dist/{constructs → browser/constructs}/resource/resource-query.d.ts +0 -0
  730. /package/dist/{constructs → browser/constructs}/resource/resource-registry.d.ts +0 -0
  731. /package/dist/{constructs → browser/constructs}/resource/resource-relationships.d.ts +0 -0
  732. /package/dist/{constructs → browser/constructs}/resource/resource-type-registry.d.ts +0 -0
  733. /package/dist/{constructs → browser/constructs}/resource/resource-type-registry.js +0 -0
  734. /package/dist/{constructs → browser/constructs}/resource/resource-utils.d.ts +0 -0
  735. /package/dist/{constructs → browser/constructs}/resource/resource.d.ts +0 -0
  736. /package/dist/{constructs → browser/constructs}/stack.d.ts +0 -0
  737. /package/dist/{constructs → browser/constructs}/stack.js +0 -0
  738. /package/dist/{constructs → browser/constructs}/variable.d.ts +0 -0
  739. /package/dist/{constructs → browser/constructs}/variable.js +0 -0
  740. /package/dist/{deployment-context → browser/deployment-context}/deployment-context.d.ts +0 -0
  741. /package/dist/{deployment-context → browser/deployment-context}/deployment-context.js +0 -0
  742. /package/dist/{expression → browser/expression}/ast-nodes.d.ts +0 -0
  743. /package/dist/{expression → browser/expression}/expressions.d.ts +0 -0
  744. /package/dist/{expression → browser/expression}/utils.d.ts +0 -0
  745. /package/dist/{expression → browser/expression}/utils.js +0 -0
  746. /package/dist/{fn.d.ts → browser/fn.d.ts} +0 -0
  747. /package/dist/{index.d.ts → browser/index.d.ts} +0 -0
  748. /package/dist/{naming → browser/naming}/name-validation.d.ts +0 -0
  749. /package/dist/{naming → browser/naming}/naming-policy.d.ts +0 -0
  750. /package/dist/{naming → browser/naming}/naming-rules.d.ts +0 -0
  751. /package/dist/{naming → browser/naming}/naming-rules.js +0 -0
  752. /package/dist/{serialization → browser/serialization}/arm-object-conversion.d.ts +0 -0
  753. /package/dist/{serialization → browser/serialization}/ast/declaration-builder.d.ts +0 -0
  754. /package/dist/{serialization → browser/serialization}/ast/declaration-dependencies.d.ts +0 -0
  755. /package/dist/{serialization → browser/serialization}/ast/expression-builder.d.ts +0 -0
  756. /package/dist/{serialization → browser/serialization}/ast/expression-restorer.d.ts +0 -0
  757. /package/dist/{serialization → browser/serialization}/ast/expression-rewriter.d.ts +0 -0
  758. /package/dist/{serialization → browser/serialization}/ast/expression-walker.d.ts +0 -0
  759. /package/dist/{serialization → browser/serialization}/ast/expression-walker.js +0 -0
  760. /package/dist/{serialization → browser/serialization}/ast/generated/ast.d.ts +0 -0
  761. /package/dist/{serialization → browser/serialization}/ast/generated/ast.js +0 -0
  762. /package/dist/{serialization → browser/serialization}/ast/index.d.ts +0 -0
  763. /package/dist/{serialization → browser/serialization}/ast/index.js +0 -0
  764. /package/dist/{serialization → browser/serialization}/ast/resource-utils.d.ts +0 -0
  765. /package/dist/{serialization → browser/serialization}/ast/resource-utils.js +0 -0
  766. /package/dist/{serialization → browser/serialization}/bicep/file-layout/authored-context.d.ts +0 -0
  767. /package/dist/{serialization → browser/serialization}/bicep/file-layout/bicep-namer.d.ts +0 -0
  768. /package/dist/{serialization → browser/serialization}/bicep/file-layout/build-bicep-files.d.ts +0 -0
  769. /package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-planning.d.ts +0 -0
  770. /package/dist/{serialization → browser/serialization}/bicep/file-layout/deployment-resource-utils.d.ts +0 -0
  771. /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-dependencies.d.ts +0 -0
  772. /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-paths.d.ts +0 -0
  773. /package/dist/{serialization → browser/serialization}/bicep/file-layout/file-preparation.d.ts +0 -0
  774. /package/dist/{serialization → browser/serialization}/bicep/file-layout/reference-wiring.d.ts +0 -0
  775. /package/dist/{serialization → browser/serialization}/bicep/index.d.ts +0 -0
  776. /package/dist/{serialization → browser/serialization}/bicep/index.js +0 -0
  777. /package/dist/{serialization → browser/serialization}/bicep/render.d.ts +0 -0
  778. /package/dist/{serialization → browser/serialization}/encoding.d.ts +0 -0
  779. /package/dist/{serialization → browser/serialization}/identifiers.d.ts +0 -0
  780. /package/dist/{serialization → browser/serialization}/identifiers.js +0 -0
  781. /package/dist/{serialization → browser/serialization}/index.d.ts +0 -0
  782. /package/dist/{serialization → browser/serialization}/index.js +0 -0
  783. /package/dist/{serialization → browser/serialization}/json/deserialize.d.ts +0 -0
  784. /package/dist/{serialization → browser/serialization}/json/serialize.d.ts +0 -0
  785. /package/dist/{serialization → browser/serialization}/pluralize-config.d.ts +0 -0
  786. /package/dist/{serialization → browser/serialization}/pluralize-config.js +0 -0
  787. /package/dist/{serialization → browser/serialization}/symbol-map.d.ts +0 -0
  788. /package/dist/{serialization → browser/serialization}/symbol-map.js +0 -0
  789. /package/dist/{shape → browser/shape}/shape-registry.d.ts +0 -0
  790. /package/dist/{shape → browser/shape}/shape-registry.js +0 -0
  791. /package/dist/{shape → browser/shape}/shape.d.ts +0 -0
  792. /package/dist/{shape → browser/shape}/value-encoding.d.ts +0 -0
  793. /package/dist/{shape → browser/shape}/value-encoding.js +0 -0
  794. /package/dist/{types.d.ts → browser/types.d.ts} +0 -0
  795. /package/dist/{types.js → browser/types.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-utils.js","sourceRoot":"","sources":["../../../../src/serialization/ast/resource-utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,iFAAiF;AACjF,MAAM,UAAU,kBAAkB,CAChC,IAAwB,EACxB,SAA8C;IAE9C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,cAAc,CAAC;QACpB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc;gBACjC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EACnC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,IAAwB;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACxC,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EACnC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CAAC,QAAiC;IACnE,OAAO;QACL,GAAG,QAAQ;QACX,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACjD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9C,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,8BAA8B,CAC5C,QAAiC;IAEjC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAC5D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACxE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;AAC1F,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DeclarableBodyNode, ObjectValue, ResourceDeclarationNode } from \"./index.js\";\n\n/** Transforms a resource's object body while preserving conditions and loops. */\nexport function updateResourceBody(\n body: DeclarableBodyNode,\n transform: (value: ObjectValue) => ObjectValue,\n): DeclarableBodyNode {\n switch (body.kind) {\n case \"object\":\n return transform(body);\n case \"if-condition\":\n case \"for-expression\": {\n if (\n body.body.kind !== \"object\" &&\n body.body.kind !== \"if-condition\" &&\n body.body.kind !== \"for-expression\"\n ) {\n throw new Error(`Invalid resource body \"${body.body.kind}\".`);\n }\n return { ...body, body: updateResourceBody(body.body, transform) };\n }\n }\n}\n\n/** Gets the object body beneath a resource's condition and loop wrappers. */\nexport function getResourceBody(body: DeclarableBodyNode): ObjectValue {\n if (body.kind === \"object\") return body;\n if (\n body.body.kind !== \"object\" &&\n body.body.kind !== \"if-condition\" &&\n body.body.kind !== \"for-expression\"\n ) {\n throw new Error(`Invalid resource body \"${body.body.kind}\".`);\n }\n return getResourceBody(body.body);\n}\n\n/** Removes the scope field without changing other resource declaration data. */\nexport function removeResourceScope(resource: ResourceDeclarationNode): ResourceDeclarationNode {\n return {\n ...resource,\n value: updateResourceBody(resource.value, (body) => {\n const { scope: _scope, ...rest } = body.value;\n return { ...body, value: rest };\n }),\n };\n}\n\n/** Gets the parent declaration identifier, including indexed parent accesses. */\nexport function getResourceArmParentIdentifier(\n resource: ResourceDeclarationNode,\n): string | undefined {\n const parent = getResourceBody(resource.value).value.parent;\n if (parent === undefined) return undefined;\n if (parent.kind === \"identifier\") return parent.id;\n if (parent.kind === \"array-access\" && parent.base.kind === \"identifier\") {\n return parent.base.id;\n }\n throw new Error(`Unsupported ARM parent expression for \"${resource.bicepIdentifier}\".`);\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import type { Stack } from "../../../constructs/stack.js";
2
+ import type { ResourceDeclaration } from "../../../constructs/resource/resource.js";
3
+ import type { DeclarationSymbolMap } from "../../symbol-map.js";
4
+ export interface AuthoredResourceContext {
5
+ /** Nearest authored resource ancestor, including resource groups. */
6
+ readonly authoredParent: string | undefined;
7
+ /** Existing-explicit lookups affect placement; pass-through-explicit scopes only affect emitted bodies. */
8
+ readonly scopeOrigin: "existing-explicit" | "pass-through-explicit" | "resourceGroup" | "none";
9
+ }
10
+ export declare function validateResourceAncestry(stack: Stack, resources: readonly ResourceDeclaration[]): void;
11
+ export declare function collectAuthoredResourceContexts(resources: readonly ResourceDeclaration[], symbols: DeclarationSymbolMap): ReadonlyMap<string, AuthoredResourceContext>;
12
+ //# sourceMappingURL=authored-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authored-context.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/authored-context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAMpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,MAAM,WAAW,uBAAuB;IACtC,qEAAqE;IACrE,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,2GAA2G;IAC3G,QAAQ,CAAC,WAAW,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,eAAe,GAAG,MAAM,CAAC;CAChG;AAWD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,mBAAmB,EAAE,GACxC,IAAI,CAcN;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,mBAAmB,EAAE,EACzC,OAAO,EAAE,oBAAoB,GAC5B,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CA4B9C"}
@@ -0,0 +1,57 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { isResourceDeclaration } from "../../../constructs/resource/resource-utils.js";
4
+ import { getArmParent, getResourceGroupAncestor, getResourceScope, } from "../../../constructs/resource/resource-relationships.js";
5
+ import { getScopeFunctionTarget } from "../../../expression/utils.js";
6
+ /** Distinguishes pass-through declaration data from supported existing lookups. */
7
+ function usesPassThroughExplicitScope(resource) {
8
+ const scope = getResourceScope(resource);
9
+ return (scope !== undefined &&
10
+ (resource.existing !== true || getScopeFunctionTarget(scope) === undefined));
11
+ }
12
+ export function validateResourceAncestry(stack, resources) {
13
+ const resourceSet = new Set(resources);
14
+ for (const resource of resources) {
15
+ const ancestors = new Set([resource.self]);
16
+ for (let parent = resource.parent; parent !== undefined; parent = parent.parent) {
17
+ if (ancestors.has(parent.self)) {
18
+ throw new Error(`Cyclic resource attachment in Stack "${stack.name}".`);
19
+ }
20
+ ancestors.add(parent.self);
21
+ if (isResourceDeclaration(parent) && !resourceSet.has(parent.self)) {
22
+ throw new Error(`Resource "${resource.type}" has a parent outside Stack "${stack.name}".`);
23
+ }
24
+ }
25
+ }
26
+ }
27
+ export function collectAuthoredResourceContexts(resources, symbols) {
28
+ const resourceContexts = new Map();
29
+ for (const resource of resources) {
30
+ const identifier = symbols.get(resource);
31
+ if (identifier === undefined) {
32
+ throw new Error(`Missing symbol for resource type "${resource.type}".`);
33
+ }
34
+ let authoredParent;
35
+ for (let parent = resource.parent; parent !== undefined; parent = parent.parent) {
36
+ if (!isResourceDeclaration(parent))
37
+ continue;
38
+ authoredParent = symbols.get(parent.self);
39
+ if (authoredParent === undefined) {
40
+ throw new Error(`Missing authored parent symbol for resource "${identifier}".`);
41
+ }
42
+ break;
43
+ }
44
+ resourceContexts.set(identifier, {
45
+ authoredParent,
46
+ scopeOrigin: usesPassThroughExplicitScope(resource)
47
+ ? "pass-through-explicit"
48
+ : getResourceScope(resource) !== undefined
49
+ ? "existing-explicit"
50
+ : getArmParent(resource) === undefined && getResourceGroupAncestor(resource) !== undefined
51
+ ? "resourceGroup"
52
+ : "none",
53
+ });
54
+ }
55
+ return resourceContexts;
56
+ }
57
+ //# sourceMappingURL=authored-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authored-context.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/authored-context.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isResourceDeclaration } from \"../../../constructs/resource/resource-utils.js\";\nimport type { Stack } from \"../../../constructs/stack.js\";\nimport type { ProvisioningComponent } from \"../../../constructs/provisioning-component.js\";\nimport type { ResourceDeclaration } from \"../../../constructs/resource/resource.js\";\nimport {\n getArmParent,\n getResourceGroupAncestor,\n getResourceScope,\n} from \"../../../constructs/resource/resource-relationships.js\";\nimport type { DeclarationSymbolMap } from \"../../symbol-map.js\";\nimport { getScopeFunctionTarget } from \"../../../expression/utils.js\";\n\nexport interface AuthoredResourceContext {\n /** Nearest authored resource ancestor, including resource groups. */\n readonly authoredParent: string | undefined;\n /** Existing-explicit lookups affect placement; pass-through-explicit scopes only affect emitted bodies. */\n readonly scopeOrigin: \"existing-explicit\" | \"pass-through-explicit\" | \"resourceGroup\" | \"none\";\n}\n\n/** Distinguishes pass-through declaration data from supported existing lookups. */\nfunction usesPassThroughExplicitScope(resource: ResourceDeclaration): boolean {\n const scope = getResourceScope(resource);\n return (\n scope !== undefined &&\n (resource.existing !== true || getScopeFunctionTarget(scope) === undefined)\n );\n}\n\nexport function validateResourceAncestry(\n stack: Stack,\n resources: readonly ResourceDeclaration[],\n): void {\n const resourceSet = new Set(resources);\n for (const resource of resources) {\n const ancestors = new Set<ProvisioningComponent>([resource.self]);\n for (let parent = resource.parent; parent !== undefined; parent = parent.parent) {\n if (ancestors.has(parent.self)) {\n throw new Error(`Cyclic resource attachment in Stack \"${stack.name}\".`);\n }\n ancestors.add(parent.self);\n if (isResourceDeclaration(parent) && !resourceSet.has(parent.self)) {\n throw new Error(`Resource \"${resource.type}\" has a parent outside Stack \"${stack.name}\".`);\n }\n }\n }\n}\n\nexport function collectAuthoredResourceContexts(\n resources: readonly ResourceDeclaration[],\n symbols: DeclarationSymbolMap,\n): ReadonlyMap<string, AuthoredResourceContext> {\n const resourceContexts = new Map<string, AuthoredResourceContext>();\n for (const resource of resources) {\n const identifier = symbols.get(resource);\n if (identifier === undefined) {\n throw new Error(`Missing symbol for resource type \"${resource.type}\".`);\n }\n let authoredParent: string | undefined;\n for (let parent = resource.parent; parent !== undefined; parent = parent.parent) {\n if (!isResourceDeclaration(parent)) continue;\n authoredParent = symbols.get(parent.self);\n if (authoredParent === undefined) {\n throw new Error(`Missing authored parent symbol for resource \"${identifier}\".`);\n }\n break;\n }\n resourceContexts.set(identifier, {\n authoredParent,\n scopeOrigin: usesPassThroughExplicitScope(resource)\n ? \"pass-through-explicit\"\n : getResourceScope(resource) !== undefined\n ? \"existing-explicit\"\n : getArmParent(resource) === undefined && getResourceGroupAncestor(resource) !== undefined\n ? \"resourceGroup\"\n : \"none\",\n });\n }\n return resourceContexts;\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { ExpressionReference } from "../../ast/expression-rewriter.js";
2
+ import type { BicepAst } from "./file-preparation.js";
3
+ export declare const RESOURCE_NAME_OVERRIDES: ReadonlyMap<string, string>;
4
+ export declare class BicepNamer {
5
+ #private;
6
+ constructor(ast: BicepAst);
7
+ moduleName(rootIdentifier: string, fileName: string): string;
8
+ parameterName(reference: ExpressionReference): string;
9
+ outputName(reference: ExpressionReference, preferredName?: string): string;
10
+ }
11
+ //# sourceMappingURL=bicep-namer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bicep-namer.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/bicep-namer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAW9D,CAAC;AAuBH,qBAAa,UAAU;;gBAIT,GAAG,EAAE,QAAQ;IAczB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ5D,aAAa,CAAC,SAAS,EAAE,mBAAmB,GAAG,MAAM;IAIrD,UAAU,CACR,SAAS,EAAE,mBAAmB,EAC9B,aAAa,GAAE,MAAqC,GACnD,MAAM;CAGV"}
@@ -0,0 +1,100 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { sanitizeIdentifier } from "../../identifiers.js";
4
+ import { walkDeclarationExpressions } from "../../ast/expression-walker.js";
5
+ // Deliberately limited to built-in names likely to collide with resource symbols.
6
+ export const RESOURCE_NAME_OVERRIDES = new Map([
7
+ ["resourceGroup", "rg"],
8
+ ["subscription", "subscriptionResource"],
9
+ ["managementGroup", "managementGroupResource"],
10
+ ["tenant", "tenantResource"],
11
+ ["deployment", "deploymentResource"],
12
+ ["environment", "environmentResource"],
13
+ ["reference", "referenceResource"],
14
+ ["guid", "guidResource"],
15
+ ["format", "formatResource"],
16
+ ["range", "rangeResource"],
17
+ ]);
18
+ function collectLoopBindings(ast) {
19
+ const loopBindings = new Set();
20
+ for (const declaration of [
21
+ ...ast.resources.values(),
22
+ ...ast.parameters.values(),
23
+ ...ast.variables.values(),
24
+ ...ast.outputs.values(),
25
+ ...ast.modules.values(),
26
+ ]) {
27
+ walkDeclarationExpressions(declaration, (node) => {
28
+ if (node.kind === "for-expression") {
29
+ loopBindings.add(node.itemVariable);
30
+ if (node.indexVariable !== undefined) {
31
+ loopBindings.add(node.indexVariable);
32
+ }
33
+ }
34
+ });
35
+ }
36
+ return loopBindings;
37
+ }
38
+ export class BicepNamer {
39
+ #usedNames;
40
+ #usedOutputNames = new Set();
41
+ constructor(ast) {
42
+ this.#usedNames = new Set([...RESOURCE_NAME_OVERRIDES.keys(), ...collectLoopBindings(ast)].map((name) => name.toLowerCase()));
43
+ for (const declarations of [ast.parameters, ast.variables, ast.resources, ast.modules]) {
44
+ for (const declaration of declarations.values()) {
45
+ this.#usedNames.add(declaration.bicepIdentifier.toLowerCase());
46
+ }
47
+ }
48
+ for (const name of ast.outputs.keys())
49
+ this.#usedOutputNames.add(name.toLowerCase());
50
+ }
51
+ moduleName(rootIdentifier, fileName) {
52
+ return createUniqueName(`${rootIdentifier}Module`, sanitizeIdentifier(fileName.replace(/\.bicep$/u, ""), "file"), this.#usedNames);
53
+ }
54
+ parameterName(reference) {
55
+ return createUniqueName(buildRefParamName(reference), reference.identifier, this.#usedNames);
56
+ }
57
+ outputName(reference, preferredName = buildRefParamName(reference)) {
58
+ return createUniqueName(preferredName, reference.identifier, this.#usedOutputNames);
59
+ }
60
+ }
61
+ function buildRefParamName(reference) {
62
+ const segments = reference.path.map((segment) => {
63
+ if (typeof segment === "number")
64
+ return String(segment);
65
+ const name = sanitizeIdentifier(segment);
66
+ return name.charAt(0).toUpperCase() + name.slice(1);
67
+ });
68
+ let modifiers = "";
69
+ let current = reference.expression;
70
+ let depth = 0;
71
+ while (current.kind === "property-access" || current.kind === "array-access") {
72
+ if (current.nullish)
73
+ modifiers += `Safe${depth}`;
74
+ if (current.kind === "array-access" && current.fromEnd) {
75
+ modifiers += `FromEnd${depth}`;
76
+ }
77
+ current = current.base;
78
+ depth++;
79
+ }
80
+ return reference.identifier + segments.join("") + modifiers;
81
+ }
82
+ function createUniqueName(name, alias, usedNames) {
83
+ if (!usedNames.has(name.toLowerCase())) {
84
+ usedNames.add(name.toLowerCase());
85
+ return name;
86
+ }
87
+ const stem = `${alias}${name.charAt(0).toUpperCase()}${name.slice(1)}`;
88
+ if (!usedNames.has(stem.toLowerCase())) {
89
+ usedNames.add(stem.toLowerCase());
90
+ return stem;
91
+ }
92
+ let counter = 2;
93
+ while (usedNames.has(`${stem}${counter}`.toLowerCase())) {
94
+ counter += 1;
95
+ }
96
+ const uniqueName = `${stem}${counter}`;
97
+ usedNames.add(uniqueName.toLowerCase());
98
+ return uniqueName;
99
+ }
100
+ //# sourceMappingURL=bicep-namer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bicep-namer.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/bicep-namer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { sanitizeIdentifier } from \"../../identifiers.js\";\nimport { walkDeclarationExpressions } from \"../../ast/expression-walker.js\";\nimport type { ExpressionReference } from \"../../ast/expression-rewriter.js\";\nimport type { BicepAst } from \"./file-preparation.js\";\n\n// Deliberately limited to built-in names likely to collide with resource symbols.\nexport const RESOURCE_NAME_OVERRIDES: ReadonlyMap<string, string> = new Map([\n [\"resourceGroup\", \"rg\"],\n [\"subscription\", \"subscriptionResource\"],\n [\"managementGroup\", \"managementGroupResource\"],\n [\"tenant\", \"tenantResource\"],\n [\"deployment\", \"deploymentResource\"],\n [\"environment\", \"environmentResource\"],\n [\"reference\", \"referenceResource\"],\n [\"guid\", \"guidResource\"],\n [\"format\", \"formatResource\"],\n [\"range\", \"rangeResource\"],\n]);\n\nfunction collectLoopBindings(ast: BicepAst): ReadonlySet<string> {\n const loopBindings = new Set<string>();\n for (const declaration of [\n ...ast.resources.values(),\n ...ast.parameters.values(),\n ...ast.variables.values(),\n ...ast.outputs.values(),\n ...ast.modules.values(),\n ]) {\n walkDeclarationExpressions(declaration, (node) => {\n if (node.kind === \"for-expression\") {\n loopBindings.add(node.itemVariable);\n if (node.indexVariable !== undefined) {\n loopBindings.add(node.indexVariable);\n }\n }\n });\n }\n return loopBindings;\n}\n\nexport class BicepNamer {\n readonly #usedNames: Set<string>;\n readonly #usedOutputNames = new Set<string>();\n\n constructor(ast: BicepAst) {\n this.#usedNames = new Set(\n [...RESOURCE_NAME_OVERRIDES.keys(), ...collectLoopBindings(ast)].map((name) =>\n name.toLowerCase(),\n ),\n );\n for (const declarations of [ast.parameters, ast.variables, ast.resources, ast.modules]) {\n for (const declaration of declarations.values()) {\n this.#usedNames.add(declaration.bicepIdentifier.toLowerCase());\n }\n }\n for (const name of ast.outputs.keys()) this.#usedOutputNames.add(name.toLowerCase());\n }\n\n moduleName(rootIdentifier: string, fileName: string): string {\n return createUniqueName(\n `${rootIdentifier}Module`,\n sanitizeIdentifier(fileName.replace(/\\.bicep$/u, \"\"), \"file\"),\n this.#usedNames,\n );\n }\n\n parameterName(reference: ExpressionReference): string {\n return createUniqueName(buildRefParamName(reference), reference.identifier, this.#usedNames);\n }\n\n outputName(\n reference: ExpressionReference,\n preferredName: string = buildRefParamName(reference),\n ): string {\n return createUniqueName(preferredName, reference.identifier, this.#usedOutputNames);\n }\n}\n\nfunction buildRefParamName(reference: ExpressionReference): string {\n const segments = reference.path.map((segment) => {\n if (typeof segment === \"number\") return String(segment);\n const name = sanitizeIdentifier(segment);\n return name.charAt(0).toUpperCase() + name.slice(1);\n });\n let modifiers = \"\";\n let current = reference.expression;\n let depth = 0;\n while (current.kind === \"property-access\" || current.kind === \"array-access\") {\n if (current.nullish) modifiers += `Safe${depth}`;\n if (current.kind === \"array-access\" && current.fromEnd) {\n modifiers += `FromEnd${depth}`;\n }\n current = current.base;\n depth++;\n }\n return reference.identifier + segments.join(\"\") + modifiers;\n}\n\nfunction createUniqueName(name: string, alias: string, usedNames: Set<string>): string {\n if (!usedNames.has(name.toLowerCase())) {\n usedNames.add(name.toLowerCase());\n return name;\n }\n\n const stem = `${alias}${name.charAt(0).toUpperCase()}${name.slice(1)}`;\n\n if (!usedNames.has(stem.toLowerCase())) {\n usedNames.add(stem.toLowerCase());\n return stem;\n }\n\n let counter = 2;\n while (usedNames.has(`${stem}${counter}`.toLowerCase())) {\n counter += 1;\n }\n\n const uniqueName = `${stem}${counter}`;\n\n usedNames.add(uniqueName.toLowerCase());\n return uniqueName;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { Stack } from "../../../constructs/stack.js";
2
+ import type { InfraNode } from "../../ast/index.js";
3
+ import { type PreparedBicepFile } from "./file-preparation.js";
4
+ export declare function toInfraNode(file: PreparedBicepFile): InfraNode;
5
+ /** Builds enriched declaration ASTs, then plans and wires deployment files. */
6
+ export declare function buildBicepFiles(stack: Stack): readonly InfraNode[];
7
+ //# sourceMappingURL=build-bicep-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-bicep-files.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/build-bicep-files.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAI1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAG/B,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAW9D;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,SAAS,EAAE,CAqBlE"}
@@ -0,0 +1,46 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { collectResourceDeclarations } from "../../../constructs/resource/resource-query.js";
4
+ import { buildStackDeclarations } from "../../ast/declaration-builder.js";
5
+ import { createSymbolMap } from "../../symbol-map.js";
6
+ import { collectAuthoredResourceContexts, validateResourceAncestry } from "./authored-context.js";
7
+ import { planDeploymentFiles } from "./deployment-planning.js";
8
+ import { BicepNamer, RESOURCE_NAME_OVERRIDES } from "./bicep-namer.js";
9
+ import { prepareDeploymentFiles, } from "./file-preparation.js";
10
+ import { wireDeploymentFiles } from "./reference-wiring.js";
11
+ export function toInfraNode(file) {
12
+ const { ast } = file;
13
+ return {
14
+ fileName: file.fileName,
15
+ targetScope: file.targetScope,
16
+ ...(ast.resources.size === 0 ? {} : { resources: Object.fromEntries(ast.resources) }),
17
+ ...(ast.parameters.size === 0 ? {} : { parameters: Object.fromEntries(ast.parameters) }),
18
+ ...(ast.variables.size === 0 ? {} : { variables: Object.fromEntries(ast.variables) }),
19
+ ...(ast.outputs.size === 0 ? {} : { outputs: Object.fromEntries(ast.outputs) }),
20
+ ...(ast.modules.size === 0 ? {} : { modules: Object.fromEntries(ast.modules) }),
21
+ };
22
+ }
23
+ /** Builds enriched declaration ASTs, then plans and wires deployment files. */
24
+ export function buildBicepFiles(stack) {
25
+ const resources = collectResourceDeclarations(stack);
26
+ validateResourceAncestry(stack, resources);
27
+ const symbols = createSymbolMap(resources, stack, RESOURCE_NAME_OVERRIDES);
28
+ const declarations = buildStackDeclarations(stack, resources, symbols);
29
+ const stackAst = {
30
+ targetScope: stack.targetScope,
31
+ resources: new Map(Object.entries(declarations.resources ?? {})),
32
+ parameters: new Map(Object.entries(declarations.parameters ?? {})),
33
+ variables: new Map(Object.entries(declarations.variables ?? {})),
34
+ outputs: new Map(Object.entries(declarations.outputs ?? {})),
35
+ modules: new Map(),
36
+ };
37
+ const namer = new BicepNamer(stackAst);
38
+ const resourceContexts = collectAuthoredResourceContexts(resources, symbols);
39
+ const layout = planDeploymentFiles(stackAst, resourceContexts);
40
+ const prepared = prepareDeploymentFiles(stack.name, stackAst, resourceContexts, layout, namer);
41
+ if (prepared.modules.length > 0) {
42
+ wireDeploymentFiles(stack.name, prepared);
43
+ }
44
+ return [toInfraNode(prepared.entry), ...prepared.modules.map(({ file }) => toInfraNode(file))];
45
+ }
46
+ //# sourceMappingURL=build-bicep-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-bicep-files.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/build-bicep-files.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Stack } from \"../../../constructs/stack.js\";\nimport { collectResourceDeclarations } from \"../../../constructs/resource/resource-query.js\";\nimport { buildStackDeclarations } from \"../../ast/declaration-builder.js\";\nimport { createSymbolMap } from \"../../symbol-map.js\";\nimport type { InfraNode } from \"../../ast/index.js\";\nimport { collectAuthoredResourceContexts, validateResourceAncestry } from \"./authored-context.js\";\nimport { planDeploymentFiles } from \"./deployment-planning.js\";\nimport { BicepNamer, RESOURCE_NAME_OVERRIDES } from \"./bicep-namer.js\";\nimport {\n prepareDeploymentFiles,\n type BicepAst,\n type PreparedBicepFile,\n} from \"./file-preparation.js\";\nimport { wireDeploymentFiles } from \"./reference-wiring.js\";\n\nexport function toInfraNode(file: PreparedBicepFile): InfraNode {\n const { ast } = file;\n return {\n fileName: file.fileName,\n targetScope: file.targetScope,\n ...(ast.resources.size === 0 ? {} : { resources: Object.fromEntries(ast.resources) }),\n ...(ast.parameters.size === 0 ? {} : { parameters: Object.fromEntries(ast.parameters) }),\n ...(ast.variables.size === 0 ? {} : { variables: Object.fromEntries(ast.variables) }),\n ...(ast.outputs.size === 0 ? {} : { outputs: Object.fromEntries(ast.outputs) }),\n ...(ast.modules.size === 0 ? {} : { modules: Object.fromEntries(ast.modules) }),\n };\n}\n\n/** Builds enriched declaration ASTs, then plans and wires deployment files. */\nexport function buildBicepFiles(stack: Stack): readonly InfraNode[] {\n const resources = collectResourceDeclarations(stack);\n validateResourceAncestry(stack, resources);\n const symbols = createSymbolMap(resources, stack, RESOURCE_NAME_OVERRIDES);\n const declarations = buildStackDeclarations(stack, resources, symbols);\n const stackAst: BicepAst = {\n targetScope: stack.targetScope,\n resources: new Map(Object.entries(declarations.resources ?? {})),\n parameters: new Map(Object.entries(declarations.parameters ?? {})),\n variables: new Map(Object.entries(declarations.variables ?? {})),\n outputs: new Map(Object.entries(declarations.outputs ?? {})),\n modules: new Map(),\n };\n const namer = new BicepNamer(stackAst);\n const resourceContexts = collectAuthoredResourceContexts(resources, symbols);\n const layout = planDeploymentFiles(stackAst, resourceContexts);\n const prepared = prepareDeploymentFiles(stack.name, stackAst, resourceContexts, layout, namer);\n if (prepared.modules.length > 0) {\n wireDeploymentFiles(stack.name, prepared);\n }\n return [toInfraNode(prepared.entry), ...prepared.modules.map(({ file }) => toInfraNode(file))];\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import type { ExpressionNode, TargetScope } from "../../ast/index.js";
2
+ import type { AuthoredResourceContext } from "./authored-context.js";
3
+ import type { BicepAst } from "./file-preparation.js";
4
+ export interface DeploymentFilePlan {
5
+ readonly boundary: string | undefined;
6
+ readonly resources: Set<string>;
7
+ readonly authoredResourceGroup: string | undefined;
8
+ readonly moduleScope: ExpressionNode | undefined;
9
+ readonly targetScope: TargetScope;
10
+ }
11
+ export interface DeploymentLayout {
12
+ readonly entryPlan: DeploymentFilePlan;
13
+ readonly deployments: readonly DeploymentFilePlan[];
14
+ readonly pureExistingResources: ReadonlySet<string>;
15
+ readonly existingResourceToAuthoredResourceGroup: ReadonlyMap<string, string | undefined>;
16
+ readonly existingResourcesWithExplicitScope: ReadonlySet<string>;
17
+ }
18
+ export declare function planDeploymentFiles(stackAst: BicepAst, authoredContexts: ReadonlyMap<string, AuthoredResourceContext>): DeploymentLayout;
19
+ //# sourceMappingURL=deployment-planning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-planning.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/deployment-planning.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,uCAAuC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1F,QAAQ,CAAC,kCAAkC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClE;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAC7D,gBAAgB,CAmElB"}
@@ -0,0 +1,68 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { ResourceGroup } from "../../../constructs/built-in-resources/resource-group.js";
4
+ import { getResourceBody } from "../../ast/resource-utils.js";
5
+ import { groupArmResourcesByRoot, getTargetScope } from "./deployment-resource-utils.js";
6
+ export function planDeploymentFiles(stackAst, authoredContexts) {
7
+ const entryPlan = {
8
+ boundary: undefined,
9
+ resources: new Set(),
10
+ authoredResourceGroup: undefined,
11
+ moduleScope: undefined,
12
+ targetScope: stackAst.targetScope,
13
+ };
14
+ const armResourcesByRoot = groupArmResourcesByRoot(stackAst.resources, authoredContexts);
15
+ const deployments = [];
16
+ const pureExistingResources = new Set();
17
+ const existingResourceToAuthoredResourceGroup = new Map();
18
+ const existingResourcesWithExplicitScope = new Set();
19
+ for (const [root, treeResources] of armResourcesByRoot) {
20
+ const resource = stackAst.resources.get(root);
21
+ const rootContext = authoredContexts.get(root);
22
+ const authoredResourceGroup = rootContext.authoredParent;
23
+ const moduleScope = rootContext.scopeOrigin === "pass-through-explicit"
24
+ ? authoredResourceGroup === undefined
25
+ ? undefined
26
+ : { kind: "identifier", id: authoredResourceGroup }
27
+ : getResourceBody(resource.value).value.scope;
28
+ if (resource.type === ResourceGroup.resourceType ||
29
+ (stackAst.targetScope === "subscription" && moduleScope === undefined)) {
30
+ for (const name of treeResources)
31
+ entryPlan.resources.add(name);
32
+ }
33
+ else if ([...treeResources].every((name) => stackAst.resources.get(name).existing)) {
34
+ for (const name of treeResources) {
35
+ pureExistingResources.add(name);
36
+ existingResourceToAuthoredResourceGroup.set(name, authoredResourceGroup);
37
+ for (let ancestor = name; ancestor !== undefined && ancestor !== authoredResourceGroup; ancestor = authoredContexts.get(ancestor).authoredParent) {
38
+ const origin = authoredContexts.get(ancestor).scopeOrigin;
39
+ if (origin === "existing-explicit" || origin === "pass-through-explicit") {
40
+ existingResourcesWithExplicitScope.add(name);
41
+ break;
42
+ }
43
+ }
44
+ }
45
+ }
46
+ else {
47
+ deployments.push({
48
+ boundary: root,
49
+ resources: treeResources,
50
+ authoredResourceGroup,
51
+ moduleScope,
52
+ targetScope: rootContext.scopeOrigin === "resourceGroup" ||
53
+ (rootContext.scopeOrigin === "pass-through-explicit" &&
54
+ authoredResourceGroup !== undefined)
55
+ ? "resourceGroup"
56
+ : getTargetScope(moduleScope, stackAst.targetScope),
57
+ });
58
+ }
59
+ }
60
+ return {
61
+ entryPlan,
62
+ deployments,
63
+ pureExistingResources,
64
+ existingResourceToAuthoredResourceGroup,
65
+ existingResourcesWithExplicitScope,
66
+ };
67
+ }
68
+ //# sourceMappingURL=deployment-planning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-planning.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/deployment-planning.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ResourceGroup } from \"../../../constructs/built-in-resources/resource-group.js\";\nimport type { ExpressionNode, TargetScope } from \"../../ast/index.js\";\nimport { getResourceBody } from \"../../ast/resource-utils.js\";\nimport type { AuthoredResourceContext } from \"./authored-context.js\";\nimport { groupArmResourcesByRoot, getTargetScope } from \"./deployment-resource-utils.js\";\nimport type { BicepAst } from \"./file-preparation.js\";\n\nexport interface DeploymentFilePlan {\n readonly boundary: string | undefined;\n readonly resources: Set<string>;\n readonly authoredResourceGroup: string | undefined;\n readonly moduleScope: ExpressionNode | undefined;\n readonly targetScope: TargetScope;\n}\n\nexport interface DeploymentLayout {\n readonly entryPlan: DeploymentFilePlan;\n readonly deployments: readonly DeploymentFilePlan[];\n readonly pureExistingResources: ReadonlySet<string>;\n readonly existingResourceToAuthoredResourceGroup: ReadonlyMap<string, string | undefined>;\n readonly existingResourcesWithExplicitScope: ReadonlySet<string>;\n}\n\nexport function planDeploymentFiles(\n stackAst: BicepAst,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n): DeploymentLayout {\n const entryPlan: DeploymentFilePlan = {\n boundary: undefined,\n resources: new Set(),\n authoredResourceGroup: undefined,\n moduleScope: undefined,\n targetScope: stackAst.targetScope,\n };\n const armResourcesByRoot = groupArmResourcesByRoot(stackAst.resources, authoredContexts);\n\n const deployments: DeploymentFilePlan[] = [];\n const pureExistingResources = new Set<string>();\n const existingResourceToAuthoredResourceGroup = new Map<string, string | undefined>();\n const existingResourcesWithExplicitScope = new Set<string>();\n for (const [root, treeResources] of armResourcesByRoot) {\n const resource = stackAst.resources.get(root)!;\n const rootContext = authoredContexts.get(root)!;\n const authoredResourceGroup = rootContext.authoredParent;\n const moduleScope =\n rootContext.scopeOrigin === \"pass-through-explicit\"\n ? authoredResourceGroup === undefined\n ? undefined\n : { kind: \"identifier\" as const, id: authoredResourceGroup }\n : getResourceBody(resource.value).value.scope;\n if (\n resource.type === ResourceGroup.resourceType ||\n (stackAst.targetScope === \"subscription\" && moduleScope === undefined)\n ) {\n for (const name of treeResources) entryPlan.resources.add(name);\n } else if ([...treeResources].every((name) => stackAst.resources.get(name)!.existing)) {\n for (const name of treeResources) {\n pureExistingResources.add(name);\n existingResourceToAuthoredResourceGroup.set(name, authoredResourceGroup);\n for (\n let ancestor: string | undefined = name;\n ancestor !== undefined && ancestor !== authoredResourceGroup;\n ancestor = authoredContexts.get(ancestor)!.authoredParent\n ) {\n const origin = authoredContexts.get(ancestor)!.scopeOrigin;\n if (origin === \"existing-explicit\" || origin === \"pass-through-explicit\") {\n existingResourcesWithExplicitScope.add(name);\n break;\n }\n }\n }\n } else {\n deployments.push({\n boundary: root,\n resources: treeResources,\n authoredResourceGroup,\n moduleScope,\n targetScope:\n rootContext.scopeOrigin === \"resourceGroup\" ||\n (rootContext.scopeOrigin === \"pass-through-explicit\" &&\n authoredResourceGroup !== undefined)\n ? \"resourceGroup\"\n : getTargetScope(moduleScope, stackAst.targetScope),\n });\n }\n }\n return {\n entryPlan,\n deployments,\n pureExistingResources,\n existingResourceToAuthoredResourceGroup,\n existingResourcesWithExplicitScope,\n };\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { ExpressionNode, ResourceDeclarationNode, TargetScope } from "../../ast/index.js";
2
+ import type { AuthoredResourceContext } from "./authored-context.js";
3
+ import type { BicepAst } from "./file-preparation.js";
4
+ export declare function groupArmResourcesByRoot(resources: ReadonlyMap<string, ResourceDeclarationNode>, authoredContexts: ReadonlyMap<string, AuthoredResourceContext>): Map<string, Set<string>>;
5
+ export declare function hasArmParent(name: string, resources: ReadonlyMap<string, ResourceDeclarationNode>, authoredContexts: ReadonlyMap<string, AuthoredResourceContext>): boolean;
6
+ export declare function getTargetScope(scope: ExpressionNode | undefined, fallback: TargetScope): TargetScope;
7
+ export declare function normalizeExtensionScopes(stackAst: BicepAst): void;
8
+ //# sourceMappingURL=deployment-resource-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-resource-utils.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/deployment-resource-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG/F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAC7D,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAsB1B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAC7D,OAAO,CAGT;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,QAAQ,EAAE,WAAW,GACpB,WAAW,CAUb;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAyBjE"}
@@ -0,0 +1,67 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { ResourceGroup } from "../../../constructs/built-in-resources/resource-group.js";
4
+ import { getResourceArmParentIdentifier, updateResourceBody } from "../../ast/resource-utils.js";
5
+ import { getScopeFunctionTarget } from "../../../expression/utils.js";
6
+ export function groupArmResourcesByRoot(resources, authoredContexts) {
7
+ const armRootByResource = new Map();
8
+ function getArmTreeRoot(name) {
9
+ const cached = armRootByResource.get(name);
10
+ if (cached !== undefined)
11
+ return cached;
12
+ const parent = authoredContexts.get(name).authoredParent;
13
+ const root = parent === undefined || resources.get(parent).type === ResourceGroup.resourceType
14
+ ? name
15
+ : getArmTreeRoot(parent);
16
+ armRootByResource.set(name, root);
17
+ return root;
18
+ }
19
+ const armResourcesByRoot = new Map();
20
+ for (const name of resources.keys()) {
21
+ const root = getArmTreeRoot(name);
22
+ const treeResources = armResourcesByRoot.get(root) ?? new Set();
23
+ treeResources.add(name);
24
+ armResourcesByRoot.set(root, treeResources);
25
+ }
26
+ return armResourcesByRoot;
27
+ }
28
+ export function hasArmParent(name, resources, authoredContexts) {
29
+ const parent = authoredContexts.get(name).authoredParent;
30
+ return parent !== undefined && resources.get(parent).type !== ResourceGroup.resourceType;
31
+ }
32
+ export function getTargetScope(scope, fallback) {
33
+ if (scope === undefined)
34
+ return fallback;
35
+ if (scope.kind !== "function-call" || typeof scope.target !== "string") {
36
+ throw new Error("Unsupported authored deployment scope expression.");
37
+ }
38
+ const target = getScopeFunctionTarget(scope);
39
+ if (target !== undefined) {
40
+ return target;
41
+ }
42
+ throw new Error(`Unsupported deployment scope function "${scope.target}".`);
43
+ }
44
+ export function normalizeExtensionScopes(stackAst) {
45
+ // JSON builders preserve ARM parent metadata; Bicep uses scope for extensions.
46
+ for (const [name, resource] of stackAst.resources) {
47
+ const armParentIdentifier = getResourceArmParentIdentifier(resource);
48
+ const armParent = armParentIdentifier === undefined ? undefined : stackAst.resources.get(armParentIdentifier);
49
+ if (armParentIdentifier !== undefined && armParent === undefined) {
50
+ throw new Error(`Missing ARM parent "${armParentIdentifier}" for resource "${name}".`);
51
+ }
52
+ if (armParent !== undefined &&
53
+ !resource.type.toLowerCase().startsWith(`${armParent.type.toLowerCase()}/`)) {
54
+ stackAst.resources.set(name, {
55
+ ...resource,
56
+ value: updateResourceBody(resource.value, (body) => {
57
+ const { parent: target, ...rest } = body.value;
58
+ if (target === undefined) {
59
+ throw new Error(`Missing extension target for "${name}".`);
60
+ }
61
+ return { ...body, value: { scope: target, ...rest } };
62
+ }),
63
+ });
64
+ }
65
+ }
66
+ }
67
+ //# sourceMappingURL=deployment-resource-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-resource-utils.js","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/deployment-resource-utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ResourceGroup } from \"../../../constructs/built-in-resources/resource-group.js\";\nimport type { ExpressionNode, ResourceDeclarationNode, TargetScope } from \"../../ast/index.js\";\nimport { getResourceArmParentIdentifier, updateResourceBody } from \"../../ast/resource-utils.js\";\nimport { getScopeFunctionTarget } from \"../../../expression/utils.js\";\nimport type { AuthoredResourceContext } from \"./authored-context.js\";\nimport type { BicepAst } from \"./file-preparation.js\";\n\nexport function groupArmResourcesByRoot(\n resources: ReadonlyMap<string, ResourceDeclarationNode>,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n): Map<string, Set<string>> {\n const armRootByResource = new Map<string, string>();\n function getArmTreeRoot(name: string): string {\n const cached = armRootByResource.get(name);\n if (cached !== undefined) return cached;\n const parent = authoredContexts.get(name)!.authoredParent;\n const root =\n parent === undefined || resources.get(parent)!.type === ResourceGroup.resourceType\n ? name\n : getArmTreeRoot(parent);\n armRootByResource.set(name, root);\n return root;\n }\n\n const armResourcesByRoot = new Map<string, Set<string>>();\n for (const name of resources.keys()) {\n const root = getArmTreeRoot(name);\n const treeResources = armResourcesByRoot.get(root) ?? new Set<string>();\n treeResources.add(name);\n armResourcesByRoot.set(root, treeResources);\n }\n return armResourcesByRoot;\n}\n\nexport function hasArmParent(\n name: string,\n resources: ReadonlyMap<string, ResourceDeclarationNode>,\n authoredContexts: ReadonlyMap<string, AuthoredResourceContext>,\n): boolean {\n const parent = authoredContexts.get(name)!.authoredParent;\n return parent !== undefined && resources.get(parent)!.type !== ResourceGroup.resourceType;\n}\n\nexport function getTargetScope(\n scope: ExpressionNode | undefined,\n fallback: TargetScope,\n): TargetScope {\n if (scope === undefined) return fallback;\n if (scope.kind !== \"function-call\" || typeof scope.target !== \"string\") {\n throw new Error(\"Unsupported authored deployment scope expression.\");\n }\n const target = getScopeFunctionTarget(scope);\n if (target !== undefined) {\n return target;\n }\n throw new Error(`Unsupported deployment scope function \"${scope.target}\".`);\n}\n\nexport function normalizeExtensionScopes(stackAst: BicepAst): void {\n // JSON builders preserve ARM parent metadata; Bicep uses scope for extensions.\n for (const [name, resource] of stackAst.resources) {\n const armParentIdentifier = getResourceArmParentIdentifier(resource);\n const armParent =\n armParentIdentifier === undefined ? undefined : stackAst.resources.get(armParentIdentifier);\n if (armParentIdentifier !== undefined && armParent === undefined) {\n throw new Error(`Missing ARM parent \"${armParentIdentifier}\" for resource \"${name}\".`);\n }\n if (\n armParent !== undefined &&\n !resource.type.toLowerCase().startsWith(`${armParent.type.toLowerCase()}/`)\n ) {\n stackAst.resources.set(name, {\n ...resource,\n value: updateResourceBody(resource.value, (body) => {\n const { parent: target, ...rest } = body.value;\n if (target === undefined) {\n throw new Error(`Missing extension target for \"${name}\".`);\n }\n return { ...body, value: { scope: target, ...rest } };\n }),\n });\n }\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { ResourceDeclarationNode } from "../../ast/index.js";
2
+ import type { BicepAst } from "./file-preparation.js";
3
+ export declare function resolveFileDependencies(ast: BicepAst, stackAst: BicepAst, lookups: ReadonlyMap<string, ResourceDeclarationNode>): void;
4
+ //# sourceMappingURL=file-dependencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-dependencies.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/bicep/file-layout/file-dependencies.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,GACpD,IAAI,CA4BN"}
@@ -0,0 +1,32 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { collectDependenciesForDeclaration } from "../../ast/declaration-dependencies.js";
4
+ export function resolveFileDependencies(ast, stackAst, lookups) {
5
+ const declarations = new Map([
6
+ ...stackAst.variables,
7
+ ...stackAst.parameters,
8
+ ...lookups,
9
+ ...ast.resources,
10
+ ]);
11
+ const references = collectDependenciesForDeclaration([...ast.resources.values(), ...ast.outputs.values(), ...ast.modules.values()], { recursive: true, declarations });
12
+ const selectedResources = new Map([...lookups, ...ast.resources]);
13
+ const includedResources = new Set(ast.resources.keys());
14
+ ast.resources.clear();
15
+ for (const name of stackAst.resources.keys()) {
16
+ const resource = selectedResources.get(name);
17
+ if (resource !== undefined && (includedResources.has(name) || references.has(name))) {
18
+ ast.resources.set(name, resource);
19
+ }
20
+ }
21
+ ast.variables.clear();
22
+ for (const [name, variable] of stackAst.variables) {
23
+ if (references.has(name))
24
+ ast.variables.set(name, variable);
25
+ }
26
+ ast.parameters.clear();
27
+ for (const [name, parameter] of stackAst.parameters) {
28
+ if (references.has(name))
29
+ ast.parameters.set(name, parameter);
30
+ }
31
+ }
32
+ //# sourceMappingURL=file-dependencies.js.map
@@ -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"}