alchemy-effect 0.2.0 → 0.4.0

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 (494) hide show
  1. package/bin/alchemy-effect.js +55354 -8
  2. package/bin/alchemy-effect.js.map +1 -1
  3. package/bin/alchemy-effect.ts +266 -10
  4. package/lib/$.d.ts +5 -0
  5. package/lib/$.d.ts.map +1 -0
  6. package/lib/$.js +9 -0
  7. package/lib/$.js.map +1 -0
  8. package/lib/app.d.ts +4 -17
  9. package/lib/app.d.ts.map +1 -1
  10. package/lib/app.js +0 -20
  11. package/lib/app.js.map +1 -1
  12. package/lib/apply.d.ts +15 -75
  13. package/lib/apply.d.ts.map +1 -1
  14. package/lib/apply.js +439 -154
  15. package/lib/apply.js.map +1 -1
  16. package/lib/assert-never.d.ts +12 -0
  17. package/lib/assert-never.d.ts.map +1 -0
  18. package/lib/assert-never.js +11 -0
  19. package/lib/assert-never.js.map +1 -0
  20. package/lib/aws/account.d.ts +10 -1
  21. package/lib/aws/account.d.ts.map +1 -1
  22. package/lib/aws/account.js +18 -3
  23. package/lib/aws/account.js.map +1 -1
  24. package/lib/aws/client.d.ts.map +1 -1
  25. package/lib/aws/client.js +0 -1
  26. package/lib/aws/client.js.map +1 -1
  27. package/lib/aws/config.d.ts +15 -0
  28. package/lib/aws/config.d.ts.map +1 -0
  29. package/lib/aws/config.js +1 -0
  30. package/lib/aws/config.js.map +1 -0
  31. package/lib/aws/credentials.d.ts +10 -0
  32. package/lib/aws/credentials.d.ts.map +1 -1
  33. package/lib/aws/credentials.js +73 -47
  34. package/lib/aws/credentials.js.map +1 -1
  35. package/lib/aws/dynamodb/client.d.ts +1 -1
  36. package/lib/aws/dynamodb/client.d.ts.map +1 -1
  37. package/lib/aws/dynamodb/index.d.ts +2 -1
  38. package/lib/aws/dynamodb/index.d.ts.map +1 -1
  39. package/lib/aws/dynamodb/index.js +1 -2
  40. package/lib/aws/dynamodb/index.js.map +1 -1
  41. package/lib/aws/dynamodb/secondary-index.d.ts +5 -4
  42. package/lib/aws/dynamodb/secondary-index.d.ts.map +1 -1
  43. package/lib/aws/dynamodb/table.d.ts +23 -20
  44. package/lib/aws/dynamodb/table.d.ts.map +1 -1
  45. package/lib/aws/dynamodb/table.get-item.d.ts +8 -6
  46. package/lib/aws/dynamodb/table.get-item.d.ts.map +1 -1
  47. package/lib/aws/dynamodb/table.get-item.js +4 -2
  48. package/lib/aws/dynamodb/table.get-item.js.map +1 -1
  49. package/lib/aws/dynamodb/table.js.map +1 -1
  50. package/lib/aws/dynamodb/table.provider.d.ts +3 -4
  51. package/lib/aws/dynamodb/table.provider.d.ts.map +1 -1
  52. package/lib/aws/dynamodb/table.provider.js +18 -29
  53. package/lib/aws/dynamodb/table.provider.js.map +1 -1
  54. package/lib/aws/ec2/client.d.ts +1 -1
  55. package/lib/aws/ec2/client.d.ts.map +1 -1
  56. package/lib/aws/ec2/index.d.ts +11 -0
  57. package/lib/aws/ec2/index.d.ts.map +1 -1
  58. package/lib/aws/ec2/index.js +11 -0
  59. package/lib/aws/ec2/index.js.map +1 -1
  60. package/lib/aws/ec2/internet-gateway.d.ts +65 -0
  61. package/lib/aws/ec2/internet-gateway.d.ts.map +1 -0
  62. package/lib/aws/ec2/internet-gateway.js +4 -0
  63. package/lib/aws/ec2/internet-gateway.js.map +1 -0
  64. package/lib/aws/ec2/internet-gateway.provider.d.ts +6 -0
  65. package/lib/aws/ec2/internet-gateway.provider.d.ts.map +1 -0
  66. package/lib/aws/ec2/internet-gateway.provider.js +193 -0
  67. package/lib/aws/ec2/internet-gateway.provider.js.map +1 -0
  68. package/lib/aws/ec2/route-table-association.d.ts +63 -0
  69. package/lib/aws/ec2/route-table-association.d.ts.map +1 -0
  70. package/lib/aws/ec2/route-table-association.js +4 -0
  71. package/lib/aws/ec2/route-table-association.js.map +1 -0
  72. package/lib/aws/ec2/route-table-association.provider.d.ts +4 -0
  73. package/lib/aws/ec2/route-table-association.provider.d.ts.map +1 -0
  74. package/lib/aws/ec2/route-table-association.provider.js +121 -0
  75. package/lib/aws/ec2/route-table-association.provider.js.map +1 -0
  76. package/lib/aws/ec2/route-table.d.ts +159 -0
  77. package/lib/aws/ec2/route-table.d.ts.map +1 -0
  78. package/lib/aws/ec2/route-table.js +4 -0
  79. package/lib/aws/ec2/route-table.js.map +1 -0
  80. package/lib/aws/ec2/route-table.provider.d.ts +6 -0
  81. package/lib/aws/ec2/route-table.provider.d.ts.map +1 -0
  82. package/lib/aws/ec2/route-table.provider.js +213 -0
  83. package/lib/aws/ec2/route-table.provider.js.map +1 -0
  84. package/lib/aws/ec2/route.d.ts +155 -0
  85. package/lib/aws/ec2/route.d.ts.map +1 -0
  86. package/lib/aws/ec2/route.js +3 -0
  87. package/lib/aws/ec2/route.js.map +1 -0
  88. package/lib/aws/ec2/route.provider.d.ts +4 -0
  89. package/lib/aws/ec2/route.provider.d.ts.map +1 -0
  90. package/lib/aws/ec2/route.provider.js +166 -0
  91. package/lib/aws/ec2/route.provider.js.map +1 -0
  92. package/lib/aws/ec2/subnet.d.ts +175 -0
  93. package/lib/aws/ec2/subnet.d.ts.map +1 -0
  94. package/lib/aws/ec2/subnet.js +4 -0
  95. package/lib/aws/ec2/subnet.js.map +1 -0
  96. package/lib/aws/ec2/subnet.provider.d.ts +4 -0
  97. package/lib/aws/ec2/subnet.provider.d.ts.map +1 -0
  98. package/lib/aws/ec2/subnet.provider.js +250 -0
  99. package/lib/aws/ec2/subnet.provider.js.map +1 -0
  100. package/lib/aws/ec2/vpc.d.ts +13 -8
  101. package/lib/aws/ec2/vpc.d.ts.map +1 -1
  102. package/lib/aws/ec2/vpc.js +1 -0
  103. package/lib/aws/ec2/vpc.js.map +1 -1
  104. package/lib/aws/ec2/vpc.provider.d.ts +1 -2
  105. package/lib/aws/ec2/vpc.provider.d.ts.map +1 -1
  106. package/lib/aws/ec2/vpc.provider.js +45 -37
  107. package/lib/aws/ec2/vpc.provider.js.map +1 -1
  108. package/lib/aws/index.d.ts +15 -19
  109. package/lib/aws/index.d.ts.map +1 -1
  110. package/lib/aws/index.js +8 -10
  111. package/lib/aws/index.js.map +1 -1
  112. package/lib/aws/lambda/consume.d.ts +10 -11
  113. package/lib/aws/lambda/consume.d.ts.map +1 -1
  114. package/lib/aws/lambda/consume.js +3 -3
  115. package/lib/aws/lambda/consume.js.map +1 -1
  116. package/lib/aws/lambda/function.d.ts +7 -7
  117. package/lib/aws/lambda/function.d.ts.map +1 -1
  118. package/lib/aws/lambda/function.handler.d.ts +1 -1
  119. package/lib/aws/lambda/function.handler.d.ts.map +1 -1
  120. package/lib/aws/lambda/function.handler.js.map +1 -1
  121. package/lib/aws/lambda/function.invoke.d.ts +6 -4
  122. package/lib/aws/lambda/function.invoke.d.ts.map +1 -1
  123. package/lib/aws/lambda/function.invoke.js +3 -1
  124. package/lib/aws/lambda/function.invoke.js.map +1 -1
  125. package/lib/aws/lambda/function.js +1 -1
  126. package/lib/aws/lambda/function.js.map +1 -1
  127. package/lib/aws/lambda/function.provider.d.ts +3 -2
  128. package/lib/aws/lambda/function.provider.d.ts.map +1 -1
  129. package/lib/aws/lambda/function.provider.js +28 -25
  130. package/lib/aws/lambda/function.provider.js.map +1 -1
  131. package/lib/aws/lambda/index.d.ts +1 -0
  132. package/lib/aws/lambda/index.d.ts.map +1 -1
  133. package/lib/aws/lambda/index.js +1 -0
  134. package/lib/aws/lambda/index.js.map +1 -1
  135. package/lib/aws/lambda/serve.d.ts +2 -4
  136. package/lib/aws/lambda/serve.d.ts.map +1 -1
  137. package/lib/aws/profile.d.ts +2 -2
  138. package/lib/aws/profile.d.ts.map +1 -1
  139. package/lib/aws/profile.js +1 -1
  140. package/lib/aws/profile.js.map +1 -1
  141. package/lib/aws/region.d.ts +14 -2
  142. package/lib/aws/region.d.ts.map +1 -1
  143. package/lib/aws/region.js +26 -1
  144. package/lib/aws/region.js.map +1 -1
  145. package/lib/aws/sqs/client.d.ts +1 -1
  146. package/lib/aws/sqs/client.d.ts.map +1 -1
  147. package/lib/aws/sqs/index.d.ts +1 -0
  148. package/lib/aws/sqs/index.d.ts.map +1 -1
  149. package/lib/aws/sqs/index.js +1 -0
  150. package/lib/aws/sqs/index.js.map +1 -1
  151. package/lib/aws/sqs/queue.consume.d.ts +1 -1
  152. package/lib/aws/sqs/queue.consume.d.ts.map +1 -1
  153. package/lib/aws/sqs/queue.consume.js +0 -1
  154. package/lib/aws/sqs/queue.consume.js.map +1 -1
  155. package/lib/aws/sqs/queue.d.ts +6 -4
  156. package/lib/aws/sqs/queue.d.ts.map +1 -1
  157. package/lib/aws/sqs/queue.event-source.d.ts +8 -6
  158. package/lib/aws/sqs/queue.event-source.d.ts.map +1 -1
  159. package/lib/aws/sqs/queue.event-source.js +26 -44
  160. package/lib/aws/sqs/queue.event-source.js.map +1 -1
  161. package/lib/aws/sqs/queue.js +1 -1
  162. package/lib/aws/sqs/queue.js.map +1 -1
  163. package/lib/aws/sqs/queue.provider.d.ts +2 -2
  164. package/lib/aws/sqs/queue.provider.d.ts.map +1 -1
  165. package/lib/aws/sqs/queue.provider.js +2 -1
  166. package/lib/aws/sqs/queue.provider.js.map +1 -1
  167. package/lib/aws/sqs/queue.send-message.d.ts +7 -5
  168. package/lib/aws/sqs/queue.send-message.d.ts.map +1 -1
  169. package/lib/aws/sqs/queue.send-message.js +4 -2
  170. package/lib/aws/sqs/queue.send-message.js.map +1 -1
  171. package/lib/binding.d.ts +12 -12
  172. package/lib/binding.d.ts.map +1 -1
  173. package/lib/binding.js.map +1 -1
  174. package/lib/cli/components/ApprovePlan.d.ts +2 -2
  175. package/lib/cli/components/ApprovePlan.d.ts.map +1 -1
  176. package/lib/cli/components/ApprovePlan.js.map +1 -1
  177. package/lib/cli/components/Plan.d.ts +2 -2
  178. package/lib/cli/components/Plan.d.ts.map +1 -1
  179. package/lib/cli/components/Plan.js.map +1 -1
  180. package/lib/cli/components/PlanProgress.d.ts +8 -4
  181. package/lib/cli/components/PlanProgress.d.ts.map +1 -1
  182. package/lib/cli/components/PlanProgress.js +11 -1
  183. package/lib/cli/components/PlanProgress.js.map +1 -1
  184. package/lib/cli/index.d.ts +384 -264
  185. package/lib/cli/index.d.ts.map +1 -1
  186. package/lib/cli/index.js +57 -65
  187. package/lib/cli/index.js.map +1 -1
  188. package/lib/cli/ink-service.d.ts +4 -0
  189. package/lib/cli/ink-service.d.ts.map +1 -0
  190. package/lib/cli/ink-service.js +43 -0
  191. package/lib/cli/ink-service.js.map +1 -0
  192. package/lib/cli/service.d.ts +21 -0
  193. package/lib/cli/service.d.ts.map +1 -0
  194. package/lib/cli/service.js +5 -0
  195. package/lib/cli/service.js.map +1 -0
  196. package/lib/cloudflare/account.d.ts +10 -0
  197. package/lib/cloudflare/account.d.ts.map +1 -0
  198. package/lib/cloudflare/account.js +24 -0
  199. package/lib/cloudflare/account.js.map +1 -0
  200. package/lib/cloudflare/api.d.ts +7 -7
  201. package/lib/cloudflare/api.d.ts.map +1 -1
  202. package/lib/cloudflare/api.js +18 -17
  203. package/lib/cloudflare/api.js.map +1 -1
  204. package/lib/cloudflare/config.d.ts +9 -0
  205. package/lib/cloudflare/config.d.ts.map +1 -0
  206. package/lib/cloudflare/config.js +1 -0
  207. package/lib/cloudflare/config.js.map +1 -0
  208. package/lib/cloudflare/index.d.ts +3 -1
  209. package/lib/cloudflare/index.d.ts.map +1 -1
  210. package/lib/cloudflare/index.js +3 -0
  211. package/lib/cloudflare/index.js.map +1 -1
  212. package/lib/cloudflare/kv/namespace.binding.d.ts +5 -3
  213. package/lib/cloudflare/kv/namespace.binding.d.ts.map +1 -1
  214. package/lib/cloudflare/kv/namespace.binding.js +1 -1
  215. package/lib/cloudflare/kv/namespace.binding.js.map +1 -1
  216. package/lib/cloudflare/kv/namespace.client.d.ts +1 -1
  217. package/lib/cloudflare/kv/namespace.d.ts +3 -2
  218. package/lib/cloudflare/kv/namespace.d.ts.map +1 -1
  219. package/lib/cloudflare/kv/namespace.js.map +1 -1
  220. package/lib/cloudflare/kv/namespace.provider.d.ts +3 -2
  221. package/lib/cloudflare/kv/namespace.provider.d.ts.map +1 -1
  222. package/lib/cloudflare/kv/namespace.provider.js +9 -7
  223. package/lib/cloudflare/kv/namespace.provider.js.map +1 -1
  224. package/lib/cloudflare/live.d.ts +5 -5
  225. package/lib/cloudflare/live.d.ts.map +1 -1
  226. package/lib/cloudflare/live.js +5 -8
  227. package/lib/cloudflare/live.js.map +1 -1
  228. package/lib/cloudflare/r2/bucket.binding.d.ts +5 -3
  229. package/lib/cloudflare/r2/bucket.binding.d.ts.map +1 -1
  230. package/lib/cloudflare/r2/bucket.binding.js +1 -1
  231. package/lib/cloudflare/r2/bucket.binding.js.map +1 -1
  232. package/lib/cloudflare/r2/bucket.d.ts +3 -2
  233. package/lib/cloudflare/r2/bucket.d.ts.map +1 -1
  234. package/lib/cloudflare/r2/bucket.js.map +1 -1
  235. package/lib/cloudflare/r2/bucket.provider.d.ts +3 -2
  236. package/lib/cloudflare/r2/bucket.provider.d.ts.map +1 -1
  237. package/lib/cloudflare/r2/bucket.provider.js +14 -8
  238. package/lib/cloudflare/r2/bucket.provider.js.map +1 -1
  239. package/lib/cloudflare/worker/assets.fetch.d.ts +3 -2
  240. package/lib/cloudflare/worker/assets.fetch.d.ts.map +1 -1
  241. package/lib/cloudflare/worker/assets.fetch.js +2 -1
  242. package/lib/cloudflare/worker/assets.fetch.js.map +1 -1
  243. package/lib/cloudflare/worker/assets.provider.d.ts +1 -1
  244. package/lib/cloudflare/worker/assets.provider.d.ts.map +1 -1
  245. package/lib/cloudflare/worker/index.d.ts +0 -1
  246. package/lib/cloudflare/worker/index.d.ts.map +1 -1
  247. package/lib/cloudflare/worker/worker.d.ts +5 -6
  248. package/lib/cloudflare/worker/worker.d.ts.map +1 -1
  249. package/lib/cloudflare/worker/worker.handler.d.ts +1 -1
  250. package/lib/cloudflare/worker/worker.handler.d.ts.map +1 -1
  251. package/lib/cloudflare/worker/worker.handler.js.map +1 -1
  252. package/lib/cloudflare/worker/worker.js.map +1 -1
  253. package/lib/cloudflare/worker/worker.provider.d.ts +3 -2
  254. package/lib/cloudflare/worker/worker.provider.d.ts.map +1 -1
  255. package/lib/cloudflare/worker/worker.provider.js +12 -7
  256. package/lib/cloudflare/worker/worker.provider.js.map +1 -1
  257. package/lib/cloudflare/worker/worker.serve.d.ts +7 -7
  258. package/lib/cloudflare/worker/worker.serve.d.ts.map +1 -1
  259. package/lib/cloudflare/worker/worker.serve.js.map +1 -1
  260. package/lib/data.d.ts +3 -0
  261. package/lib/data.d.ts.map +1 -0
  262. package/lib/data.js +8 -0
  263. package/lib/data.js.map +1 -0
  264. package/lib/destroy.d.ts +1 -1
  265. package/lib/destroy.d.ts.map +1 -1
  266. package/lib/destroy.js +1 -4
  267. package/lib/destroy.js.map +1 -1
  268. package/lib/diff.d.ts +18 -0
  269. package/lib/diff.d.ts.map +1 -0
  270. package/lib/diff.js +22 -0
  271. package/lib/diff.js.map +1 -0
  272. package/lib/env.d.ts +5 -0
  273. package/lib/env.d.ts.map +1 -1
  274. package/lib/env.js +15 -29
  275. package/lib/env.js.map +1 -1
  276. package/lib/event.d.ts +1 -1
  277. package/lib/event.d.ts.map +1 -1
  278. package/lib/exports.d.ts +9 -0
  279. package/lib/exports.d.ts.map +1 -0
  280. package/lib/exports.js +13 -0
  281. package/lib/exports.js.map +1 -0
  282. package/lib/index.d.ts +10 -2
  283. package/lib/index.d.ts.map +1 -1
  284. package/lib/index.js +10 -5
  285. package/lib/index.js.map +1 -1
  286. package/lib/input.d.ts +32 -0
  287. package/lib/input.d.ts.map +1 -0
  288. package/lib/input.js +1 -0
  289. package/lib/input.js.map +1 -0
  290. package/lib/instance-id.d.ts +8 -0
  291. package/lib/instance-id.d.ts.map +1 -0
  292. package/lib/instance-id.js +12 -0
  293. package/lib/instance-id.js.map +1 -0
  294. package/lib/output.d.ts +145 -0
  295. package/lib/output.d.ts.map +1 -0
  296. package/lib/output.js +283 -0
  297. package/lib/output.js.map +1 -0
  298. package/lib/physical-name.d.ts +14 -1
  299. package/lib/physical-name.d.ts.map +1 -1
  300. package/lib/physical-name.js +41 -2
  301. package/lib/physical-name.js.map +1 -1
  302. package/lib/plan.d.ts +84 -58
  303. package/lib/plan.d.ts.map +1 -1
  304. package/lib/plan.js +504 -166
  305. package/lib/plan.js.map +1 -1
  306. package/lib/policy.d.ts +3 -4
  307. package/lib/policy.d.ts.map +1 -1
  308. package/lib/policy.js +0 -1
  309. package/lib/policy.js.map +1 -1
  310. package/lib/provider.d.ts +39 -24
  311. package/lib/provider.d.ts.map +1 -1
  312. package/lib/provider.js +9 -0
  313. package/lib/provider.js.map +1 -1
  314. package/lib/ref.d.ts +14 -0
  315. package/lib/ref.d.ts.map +1 -0
  316. package/lib/ref.js +21 -0
  317. package/lib/ref.js.map +1 -0
  318. package/lib/resource.d.ts +13 -8
  319. package/lib/resource.d.ts.map +1 -1
  320. package/lib/resource.js.map +1 -1
  321. package/lib/runtime.d.ts +7 -6
  322. package/lib/runtime.d.ts.map +1 -1
  323. package/lib/runtime.js.map +1 -1
  324. package/lib/service.d.ts +9 -6
  325. package/lib/service.d.ts.map +1 -1
  326. package/lib/service.js.map +1 -1
  327. package/lib/stack.d.ts +60 -0
  328. package/lib/stack.d.ts.map +1 -0
  329. package/lib/stack.js +11 -0
  330. package/lib/stack.js.map +1 -0
  331. package/lib/stage.d.ts +39 -0
  332. package/lib/stage.d.ts.map +1 -0
  333. package/lib/stage.js +32 -0
  334. package/lib/stage.js.map +1 -0
  335. package/lib/state.d.ts +135 -17
  336. package/lib/state.d.ts.map +1 -1
  337. package/lib/state.js +34 -30
  338. package/lib/state.js.map +1 -1
  339. package/lib/tags.d.ts +15 -0
  340. package/lib/tags.d.ts.map +1 -1
  341. package/lib/tags.js +27 -0
  342. package/lib/tags.js.map +1 -1
  343. package/lib/test.d.ts +25 -4
  344. package/lib/test.d.ts.map +1 -1
  345. package/lib/test.js +54 -14
  346. package/lib/test.js.map +1 -1
  347. package/lib/todo.d.ts +3 -0
  348. package/lib/todo.d.ts.map +1 -0
  349. package/lib/todo.js +3 -0
  350. package/lib/todo.js.map +1 -0
  351. package/lib/tsconfig.test.tsbuildinfo +1 -1
  352. package/lib/type.d.ts +3 -0
  353. package/lib/type.d.ts.map +1 -1
  354. package/lib/unknown.d.ts +4 -0
  355. package/lib/unknown.d.ts.map +1 -0
  356. package/lib/unknown.js +4 -0
  357. package/lib/unknown.js.map +1 -0
  358. package/lib/user.d.ts +3 -0
  359. package/lib/user.d.ts.map +1 -0
  360. package/lib/user.js +3 -0
  361. package/lib/user.js.map +1 -0
  362. package/lib/util.d.ts +6 -0
  363. package/lib/util.d.ts.map +1 -0
  364. package/lib/util.js +9 -0
  365. package/lib/util.js.map +1 -0
  366. package/package.json +18 -12
  367. package/src/$.ts +17 -0
  368. package/src/app.ts +3 -32
  369. package/src/apply.ts +824 -452
  370. package/src/assert-never.ts +18 -0
  371. package/src/aws/account.ts +23 -3
  372. package/src/aws/client.ts +0 -1
  373. package/src/aws/config.ts +16 -0
  374. package/src/aws/credentials.ts +212 -177
  375. package/src/aws/dynamodb/index.ts +3 -3
  376. package/src/aws/dynamodb/table.get-item.ts +5 -9
  377. package/src/aws/dynamodb/table.provider.ts +36 -39
  378. package/src/aws/dynamodb/table.ts +29 -84
  379. package/src/aws/ec2/index.ts +12 -0
  380. package/src/aws/ec2/internet-gateway.provider.ts +316 -0
  381. package/src/aws/ec2/internet-gateway.ts +79 -0
  382. package/src/aws/ec2/route-table-association.provider.ts +214 -0
  383. package/src/aws/ec2/route-table-association.ts +82 -0
  384. package/src/aws/ec2/route-table.provider.ts +306 -0
  385. package/src/aws/ec2/route-table.ts +175 -0
  386. package/src/aws/ec2/route.provider.ts +213 -0
  387. package/src/aws/ec2/route.ts +192 -0
  388. package/src/aws/ec2/subnet.provider.ts +358 -0
  389. package/src/aws/ec2/subnet.ts +213 -0
  390. package/src/aws/ec2/vpc.provider.ts +58 -50
  391. package/src/aws/ec2/vpc.ts +21 -8
  392. package/src/aws/index.ts +49 -40
  393. package/src/aws/lambda/consume.ts +8 -7
  394. package/src/aws/lambda/function.handler.ts +1 -1
  395. package/src/aws/lambda/function.invoke.ts +6 -2
  396. package/src/aws/lambda/function.provider.ts +41 -32
  397. package/src/aws/lambda/function.ts +7 -4
  398. package/src/aws/lambda/index.ts +2 -0
  399. package/src/aws/profile.ts +1 -4
  400. package/src/aws/region.ts +42 -3
  401. package/src/aws/sqs/index.ts +2 -0
  402. package/src/aws/sqs/queue.consume.ts +1 -1
  403. package/src/aws/sqs/queue.event-source.ts +29 -55
  404. package/src/aws/sqs/queue.provider.ts +10 -2
  405. package/src/aws/sqs/queue.send-message.ts +5 -8
  406. package/src/aws/sqs/queue.ts +9 -4
  407. package/src/binding.ts +19 -19
  408. package/src/cli/components/ApprovePlan.tsx +2 -2
  409. package/src/cli/components/Plan.tsx +3 -2
  410. package/src/cli/components/PlanProgress.tsx +32 -14
  411. package/src/cli/index.ts +2 -6
  412. package/src/cli/ink-service.tsx +61 -0
  413. package/src/cli/service.ts +23 -0
  414. package/src/cloudflare/account.ts +37 -0
  415. package/src/cloudflare/api.ts +33 -29
  416. package/src/cloudflare/config.ts +7 -0
  417. package/src/cloudflare/index.ts +3 -1
  418. package/src/cloudflare/kv/namespace.binding.ts +3 -1
  419. package/src/cloudflare/kv/namespace.provider.ts +10 -8
  420. package/src/cloudflare/kv/namespace.ts +3 -2
  421. package/src/cloudflare/live.ts +11 -17
  422. package/src/cloudflare/r2/bucket.binding.ts +3 -1
  423. package/src/cloudflare/r2/bucket.provider.ts +16 -9
  424. package/src/cloudflare/r2/bucket.ts +8 -2
  425. package/src/cloudflare/worker/assets.fetch.ts +3 -1
  426. package/src/cloudflare/worker/assets.provider.ts +1 -1
  427. package/src/cloudflare/worker/index.ts +0 -2
  428. package/src/cloudflare/worker/worker.handler.ts +1 -1
  429. package/src/cloudflare/worker/worker.provider.ts +21 -14
  430. package/src/cloudflare/worker/worker.serve.ts +5 -2
  431. package/src/cloudflare/worker/worker.ts +4 -3
  432. package/src/data.ts +18 -0
  433. package/src/destroy.ts +1 -5
  434. package/src/diff.ts +48 -0
  435. package/src/env.ts +20 -32
  436. package/src/event.ts +6 -0
  437. package/src/exports.ts +21 -0
  438. package/src/index.ts +10 -5
  439. package/src/input.ts +81 -0
  440. package/src/instance-id.ts +16 -0
  441. package/src/output.ts +542 -0
  442. package/src/physical-name.ts +57 -2
  443. package/src/plan.ts +757 -278
  444. package/src/policy.ts +3 -5
  445. package/src/provider.ts +70 -31
  446. package/src/ref.ts +48 -0
  447. package/src/resource.ts +70 -10
  448. package/src/runtime.ts +15 -8
  449. package/src/service.ts +11 -7
  450. package/src/stack.ts +116 -0
  451. package/src/stage.ts +85 -0
  452. package/src/state.ts +269 -76
  453. package/src/tags.ts +31 -0
  454. package/src/test.ts +118 -17
  455. package/src/todo.ts +4 -0
  456. package/src/type.ts +4 -0
  457. package/src/unknown.ts +6 -0
  458. package/src/user.ts +4 -0
  459. package/src/util.ts +21 -0
  460. package/lib/approve.d.ts +0 -15
  461. package/lib/approve.d.ts.map +0 -1
  462. package/lib/approve.js +0 -7
  463. package/lib/approve.js.map +0 -1
  464. package/lib/cli/approve.d.ts +0 -4
  465. package/lib/cli/approve.d.ts.map +0 -1
  466. package/lib/cli/approve.js +0 -18
  467. package/lib/cli/approve.js.map +0 -1
  468. package/lib/cli/clack.d.ts +0 -14
  469. package/lib/cli/clack.d.ts.map +0 -1
  470. package/lib/cli/clack.js +0 -12
  471. package/lib/cli/clack.js.map +0 -1
  472. package/lib/cli/main.d.ts +0 -2
  473. package/lib/cli/main.d.ts.map +0 -1
  474. package/lib/cli/main.js +0 -1
  475. package/lib/cli/main.js.map +0 -1
  476. package/lib/cli/plan.d.ts +0 -13
  477. package/lib/cli/plan.d.ts.map +0 -1
  478. package/lib/cli/plan.js +0 -1
  479. package/lib/cli/plan.js.map +0 -1
  480. package/lib/cli/progress.d.ts +0 -7
  481. package/lib/cli/progress.d.ts.map +0 -1
  482. package/lib/cli/progress.js +0 -30
  483. package/lib/cli/progress.js.map +0 -1
  484. package/lib/cli/spinner.d.ts +0 -2
  485. package/lib/cli/spinner.d.ts.map +0 -1
  486. package/lib/cli/spinner.js +0 -13
  487. package/lib/cli/spinner.js.map +0 -1
  488. package/src/approve.ts +0 -13
  489. package/src/cli/approve.tsx +0 -30
  490. package/src/cli/clack.ts +0 -22
  491. package/src/cli/main.ts +0 -0
  492. package/src/cli/plan.ts +0 -16
  493. package/src/cli/progress.tsx +0 -46
  494. package/src/cli/spinner.ts +0 -14
@@ -0,0 +1,175 @@
1
+ import type * as EC2 from "itty-aws/ec2";
2
+ import type { Input } from "../../input.ts";
3
+ import { Resource } from "../../resource.ts";
4
+ import type { AccountID } from "../account.ts";
5
+ import type { RegionID } from "../region.ts";
6
+ import type { VpcId } from "./vpc.ts";
7
+ export declare const Subnet: (<const ID extends string, const Props extends SubnetProps>(id: ID, props: Props) => Subnet<ID, Props>) & {
8
+ new (): Subnet<string, SubnetProps> & {
9
+ parent: Subnet<string, SubnetProps>;
10
+ };
11
+ type: "AWS.EC2.Subnet";
12
+ parent: Subnet<string, SubnetProps>;
13
+ provider: import("../../resource.ts").ResourceTags<Subnet<string, SubnetProps>>;
14
+ } & {
15
+ type: "AWS.EC2.Subnet";
16
+ provider: import("../../resource.ts").ResourceTags<Subnet<string, SubnetProps>>;
17
+ };
18
+ export interface Subnet<ID extends string = string, Props extends SubnetProps = SubnetProps> extends Resource<"AWS.EC2.Subnet", ID, Props, SubnetAttrs<Input.Resolve<Props>>, Subnet> {
19
+ }
20
+ export interface SubnetProps {
21
+ /**
22
+ * The VPC to create the subnet in.
23
+ */
24
+ vpcId: Input<VpcId>;
25
+ /**
26
+ * The IPv4 network range for the subnet, in CIDR notation.
27
+ * Required unless using IPAM.
28
+ * @example "10.0.1.0/24"
29
+ */
30
+ cidrBlock?: string;
31
+ /**
32
+ * The IPv6 network range for the subnet, in CIDR notation.
33
+ */
34
+ ipv6CidrBlock?: string;
35
+ /**
36
+ * The Availability Zone for the subnet.
37
+ * @example "us-east-1a"
38
+ */
39
+ availabilityZone?: string;
40
+ /**
41
+ * The ID of the Availability Zone for the subnet.
42
+ */
43
+ availabilityZoneId?: string;
44
+ /**
45
+ * The ID of an IPv4 IPAM pool you want to use for allocating this subnet's CIDR.
46
+ */
47
+ ipv4IpamPoolId?: string;
48
+ /**
49
+ * The netmask length of the IPv4 CIDR you want to allocate to this subnet from an IPAM pool.
50
+ */
51
+ ipv4NetmaskLength?: number;
52
+ /**
53
+ * The ID of an IPv6 IPAM pool which will be used to allocate this subnet an IPv6 CIDR.
54
+ */
55
+ ipv6IpamPoolId?: Input<string>;
56
+ /**
57
+ * The netmask length of the IPv6 CIDR you want to allocate to this subnet from an IPAM pool.
58
+ */
59
+ ipv6NetmaskLength?: number;
60
+ /**
61
+ * Whether instances launched in the subnet get public IPv4 addresses.
62
+ * @default false
63
+ */
64
+ mapPublicIpOnLaunch?: boolean;
65
+ /**
66
+ * Whether instances launched in the subnet get IPv6 addresses.
67
+ * @default false
68
+ */
69
+ assignIpv6AddressOnCreation?: boolean;
70
+ /**
71
+ * Whether DNS queries made to the Amazon-provided DNS Resolver in this subnet should return
72
+ * synthetic IPv6 addresses for IPv4-only destinations.
73
+ * @default false
74
+ */
75
+ enableDns64?: boolean;
76
+ /**
77
+ * Whether to enable resource name DNS A record on launch.
78
+ * @default false
79
+ */
80
+ enableResourceNameDnsARecordOnLaunch?: boolean;
81
+ /**
82
+ * Whether to enable resource name DNS AAAA record on launch.
83
+ * @default false
84
+ */
85
+ enableResourceNameDnsAAAARecordOnLaunch?: boolean;
86
+ /**
87
+ * The hostname type for EC2 instances launched into this subnet.
88
+ */
89
+ hostnameType?: EC2.HostnameType;
90
+ /**
91
+ * Tags to assign to the subnet.
92
+ * These will be merged with alchemy auto-tags (alchemy::app, alchemy::stage, alchemy::id).
93
+ */
94
+ tags?: Record<string, Input<string>>;
95
+ }
96
+ export type SubnetId<ID extends string = string> = `subnet-${ID}`;
97
+ export declare const SubnetId: <ID extends string>(id: ID) => ID & SubnetId<ID>;
98
+ export interface SubnetAttrs<Props extends SubnetProps> {
99
+ /**
100
+ * The ID of the VPC the subnet is in.
101
+ */
102
+ vpcId: Props["vpcId"];
103
+ /**
104
+ * The ID of the subnet.
105
+ */
106
+ subnetId: SubnetId;
107
+ /**
108
+ * The Amazon Resource Name (ARN) of the subnet.
109
+ */
110
+ subnetArn: `arn:aws:ec2:${RegionID}:${AccountID}:subnet/${this["subnetId"]}`;
111
+ /**
112
+ * The IPv4 CIDR block for the subnet.
113
+ */
114
+ cidrBlock: string;
115
+ /**
116
+ * The Availability Zone of the subnet.
117
+ */
118
+ availabilityZone: string;
119
+ /**
120
+ * The ID of the Availability Zone of the subnet.
121
+ */
122
+ availabilityZoneId?: string;
123
+ /**
124
+ * The current state of the subnet.
125
+ */
126
+ state: EC2.SubnetState;
127
+ /**
128
+ * The number of available IPv4 addresses in the subnet.
129
+ */
130
+ availableIpAddressCount: number;
131
+ /**
132
+ * Whether instances launched in the subnet get public IPv4 addresses.
133
+ */
134
+ mapPublicIpOnLaunch: boolean;
135
+ /**
136
+ * Whether instances launched in the subnet get IPv6 addresses.
137
+ */
138
+ assignIpv6AddressOnCreation: Props["assignIpv6AddressOnCreation"];
139
+ /**
140
+ * Whether the subnet is the default subnet for the Availability Zone.
141
+ */
142
+ defaultForAz: boolean;
143
+ /**
144
+ * The ID of the AWS account that owns the subnet.
145
+ */
146
+ ownerId?: string;
147
+ /**
148
+ * Information about the IPv6 CIDR blocks associated with the subnet.
149
+ */
150
+ ipv6CidrBlockAssociationSet?: Array<{
151
+ associationId: string;
152
+ ipv6CidrBlock: string;
153
+ ipv6CidrBlockState: {
154
+ state: EC2.SubnetCidrBlockStateCode;
155
+ statusMessage?: string;
156
+ };
157
+ }>;
158
+ /**
159
+ * Whether DNS64 is enabled for the subnet.
160
+ */
161
+ enableDns64?: boolean;
162
+ /**
163
+ * Whether this is an IPv6-only subnet.
164
+ */
165
+ ipv6Native?: boolean;
166
+ /**
167
+ * The private DNS name options on launch.
168
+ */
169
+ privateDnsNameOptionsOnLaunch?: {
170
+ hostnameType?: EC2.HostnameType;
171
+ enableResourceNameDnsARecord?: boolean;
172
+ enableResourceNameDnsAAAARecord?: boolean;
173
+ };
174
+ }
175
+ //# sourceMappingURL=subnet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subnet.d.ts","sourceRoot":"","sources":["../../../src/aws/ec2/subnet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Resource } from "../../resource.js";
2
+ export const Subnet = Resource("AWS.EC2.Subnet");
3
+ export const SubnetId = (id) => `subnet-${id}`;
4
+ //# sourceMappingURL=subnet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subnet.js","sourceRoot":"","sources":["../../../src/aws/ec2/subnet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAK7C,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAK3B,gBAAgB,CAAC,CAAC;AA0GrB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAoB,EAAM,EAAqB,EAAE,CACvE,UAAU,EAAE,EAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { EC2Client } from "./client.ts";
2
+ import { Subnet, type SubnetProps } from "./subnet.ts";
3
+ export declare const subnetProvider: () => import("effect/Layer").Layer<import("../../provider.ts").Provider<Subnet<string, SubnetProps>>, never, import("../../app.ts").App | EC2Client>;
4
+ //# sourceMappingURL=subnet.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subnet.provider.d.ts","sourceRoot":"","sources":["../../../src/aws/ec2/subnet.provider.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,MAAM,EAGN,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,cAAc,sJAkQxB,CAAC"}
@@ -0,0 +1,250 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schedule from "effect/Schedule";
3
+ import { somePropsAreDifferent } from "../../diff.js";
4
+ import { createTagger, createTagsList } from "../../tags.js";
5
+ import { EC2Client } from "./client.js";
6
+ import { Subnet, } from "./subnet.js";
7
+ export const subnetProvider = () => Subnet.provider.effect(Effect.gen(function* () {
8
+ const ec2 = yield* EC2Client;
9
+ const tagged = yield* createTagger();
10
+ return {
11
+ stables: ["subnetId", "subnetArn", "ownerId", "vpcId"],
12
+ diff: Effect.fn(function* ({ news, olds }) {
13
+ if (somePropsAreDifferent(olds, news, [
14
+ "vpcId",
15
+ "cidrBlock",
16
+ "availabilityZone",
17
+ "availabilityZoneId",
18
+ "ipv6CidrBlock",
19
+ "ipv4IpamPoolId",
20
+ "ipv6IpamPoolId",
21
+ ])) {
22
+ return { action: "replace" };
23
+ }
24
+ }),
25
+ create: Effect.fn(function* ({ id, news, session }) {
26
+ // 1. Get VPC ID from the VPC resource
27
+ // TODO(sam): i need to make it possible to pass Resources as input Props to Resources
28
+ const vpcId = news.vpcId;
29
+ // 2. Prepare tags
30
+ const alchemyTags = tagged(id);
31
+ const userTags = news.tags ?? {};
32
+ const allTags = { ...alchemyTags, ...userTags };
33
+ // 3. Call CreateSubnet
34
+ const createResult = yield* ec2
35
+ .createSubnet({
36
+ VpcId: vpcId,
37
+ CidrBlock: news.cidrBlock,
38
+ Ipv6CidrBlock: news.ipv6CidrBlock,
39
+ AvailabilityZone: news.availabilityZone,
40
+ AvailabilityZoneId: news.availabilityZoneId,
41
+ Ipv4IpamPoolId: news.ipv4IpamPoolId,
42
+ Ipv4NetmaskLength: news.ipv4NetmaskLength,
43
+ Ipv6IpamPoolId: news.ipv6IpamPoolId,
44
+ Ipv6NetmaskLength: news.ipv6NetmaskLength,
45
+ Ipv6Native: false, // Explicitly set to false for now
46
+ TagSpecifications: [
47
+ {
48
+ ResourceType: "subnet",
49
+ Tags: createTagsList(allTags),
50
+ },
51
+ ],
52
+ DryRun: false,
53
+ })
54
+ .pipe(Effect.retry({
55
+ while: (e) => e._tag === "InvalidVpcID.NotFound",
56
+ schedule: Schedule.exponential(100),
57
+ }));
58
+ const subnetId = createResult.Subnet.SubnetId;
59
+ yield* session.note(`Subnet created: ${subnetId}`);
60
+ // 4. Modify subnet attributes if specified
61
+ if (news.mapPublicIpOnLaunch !== undefined) {
62
+ yield* ec2.modifySubnetAttribute({
63
+ SubnetId: subnetId,
64
+ MapPublicIpOnLaunch: { Value: news.mapPublicIpOnLaunch },
65
+ });
66
+ }
67
+ if (news.assignIpv6AddressOnCreation !== undefined) {
68
+ yield* ec2.modifySubnetAttribute({
69
+ SubnetId: subnetId,
70
+ AssignIpv6AddressOnCreation: {
71
+ Value: news.assignIpv6AddressOnCreation,
72
+ },
73
+ });
74
+ }
75
+ if (news.enableDns64 !== undefined) {
76
+ yield* ec2.modifySubnetAttribute({
77
+ SubnetId: subnetId,
78
+ EnableDns64: { Value: news.enableDns64 },
79
+ });
80
+ }
81
+ if (news.enableResourceNameDnsARecordOnLaunch !== undefined ||
82
+ news.enableResourceNameDnsAAAARecordOnLaunch !== undefined ||
83
+ news.hostnameType !== undefined) {
84
+ yield* ec2.modifySubnetAttribute({
85
+ SubnetId: subnetId,
86
+ PrivateDnsHostnameTypeOnLaunch: news.hostnameType,
87
+ EnableResourceNameDnsARecordOnLaunch: news.enableResourceNameDnsARecordOnLaunch !== undefined
88
+ ? { Value: news.enableResourceNameDnsARecordOnLaunch }
89
+ : undefined,
90
+ EnableResourceNameDnsAAAARecordOnLaunch: news.enableResourceNameDnsAAAARecordOnLaunch !== undefined
91
+ ? { Value: news.enableResourceNameDnsAAAARecordOnLaunch }
92
+ : undefined,
93
+ });
94
+ }
95
+ // 5. Wait for subnet to be available
96
+ const subnet = yield* waitForSubnetAvailable(ec2, subnetId, session);
97
+ // 6. Return attributes
98
+ return {
99
+ subnetId,
100
+ subnetArn: subnet.SubnetArn,
101
+ cidrBlock: subnet.CidrBlock,
102
+ vpcId: news.vpcId,
103
+ availabilityZone: subnet.AvailabilityZone,
104
+ availabilityZoneId: subnet.AvailabilityZoneId,
105
+ state: subnet.State,
106
+ availableIpAddressCount: subnet.AvailableIpAddressCount ?? 0,
107
+ mapPublicIpOnLaunch: subnet.MapPublicIpOnLaunch ?? false,
108
+ assignIpv6AddressOnCreation: subnet.AssignIpv6AddressOnCreation ?? false,
109
+ defaultForAz: subnet.DefaultForAz ?? false,
110
+ ownerId: subnet.OwnerId,
111
+ ipv6CidrBlockAssociationSet: subnet.Ipv6CidrBlockAssociationSet?.map((assoc) => ({
112
+ associationId: assoc.AssociationId,
113
+ ipv6CidrBlock: assoc.Ipv6CidrBlock,
114
+ ipv6CidrBlockState: {
115
+ state: assoc.Ipv6CidrBlockState.State,
116
+ statusMessage: assoc.Ipv6CidrBlockState.StatusMessage,
117
+ },
118
+ })),
119
+ enableDns64: subnet.EnableDns64,
120
+ ipv6Native: subnet.Ipv6Native,
121
+ privateDnsNameOptionsOnLaunch: subnet.PrivateDnsNameOptionsOnLaunch
122
+ ? {
123
+ hostnameType: subnet.PrivateDnsNameOptionsOnLaunch.HostnameType,
124
+ enableResourceNameDnsARecord: subnet.PrivateDnsNameOptionsOnLaunch
125
+ .EnableResourceNameDnsARecord,
126
+ enableResourceNameDnsAAAARecord: subnet.PrivateDnsNameOptionsOnLaunch
127
+ .EnableResourceNameDnsAAAARecord,
128
+ }
129
+ : undefined,
130
+ };
131
+ }),
132
+ update: Effect.fn(function* ({ news, olds, output, session }) {
133
+ const subnetId = output.subnetId;
134
+ // Update MapPublicIpOnLaunch if changed
135
+ if (news.mapPublicIpOnLaunch !== olds.mapPublicIpOnLaunch) {
136
+ yield* ec2.modifySubnetAttribute({
137
+ SubnetId: subnetId,
138
+ MapPublicIpOnLaunch: { Value: news.mapPublicIpOnLaunch ?? false },
139
+ });
140
+ yield* session.note("Updated map public IP on launch");
141
+ }
142
+ // Update AssignIpv6AddressOnCreation if changed
143
+ if (news.assignIpv6AddressOnCreation !==
144
+ olds.assignIpv6AddressOnCreation) {
145
+ yield* ec2.modifySubnetAttribute({
146
+ SubnetId: subnetId,
147
+ AssignIpv6AddressOnCreation: {
148
+ Value: news.assignIpv6AddressOnCreation ?? false,
149
+ },
150
+ });
151
+ yield* session.note("Updated assign IPv6 address on creation");
152
+ }
153
+ // Update EnableDns64 if changed
154
+ if (news.enableDns64 !== olds.enableDns64) {
155
+ yield* ec2.modifySubnetAttribute({
156
+ SubnetId: subnetId,
157
+ EnableDns64: { Value: news.enableDns64 ?? false },
158
+ });
159
+ yield* session.note("Updated DNS64 setting");
160
+ }
161
+ // Update private DNS hostname settings if changed
162
+ if (news.enableResourceNameDnsARecordOnLaunch !==
163
+ olds.enableResourceNameDnsARecordOnLaunch ||
164
+ news.enableResourceNameDnsAAAARecordOnLaunch !==
165
+ olds.enableResourceNameDnsAAAARecordOnLaunch ||
166
+ news.hostnameType !== olds.hostnameType) {
167
+ yield* ec2.modifySubnetAttribute({
168
+ SubnetId: subnetId,
169
+ PrivateDnsHostnameTypeOnLaunch: news.hostnameType,
170
+ EnableResourceNameDnsARecordOnLaunch: news.enableResourceNameDnsARecordOnLaunch !== undefined
171
+ ? { Value: news.enableResourceNameDnsARecordOnLaunch }
172
+ : undefined,
173
+ EnableResourceNameDnsAAAARecordOnLaunch: news.enableResourceNameDnsAAAARecordOnLaunch !== undefined
174
+ ? { Value: news.enableResourceNameDnsAAAARecordOnLaunch }
175
+ : undefined,
176
+ });
177
+ yield* session.note("Updated private DNS hostname settings");
178
+ }
179
+ // Note: Tag updates would go here if we support user tag changes
180
+ return output; // Subnet attributes don't change from these updates
181
+ }),
182
+ delete: Effect.fn(function* ({ output, session }) {
183
+ const subnetId = output.subnetId;
184
+ yield* session.note(`Deleting subnet: ${subnetId}`);
185
+ // 1. Attempt to delete subnet
186
+ yield* ec2
187
+ .deleteSubnet({
188
+ SubnetId: subnetId,
189
+ DryRun: false,
190
+ })
191
+ .pipe(Effect.tapError(Effect.logDebug), Effect.catchTag("InvalidSubnetID.NotFound", () => Effect.void),
192
+ // Retry on dependency violations (resources still being deleted)
193
+ Effect.retry({
194
+ while: (e) => {
195
+ // DependencyViolation means there are still dependent resources
196
+ // This can happen if ENIs/instances are being deleted concurrently
197
+ return (e._tag === "ValidationError" &&
198
+ e.message?.includes("DependencyViolation"));
199
+ },
200
+ schedule: Schedule.exponential(1000, 1.5).pipe(Schedule.intersect(Schedule.recurs(10)), // Try up to 10 times
201
+ Schedule.tapOutput(([, attempt]) => session.note(`Waiting for dependencies to clear... (attempt ${attempt + 1})`))),
202
+ }));
203
+ // 2. Wait for subnet to be fully deleted
204
+ yield* waitForSubnetDeleted(ec2, subnetId, session);
205
+ yield* session.note(`Subnet ${subnetId} deleted successfully`);
206
+ }),
207
+ };
208
+ }));
209
+ /**
210
+ * Wait for subnet to be in available state
211
+ */
212
+ const waitForSubnetAvailable = (ec2, subnetId, session) => Effect.retry(Effect.gen(function* () {
213
+ const result = yield* ec2
214
+ .describeSubnets({ SubnetIds: [subnetId] })
215
+ .pipe(Effect.catchTag("InvalidSubnetID.NotFound", () => Effect.succeed({ Subnets: [] })));
216
+ const subnet = result.Subnets[0];
217
+ if (subnet.State === "available") {
218
+ return subnet;
219
+ }
220
+ // Still pending, fail to trigger retry
221
+ return yield* Effect.fail(new Error("Subnet not yet available"));
222
+ }), {
223
+ schedule: Schedule.fixed(2000).pipe(
224
+ // Check every 2 seconds
225
+ Schedule.intersect(Schedule.recurs(30)), // Max 60 seconds
226
+ Schedule.tapOutput(([, attempt]) => session
227
+ ? session.note(`Waiting for subnet to be available... (${(attempt + 1) * 2}s)`)
228
+ : Effect.void)),
229
+ });
230
+ /**
231
+ * Wait for subnet to be deleted
232
+ */
233
+ const waitForSubnetDeleted = (ec2, subnetId, session) => Effect.gen(function* () {
234
+ yield* Effect.retry(Effect.gen(function* () {
235
+ const result = yield* ec2
236
+ .describeSubnets({ SubnetIds: [subnetId] })
237
+ .pipe(Effect.tapError(Effect.logDebug), Effect.catchTag("InvalidSubnetID.NotFound", () => Effect.succeed({ Subnets: [] })));
238
+ if (!result.Subnets || result.Subnets.length === 0) {
239
+ return; // Successfully deleted
240
+ }
241
+ // Still exists, fail to trigger retry
242
+ return yield* Effect.fail(new Error("Subnet still exists"));
243
+ }), {
244
+ schedule: Schedule.fixed(2000).pipe(
245
+ // Check every 2 seconds
246
+ Schedule.intersect(Schedule.recurs(15)), // Max 30 seconds
247
+ Schedule.tapOutput(([, attempt]) => session.note(`Waiting for subnet deletion... (${(attempt + 1) * 2}s)`))),
248
+ });
249
+ });
250
+ //# sourceMappingURL=subnet.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subnet.provider.js","sourceRoot":"","sources":["../../../src/aws/ec2/subnet.provider.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type * as EC2 from "itty-aws/ec2";
2
+ import type { Input } from "../../input.ts";
2
3
  import { Resource } from "../../resource.ts";
3
4
  import type { AccountID } from "../account.ts";
4
5
  import type { RegionID } from "../region.ts";
@@ -7,13 +8,16 @@ export declare const Vpc: (<const ID extends string, const Props extends VpcProp
7
8
  parent: Vpc<string, VpcProps>;
8
9
  };
9
10
  type: "AWS.EC2.VPC";
11
+ parent: Vpc<string, VpcProps>;
10
12
  provider: import("../../resource.ts").ResourceTags<Vpc<string, VpcProps>>;
11
13
  } & {
12
14
  type: "AWS.EC2.VPC";
13
15
  provider: import("../../resource.ts").ResourceTags<Vpc<string, VpcProps>>;
14
16
  };
15
- export interface Vpc<ID extends string = string, Props extends VpcProps = VpcProps> extends Resource<"AWS.EC2.VPC", ID, Props, VpcAttrs<Props>> {
17
+ export interface Vpc<ID extends string = string, Props extends VpcProps = VpcProps> extends Resource<"AWS.EC2.VPC", ID, Props, VpcAttrs<Input.Resolve<Props>>, Vpc> {
16
18
  }
19
+ export type VpcId = `vpc-${string}`;
20
+ export declare const VpcId: <const S extends string>(value: S) => S & VpcId;
17
21
  export interface VpcProps {
18
22
  /**
19
23
  * The IPv4 network range for the VPC, in CIDR notation.
@@ -24,7 +28,7 @@ export interface VpcProps {
24
28
  /**
25
29
  * The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR.
26
30
  */
27
- ipv4IpamPoolId?: string;
31
+ ipv4IpamPoolId?: Input<string>;
28
32
  /**
29
33
  * The netmask length of the IPv4 CIDR you want to allocate to this VPC from an IPAM pool.
30
34
  */
@@ -32,7 +36,7 @@ export interface VpcProps {
32
36
  /**
33
37
  * The ID of an IPv6 IPAM pool which will be used to allocate this VPC an IPv6 CIDR.
34
38
  */
35
- ipv6IpamPoolId?: string;
39
+ ipv6IpamPoolId?: Input<string>;
36
40
  /**
37
41
  * The netmask length of the IPv6 CIDR you want to allocate to this VPC from an IPAM pool.
38
42
  */
@@ -44,11 +48,11 @@ export interface VpcProps {
44
48
  /**
45
49
  * The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.
46
50
  */
47
- ipv6Pool?: string;
51
+ ipv6Pool?: Input<string>;
48
52
  /**
49
53
  * The Availability Zone or Local Zone Group name for the IPv6 CIDR block.
50
54
  */
51
- ipv6CidrBlockNetworkBorderGroup?: string;
55
+ ipv6CidrBlockNetworkBorderGroup?: Input<string>;
52
56
  /**
53
57
  * The tenancy options for instances launched into the VPC.
54
58
  * @default "default"
@@ -72,13 +76,13 @@ export interface VpcProps {
72
76
  * Tags to assign to the VPC.
73
77
  * These will be merged with alchemy auto-tags (alchemy::app, alchemy::stage, alchemy::id).
74
78
  */
75
- tags?: Record<string, string>;
79
+ tags?: Record<string, Input<string>>;
76
80
  }
77
- export interface VpcAttrs<Props extends VpcProps> {
81
+ export interface VpcAttrs<_Props extends VpcProps = VpcProps> {
78
82
  /**
79
83
  * The ID of the VPC.
80
84
  */
81
- vpcId: string;
85
+ vpcId: VpcId;
82
86
  /**
83
87
  * The Amazon Resource Name (ARN) of the VPC.
84
88
  */
@@ -127,5 +131,6 @@ export interface VpcAttrs<Props extends VpcProps> {
127
131
  networkBorderGroup?: string;
128
132
  ipv6Pool?: string;
129
133
  }>;
134
+ tags?: Record<string, string>;
130
135
  }
131
136
  //# sourceMappingURL=vpc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vpc.d.ts","sourceRoot":"","sources":["../../../src/aws/ec2/vpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,eAAO,MAAM,GAAG,UACP,EAAE,SAAS,MAAM,QAAQ,KAAK,SAAS,QAAQ,MAChD,EAAE,SACC,KAAK,KACX,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;;;;;;;;;CACF,CAAC;AAElB,MAAM,WAAW,GAAG,CAClB,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,KAAK,SAAS,QAAQ,GAAG,QAAQ,CACjC,SAAQ,QAAQ,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;CAAG;AAEhE,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;IAEzC;;;OAGG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ,CAAC,KAAK,SAAS,QAAQ;IAC9C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,eAAe,QAAQ,IAAI,SAAS,QAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAEpE;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,uBAAuB,CAAC,EAAE,KAAK,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE;YACd,KAAK,EAAE,GAAG,CAAC,qBAAqB,CAAC;YACjC,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;KACH,CAAC,CAAC;IAEH;;OAEG;IACH,2BAA2B,CAAC,EAAE,KAAK,CAAC;QAClC,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,kBAAkB,EAAE;YAClB,KAAK,EAAE,GAAG,CAAC,qBAAqB,CAAC;YACjC,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"vpc.d.ts","sourceRoot":"","sources":["../../../src/aws/ec2/vpc.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import { Resource } from "../../resource.js";
2
2
  export const Vpc = Resource("AWS.EC2.VPC");
3
+ export const VpcId = (value) => value;
3
4
  //# sourceMappingURL=vpc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vpc.js","sourceRoot":"","sources":["../../../src/aws/ec2/vpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,MAAM,CAAC,MAAM,GAAG,GAAG,QAAQ,CAKxB,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"vpc.js","sourceRoot":"","sources":["../../../src/aws/ec2/vpc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,MAAM,CAAC,MAAM,GAAG,GAAG,QAAQ,CAKxB,aAAa,CAAC,CAAC;AAclB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAyB,KAAQ,EAAa,EAAE,CACnE,KAAkB,CAAC"}
@@ -1,7 +1,6 @@
1
- import { App } from "alchemy-effect";
2
1
  import { Account } from "../account.ts";
3
2
  import { Region } from "../region.ts";
4
3
  import { EC2Client } from "./client.ts";
5
4
  import { Vpc, type VpcProps } from "./vpc.ts";
6
- export declare const vpcProvider: () => import("effect/Layer").Layer<import("alchemy-effect").Provider<Vpc<string, VpcProps>>, never, App | Region | Account | EC2Client>;
5
+ export declare const vpcProvider: () => import("effect/Layer").Layer<import("../../provider.ts").Provider<Vpc<string, VpcProps>>, never, import("../../app.ts").App | Region | Account | EC2Client>;
7
6
  //# sourceMappingURL=vpc.provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vpc.provider.d.ts","sourceRoot":"","sources":["../../../src/aws/ec2/vpc.provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAwB,MAAM,gBAAgB,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,GAAG,EAAiB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAI7D,eAAO,MAAM,WAAW,yIAiMrB,CAAC"}
1
+ {"version":3,"file":"vpc.provider.d.ts","sourceRoot":"","sources":["../../../src/aws/ec2/vpc.provider.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,GAAG,EAAiB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7D,eAAO,MAAM,WAAW,mKAuMrB,CAAC"}