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
package/src/state.ts CHANGED
@@ -5,7 +5,6 @@ import * as Context from "effect/Context";
5
5
  import * as Data from "effect/Data";
6
6
  import * as Effect from "effect/Effect";
7
7
  import * as Layer from "effect/Layer";
8
- import { App } from "./app.ts";
9
8
  import type { BindNode } from "./plan.ts";
10
9
  import { isResource } from "./resource.ts";
11
10
 
@@ -75,18 +74,29 @@ export class StateStoreError extends Data.TaggedError("StateStoreError")<{
75
74
  }> {}
76
75
 
77
76
  export interface StateService {
78
- listApps(): Effect.Effect<string[], StateStoreError, never>;
79
- listStages(appName?: string): Effect.Effect<string[], StateStoreError, never>;
77
+ listStacks(): Effect.Effect<string[], StateStoreError, never>;
78
+ listStages(stack: string): Effect.Effect<string[], StateStoreError, never>;
80
79
  // stub
81
- get(
82
- id: string,
83
- ): Effect.Effect<ResourceState | undefined, StateStoreError, never>;
84
- set<V extends ResourceState>(
85
- id: string,
86
- value: V,
87
- ): Effect.Effect<V, StateStoreError, never>;
88
- delete(id: string): Effect.Effect<void, StateStoreError, never>;
89
- list(): Effect.Effect<string[], StateStoreError, never>;
80
+ get(request: {
81
+ stack: string;
82
+ stage: string;
83
+ resourceId: string;
84
+ }): Effect.Effect<ResourceState | undefined, StateStoreError, never>;
85
+ set<V extends ResourceState>(request: {
86
+ stack: string;
87
+ stage: string;
88
+ resourceId: string;
89
+ value: V;
90
+ }): Effect.Effect<V, StateStoreError, never>;
91
+ delete(request: {
92
+ stack: string;
93
+ stage: string;
94
+ resourceId: string;
95
+ }): Effect.Effect<void, StateStoreError, never>;
96
+ list(request: {
97
+ stack: string;
98
+ stage: string;
99
+ }): Effect.Effect<string[], StateStoreError, never>;
90
100
  }
91
101
 
92
102
  export class State extends Context.Tag("AWS::Lambda::State")<
@@ -97,14 +107,12 @@ export class State extends Context.Tag("AWS::Lambda::State")<
97
107
  // TODO(sam): implement with SQLite3
98
108
  export const localFs = Layer.effect(
99
109
  State,
110
+ // @ts-expect-error -
100
111
  Effect.gen(function* () {
101
- const app = yield* App;
102
112
  const fs = yield* FileSystem.FileSystem;
103
113
  const path = yield* Path.Path;
104
114
  const dotAlchemy = path.join(process.cwd(), ".alchemy");
105
115
  const stateDir = path.join(dotAlchemy, "state");
106
- const appDir = path.join(stateDir, app.name);
107
- const stageDir = path.join(appDir, app.stage);
108
116
 
109
117
  const fail = (err: PlatformError) =>
110
118
  Effect.fail(
@@ -121,9 +129,22 @@ export const localFs = Layer.effect(
121
129
  Effect.catchTag("BadArgument", (e) => fail(e)),
122
130
  );
123
131
 
124
- const resourceFile = (id: string) => path.join(stageDir, `${id}.json`);
132
+ const stage = ({ stack, stage }: { stack: string; stage: string }) =>
133
+ path.join(stateDir, stack, stage);
125
134
 
126
- yield* fs.makeDirectory(stageDir, { recursive: true });
135
+ const resource = ({
136
+ stack,
137
+ stage,
138
+ resourceId,
139
+ }: {
140
+ stack: string;
141
+ stage: string;
142
+ resourceId: string;
143
+ }) => path.join(stateDir, stack, stage, `${resourceId}.json`);
144
+
145
+ const ensure = yield* Effect.cachedFunction((dir: string) =>
146
+ fs.makeDirectory(dir, { recursive: true }),
147
+ );
127
148
 
128
149
  return {
129
150
  listApps: () =>
@@ -131,43 +152,44 @@ export const localFs = Layer.effect(
131
152
  recover,
132
153
  Effect.map((files) => files ?? []),
133
154
  ),
134
- listStages: (appName: string = app.name) =>
135
- fs.readDirectory(path.join(stateDir, appName)).pipe(
155
+ listStages: (stack: string) =>
156
+ fs.readDirectory(path.join(stateDir, stack)).pipe(
136
157
  recover,
137
158
  Effect.map((files) => files ?? []),
138
159
  ),
139
- get: (id) =>
140
- fs.readFile(resourceFile(id)).pipe(
160
+ get: (request) =>
161
+ fs.readFile(resource(request)).pipe(
141
162
  Effect.map((file) => JSON.parse(file.toString())),
142
163
  recover,
143
164
  ),
144
- set: <V extends ResourceState>(id: string, value: V) =>
145
- fs
146
- .writeFileString(
147
- resourceFile(id),
148
- JSON.stringify(
149
- value,
150
- (k, v) => {
151
- if (isResource(v)) {
152
- return {
153
- id: v.id,
154
- type: v.type,
155
- props: v.props,
156
- attr: v.attr,
157
- };
158
- }
159
- return v;
160
- },
161
- 2,
165
+ set: (request) =>
166
+ ensure(stage(request)).pipe(
167
+ Effect.flatMap(() =>
168
+ fs.writeFileString(
169
+ resource(request),
170
+ JSON.stringify(
171
+ request.value,
172
+ (k, v) => {
173
+ if (isResource(v)) {
174
+ return {
175
+ id: v.id,
176
+ type: v.type,
177
+ props: v.props,
178
+ attr: v.attr,
179
+ };
180
+ }
181
+ return v;
182
+ },
183
+ 2,
184
+ ),
162
185
  ),
163
- )
164
- .pipe(
165
- recover,
166
- Effect.map(() => value),
167
186
  ),
168
- delete: (id) => fs.remove(resourceFile(id)).pipe(recover),
169
- list: () =>
170
- fs.readDirectory(stageDir).pipe(
187
+ recover,
188
+ Effect.map(() => request.value),
189
+ ),
190
+ delete: (request) => fs.remove(resource(request)).pipe(recover),
191
+ list: (request) =>
192
+ fs.readDirectory(stage(request)).pipe(
171
193
  recover,
172
194
  Effect.map(
173
195
  (files) => files?.map((file) => file.replace(/\.json$/, "")) ?? [],
@@ -177,21 +199,77 @@ export const localFs = Layer.effect(
177
199
  }),
178
200
  );
179
201
 
180
- export const inMemory = () => {
181
- const state = new Map<string, any>();
182
- return Layer.succeed(State, {
183
- listApps: () => Effect.succeed([]),
202
+ type StackId = string;
203
+ type StageId = string;
204
+ type ResourceId = string;
205
+
206
+ export const inMemory = (
207
+ initialState: Record<
208
+ StackId,
209
+ Record<StageId, Record<ResourceId, ResourceState>>
210
+ > = {},
211
+ ) =>
212
+ Layer.succeed(State, inMemoryService(initialState)) as Layer.Layer<
213
+ State,
214
+ never,
215
+ never
216
+ >;
217
+
218
+ export const inMemoryService = (
219
+ initialState: Record<
220
+ StackId,
221
+ Record<StageId, Record<ResourceId, ResourceState>>
222
+ > = {},
223
+ ) => {
224
+ const state = new Map<StackId, Map<StageId, Map<ResourceId, ResourceState>>>(
225
+ Object.entries(initialState).map(([stack, stages]) => [
226
+ stack,
227
+ new Map(
228
+ Object.entries(stages).map(([stage, resources]) => [
229
+ stage,
230
+ new Map(Object.entries(resources)),
231
+ ]),
232
+ ),
233
+ ]),
234
+ );
235
+ return {
236
+ listStacks: () => Effect.succeed(Array.from(state.keys())),
184
237
  // oxlint-disable-next-line require-yield
185
- listStages: (_appName?: string) => Effect.succeed([]),
186
- get: (id: string) => Effect.succeed(state.get(id)),
187
- set: <V>(id: string, value: V) => {
188
- state.set(id, value);
238
+ listStages: (stack: string) =>
239
+ Effect.succeed(Array.from(state.get(stack)?.keys() ?? [])),
240
+ get: ({
241
+ stack,
242
+ stage,
243
+ resourceId,
244
+ }: {
245
+ stack: string;
246
+ stage: string;
247
+ resourceId: string;
248
+ }) => Effect.succeed(state.get(stack)?.get(stage)?.get(resourceId)),
249
+ set: <V extends ResourceState>({
250
+ stack,
251
+ stage,
252
+ resourceId,
253
+ value,
254
+ }: {
255
+ stack: string;
256
+ stage: string;
257
+ resourceId: string;
258
+ value: V;
259
+ }) => {
260
+ state.get(stack)?.get(stage)?.set(resourceId, value);
189
261
  return Effect.succeed(value);
190
262
  },
191
- delete: (id: string) => {
192
- state.delete(id);
193
- return Effect.succeed(undefined);
194
- },
195
- list: () => Effect.succeed(Array.from(state.keys())),
196
- });
263
+ delete: ({
264
+ stack,
265
+ stage,
266
+ resourceId,
267
+ }: {
268
+ stack: string;
269
+ stage: string;
270
+ resourceId: string;
271
+ }) => Effect.succeed(state.get(stack)?.get(stage)?.delete(resourceId)),
272
+ list: ({ stack, stage }: { stack: string; stage: string }) =>
273
+ Effect.succeed(Array.from(state.get(stack)?.get(stage)?.keys() ?? [])),
274
+ };
197
275
  };
package/src/test.ts CHANGED
@@ -1,16 +1,41 @@
1
1
  import { FetchHttpClient, FileSystem, HttpClient } from "@effect/platform";
2
+ import * as PlatformConfigProvider from "@effect/platform/PlatformConfigProvider";
2
3
  import { NodeContext } from "@effect/platform-node";
3
- import type * as Path from "@effect/platform/Path";
4
- import { it } from "@effect/vitest";
5
- import { LogLevel } from "effect";
4
+ import * as Path from "@effect/platform/Path";
5
+ import { it, expect } from "@effect/vitest";
6
+ import { ConfigProvider, LogLevel } from "effect";
6
7
  import * as Effect from "effect/Effect";
7
8
  import * as Layer from "effect/Layer";
8
9
  import * as Logger from "effect/Logger";
9
10
  import * as Scope from "effect/Scope";
10
11
  import * as App from "./app.ts";
11
- import { PlanStatusReporter } from "./apply.ts";
12
12
  import { DotAlchemy, dotAlchemy } from "./dot-alchemy.ts";
13
13
  import * as State from "./state.ts";
14
+ import type { Resource } from "./resource.ts";
15
+ import { CLI } from "./cli/service.ts";
16
+
17
+ declare module "@effect/vitest" {
18
+ interface ExpectStatic {
19
+ emptyObject(): any;
20
+ propExpr(identifier: string, src: Resource): any;
21
+ }
22
+ }
23
+
24
+ expect.emptyObject = () =>
25
+ expect.toSatisfy(
26
+ (deletions) => Object.keys(deletions).length === 0,
27
+ "empty object",
28
+ );
29
+
30
+ expect.propExpr = (identifier: string, src: Resource) =>
31
+ expect.objectContaining({
32
+ kind: "PropExpr",
33
+ identifier,
34
+ expr: expect.objectContaining({
35
+ kind: "ResourceExpr",
36
+ src,
37
+ }),
38
+ });
14
39
 
15
40
  type Provided =
16
41
  | Scope.Scope
@@ -21,11 +46,34 @@ type Provided =
21
46
  | FileSystem.FileSystem
22
47
  | Path.Path;
23
48
 
49
+ export function test(
50
+ name: string,
51
+ options: {
52
+ timeout?: number;
53
+ state?: Layer.Layer<State.State, never, App.App>;
54
+ },
55
+ testCase: Effect.Effect<void, any, Provided>,
56
+ ): void;
57
+
24
58
  export function test(
25
59
  name: string,
26
60
  testCase: Effect.Effect<void, any, Provided>,
27
- timeout: number = 120_000,
61
+ ): void;
62
+
63
+ export function test(
64
+ name: string,
65
+ ...args:
66
+ | [
67
+ {
68
+ timeout?: number;
69
+ state?: Layer.Layer<State.State, never, App.App>;
70
+ },
71
+ Effect.Effect<void, any, Provided>,
72
+ ]
73
+ | [Effect.Effect<void, any, Provided>]
28
74
  ) {
75
+ const [options = {}, testCase] =
76
+ args.length === 1 ? [undefined, args[0]] : args;
29
77
  const platform = Layer.mergeAll(
30
78
  NodeContext.layer,
31
79
  FetchHttpClient.layer,
@@ -33,9 +81,18 @@ export function test(
33
81
  );
34
82
 
35
83
  const alchemy = Layer.provideMerge(
36
- Layer.mergeAll(State.localFs, report),
84
+ Layer.mergeAll(options.state ?? State.localFs, testCLI),
37
85
  Layer.mergeAll(
38
- App.make({ name: name.replaceAll(/[^a-zA-Z0-9_]/g, "-"), stage: "test" }),
86
+ App.make({
87
+ name: name.replaceAll(/[^a-zA-Z0-9_]/g, "-"),
88
+ stage: "test",
89
+ config: {
90
+ adopt: true,
91
+ aws: {
92
+ profile: "default",
93
+ },
94
+ },
95
+ }),
39
96
  dotAlchemy,
40
97
  ),
41
98
  );
@@ -43,21 +100,66 @@ export function test(
43
100
  return it.scopedLive(
44
101
  name,
45
102
  () =>
46
- testCase.pipe(
103
+ Effect.gen(function* () {
104
+ const configProvider = ConfigProvider.orElse(
105
+ yield* PlatformConfigProvider.fromDotEnv(".env"),
106
+ ConfigProvider.fromEnv,
107
+ );
108
+ return yield* testCase.pipe(Effect.withConfigProvider(configProvider));
109
+ }).pipe(
47
110
  Effect.provide(Layer.provideMerge(alchemy, platform)),
48
111
  Logger.withMinimumLogLevel(
49
112
  process.env.DEBUG ? LogLevel.Debug : LogLevel.Info,
50
113
  ),
114
+ Effect.provide(NodeContext.layer),
115
+ Effect.provide(NodeContext.layer),
51
116
  ),
52
- timeout,
117
+ options.timeout,
53
118
  );
54
119
  }
55
120
 
56
- export const report = Layer.succeed(
57
- PlanStatusReporter,
58
- PlanStatusReporter.of({
59
- start: Effect.fn(function* (plan) {
60
- return {
121
+ export namespace test {
122
+ export const state = (resources: Record<string, State.ResourceState> = {}) =>
123
+ Layer.effect(
124
+ State.State,
125
+ Effect.gen(function* () {
126
+ const app = yield* App.App;
127
+ return State.inMemoryService({
128
+ [app.name]: {
129
+ [app.stage]: resources,
130
+ },
131
+ });
132
+ }),
133
+ );
134
+
135
+ export const defaultState = (
136
+ resources: Record<string, State.ResourceState> = {},
137
+ other?: {
138
+ [stack: string]: {
139
+ [stage: string]: {
140
+ [resourceId: string]: State.ResourceState;
141
+ };
142
+ };
143
+ },
144
+ ) =>
145
+ Layer.succeed(
146
+ State.State,
147
+ State.inMemoryService({
148
+ ["test-app"]: {
149
+ ["test-stage"]: resources,
150
+ },
151
+ ...other,
152
+ }),
153
+ );
154
+ }
155
+
156
+ export const testCLI = Layer.succeed(
157
+ CLI,
158
+ CLI.of({
159
+ approvePlan: () => Effect.succeed(true),
160
+ displayPlan: () => Effect.void,
161
+ startApplySession: () =>
162
+ Effect.succeed({
61
163
  done: () => Effect.void,
62
164
  emit: (event) =>
63
165
  Effect.log(
@@ -65,7 +167,6 @@ export const report = Layer.succeed(
65
167
  ? `${event.status} ${event.id}(${event.type})`
66
168
  : event.message,
67
169
  ),
68
- };
69
- }),
170
+ }),
70
171
  }),
71
172
  );
package/src/type.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  export type type<T> = new () => T;
2
2
  export const type = class {} as new <T>() => T;
3
+
4
+ export declare namespace type {
5
+ export type of<T extends type<any>> = InstanceType<T>;
6
+ }
package/src/unknown.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { type Output, isOutput } from "./output.ts";
2
+ import type { Input } from "./input.ts";
3
+
4
+ // @ts-expect-error - we want to allow any value to be checked for unknown
5
+ export const isUnknown = <V>(value: V): value is Output<Input.Resolve<V>> =>
6
+ isOutput(value);
package/src/user.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { env } from "./env.ts";
2
+
3
+ export type USER = typeof USER;
4
+ export const USER = env.USER ?? env.USERNAME ?? "unknown";
package/src/util.ts ADDED
@@ -0,0 +1,21 @@
1
+ import * as Effect from "effect/Effect";
2
+
3
+ export type IsAny<T> = 0 extends 1 & T ? true : false;
4
+
5
+ export type UnionToIntersection<U> = (
6
+ U extends any ? (k: U) => void : never
7
+ ) extends (k: infer I) => void
8
+ ? I
9
+ : never;
10
+
11
+ export const assertDefined = <T>(value: T | undefined, message: string): T => {
12
+ if (!value) {
13
+ throw new Error(message);
14
+ }
15
+ return value;
16
+ };
17
+
18
+ export const asEffect = <T, Err = never, Req = never>(
19
+ effect: T | Effect.Effect<T, Err, Req>,
20
+ ): Effect.Effect<T, Err, Req> =>
21
+ Effect.isEffect(effect) ? effect : Effect.succeed(effect);
package/lib/approve.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import * as Context from "effect/Context";
2
- import type * as Effect from "effect/Effect";
3
- import type { Plan } from "./plan.ts";
4
- declare const PlanRejected_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
5
- readonly _tag: "PlanRejected";
6
- } & Readonly<A>;
7
- export declare class PlanRejected extends PlanRejected_base<{}> {
8
- }
9
- declare const PlanReviewer_base: Context.TagClass<PlanReviewer, "PlanReviewer", {
10
- approve: <P extends Plan>(plan: P) => Effect.Effect<void, PlanRejected>;
11
- }>;
12
- export declare class PlanReviewer extends PlanReviewer_base {
13
- }
14
- export {};
15
- //# sourceMappingURL=approve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../src/approve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;;;;AAEtC,qBAAa,YAAa,SAAQ,kBAAiC,EAAE,CAAC;CAAG;;aAK5D,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;;AAH3E,qBAAa,YAAa,SAAQ,iBAK/B;CAAG"}
package/lib/approve.js DELETED
@@ -1,7 +0,0 @@
1
- import * as Context from "effect/Context";
2
- import * as Data from "effect/Data";
3
- export class PlanRejected extends Data.TaggedError("PlanRejected") {
4
- }
5
- export class PlanReviewer extends Context.Tag("PlanReviewer")() {
6
- }
7
- //# sourceMappingURL=approve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approve.js","sourceRoot":"","sources":["../src/approve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAIpC,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAAK;CAAG;AAEzE,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAK1D;CAAG"}
@@ -1,4 +0,0 @@
1
- import * as Layer from "effect/Layer";
2
- import * as Alchemy from "alchemy-effect";
3
- export declare const requireApproval: Layer.Layer<Alchemy.PlanReviewer, never, never>;
4
- //# sourceMappingURL=approve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../src/cli/approve.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAK1C,eAAO,MAAM,eAAe,iDAkB3B,CAAC"}
@@ -1,18 +0,0 @@
1
- // biome-ignore lint/correctness/noUnusedImports: UMD global
2
- import React from "react";
3
- import * as Effect from "effect/Effect";
4
- import * as Layer from "effect/Layer";
5
- import * as Alchemy from "alchemy-effect";
6
- import { render } from "ink";
7
- import { ApprovePlan } from "./components/ApprovePlan.js";
8
- export const requireApproval = Layer.succeed(Alchemy.PlanReviewer, Alchemy.PlanReviewer.of({
9
- approve: (plan) => Effect.gen(function* () {
10
- let approved = false;
11
- const { waitUntilExit } = render(React.createElement(ApprovePlan, { plan: plan, approve: (a) => (approved = a) }));
12
- yield* Effect.promise(() => waitUntilExit());
13
- if (!approved) {
14
- yield* Effect.fail(new Alchemy.PlanRejected());
15
- }
16
- }),
17
- }));
18
- //# sourceMappingURL=approve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/cli/approve.tsx"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA8B,CAAC;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAC1C,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IACtB,OAAO,EAAE,CAAyB,IAAO,EAAE,EAAE,CAC3C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,oBAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAI,CAC5D,CAAC;QAEF,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;CACL,CAAC,CACH,CAAC"}
@@ -1,14 +0,0 @@
1
- import * as Clack from "@clack/prompts";
2
- import * as Effect from "effect/Effect";
3
- export declare const confirm: (opts: Clack.ConfirmOptions) => Effect.Effect<boolean | symbol, never, never>;
4
- export declare const tasks: (tasks: Clack.Task[]) => Effect.Effect<void, never, never>;
5
- export declare const intro: (title?: string | undefined) => Effect.Effect<void, never, never>;
6
- export declare const outro: (message?: string | undefined) => Effect.Effect<void, never, never>;
7
- export declare const note: (message?: string | undefined, title?: string | undefined) => Effect.Effect<void, never, never>;
8
- export declare const spinner: (p_0?: Clack.SpinnerOptions | undefined) => Effect.Effect<{
9
- start: (msg?: string) => void;
10
- stop: (msg?: string, code?: number) => void;
11
- message: (msg?: string) => void;
12
- }, never, never>;
13
- export declare const isCancel: typeof Clack.isCancel;
14
- //# sourceMappingURL=clack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clack.d.ts","sourceRoot":"","sources":["../../src/cli/clack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAYxC,eAAO,MAAM,OAAO,+EAAyB,CAAC;AAC9C,eAAO,MAAM,KAAK,4DAAuB,CAAC;AAE1C,eAAO,MAAM,KAAK,mEAAsB,CAAC;AACzC,eAAO,MAAM,KAAK,qEAAsB,CAAC;AACzC,eAAO,MAAM,IAAI,iGAAqB,CAAC;AACvC,eAAO,MAAM,OAAO;eAG2qG,CAAC;cAAiC,CAAC,cAAc,CAAC;iBAAoC,CAAC;gBAH1uG,CAAC;AAE7C,eAAO,MAAM,QAAQ,uBAAiB,CAAC"}
package/lib/cli/clack.js DELETED
@@ -1,12 +0,0 @@
1
- import * as Clack from "@clack/prompts";
2
- import * as Effect from "effect/Effect";
3
- const syncFn = (f) => (...p) => Effect.sync(() => f(...p));
4
- const asyncFn = (f) => (...p) => Effect.promise(() => f(...p));
5
- export const confirm = asyncFn(Clack.confirm);
6
- export const tasks = asyncFn(Clack.tasks);
7
- export const intro = syncFn(Clack.intro);
8
- export const outro = syncFn(Clack.outro);
9
- export const note = syncFn(Clack.note);
10
- export const spinner = syncFn(Clack.spinner);
11
- export const isCancel = Clack.isCancel;
12
- //# sourceMappingURL=clack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clack.js","sourceRoot":"","sources":["../../src/cli/clack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,MAAM,MAAM,GACV,CAAiC,CAAI,EAAE,EAAE,CACzC,CAAC,GAAG,CAAgB,EAAgC,EAAE,CACpD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE/B,MAAM,OAAO,GACX,CAAiC,CAAI,EAAE,EAAE,CACzC,CAAC,GAAG,CAAgB,EAAyC,EAAE,CAC7D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC"}
package/lib/cli/main.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":""}
package/lib/cli/main.js DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":""}
package/lib/cli/plan.d.ts DELETED
@@ -1,13 +0,0 @@
1
- export type PlanAction = "create" | "update" | "delete" | "noop";
2
- export interface PlanBinding {
3
- id: string;
4
- action: PlanAction;
5
- }
6
- export interface PlanItem {
7
- id: string;
8
- type: string;
9
- action: PlanAction;
10
- bindings?: PlanBinding[];
11
- }
12
- export type PlanSummary = Map<string, PlanItem>;
13
- //# sourceMappingURL=plan.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjE,MAAM,WAAW,WAAW;IAE1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC"}
package/lib/cli/plan.js DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=plan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- import * as Alchemy from "alchemy-effect";
2
- import * as Layer from "effect/Layer";
3
- export interface ProgressEventSource {
4
- subscribe(listener: (event: Alchemy.ApplyEvent) => void): () => void;
5
- }
6
- export declare const reportProgress: Layer.Layer<Alchemy.PlanStatusReporter, never, never>;
7
- //# sourceMappingURL=progress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/cli/progress.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACtE;AAED,eAAO,MAAM,cAAc,uDA8B1B,CAAC"}