@azure/provisioning-core 1.0.0-beta.1

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 (440) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +40 -0
  4. package/dist/browser/constructs/built-in-resources/resource-group.d.ts +50 -0
  5. package/dist/browser/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  6. package/dist/browser/constructs/built-in-resources/resource-group.js +100 -0
  7. package/dist/browser/constructs/built-in-resources/resource-group.js.map +1 -0
  8. package/dist/browser/constructs/output.d.ts +80 -0
  9. package/dist/browser/constructs/output.d.ts.map +1 -0
  10. package/dist/browser/constructs/output.js +75 -0
  11. package/dist/browser/constructs/output.js.map +1 -0
  12. package/dist/browser/constructs/parameter.d.ts +77 -0
  13. package/dist/browser/constructs/parameter.d.ts.map +1 -0
  14. package/dist/browser/constructs/parameter.js +93 -0
  15. package/dist/browser/constructs/parameter.js.map +1 -0
  16. package/dist/browser/constructs/provisioning-component.d.ts +91 -0
  17. package/dist/browser/constructs/provisioning-component.d.ts.map +1 -0
  18. package/dist/browser/constructs/provisioning-component.js +150 -0
  19. package/dist/browser/constructs/provisioning-component.js.map +1 -0
  20. package/dist/browser/constructs/resource/resource-proxy.d.ts +134 -0
  21. package/dist/browser/constructs/resource/resource-proxy.d.ts.map +1 -0
  22. package/dist/browser/constructs/resource/resource-proxy.js +517 -0
  23. package/dist/browser/constructs/resource/resource-proxy.js.map +1 -0
  24. package/dist/browser/constructs/resource/resource-query.d.ts +23 -0
  25. package/dist/browser/constructs/resource/resource-query.d.ts.map +1 -0
  26. package/dist/browser/constructs/resource/resource-query.js +69 -0
  27. package/dist/browser/constructs/resource/resource-query.js.map +1 -0
  28. package/dist/browser/constructs/resource/resource-registry.d.ts +99 -0
  29. package/dist/browser/constructs/resource/resource-registry.d.ts.map +1 -0
  30. package/dist/browser/constructs/resource/resource-registry.js +51 -0
  31. package/dist/browser/constructs/resource/resource-registry.js.map +1 -0
  32. package/dist/browser/constructs/resource/resource-type-registry.d.ts +46 -0
  33. package/dist/browser/constructs/resource/resource-type-registry.d.ts.map +1 -0
  34. package/dist/browser/constructs/resource/resource-type-registry.js +156 -0
  35. package/dist/browser/constructs/resource/resource-type-registry.js.map +1 -0
  36. package/dist/browser/constructs/resource/resource-utils.d.ts +60 -0
  37. package/dist/browser/constructs/resource/resource-utils.d.ts.map +1 -0
  38. package/dist/browser/constructs/resource/resource-utils.js +75 -0
  39. package/dist/browser/constructs/resource/resource-utils.js.map +1 -0
  40. package/dist/browser/constructs/resource/resource.d.ts +460 -0
  41. package/dist/browser/constructs/resource/resource.d.ts.map +1 -0
  42. package/dist/browser/constructs/resource/resource.js +582 -0
  43. package/dist/browser/constructs/resource/resource.js.map +1 -0
  44. package/dist/browser/constructs/stack.d.ts +110 -0
  45. package/dist/browser/constructs/stack.d.ts.map +1 -0
  46. package/dist/browser/constructs/stack.js +110 -0
  47. package/dist/browser/constructs/stack.js.map +1 -0
  48. package/dist/browser/constructs/variable.d.ts +63 -0
  49. package/dist/browser/constructs/variable.d.ts.map +1 -0
  50. package/dist/browser/constructs/variable.js +74 -0
  51. package/dist/browser/constructs/variable.js.map +1 -0
  52. package/dist/browser/deployment-context/deployment-context.d.ts +27 -0
  53. package/dist/browser/deployment-context/deployment-context.d.ts.map +1 -0
  54. package/dist/browser/deployment-context/deployment-context.js +4 -0
  55. package/dist/browser/deployment-context/deployment-context.js.map +1 -0
  56. package/dist/browser/expression/ast-nodes.d.ts +100 -0
  57. package/dist/browser/expression/ast-nodes.d.ts.map +1 -0
  58. package/dist/browser/expression/ast-nodes.js +125 -0
  59. package/dist/browser/expression/ast-nodes.js.map +1 -0
  60. package/dist/browser/expression/expressions.d.ts +164 -0
  61. package/dist/browser/expression/expressions.d.ts.map +1 -0
  62. package/dist/browser/expression/expressions.js +211 -0
  63. package/dist/browser/expression/expressions.js.map +1 -0
  64. package/dist/browser/fn.d.ts +194 -0
  65. package/dist/browser/fn.d.ts.map +1 -0
  66. package/dist/browser/fn.js +334 -0
  67. package/dist/browser/fn.js.map +1 -0
  68. package/dist/browser/index.d.ts +25 -0
  69. package/dist/browser/index.d.ts.map +1 -0
  70. package/dist/browser/index.js +17 -0
  71. package/dist/browser/index.js.map +1 -0
  72. package/dist/browser/internal.d.ts +13 -0
  73. package/dist/browser/internal.d.ts.map +1 -0
  74. package/dist/browser/internal.js +10 -0
  75. package/dist/browser/internal.js.map +1 -0
  76. package/dist/browser/naming/naming-policy.d.ts +56 -0
  77. package/dist/browser/naming/naming-policy.d.ts.map +1 -0
  78. package/dist/browser/naming/naming-policy.js +97 -0
  79. package/dist/browser/naming/naming-policy.js.map +1 -0
  80. package/dist/browser/naming/naming-rules.d.ts +15 -0
  81. package/dist/browser/naming/naming-rules.d.ts.map +1 -0
  82. package/dist/browser/naming/naming-rules.js +15 -0
  83. package/dist/browser/naming/naming-rules.js.map +1 -0
  84. package/dist/browser/package.json +8 -0
  85. package/dist/browser/serialization/contract/generated/ast.d.ts +508 -0
  86. package/dist/browser/serialization/contract/generated/ast.d.ts.map +1 -0
  87. package/dist/browser/serialization/contract/generated/ast.js +23 -0
  88. package/dist/browser/serialization/contract/generated/ast.js.map +1 -0
  89. package/dist/browser/serialization/contract/index.d.ts +2 -0
  90. package/dist/browser/serialization/contract/index.d.ts.map +1 -0
  91. package/dist/browser/serialization/contract/index.js +4 -0
  92. package/dist/browser/serialization/contract/index.js.map +1 -0
  93. package/dist/browser/serialization/index.d.ts +4 -0
  94. package/dist/browser/serialization/index.d.ts.map +1 -0
  95. package/dist/browser/serialization/index.js +5 -0
  96. package/dist/browser/serialization/index.js.map +1 -0
  97. package/dist/browser/serialization/json/deserialize.d.ts +24 -0
  98. package/dist/browser/serialization/json/deserialize.d.ts.map +1 -0
  99. package/dist/browser/serialization/json/deserialize.js +437 -0
  100. package/dist/browser/serialization/json/deserialize.js.map +1 -0
  101. package/dist/browser/serialization/json/encoding.d.ts +4 -0
  102. package/dist/browser/serialization/json/encoding.d.ts.map +1 -0
  103. package/dist/browser/serialization/json/encoding.js +319 -0
  104. package/dist/browser/serialization/json/encoding.js.map +1 -0
  105. package/dist/browser/serialization/json/expression.d.ts +32 -0
  106. package/dist/browser/serialization/json/expression.d.ts.map +1 -0
  107. package/dist/browser/serialization/json/expression.js +494 -0
  108. package/dist/browser/serialization/json/expression.js.map +1 -0
  109. package/dist/browser/serialization/json/lower.d.ts +41 -0
  110. package/dist/browser/serialization/json/lower.d.ts.map +1 -0
  111. package/dist/browser/serialization/json/lower.js +334 -0
  112. package/dist/browser/serialization/json/lower.js.map +1 -0
  113. package/dist/browser/serialization/json/pluralize-config.d.ts +3 -0
  114. package/dist/browser/serialization/json/pluralize-config.d.ts.map +1 -0
  115. package/dist/browser/serialization/json/pluralize-config.js +7 -0
  116. package/dist/browser/serialization/json/pluralize-config.js.map +1 -0
  117. package/dist/browser/serialization/json/serialize.d.ts +12 -0
  118. package/dist/browser/serialization/json/serialize.d.ts.map +1 -0
  119. package/dist/browser/serialization/json/serialize.js +389 -0
  120. package/dist/browser/serialization/json/serialize.js.map +1 -0
  121. package/dist/browser/serialization/json/util.d.ts +2 -0
  122. package/dist/browser/serialization/json/util.d.ts.map +1 -0
  123. package/dist/browser/serialization/json/util.js +19 -0
  124. package/dist/browser/serialization/json/util.js.map +1 -0
  125. package/dist/browser/serialization/utils.d.ts +3 -0
  126. package/dist/browser/serialization/utils.d.ts.map +1 -0
  127. package/dist/browser/serialization/utils.js +146 -0
  128. package/dist/browser/serialization/utils.js.map +1 -0
  129. package/dist/browser/shape/shape-registry.d.ts +51 -0
  130. package/dist/browser/shape/shape-registry.d.ts.map +1 -0
  131. package/dist/browser/shape/shape-registry.js +41 -0
  132. package/dist/browser/shape/shape-registry.js.map +1 -0
  133. package/dist/browser/shape/shape.d.ts +407 -0
  134. package/dist/browser/shape/shape.d.ts.map +1 -0
  135. package/dist/browser/shape/shape.js +424 -0
  136. package/dist/browser/shape/shape.js.map +1 -0
  137. package/dist/browser/shape/value-encoding.d.ts +121 -0
  138. package/dist/browser/shape/value-encoding.d.ts.map +1 -0
  139. package/dist/browser/shape/value-encoding.js +32 -0
  140. package/dist/browser/shape/value-encoding.js.map +1 -0
  141. package/dist/browser/types.d.ts +9 -0
  142. package/dist/browser/types.d.ts.map +1 -0
  143. package/dist/browser/types.js +4 -0
  144. package/dist/browser/types.js.map +1 -0
  145. package/dist/browser/util.d.ts +33 -0
  146. package/dist/browser/util.d.ts.map +1 -0
  147. package/dist/browser/util.js +74 -0
  148. package/dist/browser/util.js.map +1 -0
  149. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts +50 -0
  150. package/dist/commonjs/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  151. package/dist/commonjs/constructs/built-in-resources/resource-group.js +114 -0
  152. package/dist/commonjs/constructs/built-in-resources/resource-group.js.map +7 -0
  153. package/dist/commonjs/constructs/output.d.ts +80 -0
  154. package/dist/commonjs/constructs/output.d.ts.map +1 -0
  155. package/dist/commonjs/constructs/output.js +75 -0
  156. package/dist/commonjs/constructs/output.js.map +7 -0
  157. package/dist/commonjs/constructs/parameter.d.ts +77 -0
  158. package/dist/commonjs/constructs/parameter.d.ts.map +1 -0
  159. package/dist/commonjs/constructs/parameter.js +95 -0
  160. package/dist/commonjs/constructs/parameter.js.map +7 -0
  161. package/dist/commonjs/constructs/provisioning-component.d.ts +91 -0
  162. package/dist/commonjs/constructs/provisioning-component.d.ts.map +1 -0
  163. package/dist/commonjs/constructs/provisioning-component.js +130 -0
  164. package/dist/commonjs/constructs/provisioning-component.js.map +7 -0
  165. package/dist/commonjs/constructs/resource/resource-proxy.d.ts +134 -0
  166. package/dist/commonjs/constructs/resource/resource-proxy.d.ts.map +1 -0
  167. package/dist/commonjs/constructs/resource/resource-proxy.js +456 -0
  168. package/dist/commonjs/constructs/resource/resource-proxy.js.map +7 -0
  169. package/dist/commonjs/constructs/resource/resource-query.d.ts +23 -0
  170. package/dist/commonjs/constructs/resource/resource-query.d.ts.map +1 -0
  171. package/dist/commonjs/constructs/resource/resource-query.js +68 -0
  172. package/dist/commonjs/constructs/resource/resource-query.js.map +7 -0
  173. package/dist/commonjs/constructs/resource/resource-registry.d.ts +99 -0
  174. package/dist/commonjs/constructs/resource/resource-registry.d.ts.map +1 -0
  175. package/dist/commonjs/constructs/resource/resource-registry.js +49 -0
  176. package/dist/commonjs/constructs/resource/resource-registry.js.map +7 -0
  177. package/dist/commonjs/constructs/resource/resource-type-registry.d.ts +46 -0
  178. package/dist/commonjs/constructs/resource/resource-type-registry.d.ts.map +1 -0
  179. package/dist/commonjs/constructs/resource/resource-type-registry.js +178 -0
  180. package/dist/commonjs/constructs/resource/resource-type-registry.js.map +7 -0
  181. package/dist/commonjs/constructs/resource/resource-utils.d.ts +60 -0
  182. package/dist/commonjs/constructs/resource/resource-utils.d.ts.map +1 -0
  183. package/dist/commonjs/constructs/resource/resource-utils.js +51 -0
  184. package/dist/commonjs/constructs/resource/resource-utils.js.map +7 -0
  185. package/dist/commonjs/constructs/resource/resource.d.ts +460 -0
  186. package/dist/commonjs/constructs/resource/resource.d.ts.map +1 -0
  187. package/dist/commonjs/constructs/resource/resource.js +455 -0
  188. package/dist/commonjs/constructs/resource/resource.js.map +7 -0
  189. package/dist/commonjs/constructs/stack.d.ts +110 -0
  190. package/dist/commonjs/constructs/stack.d.ts.map +1 -0
  191. package/dist/commonjs/constructs/stack.js +101 -0
  192. package/dist/commonjs/constructs/stack.js.map +7 -0
  193. package/dist/commonjs/constructs/variable.d.ts +63 -0
  194. package/dist/commonjs/constructs/variable.d.ts.map +1 -0
  195. package/dist/commonjs/constructs/variable.js +85 -0
  196. package/dist/commonjs/constructs/variable.js.map +7 -0
  197. package/dist/commonjs/deployment-context/deployment-context.d.ts +27 -0
  198. package/dist/commonjs/deployment-context/deployment-context.d.ts.map +1 -0
  199. package/dist/commonjs/deployment-context/deployment-context.js +16 -0
  200. package/dist/commonjs/deployment-context/deployment-context.js.map +7 -0
  201. package/dist/commonjs/expression/ast-nodes.d.ts +100 -0
  202. package/dist/commonjs/expression/ast-nodes.d.ts.map +1 -0
  203. package/dist/commonjs/expression/ast-nodes.js +152 -0
  204. package/dist/commonjs/expression/ast-nodes.js.map +7 -0
  205. package/dist/commonjs/expression/expressions.d.ts +164 -0
  206. package/dist/commonjs/expression/expressions.d.ts.map +1 -0
  207. package/dist/commonjs/expression/expressions.js +171 -0
  208. package/dist/commonjs/expression/expressions.js.map +7 -0
  209. package/dist/commonjs/fn.d.ts +194 -0
  210. package/dist/commonjs/fn.d.ts.map +1 -0
  211. package/dist/commonjs/fn.js +382 -0
  212. package/dist/commonjs/fn.js.map +7 -0
  213. package/dist/commonjs/index.d.ts +25 -0
  214. package/dist/commonjs/index.d.ts.map +1 -0
  215. package/dist/commonjs/index.js +93 -0
  216. package/dist/commonjs/index.js.map +7 -0
  217. package/dist/commonjs/internal.d.ts +13 -0
  218. package/dist/commonjs/internal.d.ts.map +1 -0
  219. package/dist/commonjs/internal.js +88 -0
  220. package/dist/commonjs/internal.js.map +7 -0
  221. package/dist/commonjs/naming/naming-policy.d.ts +56 -0
  222. package/dist/commonjs/naming/naming-policy.d.ts.map +1 -0
  223. package/dist/commonjs/naming/naming-policy.js +99 -0
  224. package/dist/commonjs/naming/naming-policy.js.map +7 -0
  225. package/dist/commonjs/naming/naming-rules.d.ts +15 -0
  226. package/dist/commonjs/naming/naming-rules.d.ts.map +1 -0
  227. package/dist/commonjs/naming/naming-rules.js +39 -0
  228. package/dist/commonjs/naming/naming-rules.js.map +7 -0
  229. package/dist/commonjs/package.json +8 -0
  230. package/dist/commonjs/serialization/contract/generated/ast.d.ts +508 -0
  231. package/dist/commonjs/serialization/contract/generated/ast.d.ts.map +1 -0
  232. package/dist/commonjs/serialization/contract/generated/ast.js +40 -0
  233. package/dist/commonjs/serialization/contract/generated/ast.js.map +7 -0
  234. package/dist/commonjs/serialization/contract/index.d.ts +2 -0
  235. package/dist/commonjs/serialization/contract/index.d.ts.map +1 -0
  236. package/dist/commonjs/serialization/contract/index.js +22 -0
  237. package/dist/commonjs/serialization/contract/index.js.map +7 -0
  238. package/dist/commonjs/serialization/index.d.ts +4 -0
  239. package/dist/commonjs/serialization/index.d.ts.map +1 -0
  240. package/dist/commonjs/serialization/index.js +31 -0
  241. package/dist/commonjs/serialization/index.js.map +7 -0
  242. package/dist/commonjs/serialization/json/deserialize.d.ts +24 -0
  243. package/dist/commonjs/serialization/json/deserialize.d.ts.map +1 -0
  244. package/dist/commonjs/serialization/json/deserialize.js +385 -0
  245. package/dist/commonjs/serialization/json/deserialize.js.map +7 -0
  246. package/dist/commonjs/serialization/json/encoding.d.ts +4 -0
  247. package/dist/commonjs/serialization/json/encoding.d.ts.map +1 -0
  248. package/dist/commonjs/serialization/json/encoding.js +306 -0
  249. package/dist/commonjs/serialization/json/encoding.js.map +7 -0
  250. package/dist/commonjs/serialization/json/expression.d.ts +32 -0
  251. package/dist/commonjs/serialization/json/expression.d.ts.map +1 -0
  252. package/dist/commonjs/serialization/json/expression.js +509 -0
  253. package/dist/commonjs/serialization/json/expression.js.map +7 -0
  254. package/dist/commonjs/serialization/json/lower.d.ts +41 -0
  255. package/dist/commonjs/serialization/json/lower.d.ts.map +1 -0
  256. package/dist/commonjs/serialization/json/lower.js +272 -0
  257. package/dist/commonjs/serialization/json/lower.js.map +7 -0
  258. package/dist/commonjs/serialization/json/pluralize-config.d.ts +3 -0
  259. package/dist/commonjs/serialization/json/pluralize-config.d.ts.map +1 -0
  260. package/dist/commonjs/serialization/json/pluralize-config.js +37 -0
  261. package/dist/commonjs/serialization/json/pluralize-config.js.map +7 -0
  262. package/dist/commonjs/serialization/json/serialize.d.ts +12 -0
  263. package/dist/commonjs/serialization/json/serialize.d.ts.map +1 -0
  264. package/dist/commonjs/serialization/json/serialize.js +352 -0
  265. package/dist/commonjs/serialization/json/serialize.js.map +7 -0
  266. package/dist/commonjs/serialization/json/util.d.ts +2 -0
  267. package/dist/commonjs/serialization/json/util.d.ts.map +1 -0
  268. package/dist/commonjs/serialization/json/util.js +37 -0
  269. package/dist/commonjs/serialization/json/util.js.map +7 -0
  270. package/dist/commonjs/serialization/utils.d.ts +3 -0
  271. package/dist/commonjs/serialization/utils.d.ts.map +1 -0
  272. package/dist/commonjs/serialization/utils.js +169 -0
  273. package/dist/commonjs/serialization/utils.js.map +7 -0
  274. package/dist/commonjs/shape/shape-registry.d.ts +51 -0
  275. package/dist/commonjs/shape/shape-registry.d.ts.map +1 -0
  276. package/dist/commonjs/shape/shape-registry.js +40 -0
  277. package/dist/commonjs/shape/shape-registry.js.map +7 -0
  278. package/dist/commonjs/shape/shape.d.ts +407 -0
  279. package/dist/commonjs/shape/shape.d.ts.map +1 -0
  280. package/dist/commonjs/shape/shape.js +290 -0
  281. package/dist/commonjs/shape/shape.js.map +7 -0
  282. package/dist/commonjs/shape/value-encoding.d.ts +121 -0
  283. package/dist/commonjs/shape/value-encoding.d.ts.map +1 -0
  284. package/dist/commonjs/shape/value-encoding.js +62 -0
  285. package/dist/commonjs/shape/value-encoding.js.map +7 -0
  286. package/dist/commonjs/tsdoc-metadata.json +11 -0
  287. package/dist/commonjs/types.d.ts +9 -0
  288. package/dist/commonjs/types.d.ts.map +1 -0
  289. package/dist/commonjs/types.js +16 -0
  290. package/dist/commonjs/types.js.map +7 -0
  291. package/dist/commonjs/util.d.ts +33 -0
  292. package/dist/commonjs/util.d.ts.map +1 -0
  293. package/dist/commonjs/util.js +73 -0
  294. package/dist/commonjs/util.js.map +7 -0
  295. package/dist/esm/constructs/built-in-resources/resource-group.d.ts +50 -0
  296. package/dist/esm/constructs/built-in-resources/resource-group.d.ts.map +1 -0
  297. package/dist/esm/constructs/built-in-resources/resource-group.js +100 -0
  298. package/dist/esm/constructs/built-in-resources/resource-group.js.map +1 -0
  299. package/dist/esm/constructs/output.d.ts +80 -0
  300. package/dist/esm/constructs/output.d.ts.map +1 -0
  301. package/dist/esm/constructs/output.js +75 -0
  302. package/dist/esm/constructs/output.js.map +1 -0
  303. package/dist/esm/constructs/parameter.d.ts +77 -0
  304. package/dist/esm/constructs/parameter.d.ts.map +1 -0
  305. package/dist/esm/constructs/parameter.js +93 -0
  306. package/dist/esm/constructs/parameter.js.map +1 -0
  307. package/dist/esm/constructs/provisioning-component.d.ts +91 -0
  308. package/dist/esm/constructs/provisioning-component.d.ts.map +1 -0
  309. package/dist/esm/constructs/provisioning-component.js +150 -0
  310. package/dist/esm/constructs/provisioning-component.js.map +1 -0
  311. package/dist/esm/constructs/resource/resource-proxy.d.ts +134 -0
  312. package/dist/esm/constructs/resource/resource-proxy.d.ts.map +1 -0
  313. package/dist/esm/constructs/resource/resource-proxy.js +517 -0
  314. package/dist/esm/constructs/resource/resource-proxy.js.map +1 -0
  315. package/dist/esm/constructs/resource/resource-query.d.ts +23 -0
  316. package/dist/esm/constructs/resource/resource-query.d.ts.map +1 -0
  317. package/dist/esm/constructs/resource/resource-query.js +69 -0
  318. package/dist/esm/constructs/resource/resource-query.js.map +1 -0
  319. package/dist/esm/constructs/resource/resource-registry.d.ts +99 -0
  320. package/dist/esm/constructs/resource/resource-registry.d.ts.map +1 -0
  321. package/dist/esm/constructs/resource/resource-registry.js +51 -0
  322. package/dist/esm/constructs/resource/resource-registry.js.map +1 -0
  323. package/dist/esm/constructs/resource/resource-type-registry.d.ts +46 -0
  324. package/dist/esm/constructs/resource/resource-type-registry.d.ts.map +1 -0
  325. package/dist/esm/constructs/resource/resource-type-registry.js +156 -0
  326. package/dist/esm/constructs/resource/resource-type-registry.js.map +1 -0
  327. package/dist/esm/constructs/resource/resource-utils.d.ts +60 -0
  328. package/dist/esm/constructs/resource/resource-utils.d.ts.map +1 -0
  329. package/dist/esm/constructs/resource/resource-utils.js +75 -0
  330. package/dist/esm/constructs/resource/resource-utils.js.map +1 -0
  331. package/dist/esm/constructs/resource/resource.d.ts +460 -0
  332. package/dist/esm/constructs/resource/resource.d.ts.map +1 -0
  333. package/dist/esm/constructs/resource/resource.js +582 -0
  334. package/dist/esm/constructs/resource/resource.js.map +1 -0
  335. package/dist/esm/constructs/stack.d.ts +110 -0
  336. package/dist/esm/constructs/stack.d.ts.map +1 -0
  337. package/dist/esm/constructs/stack.js +110 -0
  338. package/dist/esm/constructs/stack.js.map +1 -0
  339. package/dist/esm/constructs/variable.d.ts +63 -0
  340. package/dist/esm/constructs/variable.d.ts.map +1 -0
  341. package/dist/esm/constructs/variable.js +74 -0
  342. package/dist/esm/constructs/variable.js.map +1 -0
  343. package/dist/esm/deployment-context/deployment-context.d.ts +27 -0
  344. package/dist/esm/deployment-context/deployment-context.d.ts.map +1 -0
  345. package/dist/esm/deployment-context/deployment-context.js +4 -0
  346. package/dist/esm/deployment-context/deployment-context.js.map +1 -0
  347. package/dist/esm/expression/ast-nodes.d.ts +100 -0
  348. package/dist/esm/expression/ast-nodes.d.ts.map +1 -0
  349. package/dist/esm/expression/ast-nodes.js +125 -0
  350. package/dist/esm/expression/ast-nodes.js.map +1 -0
  351. package/dist/esm/expression/expressions.d.ts +164 -0
  352. package/dist/esm/expression/expressions.d.ts.map +1 -0
  353. package/dist/esm/expression/expressions.js +211 -0
  354. package/dist/esm/expression/expressions.js.map +1 -0
  355. package/dist/esm/fn.d.ts +194 -0
  356. package/dist/esm/fn.d.ts.map +1 -0
  357. package/dist/esm/fn.js +334 -0
  358. package/dist/esm/fn.js.map +1 -0
  359. package/dist/esm/index.d.ts +25 -0
  360. package/dist/esm/index.d.ts.map +1 -0
  361. package/dist/esm/index.js +17 -0
  362. package/dist/esm/index.js.map +1 -0
  363. package/dist/esm/internal.d.ts +13 -0
  364. package/dist/esm/internal.d.ts.map +1 -0
  365. package/dist/esm/internal.js +10 -0
  366. package/dist/esm/internal.js.map +1 -0
  367. package/dist/esm/naming/naming-policy.d.ts +56 -0
  368. package/dist/esm/naming/naming-policy.d.ts.map +1 -0
  369. package/dist/esm/naming/naming-policy.js +97 -0
  370. package/dist/esm/naming/naming-policy.js.map +1 -0
  371. package/dist/esm/naming/naming-rules.d.ts +15 -0
  372. package/dist/esm/naming/naming-rules.d.ts.map +1 -0
  373. package/dist/esm/naming/naming-rules.js +15 -0
  374. package/dist/esm/naming/naming-rules.js.map +1 -0
  375. package/dist/esm/package.json +8 -0
  376. package/dist/esm/serialization/contract/generated/ast.d.ts +508 -0
  377. package/dist/esm/serialization/contract/generated/ast.d.ts.map +1 -0
  378. package/dist/esm/serialization/contract/generated/ast.js +23 -0
  379. package/dist/esm/serialization/contract/generated/ast.js.map +1 -0
  380. package/dist/esm/serialization/contract/index.d.ts +2 -0
  381. package/dist/esm/serialization/contract/index.d.ts.map +1 -0
  382. package/dist/esm/serialization/contract/index.js +4 -0
  383. package/dist/esm/serialization/contract/index.js.map +1 -0
  384. package/dist/esm/serialization/index.d.ts +4 -0
  385. package/dist/esm/serialization/index.d.ts.map +1 -0
  386. package/dist/esm/serialization/index.js +5 -0
  387. package/dist/esm/serialization/index.js.map +1 -0
  388. package/dist/esm/serialization/json/deserialize.d.ts +24 -0
  389. package/dist/esm/serialization/json/deserialize.d.ts.map +1 -0
  390. package/dist/esm/serialization/json/deserialize.js +437 -0
  391. package/dist/esm/serialization/json/deserialize.js.map +1 -0
  392. package/dist/esm/serialization/json/encoding.d.ts +4 -0
  393. package/dist/esm/serialization/json/encoding.d.ts.map +1 -0
  394. package/dist/esm/serialization/json/encoding.js +319 -0
  395. package/dist/esm/serialization/json/encoding.js.map +1 -0
  396. package/dist/esm/serialization/json/expression.d.ts +32 -0
  397. package/dist/esm/serialization/json/expression.d.ts.map +1 -0
  398. package/dist/esm/serialization/json/expression.js +494 -0
  399. package/dist/esm/serialization/json/expression.js.map +1 -0
  400. package/dist/esm/serialization/json/lower.d.ts +41 -0
  401. package/dist/esm/serialization/json/lower.d.ts.map +1 -0
  402. package/dist/esm/serialization/json/lower.js +334 -0
  403. package/dist/esm/serialization/json/lower.js.map +1 -0
  404. package/dist/esm/serialization/json/pluralize-config.d.ts +3 -0
  405. package/dist/esm/serialization/json/pluralize-config.d.ts.map +1 -0
  406. package/dist/esm/serialization/json/pluralize-config.js +7 -0
  407. package/dist/esm/serialization/json/pluralize-config.js.map +1 -0
  408. package/dist/esm/serialization/json/serialize.d.ts +12 -0
  409. package/dist/esm/serialization/json/serialize.d.ts.map +1 -0
  410. package/dist/esm/serialization/json/serialize.js +389 -0
  411. package/dist/esm/serialization/json/serialize.js.map +1 -0
  412. package/dist/esm/serialization/json/util.d.ts +2 -0
  413. package/dist/esm/serialization/json/util.d.ts.map +1 -0
  414. package/dist/esm/serialization/json/util.js +19 -0
  415. package/dist/esm/serialization/json/util.js.map +1 -0
  416. package/dist/esm/serialization/utils.d.ts +3 -0
  417. package/dist/esm/serialization/utils.d.ts.map +1 -0
  418. package/dist/esm/serialization/utils.js +146 -0
  419. package/dist/esm/serialization/utils.js.map +1 -0
  420. package/dist/esm/shape/shape-registry.d.ts +51 -0
  421. package/dist/esm/shape/shape-registry.d.ts.map +1 -0
  422. package/dist/esm/shape/shape-registry.js +41 -0
  423. package/dist/esm/shape/shape-registry.js.map +1 -0
  424. package/dist/esm/shape/shape.d.ts +407 -0
  425. package/dist/esm/shape/shape.d.ts.map +1 -0
  426. package/dist/esm/shape/shape.js +424 -0
  427. package/dist/esm/shape/shape.js.map +1 -0
  428. package/dist/esm/shape/value-encoding.d.ts +121 -0
  429. package/dist/esm/shape/value-encoding.d.ts.map +1 -0
  430. package/dist/esm/shape/value-encoding.js +32 -0
  431. package/dist/esm/shape/value-encoding.js.map +1 -0
  432. package/dist/esm/types.d.ts +9 -0
  433. package/dist/esm/types.d.ts.map +1 -0
  434. package/dist/esm/types.js +4 -0
  435. package/dist/esm/types.js.map +1 -0
  436. package/dist/esm/util.d.ts +33 -0
  437. package/dist/esm/util.d.ts.map +1 -0
  438. package/dist/esm/util.js +74 -0
  439. package/dist/esm/util.js.map +1 -0
  440. package/package.json +117 -0
@@ -0,0 +1,352 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var serialize_exports = {};
29
+ __export(serialize_exports, {
30
+ serialize: () => serialize
31
+ });
32
+ module.exports = __toCommonJS(serialize_exports);
33
+ var import_pluralize_config = __toESM(require("./pluralize-config.js"));
34
+ var import_resource_group = require("../../constructs/built-in-resources/resource-group.js");
35
+ var import_resource_proxy = require("../../constructs/resource/resource-proxy.js");
36
+ var import_util = require("../../util.js");
37
+ var import_shape_registry = require("../../shape/shape-registry.js");
38
+ var import_expressions = require("../../expression/expressions.js");
39
+ var import_ast_nodes = require("../../expression/ast-nodes.js");
40
+ var import_resource_utils = require("../../constructs/resource/resource-utils.js");
41
+ var import_util2 = require("./util.js");
42
+ var import_lower = require("./lower.js");
43
+ var import_expression = require("./expression.js");
44
+ const RESOURCE_RESERVED_KEYS = /* @__PURE__ */ new Set([
45
+ "apiVersion",
46
+ "existing",
47
+ "id",
48
+ "name",
49
+ "scope",
50
+ "type",
51
+ "condition",
52
+ "dependsOn",
53
+ import_resource_proxy.STATE_PARENT_INDEX
54
+ ]);
55
+ function hasNestedResourceHandle(value) {
56
+ if ((0, import_expressions.isExpression)(value) || (0, import_ast_nodes.isExpressionNode)(value)) {
57
+ return false;
58
+ }
59
+ if ((0, import_resource_utils.isResource)(value)) {
60
+ return true;
61
+ }
62
+ if (Array.isArray(value)) {
63
+ return value.some((item) => hasNestedResourceHandle(item));
64
+ }
65
+ if (typeof value === "object" && value !== null) {
66
+ return Object.values(value).some((item) => hasNestedResourceHandle(item));
67
+ }
68
+ return false;
69
+ }
70
+ function createSymbolMap(resources, stack) {
71
+ const symbolMap = /* @__PURE__ */ new Map();
72
+ const counts = /* @__PURE__ */ new Map();
73
+ const usedNames = /* @__PURE__ */ new Set();
74
+ function allocateName(stem) {
75
+ let count = counts.get(stem) ?? 0;
76
+ let identifier;
77
+ do {
78
+ count++;
79
+ identifier = count === 1 ? stem : `${stem}${count}`;
80
+ } while (usedNames.has(identifier));
81
+ counts.set(stem, count);
82
+ usedNames.add(identifier);
83
+ return identifier;
84
+ }
85
+ for (const parameter of stack.parameters.listMetadata()) {
86
+ const identifier = allocateName(parameter.name);
87
+ symbolMap.set(parameter, identifier);
88
+ symbolMap.set((0, import_expressions.unwrapExpression)(stack.parameters.get(parameter.name)), identifier);
89
+ }
90
+ for (const variable of stack.variables.listMetadata()) {
91
+ const identifier = allocateName(variable.name);
92
+ symbolMap.set(variable, identifier);
93
+ symbolMap.set((0, import_expressions.unwrapExpression)(stack.variables.get(variable.name)), identifier);
94
+ }
95
+ for (const resource of resources) {
96
+ const typeName = resource.type.split("/").at(-1) ?? "resource";
97
+ const stem = (0, import_util2.sanitizeIdentifier)(import_pluralize_config.default.singular(typeName));
98
+ symbolMap.set(resource, allocateName(stem));
99
+ }
100
+ return symbolMap;
101
+ }
102
+ function getArmParent(resource) {
103
+ const p = resource.parent;
104
+ if (p === void 0 || !(0, import_resource_utils.isResourceDeclaration)(p)) {
105
+ return void 0;
106
+ }
107
+ if (p.type === import_resource_group.ResourceGroup.resourceType) return void 0;
108
+ return p;
109
+ }
110
+ function getResourceGroupAncestor(resource) {
111
+ let current = resource.parent;
112
+ while (current !== void 0) {
113
+ if ((0, import_resource_utils.isResourceDeclaration)(current) && current.type === import_resource_group.ResourceGroup.resourceType) {
114
+ return current;
115
+ }
116
+ current = current.parent;
117
+ }
118
+ return void 0;
119
+ }
120
+ function collectAllResources(root) {
121
+ const result = [];
122
+ root.visit((node) => {
123
+ if ((0, import_resource_utils.isResourceDeclaration)(node)) {
124
+ result.push(node.self);
125
+ }
126
+ });
127
+ return result;
128
+ }
129
+ function serializeResourceProperties(resource, symbolMap) {
130
+ const rawResource = (0, import_resource_proxy.unwrapResourceHandle)(resource);
131
+ const properties = {
132
+ name: (0, import_expression.serializeExpression)(rawResource.name, symbolMap)
133
+ };
134
+ const armParent = getArmParent(resource);
135
+ if (armParent !== void 0) {
136
+ const parentId = symbolMap.get(armParent);
137
+ if (parentId === void 0) {
138
+ throw new Error(`Missing parent symbol for resource type ${rawResource.type}.`);
139
+ }
140
+ const parentNode = { kind: "identifier", id: parentId };
141
+ const parentIndex = rawResource[import_resource_proxy.STATE_PARENT_INDEX];
142
+ if (parentIndex !== void 0) {
143
+ properties.parent = {
144
+ kind: "array-access",
145
+ base: parentNode,
146
+ index: (0, import_expression.serializeExpression)(parentIndex, symbolMap),
147
+ nullish: false,
148
+ fromEnd: false
149
+ };
150
+ } else {
151
+ properties.parent = parentNode;
152
+ }
153
+ }
154
+ const scopeValue = rawResource.scope;
155
+ if (scopeValue !== void 0) {
156
+ properties.scope = (0, import_expression.serializeExpression)(scopeValue, symbolMap);
157
+ } else if (armParent === void 0) {
158
+ const rgAncestor = getResourceGroupAncestor(resource);
159
+ if (rgAncestor !== void 0) {
160
+ const groupId = symbolMap.get(rgAncestor);
161
+ if (groupId === void 0) {
162
+ throw new Error("Resource group not found in symbol map.");
163
+ }
164
+ properties.scope = {
165
+ kind: "identifier",
166
+ id: groupId
167
+ };
168
+ }
169
+ }
170
+ const dependsOn = rawResource["dependsOn"];
171
+ if (dependsOn !== void 0) {
172
+ properties.dependsOn = {
173
+ kind: "array",
174
+ items: dependsOn.map((dependency) => {
175
+ const identifier = symbolMap.get(dependency);
176
+ if (identifier === void 0) {
177
+ throw new Error(
178
+ "Dependency not found in symbol map. Ensure it belongs to the same stack."
179
+ );
180
+ }
181
+ return { kind: "identifier", id: identifier };
182
+ })
183
+ };
184
+ }
185
+ const descriptor = typeof rawResource.type === "string" && typeof rawResource.apiVersion === "string" ? (0, import_shape_registry.getShape)(
186
+ rawResource.type,
187
+ rawResource.apiVersion,
188
+ rawResource
189
+ ) : void 0;
190
+ const userProps = {};
191
+ for (const [key, value] of Object.entries(rawResource)) {
192
+ if (rawResource.existing) continue;
193
+ if (value === void 0 || RESOURCE_RESERVED_KEYS.has(key) || hasNestedResourceHandle(value)) {
194
+ continue;
195
+ }
196
+ userProps[key] = value;
197
+ }
198
+ const loweredUserProps = descriptor ? (0, import_lower.lowerState)(userProps, descriptor) : userProps;
199
+ for (const key of Object.keys(loweredUserProps).sort()) {
200
+ properties[key] = (0, import_expression.serializeExpression)(loweredUserProps[key], symbolMap);
201
+ }
202
+ return properties;
203
+ }
204
+ function serializeResource(resource, symbolMap) {
205
+ const resourceId = symbolMap.get(resource);
206
+ if (resourceId === void 0) {
207
+ throw new Error(`Missing synthesized symbol for resource type ${resource.type}.`);
208
+ }
209
+ const properties = serializeResourceProperties(resource, symbolMap);
210
+ const rawResource = (0, import_resource_proxy.unwrapResourceHandle)(resource);
211
+ const condition = rawResource["condition"] !== void 0 ? (0, import_expression.serializeExpression)(rawResource["condition"], symbolMap) : void 0;
212
+ const loopCtx = (0, import_resource_utils.isLoopedResource)(resource) ? resource.loop : void 0;
213
+ const batchSize = loopCtx?.batchSize;
214
+ const decorators = batchSize !== void 0 ? { batchSize } : void 0;
215
+ let wireValue = { kind: "object", value: properties };
216
+ if (condition !== void 0) {
217
+ wireValue = { kind: "if-condition", condition, body: wireValue };
218
+ }
219
+ if (loopCtx !== void 0) {
220
+ wireValue = {
221
+ kind: "for-expression",
222
+ itemVariable: loopCtx.itemVariable,
223
+ ...loopCtx.indexVariable !== void 0 ? { indexVariable: loopCtx.indexVariable } : {},
224
+ collection: (0, import_expression.serializeExpression)(loopCtx.collection, symbolMap),
225
+ body: wireValue
226
+ };
227
+ }
228
+ const node = {
229
+ bicepIdentifier: resourceId,
230
+ type: resource.type,
231
+ apiVersion: resource.apiVersion,
232
+ existing: resource.existing ?? false,
233
+ value: wireValue,
234
+ ...decorators !== void 0 ? { decorators } : {}
235
+ };
236
+ return [resourceId, node];
237
+ }
238
+ function buildDecorators(decl, symbolMap) {
239
+ const d = {};
240
+ if (decl.description !== void 0) d.description = decl.description;
241
+ if ("secure" in decl && decl.secure) d.secure = true;
242
+ if ("minValue" in decl && decl.minValue !== void 0) {
243
+ d.minValue = decl.minValue;
244
+ }
245
+ if ("maxValue" in decl && decl.maxValue !== void 0) {
246
+ d.maxValue = decl.maxValue;
247
+ }
248
+ if ("minLength" in decl && decl.minLength !== void 0) {
249
+ d.minLength = decl.minLength;
250
+ }
251
+ if ("maxLength" in decl && decl.maxLength !== void 0) {
252
+ d.maxLength = decl.maxLength;
253
+ }
254
+ if ("metadata" in decl && decl.metadata !== void 0) {
255
+ d.metadata = (0, import_expression.serializeDefinedObjectEntries)(
256
+ decl.metadata,
257
+ symbolMap
258
+ );
259
+ }
260
+ if ("allowed" in decl && decl.allowed !== void 0) {
261
+ d.allowed = decl.allowed.map((v) => (0, import_expression.serializeExpression)(v, symbolMap));
262
+ }
263
+ if ("discriminator" in decl && decl.discriminator !== void 0) {
264
+ d.discriminator = decl.discriminator;
265
+ }
266
+ if ("sealed" in decl && decl.sealed) d.sealed = true;
267
+ if ("export" in decl && decl.export) d.export = true;
268
+ return Object.keys(d).length > 0 ? d : void 0;
269
+ }
270
+ function serializeParameters(stack, symbolMap) {
271
+ if (stack.parameters.size === 0) return void 0;
272
+ return Object.fromEntries(
273
+ stack.parameters.listMetadata().map((p) => {
274
+ const identifier = symbolMap.get(p);
275
+ const node = (0, import_util.definedProps)({
276
+ bicepIdentifier: identifier,
277
+ valueType: { kind: "primitive-type", name: p.type },
278
+ defaultValue: p.defaultValue !== void 0 ? (0, import_expression.serializeExpression)(p.defaultValue, symbolMap) : void 0,
279
+ decorators: buildDecorators(p, symbolMap)
280
+ });
281
+ return [identifier, node];
282
+ })
283
+ );
284
+ }
285
+ function serializeVariables(stack, symbolMap) {
286
+ if (stack.variables.size === 0) return void 0;
287
+ return Object.fromEntries(
288
+ stack.variables.listMetadata().map((v) => {
289
+ const identifier = symbolMap.get(v);
290
+ const node = (0, import_util.definedProps)({
291
+ bicepIdentifier: identifier,
292
+ value: (0, import_expression.serializeExpression)(v.value, symbolMap),
293
+ decorators: buildDecorators(v, symbolMap)
294
+ });
295
+ return [identifier, node];
296
+ })
297
+ );
298
+ }
299
+ function serializeOutputs(stack, symbolMap) {
300
+ if (stack.outputs.size === 0) return void 0;
301
+ return Object.fromEntries(
302
+ stack.outputs.list().map((o) => {
303
+ let value;
304
+ if ((0, import_resource_utils.isResource)(o.value)) {
305
+ const symbol = symbolMap.get(o.value);
306
+ if (symbol === void 0) {
307
+ throw new Error(`Resource not found in symbol map. Ensure it belongs to the same stack.`);
308
+ }
309
+ value = { kind: "identifier", id: symbol };
310
+ } else {
311
+ value = (0, import_expression.serializeExpression)(o.value, symbolMap);
312
+ }
313
+ const node = (0, import_util.definedProps)({
314
+ bicepIdentifier: o.name,
315
+ valueType: { kind: "primitive-type", name: o.type },
316
+ value,
317
+ decorators: buildDecorators(o, symbolMap)
318
+ });
319
+ return [o.name, node];
320
+ })
321
+ );
322
+ }
323
+ function serializeFile(stack, resources, symbolMap) {
324
+ return {
325
+ ...stack.targetScope !== "resourceGroup" ? { targetScope: stack.targetScope } : {},
326
+ fileName: `${stack.name}.bicep`,
327
+ ...(0, import_util.definedProps)({
328
+ parameters: serializeParameters(stack, symbolMap),
329
+ variables: serializeVariables(stack, symbolMap),
330
+ resources: resources.length === 0 ? void 0 : Object.fromEntries(resources.map((resource) => serializeResource(resource, symbolMap))),
331
+ outputs: serializeOutputs(stack, symbolMap)
332
+ })
333
+ };
334
+ }
335
+ function serialize(input) {
336
+ const stacks = Array.isArray(input) ? input : [input];
337
+ if (stacks.length === 0) {
338
+ throw new Error("Cannot serialize an empty stack collection.");
339
+ }
340
+ return {
341
+ infras: stacks.map((stack) => {
342
+ const resources = collectAllResources(stack);
343
+ const symbolMap = createSymbolMap(resources, stack);
344
+ return serializeFile(stack, resources, symbolMap);
345
+ })
346
+ };
347
+ }
348
+ // Annotate the CommonJS export names for ESM import in node:
349
+ 0 && (module.exports = {
350
+ serialize
351
+ });
352
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/serialization/json/serialize.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport pluralizeLib from \"./pluralize-config.js\";\nimport type { ProvisioningComponent } from \"../../constructs/provisioning-component.js\";\nimport type { ParameterMetadata } from \"../../constructs/parameter.js\";\nimport type { VariableMetadata } from \"../../constructs/variable.js\";\nimport type { OutputMetadata } from \"../../constructs/output.js\";\nimport type { Stack } from \"../../constructs/stack.js\";\nimport type { Resource, ResourceDeclaration } from \"../../constructs/resource/resource.js\";\nimport { ResourceGroup } from \"../../constructs/built-in-resources/resource-group.js\";\nimport {\n STATE_PARENT_INDEX,\n unwrapResourceHandle,\n} from \"../../constructs/resource/resource-proxy.js\";\nimport { definedProps } from \"../../util.js\";\nimport { getShape } from \"../../shape/shape-registry.js\";\nimport { isExpression, unwrapExpression } from \"../../expression/expressions.js\";\nimport { isExpressionNode } from \"../../expression/ast-nodes.js\";\nimport {\n isResource,\n isResourceDeclaration,\n isLoopedResource,\n} from \"../../constructs/resource/resource-utils.js\";\nimport type {\n DeclarableBodyNode,\n DecoratorsNode,\n ExpressionNode,\n InfraNode,\n OutputDeclarationNode,\n ParameterDeclarationNode,\n ResourceDeclarationNode,\n SerializationDocument,\n VariableDeclarationNode,\n} from \"../contract/index.js\";\nimport { sanitizeIdentifier } from \"./util.js\";\nimport { lowerState } from \"./lower.js\";\nimport {\n serializeDefinedObjectEntries,\n serializeExpression,\n type SerializableValue,\n type SerializationSymbolMap,\n} from \"./expression.js\";\n\nconst RESOURCE_RESERVED_KEYS = new Set<string>([\n \"apiVersion\",\n \"existing\",\n \"id\",\n \"name\",\n \"scope\",\n \"type\",\n \"condition\",\n \"dependsOn\",\n STATE_PARENT_INDEX,\n]);\n\nfunction hasNestedResourceHandle(value: unknown): boolean {\n if (isExpression(value) || isExpressionNode(value)) {\n return false;\n }\n\n if (isResource(value)) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.some((item) => hasNestedResourceHandle(item));\n }\n\n if (typeof value === \"object\" && value !== null) {\n return Object.values(value).some((item) => hasNestedResourceHandle(item));\n }\n\n return false;\n}\n\nfunction createSymbolMap(\n resources: readonly ResourceDeclaration[],\n stack: Stack,\n): SerializationSymbolMap {\n const symbolMap: SerializationSymbolMap = new Map();\n const counts = new Map<string, number>();\n const usedNames = new Set<string>();\n\n function allocateName(stem: string): string {\n let count = counts.get(stem) ?? 0;\n let identifier: string;\n do {\n count++;\n identifier = count === 1 ? stem : `${stem}${count}`;\n } while (usedNames.has(identifier));\n counts.set(stem, count);\n usedNames.add(identifier);\n return identifier;\n }\n\n for (const parameter of stack.parameters.listMetadata()) {\n const identifier = allocateName(parameter.name);\n symbolMap.set(parameter, identifier);\n symbolMap.set(unwrapExpression(stack.parameters.get(parameter.name)!), identifier);\n }\n for (const variable of stack.variables.listMetadata()) {\n const identifier = allocateName(variable.name);\n symbolMap.set(variable, identifier);\n symbolMap.set(unwrapExpression(stack.variables.get(variable.name)!), identifier);\n }\n for (const resource of resources) {\n const typeName = resource.type.split(\"/\").at(-1) ?? \"resource\";\n const stem = sanitizeIdentifier(pluralizeLib.singular(typeName));\n symbolMap.set(resource, allocateName(stem));\n }\n\n // Outputs have a separate Bicep namespace and are not same-stack expression\n // targets, so they keep their authored names outside this symbol map.\n return symbolMap;\n}\n\n/**\n * Returns the nearest Resource ancestor whose type/scope makes it a Bicep\n * `parent:` target. This includes both:\n *\n * - True ARM nested children (e.g. vault \u2192 secret), where the renderer\n * emits `parent: vault`\n * - Extension resources (e.g. storage \u2192 diagnosticSetting), where the\n * renderer downgrades to `scope: storage`\n *\n * The renderer (`render.ts`) decides between `parent:` and `scope:` by\n * checking ARM type nesting. The file-layout uses this relationship to\n * co-locate related resources in the same Bicep file.\n *\n * Excludes deployment-scope boundaries like `ResourceGroup` (it's a parent\n * ProvisioningComponent but not an ARM nesting/extension target \u2014 child resources are\n * deployed *into* the resource group, expressed as `scope: rg` only when\n * the deployment crosses the RG boundary).\n */\nfunction getArmParent(resource: ResourceDeclaration): ResourceDeclaration | undefined {\n const p = resource.parent;\n if (p === undefined || !isResourceDeclaration(p)) {\n return undefined;\n }\n // Exclude ResourceGroup (deployment scope boundary, not an ARM parent).\n if (p.type === ResourceGroup.resourceType) return undefined;\n return p;\n}\n\n/**\n * Walk a resource's ProvisioningComponent-tree ancestor chain to find the nearest\n * `ResourceGroup` component, if any. Used by the serializer to emit a\n * synthetic `scope: rgSymbol` field on regular resources whose deployment\n * scope is a `ResourceGroup` component rather than the stack's `targetScope`.\n *\n * The file-layout pass consumes this signal to split the resource into a\n * child Bicep module scoped to the ResourceGroup; the per-resource `scope:`\n * is stripped at that point because inside the child module the resource is\n * implicitly at the right scope.\n *\n * Returns `undefined` when the resource has no ResourceGroup ancestor (i.e.\n * the stack itself is the nearest scope-providing component).\n */\nfunction getResourceGroupAncestor(resource: ResourceDeclaration): ResourceGroup | undefined {\n let current = resource.parent;\n while (current !== undefined) {\n if (isResourceDeclaration(current) && current.type === ResourceGroup.resourceType) {\n return current as ResourceGroup;\n }\n current = current.parent;\n }\n return undefined;\n}\n\nfunction collectAllResources(root: ProvisioningComponent): ResourceDeclaration[] {\n const result: ResourceDeclaration[] = [];\n root.visit((node) => {\n if (isResourceDeclaration(node)) {\n result.push(node.self as ResourceDeclaration);\n }\n });\n return result;\n}\n\nfunction serializeResourceProperties(\n resource: ResourceDeclaration,\n symbolMap: SerializationSymbolMap,\n): Record<string, ExpressionNode> {\n const rawResource = unwrapResourceHandle(resource as unknown as Resource);\n const properties: Record<string, ExpressionNode> = {\n name: serializeExpression(rawResource.name, symbolMap),\n };\n\n const armParent = getArmParent(resource);\n if (armParent !== undefined) {\n const parentId = symbolMap.get(armParent);\n\n if (parentId === undefined) {\n throw new Error(`Missing parent symbol for resource type ${rawResource.type}.`);\n }\n\n const parentNode: ExpressionNode = { kind: \"identifier\", id: parentId };\n // Explicit parent index recorded by `Resource`'s constructor when a\n // child is created with `parent.at(i)` / `parent.current()` as its\n // context. When the child is created under a looped parent without an\n // explicit index (only reachable by unwrapping the raw handle out of a\n // `LoopedResource` \u2014 not part of the user-facing API), we emit\n // `parent: parentSym` unchanged; Bicep rejects the resulting\n // `parent: parents` (an array) at validation, producing a loud failure\n // instead of a silently-guessed index variable.\n const parentIndex = (rawResource as unknown as Record<string, unknown>)[STATE_PARENT_INDEX];\n\n if (parentIndex !== undefined) {\n properties.parent = {\n kind: \"array-access\",\n base: parentNode,\n index: serializeExpression(parentIndex as SerializableValue, symbolMap),\n nullish: false,\n fromEnd: false,\n };\n } else {\n properties.parent = parentNode;\n }\n }\n\n // Existing resources may carry an explicit scope expression for cross-RG\n // / cross-sub / cross-MG / cross-tenant lookups. Read from state directly;\n // non-existing resources never have `scope` on state.\n const scopeValue = (rawResource as unknown as Record<string, unknown>).scope;\n if (scopeValue !== undefined) {\n properties.scope = serializeExpression(scopeValue as SerializableValue, symbolMap);\n } else if (armParent === undefined) {\n const rgAncestor = getResourceGroupAncestor(resource);\n if (rgAncestor !== undefined) {\n const groupId = symbolMap.get(rgAncestor);\n if (groupId === undefined) {\n throw new Error(\"Resource group not found in symbol map.\");\n }\n properties.scope = {\n kind: \"identifier\",\n id: groupId,\n };\n }\n }\n\n const dependsOn = (rawResource as unknown as Record<string, unknown>)[\"dependsOn\"] as\n readonly ResourceDeclaration[] | undefined;\n if (dependsOn !== undefined) {\n properties.dependsOn = {\n kind: \"array\",\n items: dependsOn.map((dependency) => {\n const identifier = symbolMap.get(dependency);\n if (identifier === undefined) {\n throw new Error(\n \"Dependency not found in symbol map. Ensure it belongs to the same stack.\",\n );\n }\n return { kind: \"identifier\", id: identifier };\n }),\n };\n }\n\n // Build the per-resource custom property bag first, applying ARM-\n // shape lowering (rename/flatten/encode) when a shape is\n // registered for `(type, apiVersion)`. The registry resolves\n // discriminated variants from the instance state. No-op when no\n // shape is registered for this resource type.\n const descriptor =\n typeof rawResource.type === \"string\" && typeof rawResource.apiVersion === \"string\"\n ? getShape(\n rawResource.type,\n rawResource.apiVersion,\n rawResource as unknown as Record<string, unknown>,\n )\n : undefined;\n\n const userProps: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(rawResource)) {\n if (rawResource.existing) continue;\n if (value === undefined || RESOURCE_RESERVED_KEYS.has(key) || hasNestedResourceHandle(value)) {\n continue;\n }\n userProps[key] = value;\n }\n\n const loweredUserProps = descriptor ? lowerState(userProps, descriptor) : userProps;\n\n for (const key of Object.keys(loweredUserProps).sort()) {\n properties[key] = serializeExpression(loweredUserProps[key] as SerializableValue, symbolMap);\n }\n\n return properties;\n}\n\nfunction serializeResource(\n resource: ResourceDeclaration,\n symbolMap: SerializationSymbolMap,\n): [string, ResourceDeclarationNode] {\n const resourceId = symbolMap.get(resource);\n\n if (resourceId === undefined) {\n throw new Error(`Missing synthesized symbol for resource type ${resource.type}.`);\n }\n\n const properties = serializeResourceProperties(resource, symbolMap);\n const rawResource = unwrapResourceHandle(resource as unknown as Resource) as unknown as Record<\n string,\n unknown\n >;\n\n const condition =\n rawResource[\"condition\"] !== undefined\n ? serializeExpression(rawResource[\"condition\"] as SerializableValue, symbolMap)\n : undefined;\n\n // Loop metadata lives on `LoopedResource.loop` \u2014 a public field on the\n // wrapper subclass. Scalar `Resource` instances don't have one.\n const loopCtx = isLoopedResource(resource) ? resource.loop : undefined;\n\n // Build decorators for the resource (currently only batchSize from forEach)\n const batchSize = loopCtx?.batchSize;\n const decorators = batchSize !== undefined ? { batchSize } : undefined;\n\n // Wrap `value` in `if-condition` / `for-expression` when the resource is\n // guarded / looped. Bicep source order is `for` outer, `if` inner \u2014\n // `[for item in coll: if (cond) { ... }]` \u2014 so wrap if-condition first,\n // then for-expression around it.\n let wireValue: DeclarableBodyNode = { kind: \"object\", value: properties };\n if (condition !== undefined) {\n wireValue = { kind: \"if-condition\", condition, body: wireValue };\n }\n if (loopCtx !== undefined) {\n wireValue = {\n kind: \"for-expression\",\n itemVariable: loopCtx.itemVariable,\n ...(loopCtx.indexVariable !== undefined ? { indexVariable: loopCtx.indexVariable } : {}),\n collection: serializeExpression(loopCtx.collection as SerializableValue, symbolMap),\n body: wireValue,\n };\n }\n\n const node: ResourceDeclarationNode = {\n bicepIdentifier: resourceId,\n type: resource.type,\n apiVersion: resource.apiVersion,\n existing: resource.existing ?? false,\n value: wireValue,\n ...(decorators !== undefined ? { decorators } : {}),\n };\n\n return [resourceId, node];\n}\n\nfunction buildDecorators(\n decl: ParameterMetadata | VariableMetadata | OutputMetadata,\n symbolMap: SerializationSymbolMap,\n): DecoratorsNode | undefined {\n const d: Record<string, unknown> = {};\n\n if (decl.description !== undefined) d.description = decl.description;\n if (\"secure\" in decl && decl.secure) d.secure = true;\n if (\"minValue\" in decl && decl.minValue !== undefined) {\n d.minValue = decl.minValue;\n }\n if (\"maxValue\" in decl && decl.maxValue !== undefined) {\n d.maxValue = decl.maxValue;\n }\n if (\"minLength\" in decl && decl.minLength !== undefined) {\n d.minLength = decl.minLength;\n }\n if (\"maxLength\" in decl && decl.maxLength !== undefined) {\n d.maxLength = decl.maxLength;\n }\n if (\"metadata\" in decl && decl.metadata !== undefined) {\n d.metadata = serializeDefinedObjectEntries(\n decl.metadata as {\n readonly [key: string]: SerializableValue | undefined;\n },\n symbolMap,\n );\n }\n if (\"allowed\" in decl && decl.allowed !== undefined) {\n d.allowed = decl.allowed.map((v) => serializeExpression(v as SerializableValue, symbolMap));\n }\n if (\"discriminator\" in decl && decl.discriminator !== undefined) {\n d.discriminator = decl.discriminator;\n }\n if (\"sealed\" in decl && decl.sealed) d.sealed = true;\n if (\"export\" in decl && decl.export) d.export = true;\n\n return Object.keys(d).length > 0 ? (d as DecoratorsNode) : undefined;\n}\n\nfunction serializeParameters(\n stack: Stack,\n symbolMap: SerializationSymbolMap,\n): Record<string, ParameterDeclarationNode> | undefined {\n if (stack.parameters.size === 0) return undefined;\n return Object.fromEntries(\n stack.parameters.listMetadata().map((p) => {\n const identifier = symbolMap.get(p)!;\n const node: ParameterDeclarationNode = definedProps({\n bicepIdentifier: identifier,\n valueType: { kind: \"primitive-type\" as const, name: p.type },\n defaultValue:\n p.defaultValue !== undefined\n ? serializeExpression(p.defaultValue as SerializableValue, symbolMap)\n : undefined,\n decorators: buildDecorators(p, symbolMap),\n });\n return [identifier, node];\n }),\n );\n}\n\nfunction serializeVariables(\n stack: Stack,\n symbolMap: SerializationSymbolMap,\n): Record<string, VariableDeclarationNode> | undefined {\n if (stack.variables.size === 0) return undefined;\n return Object.fromEntries(\n stack.variables.listMetadata().map((v) => {\n const identifier = symbolMap.get(v)!;\n const node: VariableDeclarationNode = definedProps({\n bicepIdentifier: identifier,\n value: serializeExpression(v.value as SerializableValue, symbolMap),\n decorators: buildDecorators(v, symbolMap),\n });\n return [identifier, node];\n }),\n );\n}\n\nfunction serializeOutputs(\n stack: Stack,\n symbolMap: SerializationSymbolMap,\n): Record<string, OutputDeclarationNode> | undefined {\n if (stack.outputs.size === 0) return undefined;\n return Object.fromEntries(\n stack.outputs.list().map((o) => {\n let value: ExpressionNode;\n if (isResource(o.value)) {\n const symbol = symbolMap.get(o.value);\n if (symbol === undefined) {\n throw new Error(`Resource not found in symbol map. Ensure it belongs to the same stack.`);\n }\n value = { kind: \"identifier\", id: symbol };\n } else {\n value = serializeExpression(o.value as SerializableValue, symbolMap);\n }\n\n const node: OutputDeclarationNode = definedProps({\n bicepIdentifier: o.name,\n valueType: { kind: \"primitive-type\" as const, name: o.type },\n value,\n decorators: buildDecorators(o, symbolMap),\n });\n return [o.name, node];\n }),\n );\n}\n\nfunction serializeFile(\n stack: Stack,\n resources: readonly ResourceDeclaration[],\n symbolMap: SerializationSymbolMap,\n): InfraNode {\n return {\n ...(stack.targetScope !== \"resourceGroup\" ? { targetScope: stack.targetScope } : {}),\n fileName: `${stack.name}.bicep`,\n ...definedProps({\n parameters: serializeParameters(stack, symbolMap),\n variables: serializeVariables(stack, symbolMap),\n resources:\n resources.length === 0\n ? undefined\n : Object.fromEntries(resources.map((resource) => serializeResource(resource, symbolMap))),\n outputs: serializeOutputs(stack, symbolMap),\n }),\n };\n}\n\n/**\n * Serializes a stack or a nonempty array of stacks into a JSON-compatible\n * {@link SerializationDocument} with one `infras` entry per stack.\n *\n * The document preserves declarations and symbolic expressions for rendering\n * or restoration. Pass `JSON.stringify(serialize(stack))` to {@link deserialize}\n * to reconstruct the authored stack; this does not deploy any resources.\n */\nexport function serialize(input: Stack | readonly Stack[]): SerializationDocument {\n const stacks = Array.isArray(input) ? input : [input];\n if (stacks.length === 0) {\n throw new Error(\"Cannot serialize an empty stack collection.\");\n }\n\n return {\n infras: stacks.map((stack) => {\n const resources = collectAllResources(stack);\n const symbolMap = createSymbolMap(resources, stack);\n return serializeFile(stack, resources, symbolMap);\n }),\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_util", "pluralizeLib"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export declare function sanitizeIdentifier(value: string, fallback?: string): string;
2
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/util.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,GAAG,MAAM,CAmB/E"}
@@ -0,0 +1,37 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var util_exports = {};
19
+ __export(util_exports, {
20
+ sanitizeIdentifier: () => sanitizeIdentifier
21
+ });
22
+ module.exports = __toCommonJS(util_exports);
23
+ function sanitizeIdentifier(value, fallback = "resource") {
24
+ const words = value.replace(/[^A-Za-z0-9]+/g, " ").trim().split(/\s+/).filter((w) => w.length > 0);
25
+ if (words.length === 0) {
26
+ return fallback;
27
+ }
28
+ const identifier = words.map(
29
+ (word, index) => index === 0 ? word.charAt(0).toLowerCase() + word.slice(1) : word.charAt(0).toUpperCase() + word.slice(1)
30
+ ).join("");
31
+ return /^[0-9]/.test(identifier) ? `_${identifier}` : identifier;
32
+ }
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ sanitizeIdentifier
36
+ });
37
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/serialization/json/util.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function sanitizeIdentifier(value: string, fallback = \"resource\"): string {\n const words = value\n .replace(/[^A-Za-z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter((w) => w.length > 0);\n\n if (words.length === 0) {\n return fallback;\n }\n\n const identifier = words\n .map((word, index) =>\n index === 0\n ? word.charAt(0).toLowerCase() + word.slice(1)\n : word.charAt(0).toUpperCase() + word.slice(1),\n )\n .join(\"\");\n return /^[0-9]/.test(identifier) ? `_${identifier}` : identifier;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,SAAS,mBAAmB,OAAe,WAAW,YAAoB;AAC/E,QAAM,QAAQ,MACX,QAAQ,kBAAkB,GAAG,EAC7B,KAAK,EACL,MAAM,KAAK,EACX,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AAE7B,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,MAChB;AAAA,IAAI,CAAC,MAAM,UACV,UAAU,IACN,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,IAC3C,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA,EACjD,EACC,KAAK,EAAE;AACV,SAAO,SAAS,KAAK,UAAU,IAAI,IAAI,UAAU,KAAK;AACxD;",
6
+ "names": []
7
+ }
@@ -0,0 +1,3 @@
1
+ import type { ModuleDeclarationNode, OutputDeclarationNode, ResourceDeclarationNode, VariableDeclarationNode } from "./contract/index.js";
2
+ export declare function collectDependenciesForDeclaration(node: ResourceDeclarationNode | VariableDeclarationNode | OutputDeclarationNode | ModuleDeclarationNode): Set<string>;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/serialization/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EAEvB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,iCAAiC,CAC/C,IAAI,EACA,uBAAuB,GACvB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACxB,GAAG,CAAC,MAAM,CAAC,CAQb"}
@@ -0,0 +1,169 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var utils_exports = {};
19
+ __export(utils_exports, {
20
+ collectDependenciesForDeclaration: () => collectDependenciesForDeclaration
21
+ });
22
+ module.exports = __toCommonJS(utils_exports);
23
+ function collectDependenciesForDeclaration(node) {
24
+ const identifiers = /* @__PURE__ */ new Set();
25
+ if ("valueType" in node) {
26
+ collectIdentifierIdsFromType(node.valueType, identifiers);
27
+ }
28
+ collectIdentifierIdsFromExpression(node.value, identifiers);
29
+ collectIdentifierIdsFromDecorators(node.decorators, identifiers);
30
+ return identifiers;
31
+ }
32
+ function collectIdentifierIdsFromDecorators(decorators, identifiers) {
33
+ for (const value of Object.values(decorators?.metadata ?? {})) {
34
+ collectIdentifierIdsFromExpression(value, identifiers);
35
+ }
36
+ for (const value of decorators?.allowed ?? []) {
37
+ collectIdentifierIdsFromExpression(value, identifiers);
38
+ }
39
+ }
40
+ function collectIdentifierIdsFromType(type, identifiers) {
41
+ switch (type.kind) {
42
+ case "type-reference":
43
+ identifiers.add(type.name);
44
+ return;
45
+ case "union-type-member":
46
+ case "parameterized-type-argument":
47
+ collectIdentifierIdsFromType(type.valueType, identifiers);
48
+ return;
49
+ case "array-type":
50
+ collectIdentifierIdsFromType(type.item, identifiers);
51
+ return;
52
+ case "object-type-property":
53
+ case "object-type-additional-properties":
54
+ collectIdentifierIdsFromType(type.valueType, identifiers);
55
+ collectIdentifierIdsFromDecorators(type.decorators, identifiers);
56
+ return;
57
+ case "object-type":
58
+ for (const property of type.properties) {
59
+ collectIdentifierIdsFromType(property, identifiers);
60
+ }
61
+ if (type.additionalProperties !== void 0) {
62
+ collectIdentifierIdsFromType(type.additionalProperties, identifiers);
63
+ }
64
+ return;
65
+ case "union-type":
66
+ for (const member of type.members) {
67
+ collectIdentifierIdsFromType(member.valueType, identifiers);
68
+ }
69
+ return;
70
+ case "nullable-type":
71
+ collectIdentifierIdsFromType(type.base, identifiers);
72
+ return;
73
+ case "parameterized-type-instantiation":
74
+ collectIdentifierIdsFromType(type.base, identifiers);
75
+ for (const argument of type.args) {
76
+ collectIdentifierIdsFromType(argument.valueType, identifiers);
77
+ }
78
+ return;
79
+ case "primitive-type":
80
+ case "string-type-literal":
81
+ case "integer-type-literal":
82
+ case "boolean-type-literal":
83
+ case "null-type-literal":
84
+ return;
85
+ default: {
86
+ const exhaustive = type;
87
+ throw new Error(`Unsupported type kind: ${exhaustive.kind}`);
88
+ }
89
+ }
90
+ }
91
+ function collectIdentifierIdsFromExpression(expr, out, boundIdentifiers = /* @__PURE__ */ new Set()) {
92
+ switch (expr.kind) {
93
+ case "identifier":
94
+ if (!boundIdentifiers.has(expr.id)) out.add(expr.id);
95
+ break;
96
+ case "property-access":
97
+ collectIdentifierIdsFromExpression(expr.base, out, boundIdentifiers);
98
+ break;
99
+ case "array-access":
100
+ collectIdentifierIdsFromExpression(expr.base, out, boundIdentifiers);
101
+ collectIdentifierIdsFromExpression(expr.index, out, boundIdentifiers);
102
+ break;
103
+ case "function-call":
104
+ if (typeof expr.target !== "string") {
105
+ collectIdentifierIdsFromExpression(expr.target, out, boundIdentifiers);
106
+ }
107
+ for (const arg of expr.args) {
108
+ collectIdentifierIdsFromExpression(arg, out, boundIdentifiers);
109
+ }
110
+ break;
111
+ case "instance-function-call":
112
+ collectIdentifierIdsFromExpression(expr.base, out, boundIdentifiers);
113
+ for (const arg of expr.args) {
114
+ collectIdentifierIdsFromExpression(arg, out, boundIdentifiers);
115
+ }
116
+ break;
117
+ case "binary-operation":
118
+ collectIdentifierIdsFromExpression(expr.left, out, boundIdentifiers);
119
+ collectIdentifierIdsFromExpression(expr.right, out, boundIdentifiers);
120
+ break;
121
+ case "unary-operation":
122
+ collectIdentifierIdsFromExpression(expr.argument, out, boundIdentifiers);
123
+ break;
124
+ case "ternary-operation":
125
+ collectIdentifierIdsFromExpression(expr.condition, out, boundIdentifiers);
126
+ collectIdentifierIdsFromExpression(expr.trueValue, out, boundIdentifiers);
127
+ collectIdentifierIdsFromExpression(expr.falseValue, out, boundIdentifiers);
128
+ break;
129
+ case "if-condition":
130
+ collectIdentifierIdsFromExpression(expr.condition, out, boundIdentifiers);
131
+ collectIdentifierIdsFromExpression(expr.body, out, boundIdentifiers);
132
+ break;
133
+ case "for-expression": {
134
+ collectIdentifierIdsFromExpression(expr.collection, out, boundIdentifiers);
135
+ const loopBindings = new Set(boundIdentifiers);
136
+ loopBindings.add(expr.itemVariable);
137
+ if (expr.indexVariable !== void 0) {
138
+ loopBindings.add(expr.indexVariable);
139
+ }
140
+ collectIdentifierIdsFromExpression(expr.body, out, loopBindings);
141
+ break;
142
+ }
143
+ case "interpolated-string":
144
+ for (const segment of expr.segments) {
145
+ collectIdentifierIdsFromExpression(segment, out, boundIdentifiers);
146
+ }
147
+ break;
148
+ case "object":
149
+ for (const value of Object.values(expr.value)) {
150
+ collectIdentifierIdsFromExpression(value, out, boundIdentifiers);
151
+ }
152
+ break;
153
+ case "array":
154
+ for (const item of expr.items) {
155
+ collectIdentifierIdsFromExpression(item, out, boundIdentifiers);
156
+ }
157
+ break;
158
+ case "null":
159
+ case "boolean":
160
+ case "integer":
161
+ case "string":
162
+ break;
163
+ }
164
+ }
165
+ // Annotate the CommonJS export names for ESM import in node:
166
+ 0 && (module.exports = {
167
+ collectDependenciesForDeclaration
168
+ });
169
+ //# sourceMappingURL=utils.js.map