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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +49 -10
  3. package/dist/browser/constructs/built-in-resources/resource-group.d.ts +7 -1
  4. package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  5. package/dist/browser/constructs/built-in-resources/resource-group.js +26 -6
  6. package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -1
  7. package/dist/browser/constructs/output.d.ts +1 -1
  8. package/dist/browser/constructs/output.d.ts.map +1 -1
  9. package/dist/browser/constructs/output.js.map +1 -1
  10. package/dist/browser/constructs/parameter.d.ts +1 -1
  11. package/dist/browser/constructs/parameter.d.ts.map +1 -1
  12. package/dist/browser/constructs/parameter.js.map +1 -1
  13. package/dist/browser/constructs/resource/resource-query.d.ts +3 -1
  14. package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -1
  15. package/dist/browser/constructs/resource/resource-query.js +10 -0
  16. package/dist/browser/constructs/resource/resource-query.js.map +1 -1
  17. package/dist/browser/constructs/resource/resource-relationships.d.ts +9 -0
  18. package/dist/browser/constructs/resource/resource-relationships.d.ts.map +1 -0
  19. package/dist/browser/constructs/resource/resource-relationships.js +35 -0
  20. package/dist/browser/constructs/resource/resource-relationships.js.map +1 -0
  21. package/dist/browser/constructs/resource/resource.d.ts +11 -17
  22. package/dist/browser/constructs/resource/resource.d.ts.map +1 -1
  23. package/dist/browser/constructs/resource/resource.js +70 -28
  24. package/dist/browser/constructs/resource/resource.js.map +1 -1
  25. package/dist/browser/constructs/stack.d.ts +2 -16
  26. package/dist/browser/constructs/stack.d.ts.map +1 -1
  27. package/dist/browser/constructs/stack.js +1 -15
  28. package/dist/browser/constructs/stack.js.map +1 -1
  29. package/dist/browser/expression/ast-nodes.d.ts +1 -1
  30. package/dist/browser/expression/ast-nodes.d.ts.map +1 -1
  31. package/dist/browser/expression/ast-nodes.js.map +1 -1
  32. package/dist/browser/expression/expressions.d.ts +2 -9
  33. package/dist/browser/expression/expressions.d.ts.map +1 -1
  34. package/dist/browser/expression/expressions.js +2 -9
  35. package/dist/browser/expression/expressions.js.map +1 -1
  36. package/dist/browser/expression/utils.d.ts +5 -0
  37. package/dist/browser/expression/utils.d.ts.map +1 -0
  38. package/dist/browser/expression/utils.js +25 -0
  39. package/dist/browser/expression/utils.js.map +1 -0
  40. package/dist/browser/index.d.ts +4 -4
  41. package/dist/browser/index.d.ts.map +1 -1
  42. package/dist/browser/index.js.map +1 -1
  43. package/dist/browser/internal.d.ts +2 -5
  44. package/dist/browser/internal.d.ts.map +1 -1
  45. package/dist/browser/internal.js +1 -3
  46. package/dist/browser/internal.js.map +1 -1
  47. package/dist/browser/naming/name-validation.d.ts +15 -0
  48. package/dist/browser/naming/name-validation.d.ts.map +1 -0
  49. package/dist/browser/naming/name-validation.js +82 -0
  50. package/dist/browser/naming/name-validation.js.map +1 -0
  51. package/dist/browser/naming/naming-policy.d.ts +7 -7
  52. package/dist/browser/naming/naming-policy.d.ts.map +1 -1
  53. package/dist/browser/naming/naming-policy.js +166 -33
  54. package/dist/browser/naming/naming-policy.js.map +1 -1
  55. package/dist/browser/naming/naming-rules.d.ts +12 -11
  56. package/dist/browser/naming/naming-rules.d.ts.map +1 -1
  57. package/dist/browser/naming/naming-rules.js +2 -9
  58. package/dist/browser/naming/naming-rules.js.map +1 -1
  59. package/dist/browser/package.json +1 -1
  60. package/dist/{esm/serialization/json/lower.d.ts → browser/serialization/arm-object-conversion.d.ts} +11 -11
  61. package/dist/browser/serialization/arm-object-conversion.d.ts.map +1 -0
  62. package/dist/{esm/serialization/json/lower.js → browser/serialization/arm-object-conversion.js} +20 -20
  63. package/dist/browser/serialization/arm-object-conversion.js.map +1 -0
  64. package/dist/browser/serialization/ast/declaration-builder.d.ts +10 -0
  65. package/dist/browser/serialization/ast/declaration-builder.d.ts.map +1 -0
  66. package/dist/browser/serialization/ast/declaration-builder.js +265 -0
  67. package/dist/browser/serialization/ast/declaration-builder.js.map +1 -0
  68. package/dist/browser/serialization/ast/declaration-dependencies.d.ts +18 -0
  69. package/dist/browser/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  70. package/dist/browser/serialization/ast/declaration-dependencies.js +96 -0
  71. package/dist/browser/serialization/ast/declaration-dependencies.js.map +1 -0
  72. package/dist/browser/serialization/ast/expression-builder.d.ts +14 -0
  73. package/dist/browser/serialization/ast/expression-builder.d.ts.map +1 -0
  74. package/dist/browser/serialization/ast/expression-builder.js +313 -0
  75. package/dist/browser/serialization/ast/expression-builder.js.map +1 -0
  76. package/dist/browser/serialization/ast/expression-restorer.d.ts +8 -0
  77. package/dist/browser/serialization/ast/expression-restorer.d.ts.map +1 -0
  78. package/dist/browser/serialization/ast/expression-restorer.js +162 -0
  79. package/dist/browser/serialization/ast/expression-restorer.js.map +1 -0
  80. package/dist/browser/serialization/ast/expression-rewriter.d.ts +29 -0
  81. package/dist/browser/serialization/ast/expression-rewriter.d.ts.map +1 -0
  82. package/dist/browser/serialization/ast/expression-rewriter.js +257 -0
  83. package/dist/browser/serialization/ast/expression-rewriter.js.map +1 -0
  84. package/dist/browser/serialization/ast/expression-walker.d.ts +16 -0
  85. package/dist/browser/serialization/ast/expression-walker.d.ts.map +1 -0
  86. package/dist/browser/serialization/ast/expression-walker.js +154 -0
  87. package/dist/browser/serialization/ast/expression-walker.js.map +1 -0
  88. package/dist/browser/serialization/ast/generated/ast.d.ts.map +1 -0
  89. package/dist/browser/serialization/ast/generated/ast.js.map +1 -0
  90. package/dist/browser/serialization/ast/index.d.ts +7 -0
  91. package/dist/browser/serialization/ast/index.d.ts.map +1 -0
  92. package/dist/browser/serialization/ast/index.js.map +1 -0
  93. package/dist/browser/serialization/ast/resource-utils.d.ts +10 -0
  94. package/dist/browser/serialization/ast/resource-utils.d.ts.map +1 -0
  95. package/dist/browser/serialization/ast/resource-utils.js +52 -0
  96. package/dist/browser/serialization/ast/resource-utils.js.map +1 -0
  97. package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  98. package/dist/browser/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  99. package/dist/browser/serialization/bicep/file-layout/authored-context.js +57 -0
  100. package/dist/browser/serialization/bicep/file-layout/authored-context.js.map +1 -0
  101. package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  102. package/dist/browser/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  103. package/dist/browser/serialization/bicep/file-layout/bicep-namer.js +100 -0
  104. package/dist/browser/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  105. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  106. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  107. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js +46 -0
  108. package/dist/browser/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  109. package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  110. package/dist/browser/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  111. package/dist/browser/serialization/bicep/file-layout/deployment-planning.js +68 -0
  112. package/dist/browser/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  113. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  114. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  115. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
  116. package/dist/browser/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  117. package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  118. package/dist/browser/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  119. package/dist/browser/serialization/bicep/file-layout/file-dependencies.js +32 -0
  120. package/dist/browser/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  121. package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  122. package/dist/browser/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  123. package/dist/browser/serialization/bicep/file-layout/file-paths.js +46 -0
  124. package/dist/browser/serialization/bicep/file-layout/file-paths.js.map +1 -0
  125. package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  126. package/dist/browser/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  127. package/dist/browser/serialization/bicep/file-layout/file-preparation.js +140 -0
  128. package/dist/browser/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  129. package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  130. package/dist/browser/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  131. package/dist/browser/serialization/bicep/file-layout/reference-wiring.js +225 -0
  132. package/dist/browser/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  133. package/dist/browser/serialization/bicep/index.d.ts +2 -0
  134. package/dist/browser/serialization/bicep/index.d.ts.map +1 -0
  135. package/dist/browser/serialization/bicep/index.js +4 -0
  136. package/dist/browser/serialization/bicep/index.js.map +1 -0
  137. package/dist/browser/serialization/bicep/render.d.ts +11 -0
  138. package/dist/browser/serialization/bicep/render.d.ts.map +1 -0
  139. package/dist/browser/serialization/bicep/render.js +293 -0
  140. package/dist/browser/serialization/bicep/render.js.map +1 -0
  141. package/dist/browser/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  142. package/dist/browser/serialization/encoding.d.ts.map +1 -0
  143. package/dist/browser/serialization/{json/encoding.js → encoding.js} +2 -12
  144. package/dist/browser/serialization/encoding.js.map +1 -0
  145. package/dist/browser/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  146. package/dist/browser/serialization/identifiers.d.ts.map +1 -0
  147. package/dist/browser/serialization/{json/util.js → identifiers.js} +1 -1
  148. package/dist/browser/serialization/identifiers.js.map +1 -0
  149. package/dist/browser/serialization/index.d.ts +1 -1
  150. package/dist/browser/serialization/index.d.ts.map +1 -1
  151. package/dist/browser/serialization/index.js.map +1 -1
  152. package/dist/browser/serialization/json/deserialize.d.ts.map +1 -1
  153. package/dist/browser/serialization/json/deserialize.js +131 -39
  154. package/dist/browser/serialization/json/deserialize.js.map +1 -1
  155. package/dist/browser/serialization/json/serialize.d.ts +1 -1
  156. package/dist/browser/serialization/json/serialize.d.ts.map +1 -1
  157. package/dist/browser/serialization/json/serialize.js +5 -360
  158. package/dist/browser/serialization/json/serialize.js.map +1 -1
  159. package/dist/browser/serialization/pluralize-config.d.ts.map +1 -0
  160. package/dist/browser/serialization/pluralize-config.js.map +1 -0
  161. package/dist/browser/serialization/symbol-map.d.ts +10 -0
  162. package/dist/browser/serialization/symbol-map.d.ts.map +1 -0
  163. package/dist/browser/serialization/symbol-map.js +40 -0
  164. package/dist/browser/serialization/symbol-map.js.map +1 -0
  165. package/dist/browser/shape/shape.d.ts +4 -4
  166. package/dist/browser/shape/shape.js +2 -2
  167. package/dist/browser/shape/shape.js.map +1 -1
  168. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +7 -1
  169. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  170. package/dist/commonjs/constructs/built-in-resources/resource-group.js +27 -6
  171. package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +2 -2
  172. package/dist/commonjs/constructs/output.d.ts +1 -1
  173. package/dist/commonjs/constructs/output.d.ts.map +1 -1
  174. package/dist/commonjs/constructs/output.js.map +1 -1
  175. package/dist/commonjs/constructs/parameter.d.ts +1 -1
  176. package/dist/commonjs/constructs/parameter.d.ts.map +1 -1
  177. package/dist/commonjs/constructs/parameter.js.map +1 -1
  178. package/dist/commonjs/constructs/resource/resource-query.d.ts +3 -1
  179. package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -1
  180. package/dist/commonjs/constructs/resource/resource-query.js +11 -0
  181. package/dist/commonjs/constructs/resource/resource-query.js.map +2 -2
  182. package/dist/commonjs/constructs/resource/resource-relationships.d.ts +9 -0
  183. package/dist/commonjs/constructs/resource/resource-relationships.d.ts.map +1 -0
  184. package/dist/commonjs/constructs/resource/resource-relationships.js +59 -0
  185. package/dist/commonjs/constructs/resource/resource-relationships.js.map +7 -0
  186. package/dist/commonjs/constructs/resource/resource.d.ts +11 -17
  187. package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -1
  188. package/dist/commonjs/constructs/resource/resource.js +57 -35
  189. package/dist/commonjs/constructs/resource/resource.js.map +2 -2
  190. package/dist/commonjs/constructs/stack.d.ts +2 -16
  191. package/dist/commonjs/constructs/stack.d.ts.map +1 -1
  192. package/dist/commonjs/constructs/stack.js.map +2 -2
  193. package/dist/commonjs/expression/ast-nodes.d.ts +1 -1
  194. package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -1
  195. package/dist/commonjs/expression/ast-nodes.js.map +1 -1
  196. package/dist/commonjs/expression/expressions.d.ts +2 -9
  197. package/dist/commonjs/expression/expressions.d.ts.map +1 -1
  198. package/dist/commonjs/expression/expressions.js.map +2 -2
  199. package/dist/commonjs/expression/utils.d.ts +5 -0
  200. package/dist/commonjs/expression/utils.d.ts.map +1 -0
  201. package/dist/commonjs/expression/utils.js +43 -0
  202. package/dist/commonjs/expression/utils.js.map +7 -0
  203. package/dist/commonjs/index.d.ts +4 -4
  204. package/dist/commonjs/index.d.ts.map +1 -1
  205. package/dist/commonjs/index.js.map +2 -2
  206. package/dist/commonjs/internal.d.ts +2 -5
  207. package/dist/commonjs/internal.d.ts.map +1 -1
  208. package/dist/commonjs/internal.js +3 -9
  209. package/dist/commonjs/internal.js.map +2 -2
  210. package/dist/commonjs/naming/name-validation.d.ts +15 -0
  211. package/dist/commonjs/naming/name-validation.d.ts.map +1 -0
  212. package/dist/commonjs/naming/name-validation.js +74 -0
  213. package/dist/commonjs/naming/name-validation.js.map +7 -0
  214. package/dist/commonjs/naming/naming-policy.d.ts +7 -7
  215. package/dist/commonjs/naming/naming-policy.d.ts.map +1 -1
  216. package/dist/commonjs/naming/naming-policy.js +136 -26
  217. package/dist/commonjs/naming/naming-policy.js.map +2 -2
  218. package/dist/commonjs/naming/naming-rules.d.ts +12 -11
  219. package/dist/commonjs/naming/naming-rules.d.ts.map +1 -1
  220. package/dist/commonjs/naming/naming-rules.js +4 -11
  221. package/dist/commonjs/naming/naming-rules.js.map +2 -2
  222. package/dist/commonjs/package.json +1 -1
  223. package/dist/{browser/serialization/json/lower.d.ts → commonjs/serialization/arm-object-conversion.d.ts} +11 -11
  224. package/dist/commonjs/serialization/arm-object-conversion.d.ts.map +1 -0
  225. package/dist/commonjs/serialization/{json/lower.js → arm-object-conversion.js} +15 -15
  226. package/dist/commonjs/serialization/arm-object-conversion.js.map +7 -0
  227. package/dist/commonjs/serialization/ast/declaration-builder.d.ts +10 -0
  228. package/dist/commonjs/serialization/ast/declaration-builder.d.ts.map +1 -0
  229. package/dist/commonjs/serialization/ast/declaration-builder.js +274 -0
  230. package/dist/commonjs/serialization/ast/declaration-builder.js.map +7 -0
  231. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts +18 -0
  232. package/dist/commonjs/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  233. package/dist/commonjs/serialization/ast/declaration-dependencies.js +109 -0
  234. package/dist/commonjs/serialization/ast/declaration-dependencies.js.map +7 -0
  235. package/dist/commonjs/serialization/ast/expression-builder.d.ts +14 -0
  236. package/dist/commonjs/serialization/ast/expression-builder.d.ts.map +1 -0
  237. package/dist/commonjs/serialization/ast/expression-builder.js +316 -0
  238. package/dist/commonjs/serialization/ast/expression-builder.js.map +7 -0
  239. package/dist/commonjs/serialization/ast/expression-restorer.d.ts +8 -0
  240. package/dist/commonjs/serialization/ast/expression-restorer.d.ts.map +1 -0
  241. package/dist/commonjs/serialization/ast/expression-restorer.js +193 -0
  242. package/dist/commonjs/serialization/ast/expression-restorer.js.map +7 -0
  243. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts +29 -0
  244. package/dist/commonjs/serialization/ast/expression-rewriter.d.ts.map +1 -0
  245. package/dist/commonjs/serialization/ast/expression-rewriter.js +270 -0
  246. package/dist/commonjs/serialization/ast/expression-rewriter.js.map +7 -0
  247. package/dist/commonjs/serialization/ast/expression-walker.d.ts +16 -0
  248. package/dist/commonjs/serialization/ast/expression-walker.d.ts.map +1 -0
  249. package/dist/commonjs/serialization/ast/expression-walker.js +165 -0
  250. package/dist/commonjs/serialization/ast/expression-walker.js.map +7 -0
  251. package/dist/commonjs/serialization/ast/generated/ast.d.ts.map +1 -0
  252. package/dist/commonjs/serialization/{contract → ast}/generated/ast.js.map +1 -1
  253. package/dist/commonjs/serialization/ast/index.d.ts +7 -0
  254. package/dist/commonjs/serialization/ast/index.d.ts.map +1 -0
  255. package/dist/commonjs/serialization/{contract → ast}/index.js +3 -3
  256. package/dist/commonjs/serialization/ast/index.js.map +7 -0
  257. package/dist/commonjs/serialization/ast/resource-utils.d.ts +10 -0
  258. package/dist/commonjs/serialization/ast/resource-utils.d.ts.map +1 -0
  259. package/dist/commonjs/serialization/ast/resource-utils.js +71 -0
  260. package/dist/commonjs/serialization/ast/resource-utils.js.map +7 -0
  261. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  262. package/dist/commonjs/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  263. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js +74 -0
  264. package/dist/commonjs/serialization/bicep/file-layout/authored-context.js.map +7 -0
  265. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  266. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  267. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js +130 -0
  268. package/dist/commonjs/serialization/bicep/file-layout/bicep-namer.js.map +7 -0
  269. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  270. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  271. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js +71 -0
  272. package/dist/commonjs/serialization/bicep/file-layout/build-bicep-files.js.map +7 -0
  273. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  274. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  275. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js +80 -0
  276. package/dist/commonjs/serialization/bicep/file-layout/deployment-planning.js.map +7 -0
  277. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  278. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  279. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js +91 -0
  280. package/dist/commonjs/serialization/bicep/file-layout/deployment-resource-utils.js.map +7 -0
  281. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  282. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  283. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js +57 -0
  284. package/dist/commonjs/serialization/bicep/file-layout/file-dependencies.js.map +7 -0
  285. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  286. package/dist/commonjs/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  287. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js +70 -0
  288. package/dist/commonjs/serialization/bicep/file-layout/file-paths.js.map +7 -0
  289. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  290. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  291. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js +190 -0
  292. package/dist/commonjs/serialization/bicep/file-layout/file-preparation.js.map +7 -0
  293. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  294. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  295. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js +241 -0
  296. package/dist/commonjs/serialization/bicep/file-layout/reference-wiring.js.map +7 -0
  297. package/dist/commonjs/serialization/bicep/index.d.ts +2 -0
  298. package/dist/commonjs/serialization/bicep/index.d.ts.map +1 -0
  299. package/dist/commonjs/serialization/bicep/index.js +28 -0
  300. package/dist/commonjs/serialization/bicep/index.js.map +7 -0
  301. package/dist/commonjs/serialization/bicep/render.d.ts +11 -0
  302. package/dist/commonjs/serialization/bicep/render.d.ts.map +1 -0
  303. package/dist/commonjs/serialization/bicep/render.js +312 -0
  304. package/dist/commonjs/serialization/bicep/render.js.map +7 -0
  305. package/dist/commonjs/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  306. package/dist/commonjs/serialization/encoding.d.ts.map +1 -0
  307. package/dist/commonjs/serialization/{json/encoding.js → encoding.js} +2 -12
  308. package/dist/commonjs/serialization/encoding.js.map +7 -0
  309. package/dist/commonjs/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  310. package/dist/commonjs/serialization/identifiers.d.ts.map +1 -0
  311. package/dist/commonjs/serialization/{json/util.js → identifiers.js} +4 -4
  312. package/dist/commonjs/serialization/{json/util.js.map → identifiers.js.map} +1 -1
  313. package/dist/commonjs/serialization/index.d.ts +1 -1
  314. package/dist/commonjs/serialization/index.d.ts.map +1 -1
  315. package/dist/commonjs/serialization/index.js.map +1 -1
  316. package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -1
  317. package/dist/commonjs/serialization/json/deserialize.js +115 -44
  318. package/dist/commonjs/serialization/json/deserialize.js.map +2 -2
  319. package/dist/commonjs/serialization/json/serialize.d.ts +1 -1
  320. package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -1
  321. package/dist/commonjs/serialization/json/serialize.js +6 -308
  322. package/dist/commonjs/serialization/json/serialize.js.map +3 -3
  323. package/dist/commonjs/serialization/pluralize-config.d.ts.map +1 -0
  324. package/dist/commonjs/serialization/{json/pluralize-config.js.map → pluralize-config.js.map} +1 -1
  325. package/dist/commonjs/serialization/symbol-map.d.ts +10 -0
  326. package/dist/commonjs/serialization/symbol-map.d.ts.map +1 -0
  327. package/dist/commonjs/serialization/symbol-map.js +72 -0
  328. package/dist/commonjs/serialization/symbol-map.js.map +7 -0
  329. package/dist/commonjs/shape/shape.d.ts +4 -4
  330. package/dist/commonjs/shape/shape.js.map +1 -1
  331. package/dist/commonjs/tsdoc-metadata.json +1 -1
  332. package/dist/esm/constructs/built-in-resources/resource-group.d.ts +7 -1
  333. package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -1
  334. package/dist/esm/constructs/built-in-resources/resource-group.js +26 -6
  335. package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -1
  336. package/dist/esm/constructs/output.d.ts +1 -1
  337. package/dist/esm/constructs/output.d.ts.map +1 -1
  338. package/dist/esm/constructs/output.js.map +1 -1
  339. package/dist/esm/constructs/parameter.d.ts +1 -1
  340. package/dist/esm/constructs/parameter.d.ts.map +1 -1
  341. package/dist/esm/constructs/parameter.js.map +1 -1
  342. package/dist/esm/constructs/resource/resource-query.d.ts +3 -1
  343. package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -1
  344. package/dist/esm/constructs/resource/resource-query.js +10 -0
  345. package/dist/esm/constructs/resource/resource-query.js.map +1 -1
  346. package/dist/esm/constructs/resource/resource-relationships.d.ts +9 -0
  347. package/dist/esm/constructs/resource/resource-relationships.d.ts.map +1 -0
  348. package/dist/esm/constructs/resource/resource-relationships.js +35 -0
  349. package/dist/esm/constructs/resource/resource-relationships.js.map +1 -0
  350. package/dist/esm/constructs/resource/resource.d.ts +11 -17
  351. package/dist/esm/constructs/resource/resource.d.ts.map +1 -1
  352. package/dist/esm/constructs/resource/resource.js +70 -28
  353. package/dist/esm/constructs/resource/resource.js.map +1 -1
  354. package/dist/esm/constructs/stack.d.ts +2 -16
  355. package/dist/esm/constructs/stack.d.ts.map +1 -1
  356. package/dist/esm/constructs/stack.js +1 -15
  357. package/dist/esm/constructs/stack.js.map +1 -1
  358. package/dist/esm/expression/ast-nodes.d.ts +1 -1
  359. package/dist/esm/expression/ast-nodes.d.ts.map +1 -1
  360. package/dist/esm/expression/ast-nodes.js.map +1 -1
  361. package/dist/esm/expression/expressions.d.ts +2 -9
  362. package/dist/esm/expression/expressions.d.ts.map +1 -1
  363. package/dist/esm/expression/expressions.js +2 -9
  364. package/dist/esm/expression/expressions.js.map +1 -1
  365. package/dist/esm/expression/utils.d.ts +5 -0
  366. package/dist/esm/expression/utils.d.ts.map +1 -0
  367. package/dist/esm/expression/utils.js +25 -0
  368. package/dist/esm/expression/utils.js.map +1 -0
  369. package/dist/esm/index.d.ts +4 -4
  370. package/dist/esm/index.d.ts.map +1 -1
  371. package/dist/esm/index.js.map +1 -1
  372. package/dist/esm/internal.d.ts +2 -5
  373. package/dist/esm/internal.d.ts.map +1 -1
  374. package/dist/esm/internal.js +1 -3
  375. package/dist/esm/internal.js.map +1 -1
  376. package/dist/esm/naming/name-validation.d.ts +15 -0
  377. package/dist/esm/naming/name-validation.d.ts.map +1 -0
  378. package/dist/esm/naming/name-validation.js +82 -0
  379. package/dist/esm/naming/name-validation.js.map +1 -0
  380. package/dist/esm/naming/naming-policy.d.ts +7 -7
  381. package/dist/esm/naming/naming-policy.d.ts.map +1 -1
  382. package/dist/esm/naming/naming-policy.js +166 -33
  383. package/dist/esm/naming/naming-policy.js.map +1 -1
  384. package/dist/esm/naming/naming-rules.d.ts +12 -11
  385. package/dist/esm/naming/naming-rules.d.ts.map +1 -1
  386. package/dist/esm/naming/naming-rules.js +2 -9
  387. package/dist/esm/naming/naming-rules.js.map +1 -1
  388. package/dist/esm/package.json +1 -1
  389. package/dist/{commonjs/serialization/json/lower.d.ts → esm/serialization/arm-object-conversion.d.ts} +11 -11
  390. package/dist/esm/serialization/arm-object-conversion.d.ts.map +1 -0
  391. package/dist/{browser/serialization/json/lower.js → esm/serialization/arm-object-conversion.js} +20 -20
  392. package/dist/esm/serialization/arm-object-conversion.js.map +1 -0
  393. package/dist/esm/serialization/ast/declaration-builder.d.ts +10 -0
  394. package/dist/esm/serialization/ast/declaration-builder.d.ts.map +1 -0
  395. package/dist/esm/serialization/ast/declaration-builder.js +265 -0
  396. package/dist/esm/serialization/ast/declaration-builder.js.map +1 -0
  397. package/dist/esm/serialization/ast/declaration-dependencies.d.ts +18 -0
  398. package/dist/esm/serialization/ast/declaration-dependencies.d.ts.map +1 -0
  399. package/dist/esm/serialization/ast/declaration-dependencies.js +96 -0
  400. package/dist/esm/serialization/ast/declaration-dependencies.js.map +1 -0
  401. package/dist/esm/serialization/ast/expression-builder.d.ts +14 -0
  402. package/dist/esm/serialization/ast/expression-builder.d.ts.map +1 -0
  403. package/dist/esm/serialization/ast/expression-builder.js +313 -0
  404. package/dist/esm/serialization/ast/expression-builder.js.map +1 -0
  405. package/dist/esm/serialization/ast/expression-restorer.d.ts +8 -0
  406. package/dist/esm/serialization/ast/expression-restorer.d.ts.map +1 -0
  407. package/dist/esm/serialization/ast/expression-restorer.js +162 -0
  408. package/dist/esm/serialization/ast/expression-restorer.js.map +1 -0
  409. package/dist/esm/serialization/ast/expression-rewriter.d.ts +29 -0
  410. package/dist/esm/serialization/ast/expression-rewriter.d.ts.map +1 -0
  411. package/dist/esm/serialization/ast/expression-rewriter.js +257 -0
  412. package/dist/esm/serialization/ast/expression-rewriter.js.map +1 -0
  413. package/dist/esm/serialization/ast/expression-walker.d.ts +16 -0
  414. package/dist/esm/serialization/ast/expression-walker.d.ts.map +1 -0
  415. package/dist/esm/serialization/ast/expression-walker.js +154 -0
  416. package/dist/esm/serialization/ast/expression-walker.js.map +1 -0
  417. package/dist/esm/serialization/ast/generated/ast.d.ts.map +1 -0
  418. package/dist/esm/serialization/ast/generated/ast.js.map +1 -0
  419. package/dist/esm/serialization/ast/index.d.ts +7 -0
  420. package/dist/esm/serialization/ast/index.d.ts.map +1 -0
  421. package/dist/esm/serialization/ast/index.js.map +1 -0
  422. package/dist/esm/serialization/ast/resource-utils.d.ts +10 -0
  423. package/dist/esm/serialization/ast/resource-utils.d.ts.map +1 -0
  424. package/dist/esm/serialization/ast/resource-utils.js +52 -0
  425. package/dist/esm/serialization/ast/resource-utils.js.map +1 -0
  426. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts +12 -0
  427. package/dist/esm/serialization/bicep/file-layout/authored-context.d.ts.map +1 -0
  428. package/dist/esm/serialization/bicep/file-layout/authored-context.js +57 -0
  429. package/dist/esm/serialization/bicep/file-layout/authored-context.js.map +1 -0
  430. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts +11 -0
  431. package/dist/esm/serialization/bicep/file-layout/bicep-namer.d.ts.map +1 -0
  432. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js +100 -0
  433. package/dist/esm/serialization/bicep/file-layout/bicep-namer.js.map +1 -0
  434. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts +7 -0
  435. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.d.ts.map +1 -0
  436. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js +46 -0
  437. package/dist/esm/serialization/bicep/file-layout/build-bicep-files.js.map +1 -0
  438. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts +19 -0
  439. package/dist/esm/serialization/bicep/file-layout/deployment-planning.d.ts.map +1 -0
  440. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js +68 -0
  441. package/dist/esm/serialization/bicep/file-layout/deployment-planning.js.map +1 -0
  442. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts +8 -0
  443. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.d.ts.map +1 -0
  444. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js +67 -0
  445. package/dist/esm/serialization/bicep/file-layout/deployment-resource-utils.js.map +1 -0
  446. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts +4 -0
  447. package/dist/esm/serialization/bicep/file-layout/file-dependencies.d.ts.map +1 -0
  448. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js +32 -0
  449. package/dist/esm/serialization/bicep/file-layout/file-dependencies.js.map +1 -0
  450. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts +3 -0
  451. package/dist/esm/serialization/bicep/file-layout/file-paths.d.ts.map +1 -0
  452. package/dist/esm/serialization/bicep/file-layout/file-paths.js +46 -0
  453. package/dist/esm/serialization/bicep/file-layout/file-paths.js.map +1 -0
  454. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts +34 -0
  455. package/dist/esm/serialization/bicep/file-layout/file-preparation.d.ts.map +1 -0
  456. package/dist/esm/serialization/bicep/file-layout/file-preparation.js +140 -0
  457. package/dist/esm/serialization/bicep/file-layout/file-preparation.js.map +1 -0
  458. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts +3 -0
  459. package/dist/esm/serialization/bicep/file-layout/reference-wiring.d.ts.map +1 -0
  460. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js +225 -0
  461. package/dist/esm/serialization/bicep/file-layout/reference-wiring.js.map +1 -0
  462. package/dist/esm/serialization/bicep/index.d.ts +2 -0
  463. package/dist/esm/serialization/bicep/index.d.ts.map +1 -0
  464. package/dist/esm/serialization/bicep/index.js +4 -0
  465. package/dist/esm/serialization/bicep/index.js.map +1 -0
  466. package/dist/esm/serialization/bicep/render.d.ts +11 -0
  467. package/dist/esm/serialization/bicep/render.d.ts.map +1 -0
  468. package/dist/esm/serialization/bicep/render.js +293 -0
  469. package/dist/esm/serialization/bicep/render.js.map +1 -0
  470. package/dist/esm/serialization/{json/encoding.d.ts → encoding.d.ts} +1 -1
  471. package/dist/esm/serialization/encoding.d.ts.map +1 -0
  472. package/dist/esm/serialization/{json/encoding.js → encoding.js} +2 -12
  473. package/dist/esm/serialization/encoding.js.map +1 -0
  474. package/dist/esm/serialization/{json/util.d.ts → identifiers.d.ts} +1 -1
  475. package/dist/esm/serialization/identifiers.d.ts.map +1 -0
  476. package/dist/esm/serialization/{json/util.js → identifiers.js} +1 -1
  477. package/dist/esm/serialization/identifiers.js.map +1 -0
  478. package/dist/esm/serialization/index.d.ts +1 -1
  479. package/dist/esm/serialization/index.d.ts.map +1 -1
  480. package/dist/esm/serialization/index.js.map +1 -1
  481. package/dist/esm/serialization/json/deserialize.d.ts.map +1 -1
  482. package/dist/esm/serialization/json/deserialize.js +131 -39
  483. package/dist/esm/serialization/json/deserialize.js.map +1 -1
  484. package/dist/esm/serialization/json/serialize.d.ts +1 -1
  485. package/dist/esm/serialization/json/serialize.d.ts.map +1 -1
  486. package/dist/esm/serialization/json/serialize.js +5 -360
  487. package/dist/esm/serialization/json/serialize.js.map +1 -1
  488. package/dist/esm/serialization/pluralize-config.d.ts.map +1 -0
  489. package/dist/esm/serialization/pluralize-config.js.map +1 -0
  490. package/dist/esm/serialization/symbol-map.d.ts +10 -0
  491. package/dist/esm/serialization/symbol-map.d.ts.map +1 -0
  492. package/dist/esm/serialization/symbol-map.js +40 -0
  493. package/dist/esm/serialization/symbol-map.js.map +1 -0
  494. package/dist/esm/shape/shape.d.ts +4 -4
  495. package/dist/esm/shape/shape.js +2 -2
  496. package/dist/esm/shape/shape.js.map +1 -1
  497. package/package.json +3 -2
  498. package/dist/browser/serialization/contract/generated/ast.d.ts.map +0 -1
  499. package/dist/browser/serialization/contract/generated/ast.js.map +0 -1
  500. package/dist/browser/serialization/contract/index.d.ts +0 -2
  501. package/dist/browser/serialization/contract/index.d.ts.map +0 -1
  502. package/dist/browser/serialization/contract/index.js.map +0 -1
  503. package/dist/browser/serialization/json/encoding.d.ts.map +0 -1
  504. package/dist/browser/serialization/json/encoding.js.map +0 -1
  505. package/dist/browser/serialization/json/expression.d.ts +0 -32
  506. package/dist/browser/serialization/json/expression.d.ts.map +0 -1
  507. package/dist/browser/serialization/json/expression.js +0 -494
  508. package/dist/browser/serialization/json/expression.js.map +0 -1
  509. package/dist/browser/serialization/json/lower.d.ts.map +0 -1
  510. package/dist/browser/serialization/json/lower.js.map +0 -1
  511. package/dist/browser/serialization/json/pluralize-config.d.ts.map +0 -1
  512. package/dist/browser/serialization/json/pluralize-config.js.map +0 -1
  513. package/dist/browser/serialization/json/util.d.ts.map +0 -1
  514. package/dist/browser/serialization/json/util.js.map +0 -1
  515. package/dist/browser/serialization/utils.d.ts +0 -3
  516. package/dist/browser/serialization/utils.d.ts.map +0 -1
  517. package/dist/browser/serialization/utils.js +0 -146
  518. package/dist/browser/serialization/utils.js.map +0 -1
  519. package/dist/commonjs/serialization/contract/generated/ast.d.ts.map +0 -1
  520. package/dist/commonjs/serialization/contract/index.d.ts +0 -2
  521. package/dist/commonjs/serialization/contract/index.d.ts.map +0 -1
  522. package/dist/commonjs/serialization/contract/index.js.map +0 -7
  523. package/dist/commonjs/serialization/json/encoding.d.ts.map +0 -1
  524. package/dist/commonjs/serialization/json/encoding.js.map +0 -7
  525. package/dist/commonjs/serialization/json/expression.d.ts +0 -32
  526. package/dist/commonjs/serialization/json/expression.d.ts.map +0 -1
  527. package/dist/commonjs/serialization/json/expression.js +0 -509
  528. package/dist/commonjs/serialization/json/expression.js.map +0 -7
  529. package/dist/commonjs/serialization/json/lower.d.ts.map +0 -1
  530. package/dist/commonjs/serialization/json/lower.js.map +0 -7
  531. package/dist/commonjs/serialization/json/pluralize-config.d.ts.map +0 -1
  532. package/dist/commonjs/serialization/json/util.d.ts.map +0 -1
  533. package/dist/commonjs/serialization/utils.d.ts +0 -3
  534. package/dist/commonjs/serialization/utils.d.ts.map +0 -1
  535. package/dist/commonjs/serialization/utils.js +0 -169
  536. package/dist/commonjs/serialization/utils.js.map +0 -7
  537. package/dist/esm/serialization/contract/generated/ast.d.ts.map +0 -1
  538. package/dist/esm/serialization/contract/generated/ast.js.map +0 -1
  539. package/dist/esm/serialization/contract/index.d.ts +0 -2
  540. package/dist/esm/serialization/contract/index.d.ts.map +0 -1
  541. package/dist/esm/serialization/contract/index.js.map +0 -1
  542. package/dist/esm/serialization/json/encoding.d.ts.map +0 -1
  543. package/dist/esm/serialization/json/encoding.js.map +0 -1
  544. package/dist/esm/serialization/json/expression.d.ts +0 -32
  545. package/dist/esm/serialization/json/expression.d.ts.map +0 -1
  546. package/dist/esm/serialization/json/expression.js +0 -494
  547. package/dist/esm/serialization/json/expression.js.map +0 -1
  548. package/dist/esm/serialization/json/lower.d.ts.map +0 -1
  549. package/dist/esm/serialization/json/lower.js.map +0 -1
  550. package/dist/esm/serialization/json/pluralize-config.d.ts.map +0 -1
  551. package/dist/esm/serialization/json/pluralize-config.js.map +0 -1
  552. package/dist/esm/serialization/json/util.d.ts.map +0 -1
  553. package/dist/esm/serialization/json/util.js.map +0 -1
  554. package/dist/esm/serialization/utils.d.ts +0 -3
  555. package/dist/esm/serialization/utils.d.ts.map +0 -1
  556. package/dist/esm/serialization/utils.js +0 -146
  557. package/dist/esm/serialization/utils.js.map +0 -1
  558. /package/dist/browser/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  559. /package/dist/browser/serialization/{contract → ast}/generated/ast.js +0 -0
  560. /package/dist/browser/serialization/{contract → ast}/index.js +0 -0
  561. /package/dist/browser/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  562. /package/dist/browser/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
  563. /package/dist/commonjs/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  564. /package/dist/commonjs/serialization/{contract → ast}/generated/ast.js +0 -0
  565. /package/dist/commonjs/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  566. /package/dist/commonjs/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
  567. /package/dist/esm/serialization/{contract → ast}/generated/ast.d.ts +0 -0
  568. /package/dist/esm/serialization/{contract → ast}/generated/ast.js +0 -0
  569. /package/dist/esm/serialization/{contract → ast}/index.js +0 -0
  570. /package/dist/esm/serialization/{json/pluralize-config.d.ts → pluralize-config.d.ts} +0 -0
  571. /package/dist/esm/serialization/{json/pluralize-config.js → pluralize-config.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Release History
2
2
 
3
+ ## 1.0.0-beta.2 (2026-10-26)
4
+
5
+ ### Other Changes
6
+
7
+ - Updated provisioning core with improvements to resource naming, serialization, and Bicep generation. [#40338](https://github.com/Azure/azure-sdk-for-js/pull/40338)
8
+
3
9
  ## 1.0.0-beta.1 (2026-09-28)
4
10
 
5
11
  ### Features Added
package/README.md CHANGED
@@ -6,30 +6,31 @@
6
6
 
7
7
  Create a deployment stack, then attach resources to the stack or to another provisioning component:
8
8
 
9
- ```ts snippet:ignore
10
- import { ResourceGroup, Stack, fn } from "@azure/provisioning-core";
9
+ ```ts snippet:ReadmeCreateStack
10
+ import { Stack, ResourceGroup, fn } from "@azure/provisioning-core";
11
11
 
12
12
  const stack = new Stack("application");
13
-
14
- const resourceGroup = new ResourceGroup(stack, {
13
+ new ResourceGroup(stack, {
15
14
  name: fn.concat("rg-", fn.uniqueString("application")),
16
15
  location: "eastus",
17
16
  });
18
17
  ```
19
18
 
20
- Resource provider packages such as `@azure/provisioning-keyvault` use the same component tree and expression model:
19
+ Use the core `Resource` API to attach a Key Vault resource directly to a resource group:
21
20
 
22
- ```ts snippet:ignore
23
- import { ResourceGroup, Stack } from "@azure/provisioning-core";
24
- import { KeyVault } from "@azure/provisioning-keyvault";
21
+ ```ts snippet:ReadmeCreateKeyVault
22
+ import { Stack, ResourceGroup, Resource, fn } from "@azure/provisioning-core";
25
23
 
26
24
  const stack = new Stack("keyvault-deployment");
27
25
  const resourceGroup = new ResourceGroup(stack, {
28
26
  name: "rg-keyvault",
29
27
  location: "eastus",
30
28
  });
31
-
32
- new KeyVault(resourceGroup, {
29
+ new Resource(resourceGroup, {
30
+ type: "Microsoft.KeyVault/vaults",
31
+ apiVersion: "2024-11-01",
32
+ name: fn.concat("kv-", fn.uniqueString(resourceGroup.id)),
33
+ location: resourceGroup.location,
33
34
  properties: {
34
35
  tenantId: "00000000-0000-0000-0000-000000000000",
35
36
  sku: { family: "A", name: "standard" },
@@ -37,4 +38,42 @@ new KeyVault(resourceGroup, {
37
38
  });
38
39
  ```
39
40
 
41
+ For service-specific typed resource classes, see the [Key Vault provisioning example](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/keyvault/provisioning-keyvault/README.md#getting-started).
42
+
40
43
  Provisioning definitions are authored before deployment. Read-only resource properties remain available as expressions for wiring outputs and dependent resources, while only writable properties can be assigned.
44
+
45
+ ## Deploy-time discriminators
46
+
47
+ Discriminator properties use literal types so TypeScript can select the correct union member. When a discriminator comes from a deployment-time expression, use `asDiscriminator` to select the intended variant while retaining type checking for its other properties:
48
+
49
+ ```ts snippet:AsDiscriminator
50
+ import { ParameterCollection, asDiscriminator } from "@azure/provisioning-core";
51
+
52
+ type Rule =
53
+ | {
54
+ kind: "cache";
55
+ cacheKind: "long" | "short";
56
+ days: number;
57
+ }
58
+ | {
59
+ kind: "redirect";
60
+ url: string;
61
+ };
62
+ const ruleKind = new ParameterCollection().add("ruleKind", "string", {
63
+ allowed: ["cache"],
64
+ });
65
+ const widget: {
66
+ properties: {
67
+ primaryRule?: Rule;
68
+ };
69
+ } = {
70
+ properties: {},
71
+ };
72
+ widget.properties.primaryRule = {
73
+ kind: asDiscriminator(ruleKind),
74
+ cacheKind: "long",
75
+ days: 7,
76
+ };
77
+ ```
78
+
79
+ Prefer literal discriminators whenever possible. `asDiscriminator` does not validate the deployment-time value; constrain the parameter to the intended literal using `allowed`.
@@ -1,7 +1,7 @@
1
1
  import type { ProvisioningComponent } from "../provisioning-component.js";
2
2
  import { type Expression, type ExpressionOrValue, type InputRecord } from "../../expression/expressions.js";
3
3
  import type { ResourceNamingRules } from "../../naming/naming-rules.js";
4
- import type { ExistingResourceProps } from "../resource/resource.js";
4
+ import type { ExistingResourceProps, ResourceOptions, ResourceProps } from "../resource/resource.js";
5
5
  import { Resource } from "../resource/resource.js";
6
6
  export interface ResourceGroupProps {
7
7
  name?: ExpressionOrValue<string> | undefined;
@@ -17,6 +17,11 @@ export interface ResourceGroupProps {
17
17
  * location, tags, and naming policy, and deploy at resource-group scope
18
18
  * in the generated Bicep.
19
19
  *
20
+ * The parent may be a Stack or an ordinary component, with no resource
21
+ * declarations in its ancestry. New groups require a subscription-scoped Stack.
22
+ * Existing groups may be referenced from other Stack scopes with an appropriate
23
+ * lookup scope.
24
+ *
20
25
  * @example
21
26
  * ```typescript snippet:ignore
22
27
  * import { Stack, ResourceGroup } from "@azure/provisioning-core";
@@ -33,6 +38,7 @@ export declare class ResourceGroup extends Resource<"Microsoft.Resources/resourc
33
38
  static readonly resourceType: "Microsoft.Resources/resourceGroups";
34
39
  static readonly apiVersion = "2024-03-01";
35
40
  protected static namingRules: ResourceNamingRules;
41
+ protected static validate(context: ProvisioningComponent, props: ResourceProps<string> & Record<string, unknown>, _options?: ResourceOptions, _namingRules?: ResourceNamingRules): void;
36
42
  constructor(context: ProvisioningComponent, props: (ResourceGroupProps & {
37
43
  existing?: false;
38
44
  }) | (ExistingResourceProps & {
@@ -1 +1 @@
1
- {"version":3,"file":"resource-group.d.ts","sourceRoot":"","sources":["../../../../src/constructs/built-in-resources/resource-group.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAgBnD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,aAAc,SAAQ,QAAQ,CAAC,oCAAoC,CAAC;IAC/E,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAG,oCAAoC,CAAU;IAC7E,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAE1C,SAAS,CAAC,MAAM,CAAC,WAAW,sBAA4B;gBAkBtD,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EACH,CAAC,kBAAkB,GAAG;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,GAAG,CAAC,qBAAqB,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAmB9F,sDAAsD;IACtD,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,CAEjC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAE5C;IAED,IAAI,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,CAElC;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,EAEzD;IAED,IAAI,IAAI,IAAI,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAIrF;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EAMzF;IAED,GAAG,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,qBAAqB,EACzF,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAC5E,YAAY,CAAC,CAAC,CAAC;CAGnB"}
1
+ {"version":3,"file":"resource-group.d.ts","sourceRoot":"","sources":["../../../../src/constructs/built-in-resources/resource-group.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EACf,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAcnD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,SAAQ,QAAQ,CAAC,oCAAoC,CAAC;IAC/E,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAG,oCAAoC,CAAU;IAC7E,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAE1C,SAAS,CAAC,MAAM,CAAC,WAAW,sBAA4B;qBAiB9B,QAAQ,CAChC,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtD,QAAQ,CAAC,EAAE,eAAe,EAC1B,YAAY,CAAC,EAAE,mBAAmB,GACjC,IAAI;gBAyBL,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EACH,CAAC,kBAAkB,GAAG;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,GAAG,CAAC,qBAAqB,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAmB9F,sDAAsD;IACtD,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,CAEjC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAE5C;IAED,IAAI,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,CAElC;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,EAEzD;IAED,IAAI,IAAI,IAAI,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAIrF;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EAMzF;IAED,GAAG,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,qBAAqB,EACzF,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAC5E,YAAY,CAAC,CAAC,CAAC;CAGnB"}
@@ -3,17 +3,15 @@
3
3
  import * as fn from "../../fn.js";
4
4
  import { deref } from "../resource/resource-proxy.js";
5
5
  import { Resource } from "../resource/resource.js";
6
+ import { isResourceDeclaration } from "../resource/resource-utils.js";
7
+ import { Stack } from "../stack.js";
6
8
  import { createFlatModelShape, createRecordShape, createStringShape } from "../../shape/shape.js";
7
9
  const resourceGroupNamingRules = {
8
10
  abbreviation: "rg",
9
11
  minLength: 1,
10
12
  maxLength: 90,
11
- validCharacters: {
12
- uppercase: true,
13
- hyphens: true,
14
- underscores: true,
15
- periods: true,
16
- },
13
+ // ARM CommonTypes.ResourceGroupNameParameter.
14
+ pattern: { regex: "^[-\\w\\._\\(\\)]+$" },
17
15
  scope: "subscription",
18
16
  };
19
17
  /**
@@ -24,6 +22,11 @@ const resourceGroupNamingRules = {
24
22
  * location, tags, and naming policy, and deploy at resource-group scope
25
23
  * in the generated Bicep.
26
24
  *
25
+ * The parent may be a Stack or an ordinary component, with no resource
26
+ * declarations in its ancestry. New groups require a subscription-scoped Stack.
27
+ * Existing groups may be referenced from other Stack scopes with an appropriate
28
+ * lookup scope.
29
+ *
27
30
  * @example
28
31
  * ```typescript snippet:ignore
29
32
  * import { Stack, ResourceGroup } from "@azure/provisioning-core";
@@ -52,6 +55,23 @@ export class ResourceGroup extends Resource {
52
55
  }));
53
56
  this.register();
54
57
  }
58
+ static validate(context, props, _options, _namingRules) {
59
+ let ancestor = context;
60
+ while (ancestor !== undefined && !(ancestor instanceof Stack)) {
61
+ if (isResourceDeclaration(ancestor)) {
62
+ throw new Error("ResourceGroup cannot be nested beneath a resource declaration, directly or through components.");
63
+ }
64
+ ancestor = ancestor.parent;
65
+ }
66
+ if (props.existing !== true) {
67
+ if (!(ancestor instanceof Stack)) {
68
+ throw new Error('A new ResourceGroup requires a containing Stack with targetScope "subscription".');
69
+ }
70
+ if (ancestor.targetScope !== "subscription") {
71
+ throw new Error(`A new ResourceGroup requires Stack targetScope "subscription", but Stack "${ancestor.name}" targets "${ancestor.targetScope}".`);
72
+ }
73
+ }
74
+ }
55
75
  constructor(context, props) {
56
76
  super(context, {
57
77
  ...props,
@@ -1 +1 @@
1
- {"version":3,"file":"resource-group.js","sourceRoot":"","sources":["../../../../src/constructs/built-in-resources/resource-group.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ProvisioningComponent } from \"../provisioning-component.js\";\nimport * as fn from \"../../fn.js\";\nimport {\n type Expression,\n type ExpressionOrValue,\n type InputRecord,\n} from \"../../expression/expressions.js\";\nimport type { ResourceNamingRules } from \"../../naming/naming-rules.js\";\nimport { deref } from \"../resource/resource-proxy.js\";\nimport type { ExistingResourceProps } from \"../resource/resource.js\";\nimport { Resource } from \"../resource/resource.js\";\nimport { createFlatModelShape, createRecordShape, createStringShape } from \"../../shape/shape.js\";\n\nconst resourceGroupNamingRules: ResourceNamingRules = {\n abbreviation: \"rg\",\n minLength: 1,\n maxLength: 90,\n validCharacters: {\n uppercase: true,\n hyphens: true,\n underscores: true,\n periods: true,\n },\n scope: \"subscription\",\n};\n\nexport interface ResourceGroupProps {\n name?: ExpressionOrValue<string> | undefined;\n location: ExpressionOrValue<string>;\n tags?: Record<string, ExpressionOrValue<string>>;\n managedBy?: ExpressionOrValue<string>;\n}\n\n/**\n * An Azure resource group that establishes a deployment boundary.\n *\n * @remarks\n * Resources created with a `ResourceGroup` as their parent inherit its\n * location, tags, and naming policy, and deploy at resource-group scope\n * in the generated Bicep.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack, ResourceGroup } from \"@azure/provisioning-core\";\n * import { KeyVault } from \"@azure/provisioning-keyvault\";\n *\n * const stack = new Stack(\"my-app\");\n * const rg = new ResourceGroup(stack, { location: \"eastus\" });\n * const vault = new KeyVault(rg, {\n * properties: { tenantId: \"...\", sku: { family: \"A\", name: \"standard\" } },\n * });\n * ```\n */\nexport class ResourceGroup extends Resource<\"Microsoft.Resources/resourceGroups\"> {\n static readonly resourceType = \"Microsoft.Resources/resourceGroups\" as const;\n static readonly apiVersion = \"2024-03-01\";\n\n protected static namingRules = resourceGroupNamingRules;\n\n static {\n this.registerShape(\n createFlatModelShape({\n name: { armPath: [\"name\"], value: createStringShape() },\n location: { armPath: [\"location\"], value: createStringShape() },\n tags: {\n armPath: [\"tags\"],\n value: createRecordShape(createStringShape()),\n },\n managedBy: { armPath: [\"managedBy\"], value: createStringShape() },\n }),\n );\n this.register();\n }\n\n constructor(\n context: ProvisioningComponent,\n props:\n (ResourceGroupProps & { existing?: false }) | (ExistingResourceProps & { existing: true }),\n ) {\n super(context, {\n ...props,\n type: ResourceGroup.resourceType,\n apiVersion: ResourceGroup.apiVersion,\n });\n\n this._localDeploymentContext = {\n // Resources inside this RG deploy at RG scope, so the canonical\n // default is the Bicep runtime expression `resourceGroup().location`\n // (i.e. the actual location of whichever RG hosts the deployment).\n // This is correct whether the RG is authored locally or referenced\n // as `existing`.\n location: fn.resourceGroup().location,\n tags: deref(this.tags),\n };\n }\n\n /** The resource group's location as an expression. */\n get location(): Expression<string> {\n return this.expr(\"location\");\n }\n set location(value: ExpressionOrValue<string>) {\n this.setProperty(\"location\", value);\n }\n\n get managedBy(): Expression<string> {\n return this.expr(\"managedBy\");\n }\n set managedBy(value: ExpressionOrValue<string> | undefined) {\n this.setProperty(\"managedBy\", value);\n }\n\n get tags(): InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined {\n return this.state.tags === undefined\n ? undefined\n : (this.expr(\"tags\") as InputRecord<ExpressionOrValue<string>, Record<string, string>>);\n }\n set tags(value: InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined) {\n this.setProperty(\"tags\", value);\n this._localDeploymentContext = {\n ...this._localDeploymentContext,\n tags: deref(this.tags),\n };\n }\n\n add<T extends new (context: ProvisioningComponent, ...args: any[]) => ProvisioningComponent>(\n ctor: T,\n ...args: ConstructorParameters<T> extends [any, ...infer Rest] ? Rest : never\n ): InstanceType<T> {\n return new ctor(this.self, ...args) as InstanceType<T>;\n }\n}\n"]}
1
+ {"version":3,"file":"resource-group.js","sourceRoot":"","sources":["../../../../src/constructs/built-in-resources/resource-group.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ProvisioningComponent } from \"../provisioning-component.js\";\nimport * as fn from \"../../fn.js\";\nimport {\n type Expression,\n type ExpressionOrValue,\n type InputRecord,\n} from \"../../expression/expressions.js\";\nimport type { ResourceNamingRules } from \"../../naming/naming-rules.js\";\nimport { deref } from \"../resource/resource-proxy.js\";\nimport type {\n ExistingResourceProps,\n ResourceOptions,\n ResourceProps,\n} from \"../resource/resource.js\";\nimport { Resource } from \"../resource/resource.js\";\nimport { isResourceDeclaration } from \"../resource/resource-utils.js\";\nimport { Stack } from \"../stack.js\";\nimport { createFlatModelShape, createRecordShape, createStringShape } from \"../../shape/shape.js\";\n\nconst resourceGroupNamingRules: ResourceNamingRules = {\n abbreviation: \"rg\",\n minLength: 1,\n maxLength: 90,\n // ARM CommonTypes.ResourceGroupNameParameter.\n pattern: { regex: \"^[-\\\\w\\\\._\\\\(\\\\)]+$\" },\n scope: \"subscription\",\n};\n\nexport interface ResourceGroupProps {\n name?: ExpressionOrValue<string> | undefined;\n location: ExpressionOrValue<string>;\n tags?: Record<string, ExpressionOrValue<string>>;\n managedBy?: ExpressionOrValue<string>;\n}\n\n/**\n * An Azure resource group that establishes a deployment boundary.\n *\n * @remarks\n * Resources created with a `ResourceGroup` as their parent inherit its\n * location, tags, and naming policy, and deploy at resource-group scope\n * in the generated Bicep.\n *\n * The parent may be a Stack or an ordinary component, with no resource\n * declarations in its ancestry. New groups require a subscription-scoped Stack.\n * Existing groups may be referenced from other Stack scopes with an appropriate\n * lookup scope.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack, ResourceGroup } from \"@azure/provisioning-core\";\n * import { KeyVault } from \"@azure/provisioning-keyvault\";\n *\n * const stack = new Stack(\"my-app\");\n * const rg = new ResourceGroup(stack, { location: \"eastus\" });\n * const vault = new KeyVault(rg, {\n * properties: { tenantId: \"...\", sku: { family: \"A\", name: \"standard\" } },\n * });\n * ```\n */\nexport class ResourceGroup extends Resource<\"Microsoft.Resources/resourceGroups\"> {\n static readonly resourceType = \"Microsoft.Resources/resourceGroups\" as const;\n static readonly apiVersion = \"2024-03-01\";\n\n protected static namingRules = resourceGroupNamingRules;\n\n static {\n this.registerShape(\n createFlatModelShape({\n name: { armPath: [\"name\"], value: createStringShape() },\n location: { armPath: [\"location\"], value: createStringShape() },\n tags: {\n armPath: [\"tags\"],\n value: createRecordShape(createStringShape()),\n },\n managedBy: { armPath: [\"managedBy\"], value: createStringShape() },\n }),\n );\n this.register();\n }\n\n protected static override validate(\n context: ProvisioningComponent,\n props: ResourceProps<string> & Record<string, unknown>,\n _options?: ResourceOptions,\n _namingRules?: ResourceNamingRules,\n ): void {\n let ancestor: ProvisioningComponent | undefined = context;\n while (ancestor !== undefined && !(ancestor instanceof Stack)) {\n if (isResourceDeclaration(ancestor)) {\n throw new Error(\n \"ResourceGroup cannot be nested beneath a resource declaration, directly or through components.\",\n );\n }\n ancestor = ancestor.parent;\n }\n if (props.existing !== true) {\n if (!(ancestor instanceof Stack)) {\n throw new Error(\n 'A new ResourceGroup requires a containing Stack with targetScope \"subscription\".',\n );\n }\n if (ancestor.targetScope !== \"subscription\") {\n throw new Error(\n `A new ResourceGroup requires Stack targetScope \"subscription\", but Stack \"${ancestor.name}\" targets \"${ancestor.targetScope}\".`,\n );\n }\n }\n }\n\n constructor(\n context: ProvisioningComponent,\n props:\n (ResourceGroupProps & { existing?: false }) | (ExistingResourceProps & { existing: true }),\n ) {\n super(context, {\n ...props,\n type: ResourceGroup.resourceType,\n apiVersion: ResourceGroup.apiVersion,\n });\n\n this._localDeploymentContext = {\n // Resources inside this RG deploy at RG scope, so the canonical\n // default is the Bicep runtime expression `resourceGroup().location`\n // (i.e. the actual location of whichever RG hosts the deployment).\n // This is correct whether the RG is authored locally or referenced\n // as `existing`.\n location: fn.resourceGroup().location,\n tags: deref(this.tags),\n };\n }\n\n /** The resource group's location as an expression. */\n get location(): Expression<string> {\n return this.expr(\"location\");\n }\n set location(value: ExpressionOrValue<string>) {\n this.setProperty(\"location\", value);\n }\n\n get managedBy(): Expression<string> {\n return this.expr(\"managedBy\");\n }\n set managedBy(value: ExpressionOrValue<string> | undefined) {\n this.setProperty(\"managedBy\", value);\n }\n\n get tags(): InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined {\n return this.state.tags === undefined\n ? undefined\n : (this.expr(\"tags\") as InputRecord<ExpressionOrValue<string>, Record<string, string>>);\n }\n set tags(value: InputRecord<ExpressionOrValue<string>, Record<string, string>> | undefined) {\n this.setProperty(\"tags\", value);\n this._localDeploymentContext = {\n ...this._localDeploymentContext,\n tags: deref(this.tags),\n };\n }\n\n add<T extends new (context: ProvisioningComponent, ...args: any[]) => ProvisioningComponent>(\n ctor: T,\n ...args: ConstructorParameters<T> extends [any, ...infer Rest] ? Rest : never\n ): InstanceType<T> {\n return new ctor(this.self, ...args) as InstanceType<T>;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { PrimitiveTypeMap, PrimitiveTypeName } from "../serialization/contract/index.js";
1
+ import type { PrimitiveTypeMap, PrimitiveTypeName } from "../serialization/ast/index.js";
2
2
  import type { ExpressionOrValue, InputOf } from "../expression/expressions.js";
3
3
  import type { Resource } from "./resource/resource.js";
4
4
  import type { Stack } from "./stack.js";
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/constructs/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/constructs/output.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/constructs/output.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAkDhF;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B,QAAQ,GAAqB,EAAE,CAAC;IAEhC,4EAA4E;IAC5E,GAAG,CACD,IAAY,EACZ,IAAO,EACP,KAAiC,EACjC,OAAuB;QAEvB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,oBAAoB,IAAI,qBAAqB,CAAC,CAAC;QAC3F,CAAC;QACD,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,sBAAsB,IAAI,GAAG,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8DAA8D;IAC9D,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,+CAA+C;IAC/C,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IACtC,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,IAAY;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAY,EACZ,IAAY,EACZ,IAAO,EACP,KAAiC,EACjC,OAAuB;IAEvB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap, PrimitiveTypeName } from \"../serialization/contract/index.js\";\nimport type { ExpressionOrValue, InputOf } from \"../expression/expressions.js\";\nimport type { Resource } from \"./resource/resource.js\";\nimport { isResource } from \"./resource/resource-utils.js\";\nimport type { Stack } from \"./stack.js\";\nimport { assertBicepIdentifier, assertValueAssignableToType } from \"../util.js\";\n\n/**\n * A value accepted as a deployment output's value: any JSON literal (scalar,\n * `null`, array, object — recursively), an `Expression`, a resource view\n * (`InputOf<unknown>`), or a {@link Resource} handle. The literal members are\n * required so plain object/array literals are accepted (a bare\n * `InputOf<unknown>` is a weak type and would reject them).\n */\nexport type OutputValue =\n | string\n | number\n | boolean\n | null\n | readonly OutputValue[]\n | { readonly [key: string]: OutputValue }\n | InputOf<unknown>\n | Resource;\n\n/** Primitive Bicep type names supported by deployment outputs. */\nexport type OutputType = PrimitiveTypeName;\n\nexport type ScalarOutputType = \"string\" | \"int\" | \"bool\";\nexport type OutputValueFor<T extends OutputType> = T extends ScalarOutputType\n ? ExpressionOrValue<PrimitiveTypeMap[T]>\n : OutputValue;\n\nexport type OutputOptions = {\n readonly description?: string | undefined;\n readonly secure?: boolean | undefined;\n readonly minValue?: number | undefined;\n readonly maxValue?: number | undefined;\n readonly minLength?: number | undefined;\n readonly maxLength?: number | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n readonly discriminator?: string | undefined;\n readonly sealed?: boolean | undefined;\n};\n\n/**\n * Pure declaration data for a deployment output. Stored on the stack and read\n * by the serializer at emit time. An output is a terminal sink — it has no\n * expression handle.\n */\nexport interface OutputMetadata extends OutputOptions {\n readonly name: string;\n readonly type: OutputType;\n readonly value: OutputValue;\n}\n\n/**\n * Authoring-time collection of a stack's deployment outputs. Backed by an\n * ordered private array; supports add/get/delete/iteration. Outputs are\n * terminal sinks (no expression handle), so iteration yields metadata.\n */\nexport class OutputCollection {\n #entries: OutputMetadata[] = [];\n\n /** Add an output. Throws on duplicate name. Returns the stored metadata. */\n add<T extends OutputType>(\n name: string,\n type: T,\n value: OutputValueFor<NoInfer<T>>,\n options?: OutputOptions,\n ): OutputMetadata {\n assertBicepIdentifier(name, \"Deployment output\");\n if (this.has(name)) {\n throw new Error(`Duplicate deployment output name: ${name}`);\n }\n if ((type === \"string\" || type === \"int\" || type === \"bool\") && isResource(value)) {\n throw new Error(`Deployment output \"${name}\" expected type \"${type}\" but got resource.`);\n }\n assertValueAssignableToType(value, type, `Deployment output \"${name}\"`);\n const metadata: OutputMetadata = { name, type, value, ...options };\n this.#entries.push(metadata);\n return metadata;\n }\n\n /** The declaration metadata for an output, or `undefined`. */\n get(name: string): OutputMetadata | undefined {\n return this.#entries.find((e) => e.name === name);\n }\n\n /** All output metadata, in insertion order. */\n list(): readonly OutputMetadata[] {\n return this.#entries;\n }\n\n has(name: string): boolean {\n return this.get(name) !== undefined;\n }\n\n /** Remove an output by name. Returns whether one was removed. */\n delete(name: string): boolean {\n const i = this.#entries.findIndex((e) => e.name === name);\n if (i === -1) return false;\n this.#entries.splice(i, 1);\n return true;\n }\n\n get size(): number {\n return this.#entries.length;\n }\n\n [Symbol.iterator](): IterableIterator<OutputMetadata> {\n return this.#entries[Symbol.iterator]();\n }\n}\n\n/**\n * A deployment output, compiled to a Bicep `output` declaration.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack } from \"@azure/provisioning-core\";\n * import { KeyVault } from \"@azure/provisioning-keyvault\";\n *\n * const stack = new Stack(\"my-app\", { targetScope: \"resourceGroup\" });\n * const vault = new KeyVault(stack, {\n * name: \"kv-my-app\",\n * location: \"eastus\",\n * properties: {\n * tenantId: \"11111111-1111-1111-1111-111111111111\",\n * sku: { family: \"A\", name: \"standard\" },\n * },\n * });\n * stack.outputs.add(\"vaultUri\", \"string\", vault.properties.vaultUri);\n * ```\n */\nexport function createOutput<T extends OutputType>(\n stack: Stack,\n name: string,\n type: T,\n value: OutputValueFor<NoInfer<T>>,\n options?: OutputOptions,\n): OutputMetadata {\n return stack.outputs.add(name, type, value, options);\n}\n"]}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/constructs/output.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAkDhF;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B,QAAQ,GAAqB,EAAE,CAAC;IAEhC,4EAA4E;IAC5E,GAAG,CACD,IAAY,EACZ,IAAO,EACP,KAAiC,EACjC,OAAuB;QAEvB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,oBAAoB,IAAI,qBAAqB,CAAC,CAAC;QAC3F,CAAC;QACD,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,sBAAsB,IAAI,GAAG,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8DAA8D;IAC9D,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,+CAA+C;IAC/C,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IACtC,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,IAAY;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAY,EACZ,IAAY,EACZ,IAAO,EACP,KAAiC,EACjC,OAAuB;IAEvB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap, PrimitiveTypeName } from \"../serialization/ast/index.js\";\nimport type { ExpressionOrValue, InputOf } from \"../expression/expressions.js\";\nimport type { Resource } from \"./resource/resource.js\";\nimport { isResource } from \"./resource/resource-utils.js\";\nimport type { Stack } from \"./stack.js\";\nimport { assertBicepIdentifier, assertValueAssignableToType } from \"../util.js\";\n\n/**\n * A value accepted as a deployment output's value: any JSON literal (scalar,\n * `null`, array, object — recursively), an `Expression`, a resource view\n * (`InputOf<unknown>`), or a {@link Resource} handle. The literal members are\n * required so plain object/array literals are accepted (a bare\n * `InputOf<unknown>` is a weak type and would reject them).\n */\nexport type OutputValue =\n | string\n | number\n | boolean\n | null\n | readonly OutputValue[]\n | { readonly [key: string]: OutputValue }\n | InputOf<unknown>\n | Resource;\n\n/** Primitive Bicep type names supported by deployment outputs. */\nexport type OutputType = PrimitiveTypeName;\n\nexport type ScalarOutputType = \"string\" | \"int\" | \"bool\";\nexport type OutputValueFor<T extends OutputType> = T extends ScalarOutputType\n ? ExpressionOrValue<PrimitiveTypeMap[T]>\n : OutputValue;\n\nexport type OutputOptions = {\n readonly description?: string | undefined;\n readonly secure?: boolean | undefined;\n readonly minValue?: number | undefined;\n readonly maxValue?: number | undefined;\n readonly minLength?: number | undefined;\n readonly maxLength?: number | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n readonly discriminator?: string | undefined;\n readonly sealed?: boolean | undefined;\n};\n\n/**\n * Pure declaration data for a deployment output. Stored on the stack and read\n * by the serializer at emit time. An output is a terminal sink — it has no\n * expression handle.\n */\nexport interface OutputMetadata extends OutputOptions {\n readonly name: string;\n readonly type: OutputType;\n readonly value: OutputValue;\n}\n\n/**\n * Authoring-time collection of a stack's deployment outputs. Backed by an\n * ordered private array; supports add/get/delete/iteration. Outputs are\n * terminal sinks (no expression handle), so iteration yields metadata.\n */\nexport class OutputCollection {\n #entries: OutputMetadata[] = [];\n\n /** Add an output. Throws on duplicate name. Returns the stored metadata. */\n add<T extends OutputType>(\n name: string,\n type: T,\n value: OutputValueFor<NoInfer<T>>,\n options?: OutputOptions,\n ): OutputMetadata {\n assertBicepIdentifier(name, \"Deployment output\");\n if (this.has(name)) {\n throw new Error(`Duplicate deployment output name: ${name}`);\n }\n if ((type === \"string\" || type === \"int\" || type === \"bool\") && isResource(value)) {\n throw new Error(`Deployment output \"${name}\" expected type \"${type}\" but got resource.`);\n }\n assertValueAssignableToType(value, type, `Deployment output \"${name}\"`);\n const metadata: OutputMetadata = { name, type, value, ...options };\n this.#entries.push(metadata);\n return metadata;\n }\n\n /** The declaration metadata for an output, or `undefined`. */\n get(name: string): OutputMetadata | undefined {\n return this.#entries.find((e) => e.name === name);\n }\n\n /** All output metadata, in insertion order. */\n list(): readonly OutputMetadata[] {\n return this.#entries;\n }\n\n has(name: string): boolean {\n return this.get(name) !== undefined;\n }\n\n /** Remove an output by name. Returns whether one was removed. */\n delete(name: string): boolean {\n const i = this.#entries.findIndex((e) => e.name === name);\n if (i === -1) return false;\n this.#entries.splice(i, 1);\n return true;\n }\n\n get size(): number {\n return this.#entries.length;\n }\n\n [Symbol.iterator](): IterableIterator<OutputMetadata> {\n return this.#entries[Symbol.iterator]();\n }\n}\n\n/**\n * A deployment output, compiled to a Bicep `output` declaration.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack } from \"@azure/provisioning-core\";\n * import { KeyVault } from \"@azure/provisioning-keyvault\";\n *\n * const stack = new Stack(\"my-app\", { targetScope: \"resourceGroup\" });\n * const vault = new KeyVault(stack, {\n * name: \"kv-my-app\",\n * location: \"eastus\",\n * properties: {\n * tenantId: \"11111111-1111-1111-1111-111111111111\",\n * sku: { family: \"A\", name: \"standard\" },\n * },\n * });\n * stack.outputs.add(\"vaultUri\", \"string\", vault.properties.vaultUri);\n * ```\n */\nexport function createOutput<T extends OutputType>(\n stack: Stack,\n name: string,\n type: T,\n value: OutputValueFor<NoInfer<T>>,\n options?: OutputOptions,\n): OutputMetadata {\n return stack.outputs.add(name, type, value, options);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { PrimitiveTypeMap } from "../serialization/contract/index.js";
1
+ import type { PrimitiveTypeMap } from "../serialization/ast/index.js";
2
2
  import type { Expression, ExpressionOrValue } from "../expression/expressions.js";
3
3
  import type { Stack } from "./stack.js";
4
4
  export type InferParamType<T extends keyof PrimitiveTypeMap, A> = A extends readonly (infer E)[] ? E : PrimitiveTypeMap[T];
@@ -1 +1 @@
1
- {"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../../src/constructs/parameter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../../src/constructs/parameter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAIlF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAAE,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5F,CAAC,GACD,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAExB;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,IAClF,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzC,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,EACzD,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,IAC9D;IACF,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB,CACzD,MAAM,gBAAgB,EACtB,SAAS,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,EAAE,GAAG,SAAS,CAChE;IACC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,gBAAgB,CAAC;CACvC;AAYD,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,EACzD,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,IAC9D,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAErC;;;;GAIG;AACH,qBAAa,mBAAmB;;IAG9B,gFAAgF;IAChF,GAAG,CACD,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,EACzD,KAAK,CAAC,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,EACtE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IA0B3E,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIxC,gEAAgE;IAChE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxD,iDAAiD;IACjD,IAAI,IAAI,SAAS,SAAS,EAAE;IAI5B,oDAAoD;IACpD,YAAY,IAAI,SAAS,iBAAiB,EAAE;IAI5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,mEAAmE;IACnE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO7B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC;CAOjD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,EACzD,KAAK,CAAC,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,EACtE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAExF"}
@@ -1 +1 @@
1
- {"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../../src/constructs/parameter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap } from \"../serialization/contract/index.js\";\nimport type { Expression, ExpressionOrValue } from \"../expression/expressions.js\";\nimport { wrapExpression } from \"../expression/expressions.js\";\nimport { isExpression } from \"../expression/expressions.js\";\nimport { symbolicValueExpressionNode } from \"../expression/ast-nodes.js\";\nimport type { Stack } from \"./stack.js\";\nimport { assertBicepIdentifier, assertValueAssignableToType } from \"../util.js\";\n\nexport type InferParamType<T extends keyof PrimitiveTypeMap, A> = A extends readonly (infer E)[]\n ? E\n : PrimitiveTypeMap[T];\n\n/**\n * A value accepted as a parameter's `defaultValue`: a literal of the declared\n * type or an `Expression` of it. Resource views are intentionally excluded —\n * a Bicep `param` default cannot reference resources.\n */\nexport type ParameterValue<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap> =\n ExpressionOrValue<PrimitiveTypeMap[T]>;\n\nexport type ParameterOptions<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n> = {\n readonly defaultValue?: ExpressionOrValue<InferParamType<T, A>> | undefined;\n readonly description?: string | undefined;\n readonly secure?: boolean | undefined;\n readonly minValue?: number | undefined;\n readonly maxValue?: number | undefined;\n readonly minLength?: number | undefined;\n readonly maxLength?: number | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n readonly allowed?: A;\n readonly discriminator?: string | undefined;\n readonly sealed?: boolean | undefined;\n};\n\n/**\n * Pure declaration data for a deployment parameter. Stored on the stack\n * (paired with the returned expression handle in {@link ParameterEntry});\n * read by the serializer at emit time. Not part of the value-level handle.\n */\nexport interface ParameterMetadata extends ParameterOptions<\n keyof PrimitiveTypeMap,\n readonly PrimitiveTypeMap[keyof PrimitiveTypeMap][] | undefined\n> {\n readonly name: string;\n readonly type: keyof PrimitiveTypeMap;\n}\n\n/**\n * A stack entry pairing a parameter's declaration metadata with the\n * expression handle returned to the user. Internal; metadata is exposed via\n * {@link ParameterCollection.getMetadata} / {@link ParameterCollection.listMetadata}.\n */\ninterface ParameterEntry {\n readonly metadata: ParameterMetadata;\n readonly parameter: Expression<unknown>;\n}\n\nexport type Parameter<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n> = Expression<InferParamType<T, A>>;\n\n/**\n * Authoring-time collection of a stack's deployment parameters. Backed by an\n * ordered private array; supports add/get/delete/iteration. Look parameters up\n * by name via {@link ParameterCollection.get}.\n */\nexport class ParameterCollection {\n #entries: ParameterEntry[] = [];\n\n /** Add a parameter; returns its expression handle. Throws on duplicate name. */\n add<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n >(name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A> {\n assertBicepIdentifier(name, \"Deployment parameter\");\n if (this.has(name)) {\n throw new Error(`Duplicate deployment parameter name: ${name}`);\n }\n assertValueAssignableToType(options?.defaultValue, type, `Deployment parameter \"${name}\"`);\n if (\n options?.defaultValue !== undefined &&\n !isExpression(options.defaultValue) &&\n options.allowed !== undefined &&\n !options.allowed.includes(options.defaultValue as PrimitiveTypeMap[T])\n ) {\n throw new Error(\n `Deployment parameter \"${name}\" default value must be one of its allowed values.`,\n );\n }\n const param = wrapExpression<InferParamType<T, A>>(\n symbolicValueExpressionNode<InferParamType<T, A>, string>(name),\n );\n this.#entries.push({\n metadata: { name, type, ...options },\n parameter: param,\n });\n return param;\n }\n\n /** The expression handle for a parameter, or `undefined`. */\n get(name: string): Parameter | undefined {\n return this.#find(name)?.parameter;\n }\n\n /** The declaration metadata for a parameter, or `undefined`. */\n getMetadata(name: string): ParameterMetadata | undefined {\n return this.#find(name)?.metadata;\n }\n\n /** All parameter handles, in insertion order. */\n list(): readonly Parameter[] {\n return this.#entries.map((e) => e.parameter);\n }\n\n /** All declaration metadata, in insertion order. */\n listMetadata(): readonly ParameterMetadata[] {\n return this.#entries.map((e) => e.metadata);\n }\n\n has(name: string): boolean {\n return this.#find(name) !== undefined;\n }\n\n /** Remove a parameter by name. Returns whether one was removed. */\n delete(name: string): boolean {\n const i = this.#entries.findIndex((e) => e.metadata.name === name);\n if (i === -1) return false;\n this.#entries.splice(i, 1);\n return true;\n }\n\n get size(): number {\n return this.#entries.length;\n }\n\n [Symbol.iterator](): IterableIterator<Parameter> {\n return this.#entries.map((e) => e.parameter)[Symbol.iterator]();\n }\n\n #find(name: string): ParameterEntry | undefined {\n return this.#entries.find((e) => e.metadata.name === name);\n }\n}\n\n/**\n * A deploy-time input to a stack, compiled to a Bicep `param` declaration.\n *\n * @remarks\n * The returned value is an `Expression` that can be passed to resource\n * properties. At deploy time, the user supplies the actual value. The\n * declaration metadata is stored separately on the stack, keyed by name.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack, createParameter } from \"@azure/provisioning-core\";\n *\n * const stack = new Stack(\"my-app\", { targetScope: \"resourceGroup\" });\n * const env = createParameter(stack, \"env\", \"string\", {\n * allowed: [\"dev\", \"staging\", \"prod\"] as const,\n * defaultValue: \"dev\",\n * });\n * ```\n */\nexport function createParameter<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n>(stack: Stack, name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A> {\n return stack.parameters.add(name, type, options);\n}\n"]}
1
+ {"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../../src/constructs/parameter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitiveTypeMap } from \"../serialization/ast/index.js\";\nimport type { Expression, ExpressionOrValue } from \"../expression/expressions.js\";\nimport { wrapExpression } from \"../expression/expressions.js\";\nimport { isExpression } from \"../expression/expressions.js\";\nimport { symbolicValueExpressionNode } from \"../expression/ast-nodes.js\";\nimport type { Stack } from \"./stack.js\";\nimport { assertBicepIdentifier, assertValueAssignableToType } from \"../util.js\";\n\nexport type InferParamType<T extends keyof PrimitiveTypeMap, A> = A extends readonly (infer E)[]\n ? E\n : PrimitiveTypeMap[T];\n\n/**\n * A value accepted as a parameter's `defaultValue`: a literal of the declared\n * type or an `Expression` of it. Resource views are intentionally excluded —\n * a Bicep `param` default cannot reference resources.\n */\nexport type ParameterValue<T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap> =\n ExpressionOrValue<PrimitiveTypeMap[T]>;\n\nexport type ParameterOptions<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n> = {\n readonly defaultValue?: ExpressionOrValue<InferParamType<T, A>> | undefined;\n readonly description?: string | undefined;\n readonly secure?: boolean | undefined;\n readonly minValue?: number | undefined;\n readonly maxValue?: number | undefined;\n readonly minLength?: number | undefined;\n readonly maxLength?: number | undefined;\n readonly metadata?: Record<string, unknown> | undefined;\n readonly allowed?: A;\n readonly discriminator?: string | undefined;\n readonly sealed?: boolean | undefined;\n};\n\n/**\n * Pure declaration data for a deployment parameter. Stored on the stack\n * (paired with the returned expression handle in {@link ParameterEntry});\n * read by the serializer at emit time. Not part of the value-level handle.\n */\nexport interface ParameterMetadata extends ParameterOptions<\n keyof PrimitiveTypeMap,\n readonly PrimitiveTypeMap[keyof PrimitiveTypeMap][] | undefined\n> {\n readonly name: string;\n readonly type: keyof PrimitiveTypeMap;\n}\n\n/**\n * A stack entry pairing a parameter's declaration metadata with the\n * expression handle returned to the user. Internal; metadata is exposed via\n * {@link ParameterCollection.getMetadata} / {@link ParameterCollection.listMetadata}.\n */\ninterface ParameterEntry {\n readonly metadata: ParameterMetadata;\n readonly parameter: Expression<unknown>;\n}\n\nexport type Parameter<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n> = Expression<InferParamType<T, A>>;\n\n/**\n * Authoring-time collection of a stack's deployment parameters. Backed by an\n * ordered private array; supports add/get/delete/iteration. Look parameters up\n * by name via {@link ParameterCollection.get}.\n */\nexport class ParameterCollection {\n #entries: ParameterEntry[] = [];\n\n /** Add a parameter; returns its expression handle. Throws on duplicate name. */\n add<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n >(name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A> {\n assertBicepIdentifier(name, \"Deployment parameter\");\n if (this.has(name)) {\n throw new Error(`Duplicate deployment parameter name: ${name}`);\n }\n assertValueAssignableToType(options?.defaultValue, type, `Deployment parameter \"${name}\"`);\n if (\n options?.defaultValue !== undefined &&\n !isExpression(options.defaultValue) &&\n options.allowed !== undefined &&\n !options.allowed.includes(options.defaultValue as PrimitiveTypeMap[T])\n ) {\n throw new Error(\n `Deployment parameter \"${name}\" default value must be one of its allowed values.`,\n );\n }\n const param = wrapExpression<InferParamType<T, A>>(\n symbolicValueExpressionNode<InferParamType<T, A>, string>(name),\n );\n this.#entries.push({\n metadata: { name, type, ...options },\n parameter: param,\n });\n return param;\n }\n\n /** The expression handle for a parameter, or `undefined`. */\n get(name: string): Parameter | undefined {\n return this.#find(name)?.parameter;\n }\n\n /** The declaration metadata for a parameter, or `undefined`. */\n getMetadata(name: string): ParameterMetadata | undefined {\n return this.#find(name)?.metadata;\n }\n\n /** All parameter handles, in insertion order. */\n list(): readonly Parameter[] {\n return this.#entries.map((e) => e.parameter);\n }\n\n /** All declaration metadata, in insertion order. */\n listMetadata(): readonly ParameterMetadata[] {\n return this.#entries.map((e) => e.metadata);\n }\n\n has(name: string): boolean {\n return this.#find(name) !== undefined;\n }\n\n /** Remove a parameter by name. Returns whether one was removed. */\n delete(name: string): boolean {\n const i = this.#entries.findIndex((e) => e.metadata.name === name);\n if (i === -1) return false;\n this.#entries.splice(i, 1);\n return true;\n }\n\n get size(): number {\n return this.#entries.length;\n }\n\n [Symbol.iterator](): IterableIterator<Parameter> {\n return this.#entries.map((e) => e.parameter)[Symbol.iterator]();\n }\n\n #find(name: string): ParameterEntry | undefined {\n return this.#entries.find((e) => e.metadata.name === name);\n }\n}\n\n/**\n * A deploy-time input to a stack, compiled to a Bicep `param` declaration.\n *\n * @remarks\n * The returned value is an `Expression` that can be passed to resource\n * properties. At deploy time, the user supplies the actual value. The\n * declaration metadata is stored separately on the stack, keyed by name.\n *\n * @example\n * ```typescript snippet:ignore\n * import { Stack, createParameter } from \"@azure/provisioning-core\";\n *\n * const stack = new Stack(\"my-app\", { targetScope: \"resourceGroup\" });\n * const env = createParameter(stack, \"env\", \"string\", {\n * allowed: [\"dev\", \"staging\", \"prod\"] as const,\n * defaultValue: \"dev\",\n * });\n * ```\n */\nexport function createParameter<\n T extends keyof PrimitiveTypeMap = keyof PrimitiveTypeMap,\n const A extends readonly PrimitiveTypeMap[T][] | undefined = undefined,\n>(stack: Stack, name: string, type: T, options?: ParameterOptions<T, A>): Parameter<T, A> {\n return stack.parameters.add(name, type, options);\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { ProvisioningComponent } from "../provisioning-component.js";
2
- import type { LoopedResource, Resource } from "./resource.js";
2
+ import type { LoopedResource, Resource, ResourceDeclaration } from "./resource.js";
3
3
  import type { ResourceCtor } from "./resource-registry.js";
4
4
  /** Options accepted by the `Stack` resource queries. */
5
5
  export interface QueryOptions {
@@ -9,6 +9,8 @@ export interface QueryOptions {
9
9
  */
10
10
  readonly recursive?: boolean;
11
11
  }
12
+ /** All scalar and looped declarations in tree order, including a resource root. */
13
+ export declare function collectResourceDeclarations(root: ProvisioningComponent): ResourceDeclaration[];
12
14
  /** Scalar (un-looped) resource declarations. */
13
15
  export declare function getResources(root: ProvisioningComponent, typeOrOptions?: ResourceCtor<Resource> | QueryOptions, maybeOptions?: QueryOptions): Resource[];
14
16
  /** Loop-expanded resource declarations (`Ctor.fromLoop(...)`). */
@@ -1 +1 @@
1
- {"version":3,"file":"resource-query.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-query.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAsCD,gDAAgD;AAChD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,qBAAqB,EAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,EACrD,YAAY,CAAC,EAAE,YAAY,GAC1B,QAAQ,EAAE,CAOZ;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,qBAAqB,EAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,EACrD,YAAY,CAAC,EAAE,YAAY,GAC1B,cAAc,CAAC,QAAQ,CAAC,EAAE,CAO5B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAC5C,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,GACrB,CAAC,GAAG,SAAS,CAKf"}
1
+ {"version":3,"file":"resource-query.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-query.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAsCD,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,GAAG,mBAAmB,EAAE,CAQ9F;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,qBAAqB,EAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,EACrD,YAAY,CAAC,EAAE,YAAY,GAC1B,QAAQ,EAAE,CAOZ;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,qBAAqB,EAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,EACrD,YAAY,CAAC,EAAE,YAAY,GAC1B,cAAc,CAAC,QAAQ,CAAC,EAAE,CAO5B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAC5C,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,GACrB,CAAC,GAAG,SAAS,CAKf"}
@@ -35,6 +35,16 @@ function collectResourcesUnder(root, wantLooped, recursive) {
35
35
  // Engine entry points — thin, loosely-typed; `Stack` supplies the public
36
36
  // typed overloads and delegates here.
37
37
  // ---------------------------------------------------------------------------
38
+ /** All scalar and looped declarations in tree order, including a resource root. */
39
+ export function collectResourceDeclarations(root) {
40
+ const result = [];
41
+ root.visit((node) => {
42
+ if (isResourceDeclaration(node)) {
43
+ result.push(node.self);
44
+ }
45
+ });
46
+ return result;
47
+ }
38
48
  /** Scalar (un-looped) resource declarations. */
39
49
  export function getResources(root, typeOrOptions, maybeOptions) {
40
50
  const isCtor = typeof typeOrOptions === "function";
@@ -1 +1 @@
1
- {"version":3,"file":"resource-query.js","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-query.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isResourceDeclaration, isLoopedResource, isLoopedResourceOf } from \"./resource-utils.js\";\nimport { deref } from \"./resource-proxy.js\";\nimport type { ProvisioningComponent } from \"../provisioning-component.js\";\nimport type { LoopedResource, Resource } from \"./resource.js\";\nimport type { ResourceCtor } from \"./resource-registry.js\";\n\n// ---------------------------------------------------------------------------\n// Query result types\n// ---------------------------------------------------------------------------\n\n/** Options accepted by the `Stack` resource queries. */\nexport interface QueryOptions {\n /**\n * Whether to walk the stack's entire subtree (default `true`) or only its\n * **direct children** (`false`).\n */\n readonly recursive?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Query engine (module-private)\n// ---------------------------------------------------------------------------\n// Imports only brand guards (`resource-utils`) — which do not import\n// `ProvisioningComponent`/`Stack` at runtime — plus types (type-only), so there is no\n// import cycle.\n\n/**\n * Collect the resource declarations beneath `root` (the root itself is never\n * included). `recursive` descends the whole subtree via `visit`; otherwise\n * only `root`'s direct children are considered. `wantLooped` selects the\n * looped declarations (`Ctor.fromLoop(...)`) vs. the scalar ones.\n */\nfunction collectResourcesUnder(\n root: ProvisioningComponent,\n wantLooped: boolean,\n recursive: boolean,\n): (Resource | LoopedResource<Resource>)[] {\n const result: (Resource | LoopedResource<Resource>)[] = [];\n const consider = (node: ProvisioningComponent): void => {\n if (!isResourceDeclaration(node)) return;\n const r = node.self as Resource | LoopedResource<Resource>;\n if (isLoopedResource(r) === wantLooped) result.push(r);\n };\n for (const child of root.children) {\n if (recursive) child.visit(consider);\n else consider(child);\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Engine entry points — thin, loosely-typed; `Stack` supplies the public\n// typed overloads and delegates here.\n// ---------------------------------------------------------------------------\n\n/** Scalar (un-looped) resource declarations. */\nexport function getResources(\n root: ProvisioningComponent,\n typeOrOptions?: ResourceCtor<Resource> | QueryOptions,\n maybeOptions?: QueryOptions,\n): Resource[] {\n const isCtor = typeof typeOrOptions === \"function\";\n const type = isCtor ? (typeOrOptions as ResourceCtor<Resource>) : undefined;\n const options = (isCtor ? maybeOptions : typeOrOptions) as QueryOptions | undefined;\n const recursive = options?.recursive ?? true;\n const found = collectResourcesUnder(root, false, recursive) as Resource[];\n return type === undefined ? found : found.filter((r) => r instanceof type);\n}\n\n/** Loop-expanded resource declarations (`Ctor.fromLoop(...)`). */\nexport function getLoopedResources(\n root: ProvisioningComponent,\n typeOrOptions?: ResourceCtor<Resource> | QueryOptions,\n maybeOptions?: QueryOptions,\n): LoopedResource<Resource>[] {\n const isCtor = typeof typeOrOptions === \"function\";\n const type = isCtor ? (typeOrOptions as ResourceCtor<Resource>) : undefined;\n const options = (isCtor ? maybeOptions : typeOrOptions) as QueryOptions | undefined;\n const recursive = options?.recursive ?? true;\n const found = collectResourcesUnder(root, true, recursive) as LoopedResource<Resource>[];\n return type === undefined ? found : found.filter((r) => isLoopedResourceOf(r, type));\n}\n\n/**\n * First scalar resource of `type` whose literal name equals `name`, or\n * `undefined`. `deref` resolves the name's expression proxy to its literal\n * (a `Resource`'s `name` is an `Expression`, so `r.name === name` is always\n * false without it).\n */\nexport function getResource<T extends Resource>(\n root: ProvisioningComponent,\n type: ResourceCtor<T>,\n name: string,\n options?: QueryOptions,\n): T | undefined {\n for (const r of getResources(root, type, options)) {\n if (deref((r as Resource).name) === name) return r as T;\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"resource-query.js","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-query.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isResourceDeclaration, isLoopedResource, isLoopedResourceOf } from \"./resource-utils.js\";\nimport { deref } from \"./resource-proxy.js\";\nimport type { ProvisioningComponent } from \"../provisioning-component.js\";\nimport type { LoopedResource, Resource, ResourceDeclaration } from \"./resource.js\";\nimport type { ResourceCtor } from \"./resource-registry.js\";\n\n// ---------------------------------------------------------------------------\n// Query result types\n// ---------------------------------------------------------------------------\n\n/** Options accepted by the `Stack` resource queries. */\nexport interface QueryOptions {\n /**\n * Whether to walk the stack's entire subtree (default `true`) or only its\n * **direct children** (`false`).\n */\n readonly recursive?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Query engine (module-private)\n// ---------------------------------------------------------------------------\n// Imports only brand guards (`resource-utils`) — which do not import\n// `ProvisioningComponent`/`Stack` at runtime — plus types (type-only), so there is no\n// import cycle.\n\n/**\n * Collect the resource declarations beneath `root` (the root itself is never\n * included). `recursive` descends the whole subtree via `visit`; otherwise\n * only `root`'s direct children are considered. `wantLooped` selects the\n * looped declarations (`Ctor.fromLoop(...)`) vs. the scalar ones.\n */\nfunction collectResourcesUnder(\n root: ProvisioningComponent,\n wantLooped: boolean,\n recursive: boolean,\n): (Resource | LoopedResource<Resource>)[] {\n const result: (Resource | LoopedResource<Resource>)[] = [];\n const consider = (node: ProvisioningComponent): void => {\n if (!isResourceDeclaration(node)) return;\n const r = node.self as Resource | LoopedResource<Resource>;\n if (isLoopedResource(r) === wantLooped) result.push(r);\n };\n for (const child of root.children) {\n if (recursive) child.visit(consider);\n else consider(child);\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Engine entry points — thin, loosely-typed; `Stack` supplies the public\n// typed overloads and delegates here.\n// ---------------------------------------------------------------------------\n\n/** All scalar and looped declarations in tree order, including a resource root. */\nexport function collectResourceDeclarations(root: ProvisioningComponent): ResourceDeclaration[] {\n const result: ResourceDeclaration[] = [];\n root.visit((node) => {\n if (isResourceDeclaration(node)) {\n result.push(node.self);\n }\n });\n return result;\n}\n\n/** Scalar (un-looped) resource declarations. */\nexport function getResources(\n root: ProvisioningComponent,\n typeOrOptions?: ResourceCtor<Resource> | QueryOptions,\n maybeOptions?: QueryOptions,\n): Resource[] {\n const isCtor = typeof typeOrOptions === \"function\";\n const type = isCtor ? (typeOrOptions as ResourceCtor<Resource>) : undefined;\n const options = (isCtor ? maybeOptions : typeOrOptions) as QueryOptions | undefined;\n const recursive = options?.recursive ?? true;\n const found = collectResourcesUnder(root, false, recursive) as Resource[];\n return type === undefined ? found : found.filter((r) => r instanceof type);\n}\n\n/** Loop-expanded resource declarations (`Ctor.fromLoop(...)`). */\nexport function getLoopedResources(\n root: ProvisioningComponent,\n typeOrOptions?: ResourceCtor<Resource> | QueryOptions,\n maybeOptions?: QueryOptions,\n): LoopedResource<Resource>[] {\n const isCtor = typeof typeOrOptions === \"function\";\n const type = isCtor ? (typeOrOptions as ResourceCtor<Resource>) : undefined;\n const options = (isCtor ? maybeOptions : typeOrOptions) as QueryOptions | undefined;\n const recursive = options?.recursive ?? true;\n const found = collectResourcesUnder(root, true, recursive) as LoopedResource<Resource>[];\n return type === undefined ? found : found.filter((r) => isLoopedResourceOf(r, type));\n}\n\n/**\n * First scalar resource of `type` whose literal name equals `name`, or\n * `undefined`. `deref` resolves the name's expression proxy to its literal\n * (a `Resource`'s `name` is an `Expression`, so `r.name === name` is always\n * false without it).\n */\nexport function getResource<T extends Resource>(\n root: ProvisioningComponent,\n type: ResourceCtor<T>,\n name: string,\n options?: QueryOptions,\n): T | undefined {\n for (const r of getResources(root, type, options)) {\n if (deref((r as Resource).name) === name) return r as T;\n }\n return undefined;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { ResourceDeclaration } from "./resource.js";
2
+ import { type ExpressionNode } from "../../expression/ast-nodes.js";
3
+ /** Finds the nearest resource parent, excluding resource-group containment. */
4
+ export declare function getArmParent(resource: ResourceDeclaration): ResourceDeclaration | undefined;
5
+ /** Finds the resource group containing the authored resource. */
6
+ export declare function getResourceGroupAncestor(resource: ResourceDeclaration): ResourceDeclaration | undefined;
7
+ /** Reads an explicit scope expression without creating a resource-property reference. */
8
+ export declare function getResourceScope(resource: ResourceDeclaration): ExpressionNode | undefined;
9
+ //# sourceMappingURL=resource-relationships.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-relationships.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-relationships.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEtF,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,SAAS,CAO3F;AAED,iEAAiE;AACjE,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,mBAAmB,GAC5B,mBAAmB,GAAG,SAAS,CAOjC;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,cAAc,GAAG,SAAS,CAO1F"}
@@ -0,0 +1,35 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { ResourceGroup } from "../built-in-resources/resource-group.js";
4
+ import { unwrapResourceHandle } from "./resource-proxy.js";
5
+ import { isResourceDeclaration } from "./resource-utils.js";
6
+ import { isExpressionNode } from "../../expression/ast-nodes.js";
7
+ /** Finds the nearest resource parent, excluding resource-group containment. */
8
+ export function getArmParent(resource) {
9
+ for (let parent = resource.parent; parent !== undefined; parent = parent.parent) {
10
+ if (isResourceDeclaration(parent)) {
11
+ return parent.type === ResourceGroup.resourceType ? undefined : parent.self;
12
+ }
13
+ }
14
+ return undefined;
15
+ }
16
+ /** Finds the resource group containing the authored resource. */
17
+ export function getResourceGroupAncestor(resource) {
18
+ for (let current = resource.parent; current !== undefined; current = current.parent) {
19
+ if (isResourceDeclaration(current) && current.type === ResourceGroup.resourceType) {
20
+ return current.self;
21
+ }
22
+ }
23
+ return undefined;
24
+ }
25
+ /** Reads an explicit scope expression without creating a resource-property reference. */
26
+ export function getResourceScope(resource) {
27
+ const scope = Reflect.get(unwrapResourceHandle(resource), "scope");
28
+ if (scope === undefined)
29
+ return undefined;
30
+ if (!isExpressionNode(scope)) {
31
+ throw new Error(`Invalid authored scope for resource "${resource.type}".`);
32
+ }
33
+ return scope;
34
+ }
35
+ //# sourceMappingURL=resource-relationships.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-relationships.js","sourceRoot":"","sources":["../../../../src/constructs/resource/resource-relationships.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAuB,MAAM,+BAA+B,CAAC;AAEtF,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,QAA6B;IACxD,KAAK,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAChF,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,wBAAwB,CACtC,QAA6B;IAE7B,KAAK,IAAI,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACpF,IAAI,qBAAqB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,YAAY,EAAE,CAAC;YAClF,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,gBAAgB,CAAC,QAA6B;IAC5D,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ResourceGroup } from \"../built-in-resources/resource-group.js\";\nimport { unwrapResourceHandle } from \"./resource-proxy.js\";\nimport { isResourceDeclaration } from \"./resource-utils.js\";\nimport type { ResourceDeclaration } from \"./resource.js\";\nimport { isExpressionNode, type ExpressionNode } from \"../../expression/ast-nodes.js\";\n\n/** Finds the nearest resource parent, excluding resource-group containment. */\nexport function getArmParent(resource: ResourceDeclaration): ResourceDeclaration | undefined {\n for (let parent = resource.parent; parent !== undefined; parent = parent.parent) {\n if (isResourceDeclaration(parent)) {\n return parent.type === ResourceGroup.resourceType ? undefined : parent.self;\n }\n }\n return undefined;\n}\n\n/** Finds the resource group containing the authored resource. */\nexport function getResourceGroupAncestor(\n resource: ResourceDeclaration,\n): ResourceDeclaration | undefined {\n for (let current = resource.parent; current !== undefined; current = current.parent) {\n if (isResourceDeclaration(current) && current.type === ResourceGroup.resourceType) {\n return current.self;\n }\n }\n return undefined;\n}\n\n/** Reads an explicit scope expression without creating a resource-property reference. */\nexport function getResourceScope(resource: ResourceDeclaration): ExpressionNode | undefined {\n const scope: unknown = Reflect.get(unwrapResourceHandle(resource), \"scope\");\n if (scope === undefined) return undefined;\n if (!isExpressionNode(scope)) {\n throw new Error(`Invalid authored scope for resource \"${resource.type}\".`);\n }\n return scope;\n}\n"]}
@@ -31,21 +31,12 @@ export interface ResourceState<TType extends string = string> {
31
31
  readonly apiVersion: string;
32
32
  readonly existing?: boolean | undefined;
33
33
  /**
34
- * Optional Bicep `scope:` expression. Currently emitted only on `existing`
35
- * resource references (e.g. `scope: resourceGroup('shared')` for a
36
- * cross-RG lookup). Future scope-hoisted resource types may emit it on
37
- * deployable resources too — for example, deploying a
38
- * `Microsoft.Management/managementGroups` from a subscription-targeted
39
- * file requires `scope: tenant()`. See `contributing/bicep/bicep-scope.md` section 2.2.
34
+ * Explicit scope expression. Authoring populates this for existing-resource
35
+ * lookups; restoration can retain uninterpreted scope expressions on any
36
+ * declaration. Expressions are normalized to raw nodes.
40
37
  *
41
- * For ordinary deployable resources this field is `undefined` — their
42
- * deployment scope is determined by the file's `targetScope` (or by the
43
- * containing `ResourceGroup` / module the resource lives in).
44
- *
45
- * Stored as a raw `ExpressionNode` (the user-facing `ScopeExpression`
46
- * proxy is unwrapped at the constructor boundary, matching the
47
- * "`state` holds normalized raw nodes" invariant that
48
- * `normalizeAssignedValue` maintains for every other field).
38
+ * New-resource authoring still derives placement from the Stack and parent
39
+ * context rather than accepting an explicit scope override.
49
40
  */
50
41
  readonly scope?: ExpressionNode | undefined;
51
42
  readonly condition?: ExpressionOrValue<boolean> | undefined;
@@ -63,9 +54,9 @@ export interface ResourceState<TType extends string = string> {
63
54
  * resource as the ProvisioningComponent `context` argument to the resource constructor
64
55
  * (with `{ existing: true }`), not via this `scope` field.
65
56
  */
66
- export interface ExistingResourceProps {
57
+ export interface ExistingResourceProps<TName extends string = string> {
67
58
  /** Required. The actual Azure name of the existing resource. */
68
- readonly name: ExpressionOrValue<string>;
59
+ readonly name: ExpressionOrValue<TName>;
69
60
  /**
70
61
  * Optional. The scope at which to look up the resource. Used when the
71
62
  * resource lives outside the current deployment's scope (different RG,
@@ -144,6 +135,7 @@ export interface ResourceOptions {
144
135
  * access behavior.
145
136
  */
146
137
  export declare abstract class ResourceDeclaration<TType extends string = string> extends ProvisioningComponent {
138
+ protected readonly namingRules: ResourceNamingRules | undefined;
147
139
  /**
148
140
  * Brand marker for cross-realm `isResourceDeclaration()` checks. Uses
149
141
  * `Symbol.for` so it survives multiple copies of `@azure/provisioning-core`.
@@ -288,13 +280,15 @@ export declare class Resource<TType extends string = string> extends ResourceDec
288
280
  * Per-resource-type naming constraints, consumed by the active
289
281
  * {@link NamingPolicy} when a resource is created without an explicit
290
282
  * `name`. Generated CDK subclasses override this with a concrete value;
291
- * the base default of `undefined` yields `MOST_RESTRICTIVE` behavior.
283
+ * the base default of `undefined` uses the default naming convention.
292
284
  *
293
285
  * This is type metadata, not user input, so it is kept off the public
294
286
  * props surface and read reflectively in the constructor via
295
287
  * `this.constructor` rather than being threaded through `ResourceProps`.
296
288
  */
297
289
  protected static namingRules?: ResourceNamingRules;
290
+ /** Validates construction inputs before a scalar or looped declaration is registered. */
291
+ protected static validate(_context: ProvisioningComponent, _props: ResourceProps<string> & Record<string, unknown>, _options?: ResourceOptions, _namingRules?: ResourceNamingRules): void;
298
292
  protected _selfProxy: this | undefined;
299
293
  constructor(context: ProvisioningComponent, props: ResourceProps<TType> & Record<string, unknown>, options?: ResourceOptions);
300
294
  get self(): this;
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,0BAA0B,EAC1B,qBAAqB,EAStB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAMvE;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC1D,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;CAC7D;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,SAAS,MAAM;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAErB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACrD;AAED;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,mBAAmB,CACvC,KAAK,SAAS,MAAM,GAAG,MAAM,CAC7B,SAAQ,qBAAqB;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,CAAC,0BAA0B,CAAC,EAAG,IAAI,CAAU;IAMtD,SAAS,CAAC,KAAK,EAAG,aAAa,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;gBAED,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrD,OAAO,CAAC,EAAE,eAAe,EACzB,WAAW,CAAC,EAAE,mBAAmB;IA6InC;;;;;;;;;;;;;OAaG;IACH,SAAS,KAAK,CAAC,mBAAmB,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEpF;IAED,IAAI,IAAI,IAAI,KAAK,CAEhB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS,CAEtD;IAED,IAAI,SAAS,IAAI,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAE1D;IAED,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,SAAS,eAAe,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM;IAaxF,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;CAGzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,QAAQ,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,mBAAmB,CAAC,KAAK,CAAC;IACrF;;;OAGG;IACH,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAG,IAAI,CAAU;IAE1C;;;;;;;;OAQG;IACH,MAAM,CAAC,aAAa,CAClB,IAAI,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EACpE,KAAK,EAAE,cAAc,EACrB,eAAe,CAAC,EAAE,mBAAmB,GACpC,IAAI;IAIP;;;;;;;;;;OAUG;IACH,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAI1F;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,MAAM,CAAC,kBAAkB,CACjC,KAAK,CAAC,EAAE,OAAO,GACd,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAalD;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAEnD,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,SAAS,CAAC;gBAGrC,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrD,OAAO,CAAC,EAAE,eAAe;IA+B3B,IAAa,IAAI,IAAI,IAAI,CAExB;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,CAE7B;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAExC;IAED,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,CAE3B;CACF;AAMD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,IAAI,CAAC,CAAC;;IACjB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAShB,UAAU,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW;IAmBrE;;;;;;;;;;OAUG;IACH,IAAI,aAAa,IAAI,MAAM,CAM1B;IAED;;;;;;OAMG;IACH,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,CAO9B;IAED;;;;;;;;OAQG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;CACF;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;IAC/F;;;;OAIG;IACH,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAG,IAAI,CAAU;IAEjD,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAQ3B,OAAO;IAmDP;;;;;;;;OAQG;IACH,IAAI,WAAW,IAAI,KACjB,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,eAAe,KACtB,CAAC,CAEL;IAED;;;;;;;;;OASG;IACH,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC;CAOxC;AAED,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,qBAAqB,EAAE,CAAC,EAAE,IAAI,EAC/F,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,CAAC,EACvE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAChB,OAAO,EAAE,CAAC,EACV,GAAG,IAAI,EAAE,SAAS,SAAS,CAAC,GACxB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,GACtC,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,GACxC,cAAc,CAAC,CAAC,CAAC,CA0BnB"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../../src/constructs/resource/resource.ts"],"names":[],"mappings":"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"}