@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,31 @@
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 serialization_exports = {};
19
+ __export(serialization_exports, {
20
+ deserialize: () => import_deserialize.deserialize,
21
+ serialize: () => import_serialize.serialize
22
+ });
23
+ module.exports = __toCommonJS(serialization_exports);
24
+ var import_deserialize = require("./json/deserialize.js");
25
+ var import_serialize = require("./json/serialize.js");
26
+ // Annotate the CommonJS export names for ESM import in node:
27
+ 0 && (module.exports = {
28
+ deserialize,
29
+ serialize
30
+ });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/serialization/index.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { deserialize, type DeserializeOptions } from \"./json/deserialize.js\";\nexport { serialize } from \"./json/serialize.js\";\nexport type { SerializationDocument } from \"./contract/index.js\";\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAqD;AACrD,uBAA0B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,24 @@
1
+ import { Stack } from "../../constructs/stack.js";
2
+ /**
3
+ * Options for {@link deserialize}.
4
+ *
5
+ * Controls whether unmatched `(type, apiVersion)` pairs fall back
6
+ * to the highest registered version for the type (`strict: false`,
7
+ * the default) or return a base `Resource` (`strict: true`).
8
+ */
9
+ export interface DeserializeOptions {
10
+ readonly strict?: boolean;
11
+ }
12
+ /**
13
+ * Reconstructs stacks from the JSON text of a {@link SerializationDocument},
14
+ * such as `JSON.stringify(serialize(stack))`. Returns one stack per `infras`
15
+ * entry; the input must contain at least one.
16
+ *
17
+ * Import the relevant service packages before restoring to register their
18
+ * resource classes; otherwise unregistered types use base resources.
19
+ * Unsupported module declarations are rejected. A serialize/deserialize/
20
+ * serialize cycle preserves supported deployment semantics and expressions,
21
+ * though the resulting JSON need not be byte-for-byte identical.
22
+ */
23
+ export declare function deserialize(raw: string, options?: DeserializeOptions): readonly Stack[];
24
+ //# sourceMappingURL=deserialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/deserialize.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AA8BlD;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,SAAS,KAAK,EAAE,CAQvF"}
@@ -0,0 +1,385 @@
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 deserialize_exports = {};
19
+ __export(deserialize_exports, {
20
+ deserialize: () => deserialize
21
+ });
22
+ module.exports = __toCommonJS(deserialize_exports);
23
+ var import_output = require("../../constructs/output.js");
24
+ var import_parameter = require("../../constructs/parameter.js");
25
+ var import_variable = require("../../constructs/variable.js");
26
+ var import_resource_proxy = require("../../constructs/resource/resource-proxy.js");
27
+ var import_resource_utils = require("../../constructs/resource/resource-utils.js");
28
+ var import_resource = require("../../constructs/resource/resource.js");
29
+ var import_stack = require("../../constructs/stack.js");
30
+ var import_expressions = require("../../expression/expressions.js");
31
+ var import_naming_policy = require("../../naming/naming-policy.js");
32
+ var import_shape_registry = require("../../shape/shape-registry.js");
33
+ var import_ast_nodes = require("../../expression/ast-nodes.js");
34
+ var import_resource_registry = require("../../constructs/resource/resource-registry.js");
35
+ var import_contract = require("../contract/index.js");
36
+ var import_expression = require("./expression.js");
37
+ var import_lower = require("./lower.js");
38
+ var import_utils = require("../utils.js");
39
+ function deserialize(raw, options) {
40
+ const doc = JSON.parse(raw);
41
+ if (doc.infras.length === 0) throw new Error("Empty SerializationDocument");
42
+ if (doc.infras.some((infra) => Object.keys(infra.modules ?? {}).length > 0)) {
43
+ throw new Error("Module deserialization is not supported.");
44
+ }
45
+ return constructStacks(doc.infras, options);
46
+ }
47
+ function constructStacks(files, options) {
48
+ return files.map((file) => constructStack(file, options));
49
+ }
50
+ function constructStack(file, options) {
51
+ const rootStack = new import_stack.Stack(stemName(file.fileName), {
52
+ targetScope: file.targetScope ?? "resourceGroup",
53
+ namingPolicy: import_naming_policy.namingRequiredPolicy
54
+ });
55
+ const symbols = /* @__PURE__ */ new Map();
56
+ processParams(file, rootStack, symbols);
57
+ processDeclarations(file, rootStack, symbols, options);
58
+ processOutputs(file, rootStack, symbols);
59
+ return rootStack;
60
+ }
61
+ function assertSymbolAvailable(symbols, identifier) {
62
+ if (symbols.has(identifier)) {
63
+ throw new Error(`Duplicate declaration identifier "${identifier}".`);
64
+ }
65
+ }
66
+ function processParams(file, stackHandle, symbols) {
67
+ for (const [, p] of Object.entries(file.parameters ?? {})) {
68
+ assertSymbolAvailable(symbols, p.bicepIdentifier);
69
+ if (p.valueType.kind !== "primitive-type" || !(0, import_contract.isPrimitiveTypeName)(p.valueType.name)) {
70
+ throw new Error(`Parameter "${p.bicepIdentifier}" has an unsupported non-primitive type.`);
71
+ }
72
+ const type = p.valueType.name;
73
+ const sym = (0, import_parameter.createParameter)(stackHandle, p.bicepIdentifier, type, {
74
+ ...p.decorators?.description !== void 0 ? { description: p.decorators.description } : {},
75
+ ...p.decorators?.secure ? { secure: true } : {},
76
+ ...p.defaultValue !== void 0 ? {
77
+ defaultValue: (0, import_expression.deserializeExpression)(p.defaultValue, /* @__PURE__ */ new Map())
78
+ } : {},
79
+ ...p.decorators?.allowed?.length ? {
80
+ allowed: p.decorators.allowed.map(
81
+ (a) => (0, import_expression.deserializeExpression)(a, /* @__PURE__ */ new Map())
82
+ )
83
+ } : {},
84
+ ...p.decorators?.minValue !== void 0 ? { minValue: p.decorators.minValue } : {},
85
+ ...p.decorators?.maxValue !== void 0 ? { maxValue: p.decorators.maxValue } : {},
86
+ ...p.decorators?.minLength !== void 0 ? { minLength: p.decorators.minLength } : {},
87
+ ...p.decorators?.maxLength !== void 0 ? { maxLength: p.decorators.maxLength } : {},
88
+ ...p.decorators?.metadata !== void 0 ? {
89
+ metadata: Object.fromEntries(
90
+ Object.entries(p.decorators.metadata).map(([k, v]) => [
91
+ k,
92
+ (0, import_expression.deserializeExpression)(v, /* @__PURE__ */ new Map())
93
+ ])
94
+ )
95
+ } : {},
96
+ ...p.decorators?.discriminator !== void 0 ? { discriminator: p.decorators.discriminator } : {},
97
+ ...p.decorators?.sealed ? { sealed: true } : {}
98
+ });
99
+ symbols.set(p.bicepIdentifier, sym);
100
+ }
101
+ }
102
+ function processDeclarations(file, stackHandle, symbols, options) {
103
+ const declarations = /* @__PURE__ */ new Map();
104
+ function registerDeclaration(declaration) {
105
+ const { node } = declaration;
106
+ assertSymbolAvailable(symbols, node.bicepIdentifier);
107
+ const previous = declarations.get(node.bicepIdentifier);
108
+ if (previous !== void 0) {
109
+ const category = previous.kind === "resource" && declaration.kind === "resource" ? "resource" : "declaration";
110
+ throw new Error(`Duplicate ${category} identifier "${node.bicepIdentifier}".`);
111
+ }
112
+ declarations.set(node.bicepIdentifier, declaration);
113
+ }
114
+ for (const node of Object.values(file.variables ?? {})) {
115
+ registerDeclaration({ kind: "variable", node });
116
+ }
117
+ for (const node of Object.values(file.resources ?? {})) {
118
+ registerDeclaration({ kind: "resource", node });
119
+ }
120
+ const pending = [];
121
+ const active = /* @__PURE__ */ new Map();
122
+ function pushDeclaration(declaration) {
123
+ const { node } = declaration;
124
+ const identifiers = (0, import_utils.collectDependenciesForDeclaration)(node);
125
+ active.set(node.bicepIdentifier, pending.length);
126
+ pending.push({ declaration, dependencies: identifiers.values() });
127
+ }
128
+ for (const declaration of declarations.values()) {
129
+ if (symbols.has(declaration.node.bicepIdentifier)) continue;
130
+ pushDeclaration(declaration);
131
+ while (pending.length > 0) {
132
+ const frame = pending[pending.length - 1];
133
+ const dependency = frame.dependencies.next();
134
+ if (!dependency.done) {
135
+ if (symbols.has(dependency.value)) continue;
136
+ const target = declarations.get(dependency.value);
137
+ if (target === void 0) continue;
138
+ const cycleStart = active.get(dependency.value);
139
+ if (cycleStart !== void 0) {
140
+ const cycle = pending.slice(cycleStart).map((entry) => entry.declaration);
141
+ const category = cycle.every((entry) => entry.kind === "resource") ? "Resource" : "Declaration";
142
+ const path = [...cycle.map((entry) => entry.node.bicepIdentifier), dependency.value].map((identifier) => `"${identifier}"`).join(" -> ");
143
+ throw new Error(`${category} dependency cycle detected: ${path}.`);
144
+ }
145
+ pushDeclaration(target);
146
+ continue;
147
+ }
148
+ constructDeclaration(frame.declaration);
149
+ active.delete(frame.declaration.node.bicepIdentifier);
150
+ pending.pop();
151
+ }
152
+ }
153
+ function constructDeclaration(declaration) {
154
+ if (declaration.kind === "resource") {
155
+ symbols.set(
156
+ declaration.node.bicepIdentifier,
157
+ createResource(declaration.node, stackHandle, symbols, options)
158
+ );
159
+ return;
160
+ }
161
+ const { node } = declaration;
162
+ const sym = (0, import_variable.createVariable)(
163
+ stackHandle,
164
+ node.bicepIdentifier,
165
+ (0, import_expression.deserializeExpression)(node.value, symbols),
166
+ {
167
+ ...node.decorators?.description !== void 0 ? { description: node.decorators.description } : {},
168
+ ...node.decorators?.export ? { export: true } : {}
169
+ }
170
+ );
171
+ symbols.set(node.bicepIdentifier, sym);
172
+ }
173
+ }
174
+ function processOutputs(file, stackHandle, symbols) {
175
+ for (const [, o] of Object.entries(file.outputs ?? {})) {
176
+ if (o.valueType.kind !== "primitive-type") {
177
+ throw new Error(
178
+ `Cannot deserialize output "${o.bicepIdentifier}" with non-primitive type "${o.valueType.kind}".`
179
+ );
180
+ }
181
+ if (!(0, import_contract.isPrimitiveTypeName)(o.valueType.name)) {
182
+ throw new Error(
183
+ `Cannot deserialize output "${o.bicepIdentifier}" with unknown primitive type "${o.valueType.name}".`
184
+ );
185
+ }
186
+ const val = (0, import_expression.deserializeExpression)(o.value, symbols);
187
+ (0, import_output.createOutput)(stackHandle, o.bicepIdentifier, o.valueType.name, val, {
188
+ ...o.decorators?.description !== void 0 ? { description: o.decorators.description } : {},
189
+ ...o.decorators?.secure ? { secure: true } : {},
190
+ ...o.decorators?.minValue !== void 0 ? { minValue: o.decorators.minValue } : {},
191
+ ...o.decorators?.maxValue !== void 0 ? { maxValue: o.decorators.maxValue } : {},
192
+ ...o.decorators?.minLength !== void 0 ? { minLength: o.decorators.minLength } : {},
193
+ ...o.decorators?.maxLength !== void 0 ? { maxLength: o.decorators.maxLength } : {},
194
+ ...o.decorators?.metadata !== void 0 ? {
195
+ metadata: Object.fromEntries(
196
+ Object.entries(o.decorators.metadata).map(([k, v]) => [
197
+ k,
198
+ (0, import_expression.deserializeExpression)(v, symbols)
199
+ ])
200
+ )
201
+ } : {},
202
+ ...o.decorators?.discriminator !== void 0 ? { discriminator: o.decorators.discriminator } : {},
203
+ ...o.decorators?.sealed ? { sealed: true } : {}
204
+ });
205
+ }
206
+ }
207
+ function createResource(res, defaultScope, symbols, options) {
208
+ let wireBody = res.value;
209
+ let loopWrapper;
210
+ let conditionNode;
211
+ if (wireBody.kind === "for-expression") {
212
+ loopWrapper = {
213
+ itemVariable: wireBody.itemVariable,
214
+ ...wireBody.indexVariable !== void 0 ? { indexVariable: wireBody.indexVariable } : {},
215
+ collection: wireBody.collection
216
+ };
217
+ wireBody = wireBody.body;
218
+ }
219
+ if (wireBody.kind === "if-condition") {
220
+ conditionNode = wireBody.condition;
221
+ wireBody = wireBody.body;
222
+ }
223
+ if (wireBody.kind !== "object") {
224
+ throw new Error(
225
+ `Invalid wire shape for resource "${res.bicepIdentifier}": \`value\` must be an \`object\`, optionally wrapped in \`if-condition\` and/or an outer \`for-expression\` (Bicep source order: \`for\` outer, \`if\` inner). Innermost node after peeling at most one \`for-expression\` and one \`if-condition\` is \`${wireBody.kind}\`.`
226
+ );
227
+ }
228
+ const scopedSymbols = loopWrapper === void 0 ? symbols : new Map(symbols);
229
+ const loopAuthoring = loopWrapper !== void 0 ? {
230
+ collection: (0, import_expression.deserializeExpression)(loopWrapper.collection, symbols),
231
+ itemVariable: loopWrapper.itemVariable,
232
+ ...loopWrapper.indexVariable !== void 0 ? { indexVariable: loopWrapper.indexVariable } : {},
233
+ ...res.decorators?.batchSize !== void 0 ? { batchSize: res.decorators.batchSize } : {}
234
+ } : void 0;
235
+ if (loopWrapper !== void 0) {
236
+ scopedSymbols.set(
237
+ loopWrapper.itemVariable,
238
+ (0, import_expressions.wrapExpression)((0, import_ast_nodes.symbolicValueExpressionNode)(loopWrapper.itemVariable))
239
+ );
240
+ if (loopWrapper.indexVariable !== void 0) {
241
+ scopedSymbols.set(
242
+ loopWrapper.indexVariable,
243
+ (0, import_expressions.wrapExpression)((0, import_ast_nodes.symbolicValueExpressionNode)(loopWrapper.indexVariable))
244
+ );
245
+ }
246
+ }
247
+ const authoring = {
248
+ ...conditionNode !== void 0 ? {
249
+ condition: (0, import_expression.deserializeExpression)(conditionNode, scopedSymbols)
250
+ } : {},
251
+ ...loopAuthoring !== void 0 ? { loop: loopAuthoring } : {}
252
+ };
253
+ return buildResource(
254
+ res,
255
+ objBody(res.value) ?? {},
256
+ defaultScope,
257
+ scopedSymbols,
258
+ options,
259
+ authoring
260
+ );
261
+ }
262
+ function buildResource(res, body, defaultScope, symbols, options, authoring) {
263
+ let context = defaultScope;
264
+ const parentNode = body["parent"];
265
+ const scopeNode = body["scope"];
266
+ if (parentNode !== void 0 && parentNode.kind !== "identifier" && parentNode.kind !== "array-access") {
267
+ throw new Error(`Resource "${res.bicepIdentifier}" has an invalid "parent" reference.`);
268
+ }
269
+ if (!res.existing && scopeNode !== void 0 && scopeNode.kind !== "identifier") {
270
+ throw new Error(`Resource "${res.bicepIdentifier}" has an invalid "scope" reference.`);
271
+ }
272
+ if (parentNode?.kind === "identifier") {
273
+ context = (0, import_expression.requireResourceHandle)(parentNode.id, symbols, res.bicepIdentifier, "parent");
274
+ } else if (parentNode?.kind === "array-access") {
275
+ const baseNode = parentNode.base;
276
+ if (baseNode.kind === "identifier") {
277
+ const rawParent = (0, import_expression.requireResourceHandle)(baseNode.id, symbols, res.bicepIdentifier, "parent");
278
+ const indexValue = (0, import_expression.deserializeExpression)(parentNode.index, symbols);
279
+ context = (0, import_resource_proxy.createIndexedResourceProxy)(
280
+ rawParent,
281
+ indexValue
282
+ );
283
+ } else {
284
+ throw new Error(`Resource "${res.bicepIdentifier}" has an invalid "parent" reference.`);
285
+ }
286
+ } else if (scopeNode?.kind === "identifier") {
287
+ const scopeResource = (0, import_expression.requireResourceHandle)(
288
+ scopeNode.id,
289
+ symbols,
290
+ res.bicepIdentifier,
291
+ "scope"
292
+ );
293
+ if ((0, import_resource_utils.isLoopedResource)(scopeResource)) {
294
+ throw new Error(
295
+ `Resource "${res.bicepIdentifier}" references resource collection "${scopeNode.id}" in "scope"; expected a single resource.`
296
+ );
297
+ }
298
+ context = scopeResource;
299
+ }
300
+ let existingScope;
301
+ if (res.existing && scopeNode !== void 0 && scopeNode.kind !== "identifier") {
302
+ const scope = (0, import_expression.deserializeExpression)(scopeNode, symbols);
303
+ if (!(0, import_expressions.isExpression)(scope)) {
304
+ throw new Error(
305
+ `Resource "${res.bicepIdentifier}" has an invalid "scope" value: expected an expression, received "${scopeNode.kind}".`
306
+ );
307
+ }
308
+ existingScope = scope;
309
+ }
310
+ const RESERVED = /* @__PURE__ */ new Set(["name", "parent", "scope", "dependsOn"]);
311
+ const wireProps = /* @__PURE__ */ Object.create(null);
312
+ for (const [key, valNode] of Object.entries(body)) {
313
+ if (!RESERVED.has(key)) {
314
+ Object.defineProperty(wireProps, key, {
315
+ value: (0, import_expression.deserializeExpression)(valNode, symbols),
316
+ enumerable: true,
317
+ configurable: true,
318
+ writable: true
319
+ });
320
+ }
321
+ }
322
+ const nameNode = body["name"];
323
+ const resourceName = nameNode === void 0 ? "unknown" : (0, import_expression.deserializeExpression)(nameNode, symbols);
324
+ const wireState = { name: resourceName, ...wireProps };
325
+ const descriptor = (0, import_shape_registry.getShape)(res.type, res.apiVersion, wireState, {
326
+ strict: options?.strict ?? false,
327
+ valueKeyedBy: "arm"
328
+ });
329
+ const props = descriptor ? (0, import_lower.raiseState)(wireProps, descriptor) : wireProps;
330
+ const baseProps = {
331
+ type: res.type,
332
+ apiVersion: res.apiVersion,
333
+ name: resourceName,
334
+ ...res.existing ? { existing: true } : {},
335
+ ...existingScope !== void 0 ? { scope: existingScope } : {},
336
+ ...props
337
+ };
338
+ const resourceOptions = {
339
+ ...authoring?.condition !== void 0 ? { condition: authoring.condition } : {},
340
+ ...body.dependsOn !== void 0 ? {
341
+ dependsOn: (0, import_expression.deserializeDependsOnExpression)(body.dependsOn, symbols, res.bicepIdentifier)
342
+ } : {}
343
+ };
344
+ const Ctor = (0, import_resource_registry.resolveResource)(res.type, res.apiVersion, wireState, options);
345
+ let handle;
346
+ if (authoring?.loop !== void 0) {
347
+ const loopInstance = new import_resource.Loop(authoring.loop.collection, {
348
+ itemVariable: authoring.loop.itemVariable,
349
+ ...authoring.loop.indexVariable !== void 0 ? { indexVariable: authoring.loop.indexVariable } : {},
350
+ ...authoring.loop.batchSize !== void 0 ? { batchSize: authoring.loop.batchSize } : {}
351
+ });
352
+ const CtorToUse = Ctor ?? import_resource.Resource;
353
+ handle = (0, import_resource.createLoopedResource)(
354
+ CtorToUse,
355
+ loopInstance,
356
+ context,
357
+ baseProps,
358
+ resourceOptions
359
+ );
360
+ } else if (Ctor === void 0) {
361
+ handle = new import_resource.Resource(context, baseProps, resourceOptions);
362
+ } else {
363
+ const { type: _t, apiVersion: _v, ...classProps } = baseProps;
364
+ handle = new Ctor(context, classProps, resourceOptions);
365
+ }
366
+ if (authoring?.condition !== void 0) {
367
+ const state = (0, import_resource_proxy.unwrapResourceHandle)(handle);
368
+ state.condition = authoring.condition;
369
+ }
370
+ return handle;
371
+ }
372
+ function objBody(node) {
373
+ if (node.kind === "object") return node.value;
374
+ if (node.kind === "if-condition") return objBody(node.body);
375
+ if (node.kind === "for-expression") return objBody(node.body);
376
+ return void 0;
377
+ }
378
+ function stemName(fileName) {
379
+ return fileName.replace(/\.bicep$/, "");
380
+ }
381
+ // Annotate the CommonJS export names for ESM import in node:
382
+ 0 && (module.exports = {
383
+ deserialize
384
+ });
385
+ //# sourceMappingURL=deserialize.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/serialization/json/deserialize.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Deserializes raw JSON (produced by `@azure/provisioning-core/serialization`) back into\n * live CDK `Stack` data structures.\n */\n\nimport { createOutput, type OutputValue } from \"../../constructs/output.js\";\nimport { createParameter } from \"../../constructs/parameter.js\";\nimport { createVariable, type VariableValue } from \"../../constructs/variable.js\";\nimport {\n createIndexedResourceProxy,\n unwrapResourceHandle,\n} from \"../../constructs/resource/resource-proxy.js\";\nimport { isLoopedResource } from \"../../constructs/resource/resource-utils.js\";\nimport {\n createLoopedResource,\n Loop,\n type LoopedResource,\n Resource,\n type ResourceOptions,\n type ScopeExpression,\n} from \"../../constructs/resource/resource.js\";\nimport { Stack } from \"../../constructs/stack.js\";\nimport { wrapExpression, isExpression, type Expression } from \"../../expression/expressions.js\";\nimport { namingRequiredPolicy } from \"../../naming/naming-policy.js\";\nimport { getShape } from \"../../shape/shape-registry.js\";\nimport { symbolicValueExpressionNode } from \"../../expression/ast-nodes.js\";\nimport { resolveResource } from \"../../constructs/resource/resource-registry.js\";\nimport { type ProvisioningComponent } from \"../../constructs/provisioning-component.js\";\n\nimport {\n isPrimitiveTypeName,\n type ExpressionNode,\n type InfraNode,\n type ResourceDeclarationNode,\n type SerializationDocument,\n type VariableDeclarationNode,\n} from \"../contract/index.js\";\n\nimport {\n deserializeDependsOnExpression,\n deserializeExpression,\n requireResourceHandle,\n type DeserializationSymbolMap,\n} from \"./expression.js\";\nimport { raiseState } from \"./lower.js\";\nimport { collectDependenciesForDeclaration } from \"../utils.js\";\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Options for {@link deserialize}.\n *\n * Controls whether unmatched `(type, apiVersion)` pairs fall back\n * to the highest registered version for the type (`strict: false`,\n * the default) or return a base `Resource` (`strict: true`).\n */\nexport interface DeserializeOptions {\n readonly strict?: boolean;\n}\n\n/**\n * Reconstructs stacks from the JSON text of a {@link SerializationDocument},\n * such as `JSON.stringify(serialize(stack))`. Returns one stack per `infras`\n * entry; the input must contain at least one.\n *\n * Import the relevant service packages before restoring to register their\n * resource classes; otherwise unregistered types use base resources.\n * Unsupported module declarations are rejected. A serialize/deserialize/\n * serialize cycle preserves supported deployment semantics and expressions,\n * though the resulting JSON need not be byte-for-byte identical.\n */\nexport function deserialize(raw: string, options?: DeserializeOptions): readonly Stack[] {\n const doc = JSON.parse(raw) as SerializationDocument;\n if (doc.infras.length === 0) throw new Error(\"Empty SerializationDocument\");\n if (doc.infras.some((infra) => Object.keys(infra.modules ?? {}).length > 0)) {\n throw new Error(\"Module deserialization is not supported.\");\n }\n\n return constructStacks(doc.infras, options);\n}\n\n// ---------------------------------------------------------------------------\n// Type aliases\n// ---------------------------------------------------------------------------\n\ninterface LoopAuthoringContext {\n readonly collection: unknown;\n readonly itemVariable: string;\n readonly indexVariable?: string;\n readonly batchSize?: number;\n}\n\ninterface ResourceAuthoringContext {\n readonly condition?: Expression<boolean>;\n readonly loop?: LoopAuthoringContext;\n}\n\n// ---------------------------------------------------------------------------\n// Construction: InfraNode \u2192 CDK objects\n// ---------------------------------------------------------------------------\n\nfunction constructStacks(\n files: readonly InfraNode[],\n options: DeserializeOptions | undefined,\n): Stack[] {\n return files.map((file) => constructStack(file, options));\n}\n\nfunction constructStack(file: InfraNode, options: DeserializeOptions | undefined): Stack {\n const rootStack = new Stack(stemName(file.fileName), {\n targetScope: file.targetScope ?? \"resourceGroup\",\n namingPolicy: namingRequiredPolicy,\n });\n\n // Map stack-local identifiers to expression handles and resource declarations.\n const symbols: DeserializationSymbolMap = new Map();\n\n processParams(file, rootStack, symbols);\n processDeclarations(file, rootStack, symbols, options);\n processOutputs(file, rootStack, symbols);\n\n return rootStack;\n}\n\n// ---------------------------------------------------------------------------\n// Declaration processing\n// ---------------------------------------------------------------------------\n\nfunction assertSymbolAvailable(symbols: DeserializationSymbolMap, identifier: string): void {\n if (symbols.has(identifier)) {\n throw new Error(`Duplicate declaration identifier \"${identifier}\".`);\n }\n}\n\nfunction processParams(\n file: InfraNode,\n stackHandle: Stack,\n symbols: DeserializationSymbolMap,\n): void {\n for (const [, p] of Object.entries(file.parameters ?? {})) {\n assertSymbolAvailable(symbols, p.bicepIdentifier);\n if (p.valueType.kind !== \"primitive-type\" || !isPrimitiveTypeName(p.valueType.name)) {\n throw new Error(`Parameter \"${p.bicepIdentifier}\" has an unsupported non-primitive type.`);\n }\n const type = p.valueType.name;\n const sym = createParameter(stackHandle, p.bicepIdentifier, type, {\n ...(p.decorators?.description !== undefined ? { description: p.decorators.description } : {}),\n ...(p.decorators?.secure ? { secure: true } : {}),\n ...(p.defaultValue !== undefined\n ? {\n defaultValue: deserializeExpression(p.defaultValue, new Map()) as string,\n }\n : {}),\n ...(p.decorators?.allowed?.length\n ? {\n allowed: p.decorators.allowed.map((a) =>\n deserializeExpression(a, new Map()),\n ) as unknown as readonly string[],\n }\n : {}),\n ...(p.decorators?.minValue !== undefined ? { minValue: p.decorators.minValue } : {}),\n ...(p.decorators?.maxValue !== undefined ? { maxValue: p.decorators.maxValue } : {}),\n ...(p.decorators?.minLength !== undefined ? { minLength: p.decorators.minLength } : {}),\n ...(p.decorators?.maxLength !== undefined ? { maxLength: p.decorators.maxLength } : {}),\n ...(p.decorators?.metadata !== undefined\n ? {\n metadata: Object.fromEntries(\n Object.entries(p.decorators.metadata).map(([k, v]) => [\n k,\n deserializeExpression(v, new Map()),\n ]),\n ) as Record<string, unknown>,\n }\n : {}),\n ...(p.decorators?.discriminator !== undefined\n ? { discriminator: p.decorators.discriminator }\n : {}),\n ...(p.decorators?.sealed ? { sealed: true } : {}),\n });\n symbols.set(p.bicepIdentifier, sym);\n }\n}\n\nfunction processDeclarations(\n file: InfraNode,\n stackHandle: Stack,\n symbols: DeserializationSymbolMap,\n options: DeserializeOptions | undefined,\n): void {\n type IndexedDeclaration =\n | { readonly kind: \"resource\"; readonly node: ResourceDeclarationNode }\n | { readonly kind: \"variable\"; readonly node: VariableDeclarationNode };\n const declarations = new Map<string, IndexedDeclaration>();\n\n function registerDeclaration(declaration: IndexedDeclaration): void {\n const { node } = declaration;\n assertSymbolAvailable(symbols, node.bicepIdentifier);\n const previous = declarations.get(node.bicepIdentifier);\n if (previous !== undefined) {\n const category =\n previous.kind === \"resource\" && declaration.kind === \"resource\"\n ? \"resource\"\n : \"declaration\";\n throw new Error(`Duplicate ${category} identifier \"${node.bicepIdentifier}\".`);\n }\n declarations.set(node.bicepIdentifier, declaration);\n }\n\n for (const node of Object.values(file.variables ?? {})) {\n registerDeclaration({ kind: \"variable\", node });\n }\n for (const node of Object.values(file.resources ?? {})) {\n registerDeclaration({ kind: \"resource\", node });\n }\n\n const pending: {\n declaration: IndexedDeclaration;\n dependencies: Iterator<string>;\n }[] = [];\n const active = new Map<string, number>();\n\n function pushDeclaration(declaration: IndexedDeclaration): void {\n const { node } = declaration;\n const identifiers = collectDependenciesForDeclaration(node);\n active.set(node.bicepIdentifier, pending.length);\n pending.push({ declaration, dependencies: identifiers.values() });\n }\n\n for (const declaration of declarations.values()) {\n if (symbols.has(declaration.node.bicepIdentifier)) continue;\n pushDeclaration(declaration);\n\n while (pending.length > 0) {\n const frame = pending[pending.length - 1]!;\n const dependency = frame.dependencies.next();\n if (!dependency.done) {\n if (symbols.has(dependency.value)) continue;\n const target = declarations.get(dependency.value);\n if (target === undefined) continue;\n const cycleStart = active.get(dependency.value);\n if (cycleStart !== undefined) {\n const cycle = pending.slice(cycleStart).map((entry) => entry.declaration);\n const category = cycle.every((entry) => entry.kind === \"resource\")\n ? \"Resource\"\n : \"Declaration\";\n const path = [...cycle.map((entry) => entry.node.bicepIdentifier), dependency.value]\n .map((identifier) => `\"${identifier}\"`)\n .join(\" -> \");\n throw new Error(`${category} dependency cycle detected: ${path}.`);\n }\n pushDeclaration(target);\n continue;\n }\n\n constructDeclaration(frame.declaration);\n active.delete(frame.declaration.node.bicepIdentifier);\n pending.pop();\n }\n }\n\n function constructDeclaration(declaration: IndexedDeclaration): void {\n if (declaration.kind === \"resource\") {\n symbols.set(\n declaration.node.bicepIdentifier,\n createResource(declaration.node, stackHandle, symbols, options),\n );\n return;\n }\n const { node } = declaration;\n const sym = createVariable(\n stackHandle,\n node.bicepIdentifier,\n deserializeExpression(node.value, symbols) as VariableValue,\n {\n ...(node.decorators?.description !== undefined\n ? { description: node.decorators.description }\n : {}),\n ...(node.decorators?.export ? { export: true } : {}),\n },\n );\n symbols.set(node.bicepIdentifier, sym);\n }\n}\n\nfunction processOutputs(\n file: InfraNode,\n stackHandle: Stack,\n symbols: DeserializationSymbolMap,\n): void {\n for (const [, o] of Object.entries(file.outputs ?? {})) {\n if (o.valueType.kind !== \"primitive-type\") {\n throw new Error(\n `Cannot deserialize output \"${o.bicepIdentifier}\" with non-primitive type \"${o.valueType.kind}\".`,\n );\n }\n if (!isPrimitiveTypeName(o.valueType.name)) {\n throw new Error(\n `Cannot deserialize output \"${o.bicepIdentifier}\" with unknown primitive type \"${o.valueType.name}\".`,\n );\n }\n const val = deserializeExpression(o.value, symbols) as OutputValue;\n createOutput(stackHandle, o.bicepIdentifier, o.valueType.name, val as OutputValue, {\n ...(o.decorators?.description !== undefined ? { description: o.decorators.description } : {}),\n ...(o.decorators?.secure ? { secure: true } : {}),\n ...(o.decorators?.minValue !== undefined ? { minValue: o.decorators.minValue } : {}),\n ...(o.decorators?.maxValue !== undefined ? { maxValue: o.decorators.maxValue } : {}),\n ...(o.decorators?.minLength !== undefined ? { minLength: o.decorators.minLength } : {}),\n ...(o.decorators?.maxLength !== undefined ? { maxLength: o.decorators.maxLength } : {}),\n ...(o.decorators?.metadata !== undefined\n ? {\n metadata: Object.fromEntries(\n Object.entries(o.decorators.metadata).map(([k, v]) => [\n k,\n deserializeExpression(v, symbols),\n ]),\n ) as Record<string, unknown>,\n }\n : {}),\n ...(o.decorators?.discriminator !== undefined\n ? { discriminator: o.decorators.discriminator }\n : {}),\n ...(o.decorators?.sealed ? { sealed: true } : {}),\n });\n }\n}\n\n// ---------------------------------------------------------------------------\n// Resource construction\n// ---------------------------------------------------------------------------\n\nfunction createResource(\n res: ResourceDeclarationNode,\n defaultScope: Stack | Resource,\n symbols: DeserializationSymbolMap,\n options: DeserializeOptions | undefined,\n): Resource | LoopedResource<Resource> {\n // `res.value` is the wire body. Valid shapes are:\n // 1. object\n // 2. if-condition(object)\n // 3. for-expression(object)\n // 4. for-expression(if-condition(object))\n // Anything else (bare wrappers, if-outer-for-inner, multi-if, multi-for,\n // nested for-for, if-for-if, etc.) is malformed and rejected here.\n let wireBody: ExpressionNode = res.value;\n let loopWrapper:\n | {\n itemVariable: string;\n indexVariable?: string;\n collection: ExpressionNode;\n }\n | undefined;\n let conditionNode: ExpressionNode | undefined;\n\n if (wireBody.kind === \"for-expression\") {\n loopWrapper = {\n itemVariable: wireBody.itemVariable,\n ...(wireBody.indexVariable !== undefined ? { indexVariable: wireBody.indexVariable } : {}),\n collection: wireBody.collection,\n };\n wireBody = wireBody.body;\n }\n if (wireBody.kind === \"if-condition\") {\n conditionNode = wireBody.condition;\n wireBody = wireBody.body;\n }\n if (wireBody.kind !== \"object\") {\n throw new Error(\n `Invalid wire shape for resource \"${res.bicepIdentifier}\": ` +\n `\\`value\\` must be an \\`object\\`, optionally wrapped in ` +\n `\\`if-condition\\` and/or an outer \\`for-expression\\` (Bicep source ` +\n `order: \\`for\\` outer, \\`if\\` inner). Innermost node after peeling ` +\n `at most one \\`for-expression\\` and one \\`if-condition\\` is ` +\n `\\`${wireBody.kind}\\`.`,\n );\n }\n\n const scopedSymbols = loopWrapper === undefined ? symbols : new Map(symbols);\n const loopAuthoring: LoopAuthoringContext | undefined =\n loopWrapper !== undefined\n ? {\n collection: deserializeExpression(loopWrapper.collection, symbols),\n itemVariable: loopWrapper.itemVariable,\n ...(loopWrapper.indexVariable !== undefined\n ? { indexVariable: loopWrapper.indexVariable }\n : {}),\n ...(res.decorators?.batchSize !== undefined\n ? { batchSize: res.decorators.batchSize }\n : {}),\n }\n : undefined;\n\n if (loopWrapper !== undefined) {\n scopedSymbols.set(\n loopWrapper.itemVariable,\n wrapExpression(symbolicValueExpressionNode(loopWrapper.itemVariable)),\n );\n if (loopWrapper.indexVariable !== undefined) {\n scopedSymbols.set(\n loopWrapper.indexVariable,\n wrapExpression(symbolicValueExpressionNode(loopWrapper.indexVariable)),\n );\n }\n }\n\n const authoring: ResourceAuthoringContext = {\n ...(conditionNode !== undefined\n ? {\n condition: deserializeExpression(conditionNode, scopedSymbols) as Expression<boolean>,\n }\n : {}),\n ...(loopAuthoring !== undefined ? { loop: loopAuthoring } : {}),\n };\n\n return buildResource(\n res,\n objBody(res.value) ?? {},\n defaultScope,\n scopedSymbols,\n options,\n authoring,\n );\n}\n\nfunction buildResource(\n res: ResourceDeclarationNode,\n body: Record<string, ExpressionNode>,\n defaultScope: Stack | Resource,\n symbols: DeserializationSymbolMap,\n options: DeserializeOptions | undefined,\n authoring?: ResourceAuthoringContext,\n): Resource | LoopedResource<Resource> {\n let context: ProvisioningComponent = defaultScope;\n const parentNode = body[\"parent\"];\n const scopeNode = body[\"scope\"];\n if (\n parentNode !== undefined &&\n parentNode.kind !== \"identifier\" &&\n parentNode.kind !== \"array-access\"\n ) {\n throw new Error(`Resource \"${res.bicepIdentifier}\" has an invalid \"parent\" reference.`);\n }\n if (!res.existing && scopeNode !== undefined && scopeNode.kind !== \"identifier\") {\n throw new Error(`Resource \"${res.bicepIdentifier}\" has an invalid \"scope\" reference.`);\n }\n if (parentNode?.kind === \"identifier\") {\n context = requireResourceHandle(parentNode.id, symbols, res.bicepIdentifier, \"parent\");\n } else if (parentNode?.kind === \"array-access\") {\n // `parent: parentSym[<index>]` \u2014 the serializer emitted this because\n // the authoring code created the child under `parents.at(i)` /\n // `parents.current()`. To round-trip the shape, reconstruct the\n // indexed proxy so the base `Resource` ctor stashes\n // `state.parentIndex` from the same index expression. Passing the\n // raw parent here would erase the array-access \u2014 the child would\n // re-serialize as `parent: parentSym` and lose the index.\n const baseNode = parentNode.base;\n if (baseNode.kind === \"identifier\") {\n const rawParent = requireResourceHandle(baseNode.id, symbols, res.bicepIdentifier, \"parent\");\n const indexValue = deserializeExpression(parentNode.index, symbols);\n context = createIndexedResourceProxy(\n rawParent,\n indexValue as number,\n ) as unknown as ProvisioningComponent;\n } else {\n throw new Error(`Resource \"${res.bicepIdentifier}\" has an invalid \"parent\" reference.`);\n }\n } else if (scopeNode?.kind === \"identifier\") {\n const scopeResource = requireResourceHandle(\n scopeNode.id,\n symbols,\n res.bicepIdentifier,\n \"scope\",\n );\n if (isLoopedResource(scopeResource)) {\n throw new Error(\n `Resource \"${res.bicepIdentifier}\" references resource collection ` +\n `\"${scopeNode.id}\" in \"scope\"; expected a single resource.`,\n );\n }\n context = scopeResource;\n }\n\n let existingScope: ScopeExpression | undefined;\n if (res.existing && scopeNode !== undefined && scopeNode.kind !== \"identifier\") {\n const scope = deserializeExpression(scopeNode, symbols);\n if (!isExpression(scope)) {\n throw new Error(\n `Resource \"${res.bicepIdentifier}\" has an invalid \"scope\" value: ` +\n `expected an expression, received \"${scopeNode.kind}\".`,\n );\n }\n existingScope = scope;\n }\n\n // Collect non-reserved properties\n const RESERVED = new Set([\"name\", \"parent\", \"scope\", \"dependsOn\"]);\n const wireProps: Record<string, unknown> = Object.create(null);\n for (const [key, valNode] of Object.entries(body)) {\n if (!RESERVED.has(key)) {\n Object.defineProperty(wireProps, key, {\n value: deserializeExpression(valNode, symbols),\n enumerable: true,\n configurable: true,\n writable: true,\n });\n }\n }\n\n // Raise wire-shape props into JS-shape when a descriptor is\n // registered for this resource type + apiVersion. No-op otherwise \u2014\n // the resource stays in wire shape, which round-trips correctly\n // because re-serialization also skips lowering when no descriptor\n // is attached.\n const nameNode = body[\"name\"];\n const resourceName =\n nameNode === undefined ? \"unknown\" : (deserializeExpression(nameNode, symbols) as string);\n const wireState = { name: resourceName, ...wireProps };\n const descriptor = getShape(res.type, res.apiVersion, wireState, {\n strict: options?.strict ?? false,\n valueKeyedBy: \"arm\",\n });\n const props = descriptor ? raiseState(wireProps, descriptor) : wireProps;\n\n const baseProps: Record<string, unknown> = {\n type: res.type,\n apiVersion: res.apiVersion,\n name: resourceName,\n ...(res.existing ? { existing: true } : {}),\n ...(existingScope !== undefined ? { scope: existingScope } : {}),\n ...props,\n };\n\n const resourceOptions: ResourceOptions = {\n ...(authoring?.condition !== undefined ? { condition: authoring.condition } : {}),\n ...(body.dependsOn !== undefined\n ? {\n dependsOn: deserializeDependsOnExpression(body.dependsOn, symbols, res.bicepIdentifier),\n }\n : {}),\n };\n\n // Look up a registered class for this (type, apiVersion). If one\n // exists, construct it directly so the resulting handle has the right\n // prototype, instance fields, and `instanceof` identity. The class\n // constructor sets `type` and\n // `apiVersion` itself, so strip them before forwarding. Fall back to\n // base `Resource` when no class is registered (unknown type or\n // tree-shaken/missing class module). The `{ name }` lookup state lets\n // the registry pick the right variant for ARM-discriminated types\n // (e.g. `Microsoft.ApiManagement/service/portalsettings` keyed by\n // singleton name). By default the registry does a best-effort match\n // \u2014 an unknown apiVersion falls back to the highest registered\n // version for the same `(type, channel)`. Callers can pass\n // `{ strict: true }` on `deserialize` to require an\n // exact `(type, apiVersion)` match instead.\n const Ctor = resolveResource(res.type, res.apiVersion, wireState, options);\n\n let handle: Resource | LoopedResource<Resource>;\n if (authoring?.loop !== undefined) {\n // Looped path: construct a `LoopedResource` directly. Build a fresh\n // `Loop` from the peeled wire metadata; `Resource.fromLoop` reads\n // `.collection`, `.itemVariable`, `.indexRequested`, `.indexVariable`,\n // and `.batchSize` off it. Passing the itemVariable/indexVariable\n // explicitly keeps the wire name (rather than the \"item\"/\"i\" default)\n // and, since supplying `{ indexVariable }` counts as a request,\n // preserves the index binding on re-serialize.\n const loopInstance = new Loop(authoring.loop.collection as unknown as unknown[], {\n itemVariable: authoring.loop.itemVariable,\n ...(authoring.loop.indexVariable !== undefined\n ? { indexVariable: authoring.loop.indexVariable }\n : {}),\n ...(authoring.loop.batchSize !== undefined ? { batchSize: authoring.loop.batchSize } : {}),\n });\n // Base `Resource` is the fallback when no subclass is registered.\n // `LoopedResource`'s ctor accepts type/apiVersion from `userProps`\n // when the ctor's own statics are undefined (as they are on base\n // `Resource`), so this path threads the wire values through\n // `baseProps`.\n const CtorToUse = Ctor ?? Resource;\n handle = createLoopedResource(\n CtorToUse as new (\n context: ProvisioningComponent,\n props: unknown,\n options?: ResourceOptions,\n ) => Resource,\n loopInstance,\n context,\n baseProps,\n resourceOptions,\n );\n } else if (Ctor === undefined) {\n handle = new Resource(context, baseProps as any, resourceOptions);\n } else {\n const { type: _t, apiVersion: _v, ...classProps } = baseProps;\n handle = new Ctor(context, classProps, resourceOptions);\n }\n\n if (authoring?.condition !== undefined) {\n const state = unwrapResourceHandle(handle) as unknown as Record<string, unknown>;\n state.condition = authoring.condition;\n }\n\n return handle;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction objBody(node: ExpressionNode): Record<string, ExpressionNode> | undefined {\n if (node.kind === \"object\") return node.value;\n if (node.kind === \"if-condition\") return objBody(node.body);\n if (node.kind === \"for-expression\") return objBody(node.body);\n return undefined;\n}\n\nfunction stemName(fileName: string): string {\n return fileName.replace(/\\.bicep$/, \"\");\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,4 @@
1
+ import type { ValueEncodingDescriptor } from "../../shape/value-encoding.js";
2
+ export declare function encodeWireValue(value: unknown, encoding: ValueEncodingDescriptor, path?: readonly string[]): unknown;
3
+ export declare function decodeWireValue(value: unknown, encoding: ValueEncodingDescriptor, path?: readonly string[]): unknown;
4
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/encoding.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAOV,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,uBAAuB,EACjC,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,OAAO,CA8BT;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,uBAAuB,EACjC,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,OAAO,CAiCT"}