@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,334 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /**
4
+ * ARM state-shape conversion.
5
+ *
6
+ * lowerState maps JS property names to ARM paths, restores flattened
7
+ * nesting, and encodes terminal values using the supplied model shape.
8
+ * raiseState performs the inverse conversion for deserialization.
9
+ * Both follow nested model, array, and record shapes and preserve unknown
10
+ * keys. Property-access expression lowering lives in expression.ts.
11
+ */
12
+ import { isTerminalValueShape, resolveModelShape, } from "../../shape/shape.js";
13
+ import { isExpression } from "../../expression/expressions.js";
14
+ import { isExpressionNode } from "../../expression/ast-nodes.js";
15
+ import { decodeWireValue, encodeWireValue } from "./encoding.js";
16
+ const MISSING = Symbol("missing");
17
+ function assertNeverValueShape(shape) {
18
+ throw new Error(`Unhandled value shape: ${String(shape)}`);
19
+ }
20
+ // ---------------------------------------------------------------------------
21
+ // State lowering
22
+ // ---------------------------------------------------------------------------
23
+ function isPlainObject(value) {
24
+ if (value === null || typeof value !== "object")
25
+ return false;
26
+ // Expression proxies are opaque values (despite a null prototype) — they
27
+ // must not be treated as cloneable plain objects.
28
+ if (isExpression(value))
29
+ return false;
30
+ const proto = Object.getPrototypeOf(value);
31
+ return proto === Object.prototype || proto === null;
32
+ }
33
+ /**
34
+ * Recursively rewrite a raw state object into its ARM wire shape. Keys
35
+ * not present in `shape.byJsName` pass through unchanged. Multi-
36
+ * segment ARM paths (from `@flattenProperty`) re-nest objects; nested
37
+ * models, arrays-of-models and records-of-models recurse via
38
+ * `target`. Empty ARM paths fall back to the JS property name.
39
+ *
40
+ * Collisions where two JS-side keys map to overlapping ARM paths merge
41
+ * when both sides are compatible objects; non-object / object collisions
42
+ * throw.
43
+ */
44
+ export function lowerState(state, shape, visited = new WeakSet()) {
45
+ if (visited.has(state)) {
46
+ throw new Error("Cycle detected while lowering ARM state.");
47
+ }
48
+ visited.add(state);
49
+ try {
50
+ const out = Object.create(null);
51
+ // Select the variant once, from the state we're about to lower —
52
+ // every key below is looked up against that one concrete shape.
53
+ const flat = resolveModelShape(shape, state, "js");
54
+ for (const [jsKey, rawValue] of Object.entries(state)) {
55
+ const propShape = flat?.byJsName[jsKey];
56
+ const path = propShape?.armPath.length ? propShape.armPath : [jsKey];
57
+ const loweredValue = lowerValue(rawValue, propShape?.value, visited, path);
58
+ if (!propShape) {
59
+ // Passthrough: key not in shape (e.g. CDK-internal, or emitter
60
+ // didn't include it).
61
+ assignPath(out, [jsKey], loweredValue);
62
+ continue;
63
+ }
64
+ assignPath(out, path, loweredValue);
65
+ }
66
+ return out;
67
+ }
68
+ finally {
69
+ visited.delete(state);
70
+ }
71
+ }
72
+ function lowerValue(value, shape, visited, path) {
73
+ if (value === null || value === undefined)
74
+ return value;
75
+ if (isExpression(value) || isExpressionNode(value))
76
+ return value;
77
+ if (!shape) {
78
+ return value;
79
+ }
80
+ if (isTerminalValueShape(shape)) {
81
+ if ("encoding" in shape && shape.encoding) {
82
+ return encodeWireValue(value, shape.encoding, path);
83
+ }
84
+ return value;
85
+ }
86
+ switch (shape.kind) {
87
+ case "deferred":
88
+ if (!isPlainObject(value))
89
+ return value;
90
+ // `lowerState` resolves the variant itself, per property, using
91
+ // `value` as the discriminator source.
92
+ return lowerState(value, shape.value(), visited);
93
+ case "array":
94
+ if (!Array.isArray(value))
95
+ return value;
96
+ return value.map((item, index) => lowerValue(item, shape.element, visited, [...path, String(index)]));
97
+ case "record": {
98
+ if (!isPlainObject(value))
99
+ return value;
100
+ const out = Object.create(null);
101
+ for (const [k, v] of Object.entries(value)) {
102
+ defineOwn(out, k, lowerValue(v, shape.value, visited, [...path, k]));
103
+ }
104
+ return out;
105
+ }
106
+ case "tuple":
107
+ if (!Array.isArray(value))
108
+ return value;
109
+ return value.map((item, index) => lowerValue(item, shape.values[index], visited, [...path, String(index)]));
110
+ default:
111
+ return assertNeverValueShape(shape);
112
+ }
113
+ }
114
+ /**
115
+ * Write `value` into `target` at the given ARM path, deep-merging with
116
+ * existing object values. Throws on non-object/object or
117
+ * object/non-object collisions.
118
+ */
119
+ function assignPath(target, path, value) {
120
+ if (path.length === 0)
121
+ return;
122
+ let cursor = target;
123
+ for (let i = 0; i < path.length - 1; i++) {
124
+ const seg = path[i];
125
+ const existing = Object.prototype.hasOwnProperty.call(cursor, seg) ? cursor[seg] : undefined;
126
+ if (existing === undefined) {
127
+ const next = Object.create(null);
128
+ defineOwn(cursor, seg, next);
129
+ cursor = next;
130
+ }
131
+ else if (isPlainObject(existing)) {
132
+ cursor = existing;
133
+ }
134
+ else {
135
+ throw new Error(`ARM path collision at "${path.slice(0, i + 1).join(".")}": expected object, got ${typeof existing}.`);
136
+ }
137
+ }
138
+ const leafKey = path[path.length - 1];
139
+ const existingLeaf = Object.prototype.hasOwnProperty.call(cursor, leafKey)
140
+ ? cursor[leafKey]
141
+ : undefined;
142
+ if (existingLeaf === undefined) {
143
+ defineOwn(cursor, leafKey, value);
144
+ return;
145
+ }
146
+ if (isPlainObject(existingLeaf) && isPlainObject(value)) {
147
+ defineOwn(cursor, leafKey, deepMerge(existingLeaf, value, path));
148
+ return;
149
+ }
150
+ throw new Error(`ARM path collision at "${path.join(".")}": cannot merge ${typeof existingLeaf} with ${typeof value}.`);
151
+ }
152
+ function deepMerge(a, b, prefix) {
153
+ const out = Object.create(null);
154
+ for (const [key, value] of Object.entries(a))
155
+ defineOwn(out, key, value);
156
+ for (const [k, v] of Object.entries(b)) {
157
+ const existing = Object.prototype.hasOwnProperty.call(out, k) ? out[k] : undefined;
158
+ if (existing === undefined) {
159
+ defineOwn(out, k, v);
160
+ continue;
161
+ }
162
+ if (isPlainObject(existing) && isPlainObject(v)) {
163
+ defineOwn(out, k, deepMerge(existing, v, [
164
+ ...prefix,
165
+ k,
166
+ ]));
167
+ continue;
168
+ }
169
+ throw new Error(`ARM path collision at "${[...prefix, k].join(".")}": cannot merge ${typeof existing} with ${typeof v}.`);
170
+ }
171
+ return out;
172
+ }
173
+ function defineOwn(target, key, value) {
174
+ Object.defineProperty(target, key, {
175
+ value,
176
+ enumerable: true,
177
+ configurable: true,
178
+ writable: true,
179
+ });
180
+ }
181
+ // ---------------------------------------------------------------------------
182
+ // State raising (inverse of lowerState)
183
+ // ---------------------------------------------------------------------------
184
+ /**
185
+ * Inverse of `lowerState`: walks a wire-shape state object and lifts
186
+ * values at each property entry's `armPath` back onto the flat
187
+ * `jsName` key. Recurses into nested model / array / record values via
188
+ * `target`. Empty ARM paths fall back to the JS property name.
189
+ *
190
+ * ARM-shape keys that consumed a nested object entirely (single-segment
191
+ * paths carrying a model `target`) pop that segment from the source
192
+ * so leftovers at intermediate nodes don't silently leak into the
193
+ * output. For multi-segment paths (`@flattenProperty`), only the leaf
194
+ * is extracted; intermediate shared objects may survive as their own
195
+ * top-level entries if the shape also declares a jsName for them.
196
+ *
197
+ * Keys present in the state but not consumed by any property entry
198
+ * pass through unchanged (preserving the "unknown key" escape hatch
199
+ * documented in `lowerState`).
200
+ */
201
+ export function raiseState(state, shape, visited = new WeakSet()) {
202
+ if (visited.has(state)) {
203
+ throw new Error("Cycle detected while raising ARM state.");
204
+ }
205
+ visited.add(state);
206
+ try {
207
+ // Wire-shaped input, so the variant is selected against ARM keys.
208
+ const flat = resolveModelShape(shape, state, "arm");
209
+ if (!flat)
210
+ return structuredCloneLike(state, new WeakSet());
211
+ // Clone into a mutable working copy so we can prune consumed paths.
212
+ const working = structuredCloneLike(state, new WeakSet());
213
+ const out = Object.create(null);
214
+ const consumedTopLevel = new Set();
215
+ for (const [jsName, propShape] of Object.entries(flat.byJsName)) {
216
+ const path = propShape.armPath.length > 0 ? propShape.armPath : [jsName];
217
+ const extracted = extractPath(working, path);
218
+ if (extracted === MISSING)
219
+ continue;
220
+ const raised = raiseValue(extracted, propShape.value, visited, path);
221
+ defineOwn(out, jsName, raised);
222
+ consumedTopLevel.add(path[0]);
223
+ }
224
+ // Passthrough: anything left in `working` that wasn't consumed by a
225
+ // shape-driven extraction and doesn't collide with an already-
226
+ // placed jsName.
227
+ for (const [k, v] of Object.entries(working)) {
228
+ if (consumedTopLevel.has(k)) {
229
+ // Top-level segment was touched by at least one armPath. If
230
+ // residue remains (e.g. sibling properties the shape didn't
231
+ // cover), surface it under the original ARM key so it's not
232
+ // silently dropped.
233
+ if (isPlainObject(v) && Object.keys(v).length === 0)
234
+ continue;
235
+ if (v === undefined)
236
+ continue;
237
+ }
238
+ if (Object.prototype.hasOwnProperty.call(out, k))
239
+ continue;
240
+ defineOwn(out, k, v);
241
+ }
242
+ return out;
243
+ }
244
+ finally {
245
+ visited.delete(state);
246
+ }
247
+ }
248
+ function raiseValue(value, shape, visited, path) {
249
+ if (value === null || value === undefined)
250
+ return value;
251
+ if (isExpression(value) || isExpressionNode(value))
252
+ return value;
253
+ if (!shape)
254
+ return value;
255
+ if (isTerminalValueShape(shape)) {
256
+ if ("encoding" in shape && shape.encoding) {
257
+ return decodeWireValue(value, shape.encoding, path);
258
+ }
259
+ return value;
260
+ }
261
+ switch (shape.kind) {
262
+ case "deferred":
263
+ if (!isPlainObject(value))
264
+ return value;
265
+ // `raiseState` selects the variant itself, against ARM keys.
266
+ return raiseState(value, shape.value(), visited);
267
+ case "array":
268
+ if (!Array.isArray(value))
269
+ return value;
270
+ return value.map((item, index) => raiseValue(item, shape.element, visited, [...path, String(index)]));
271
+ case "record": {
272
+ if (!isPlainObject(value))
273
+ return value;
274
+ const out = Object.create(null);
275
+ for (const [k, v] of Object.entries(value)) {
276
+ defineOwn(out, k, raiseValue(v, shape.value, visited, [...path, k]));
277
+ }
278
+ return out;
279
+ }
280
+ case "tuple":
281
+ if (!Array.isArray(value))
282
+ return value;
283
+ return value.map((item, index) => raiseValue(item, shape.values[index], visited, [...path, String(index)]));
284
+ default:
285
+ return assertNeverValueShape(shape);
286
+ }
287
+ }
288
+ /**
289
+ * Walk `obj` along `path`, returning the leaf value and pruning it
290
+ * from the tree. Empty intermediate objects are left in place (caller
291
+ * decides how to treat residue).
292
+ *
293
+ * Returns `MISSING` when any segment is absent or not a plain object.
294
+ */
295
+ function extractPath(obj, path) {
296
+ if (path.length === 0)
297
+ return obj;
298
+ let cursor = obj;
299
+ for (let i = 0; i < path.length - 1; i++) {
300
+ const seg = path[i];
301
+ const next = Object.prototype.hasOwnProperty.call(cursor, seg) ? cursor[seg] : undefined;
302
+ if (!isPlainObject(next))
303
+ return MISSING;
304
+ cursor = next;
305
+ }
306
+ const leafKey = path[path.length - 1];
307
+ if (!Object.prototype.hasOwnProperty.call(cursor, leafKey))
308
+ return MISSING;
309
+ const value = cursor[leafKey];
310
+ delete cursor[leafKey];
311
+ return value;
312
+ }
313
+ /**
314
+ * Shallow-clone recursively enough to avoid mutating caller state.
315
+ * We only copy plain objects; arrays and other values are shared
316
+ * (raiseValue handles arrays via `.map` so mutation is contained).
317
+ */
318
+ function structuredCloneLike(value, seen) {
319
+ if (seen.has(value)) {
320
+ // Preserve the cycle for downstream detection in raiseState.
321
+ return value;
322
+ }
323
+ seen.add(value);
324
+ const out = Object.create(null);
325
+ for (const [k, v] of Object.entries(value)) {
326
+ defineOwn(out, k, isExpression(v) || isExpressionNode(v)
327
+ ? v
328
+ : isPlainObject(v)
329
+ ? structuredCloneLike(v, seen)
330
+ : v);
331
+ }
332
+ return out;
333
+ }
334
+ //# sourceMappingURL=lower.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lower.js","sourceRoot":"","sources":["../../../../src/serialization/json/lower.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * ARM state-shape conversion.\n *\n * lowerState maps JS property names to ARM paths, restores flattened\n * nesting, and encodes terminal values using the supplied model shape.\n * raiseState performs the inverse conversion for deserialization.\n * Both follow nested model, array, and record shapes and preserve unknown\n * keys. Property-access expression lowering lives in expression.ts.\n */\n\nimport {\n isTerminalValueShape,\n type ModelShape,\n type ValueShape,\n resolveModelShape,\n} from \"../../shape/shape.js\";\nimport { isExpression } from \"../../expression/expressions.js\";\nimport { isExpressionNode } from \"../../expression/ast-nodes.js\";\nimport { decodeWireValue, encodeWireValue } from \"./encoding.js\";\n\nconst MISSING = Symbol(\"missing\");\n\nfunction assertNeverValueShape(shape: never): never {\n throw new Error(`Unhandled value shape: ${String(shape)}`);\n}\n\n// ---------------------------------------------------------------------------\n// State lowering\n// ---------------------------------------------------------------------------\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\") return false;\n // Expression proxies are opaque values (despite a null prototype) — they\n // must not be treated as cloneable plain objects.\n if (isExpression(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\n/**\n * Recursively rewrite a raw state object into its ARM wire shape. Keys\n * not present in `shape.byJsName` pass through unchanged. Multi-\n * segment ARM paths (from `@flattenProperty`) re-nest objects; nested\n * models, arrays-of-models and records-of-models recurse via\n * `target`. Empty ARM paths fall back to the JS property name.\n *\n * Collisions where two JS-side keys map to overlapping ARM paths merge\n * when both sides are compatible objects; non-object / object collisions\n * throw.\n */\nexport function lowerState(\n state: Record<string, unknown>,\n shape: ModelShape,\n visited: WeakSet<object> = new WeakSet(),\n): Record<string, unknown> {\n if (visited.has(state)) {\n throw new Error(\"Cycle detected while lowering ARM state.\");\n }\n visited.add(state);\n try {\n const out: Record<string, unknown> = Object.create(null);\n // Select the variant once, from the state we're about to lower —\n // every key below is looked up against that one concrete shape.\n const flat = resolveModelShape(shape, state, \"js\");\n\n for (const [jsKey, rawValue] of Object.entries(state)) {\n const propShape = flat?.byJsName[jsKey];\n const path = propShape?.armPath.length ? propShape.armPath : [jsKey];\n const loweredValue = lowerValue(rawValue, propShape?.value, visited, path);\n\n if (!propShape) {\n // Passthrough: key not in shape (e.g. CDK-internal, or emitter\n // didn't include it).\n assignPath(out, [jsKey], loweredValue);\n continue;\n }\n\n assignPath(out, path, loweredValue);\n }\n\n return out;\n } finally {\n visited.delete(state);\n }\n}\n\nfunction lowerValue(\n value: unknown,\n shape: ValueShape | undefined,\n visited: WeakSet<object>,\n path: readonly string[],\n): unknown {\n if (value === null || value === undefined) return value;\n if (isExpression(value) || isExpressionNode(value)) return value;\n\n if (!shape) {\n return value;\n }\n\n if (isTerminalValueShape(shape)) {\n if (\"encoding\" in shape && shape.encoding) {\n return encodeWireValue(value, shape.encoding, path);\n }\n return value;\n }\n\n switch (shape.kind) {\n case \"deferred\":\n if (!isPlainObject(value)) return value;\n // `lowerState` resolves the variant itself, per property, using\n // `value` as the discriminator source.\n return lowerState(value, shape.value(), visited);\n case \"array\":\n if (!Array.isArray(value)) return value;\n return value.map((item, index) =>\n lowerValue(item, shape.element, visited, [...path, String(index)]),\n );\n case \"record\": {\n if (!isPlainObject(value)) return value;\n const out: Record<string, unknown> = Object.create(null);\n for (const [k, v] of Object.entries(value)) {\n defineOwn(out, k, lowerValue(v, shape.value, visited, [...path, k]));\n }\n return out;\n }\n case \"tuple\":\n if (!Array.isArray(value)) return value;\n return value.map((item, index) =>\n lowerValue(item, shape.values[index], visited, [...path, String(index)]),\n );\n default:\n return assertNeverValueShape(shape);\n }\n}\n\n/**\n * Write `value` into `target` at the given ARM path, deep-merging with\n * existing object values. Throws on non-object/object or\n * object/non-object collisions.\n */\nfunction assignPath(\n target: Record<string, unknown>,\n path: readonly string[],\n value: unknown,\n): void {\n if (path.length === 0) return;\n\n let cursor = target;\n for (let i = 0; i < path.length - 1; i++) {\n const seg = path[i]!;\n const existing = Object.prototype.hasOwnProperty.call(cursor, seg) ? cursor[seg] : undefined;\n if (existing === undefined) {\n const next: Record<string, unknown> = Object.create(null);\n defineOwn(cursor, seg, next);\n cursor = next;\n } else if (isPlainObject(existing)) {\n cursor = existing;\n } else {\n throw new Error(\n `ARM path collision at \"${path.slice(0, i + 1).join(\".\")}\": expected object, got ${typeof existing}.`,\n );\n }\n }\n\n const leafKey = path[path.length - 1]!;\n const existingLeaf = Object.prototype.hasOwnProperty.call(cursor, leafKey)\n ? cursor[leafKey]\n : undefined;\n if (existingLeaf === undefined) {\n defineOwn(cursor, leafKey, value);\n return;\n }\n\n if (isPlainObject(existingLeaf) && isPlainObject(value)) {\n defineOwn(\n cursor,\n leafKey,\n deepMerge(existingLeaf as Record<string, unknown>, value as Record<string, unknown>, path),\n );\n return;\n }\n\n throw new Error(\n `ARM path collision at \"${path.join(\".\")}\": cannot merge ${typeof existingLeaf} with ${typeof value}.`,\n );\n}\n\nfunction deepMerge(\n a: Record<string, unknown>,\n b: Record<string, unknown>,\n prefix: readonly string[],\n): Record<string, unknown> {\n const out: Record<string, unknown> = Object.create(null);\n for (const [key, value] of Object.entries(a)) defineOwn(out, key, value);\n for (const [k, v] of Object.entries(b)) {\n const existing = Object.prototype.hasOwnProperty.call(out, k) ? out[k] : undefined;\n if (existing === undefined) {\n defineOwn(out, k, v);\n continue;\n }\n if (isPlainObject(existing) && isPlainObject(v)) {\n defineOwn(\n out,\n k,\n deepMerge(existing as Record<string, unknown>, v as Record<string, unknown>, [\n ...prefix,\n k,\n ]),\n );\n continue;\n }\n throw new Error(\n `ARM path collision at \"${[...prefix, k].join(\".\")}\": cannot merge ${typeof existing} with ${typeof v}.`,\n );\n }\n return out;\n}\n\nfunction defineOwn(target: Record<string, unknown>, key: string, value: unknown): void {\n Object.defineProperty(target, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n}\n\n// ---------------------------------------------------------------------------\n// State raising (inverse of lowerState)\n// ---------------------------------------------------------------------------\n\n/**\n * Inverse of `lowerState`: walks a wire-shape state object and lifts\n * values at each property entry's `armPath` back onto the flat\n * `jsName` key. Recurses into nested model / array / record values via\n * `target`. Empty ARM paths fall back to the JS property name.\n *\n * ARM-shape keys that consumed a nested object entirely (single-segment\n * paths carrying a model `target`) pop that segment from the source\n * so leftovers at intermediate nodes don't silently leak into the\n * output. For multi-segment paths (`@flattenProperty`), only the leaf\n * is extracted; intermediate shared objects may survive as their own\n * top-level entries if the shape also declares a jsName for them.\n *\n * Keys present in the state but not consumed by any property entry\n * pass through unchanged (preserving the \"unknown key\" escape hatch\n * documented in `lowerState`).\n */\nexport function raiseState(\n state: Record<string, unknown>,\n shape: ModelShape,\n visited: WeakSet<object> = new WeakSet(),\n): Record<string, unknown> {\n if (visited.has(state)) {\n throw new Error(\"Cycle detected while raising ARM state.\");\n }\n visited.add(state);\n try {\n // Wire-shaped input, so the variant is selected against ARM keys.\n const flat = resolveModelShape(shape, state, \"arm\");\n if (!flat) return structuredCloneLike(state, new WeakSet());\n\n // Clone into a mutable working copy so we can prune consumed paths.\n const working: Record<string, unknown> = structuredCloneLike(state, new WeakSet());\n const out: Record<string, unknown> = Object.create(null);\n const consumedTopLevel = new Set<string>();\n\n for (const [jsName, propShape] of Object.entries(flat.byJsName)) {\n const path = propShape.armPath.length > 0 ? propShape.armPath : [jsName];\n const extracted = extractPath(working, path);\n if (extracted === MISSING) continue;\n\n const raised = raiseValue(extracted, propShape.value, visited, path);\n defineOwn(out, jsName, raised);\n\n consumedTopLevel.add(path[0]!);\n }\n\n // Passthrough: anything left in `working` that wasn't consumed by a\n // shape-driven extraction and doesn't collide with an already-\n // placed jsName.\n for (const [k, v] of Object.entries(working)) {\n if (consumedTopLevel.has(k)) {\n // Top-level segment was touched by at least one armPath. If\n // residue remains (e.g. sibling properties the shape didn't\n // cover), surface it under the original ARM key so it's not\n // silently dropped.\n if (isPlainObject(v) && Object.keys(v).length === 0) continue;\n if (v === undefined) continue;\n }\n if (Object.prototype.hasOwnProperty.call(out, k)) continue;\n defineOwn(out, k, v);\n }\n\n return out;\n } finally {\n visited.delete(state);\n }\n}\n\nfunction raiseValue(\n value: unknown,\n shape: ValueShape | undefined,\n visited: WeakSet<object>,\n path: readonly string[],\n): unknown {\n if (value === null || value === undefined) return value;\n if (isExpression(value) || isExpressionNode(value)) return value;\n if (!shape) return value;\n\n if (isTerminalValueShape(shape)) {\n if (\"encoding\" in shape && shape.encoding) {\n return decodeWireValue(value, shape.encoding, path);\n }\n return value;\n }\n\n switch (shape.kind) {\n case \"deferred\":\n if (!isPlainObject(value)) return value;\n // `raiseState` selects the variant itself, against ARM keys.\n return raiseState(value, shape.value(), visited);\n case \"array\":\n if (!Array.isArray(value)) return value;\n return value.map((item, index) =>\n raiseValue(item, shape.element, visited, [...path, String(index)]),\n );\n case \"record\": {\n if (!isPlainObject(value)) return value;\n const out: Record<string, unknown> = Object.create(null);\n for (const [k, v] of Object.entries(value)) {\n defineOwn(out, k, raiseValue(v, shape.value, visited, [...path, k]));\n }\n return out;\n }\n case \"tuple\":\n if (!Array.isArray(value)) return value;\n return value.map((item, index) =>\n raiseValue(item, shape.values[index], visited, [...path, String(index)]),\n );\n default:\n return assertNeverValueShape(shape);\n }\n}\n\n/**\n * Walk `obj` along `path`, returning the leaf value and pruning it\n * from the tree. Empty intermediate objects are left in place (caller\n * decides how to treat residue).\n *\n * Returns `MISSING` when any segment is absent or not a plain object.\n */\nfunction extractPath(obj: Record<string, unknown>, path: readonly string[]): unknown {\n if (path.length === 0) return obj;\n\n let cursor: Record<string, unknown> = obj;\n for (let i = 0; i < path.length - 1; i++) {\n const seg = path[i]!;\n const next = Object.prototype.hasOwnProperty.call(cursor, seg) ? cursor[seg] : undefined;\n if (!isPlainObject(next)) return MISSING;\n cursor = next;\n }\n\n const leafKey = path[path.length - 1]!;\n if (!Object.prototype.hasOwnProperty.call(cursor, leafKey)) return MISSING;\n const value = cursor[leafKey];\n delete cursor[leafKey];\n return value;\n}\n\n/**\n * Shallow-clone recursively enough to avoid mutating caller state.\n * We only copy plain objects; arrays and other values are shared\n * (raiseValue handles arrays via `.map` so mutation is contained).\n */\nfunction structuredCloneLike(\n value: Record<string, unknown>,\n seen: WeakSet<object>,\n): Record<string, unknown> {\n if (seen.has(value)) {\n // Preserve the cycle for downstream detection in raiseState.\n return value;\n }\n seen.add(value);\n const out: Record<string, unknown> = Object.create(null);\n for (const [k, v] of Object.entries(value)) {\n defineOwn(\n out,\n k,\n isExpression(v) || isExpressionNode(v)\n ? v\n : isPlainObject(v)\n ? structuredCloneLike(v, seen)\n : v,\n );\n }\n return out;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import pluralizeLib from "pluralize";
2
+ export default pluralizeLib;
3
+ //# sourceMappingURL=pluralize-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluralize-config.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/pluralize-config.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,MAAM,WAAW,CAAC;AAKrC,eAAe,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import pluralizeLib from "pluralize";
4
+ pluralizeLib.addUncountableRule("redis");
5
+ pluralizeLib.addSingularRule(/(cache)s$/i, "$1");
6
+ export default pluralizeLib;
7
+ //# sourceMappingURL=pluralize-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluralize-config.js","sourceRoot":"","sources":["../../../../src/serialization/json/pluralize-config.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,YAAY,MAAM,WAAW,CAAC;AAErC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,YAAY,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAEjD,eAAe,YAAY,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport pluralizeLib from \"pluralize\";\n\npluralizeLib.addUncountableRule(\"redis\");\npluralizeLib.addSingularRule(/(cache)s$/i, \"$1\");\n\nexport default pluralizeLib;\n"]}
@@ -0,0 +1,12 @@
1
+ import type { Stack } from "../../constructs/stack.js";
2
+ import type { SerializationDocument } from "../contract/index.js";
3
+ /**
4
+ * Serializes a stack or a nonempty array of stacks into a JSON-compatible
5
+ * {@link SerializationDocument} with one `infras` entry per stack.
6
+ *
7
+ * The document preserves declarations and symbolic expressions for rendering
8
+ * or restoration. Pass `JSON.stringify(serialize(stack))` to {@link deserialize}
9
+ * to reconstruct the authored stack; this does not deploy any resources.
10
+ */
11
+ export declare function serialize(input: Stack | readonly Stack[]): SerializationDocument;
12
+ //# sourceMappingURL=serialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../../src/serialization/json/serialize.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAgBvD,OAAO,KAAK,EAQV,qBAAqB,EAEtB,MAAM,sBAAsB,CAAC;AA4b9B;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,qBAAqB,CAahF"}