alchemy-effect 0.2.0 → 0.3.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 (428) hide show
  1. package/bin/alchemy-effect.js +55038 -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 +14 -74
  13. package/lib/apply.d.ts.map +1 -1
  14. package/lib/apply.js +62 -57
  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 +17 -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 +3 -0
  57. package/lib/aws/ec2/index.d.ts.map +1 -1
  58. package/lib/aws/ec2/index.js +3 -0
  59. package/lib/aws/ec2/index.js.map +1 -1
  60. package/lib/aws/ec2/subnet.d.ts +175 -0
  61. package/lib/aws/ec2/subnet.d.ts.map +1 -0
  62. package/lib/aws/ec2/subnet.js +4 -0
  63. package/lib/aws/ec2/subnet.js.map +1 -0
  64. package/lib/aws/ec2/subnet.provider.d.ts +4 -0
  65. package/lib/aws/ec2/subnet.provider.d.ts.map +1 -0
  66. package/lib/aws/ec2/subnet.provider.js +250 -0
  67. package/lib/aws/ec2/subnet.provider.js.map +1 -0
  68. package/lib/aws/ec2/vpc.d.ts +12 -8
  69. package/lib/aws/ec2/vpc.d.ts.map +1 -1
  70. package/lib/aws/ec2/vpc.js +1 -0
  71. package/lib/aws/ec2/vpc.js.map +1 -1
  72. package/lib/aws/ec2/vpc.provider.d.ts +3 -4
  73. package/lib/aws/ec2/vpc.provider.d.ts.map +1 -1
  74. package/lib/aws/ec2/vpc.provider.js +11 -26
  75. package/lib/aws/ec2/vpc.provider.js.map +1 -1
  76. package/lib/aws/index.d.ts +16 -19
  77. package/lib/aws/index.d.ts.map +1 -1
  78. package/lib/aws/index.js +7 -10
  79. package/lib/aws/index.js.map +1 -1
  80. package/lib/aws/lambda/consume.d.ts +10 -11
  81. package/lib/aws/lambda/consume.d.ts.map +1 -1
  82. package/lib/aws/lambda/consume.js +3 -3
  83. package/lib/aws/lambda/consume.js.map +1 -1
  84. package/lib/aws/lambda/function.d.ts +7 -7
  85. package/lib/aws/lambda/function.d.ts.map +1 -1
  86. package/lib/aws/lambda/function.handler.d.ts +1 -1
  87. package/lib/aws/lambda/function.handler.d.ts.map +1 -1
  88. package/lib/aws/lambda/function.handler.js.map +1 -1
  89. package/lib/aws/lambda/function.invoke.d.ts +6 -4
  90. package/lib/aws/lambda/function.invoke.d.ts.map +1 -1
  91. package/lib/aws/lambda/function.invoke.js +3 -1
  92. package/lib/aws/lambda/function.invoke.js.map +1 -1
  93. package/lib/aws/lambda/function.js +1 -1
  94. package/lib/aws/lambda/function.js.map +1 -1
  95. package/lib/aws/lambda/function.provider.d.ts +5 -4
  96. package/lib/aws/lambda/function.provider.d.ts.map +1 -1
  97. package/lib/aws/lambda/function.provider.js +16 -14
  98. package/lib/aws/lambda/function.provider.js.map +1 -1
  99. package/lib/aws/lambda/index.d.ts +1 -0
  100. package/lib/aws/lambda/index.d.ts.map +1 -1
  101. package/lib/aws/lambda/index.js +1 -0
  102. package/lib/aws/lambda/index.js.map +1 -1
  103. package/lib/aws/lambda/serve.d.ts +2 -4
  104. package/lib/aws/lambda/serve.d.ts.map +1 -1
  105. package/lib/aws/profile.d.ts +2 -2
  106. package/lib/aws/profile.d.ts.map +1 -1
  107. package/lib/aws/profile.js +1 -1
  108. package/lib/aws/profile.js.map +1 -1
  109. package/lib/aws/region.d.ts +14 -2
  110. package/lib/aws/region.d.ts.map +1 -1
  111. package/lib/aws/region.js +26 -1
  112. package/lib/aws/region.js.map +1 -1
  113. package/lib/aws/sqs/client.d.ts +1 -1
  114. package/lib/aws/sqs/client.d.ts.map +1 -1
  115. package/lib/aws/sqs/index.d.ts +1 -0
  116. package/lib/aws/sqs/index.d.ts.map +1 -1
  117. package/lib/aws/sqs/index.js +1 -0
  118. package/lib/aws/sqs/index.js.map +1 -1
  119. package/lib/aws/sqs/queue.consume.d.ts +1 -1
  120. package/lib/aws/sqs/queue.consume.d.ts.map +1 -1
  121. package/lib/aws/sqs/queue.consume.js +0 -1
  122. package/lib/aws/sqs/queue.consume.js.map +1 -1
  123. package/lib/aws/sqs/queue.d.ts +6 -4
  124. package/lib/aws/sqs/queue.d.ts.map +1 -1
  125. package/lib/aws/sqs/queue.event-source.d.ts +8 -6
  126. package/lib/aws/sqs/queue.event-source.d.ts.map +1 -1
  127. package/lib/aws/sqs/queue.event-source.js +26 -44
  128. package/lib/aws/sqs/queue.event-source.js.map +1 -1
  129. package/lib/aws/sqs/queue.js +1 -1
  130. package/lib/aws/sqs/queue.js.map +1 -1
  131. package/lib/aws/sqs/queue.provider.d.ts +4 -4
  132. package/lib/aws/sqs/queue.provider.d.ts.map +1 -1
  133. package/lib/aws/sqs/queue.provider.js +3 -3
  134. package/lib/aws/sqs/queue.provider.js.map +1 -1
  135. package/lib/aws/sqs/queue.send-message.d.ts +7 -5
  136. package/lib/aws/sqs/queue.send-message.d.ts.map +1 -1
  137. package/lib/aws/sqs/queue.send-message.js +4 -2
  138. package/lib/aws/sqs/queue.send-message.js.map +1 -1
  139. package/lib/binding.d.ts +12 -12
  140. package/lib/binding.d.ts.map +1 -1
  141. package/lib/binding.js.map +1 -1
  142. package/lib/cli/components/ApprovePlan.d.ts +2 -2
  143. package/lib/cli/components/ApprovePlan.d.ts.map +1 -1
  144. package/lib/cli/components/ApprovePlan.js.map +1 -1
  145. package/lib/cli/components/Plan.d.ts +2 -2
  146. package/lib/cli/components/Plan.d.ts.map +1 -1
  147. package/lib/cli/components/Plan.js.map +1 -1
  148. package/lib/cli/components/PlanProgress.d.ts +8 -4
  149. package/lib/cli/components/PlanProgress.d.ts.map +1 -1
  150. package/lib/cli/components/PlanProgress.js +11 -1
  151. package/lib/cli/components/PlanProgress.js.map +1 -1
  152. package/lib/cli/index.d.ts +265 -224
  153. package/lib/cli/index.d.ts.map +1 -1
  154. package/lib/cli/index.js +57 -65
  155. package/lib/cli/index.js.map +1 -1
  156. package/lib/cli/ink-service.d.ts +4 -0
  157. package/lib/cli/ink-service.d.ts.map +1 -0
  158. package/lib/cli/ink-service.js +43 -0
  159. package/lib/cli/ink-service.js.map +1 -0
  160. package/lib/cli/service.d.ts +21 -0
  161. package/lib/cli/service.d.ts.map +1 -0
  162. package/lib/cli/service.js +5 -0
  163. package/lib/cli/service.js.map +1 -0
  164. package/lib/cloudflare/account.d.ts +10 -0
  165. package/lib/cloudflare/account.d.ts.map +1 -0
  166. package/lib/cloudflare/account.js +24 -0
  167. package/lib/cloudflare/account.js.map +1 -0
  168. package/lib/cloudflare/api.d.ts +7 -7
  169. package/lib/cloudflare/api.d.ts.map +1 -1
  170. package/lib/cloudflare/api.js +18 -17
  171. package/lib/cloudflare/api.js.map +1 -1
  172. package/lib/cloudflare/config.d.ts +9 -0
  173. package/lib/cloudflare/config.d.ts.map +1 -0
  174. package/lib/cloudflare/config.js +1 -0
  175. package/lib/cloudflare/config.js.map +1 -0
  176. package/lib/cloudflare/index.d.ts +3 -1
  177. package/lib/cloudflare/index.d.ts.map +1 -1
  178. package/lib/cloudflare/index.js +3 -0
  179. package/lib/cloudflare/index.js.map +1 -1
  180. package/lib/cloudflare/kv/namespace.binding.d.ts +5 -3
  181. package/lib/cloudflare/kv/namespace.binding.d.ts.map +1 -1
  182. package/lib/cloudflare/kv/namespace.binding.js +1 -1
  183. package/lib/cloudflare/kv/namespace.binding.js.map +1 -1
  184. package/lib/cloudflare/kv/namespace.d.ts +3 -2
  185. package/lib/cloudflare/kv/namespace.d.ts.map +1 -1
  186. package/lib/cloudflare/kv/namespace.js.map +1 -1
  187. package/lib/cloudflare/kv/namespace.provider.d.ts +3 -2
  188. package/lib/cloudflare/kv/namespace.provider.d.ts.map +1 -1
  189. package/lib/cloudflare/kv/namespace.provider.js +8 -7
  190. package/lib/cloudflare/kv/namespace.provider.js.map +1 -1
  191. package/lib/cloudflare/live.d.ts +5 -5
  192. package/lib/cloudflare/live.d.ts.map +1 -1
  193. package/lib/cloudflare/live.js +5 -8
  194. package/lib/cloudflare/live.js.map +1 -1
  195. package/lib/cloudflare/r2/bucket.binding.d.ts +5 -3
  196. package/lib/cloudflare/r2/bucket.binding.d.ts.map +1 -1
  197. package/lib/cloudflare/r2/bucket.binding.js +1 -1
  198. package/lib/cloudflare/r2/bucket.binding.js.map +1 -1
  199. package/lib/cloudflare/r2/bucket.d.ts +3 -2
  200. package/lib/cloudflare/r2/bucket.d.ts.map +1 -1
  201. package/lib/cloudflare/r2/bucket.js.map +1 -1
  202. package/lib/cloudflare/r2/bucket.provider.d.ts +3 -2
  203. package/lib/cloudflare/r2/bucket.provider.d.ts.map +1 -1
  204. package/lib/cloudflare/r2/bucket.provider.js +8 -7
  205. package/lib/cloudflare/r2/bucket.provider.js.map +1 -1
  206. package/lib/cloudflare/worker/assets.fetch.d.ts +3 -2
  207. package/lib/cloudflare/worker/assets.fetch.d.ts.map +1 -1
  208. package/lib/cloudflare/worker/assets.fetch.js +2 -1
  209. package/lib/cloudflare/worker/assets.fetch.js.map +1 -1
  210. package/lib/cloudflare/worker/assets.provider.d.ts +1 -1
  211. package/lib/cloudflare/worker/assets.provider.d.ts.map +1 -1
  212. package/lib/cloudflare/worker/index.d.ts +0 -1
  213. package/lib/cloudflare/worker/index.d.ts.map +1 -1
  214. package/lib/cloudflare/worker/worker.d.ts +5 -6
  215. package/lib/cloudflare/worker/worker.d.ts.map +1 -1
  216. package/lib/cloudflare/worker/worker.handler.d.ts +1 -1
  217. package/lib/cloudflare/worker/worker.handler.d.ts.map +1 -1
  218. package/lib/cloudflare/worker/worker.handler.js.map +1 -1
  219. package/lib/cloudflare/worker/worker.js.map +1 -1
  220. package/lib/cloudflare/worker/worker.provider.d.ts +3 -2
  221. package/lib/cloudflare/worker/worker.provider.d.ts.map +1 -1
  222. package/lib/cloudflare/worker/worker.provider.js +7 -6
  223. package/lib/cloudflare/worker/worker.provider.js.map +1 -1
  224. package/lib/cloudflare/worker/worker.serve.d.ts +7 -7
  225. package/lib/cloudflare/worker/worker.serve.d.ts.map +1 -1
  226. package/lib/cloudflare/worker/worker.serve.js.map +1 -1
  227. package/lib/data.d.ts +3 -0
  228. package/lib/data.d.ts.map +1 -0
  229. package/lib/data.js +8 -0
  230. package/lib/data.js.map +1 -0
  231. package/lib/destroy.d.ts +1 -1
  232. package/lib/destroy.d.ts.map +1 -1
  233. package/lib/destroy.js +1 -4
  234. package/lib/destroy.js.map +1 -1
  235. package/lib/diff.d.ts +16 -0
  236. package/lib/diff.d.ts.map +1 -0
  237. package/lib/diff.js +9 -0
  238. package/lib/diff.js.map +1 -0
  239. package/lib/env.d.ts +5 -0
  240. package/lib/env.d.ts.map +1 -1
  241. package/lib/env.js +15 -29
  242. package/lib/env.js.map +1 -1
  243. package/lib/exports.d.ts +9 -0
  244. package/lib/exports.d.ts.map +1 -0
  245. package/lib/exports.js +13 -0
  246. package/lib/exports.js.map +1 -0
  247. package/lib/index.d.ts +10 -2
  248. package/lib/index.d.ts.map +1 -1
  249. package/lib/index.js +10 -5
  250. package/lib/index.js.map +1 -1
  251. package/lib/input.d.ts +32 -0
  252. package/lib/input.d.ts.map +1 -0
  253. package/lib/input.js +1 -0
  254. package/lib/input.js.map +1 -0
  255. package/lib/output.d.ts +143 -0
  256. package/lib/output.d.ts.map +1 -0
  257. package/lib/output.js +269 -0
  258. package/lib/output.js.map +1 -0
  259. package/lib/plan.d.ts +47 -28
  260. package/lib/plan.d.ts.map +1 -1
  261. package/lib/plan.js +257 -151
  262. package/lib/plan.js.map +1 -1
  263. package/lib/policy.d.ts +3 -4
  264. package/lib/policy.d.ts.map +1 -1
  265. package/lib/policy.js +0 -1
  266. package/lib/policy.js.map +1 -1
  267. package/lib/provider.d.ts +14 -16
  268. package/lib/provider.d.ts.map +1 -1
  269. package/lib/ref.d.ts +14 -0
  270. package/lib/ref.d.ts.map +1 -0
  271. package/lib/ref.js +21 -0
  272. package/lib/ref.js.map +1 -0
  273. package/lib/resource.d.ts +11 -6
  274. package/lib/resource.d.ts.map +1 -1
  275. package/lib/resource.js.map +1 -1
  276. package/lib/runtime.d.ts +7 -6
  277. package/lib/runtime.d.ts.map +1 -1
  278. package/lib/runtime.js.map +1 -1
  279. package/lib/service.d.ts +9 -6
  280. package/lib/service.d.ts.map +1 -1
  281. package/lib/service.js.map +1 -1
  282. package/lib/stack.d.ts +60 -0
  283. package/lib/stack.d.ts.map +1 -0
  284. package/lib/stack.js +11 -0
  285. package/lib/stack.js.map +1 -0
  286. package/lib/stage.d.ts +39 -0
  287. package/lib/stage.d.ts.map +1 -0
  288. package/lib/stage.js +32 -0
  289. package/lib/stage.js.map +1 -0
  290. package/lib/state.d.ts +51 -10
  291. package/lib/state.d.ts.map +1 -1
  292. package/lib/state.js +30 -29
  293. package/lib/state.js.map +1 -1
  294. package/lib/test.d.ts +25 -4
  295. package/lib/test.d.ts.map +1 -1
  296. package/lib/test.js +54 -14
  297. package/lib/test.js.map +1 -1
  298. package/lib/tsconfig.test.tsbuildinfo +1 -1
  299. package/lib/type.d.ts +3 -0
  300. package/lib/type.d.ts.map +1 -1
  301. package/lib/unknown.d.ts +4 -0
  302. package/lib/unknown.d.ts.map +1 -0
  303. package/lib/unknown.js +4 -0
  304. package/lib/unknown.js.map +1 -0
  305. package/lib/user.d.ts +3 -0
  306. package/lib/user.d.ts.map +1 -0
  307. package/lib/user.js +3 -0
  308. package/lib/user.js.map +1 -0
  309. package/lib/util.d.ts +6 -0
  310. package/lib/util.d.ts.map +1 -0
  311. package/lib/util.js +9 -0
  312. package/lib/util.js.map +1 -0
  313. package/package.json +18 -12
  314. package/src/$.ts +17 -0
  315. package/src/app.ts +3 -32
  316. package/src/apply.ts +429 -441
  317. package/src/assert-never.ts +18 -0
  318. package/src/aws/account.ts +23 -3
  319. package/src/aws/client.ts +0 -1
  320. package/src/aws/config.ts +16 -0
  321. package/src/aws/credentials.ts +212 -177
  322. package/src/aws/dynamodb/index.ts +3 -3
  323. package/src/aws/dynamodb/table.get-item.ts +5 -9
  324. package/src/aws/dynamodb/table.provider.ts +35 -39
  325. package/src/aws/dynamodb/table.ts +29 -84
  326. package/src/aws/ec2/index.ts +4 -0
  327. package/src/aws/ec2/subnet.provider.ts +358 -0
  328. package/src/aws/ec2/subnet.ts +213 -0
  329. package/src/aws/ec2/vpc.provider.ts +20 -36
  330. package/src/aws/ec2/vpc.ts +19 -8
  331. package/src/aws/index.ts +46 -40
  332. package/src/aws/lambda/consume.ts +8 -7
  333. package/src/aws/lambda/function.handler.ts +1 -1
  334. package/src/aws/lambda/function.invoke.ts +6 -2
  335. package/src/aws/lambda/function.provider.ts +28 -21
  336. package/src/aws/lambda/function.ts +7 -4
  337. package/src/aws/lambda/index.ts +2 -0
  338. package/src/aws/profile.ts +1 -4
  339. package/src/aws/region.ts +42 -3
  340. package/src/aws/sqs/index.ts +2 -0
  341. package/src/aws/sqs/queue.consume.ts +1 -1
  342. package/src/aws/sqs/queue.event-source.ts +29 -55
  343. package/src/aws/sqs/queue.provider.ts +11 -4
  344. package/src/aws/sqs/queue.send-message.ts +5 -8
  345. package/src/aws/sqs/queue.ts +9 -4
  346. package/src/binding.ts +19 -19
  347. package/src/cli/components/ApprovePlan.tsx +2 -2
  348. package/src/cli/components/Plan.tsx +3 -2
  349. package/src/cli/components/PlanProgress.tsx +32 -14
  350. package/src/cli/index.ts +2 -6
  351. package/src/cli/ink-service.tsx +61 -0
  352. package/src/cli/service.ts +23 -0
  353. package/src/cloudflare/account.ts +37 -0
  354. package/src/cloudflare/api.ts +33 -29
  355. package/src/cloudflare/config.ts +7 -0
  356. package/src/cloudflare/index.ts +3 -1
  357. package/src/cloudflare/kv/namespace.binding.ts +3 -1
  358. package/src/cloudflare/kv/namespace.provider.ts +9 -8
  359. package/src/cloudflare/kv/namespace.ts +3 -2
  360. package/src/cloudflare/live.ts +11 -17
  361. package/src/cloudflare/r2/bucket.binding.ts +3 -1
  362. package/src/cloudflare/r2/bucket.provider.ts +9 -8
  363. package/src/cloudflare/r2/bucket.ts +8 -2
  364. package/src/cloudflare/worker/assets.fetch.ts +3 -1
  365. package/src/cloudflare/worker/assets.provider.ts +1 -1
  366. package/src/cloudflare/worker/index.ts +0 -2
  367. package/src/cloudflare/worker/worker.handler.ts +1 -1
  368. package/src/cloudflare/worker/worker.provider.ts +16 -13
  369. package/src/cloudflare/worker/worker.serve.ts +5 -2
  370. package/src/cloudflare/worker/worker.ts +4 -3
  371. package/src/data.ts +18 -0
  372. package/src/destroy.ts +1 -5
  373. package/src/diff.ts +30 -0
  374. package/src/env.ts +20 -32
  375. package/src/exports.ts +21 -0
  376. package/src/index.ts +10 -5
  377. package/src/input.ts +81 -0
  378. package/src/output.ts +518 -0
  379. package/src/plan.ts +380 -192
  380. package/src/policy.ts +3 -5
  381. package/src/provider.ts +25 -23
  382. package/src/ref.ts +48 -0
  383. package/src/resource.ts +20 -6
  384. package/src/runtime.ts +15 -8
  385. package/src/service.ts +11 -7
  386. package/src/stack.ts +116 -0
  387. package/src/stage.ts +85 -0
  388. package/src/state.ts +138 -60
  389. package/src/test.ts +117 -16
  390. package/src/type.ts +4 -0
  391. package/src/unknown.ts +6 -0
  392. package/src/user.ts +4 -0
  393. package/src/util.ts +21 -0
  394. package/lib/approve.d.ts +0 -15
  395. package/lib/approve.d.ts.map +0 -1
  396. package/lib/approve.js +0 -7
  397. package/lib/approve.js.map +0 -1
  398. package/lib/cli/approve.d.ts +0 -4
  399. package/lib/cli/approve.d.ts.map +0 -1
  400. package/lib/cli/approve.js +0 -18
  401. package/lib/cli/approve.js.map +0 -1
  402. package/lib/cli/clack.d.ts +0 -14
  403. package/lib/cli/clack.d.ts.map +0 -1
  404. package/lib/cli/clack.js +0 -12
  405. package/lib/cli/clack.js.map +0 -1
  406. package/lib/cli/main.d.ts +0 -2
  407. package/lib/cli/main.d.ts.map +0 -1
  408. package/lib/cli/main.js +0 -1
  409. package/lib/cli/main.js.map +0 -1
  410. package/lib/cli/plan.d.ts +0 -13
  411. package/lib/cli/plan.d.ts.map +0 -1
  412. package/lib/cli/plan.js +0 -1
  413. package/lib/cli/plan.js.map +0 -1
  414. package/lib/cli/progress.d.ts +0 -7
  415. package/lib/cli/progress.d.ts.map +0 -1
  416. package/lib/cli/progress.js +0 -30
  417. package/lib/cli/progress.js.map +0 -1
  418. package/lib/cli/spinner.d.ts +0 -2
  419. package/lib/cli/spinner.d.ts.map +0 -1
  420. package/lib/cli/spinner.js +0 -13
  421. package/lib/cli/spinner.js.map +0 -1
  422. package/src/approve.ts +0 -13
  423. package/src/cli/approve.tsx +0 -30
  424. package/src/cli/clack.ts +0 -22
  425. package/src/cli/main.ts +0 -0
  426. package/src/cli/plan.ts +0 -16
  427. package/src/cli/progress.tsx +0 -46
  428. package/src/cli/spinner.ts +0 -14
@@ -1,18 +1,18 @@
1
- import * as Data from "effect/Data";
2
1
  import * as Effect from "effect/Effect";
3
2
  import * as Layer from "effect/Layer";
4
3
  import * as Schedule from "effect/Schedule";
5
4
 
6
- import { App, type Provider, type ProviderService } from "alchemy-effect";
7
5
  import type { TimeToLiveSpecification } from "itty-aws/dynamodb";
6
+ import { App } from "../../app.ts";
7
+ import type { Input } from "../../input.ts";
8
+ import type { Provider, ProviderService } from "../../provider.ts";
8
9
  import { createTagger, hasTags } from "../../tags.ts";
9
- import { Account } from "../account.ts";
10
- import { Region } from "../region.ts";
11
10
  import { isScalarAttributeType, toAttributeType } from "./attribute-value.ts";
12
11
  import { DynamoDBClient } from "./client.ts";
13
12
  import {
14
13
  Table,
15
14
  type AnyTable,
15
+ type AttributesSchema,
16
16
  type TableAttrs,
17
17
  type TableProps,
18
18
  } from "./table.ts";
@@ -20,23 +20,22 @@ import {
20
20
  // we add an explict type to simplify the Layer type errors because the Table interface has a lot of type args
21
21
  export const tableProvider = (): Layer.Layer<
22
22
  Provider<AnyTable>,
23
- any,
24
- App | DynamoDBClient | Region | Account
23
+ never,
24
+ App | DynamoDBClient
25
25
  > =>
26
26
  Table.provider.effect(
27
- // @ts-expect-error
28
27
  Effect.gen(function* () {
29
28
  const dynamodb = yield* DynamoDBClient;
30
29
  const app = yield* App;
31
- const region = yield* Region;
32
- const accountId = yield* Account;
33
30
 
34
- const createTableName = (id: string, props: TableProps) =>
35
- props.tableName ?? `${app.name}-${id}-${app.stage}`;
31
+ const createTableName = (
32
+ id: string,
33
+ props: Input.ResolveProps<TableProps>,
34
+ ) => props.tableName ?? `${app.name}-${id}-${app.stage}`;
36
35
 
37
36
  const tagged = yield* createTagger();
38
37
 
39
- const toKeySchema = (props: TableProps) => [
38
+ const toKeySchema = (props: Input.ResolveProps<TableProps>) => [
40
39
  {
41
40
  AttributeName: props.partitionKey as string,
42
41
  KeyType: "HASH" as const,
@@ -51,8 +50,10 @@ export const tableProvider = (): Layer.Layer<
51
50
  : []),
52
51
  ];
53
52
 
54
- const toAttributeDefinitions = (props: TableProps) =>
55
- Object.entries(props.attributes)
53
+ const toAttributeDefinitions = (
54
+ attributes: AttributesSchema<any, any, any>,
55
+ ) =>
56
+ Object.entries(attributes)
56
57
  .flatMap(([name, schema]) => {
57
58
  const type = toAttributeType(schema);
58
59
  if (isScalarAttributeType(type)) {
@@ -69,9 +70,11 @@ export const tableProvider = (): Layer.Layer<
69
70
  })
70
71
  .sort((a, b) => a.AttributeName.localeCompare(b.AttributeName));
71
72
 
72
- const toAttributeDefinitionsMap = (props: TableProps) =>
73
+ const toAttributeDefinitionsMap = (
74
+ attributes: AttributesSchema<any, any, any>,
75
+ ) =>
73
76
  Object.fromEntries(
74
- toAttributeDefinitions(props).map(
77
+ toAttributeDefinitions(attributes).map(
75
78
  (def) => [def.AttributeName, def.AttributeType] as const,
76
79
  ),
77
80
  );
@@ -83,6 +86,7 @@ export const tableProvider = (): Layer.Layer<
83
86
  Effect.flatMap((r) =>
84
87
  dynamodb
85
88
  .listTagsOfResource({
89
+ // oxlint-disable-next-line no-non-null-asserted-optional-chain
86
90
  ResourceArn: r.Table?.TableArn!,
87
91
  })
88
92
  .pipe(
@@ -116,34 +120,26 @@ export const tableProvider = (): Layer.Layer<
116
120
  );
117
121
 
118
122
  return {
119
- diff: Effect.fn(function* ({ id, news, olds }) {
120
- const oldTableName = createTableName(id, olds);
121
- const newTableName = createTableName(id, news);
122
- if (oldTableName !== newTableName) {
123
- // TODO(sam): if the name is hard-coded, REPLACE is impossible - we need a suffix
124
- return { action: "replace" } as const;
125
- }
126
-
123
+ diff: Effect.fn(function* ({ news, olds }) {
127
124
  if (
125
+ // TODO(sam): if the name is hard-coded, REPLACE is impossible - we need a suffix
126
+ news.tableName !== olds.tableName ||
128
127
  olds.partitionKey !== news.partitionKey ||
129
128
  olds.sortKey !== news.sortKey
130
129
  ) {
131
130
  return { action: "replace" } as const;
132
131
  }
133
- const oldAttributeDefinitions = toAttributeDefinitionsMap(olds);
134
- const newAttributeDefinitions = toAttributeDefinitionsMap(news);
135
- for (const [name, type] of Object.entries(oldAttributeDefinitions)) {
132
+ const oldAttrs = toAttributeDefinitionsMap(olds.attributes);
133
+ const newAttrs = toAttributeDefinitionsMap(news.attributes);
134
+ for (const [name, type] of Object.entries(oldAttrs)) {
136
135
  // CloudFormation requires that editing an existing AttributeDefinition is a replace
137
- if (newAttributeDefinitions[name] !== type) {
136
+ if (newAttrs[name] !== type) {
138
137
  return { action: "replace" } as const;
139
138
  }
140
139
  }
141
-
142
140
  // TODO(sam):
143
141
  // Replacements:
144
142
  // 1. if you change ImportSourceSpecification
145
-
146
- return { action: "noop" } as const;
147
143
  }),
148
144
 
149
145
  create: Effect.fn(function* ({ id, news, session }) {
@@ -154,7 +150,7 @@ export const tableProvider = (): Layer.Layer<
154
150
  TableName: tableName,
155
151
  TableClass: news.tableClass,
156
152
  KeySchema: toKeySchema(news),
157
- AttributeDefinitions: toAttributeDefinitions(news),
153
+ AttributeDefinitions: toAttributeDefinitions(news.attributes),
158
154
  BillingMode: news.billingMode ?? "PAY_PER_REQUEST",
159
155
  SSESpecification: news.sseSpecification,
160
156
  WarmThroughput: news.warmThroughput,
@@ -194,17 +190,19 @@ export const tableProvider = (): Layer.Layer<
194
190
  return {
195
191
  tableName,
196
192
  tableId: response.TableId!,
197
- tableArn: response.TableArn! as TableAttrs<TableProps>["tableArn"],
193
+ tableArn: response.TableArn! as TableAttrs<
194
+ Input.Resolve<TableProps>
195
+ >["tableArn"],
198
196
  partitionKey: news.partitionKey,
199
197
  sortKey: news.sortKey,
200
- } satisfies TableAttrs<TableProps> as TableAttrs<any>;
198
+ } satisfies TableAttrs<Input.Resolve<TableProps>> as TableAttrs<any>;
201
199
  }),
202
200
 
203
201
  update: Effect.fn(function* ({ output, news, olds }) {
204
202
  yield* dynamodb.updateTable({
205
203
  TableName: output.tableName,
206
204
  TableClass: news.tableClass,
207
- AttributeDefinitions: toAttributeDefinitions(news),
205
+ AttributeDefinitions: toAttributeDefinitions(news.attributes),
208
206
  BillingMode: news.billingMode ?? "PAY_PER_REQUEST",
209
207
  SSESpecification: news.sseSpecification,
210
208
  WarmThroughput: news.warmThroughput,
@@ -255,12 +253,10 @@ export const tableProvider = (): Layer.Layer<
255
253
  e._tag === "ResourceInUseException" ||
256
254
  e._tag === "InternalServerError" ||
257
255
  e._tag === "TimeoutException",
258
- schedule: Schedule.fixed(100),
256
+ schedule: Schedule.exponential(100),
259
257
  }),
260
258
  );
261
259
 
262
- class TableStillExists extends Data.TaggedError("TableStillExists") {}
263
-
264
260
  while (true) {
265
261
  const table = yield* dynamodb
266
262
  .describeTable({
@@ -275,6 +271,6 @@ export const tableProvider = (): Layer.Layer<
275
271
  }
276
272
  }
277
273
  }),
278
- } satisfies ProviderService<Table<string, TableProps>>;
274
+ } satisfies ProviderService<Table<string, TableProps<unknown>>>;
279
275
  }),
280
276
  );
@@ -1,13 +1,13 @@
1
1
  import * as S from "effect/Schema";
2
+ import type { Input } from "../../input.ts";
2
3
  import { Resource } from "../../resource.ts";
3
4
  import type { type } from "../../type.ts";
4
5
  import type { AccountID } from "../account.ts";
5
6
  import type { RegionID } from "../region.ts";
6
-
7
7
  import type * as DynamoDB from "itty-aws/dynamodb";
8
8
 
9
9
  export interface TableProps<
10
- Items = any,
10
+ Items extends any = any,
11
11
  Attributes extends AttributesSchema<
12
12
  Items,
13
13
  PartitionKey,
@@ -15,42 +15,23 @@ export interface TableProps<
15
15
  > = AttributesSchema<Items, keyof Items, keyof Items | undefined>,
16
16
  PartitionKey extends keyof Items = keyof Items,
17
17
  SortKey extends keyof Items | undefined = keyof Items | undefined,
18
- BillingMode extends DynamoDB.BillingMode = DynamoDB.BillingMode,
19
- SSESpecification extends DynamoDB.SSESpecification | undefined =
20
- | DynamoDB.SSESpecification
21
- | undefined,
22
- TimeToLiveSpecification extends
23
- | DynamoDB.TimeToLiveSpecification
24
- | undefined = DynamoDB.TimeToLiveSpecification | undefined,
25
- WarmThroughput extends DynamoDB.WarmThroughput | undefined =
26
- | DynamoDB.WarmThroughput
27
- | undefined,
28
- OnDemandThroughput extends DynamoDB.OnDemandThroughput | undefined =
29
- | DynamoDB.OnDemandThroughput
30
- | undefined,
31
- ProvisionedThroughput extends DynamoDB.ProvisionedThroughput | undefined =
32
- | DynamoDB.ProvisionedThroughput
33
- | undefined,
34
- TableClass extends DynamoDB.TableClass | undefined =
35
- | DynamoDB.TableClass
36
- | undefined,
37
18
  > {
38
19
  items: type<Items>;
39
- tableName?: string;
40
20
  attributes: Attributes;
41
21
  partitionKey: PartitionKey;
42
22
  sortKey?: SortKey;
43
- billingMode?: BillingMode;
23
+ tableName?: string | undefined;
24
+ billingMode?: DynamoDB.BillingMode;
44
25
  deletionProtectionEnabled?: boolean;
45
- onDemandThroughput?: OnDemandThroughput;
46
- provisionedThroughput?: ProvisionedThroughput;
47
- sseSpecification?: SSESpecification;
48
- timeToLiveSpecification?: TimeToLiveSpecification;
49
- warmThroughput?: WarmThroughput;
50
- tableClass?: TableClass;
26
+ onDemandThroughput?: DynamoDB.OnDemandThroughput;
27
+ provisionedThroughput?: DynamoDB.ProvisionedThroughput;
28
+ sseSpecification?: DynamoDB.SSESpecification;
29
+ timeToLiveSpecification?: DynamoDB.TimeToLiveSpecification;
30
+ warmThroughput?: DynamoDB.WarmThroughput;
31
+ tableClass?: DynamoDB.TableClass;
51
32
  }
52
33
 
53
- export interface TableAttrs<Props extends TableProps> {
34
+ export interface TableAttrs<Props extends Input.Resolve<TableProps>> {
54
35
  tableName: Props["tableName"] extends string ? Props["tableName"] : string;
55
36
  tableId: string;
56
37
  tableArn: `arn:aws:dynamodb:${RegionID}:${AccountID}:table/${this["tableName"]}`;
@@ -86,71 +67,35 @@ export const Table = Resource<{
86
67
  >,
87
68
  const PartitionKey extends keyof Items,
88
69
  const SortKey extends keyof Items | undefined = undefined,
89
- const BillingMode extends DynamoDB.BillingMode = "PAY_PER_REQUEST",
90
- const SSESpecification extends
91
- | DynamoDB.SSESpecification
92
- | undefined = undefined,
93
- const TimeToLiveSpecification extends
94
- | DynamoDB.TimeToLiveSpecification
95
- | undefined = undefined,
96
- const WarmThroughput extends
97
- | DynamoDB.WarmThroughput
98
- | undefined = undefined,
99
- const OnDemandThroughput extends
100
- | DynamoDB.OnDemandThroughput
101
- | undefined = undefined,
102
- const ProvisionedThroughput extends
103
- | DynamoDB.ProvisionedThroughput
104
- | undefined = undefined,
105
- const TableClass extends DynamoDB.TableClass | undefined = undefined,
106
70
  >(
107
71
  id: ID,
108
- props: TableProps<
109
- Items,
110
- Attributes,
111
- PartitionKey,
112
- SortKey,
113
- BillingMode,
114
- SSESpecification,
115
- TimeToLiveSpecification,
116
- WarmThroughput,
117
- OnDemandThroughput,
118
- ProvisionedThroughput,
119
- TableClass
120
- >,
121
- ): Table<
122
- ID,
123
- TableProps<
124
- Items,
125
- Attributes,
126
- PartitionKey,
127
- SortKey,
128
- BillingMode,
129
- SSESpecification,
130
- TimeToLiveSpecification,
131
- WarmThroughput,
132
- OnDemandThroughput,
133
- ProvisionedThroughput,
134
- TableClass
135
- >
136
- >;
72
+ props: TableProps<Items, Attributes, PartitionKey, SortKey>,
73
+ ): Table<ID, TableProps<Items, Attributes, PartitionKey, SortKey>>;
137
74
  }>("AWS.DynamoDB.Table");
138
75
 
139
76
  export interface AnyTable extends Table<string, any> {}
140
77
 
141
78
  export interface Table<
142
79
  ID extends string = string,
143
- Props extends TableProps = TableProps,
144
- > extends Resource<"AWS.DynamoDB.Table", ID, Props, TableAttrs<Props>> {}
80
+ Props extends TableProps<any, any, any, any> = TableProps<any, any, any, any>,
81
+ > extends Resource<
82
+ "AWS.DynamoDB.Table",
83
+ ID,
84
+ Props,
85
+ TableAttrs<Input.Resolve<Props>>,
86
+ Table
87
+ > {}
145
88
 
146
89
  export declare namespace Table {
147
90
  export type PartitionKey<T extends Table> = T["props"]["partitionKey"];
148
91
  export type SortKey<T extends Table> = T["props"]["sortKey"];
92
+ export type Items<T extends Table> = T["props"]["items"];
149
93
  export type Key<T extends Table> = {
150
- [K in PartitionKey<T>]: T["props"]["attributes"][K];
151
- } & SortKey<T> extends infer S extends string
152
- ? {
153
- [K in S]: T["props"]["attributes"][K];
154
- }
155
- : {};
94
+ [K in PartitionKey<T>]: InstanceType<T["props"]["items"]>[K];
95
+ } & {
96
+ [K in Exclude<SortKey<T>, undefined>]: Exclude<
97
+ InstanceType<T["props"]["items"]>[K],
98
+ undefined
99
+ >;
100
+ };
156
101
  }
@@ -1,3 +1,7 @@
1
1
  export * from "./client.ts";
2
+ export * from "./subnet.provider.ts";
3
+ export * from "./subnet.ts";
2
4
  export * from "./vpc.provider.ts";
3
5
  export * from "./vpc.ts";
6
+
7
+ import "../config.ts";