alchemy 2.0.0-beta.43 → 2.0.0-beta.45

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 (561) hide show
  1. package/bin/cli.js +18 -5
  2. package/bin/exec.js +381 -240
  3. package/bin/exec.js.map +1 -1
  4. package/lib/AWS/Lambda/Function.d.ts +17 -0
  5. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  6. package/lib/AWS/Lambda/Function.js +61 -16
  7. package/lib/AWS/Lambda/Function.js.map +1 -1
  8. package/lib/AWS/Providers.d.ts +2 -1
  9. package/lib/AWS/Providers.d.ts.map +1 -1
  10. package/lib/AWS/Providers.js +3 -1
  11. package/lib/AWS/Providers.js.map +1 -1
  12. package/lib/Apply.js +17 -1
  13. package/lib/Apply.js.map +1 -1
  14. package/lib/Auth/AuthProvider.d.ts.map +1 -1
  15. package/lib/Auth/AuthProvider.js +24 -6
  16. package/lib/Auth/AuthProvider.js.map +1 -1
  17. package/lib/Auth/Credentials.d.ts.map +1 -1
  18. package/lib/Auth/Credentials.js +3 -3
  19. package/lib/Auth/Credentials.js.map +1 -1
  20. package/lib/Auth/Lock.js +2 -2
  21. package/lib/Auth/Lock.js.map +1 -1
  22. package/lib/Bundle/Bundle.d.ts +11 -0
  23. package/lib/Bundle/Bundle.d.ts.map +1 -1
  24. package/lib/Bundle/Bundle.js +19 -12
  25. package/lib/Bundle/Bundle.js.map +1 -1
  26. package/lib/Bundle/BundleAnalyzerPlugin.d.ts +25 -0
  27. package/lib/Bundle/BundleAnalyzerPlugin.d.ts.map +1 -0
  28. package/lib/Bundle/BundleAnalyzerPlugin.js +16 -0
  29. package/lib/Bundle/BundleAnalyzerPlugin.js.map +1 -0
  30. package/lib/Bundle/RawPlugin.d.ts +36 -0
  31. package/lib/Bundle/RawPlugin.d.ts.map +1 -0
  32. package/lib/Bundle/RawPlugin.js +80 -0
  33. package/lib/Bundle/RawPlugin.js.map +1 -0
  34. package/lib/Bundle/index.d.ts +2 -0
  35. package/lib/Bundle/index.d.ts.map +1 -1
  36. package/lib/Bundle/index.js +2 -0
  37. package/lib/Bundle/index.js.map +1 -1
  38. package/lib/Cli/commands/_shared.d.ts +13 -1
  39. package/lib/Cli/commands/_shared.d.ts.map +1 -1
  40. package/lib/Cli/commands/_shared.js +33 -2
  41. package/lib/Cli/commands/_shared.js.map +1 -1
  42. package/lib/Cli/commands/dev.d.ts +3 -2
  43. package/lib/Cli/commands/dev.d.ts.map +1 -1
  44. package/lib/Cli/commands/dev.js +19 -2
  45. package/lib/Cli/commands/dev.js.map +1 -1
  46. package/lib/Cli/commands/login.d.ts.map +1 -1
  47. package/lib/Cli/commands/login.js +19 -5
  48. package/lib/Cli/commands/login.js.map +1 -1
  49. package/lib/Cli/commands/profile.d.ts.map +1 -1
  50. package/lib/Cli/commands/profile.js +7 -27
  51. package/lib/Cli/commands/profile.js.map +1 -1
  52. package/lib/Cli/exec.d.ts.map +1 -1
  53. package/lib/Cli/exec.js +2 -1
  54. package/lib/Cli/exec.js.map +1 -1
  55. package/lib/Cli/main.d.ts.map +1 -1
  56. package/lib/Cli/main.js +0 -2
  57. package/lib/Cli/main.js.map +1 -1
  58. package/lib/Cloudflare/AiGateway/AiGateway.d.ts +0 -2
  59. package/lib/Cloudflare/AiGateway/AiGateway.d.ts.map +1 -1
  60. package/lib/Cloudflare/AiGateway/AiGateway.js +2 -4
  61. package/lib/Cloudflare/AiGateway/AiGateway.js.map +1 -1
  62. package/lib/Cloudflare/BrowserRendering/BrowserRendering.d.ts +116 -0
  63. package/lib/Cloudflare/BrowserRendering/BrowserRendering.d.ts.map +1 -0
  64. package/lib/Cloudflare/BrowserRendering/BrowserRendering.js +92 -0
  65. package/lib/Cloudflare/BrowserRendering/BrowserRendering.js.map +1 -0
  66. package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.d.ts +55 -0
  67. package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.d.ts.map +1 -0
  68. package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.js +55 -0
  69. package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.js.map +1 -0
  70. package/lib/Cloudflare/BrowserRendering/index.d.ts +3 -0
  71. package/lib/Cloudflare/BrowserRendering/index.d.ts.map +1 -0
  72. package/lib/Cloudflare/BrowserRendering/index.js +3 -0
  73. package/lib/Cloudflare/BrowserRendering/index.js.map +1 -0
  74. package/lib/Cloudflare/Container/Container.d.ts +3 -3
  75. package/lib/Cloudflare/Container/Container.js +3 -3
  76. package/lib/Cloudflare/Container/StartContainer.d.ts.map +1 -1
  77. package/lib/Cloudflare/Container/StartContainer.js.map +1 -1
  78. package/lib/Cloudflare/D1/D1Database.d.ts +1 -0
  79. package/lib/Cloudflare/D1/D1Database.d.ts.map +1 -1
  80. package/lib/Cloudflare/D1/D1Database.js +2 -1
  81. package/lib/Cloudflare/D1/D1Database.js.map +1 -1
  82. package/lib/Cloudflare/D1/D1DatabaseBinding.js +1 -1
  83. package/lib/Cloudflare/D1/D1DatabaseBinding.js.map +1 -1
  84. package/lib/Cloudflare/Fetcher.d.ts.map +1 -1
  85. package/lib/Cloudflare/Fetcher.js +0 -2
  86. package/lib/Cloudflare/Fetcher.js.map +1 -1
  87. package/lib/Cloudflare/Hyperdrive/Hyperdrive.d.ts +1 -0
  88. package/lib/Cloudflare/Hyperdrive/Hyperdrive.d.ts.map +1 -1
  89. package/lib/Cloudflare/Hyperdrive/Hyperdrive.js +3 -0
  90. package/lib/Cloudflare/Hyperdrive/Hyperdrive.js.map +1 -1
  91. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts +3 -2
  92. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts.map +1 -1
  93. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js +32 -33
  94. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js.map +1 -1
  95. package/lib/Cloudflare/KV/KVNamespace.d.ts +1 -0
  96. package/lib/Cloudflare/KV/KVNamespace.d.ts.map +1 -1
  97. package/lib/Cloudflare/KV/KVNamespace.js +2 -0
  98. package/lib/Cloudflare/KV/KVNamespace.js.map +1 -1
  99. package/lib/Cloudflare/Local.d.ts +2 -0
  100. package/lib/Cloudflare/Local.d.ts.map +1 -0
  101. package/lib/Cloudflare/Local.js +9 -0
  102. package/lib/Cloudflare/Local.js.map +1 -0
  103. package/lib/Cloudflare/Providers.d.ts +2 -1
  104. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  105. package/lib/Cloudflare/Providers.js +23 -17
  106. package/lib/Cloudflare/Providers.js.map +1 -1
  107. package/lib/Cloudflare/Queue/Queue.d.ts +1 -0
  108. package/lib/Cloudflare/Queue/Queue.d.ts.map +1 -1
  109. package/lib/Cloudflare/Queue/Queue.js +1 -0
  110. package/lib/Cloudflare/Queue/Queue.js.map +1 -1
  111. package/lib/Cloudflare/Queue/QueueConsumer.d.ts +2 -1
  112. package/lib/Cloudflare/Queue/QueueConsumer.d.ts.map +1 -1
  113. package/lib/Cloudflare/Queue/QueueConsumer.js +11 -3
  114. package/lib/Cloudflare/Queue/QueueConsumer.js.map +1 -1
  115. package/lib/Cloudflare/Queue/QueueEventSource.d.ts +30 -4
  116. package/lib/Cloudflare/Queue/QueueEventSource.d.ts.map +1 -1
  117. package/lib/Cloudflare/Queue/QueueEventSource.js +22 -1
  118. package/lib/Cloudflare/Queue/QueueEventSource.js.map +1 -1
  119. package/lib/Cloudflare/R2/R2Bucket.d.ts +1 -0
  120. package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
  121. package/lib/Cloudflare/R2/R2Bucket.js +18 -0
  122. package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
  123. package/lib/Cloudflare/SecretsStore/Secret.d.ts.map +1 -1
  124. package/lib/Cloudflare/SecretsStore/Secret.js +13 -34
  125. package/lib/Cloudflare/SecretsStore/Secret.js.map +1 -1
  126. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts +3 -2
  127. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts.map +1 -1
  128. package/lib/Cloudflare/SecretsStore/SecretBinding.js +3 -2
  129. package/lib/Cloudflare/SecretsStore/SecretBinding.js.map +1 -1
  130. package/lib/Cloudflare/StateStore/Api.d.ts +5 -13
  131. package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
  132. package/lib/Cloudflare/StateStore/Api.js +14 -8
  133. package/lib/Cloudflare/StateStore/Api.js.map +1 -1
  134. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  135. package/lib/Cloudflare/StateStore/State.js +45 -9
  136. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  137. package/lib/Cloudflare/StateStore/Store.d.ts.map +1 -1
  138. package/lib/Cloudflare/StateStore/Store.js +5 -2
  139. package/lib/Cloudflare/StateStore/Store.js.map +1 -1
  140. package/lib/Cloudflare/VpcService/VpcService.d.ts +2 -2
  141. package/lib/Cloudflare/VpcService/VpcService.d.ts.map +1 -1
  142. package/lib/Cloudflare/Website/StaticSite.d.ts +5 -5
  143. package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
  144. package/lib/Cloudflare/Website/StaticSite.js +3 -0
  145. package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
  146. package/lib/Cloudflare/Website/Vite.d.ts +5 -5
  147. package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
  148. package/lib/Cloudflare/Website/Vite.js.map +1 -1
  149. package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
  150. package/lib/Cloudflare/Workers/Assets.js +1 -1
  151. package/lib/Cloudflare/Workers/Assets.js.map +1 -1
  152. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  153. package/lib/Cloudflare/Workers/DurableObjectBridge.js +4 -3
  154. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  155. package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts +183 -6
  156. package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts.map +1 -1
  157. package/lib/Cloudflare/Workers/DurableObjectNamespace.js +279 -76
  158. package/lib/Cloudflare/Workers/DurableObjectNamespace.js.map +1 -1
  159. package/lib/Cloudflare/Workers/HttpServer.d.ts +6 -4
  160. package/lib/Cloudflare/Workers/HttpServer.d.ts.map +1 -1
  161. package/lib/Cloudflare/Workers/HttpServer.js +20 -15
  162. package/lib/Cloudflare/Workers/HttpServer.js.map +1 -1
  163. package/lib/Cloudflare/Workers/InferEnv.d.ts +3 -2
  164. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  165. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +19 -3
  166. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  167. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +458 -21
  168. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  169. package/lib/Cloudflare/Workers/Rpc.d.ts +16 -0
  170. package/lib/Cloudflare/Workers/Rpc.d.ts.map +1 -1
  171. package/lib/Cloudflare/Workers/Rpc.js +22 -0
  172. package/lib/Cloudflare/Workers/Rpc.js.map +1 -1
  173. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.d.ts +285 -0
  174. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.d.ts.map +1 -0
  175. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.js +288 -0
  176. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.js.map +1 -0
  177. package/lib/Cloudflare/Workers/RpcWorker.d.ts +305 -0
  178. package/lib/Cloudflare/Workers/RpcWorker.d.ts.map +1 -0
  179. package/lib/Cloudflare/Workers/RpcWorker.js +350 -0
  180. package/lib/Cloudflare/Workers/RpcWorker.js.map +1 -0
  181. package/lib/Cloudflare/Workers/Vite.d.ts +1 -1
  182. package/lib/Cloudflare/Workers/Vite.d.ts.map +1 -1
  183. package/lib/Cloudflare/Workers/Vite.js +2 -1
  184. package/lib/Cloudflare/Workers/Vite.js.map +1 -1
  185. package/lib/Cloudflare/Workers/Worker.d.ts +69 -37
  186. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  187. package/lib/Cloudflare/Workers/Worker.js +171 -51
  188. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  189. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +1 -1
  190. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  191. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +158 -97
  192. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  193. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +11 -23
  194. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  195. package/lib/Cloudflare/Workers/WorkerBinding.js +3 -0
  196. package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
  197. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  198. package/lib/Cloudflare/Workers/WorkerBridge.js +8 -7
  199. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  200. package/lib/Cloudflare/Workers/WorkerBundle.d.ts +1 -2
  201. package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
  202. package/lib/Cloudflare/Workers/WorkerBundle.js +7 -7
  203. package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
  204. package/lib/Cloudflare/Workers/WorkerRuntimeContext.d.ts.map +1 -1
  205. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +9 -10
  206. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
  207. package/lib/Cloudflare/Workers/Workflow.d.ts +5 -3
  208. package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
  209. package/lib/Cloudflare/Workers/Workflow.js +19 -1
  210. package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
  211. package/lib/Cloudflare/Workers/index.d.ts +2 -0
  212. package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
  213. package/lib/Cloudflare/Workers/index.js +2 -0
  214. package/lib/Cloudflare/Workers/index.js.map +1 -1
  215. package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts +184 -0
  216. package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts.map +1 -0
  217. package/lib/Cloudflare/Zaraz/ZarazConfig.js +216 -0
  218. package/lib/Cloudflare/Zaraz/ZarazConfig.js.map +1 -0
  219. package/lib/Cloudflare/Zaraz/ZarazEventTypes.d.ts +188 -0
  220. package/lib/Cloudflare/Zaraz/ZarazEventTypes.d.ts.map +1 -0
  221. package/lib/Cloudflare/Zaraz/ZarazEventTypes.js +4 -0
  222. package/lib/Cloudflare/Zaraz/ZarazEventTypes.js.map +1 -0
  223. package/lib/Cloudflare/Zaraz/index.d.ts +3 -0
  224. package/lib/Cloudflare/Zaraz/index.d.ts.map +1 -0
  225. package/lib/Cloudflare/Zaraz/index.js +2 -0
  226. package/lib/Cloudflare/Zaraz/index.js.map +1 -0
  227. package/lib/Cloudflare/index.d.ts +2 -0
  228. package/lib/Cloudflare/index.d.ts.map +1 -1
  229. package/lib/Cloudflare/index.js +2 -0
  230. package/lib/Cloudflare/index.js.map +1 -1
  231. package/lib/Dependencies.d.ts +10 -0
  232. package/lib/Dependencies.d.ts.map +1 -0
  233. package/lib/Dependencies.js +1 -0
  234. package/lib/Dependencies.js.map +1 -0
  235. package/lib/Deploy.d.ts +2 -1
  236. package/lib/Deploy.d.ts.map +1 -1
  237. package/lib/Deploy.js +2 -2
  238. package/lib/Deploy.js.map +1 -1
  239. package/lib/Diff.d.ts +11 -0
  240. package/lib/Diff.d.ts.map +1 -1
  241. package/lib/Diff.js +11 -0
  242. package/lib/Diff.js.map +1 -1
  243. package/lib/Input.d.ts +2 -1
  244. package/lib/Input.d.ts.map +1 -1
  245. package/lib/KeyPair.d.ts +77 -0
  246. package/lib/KeyPair.d.ts.map +1 -0
  247. package/lib/KeyPair.js +102 -0
  248. package/lib/KeyPair.js.map +1 -0
  249. package/lib/Local/RpcProvider.d.ts +56 -0
  250. package/lib/Local/RpcProvider.d.ts.map +1 -0
  251. package/lib/Local/RpcProvider.js +83 -0
  252. package/lib/Local/RpcProvider.js.map +1 -0
  253. package/lib/Local/RpcProviderProxy.d.ts +19 -0
  254. package/lib/Local/RpcProviderProxy.d.ts.map +1 -0
  255. package/lib/Local/RpcProviderProxy.js +48 -0
  256. package/lib/Local/RpcProviderProxy.js.map +1 -0
  257. package/lib/Local/RpcSerialization.d.ts +34 -0
  258. package/lib/Local/RpcSerialization.d.ts.map +1 -0
  259. package/lib/Local/RpcSerialization.js +120 -0
  260. package/lib/Local/RpcSerialization.js.map +1 -0
  261. package/lib/Local/RpcServer.d.ts +63 -0
  262. package/lib/Local/RpcServer.d.ts.map +1 -0
  263. package/lib/Local/RpcServer.js +72 -0
  264. package/lib/Local/RpcServer.js.map +1 -0
  265. package/lib/Local/RpcServerBun.d.ts +3 -0
  266. package/lib/Local/RpcServerBun.d.ts.map +1 -0
  267. package/lib/Local/RpcServerBun.js +47 -0
  268. package/lib/Local/RpcServerBun.js.map +1 -0
  269. package/lib/Local/RpcServerEnvironment.d.ts +20 -0
  270. package/lib/Local/RpcServerEnvironment.d.ts.map +1 -0
  271. package/lib/Local/RpcServerEnvironment.js +22 -0
  272. package/lib/Local/RpcServerEnvironment.js.map +1 -0
  273. package/lib/Local/RpcServerNode.d.ts +3 -0
  274. package/lib/Local/RpcServerNode.d.ts.map +1 -0
  275. package/lib/Local/RpcServerNode.js +43 -0
  276. package/lib/Local/RpcServerNode.js.map +1 -0
  277. package/lib/Local/RpcServerSession.d.ts +27 -0
  278. package/lib/Local/RpcServerSession.d.ts.map +1 -0
  279. package/lib/Local/RpcServerSession.js +68 -0
  280. package/lib/Local/RpcServerSession.js.map +1 -0
  281. package/lib/Local/RpcSpawner.d.ts +21 -0
  282. package/lib/Local/RpcSpawner.d.ts.map +1 -0
  283. package/lib/Local/RpcSpawner.js +132 -0
  284. package/lib/Local/RpcSpawner.js.map +1 -0
  285. package/lib/Neon/Project.d.ts.map +1 -1
  286. package/lib/Neon/Project.js +14 -3
  287. package/lib/Neon/Project.js.map +1 -1
  288. package/lib/Output.d.ts.map +1 -1
  289. package/lib/Output.js +9 -2
  290. package/lib/Output.js.map +1 -1
  291. package/lib/Phase.d.ts +2 -1
  292. package/lib/Phase.d.ts.map +1 -1
  293. package/lib/Phase.js +6 -1
  294. package/lib/Phase.js.map +1 -1
  295. package/lib/Plan.d.ts.map +1 -1
  296. package/lib/Plan.js +14 -3
  297. package/lib/Plan.js.map +1 -1
  298. package/lib/Platform.d.ts +8 -6
  299. package/lib/Platform.d.ts.map +1 -1
  300. package/lib/Platform.js +33 -3
  301. package/lib/Platform.js.map +1 -1
  302. package/lib/Random.d.ts.map +1 -1
  303. package/lib/Random.js +9 -14
  304. package/lib/Random.js.map +1 -1
  305. package/lib/RuntimeContext.d.ts +21 -1
  306. package/lib/RuntimeContext.d.ts.map +1 -1
  307. package/lib/RuntimeContext.js +12 -0
  308. package/lib/RuntimeContext.js.map +1 -1
  309. package/lib/Stack.d.ts +3 -3
  310. package/lib/Stack.d.ts.map +1 -1
  311. package/lib/Stack.js.map +1 -1
  312. package/lib/State/HttpStateApi.d.ts +2 -2
  313. package/lib/State/StateEncoding.d.ts +8 -0
  314. package/lib/State/StateEncoding.d.ts.map +1 -1
  315. package/lib/State/StateEncoding.js +55 -5
  316. package/lib/State/StateEncoding.js.map +1 -1
  317. package/lib/Test/Bun.d.ts.map +1 -1
  318. package/lib/Test/Bun.js +0 -2
  319. package/lib/Test/Bun.js.map +1 -1
  320. package/lib/Test/Vitest.d.ts.map +1 -1
  321. package/lib/Test/Vitest.js +0 -2
  322. package/lib/Test/Vitest.js.map +1 -1
  323. package/lib/Util/Duration.d.ts +14 -0
  324. package/lib/Util/Duration.d.ts.map +1 -0
  325. package/lib/Util/Duration.js +18 -0
  326. package/lib/Util/Duration.js.map +1 -0
  327. package/lib/Util/PlatformServices.d.ts +7 -0
  328. package/lib/Util/PlatformServices.d.ts.map +1 -1
  329. package/lib/Util/PlatformServices.js +22 -11
  330. package/lib/Util/PlatformServices.js.map +1 -1
  331. package/lib/Util/camel.d.ts.map +1 -1
  332. package/lib/Util/camel.js +2 -3
  333. package/lib/Util/camel.js.map +1 -1
  334. package/lib/Util/data.d.ts +5 -0
  335. package/lib/Util/data.d.ts.map +1 -1
  336. package/lib/Util/data.js +29 -0
  337. package/lib/Util/data.js.map +1 -1
  338. package/lib/Util/index.d.ts +0 -6
  339. package/lib/Util/index.d.ts.map +1 -1
  340. package/lib/Util/index.js +0 -6
  341. package/lib/Util/index.js.map +1 -1
  342. package/lib/Util/stable.d.ts.map +1 -1
  343. package/lib/Util/stable.js +3 -6
  344. package/lib/Util/stable.js.map +1 -1
  345. package/lib/Util/types.d.ts +3 -1
  346. package/lib/Util/types.d.ts.map +1 -1
  347. package/lib/Util/types.js +5 -1
  348. package/lib/Util/types.js.map +1 -1
  349. package/lib/index.d.ts +2 -3
  350. package/lib/index.d.ts.map +1 -1
  351. package/lib/index.js +1 -3
  352. package/lib/index.js.map +1 -1
  353. package/lib/tsconfig.test.tsbuildinfo +1 -1
  354. package/package.json +22 -23
  355. package/src/AWS/Lambda/Function.ts +87 -34
  356. package/src/AWS/Providers.ts +3 -0
  357. package/src/Apply.ts +18 -1
  358. package/src/Auth/AuthProvider.ts +25 -5
  359. package/src/Auth/Credentials.ts +8 -7
  360. package/src/Auth/Lock.ts +2 -2
  361. package/src/Bundle/Bundle.ts +35 -13
  362. package/src/Bundle/BundleAnalyzerPlugin.ts +33 -0
  363. package/src/Bundle/RawPlugin.ts +82 -0
  364. package/src/Bundle/index.ts +2 -0
  365. package/src/Cli/commands/_shared.ts +47 -4
  366. package/src/Cli/commands/dev.ts +63 -37
  367. package/src/Cli/commands/login.ts +20 -4
  368. package/src/Cli/commands/profile.ts +24 -34
  369. package/src/Cli/exec.ts +12 -7
  370. package/src/Cli/main.ts +0 -3
  371. package/src/Cloudflare/AiGateway/AiGateway.ts +2 -6
  372. package/src/Cloudflare/BrowserRendering/BrowserRendering.ts +132 -0
  373. package/src/Cloudflare/BrowserRendering/BrowserRenderingBinding.ts +137 -0
  374. package/src/Cloudflare/BrowserRendering/index.ts +11 -0
  375. package/src/Cloudflare/Container/Container.ts +3 -3
  376. package/src/Cloudflare/Container/StartContainer.ts +1 -2
  377. package/src/Cloudflare/D1/D1Database.ts +4 -1
  378. package/src/Cloudflare/D1/D1DatabaseBinding.ts +1 -1
  379. package/src/Cloudflare/Fetcher.ts +0 -2
  380. package/src/Cloudflare/Hyperdrive/Hyperdrive.ts +5 -0
  381. package/src/Cloudflare/Hyperdrive/HyperdriveBinding.ts +41 -43
  382. package/src/Cloudflare/KV/KVNamespace.ts +4 -0
  383. package/src/Cloudflare/Local.ts +23 -0
  384. package/src/Cloudflare/Providers.ts +28 -16
  385. package/src/Cloudflare/Queue/Queue.ts +3 -0
  386. package/src/Cloudflare/Queue/QueueConsumer.ts +23 -8
  387. package/src/Cloudflare/Queue/QueueEventSource.ts +33 -5
  388. package/src/Cloudflare/R2/R2Bucket.ts +26 -0
  389. package/src/Cloudflare/SecretsStore/Secret.ts +14 -41
  390. package/src/Cloudflare/SecretsStore/SecretBinding.ts +11 -11
  391. package/src/Cloudflare/StateStore/Api.ts +15 -15
  392. package/src/Cloudflare/StateStore/State.ts +68 -6
  393. package/src/Cloudflare/StateStore/Store.ts +5 -2
  394. package/src/Cloudflare/VpcService/VpcService.ts +2 -2
  395. package/src/Cloudflare/Website/StaticSite.ts +8 -10
  396. package/src/Cloudflare/Website/Vite.ts +4 -7
  397. package/src/Cloudflare/Workers/Assets.ts +1 -1
  398. package/src/Cloudflare/Workers/DurableObjectBridge.ts +7 -5
  399. package/src/Cloudflare/Workers/DurableObjectNamespace.ts +380 -121
  400. package/src/Cloudflare/Workers/HttpServer.ts +31 -25
  401. package/src/Cloudflare/Workers/InferEnv.ts +15 -8
  402. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +609 -22
  403. package/src/Cloudflare/Workers/Rpc.ts +50 -0
  404. package/src/Cloudflare/Workers/RpcDurableObjectNamespace.ts +502 -0
  405. package/src/Cloudflare/Workers/RpcWorker.ts +562 -0
  406. package/src/Cloudflare/Workers/Vite.ts +2 -0
  407. package/src/Cloudflare/Workers/Worker.ts +280 -110
  408. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +158 -103
  409. package/src/Cloudflare/Workers/WorkerBinding.ts +10 -0
  410. package/src/Cloudflare/Workers/WorkerBridge.ts +10 -9
  411. package/src/Cloudflare/Workers/WorkerBundle.ts +8 -9
  412. package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +8 -15
  413. package/src/Cloudflare/Workers/Workflow.ts +22 -3
  414. package/src/Cloudflare/Workers/index.ts +2 -0
  415. package/src/Cloudflare/Zaraz/ZarazConfig.ts +403 -0
  416. package/src/Cloudflare/Zaraz/ZarazEventTypes.ts +257 -0
  417. package/src/Cloudflare/Zaraz/index.ts +25 -0
  418. package/src/Cloudflare/index.ts +2 -0
  419. package/src/Dependencies.ts +10 -0
  420. package/src/Deploy.ts +3 -1
  421. package/src/Diff.ts +13 -0
  422. package/src/Input.ts +2 -0
  423. package/src/KeyPair.ts +146 -0
  424. package/src/Local/RpcProvider.ts +146 -0
  425. package/src/Local/RpcProviderProxy.ts +86 -0
  426. package/src/Local/RpcSerialization.ts +225 -0
  427. package/src/Local/RpcServer.ts +138 -0
  428. package/src/Local/RpcServerBun.ts +59 -0
  429. package/src/Local/RpcServerEnvironment.ts +55 -0
  430. package/src/Local/RpcServerNode.ts +58 -0
  431. package/src/Local/RpcServerSession.ts +87 -0
  432. package/src/Local/RpcSpawner.ts +196 -0
  433. package/src/Neon/Project.ts +16 -3
  434. package/src/Output.ts +8 -2
  435. package/src/Phase.ts +8 -0
  436. package/src/Plan.ts +16 -3
  437. package/src/Platform.ts +74 -27
  438. package/src/Random.ts +22 -27
  439. package/src/RuntimeContext.ts +23 -1
  440. package/src/Stack.ts +3 -3
  441. package/src/State/StateEncoding.ts +58 -7
  442. package/src/Test/Bun.ts +0 -3
  443. package/src/Test/Vitest.ts +0 -3
  444. package/src/Util/Duration.ts +21 -0
  445. package/src/Util/PlatformServices.ts +41 -27
  446. package/src/Util/camel.ts +3 -5
  447. package/src/Util/data.ts +38 -0
  448. package/src/Util/index.ts +0 -6
  449. package/src/Util/stable.ts +4 -10
  450. package/src/Util/types.ts +9 -2
  451. package/src/index.ts +2 -3
  452. package/lib/Cloudflare/Local/Sidecar.d.ts +0 -63
  453. package/lib/Cloudflare/Local/Sidecar.d.ts.map +0 -1
  454. package/lib/Cloudflare/Local/Sidecar.js +0 -50
  455. package/lib/Cloudflare/Local/Sidecar.js.map +0 -1
  456. package/lib/Cloudflare/Local/SidecarHandlers.d.ts +0 -8
  457. package/lib/Cloudflare/Local/SidecarHandlers.d.ts.map +0 -1
  458. package/lib/Cloudflare/Local/SidecarHandlers.js +0 -381
  459. package/lib/Cloudflare/Local/SidecarHandlers.js.map +0 -1
  460. package/lib/Cloudflare/Local/SidecarServer.d.ts +0 -2
  461. package/lib/Cloudflare/Local/SidecarServer.d.ts.map +0 -1
  462. package/lib/Cloudflare/Local/SidecarServer.js +0 -34
  463. package/lib/Cloudflare/Local/SidecarServer.js.map +0 -1
  464. package/lib/Secret.d.ts +0 -50
  465. package/lib/Secret.d.ts.map +0 -1
  466. package/lib/Secret.js +0 -23
  467. package/lib/Secret.js.map +0 -1
  468. package/lib/Sidecar/Lock.d.ts +0 -23
  469. package/lib/Sidecar/Lock.d.ts.map +0 -1
  470. package/lib/Sidecar/Lock.js +0 -39
  471. package/lib/Sidecar/Lock.js.map +0 -1
  472. package/lib/Sidecar/RpcClient.d.ts +0 -15
  473. package/lib/Sidecar/RpcClient.d.ts.map +0 -1
  474. package/lib/Sidecar/RpcClient.js +0 -78
  475. package/lib/Sidecar/RpcClient.js.map +0 -1
  476. package/lib/Sidecar/RpcHandler.d.ts +0 -51
  477. package/lib/Sidecar/RpcHandler.d.ts.map +0 -1
  478. package/lib/Sidecar/RpcHandler.js +0 -87
  479. package/lib/Sidecar/RpcHandler.js.map +0 -1
  480. package/lib/Sidecar/RpcPaths.d.ts +0 -19
  481. package/lib/Sidecar/RpcPaths.d.ts.map +0 -1
  482. package/lib/Sidecar/RpcPaths.js +0 -31
  483. package/lib/Sidecar/RpcPaths.js.map +0 -1
  484. package/lib/Sidecar/RpcServer.d.ts +0 -30
  485. package/lib/Sidecar/RpcServer.d.ts.map +0 -1
  486. package/lib/Sidecar/RpcServer.js +0 -105
  487. package/lib/Sidecar/RpcServer.js.map +0 -1
  488. package/lib/Sidecar/RpcServerBun.d.ts +0 -4
  489. package/lib/Sidecar/RpcServerBun.d.ts.map +0 -1
  490. package/lib/Sidecar/RpcServerBun.js +0 -28
  491. package/lib/Sidecar/RpcServerBun.js.map +0 -1
  492. package/lib/Sidecar/RpcServerNode.d.ts +0 -4
  493. package/lib/Sidecar/RpcServerNode.d.ts.map +0 -1
  494. package/lib/Sidecar/RpcServerNode.js +0 -39
  495. package/lib/Sidecar/RpcServerNode.js.map +0 -1
  496. package/lib/Sidecar/RpcServices.d.ts +0 -6
  497. package/lib/Sidecar/RpcServices.d.ts.map +0 -1
  498. package/lib/Sidecar/RpcServices.js +0 -29
  499. package/lib/Sidecar/RpcServices.js.map +0 -1
  500. package/lib/Trait.d.ts +0 -43
  501. package/lib/Trait.d.ts.map +0 -1
  502. package/lib/Trait.js +0 -17
  503. package/lib/Trait.js.map +0 -1
  504. package/lib/Util/LocalhostDns.d.ts +0 -23
  505. package/lib/Util/LocalhostDns.d.ts.map +0 -1
  506. package/lib/Util/LocalhostDns.js +0 -46
  507. package/lib/Util/LocalhostDns.js.map +0 -1
  508. package/lib/Util/assert-never.d.ts +0 -12
  509. package/lib/Util/assert-never.d.ts.map +0 -1
  510. package/lib/Util/assert-never.js +0 -11
  511. package/lib/Util/assert-never.js.map +0 -1
  512. package/lib/Util/class.d.ts +0 -3
  513. package/lib/Util/class.d.ts.map +0 -1
  514. package/lib/Util/class.js +0 -1
  515. package/lib/Util/class.js.map +0 -1
  516. package/lib/Util/ignore.d.ts +0 -40
  517. package/lib/Util/ignore.d.ts.map +0 -1
  518. package/lib/Util/ignore.js +0 -591
  519. package/lib/Util/ignore.js.map +0 -1
  520. package/lib/Util/instance.d.ts +0 -4
  521. package/lib/Util/instance.d.ts.map +0 -1
  522. package/lib/Util/instance.js +0 -1
  523. package/lib/Util/instance.js.map +0 -1
  524. package/lib/Util/pointer.d.ts +0 -5
  525. package/lib/Util/pointer.d.ts.map +0 -1
  526. package/lib/Util/pointer.js +0 -1
  527. package/lib/Util/pointer.js.map +0 -1
  528. package/lib/Util/schema-to-type.d.ts +0 -42
  529. package/lib/Util/schema-to-type.d.ts.map +0 -1
  530. package/lib/Util/schema-to-type.js +0 -364
  531. package/lib/Util/schema-to-type.js.map +0 -1
  532. package/lib/Util/todo.d.ts +0 -3
  533. package/lib/Util/todo.d.ts.map +0 -1
  534. package/lib/Util/todo.js +0 -3
  535. package/lib/Util/todo.js.map +0 -1
  536. package/lib/Variable.d.ts +0 -29
  537. package/lib/Variable.d.ts.map +0 -1
  538. package/lib/Variable.js +0 -9
  539. package/lib/Variable.js.map +0 -1
  540. package/src/Cloudflare/Local/Sidecar.ts +0 -81
  541. package/src/Cloudflare/Local/SidecarHandlers.ts +0 -491
  542. package/src/Cloudflare/Local/SidecarServer.ts +0 -70
  543. package/src/Secret.ts +0 -87
  544. package/src/Sidecar/Lock.ts +0 -66
  545. package/src/Sidecar/RpcClient.ts +0 -142
  546. package/src/Sidecar/RpcHandler.ts +0 -205
  547. package/src/Sidecar/RpcPaths.ts +0 -39
  548. package/src/Sidecar/RpcServer.ts +0 -153
  549. package/src/Sidecar/RpcServerBun.ts +0 -41
  550. package/src/Sidecar/RpcServerNode.ts +0 -51
  551. package/src/Sidecar/RpcServices.ts +0 -48
  552. package/src/Trait.ts +0 -105
  553. package/src/Util/LocalhostDns.ts +0 -52
  554. package/src/Util/assert-never.ts +0 -18
  555. package/src/Util/class.ts +0 -7
  556. package/src/Util/ignore.ts +0 -815
  557. package/src/Util/instance.ts +0 -9
  558. package/src/Util/pointer.ts +0 -5
  559. package/src/Util/schema-to-type.ts +0 -456
  560. package/src/Util/todo.ts +0 -4
  561. package/src/Variable.ts +0 -44
@@ -9,7 +9,12 @@ import * as Argument from "effect/unstable/cli/Argument";
9
9
  import * as CliError from "effect/unstable/cli/CliError";
10
10
  import * as Flag from "effect/unstable/cli/Flag";
11
11
 
12
- import { AuthError } from "../../Auth/AuthProvider.ts";
12
+ import {
13
+ type AuthProvider,
14
+ AuthError,
15
+ AuthProviders,
16
+ } from "../../Auth/AuthProvider.ts";
17
+ import type { AlchemyProfile } from "../../Auth/Profile.ts";
13
18
  import type * as Stack from "../../Stack.ts";
14
19
  import { recordCli } from "../../Telemetry/Metrics.ts";
15
20
  import { PromptCancelled } from "../../Util/Clank.ts";
@@ -254,11 +259,49 @@ export const instrumentCommand =
254
259
  recordCli(command),
255
260
  );
256
261
 
262
+ /**
263
+ * Render a profile's stored credential entries the same way across
264
+ * `alchemy login` and `alchemy profile show`: one `── Provider ──`
265
+ * header per entry, then either the provider's own `prettyPrint` block
266
+ * (preferred) or a JSON-style fallback when the provider isn't
267
+ * registered in the supplied {@link AuthProviders} registry.
268
+ */
269
+ export const printProfile = Effect.fn(function* (
270
+ profile: string,
271
+ stored: AlchemyProfile,
272
+ registry: AuthProviders["Service"],
273
+ ) {
274
+ yield* Console.log(`Profile: ${profile}`);
275
+ const names = Object.keys(stored).sort();
276
+ if (names.length === 0) {
277
+ yield* Console.log("(no providers configured)");
278
+ return;
279
+ }
280
+ for (const name of names) {
281
+ const cfg = stored[name]!;
282
+ yield* Console.log("");
283
+ yield* Console.log(`── ${name} ──`);
284
+ const provider: AuthProvider | undefined = registry[name];
285
+ if (provider == null) {
286
+ yield* Console.log(` method: ${cfg.method}`);
287
+ const { method: _method, ...rest } = cfg as Record<string, unknown> & {
288
+ method: string;
289
+ };
290
+ for (const [k, v] of Object.entries(rest)) {
291
+ yield* Console.log(
292
+ ` ${k}: ${typeof v === "string" ? v : JSON.stringify(v)}`,
293
+ );
294
+ }
295
+ continue;
296
+ }
297
+ yield* provider.prettyPrint(profile, cfg);
298
+ }
299
+ });
300
+
257
301
  export const importStack = Effect.fn(function* (main: string) {
258
302
  const path = yield* Path.Path;
259
- const module = yield* Effect.promise(
260
- () => import(path.resolve(process.cwd(), main)),
261
- );
303
+ const url = import.meta.resolve(path.resolve(main));
304
+ const module = yield* Effect.promise(() => import(url));
262
305
  const stackEffect = module.default as ReturnType<
263
306
  ReturnType<typeof Stack.make>
264
307
  >;
@@ -1,8 +1,11 @@
1
1
  import * as Effect from "effect/Effect";
2
+ import * as Option from "effect/Option";
2
3
  import * as Schema from "effect/Schema";
3
4
  import * as Command from "effect/unstable/cli/Command";
4
5
  import * as ChildProcess from "effect/unstable/process/ChildProcess";
5
6
  import { fileURLToPath } from "node:url";
7
+ import { SPAWNER_URL_ENV_KEY } from "../../Local/RpcProviderProxy.ts";
8
+ import * as RpcSpawner from "../../Local/RpcSpawner.ts";
6
9
  import { envFile, force, profile, script, stage } from "./_shared.ts";
7
10
  import { ExecStackOptions } from "./deploy.ts";
8
11
 
@@ -15,41 +18,64 @@ export const devCommand = Command.make(
15
18
  stage,
16
19
  profile,
17
20
  },
18
- Effect.fn(function* (args) {
19
- const options = yield* Schema.encodeEffect(ExecStackOptions)({
20
- ...args,
21
- yes: true,
22
- dev: true,
23
- });
24
- // We no longer force Bun in development because this prevents us from testing in Node.
25
- const command =
26
- typeof globalThis.Bun !== "undefined"
27
- ? [
28
- "bun",
29
- "run",
30
- ...process.execArgv,
31
- "--watch",
32
- "--no-clear-screen",
33
- fileURLToPath(import.meta.resolve("alchemy/bin/exec.ts")),
34
- ]
35
- : [
36
- "node",
37
- ...process.execArgv,
38
- "--experimental-transform-types",
39
- "--watch",
40
- "--watch-preserve-output",
41
- fileURLToPath(import.meta.resolve("alchemy/bin/exec.js")),
42
- ];
43
- const child = yield* ChildProcess.make(command[0], command.slice(1), {
44
- stdin: "inherit",
45
- stdout: "inherit",
46
- stderr: "inherit",
47
- env: {
48
- ALCHEMY_EXEC_OPTIONS: JSON.stringify(options),
49
- },
50
- extendEnv: true,
51
- detached: false,
52
- });
53
- yield* child.exitCode;
54
- }),
21
+ Effect.fn(
22
+ function* (args) {
23
+ const options = yield* Schema.encodeEffect(ExecStackOptions)({
24
+ ...args,
25
+ yes: true,
26
+ dev: true,
27
+ });
28
+ const spawner = yield* RpcSpawner.RpcSpawner;
29
+ // We no longer force Bun in development because this prevents us from testing in Node.
30
+ const command =
31
+ typeof globalThis.Bun !== "undefined"
32
+ ? [
33
+ "bun",
34
+ "run",
35
+ ...process.execArgv,
36
+ "--watch",
37
+ "--no-clear-screen",
38
+ fileURLToPath(import.meta.resolve("alchemy/bin/exec.ts")),
39
+ ]
40
+ : [
41
+ "node",
42
+ ...process.execArgv,
43
+ ...(isTransformTypesSupported()
44
+ ? [
45
+ "--experimental-transform-types",
46
+ "--no-warnings=ExperimentalWarning",
47
+ ]
48
+ : []),
49
+ "--watch",
50
+ "--watch-preserve-output",
51
+ fileURLToPath(import.meta.resolve("alchemy/bin/exec.js")),
52
+ ];
53
+ const child = yield* ChildProcess.make(command[0], command.slice(1), {
54
+ stdin: "inherit",
55
+ stdout: "inherit",
56
+ stderr: "inherit",
57
+ env: {
58
+ ALCHEMY_EXEC_OPTIONS: JSON.stringify(options),
59
+ [SPAWNER_URL_ENV_KEY]: spawner.url,
60
+ },
61
+ extendEnv: true,
62
+ detached: false,
63
+ });
64
+ yield* child.exitCode;
65
+ },
66
+ (effect, args) =>
67
+ Effect.provide(
68
+ RpcSpawner.layerServer({
69
+ profile: args.profile,
70
+ envFile: Option.getOrUndefined(args.envFile),
71
+ }),
72
+ )(effect),
73
+ ),
55
74
  );
75
+
76
+ const isTransformTypesSupported = (
77
+ version = process.versions.node,
78
+ ): boolean => {
79
+ const [major, minor] = version.split(".").map(Number);
80
+ return (major === 22 && minor >= 7) || (major >= 23 && major < 26);
81
+ };
@@ -18,6 +18,7 @@ import {
18
18
  envFile,
19
19
  importStack,
20
20
  instrumentCommand,
21
+ printProfile,
21
22
  profile,
22
23
  script,
23
24
  stage,
@@ -91,10 +92,12 @@ export const loginCommand = Command.make(
91
92
  (provider) =>
92
93
  Effect.gen(function* () {
93
94
  const existing = yield* profiles.getProfile(profile);
94
- const stored = existing?.[provider.name];
95
+ // --configure treats every provider as missing, so configure
96
+ // runs unconditionally and overwrites the stored entry.
97
+ const stored = configure ? undefined : existing?.[provider.name];
95
98
 
96
99
  let cfg: { method: string };
97
- if (configure || stored == null) {
100
+ if (stored == null) {
98
101
  cfg = yield* provider.configure(profile, { ci });
99
102
  yield* profiles.setProfile(profile, {
100
103
  ...existing,
@@ -104,11 +107,24 @@ export const loginCommand = Command.make(
104
107
  cfg = stored;
105
108
  }
106
109
 
107
- yield* provider.login(profile, cfg);
108
- yield* provider.prettyPrint(profile, cfg);
110
+ // `read` succeeds when creds are present and not expired
111
+ // (refreshing OAuth proactively if near expiry). Any failure
112
+ // — missing file, dead refresh token, etc. — falls through
113
+ // to `login`.
114
+ yield* provider
115
+ .read(profile, cfg)
116
+ .pipe(Effect.catch(() => provider.login(profile, cfg)));
109
117
  }),
110
118
  { discard: true },
111
119
  );
120
+
121
+ // Print the resulting profile using the same renderer as
122
+ // `alchemy profile show`.
123
+ const final = yield* profiles.getProfile(profile);
124
+ if (final != null) {
125
+ yield* Console.log("");
126
+ yield* printProfile(profile, final, authProviders);
127
+ }
112
128
  }).pipe(Effect.provide(services));
113
129
  }),
114
130
  ),
@@ -9,11 +9,20 @@ import { AuthProviders } from "../../Auth/AuthProvider.ts";
9
9
  import { CredentialsStore } from "../../Auth/Credentials.ts";
10
10
  import { Profile, withProfileOverride } from "../../Auth/Profile.ts";
11
11
  import { AwsAuth } from "../../AWS/AuthProvider.ts";
12
+ import { AxiomAuth } from "../../Axiom/AuthProvider.ts";
12
13
  import { CloudflareAuth } from "../../Cloudflare/Auth/AuthProvider.ts";
14
+ import { GitHubAuth } from "../../GitHub/AuthProvider.ts";
15
+ import { NeonAuth } from "../../Neon/AuthProvider.ts";
16
+ import { PlanetscaleAuth } from "../../Planetscale/AuthProvider.ts";
13
17
  import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
14
18
  import { fileLogger } from "../../Util/FileLogger.ts";
15
19
 
16
- import { envFile, instrumentCommand, profile } from "./_shared.ts";
20
+ import {
21
+ envFile,
22
+ instrumentCommand,
23
+ printProfile,
24
+ profile,
25
+ } from "./_shared.ts";
17
26
 
18
27
  const showCommand = Command.make(
19
28
  "show",
@@ -36,14 +45,6 @@ const showCommand = Command.make(
36
45
  return;
37
46
  }
38
47
 
39
- yield* Console.log(`Profile: ${profile}`);
40
-
41
- const providerNames = Object.keys(stored).sort();
42
- if (providerNames.length === 0) {
43
- yield* Console.log("(no providers configured)");
44
- return;
45
- }
46
-
47
48
  const authProviders: AuthProviders["Service"] = {};
48
49
  const authRegistry = Layer.succeed(AuthProviders, authProviders);
49
50
  const services = Layer.mergeAll(
@@ -54,33 +55,22 @@ const showCommand = Command.make(
54
55
  Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
55
56
  // Building these layers triggers their AuthProviderLayer effect, which
56
57
  // registers the provider into the shared `authProviders` registry.
57
- Layer.provide(Layer.mergeAll(CloudflareAuth, AwsAuth), authRegistry),
58
+ Layer.provide(
59
+ Layer.mergeAll(
60
+ AwsAuth,
61
+ AxiomAuth,
62
+ CloudflareAuth,
63
+ GitHubAuth,
64
+ NeonAuth,
65
+ PlanetscaleAuth,
66
+ ),
67
+ authRegistry,
68
+ ),
58
69
  );
59
70
 
60
- yield* Effect.gen(function* () {
61
- for (const name of providerNames) {
62
- const cfg = stored[name]!;
63
- yield* Console.log("");
64
- yield* Console.log(`── ${name} ──`);
65
- const provider = authProviders[name];
66
- if (provider == null) {
67
- // Unknown provider — fall back to a JSON dump so the user can still
68
- // see what's stored even if its module isn't bundled into the CLI.
69
- yield* Console.log(`method: ${cfg.method}`);
70
- const { method: _method, ...rest } = cfg as Record<
71
- string,
72
- unknown
73
- > & { method: string };
74
- for (const [k, v] of Object.entries(rest)) {
75
- yield* Console.log(
76
- `${k}: ${typeof v === "string" ? v : JSON.stringify(v)}`,
77
- );
78
- }
79
- continue;
80
- }
81
- yield* provider.prettyPrint(profile, cfg);
82
- }
83
- }).pipe(Effect.provide(services));
71
+ yield* printProfile(profile, stored, authProviders).pipe(
72
+ Effect.provide(services),
73
+ );
84
74
  }),
85
75
  ),
86
76
  );
package/src/Cli/exec.ts CHANGED
@@ -7,17 +7,22 @@ import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
7
7
  import { AlchemyContextLive } from "../AlchemyContext.ts";
8
8
  import { CredentialsStoreLive } from "../Auth/Credentials.ts";
9
9
  import { ProfileLive } from "../Auth/Profile.ts";
10
+ import * as RpcProviderProxy from "../Local/RpcProviderProxy.ts";
10
11
  import { PlatformServices } from "../Util/PlatformServices.ts";
11
12
  import { execStack, ExecStackOptions } from "./commands/deploy.ts";
12
13
  import { selectCli } from "./selectCli.ts";
13
14
 
14
- const services = Layer.mergeAll(
15
- Layer.provideMerge(AlchemyContextLive, PlatformServices),
16
- Layer.provide(ProfileLive, PlatformServices),
17
- Layer.provide(CredentialsStoreLive, PlatformServices),
18
- FetchHttpClient.layer,
19
- ConfigProvider.layer(ConfigProvider.fromEnv()),
20
- selectCli(),
15
+ const services = Layer.merge(selectCli(), RpcProviderProxy.fromEnv()).pipe(
16
+ Layer.provideMerge(
17
+ Layer.mergeAll(AlchemyContextLive, ProfileLive, CredentialsStoreLive),
18
+ ),
19
+ Layer.provideMerge(
20
+ Layer.mergeAll(
21
+ PlatformServices,
22
+ FetchHttpClient.layer,
23
+ ConfigProvider.layer(ConfigProvider.fromEnv()),
24
+ ),
25
+ ),
21
26
  );
22
27
 
23
28
  export const exec = () =>
package/src/Cli/main.ts CHANGED
@@ -8,12 +8,9 @@ import { AlchemyContextLive } from "alchemy/AlchemyContext";
8
8
  import { CredentialsStoreLive } from "alchemy/Auth/Credentials";
9
9
  import { ProfileLive } from "alchemy/Auth/Profile";
10
10
  import { TelemetryLive } from "alchemy/Telemetry/Layer";
11
- import { installLocalhostDns } from "alchemy/Util/LocalhostDns";
12
11
  import { PlatformServices } from "alchemy/Util/PlatformServices";
13
12
  import packageJson from "../../package.json" with { type: "json" };
14
13
 
15
- installLocalhostDns();
16
-
17
14
  import { checkLatestVersion } from "./checkVersion.ts";
18
15
  import { handleCancellation } from "./commands/_shared.ts";
19
16
  import { awsCommand } from "./commands/aws.ts";
@@ -190,8 +190,6 @@ export type AiGateway = Resource<
190
190
  {
191
191
  gatewayId: string;
192
192
  accountId: string;
193
- accountTag: string | undefined;
194
- internalId: string | undefined;
195
193
  cacheInvalidateOnUpdate: boolean;
196
194
  cacheTtl: number | null;
197
195
  collectLogs: boolean;
@@ -328,8 +326,8 @@ export const AiGatewayProvider = () =>
328
326
  ): AiGateway["Attributes"] => ({
329
327
  gatewayId: gateway.id,
330
328
  accountId,
331
- accountTag: gateway.accountTag ?? undefined,
332
- internalId: gateway.internalId ?? undefined,
329
+ // accountTag: gateway.accountTag ?? undefined,
330
+ // internalId: gateway.internalId ?? undefined,
333
331
  cacheInvalidateOnUpdate: gateway.cacheInvalidateOnUpdate,
334
332
  cacheTtl: nullIfZero(gateway.cacheTtl),
335
333
  collectLogs: gateway.collectLogs,
@@ -387,7 +385,6 @@ export const AiGatewayProvider = () =>
387
385
  rateLimitingLimit: next.rateLimitingLimit,
388
386
  rateLimitingTechnique: next.rateLimitingTechnique,
389
387
  authentication: next.authentication,
390
- isDefault: next.isDefault,
391
388
  logManagement: next.logManagement,
392
389
  logManagementStrategy: next.logManagementStrategy,
393
390
  logpush: next.logpush,
@@ -413,7 +410,6 @@ export const AiGatewayProvider = () =>
413
410
  rateLimitingTechnique: next.rateLimitingTechnique,
414
411
  authentication: next.authentication,
415
412
  dlp: next.dlp,
416
- isDefault: next.isDefault,
417
413
  logManagement: next.logManagement,
418
414
  logManagementStrategy: next.logManagementStrategy,
419
415
  logpush: next.logpush,
@@ -0,0 +1,132 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { BrowserRenderingBinding } from "./BrowserRenderingBinding.ts";
3
+
4
+ type BrowserRenderingTypeId = typeof BrowserRenderingTypeId;
5
+ const BrowserRenderingTypeId = "Cloudflare.BrowserRendering" as const;
6
+
7
+ export type BrowserRenderingProps = {
8
+ /**
9
+ * Binding name used when `Cloudflare.BrowserRendering.bind(browser)` attaches
10
+ * Browser Rendering from inside a Worker init phase. When Browser Rendering
11
+ * is passed through `Worker({ bindings: { ... } })`, the object key remains
12
+ * the binding name.
13
+ *
14
+ * @default "BROWSER"
15
+ */
16
+ name?: string;
17
+ };
18
+
19
+ /**
20
+ * Marker for a Cloudflare Browser Rendering binding.
21
+ *
22
+ * Browser Rendering bindings are configured directly on Workers and do not
23
+ * have a standalone provisioning API. The Worker provider sees this object in
24
+ * `bindings: { ... }` and emits the corresponding `{ type: "browser" }`
25
+ * metadata binding to the script.
26
+ */
27
+ export type BrowserRendering = {
28
+ kind: BrowserRenderingTypeId;
29
+ name: string;
30
+ };
31
+
32
+ export const isBrowserRendering = (value: unknown): value is BrowserRendering =>
33
+ typeof value === "object" &&
34
+ (value as BrowserRendering)?.kind === BrowserRenderingTypeId;
35
+
36
+ /**
37
+ * A Cloudflare Browser Rendering binding for launching headless browser
38
+ * sessions from Workers via `@cloudflare/puppeteer`.
39
+ *
40
+ * @binding
41
+ *
42
+ * @section Effect-style Worker (recommended)
43
+ * @example Render a page title with managed browser cleanup
44
+ * ```typescript
45
+ * import puppeteer from "@cloudflare/puppeteer";
46
+ * import * as Effect from "effect/Effect";
47
+ *
48
+ * const Browser = Cloudflare.BrowserRendering({ name: "BROWSER" });
49
+ *
50
+ * Cloudflare.Worker(
51
+ * "BrowserWorker",
52
+ * { main: import.meta.filename },
53
+ * Effect.gen(function* () {
54
+ * const browserRendering = yield* Cloudflare.BrowserRendering.bind(
55
+ * yield* Browser,
56
+ * );
57
+ *
58
+ * return {
59
+ * fetch: browserRendering.withBrowser(puppeteer, (browser) =>
60
+ * Effect.gen(function* () {
61
+ * const page = yield* Effect.tryPromise(() => browser.newPage());
62
+ * yield* Effect.tryPromise(() => page.goto("https://example.com"));
63
+ * const title = yield* Effect.tryPromise(() => page.title());
64
+ * return Response.json({ title });
65
+ * }),
66
+ * ),
67
+ * };
68
+ * }).pipe(Effect.provide(Cloudflare.BrowserRenderingBindingLive)),
69
+ * );
70
+ * ```
71
+ *
72
+ * @section Declaring Browser Rendering
73
+ * @example
74
+ * ```typescript
75
+ * const Browser = yield* Cloudflare.BrowserRendering({ name: "BROWSER" });
76
+ * ```
77
+ *
78
+ * @section Worker binding metadata
79
+ * @example
80
+ * ```typescript
81
+ * export const Worker = Cloudflare.Worker("Worker", {
82
+ * main: "./src/worker.ts",
83
+ * bindings: {
84
+ * BROWSER: Cloudflare.BrowserRendering(),
85
+ * },
86
+ * });
87
+ *
88
+ * export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
89
+ * // { BROWSER: Fetcher }
90
+ * ```
91
+ *
92
+ * @example Async-style worker with the raw runtime binding
93
+ * ```typescript
94
+ * import puppeteer from "@cloudflare/puppeteer";
95
+ * import type { WorkerEnv } from "../alchemy.run.ts";
96
+ *
97
+ * export default {
98
+ * async fetch(request: Request, env: WorkerEnv) {
99
+ * const browser = await puppeteer.launch(env.BROWSER);
100
+ * const page = await browser.newPage();
101
+ * await page.goto("https://example.com");
102
+ * const screenshot = await page.screenshot();
103
+ * await browser.close();
104
+ *
105
+ * return new Response(screenshot, {
106
+ * headers: { "content-type": "image/png" },
107
+ * });
108
+ * },
109
+ * };
110
+ * ```
111
+ *
112
+ * @see https://developers.cloudflare.com/browser-rendering/workers-binding-api/
113
+ */
114
+ export const BrowserRendering: {
115
+ (props?: BrowserRenderingProps): Effect.Effect<BrowserRendering>;
116
+ /**
117
+ * Bind Browser Rendering to the surrounding Worker, returning a small client
118
+ * with access to the native Workers runtime binding.
119
+ */
120
+ bind: typeof BrowserRenderingBinding.bind;
121
+ } = Object.assign(
122
+ Effect.fn(function* (props?: BrowserRenderingProps) {
123
+ return {
124
+ kind: BrowserRenderingTypeId,
125
+ name: props?.name ?? "BROWSER",
126
+ } satisfies BrowserRendering;
127
+ }),
128
+ {
129
+ bind: (...args: Parameters<typeof BrowserRenderingBinding.bind>) =>
130
+ BrowserRenderingBinding.bind(...args),
131
+ },
132
+ );
@@ -0,0 +1,137 @@
1
+ import type * as cf from "@cloudflare/workers-types";
2
+ import * as Data from "effect/Data";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Binding from "../../Binding.ts";
6
+ import type { ResourceLike } from "../../Resource.ts";
7
+ import { isWorker, WorkerEnvironment } from "../Workers/Worker.ts";
8
+ import type { BrowserRendering as BrowserRenderingLike } from "./BrowserRendering.ts";
9
+
10
+ export class BrowserRenderingError extends Data.TaggedError(
11
+ "BrowserRenderingError",
12
+ )<{
13
+ message: string;
14
+ cause: unknown;
15
+ }> {}
16
+
17
+ export interface BrowserRenderingBrowser {
18
+ close(): Promise<void>;
19
+ }
20
+
21
+ export interface BrowserRenderingPuppeteer<
22
+ Browser extends BrowserRenderingBrowser,
23
+ > {
24
+ launch(binding: cf.Fetcher): Promise<Browser>;
25
+ }
26
+
27
+ /**
28
+ * Effect-native client for a Cloudflare Browser Rendering binding.
29
+ *
30
+ * Browser Rendering's Workers binding is consumed by `@cloudflare/puppeteer`.
31
+ * Alchemy keeps Puppeteer as a caller-provided dependency while wrapping
32
+ * launch and cleanup in Effects.
33
+ */
34
+ export interface BrowserRenderingClient {
35
+ /**
36
+ * Effect resolving to the raw Cloudflare Browser Rendering runtime binding.
37
+ */
38
+ raw: Effect.Effect<cf.Fetcher, never, WorkerEnvironment>;
39
+ /**
40
+ * Launch a Browser Rendering session through `@cloudflare/puppeteer`.
41
+ */
42
+ launch<Browser extends BrowserRenderingBrowser>(
43
+ puppeteer: BrowserRenderingPuppeteer<Browser>,
44
+ ): Effect.Effect<Browser, BrowserRenderingError, WorkerEnvironment>;
45
+ /**
46
+ * Launch a browser, run an Effect with it, and close it afterward.
47
+ */
48
+ withBrowser<Browser extends BrowserRenderingBrowser, A, E, R>(
49
+ puppeteer: BrowserRenderingPuppeteer<Browser>,
50
+ use: (browser: Browser) => Effect.Effect<A, E, R>,
51
+ ): Effect.Effect<A, BrowserRenderingError | E, WorkerEnvironment | R>;
52
+ }
53
+
54
+ export class BrowserRenderingBinding extends Binding.Service<
55
+ BrowserRenderingBinding,
56
+ (browser: BrowserRenderingLike) => Effect.Effect<BrowserRenderingClient>
57
+ >()("Cloudflare.BrowserRendering.Binding") {}
58
+
59
+ export const BrowserRenderingBindingLive = Layer.effect(
60
+ BrowserRenderingBinding,
61
+ Effect.gen(function* () {
62
+ const Policy = yield* BrowserRenderingBindingPolicy;
63
+
64
+ return Effect.fn(function* (browser: BrowserRenderingLike) {
65
+ yield* Policy(browser);
66
+ // Cloudflare exposes Browser Rendering as a service-style binding for
67
+ // @cloudflare/puppeteer; workers-types has no narrower interface.
68
+ const raw = WorkerEnvironment.useSync(
69
+ (env) => (env as Record<string, cf.Fetcher>)[browser.name]!,
70
+ );
71
+ return makeBrowserRenderingClient(raw);
72
+ });
73
+ }),
74
+ );
75
+
76
+ export class BrowserRenderingBindingPolicy extends Binding.Policy<
77
+ BrowserRenderingBindingPolicy,
78
+ (browser: BrowserRenderingLike) => Effect.Effect<void>
79
+ >()("Cloudflare.BrowserRendering.Binding") {}
80
+
81
+ export const BrowserRenderingBindingPolicyLive =
82
+ BrowserRenderingBindingPolicy.layer.succeed(
83
+ Effect.fn(function* (host: ResourceLike, browser: BrowserRenderingLike) {
84
+ if (isWorker(host)) {
85
+ yield* host.bind(browser.name, {
86
+ bindings: [
87
+ {
88
+ type: "browser",
89
+ name: browser.name,
90
+ },
91
+ ],
92
+ });
93
+ } else {
94
+ return yield* Effect.die(
95
+ new Error(
96
+ `BrowserRenderingBinding does not support runtime '${host.Type}'`,
97
+ ),
98
+ );
99
+ }
100
+ }),
101
+ );
102
+
103
+ const tryPromise = <T>(
104
+ fn: () => Promise<T>,
105
+ ): Effect.Effect<T, BrowserRenderingError> =>
106
+ Effect.tryPromise({
107
+ try: fn,
108
+ catch: (error) =>
109
+ new BrowserRenderingError({
110
+ message:
111
+ error instanceof Error
112
+ ? error.message
113
+ : "Unknown Browser Rendering error",
114
+ cause: error,
115
+ }),
116
+ });
117
+
118
+ /** @internal */
119
+ export const makeBrowserRenderingClient = (
120
+ raw: Effect.Effect<cf.Fetcher, never, WorkerEnvironment>,
121
+ ): BrowserRenderingClient => {
122
+ const launch = <Browser extends BrowserRenderingBrowser>(
123
+ puppeteer: BrowserRenderingPuppeteer<Browser>,
124
+ ) =>
125
+ raw.pipe(
126
+ Effect.flatMap((binding) => tryPromise(() => puppeteer.launch(binding))),
127
+ );
128
+
129
+ return {
130
+ raw,
131
+ launch,
132
+ withBrowser: (puppeteer, use) =>
133
+ Effect.acquireUseRelease(launch(puppeteer), use, (browser) =>
134
+ tryPromise(() => browser.close()),
135
+ ),
136
+ } satisfies BrowserRenderingClient;
137
+ };
@@ -0,0 +1,11 @@
1
+ export * from "./BrowserRendering.ts";
2
+ export {
3
+ BrowserRenderingBinding,
4
+ BrowserRenderingBindingLive,
5
+ BrowserRenderingBindingPolicy,
6
+ BrowserRenderingBindingPolicyLive,
7
+ BrowserRenderingError,
8
+ type BrowserRenderingBrowser,
9
+ type BrowserRenderingClient,
10
+ type BrowserRenderingPuppeteer,
11
+ } from "./BrowserRenderingBinding.ts";