@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 @@
1
+ {"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/expression/expressions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { navigateShape, type NavShape } from \"../shape/shape.js\";\nimport {\n arrayAccessExpressionNode,\n binaryExpressionNode,\n functionCallExpressionNode,\n propertyAccessExpressionNode,\n ternaryExpressionNode,\n type BinaryOperator,\n type ExpressionNode,\n type UnaryOperator,\n unaryExpressionNode,\n} from \"./ast-nodes.js\";\n\n// ---------------------------------------------------------------------------\n// Brand symbol (runtime + type-only)\n// ---------------------------------------------------------------------------\n\n/**\n * Runtime symbol key storing the underlying `ExpressionNode` on proxies.\n * Internal to the package — consumers should use `isExpression()` and\n * `unwrapExpression()` instead of accessing this directly.\n */\nexport const EXPRESSION_BRAND: unique symbol = Symbol(\"expression-brand\");\n\n/** Declared symbol type used in the `Expression<T>` interface for branding. */\ndeclare const __expressionBrand: unique symbol;\n\n// ---------------------------------------------------------------------------\n// Public opaque Expression<T> type\n// ---------------------------------------------------------------------------\n\nexport interface ExpressionBrand<out T> {\n readonly [__expressionBrand]: ExpressionNode<T>;\n}\n\n// Prevents TypeScript from simplifying `Expression<primitive>` down to\n// just `ExpressionBrand<primitive>` — keeps the alias name visible in hovers.\n// Symbol-keyed so it stays hidden from IntelliSense.\ndeclare const __expressionTag: unique symbol;\nexport interface ExpressionTag {\n readonly [__expressionTag]?: never;\n}\n\n/**\n * An opaque deploy-time expression wrapping type `T`.\n *\n * For object types, properties of `T` are accessible as\n * `Expression<Exclude<T[K], undefined>>`. Expression proxies always expose a\n * symbolic property path, so TypeScript's `undefined` omission marker does not\n * belong in the projected value type. Explicit `null` remains intact.\n * For array types, numeric indices return `Expression<element>` and\n * `.length` is an `Expression<number>`.\n *\n * Function-typed keys on `T` are intentionally NOT surfaced — an\n * `Expression<(...)=>R>` isn't callable at the type level or meaningful\n * at emit time. When bicep-level array/object methods are needed\n * (concat, union, etc.), they are added explicitly via dedicated helper\n * types (e.g. a future `ArrayExpression<T>`), not reflectively derived.\n *\n * `NonNullable<T>` is applied at the input boundary, so\n * `Expression<R | undefined>` yields the same structural surface as\n * `Expression<R>` — otherwise the `| undefined` union would distribute\n * and collapse the object branch into `mapped | {}`, erasing the\n * index signature / member projection.\n */\nexport type Expression<T = unknown> = ExpressionBrand<T> &\n ExpressionTag &\n ExpressionShape<NonNullable<T>>;\n\nexport type ExpressionShape<T> = T extends readonly unknown[]\n ? number extends T[\"length\"]\n ? {\n readonly length: Expression<number>;\n readonly [index: number]: Expression<T[number]>;\n }\n : {\n readonly [K in Exclude<keyof T, keyof any[]>]: Expression<T[K]>;\n } & {\n readonly length: Expression<number>;\n readonly [index: number]: Expression<T[number]>;\n }\n : T extends object\n ? {\n readonly [K in keyof T as T[K] extends (...a: any[]) => any ? never : K]-?: Expression<\n Exclude<T[K], undefined>\n >;\n }\n : {};\n\n// ---------------------------------------------------------------------------\n// Input-side types — optional-brand trick\n// ---------------------------------------------------------------------------\n\n/**\n * Carries an *optional* Expression brand on an Input-shaped interface.\n *\n * This is the asymmetric-brand trick that makes the Input type system\n * work without discriminated unions:\n *\n * - Every generated `*Input` interface extends `InputOf<Raw>` and therefore\n * inherits the optional brand. Plain literal values (e.g. `{ foo: 1 }`)\n * trivially satisfy it because the brand property is absent, which is\n * permitted by an optional field.\n * - `Expression<Raw>` carries a *required* brand of the same shape.\n * Required-fields-satisfy-optional is part of TS structural assignability,\n * so any `Expression<Raw>` is assignable where an `InputOf<Raw>`\n * (and thus any `*Input` that extends it) is expected.\n *\n * Net effect: a single `MInput` parameter accepts both literals and\n * whole-subtree `Expression<M>` replacements — no `MInput | Expression<M>`\n * union is needed in the generated signatures. Callers that want to\n * inspect whether a value is a literal or expression use `isExpression()`.\n */\nexport interface InputOf<out Raw> {\n readonly [__expressionBrand]?: ExpressionNode<Raw>;\n}\n\n/**\n * Writable input form for an array container.\n *\n * Accepts literal `T[]`, another `InputArray<T>`, or `Expression<Raw>`.\n * Deliberately NOT a subtype of `T[]` — passing a CDK-backed array to\n * an API that expects a plain `Array<T>` fails at compile time, which\n * is the correct signal (the value may actually be a Proxy wrapping an\n * `ExpressionNode`, not a real JS array).\n */\nexport interface InputArray<T, Raw = readonly T[]> extends InputOf<Raw> {\n length: number | Expression<number>;\n [index: number]: T;\n}\n\n/** Writable input form for a `Record<string, V>` container. */\nexport interface InputRecord<V, Raw = Record<string, V>> extends InputOf<Raw> {\n [key: string]: V;\n}\n\n/** Writable input form for a fixed-length heterogeneous tuple. */\nexport type InputTuple<\n T extends readonly unknown[],\n Raw extends readonly unknown[] = T,\n> = InputOf<Raw> & {\n length: T[\"length\"] | Expression<number>;\n [index: number]: T[number] | Expression<Raw[number]>;\n} & {\n [K in Exclude<keyof T, keyof any[]>]: T[K];\n};\n\n// ---------------------------------------------------------------------------\n// ExpressionOrValue\n// ---------------------------------------------------------------------------\n\n/**\n * Accepts either a plain value `T` or an `Expression<T>` substitution.\n *\n * Use this on scalar/leaf Input sites (primitives, enums, literal-only\n * unions) where a full `InputOf<...>` structural extension doesn't apply.\n * The result is a simple discriminated union; call `isExpression()` to\n * branch on the runtime shape.\n */\nexport type ExpressionOrValue<T> = T | Expression<T>;\n\n// ---------------------------------------------------------------------------\n// Discriminator escape hatch\n// ---------------------------------------------------------------------------\n\n/**\n * Asserts that a deploy-time expression resolves to a specific literal,\n * so it can be used where a discriminator is expected.\n *\n * Discriminator properties on a `@discriminator` model are typed as bare\n * literals (`kind: \"cache\"`) rather than `ExpressionOrValue<\"cache\">`.\n * That is deliberate: TypeScript only treats a property as a discriminant\n * when its type is a *unit* type in every constituent of the union, and a\n * single widened arm disables narrowing for the whole union — completions\n * then offer every variant's properties and excess-property checking\n * degrades to \"allowed if the property exists in any variant\".\n *\n * When the discriminator genuinely isn't known until deployment, wrap the\n * expression with this to state which variant you mean:\n *\n * ```ts snippet:ignore\n * widget.properties.primaryRule = {\n * kind: asDiscriminator(kindParam),\n * cacheKind: \"long\",\n * days: 7,\n * };\n * ```\n *\n * Every other property is still fully checked — only the discriminator's\n * type safety is waived. Note that the runtime cannot dispatch on a\n * non-literal discriminator, so serialization falls back to structural\n * variant inference; prefer a literal wherever possible.\n *\n * The literal is inferred from the expression's own type argument. If the\n * expression is loosely typed (`Expression<string>`), name the variant\n * explicitly: `asDiscriminator<\"cache\">(param)`.\n */\nexport function asDiscriminator<L extends string>(value: ExpressionOrValue<L>): L {\n return value as L;\n}\n\n// ---------------------------------------------------------------------------\n// Unwrap + type guards\n// ---------------------------------------------------------------------------\n\n// Two distinct concepts, two distinct guards:\n//\n// - `isExpression(x)` — \"is `x` a typed `Expression<T>` handle\n// (the value-level, proxy-backed form)?\"\n// - `isExpressionNode(x)` — \"is `x` a raw `ExpressionNode` data object\n// (one of the AST kinds)?\"\n//\n// These are *disjoint* — a value is either a wrapped Expression handle or a\n// raw AST node, never both. To check the AST kind of either form, narrow\n// via the discriminated `kind` field:\n//\n// if (isExpression(value)) {\n// const node = unwrapExpression(value);\n// if (node.kind === \"fn-call\") { /* node: FunctionCallExpressionNode */ }\n// }\n// if (isExpressionNode(value)) {\n// if (value.kind === \"binary\") { /* value: BinaryExpressionNode */ }\n// }\n\n/**\n * Extracts the underlying `ExpressionNode` from an `Expression<T>` value.\n *\n * `Expression<T>` is the public, typed handle for a deploy-time expression\n * (backed by a Proxy at runtime); `ExpressionNode` is the raw AST node that\n * the proxy wraps. Use this to walk / inspect / serialize the underlying\n * tree without reaching for the brand symbol directly.\n */\nexport function unwrapExpression<T>(expr: Expression<T>): ExpressionNode<T> {\n return (expr as unknown as { [EXPRESSION_BRAND]: ExpressionNode<T> })[EXPRESSION_BRAND];\n}\n\n/**\n * Tests whether a value is an `Expression<T>` — the typed, branded handle\n * for a deploy-time expression (proxy-backed). Returns false for raw\n * `ExpressionNode` data; use {@link isExpressionNode} from `./ast-nodes.js`\n * for that.\n */\nexport function isExpression(value: unknown): value is Expression<unknown> {\n return typeof value === \"object\" && value !== null && EXPRESSION_BRAND in value;\n}\n\n// ---------------------------------------------------------------------------\n// Expression proxy factory\n// ---------------------------------------------------------------------------\n\nexport function wrapExpression<T = unknown>(\n expression: ExpressionNode,\n nav?: NavShape,\n): Expression<T> {\n return new Proxy(Object.create(null) as Expression<T>, {\n get(_target, prop, _receiver) {\n if (prop === EXPRESSION_BRAND) {\n return expression;\n }\n\n if (prop === Symbol.toPrimitive || prop === \"toString\") {\n return () => \"[Expression]\";\n }\n\n if (prop === \"valueOf\") {\n return () => expression;\n }\n\n // Avoid being treated as a thenable / Promise\n if (prop === \"then\") {\n return undefined;\n }\n\n if (typeof prop === \"symbol\") {\n return undefined;\n }\n\n // Numeric string → array access.\n if (/^\\d+$/u.test(prop)) {\n const index = Number(prop);\n const step = navigateShape(nav, index);\n return wrapExpression(\n arrayAccessExpressionNode(expression as ExpressionNode, index),\n step.next,\n );\n }\n\n // String property → property access. Consult the current nav\n // shape; stamp the access with the wire armPath if an entry\n // exists, otherwise pass through unchanged. Container navs\n // (record/array) yield no stamp but still peel a layer.\n const step = navigateShape(nav, prop);\n return wrapExpression(\n propertyAccessExpressionNode(expression as ExpressionNode, prop, {\n armPath: step.stamp?.armPath,\n }),\n step.next,\n );\n },\n\n has(_target, prop) {\n return prop === EXPRESSION_BRAND;\n },\n\n ownKeys() {\n return [];\n },\n\n getOwnPropertyDescriptor(_target, prop) {\n if (prop === EXPRESSION_BRAND) {\n return {\n configurable: true,\n enumerable: false,\n value: expression,\n };\n }\n return undefined;\n },\n });\n}\n\nexport function wrapExpressionOver<TObject extends object, TValue = unknown>(\n target: TObject,\n expression: ExpressionNode,\n): TObject & Expression<TValue> {\n return new Proxy(target as TObject & Expression<TValue>, {\n get(backing, prop, receiver) {\n if (prop === EXPRESSION_BRAND) {\n return expression;\n }\n\n if (prop === Symbol.toPrimitive || prop === \"toString\") {\n return () => \"[Expression]\";\n }\n\n if (prop === \"valueOf\") {\n return () => expression;\n }\n\n if (prop === \"then\") {\n return undefined;\n }\n\n if (Reflect.has(backing, prop)) {\n return Reflect.get(backing, prop, receiver);\n }\n\n if (typeof prop === \"symbol\") {\n return undefined;\n }\n\n if (/^\\d+$/u.test(prop)) {\n return wrapExpression(\n arrayAccessExpressionNode(expression as ExpressionNode, Number(prop)),\n );\n }\n\n return wrapExpression(propertyAccessExpressionNode(expression as ExpressionNode, prop));\n },\n\n has(backing, prop) {\n return prop === EXPRESSION_BRAND || Reflect.has(backing, prop);\n },\n\n ownKeys(backing) {\n const keys = Reflect.ownKeys(backing);\n if (!keys.includes(EXPRESSION_BRAND)) {\n keys.push(EXPRESSION_BRAND);\n }\n return keys;\n },\n\n getOwnPropertyDescriptor(backing, prop) {\n if (prop === EXPRESSION_BRAND) {\n return {\n configurable: true,\n enumerable: false,\n value: expression,\n };\n }\n return Reflect.getOwnPropertyDescriptor(backing, prop);\n },\n });\n}\n\n// ---------------------------------------------------------------------------\n// Proxied-expression factories (return Expression<T>)\n// ---------------------------------------------------------------------------\n\nexport function createBinaryExpression<T>(\n op: BinaryOperator,\n left: unknown,\n right: unknown,\n): Expression<T> {\n return wrapExpression(binaryExpressionNode(op, left, right));\n}\n\nexport function createUnaryExpression<T>(op: UnaryOperator, argument: unknown): Expression<T> {\n return wrapExpression(unaryExpressionNode(op, argument));\n}\n\nexport function createTernaryExpression<T>(\n condition: unknown,\n trueValue: unknown,\n falseValue: unknown,\n): Expression<T> {\n return wrapExpression(ternaryExpressionNode(condition, trueValue, falseValue));\n}\n\nexport function createFunctionCallExpression<T>(name: string, args: unknown[]): Expression<T> {\n return wrapExpression(functionCallExpressionNode(name, args));\n}\n"]}
@@ -0,0 +1,194 @@
1
+ import { type Expression, type ExpressionOrValue } from "./expression/expressions.js";
2
+ /** Adds two numbers as a deploy-time expression. */
3
+ export declare function add(left: ExpressionOrValue<number>, right: ExpressionOrValue<number>): Expression<number>;
4
+ /** Subtracts the right operand from the left at deployment time. */
5
+ export declare function sub(left: ExpressionOrValue<number>, right: ExpressionOrValue<number>): Expression<number>;
6
+ /** Multiplies two numbers at deployment time. */
7
+ export declare function mul(left: ExpressionOrValue<number>, right: ExpressionOrValue<number>): Expression<number>;
8
+ /** Divides the left operand by the right at deployment time. */
9
+ export declare function div(left: ExpressionOrValue<number>, right: ExpressionOrValue<number>): Expression<number>;
10
+ /** Returns the remainder of dividing the left operand by the right. */
11
+ export declare function mod(left: ExpressionOrValue<number>, right: ExpressionOrValue<number>): Expression<number>;
12
+ /** Negates a number at deployment time. */
13
+ export declare function neg(value: ExpressionOrValue<number>): Expression<number>;
14
+ /** Tests whether two values are equal at deployment time. */
15
+ export declare function eq(left: ExpressionOrValue<unknown>, right: ExpressionOrValue<unknown>): Expression<boolean>;
16
+ /** Tests whether two values differ at deployment time. */
17
+ export declare function neq(left: ExpressionOrValue<unknown>, right: ExpressionOrValue<unknown>): Expression<boolean>;
18
+ /** Tests whether the left value is greater than the right value. */
19
+ export declare function gt(left: ExpressionOrValue<unknown>, right: ExpressionOrValue<unknown>): Expression<boolean>;
20
+ /** Tests whether the left value is less than the right value. */
21
+ export declare function lt(left: ExpressionOrValue<unknown>, right: ExpressionOrValue<unknown>): Expression<boolean>;
22
+ /** Tests whether the left value is greater than or equal to the right value. */
23
+ export declare function gte(left: ExpressionOrValue<unknown>, right: ExpressionOrValue<unknown>): Expression<boolean>;
24
+ /** Tests whether the left value is less than or equal to the right value. */
25
+ export declare function lte(left: ExpressionOrValue<unknown>, right: ExpressionOrValue<unknown>): Expression<boolean>;
26
+ /**
27
+ * Logical AND. Accepts 1 … N operands and folds left:
28
+ * `and(a, b, c)` → `(a && b) && c`
29
+ *
30
+ * A single operand is returned as an `Expression<boolean>` (identity).
31
+ */
32
+ export declare function and(...conditions: ExpressionOrValue<boolean>[]): Expression<boolean>;
33
+ /**
34
+ * Logical OR. Accepts 1 … N operands and folds left:
35
+ * `or(a, b, c)` → `(a || b) || c`
36
+ */
37
+ export declare function or(...conditions: ExpressionOrValue<boolean>[]): Expression<boolean>;
38
+ /** Negates a Boolean value at deployment time. */
39
+ export declare function not(value: ExpressionOrValue<boolean>): Expression<boolean>;
40
+ /** Selects one of two values based on a deploy-time condition. */
41
+ export declare function cond<T>(condition: ExpressionOrValue<boolean>, trueValue: ExpressionOrValue<T>, falseValue: ExpressionOrValue<T>): Expression<T>;
42
+ /** Returns the left value unless it is null, otherwise the right value. */
43
+ export declare function coalesce<T>(left: ExpressionOrValue<T>, right: ExpressionOrValue<T>): Expression<T>;
44
+ /** Concatenates strings and expressions in a tagged template. */
45
+ export declare function concat(strings: TemplateStringsArray, ...values: ExpressionOrValue<string>[]): Expression<string>;
46
+ /** Concatenates string values and expressions at deployment time. */
47
+ export declare function concat(...values: ExpressionOrValue<string>[]): Expression<string>;
48
+ /** Returns the first `count` characters of a string. */
49
+ export declare function take(value: ExpressionOrValue<string>, count: ExpressionOrValue<number>): Expression<string>;
50
+ /** Converts a string to lowercase at deployment time. */
51
+ export declare function toLower(value: ExpressionOrValue<string>): Expression<string>;
52
+ /** Converts a string to uppercase at deployment time. */
53
+ export declare function toUpper(value: ExpressionOrValue<string>): Expression<string>;
54
+ /** Returns part of a string, optionally starting at `start` for `count` characters. */
55
+ export declare function substring(value: ExpressionOrValue<string>, start?: ExpressionOrValue<number>, count?: ExpressionOrValue<number>): Expression<string>;
56
+ /** Replaces occurrences of `oldValue` with `newValue` in a string. */
57
+ export declare function replace(value: ExpressionOrValue<string>, oldValue: ExpressionOrValue<string>, newValue: ExpressionOrValue<string>): Expression<string>;
58
+ /** Splits a string into an array at each occurrence of `delimiter`. */
59
+ export declare function split(value: ExpressionOrValue<string>, delimiter: ExpressionOrValue<string>): Expression<string[]>;
60
+ /** Joins array elements into a string separated by `delimiter`. */
61
+ export declare function join(values: ExpressionOrValue<unknown[]>, delimiter: ExpressionOrValue<string>): Expression<string>;
62
+ /** Removes leading and trailing whitespace from a string. */
63
+ export declare function trim(value: ExpressionOrValue<string>): Expression<string>;
64
+ /** Tests whether a string begins with `prefix`. */
65
+ export declare function startsWith(value: ExpressionOrValue<string>, prefix: ExpressionOrValue<string>): Expression<boolean>;
66
+ /** Tests whether a string ends with `suffix`. */
67
+ export declare function endsWith(value: ExpressionOrValue<string>, suffix: ExpressionOrValue<string>): Expression<boolean>;
68
+ /** Encodes a string as Base64 at deployment time. */
69
+ export declare function base64(value: ExpressionOrValue<string>): Expression<string>;
70
+ /** Decodes Base64-encoded JSON into a value at deployment time. */
71
+ export declare function base64ToJson(value: ExpressionOrValue<string>): Expression<unknown>;
72
+ /** Formats a string using indexed placeholders and the supplied values. */
73
+ export declare function format(formatString: ExpressionOrValue<string>, ...values: ExpressionOrValue<unknown>[]): Expression<string>;
74
+ /** Returns the last index of `searchString` within a string. */
75
+ export declare function lastIndexOf(value: ExpressionOrValue<string>, searchString: ExpressionOrValue<string>): Expression<number>;
76
+ /** Creates a deterministic string from the supplied values. */
77
+ export declare function uniqueString(...values: ExpressionOrValue<string>[]): Expression<string>;
78
+ /** Creates a deterministic GUID from the supplied values. */
79
+ export declare function guid(...values: ExpressionOrValue<string>[]): Expression<string>;
80
+ /** Constructs a resource ID at the current deployment scope. */
81
+ export declare function resourceId(type: ExpressionOrValue<string>, ...names: ExpressionOrValue<string>[]): Expression<string>;
82
+ /** Constructs an ID for a subscription-scoped resource. */
83
+ export declare function subscriptionResourceId(type: ExpressionOrValue<string>, ...names: ExpressionOrValue<string>[]): Expression<string>;
84
+ /** Constructs an extension resource ID relative to `baseId`. */
85
+ export declare function extensionResourceId(baseId: ExpressionOrValue<string>, type: ExpressionOrValue<string>, ...names: ExpressionOrValue<string>[]): Expression<string>;
86
+ /** Converts a value to an integer at deployment time. */
87
+ export declare function int(value: ExpressionOrValue<unknown>): Expression<number>;
88
+ /** Returns the smallest of the supplied numbers. */
89
+ export declare function min(...values: ExpressionOrValue<number>[]): Expression<number>;
90
+ /** Returns the largest of the supplied numbers. */
91
+ export declare function max(...values: ExpressionOrValue<number>[]): Expression<number>;
92
+ /** Returns the length of a string, array, or object at deployment time. */
93
+ export declare function length(value: ExpressionOrValue<unknown>): Expression<number>;
94
+ /** Tests whether a string, array, or object is empty. */
95
+ export declare function empty(value: ExpressionOrValue<unknown>): Expression<boolean>;
96
+ /** Returns the first element of an array. */
97
+ export declare function first<T>(arr: ExpressionOrValue<T[]>): Expression<T>;
98
+ /** Returns the last element of an array. */
99
+ export declare function last<T>(arr: ExpressionOrValue<T[]>): Expression<T>;
100
+ /** Tests whether a string, array, or object contains a value or key. */
101
+ export declare function contains(container: ExpressionOrValue<unknown>, value: ExpressionOrValue<unknown>): Expression<boolean>;
102
+ /** Returns the first index of `value` in an array, or -1 if absent. */
103
+ export declare function indexOf<T>(arr: ExpressionOrValue<T[]>, value: ExpressionOrValue<T>): Expression<number>;
104
+ /** Flattens one level of nested arrays. */
105
+ export declare function flatten<T>(arr: ExpressionOrValue<T[][]>): Expression<T[]>;
106
+ /** Returns the intersection of two arrays or objects. */
107
+ export declare function intersect<T, U>(a: ExpressionOrValue<T>, b: ExpressionOrValue<U>): Expression<T & U>;
108
+ /** Returns the union of two arrays, with elements from either input. */
109
+ export declare function union<TElement, UElement>(a: ExpressionOrValue<readonly TElement[]>, b: ExpressionOrValue<readonly UElement[]>): Expression<(TElement | UElement)[]>;
110
+ /** Returns the union of two objects, with properties from both inputs. */
111
+ export declare function union<T extends object, U extends object>(a: T extends readonly unknown[] ? never : ExpressionOrValue<T>, b: U extends readonly unknown[] ? never : ExpressionOrValue<U>): Expression<T & U>;
112
+ /** Skips the first `count` elements of an array. */
113
+ export declare function skip<T>(arr: ExpressionOrValue<T[]>, count: ExpressionOrValue<number>): Expression<T[]>;
114
+ /** Returns an array's elements in reverse order. */
115
+ export declare function reverse<T>(arr: ExpressionOrValue<T[]>): Expression<T[]>;
116
+ /** Parses JSON text into a deploy-time value. */
117
+ export declare function json(value: ExpressionOrValue<string>): Expression<unknown>;
118
+ /** Returns the property names of an object. */
119
+ export declare function objectKeys(obj: ExpressionOrValue<object>): Expression<string[]>;
120
+ /** Returns an object's key/value pairs as an array. */
121
+ export declare function items(obj: ExpressionOrValue<object>): Expression<unknown[]>;
122
+ /**
123
+ * Typed shape of Bicep's `subscription()` runtime function. Only the
124
+ * properties currently surfaced are listed; extend as needed.
125
+ */
126
+ export interface SubscriptionScope {
127
+ readonly subscriptionId: string;
128
+ readonly tenantId: string;
129
+ }
130
+ /**
131
+ * Typed shape of Bicep's `resourceGroup()` runtime function. Only the
132
+ * properties currently surfaced are listed; extend as needed.
133
+ */
134
+ export interface ResourceGroupScope {
135
+ readonly name: string;
136
+ readonly location: string;
137
+ readonly id: string;
138
+ }
139
+ /**
140
+ * Typed shape of Bicep's `tenant()` runtime function. Only the properties
141
+ * currently surfaced are listed; extend as needed.
142
+ */
143
+ export interface TenantScope {
144
+ readonly tenantId: string;
145
+ readonly id: string;
146
+ }
147
+ /**
148
+ * Typed shape of Bicep's `managementGroup()` runtime function. Only the
149
+ * properties currently surfaced are listed; extend as needed.
150
+ */
151
+ export interface ManagementGroupScope {
152
+ readonly name: string;
153
+ readonly id: string;
154
+ }
155
+ /**
156
+ * Bicep `subscription()` / `subscription(subscriptionId)`.
157
+ *
158
+ * - Zero-arg form returns details about the current subscription.
159
+ * - One-arg form returns a scope object for setting `scope:` on a module
160
+ * or extension resource.
161
+ */
162
+ export declare function subscription(): Expression<SubscriptionScope>;
163
+ export declare function subscription(subscriptionId: ExpressionOrValue<string>): Expression<SubscriptionScope>;
164
+ /**
165
+ * Bicep `resourceGroup()` / `resourceGroup(name)` /
166
+ * `resourceGroup(subscriptionId, name)`.
167
+ *
168
+ * - Zero-arg form returns details about the current resource group.
169
+ * - One- and two-arg forms return a scope object for setting `scope:` on a
170
+ * module or extension resource.
171
+ */
172
+ export declare function resourceGroup(): Expression<ResourceGroupScope>;
173
+ export declare function resourceGroup(name: ExpressionOrValue<string>): Expression<ResourceGroupScope>;
174
+ export declare function resourceGroup(subscriptionId: ExpressionOrValue<string>, name: ExpressionOrValue<string>): Expression<ResourceGroupScope>;
175
+ /**
176
+ * Bicep `tenant()`. Returns details about the current tenant (or a scope
177
+ * object when placed in `scope:`). Takes no arguments.
178
+ */
179
+ export declare function tenant(): Expression<TenantScope>;
180
+ /**
181
+ * Bicep `managementGroup()` / `managementGroup(identifier)`.
182
+ *
183
+ * - Zero-arg form is only valid in management-group-scope deployments and
184
+ * returns details about the current management group.
185
+ * - One-arg form returns a scope object for setting `scope:` on a module
186
+ * or extension resource.
187
+ */
188
+ export declare function managementGroup(): Expression<ManagementGroupScope>;
189
+ export declare function managementGroup(identifier: ExpressionOrValue<string>): Expression<ManagementGroupScope>;
190
+ /** Bicep `deployment()`. Returns information about the current deployment. */
191
+ export declare function deployment(): Expression<unknown>;
192
+ /** Bicep `environment()`. Returns information about the Azure environment. */
193
+ export declare function environment(): Expression<unknown>;
194
+ //# sourceMappingURL=fn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../../src/fn.ts"],"names":[],"mappings":"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"}
package/dist/esm/fn.js ADDED
@@ -0,0 +1,334 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { createBinaryExpression, createFunctionCallExpression, createTernaryExpression, createUnaryExpression, isExpression, } from "./expression/expressions.js";
4
+ // ---------------------------------------------------------------------------
5
+ // Arithmetic operators
6
+ // ---------------------------------------------------------------------------
7
+ /** Adds two numbers as a deploy-time expression. */
8
+ export function add(left, right) {
9
+ return createBinaryExpression("+", left, right);
10
+ }
11
+ /** Subtracts the right operand from the left at deployment time. */
12
+ export function sub(left, right) {
13
+ return createBinaryExpression("-", left, right);
14
+ }
15
+ /** Multiplies two numbers at deployment time. */
16
+ export function mul(left, right) {
17
+ return createBinaryExpression("*", left, right);
18
+ }
19
+ /** Divides the left operand by the right at deployment time. */
20
+ export function div(left, right) {
21
+ return createBinaryExpression("/", left, right);
22
+ }
23
+ /** Returns the remainder of dividing the left operand by the right. */
24
+ export function mod(left, right) {
25
+ return createBinaryExpression("%", left, right);
26
+ }
27
+ /** Negates a number at deployment time. */
28
+ export function neg(value) {
29
+ return createUnaryExpression("-", value);
30
+ }
31
+ // ---------------------------------------------------------------------------
32
+ // Comparison operators
33
+ // ---------------------------------------------------------------------------
34
+ /** Tests whether two values are equal at deployment time. */
35
+ export function eq(left, right) {
36
+ return createBinaryExpression("==", left, right);
37
+ }
38
+ /** Tests whether two values differ at deployment time. */
39
+ export function neq(left, right) {
40
+ return createBinaryExpression("!=", left, right);
41
+ }
42
+ /** Tests whether the left value is greater than the right value. */
43
+ export function gt(left, right) {
44
+ return createBinaryExpression(">", left, right);
45
+ }
46
+ /** Tests whether the left value is less than the right value. */
47
+ export function lt(left, right) {
48
+ return createBinaryExpression("<", left, right);
49
+ }
50
+ /** Tests whether the left value is greater than or equal to the right value. */
51
+ export function gte(left, right) {
52
+ return createBinaryExpression(">=", left, right);
53
+ }
54
+ /** Tests whether the left value is less than or equal to the right value. */
55
+ export function lte(left, right) {
56
+ return createBinaryExpression("<=", left, right);
57
+ }
58
+ // ---------------------------------------------------------------------------
59
+ // Boolean operators
60
+ // ---------------------------------------------------------------------------
61
+ /**
62
+ * Logical AND. Accepts 1 … N operands and folds left:
63
+ * `and(a, b, c)` → `(a && b) && c`
64
+ *
65
+ * A single operand is returned as an `Expression<boolean>` (identity).
66
+ */
67
+ export function and(...conditions) {
68
+ if (conditions.length === 0) {
69
+ throw new Error("and() requires at least one argument");
70
+ }
71
+ if (conditions.length === 1) {
72
+ const c = conditions[0];
73
+ if (isExpression(c))
74
+ return c;
75
+ return createUnaryExpression("!", createUnaryExpression("!", c));
76
+ }
77
+ let result = conditions[0];
78
+ for (let i = 1; i < conditions.length; i++) {
79
+ result = createBinaryExpression("&&", result, conditions[i]);
80
+ }
81
+ return result;
82
+ }
83
+ /**
84
+ * Logical OR. Accepts 1 … N operands and folds left:
85
+ * `or(a, b, c)` → `(a || b) || c`
86
+ */
87
+ export function or(...conditions) {
88
+ if (conditions.length === 0) {
89
+ throw new Error("or() requires at least one argument");
90
+ }
91
+ if (conditions.length === 1) {
92
+ const c = conditions[0];
93
+ if (isExpression(c))
94
+ return c;
95
+ return createUnaryExpression("!", createUnaryExpression("!", c));
96
+ }
97
+ let result = conditions[0];
98
+ for (let i = 1; i < conditions.length; i++) {
99
+ result = createBinaryExpression("||", result, conditions[i]);
100
+ }
101
+ return result;
102
+ }
103
+ /** Negates a Boolean value at deployment time. */
104
+ export function not(value) {
105
+ return createUnaryExpression("!", value);
106
+ }
107
+ // ---------------------------------------------------------------------------
108
+ // Conditional operators
109
+ // ---------------------------------------------------------------------------
110
+ /** Selects one of two values based on a deploy-time condition. */
111
+ export function cond(condition, trueValue, falseValue) {
112
+ return createTernaryExpression(condition, trueValue, falseValue);
113
+ }
114
+ /** Returns the left value unless it is null, otherwise the right value. */
115
+ export function coalesce(left, right) {
116
+ return createBinaryExpression("??", left, right);
117
+ }
118
+ // ---------------------------------------------------------------------------
119
+ // String functions
120
+ // ---------------------------------------------------------------------------
121
+ // Detects the `[TemplateStringsArray, ...values]` shape produced by a
122
+ // tagged-template call. Used by `concat` to support both `concat("a", "b")`
123
+ // and `` concat`a${x}b` `` forms.
124
+ function isTemplateLiteralArgs(args) {
125
+ return Array.isArray(args[0]) && "raw" in args[0] && Array.isArray(args[0].raw);
126
+ }
127
+ // Interleaves a tagged-template's static `strings` with its dynamic `values`,
128
+ // dropping empty leading/trailing static segments so the resulting array is
129
+ // suitable as `concat()` arguments.
130
+ function interleaveTemplateLiteralArgs(strings, values) {
131
+ const result = [];
132
+ for (let i = 0; i < strings.length; i++) {
133
+ const s = strings[i];
134
+ if (s !== "") {
135
+ result.push(s);
136
+ }
137
+ if (i < values.length) {
138
+ result.push(values[i]);
139
+ }
140
+ }
141
+ return result;
142
+ }
143
+ export function concat(...args) {
144
+ if (isTemplateLiteralArgs(args)) {
145
+ const [strings, ...values] = args;
146
+ return createFunctionCallExpression("concat", interleaveTemplateLiteralArgs(strings, values));
147
+ }
148
+ return createFunctionCallExpression("concat", args);
149
+ }
150
+ /** Returns the first `count` characters of a string. */
151
+ export function take(value, count) {
152
+ return createFunctionCallExpression("take", [value, count]);
153
+ }
154
+ /** Converts a string to lowercase at deployment time. */
155
+ export function toLower(value) {
156
+ return createFunctionCallExpression("toLower", [value]);
157
+ }
158
+ /** Converts a string to uppercase at deployment time. */
159
+ export function toUpper(value) {
160
+ return createFunctionCallExpression("toUpper", [value]);
161
+ }
162
+ /** Returns part of a string, optionally starting at `start` for `count` characters. */
163
+ export function substring(value, start, count) {
164
+ const args = [value];
165
+ if (start !== undefined)
166
+ args.push(start);
167
+ if (count !== undefined)
168
+ args.push(count);
169
+ return createFunctionCallExpression("substring", args);
170
+ }
171
+ /** Replaces occurrences of `oldValue` with `newValue` in a string. */
172
+ export function replace(value, oldValue, newValue) {
173
+ return createFunctionCallExpression("replace", [value, oldValue, newValue]);
174
+ }
175
+ /** Splits a string into an array at each occurrence of `delimiter`. */
176
+ export function split(value, delimiter) {
177
+ return createFunctionCallExpression("split", [value, delimiter]);
178
+ }
179
+ /** Joins array elements into a string separated by `delimiter`. */
180
+ export function join(values, delimiter) {
181
+ return createFunctionCallExpression("join", [values, delimiter]);
182
+ }
183
+ /** Removes leading and trailing whitespace from a string. */
184
+ export function trim(value) {
185
+ return createFunctionCallExpression("trim", [value]);
186
+ }
187
+ /** Tests whether a string begins with `prefix`. */
188
+ export function startsWith(value, prefix) {
189
+ return createFunctionCallExpression("startsWith", [value, prefix]);
190
+ }
191
+ /** Tests whether a string ends with `suffix`. */
192
+ export function endsWith(value, suffix) {
193
+ return createFunctionCallExpression("endsWith", [value, suffix]);
194
+ }
195
+ /** Encodes a string as Base64 at deployment time. */
196
+ export function base64(value) {
197
+ return createFunctionCallExpression("base64", [value]);
198
+ }
199
+ /** Decodes Base64-encoded JSON into a value at deployment time. */
200
+ export function base64ToJson(value) {
201
+ return createFunctionCallExpression("base64ToJson", [value]);
202
+ }
203
+ /** Formats a string using indexed placeholders and the supplied values. */
204
+ export function format(formatString, ...values) {
205
+ return createFunctionCallExpression("format", [formatString, ...values]);
206
+ }
207
+ /** Returns the last index of `searchString` within a string. */
208
+ export function lastIndexOf(value, searchString) {
209
+ return createFunctionCallExpression("lastIndexOf", [value, searchString]);
210
+ }
211
+ // ---------------------------------------------------------------------------
212
+ // Unique / ID functions
213
+ // ---------------------------------------------------------------------------
214
+ /** Creates a deterministic string from the supplied values. */
215
+ export function uniqueString(...values) {
216
+ return createFunctionCallExpression("uniqueString", values);
217
+ }
218
+ /** Creates a deterministic GUID from the supplied values. */
219
+ export function guid(...values) {
220
+ return createFunctionCallExpression("guid", values);
221
+ }
222
+ /** Constructs a resource ID at the current deployment scope. */
223
+ export function resourceId(type, ...names) {
224
+ return createFunctionCallExpression("resourceId", [type, ...names]);
225
+ }
226
+ /** Constructs an ID for a subscription-scoped resource. */
227
+ export function subscriptionResourceId(type, ...names) {
228
+ return createFunctionCallExpression("subscriptionResourceId", [type, ...names]);
229
+ }
230
+ /** Constructs an extension resource ID relative to `baseId`. */
231
+ export function extensionResourceId(baseId, type, ...names) {
232
+ return createFunctionCallExpression("extensionResourceId", [baseId, type, ...names]);
233
+ }
234
+ // ---------------------------------------------------------------------------
235
+ // Numeric functions
236
+ // ---------------------------------------------------------------------------
237
+ /** Converts a value to an integer at deployment time. */
238
+ export function int(value) {
239
+ return createFunctionCallExpression("int", [value]);
240
+ }
241
+ /** Returns the smallest of the supplied numbers. */
242
+ export function min(...values) {
243
+ return createFunctionCallExpression("min", values);
244
+ }
245
+ /** Returns the largest of the supplied numbers. */
246
+ export function max(...values) {
247
+ return createFunctionCallExpression("max", values);
248
+ }
249
+ // ---------------------------------------------------------------------------
250
+ // Array / collection functions
251
+ // ---------------------------------------------------------------------------
252
+ /** Returns the length of a string, array, or object at deployment time. */
253
+ export function length(value) {
254
+ return createFunctionCallExpression("length", [value]);
255
+ }
256
+ /** Tests whether a string, array, or object is empty. */
257
+ export function empty(value) {
258
+ return createFunctionCallExpression("empty", [value]);
259
+ }
260
+ /** Returns the first element of an array. */
261
+ export function first(arr) {
262
+ return createFunctionCallExpression("first", [arr]);
263
+ }
264
+ /** Returns the last element of an array. */
265
+ export function last(arr) {
266
+ return createFunctionCallExpression("last", [arr]);
267
+ }
268
+ /** Tests whether a string, array, or object contains a value or key. */
269
+ export function contains(container, value) {
270
+ return createFunctionCallExpression("contains", [container, value]);
271
+ }
272
+ /** Returns the first index of `value` in an array, or -1 if absent. */
273
+ export function indexOf(arr, value) {
274
+ return createFunctionCallExpression("indexOf", [arr, value]);
275
+ }
276
+ /** Flattens one level of nested arrays. */
277
+ export function flatten(arr) {
278
+ return createFunctionCallExpression("flatten", [arr]);
279
+ }
280
+ /** Returns the intersection of two arrays or objects. */
281
+ export function intersect(a, b) {
282
+ return createFunctionCallExpression("intersection", [a, b]);
283
+ }
284
+ export function union(a, b) {
285
+ return createFunctionCallExpression("union", [a, b]);
286
+ }
287
+ /** Skips the first `count` elements of an array. */
288
+ export function skip(arr, count) {
289
+ return createFunctionCallExpression("skip", [arr, count]);
290
+ }
291
+ /** Returns an array's elements in reverse order. */
292
+ export function reverse(arr) {
293
+ return createFunctionCallExpression("reverse", [arr]);
294
+ }
295
+ // ---------------------------------------------------------------------------
296
+ // Object functions
297
+ // ---------------------------------------------------------------------------
298
+ /** Parses JSON text into a deploy-time value. */
299
+ export function json(value) {
300
+ return createFunctionCallExpression("json", [value]);
301
+ }
302
+ /** Returns the property names of an object. */
303
+ export function objectKeys(obj) {
304
+ return createFunctionCallExpression("objectKeys", [obj]);
305
+ }
306
+ /** Returns an object's key/value pairs as an array. */
307
+ export function items(obj) {
308
+ return createFunctionCallExpression("items", [obj]);
309
+ }
310
+ export function subscription(subscriptionId) {
311
+ return createFunctionCallExpression("subscription", subscriptionId === undefined ? [] : [subscriptionId]);
312
+ }
313
+ export function resourceGroup(...args) {
314
+ return createFunctionCallExpression("resourceGroup", args);
315
+ }
316
+ /**
317
+ * Bicep `tenant()`. Returns details about the current tenant (or a scope
318
+ * object when placed in `scope:`). Takes no arguments.
319
+ */
320
+ export function tenant() {
321
+ return createFunctionCallExpression("tenant", []);
322
+ }
323
+ export function managementGroup(identifier) {
324
+ return createFunctionCallExpression("managementGroup", identifier === undefined ? [] : [identifier]);
325
+ }
326
+ /** Bicep `deployment()`. Returns information about the current deployment. */
327
+ export function deployment() {
328
+ return createFunctionCallExpression("deployment", []);
329
+ }
330
+ /** Bicep `environment()`. Returns information about the Azure environment. */
331
+ export function environment() {
332
+ return createFunctionCallExpression("environment", []);
333
+ }
334
+ //# sourceMappingURL=fn.js.map