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
@@ -2,6 +2,7 @@ import type * as runtime from "@cloudflare/workers-types";
2
2
  import * as Data from "effect/Data";
3
3
  import * as Effect from "effect/Effect";
4
4
  import * as Layer from "effect/Layer";
5
+ import * as Redacted from "effect/Redacted";
5
6
  import * as Binding from "../../Binding.ts";
6
7
  import type { ResourceLike } from "../../Resource.ts";
7
8
  import type { RuntimeContext } from "../../RuntimeContext.ts";
@@ -20,7 +21,7 @@ export class SecretError extends Data.TaggedError("SecretError")<{
20
21
  * `SecretsStoreSecret` binding.
21
22
  */
22
23
  export interface SecretClient extends Effect.Effect<
23
- string,
24
+ Redacted.Redacted<string>,
24
25
  SecretError,
25
26
  RuntimeContext
26
27
  > {
@@ -31,7 +32,7 @@ export interface SecretClient extends Effect.Effect<
31
32
  /**
32
33
  * Read the current value of the secret.
33
34
  */
34
- get(): Effect.Effect<string, SecretError, RuntimeContext>;
35
+ get(): Effect.Effect<Redacted.Redacted<string>, SecretError, RuntimeContext>;
35
36
  }
36
37
 
37
38
  export class SecretBinding extends Binding.Service<
@@ -63,17 +64,16 @@ export const SecretBindingLive = Layer.effect(
63
64
  }),
64
65
  });
65
66
 
66
- const getEffect: Effect.Effect<string, SecretError> = raw.pipe(
67
- Effect.flatMap((raw) => tryPromise(() => raw.get())),
67
+ const getEffect = raw.pipe(
68
+ Effect.flatMap((raw) =>
69
+ tryPromise(() => raw.get().then(Redacted.make)),
70
+ ),
68
71
  );
69
72
 
70
- return Object.assign(
71
- Effect.suspend(() => getEffect),
72
- {
73
- raw,
74
- get: () => getEffect,
75
- },
76
- ) as SecretClient;
73
+ return Object.assign(getEffect, {
74
+ raw,
75
+ get: () => getEffect,
76
+ });
77
77
  });
78
78
  }),
79
79
  );
@@ -1,3 +1,4 @@
1
+ import { Redacted } from "effect";
1
2
  import * as Effect from "effect/Effect";
2
3
  import * as Layer from "effect/Layer";
3
4
  import * as Path from "effect/Path";
@@ -12,7 +13,7 @@ import {
12
13
  StateApi,
13
14
  StateAuthLive,
14
15
  } from "../../State/HttpStateApi.ts";
15
- import * as Secret from "../SecretsStore/Secret.ts";
16
+ import { Secret } from "../SecretsStore/Secret.ts";
16
17
  import { SecretBindingLive } from "../SecretsStore/SecretBinding.ts";
17
18
  import { Worker } from "../Workers/Worker.ts";
18
19
  import Store from "./Store.ts";
@@ -29,7 +30,7 @@ export const STATE_STORE_SCRIPT_NAME = "alchemy-state-store" as const;
29
30
  * compare against this constant; a mismatch (or 404) triggers a
30
31
  * forced redeploy via the bootstrap flow.
31
32
  */
32
- export const STATE_STORE_VERSION = 5 as const;
33
+ export const STATE_STORE_VERSION = 6 as const;
33
34
 
34
35
  /**
35
36
  * Hard-coded OTLP/HTTP endpoints. Point at the public ingest relay
@@ -108,22 +109,21 @@ export default Worker(
108
109
  },
109
110
  },
110
111
  Effect.gen(function* () {
111
- const secret = yield* Secret.Secret.bind(AuthToken);
112
+ const remoteSecret = yield* Secret.bind(AuthToken);
112
113
  const store = yield* Store;
113
114
 
114
- const bearerTokenValidator = Layer.effect(
115
+ const bearerTokenValidator = Layer.succeed(
115
116
  BearerTokenValidator,
116
- secret.get().pipe(
117
- Effect.map((expected) =>
118
- BearerTokenValidator.of({
119
- validate: (token) =>
120
- !!expected && timingSafeEqual(token, expected)
121
- ? Effect.void
122
- : Effect.fail(new HttpApiError.Unauthorized()),
123
- }),
124
- ),
125
- Effect.orDie,
126
- ),
117
+ BearerTokenValidator.of({
118
+ // @ts-expect-error - TODO(sam): fix RuntimeContext color here
119
+ validate: Effect.fnUntraced(function* (token) {
120
+ const expected = yield* remoteSecret.get();
121
+ return !!expected &&
122
+ timingSafeEqual(token.trim(), Redacted.value(expected).trim())
123
+ ? yield* Effect.void
124
+ : yield* Effect.fail(new HttpApiError.Unauthorized());
125
+ }),
126
+ }),
127
127
  );
128
128
 
129
129
  const versionApi = HttpApiBuilder.group(StateApi, "version", (handlers) =>
@@ -41,7 +41,7 @@ import * as Access from "../Access.ts";
41
41
  import { CloudflareAuth } from "../Auth/AuthProvider.ts";
42
42
  import { EdgeSessionError, createEdgeSession } from "../EdgeSession.ts";
43
43
  import Api, { STATE_STORE_SCRIPT_NAME, STATE_STORE_VERSION } from "./Api.ts";
44
- import { AuthTokenSecretName, TokenValue } from "./Token.ts";
44
+ import { AuthToken, AuthTokenSecretName, TokenValue } from "./Token.ts";
45
45
 
46
46
  /** Filename used for stored credentials under the profile directory. */
47
47
  const CREDENTIALS_FILE = "cloudflare-state-store";
@@ -145,7 +145,13 @@ export const bootstrap = (options: BootstrapOptions = {}) =>
145
145
  yield* Clank.info(
146
146
  `Resuming Cloudflare State Store '${scriptName}' deployment...`,
147
147
  );
148
- yield* finishBootstrap({ scriptName, profileName, localState, isCI });
148
+ yield* finishBootstrap({
149
+ scriptName,
150
+ profileName,
151
+ localState,
152
+ isCI,
153
+ force,
154
+ });
149
155
  yield* Clank.success(`Cloudflare State Store '${scriptName}' is ready.`);
150
156
  return;
151
157
  }
@@ -178,6 +184,7 @@ export const bootstrap = (options: BootstrapOptions = {}) =>
178
184
  localState,
179
185
  isCI,
180
186
  url: credentials.url,
187
+ force,
181
188
  });
182
189
  yield* Clank.success(`Cloudflare State Store '${scriptName}' is ready.`);
183
190
  return;
@@ -191,7 +198,13 @@ export const bootstrap = (options: BootstrapOptions = {}) =>
191
198
  yield* Clank.info(`Deploying Cloudflare State Store '${scriptName}'...`);
192
199
  }
193
200
 
194
- yield* finishBootstrap({ scriptName, profileName, localState, isCI });
201
+ yield* finishBootstrap({
202
+ scriptName,
203
+ profileName,
204
+ localState,
205
+ isCI,
206
+ force,
207
+ });
195
208
  yield* Clank.success(`Cloudflare State Store '${scriptName}' is ready.`);
196
209
  }).pipe(
197
210
  Effect.withSpan("state_store.bootstrap", {
@@ -221,6 +234,7 @@ export const state = () =>
221
234
  "alchemy.state_store.script_name": scriptName,
222
235
  "alchemy.state_store.profile": profileName,
223
236
  "alchemy.state_store.ci": isCI,
237
+ "alchemy.state_store.force": false,
224
238
  });
225
239
  yield* annotateAccountHash(
226
240
  yield* Config.boolean("NO_TRACK").pipe(Config.withDefault(false)),
@@ -255,6 +269,7 @@ export const state = () =>
255
269
  profileName,
256
270
  localState,
257
271
  isCI,
272
+ force: false,
258
273
  });
259
274
  }
260
275
 
@@ -270,6 +285,7 @@ export const state = () =>
270
285
  localState,
271
286
  isCI,
272
287
  url: credentials.url,
288
+ force: false,
273
289
  });
274
290
  if (fresh) return fresh;
275
291
 
@@ -311,6 +327,7 @@ export const state = () =>
311
327
  localState,
312
328
  isCI,
313
329
  url: credentials.url,
330
+ force: false,
314
331
  });
315
332
  if (fresh) return fresh;
316
333
 
@@ -346,6 +363,7 @@ export const state = () =>
346
363
  profileName,
347
364
  localState,
348
365
  isCI,
366
+ force: false,
349
367
  });
350
368
  }).pipe(recordStateStoreInit, Effect.orDie),
351
369
  ).pipe(
@@ -423,14 +441,20 @@ const finishBootstrap = ({
423
441
  profileName,
424
442
  localState,
425
443
  isCI,
444
+ force,
426
445
  }: {
427
446
  scriptName: string;
428
447
  profileName: string;
429
448
  localState: StateService;
430
449
  isCI: boolean;
450
+ force: boolean;
431
451
  }) =>
432
452
  Effect.gen(function* () {
433
- yield* deployStateStore(scriptName, localState);
453
+ const { authToken } = yield* deployStateStore(
454
+ scriptName,
455
+ localState,
456
+ force,
457
+ );
434
458
 
435
459
  // Don't trust the `authToken` returned by `deploy(...)`: when
436
460
  // adoption kicks in (the Secrets Store secret already existed),
@@ -442,7 +466,7 @@ const finishBootstrap = ({
442
466
  // actually deployed. `loginWithCloudflare` also persists the
443
467
  // credentials file (skipping the write in CI), so we don't need
444
468
  // to do that explicitly here.
445
- const { url, authToken } = yield* loginWithCloudflare();
469
+ const { url } = yield* loginWithCloudflare();
446
470
  const httpState = yield* makeCloudflareStateStore({ url, authToken });
447
471
  // `profileName` is intentionally unused here — `loginWithCloudflare`
448
472
  // resolves it itself. Reference it to keep the surrounding API
@@ -476,7 +500,11 @@ const finishBootstrap = ({
476
500
  }),
477
501
  );
478
502
 
479
- const deployStateStore = (scriptName: string, state?: StateService) =>
503
+ const deployStateStore = (
504
+ scriptName: string,
505
+ state?: StateService,
506
+ force?: boolean,
507
+ ) =>
480
508
  Effect.gen(function* () {
481
509
  yield* annotateAccountHash();
482
510
  const localState = state ?? (yield* makeLocalState());
@@ -485,6 +513,7 @@ const deployStateStore = (scriptName: string, state?: StateService) =>
485
513
  const { url, authToken } = yield* deploy({
486
514
  // use the script name as the stage name (so the user can have multiple state stores)
487
515
  stage: scriptName,
516
+ force,
488
517
  stack: Alchemy.Stack(
489
518
  "CloudflareStateStore",
490
519
  {
@@ -494,6 +523,7 @@ const deployStateStore = (scriptName: string, state?: StateService) =>
494
523
  Effect.gen(function* () {
495
524
  const token = yield* TokenValue;
496
525
  const api = yield* Api;
526
+ yield* AuthToken; // make sure it's in the Secrets Store
497
527
 
498
528
  // Surface the bearer token so tests and clients can authenticate
499
529
  // after deploy. The underlying value lives in the Cloudflare
@@ -514,6 +544,9 @@ const deployStateStore = (scriptName: string, state?: StateService) =>
514
544
  // TODO(sam): we should not need to do this, but types do complain. fix deploy
515
545
  Effect.provide(stateLayer),
516
546
  );
547
+
548
+ yield* writeCredentials(url, authToken);
549
+
517
550
  // Cloudflare's worker upload is eventually consistent: the deploy
518
551
  // call returns as soon as the script upload is accepted, but the
519
552
  // edge can keep serving the previous version for several seconds
@@ -582,6 +615,13 @@ export const loginWithCloudflare = () =>
582
615
  STATE_STORE_SCRIPT_NAME,
583
616
  store.id,
584
617
  AuthTokenSecretName,
618
+ ).pipe(
619
+ Effect.retry({
620
+ while: isWorkersPreviewConfigurationError,
621
+ schedule: Schedule.exponential(200).pipe(
622
+ Schedule.both(Schedule.recurs(15)),
623
+ ),
624
+ }),
585
625
  );
586
626
 
587
627
  // 3. Derive the deployed worker URL.
@@ -634,6 +674,25 @@ export const loginWithCloudflare = () =>
634
674
  }),
635
675
  );
636
676
 
677
+ const writeCredentials = (url: string, authToken: string) =>
678
+ Effect.gen(function* () {
679
+ const profileName = yield* ALCHEMY_PROFILE;
680
+ const credStore = yield* CredentialsStore;
681
+ yield* credStore.write<HttpStateStoreCredentials>(
682
+ profileName,
683
+ CREDENTIALS_FILE,
684
+ {
685
+ url,
686
+ authToken,
687
+ },
688
+ );
689
+ });
690
+
691
+ const isWorkersPreviewConfigurationError = (error: unknown) =>
692
+ error instanceof EdgeSessionError &&
693
+ (error.message.includes("Invalid Workers Preview configuration") ||
694
+ error.message.includes("Error 1031"));
695
+
637
696
  /**
638
697
  * Run {@link finishBootstrap} iff the worker at `url` fails the
639
698
  * version probe; otherwise resolve to `undefined`. Centralises the
@@ -646,12 +705,14 @@ const redeployIfStale = ({
646
705
  profileName,
647
706
  localState,
648
707
  isCI,
708
+ force,
649
709
  }: {
650
710
  url: string;
651
711
  scriptName: string;
652
712
  profileName: string;
653
713
  localState: StateService;
654
714
  isCI: boolean;
715
+ force: boolean;
655
716
  }) =>
656
717
  Effect.gen(function* () {
657
718
  const { matches, expected, observed } = yield* checkStateStoreVersion(url);
@@ -665,6 +726,7 @@ const redeployIfStale = ({
665
726
  profileName,
666
727
  localState,
667
728
  isCI,
729
+ force,
668
730
  });
669
731
  }).pipe(
670
732
  Effect.withSpan("state_store.redeploy_if_stale", {
@@ -1,11 +1,12 @@
1
1
  import * as Effect from "effect/Effect";
2
+ import * as Redacted from "effect/Redacted";
2
3
 
4
+ import { pipe } from "effect/Function";
3
5
  import type {
4
6
  ReplacedResourceState,
5
7
  ResourceState,
6
8
  } from "../../State/ResourceState.ts";
7
9
  import { encodeState } from "../../State/StateEncoding.ts";
8
- import { pipe } from "effect/Function";
9
10
  import * as Secret from "../SecretsStore/Secret.ts";
10
11
  import { DurableObjectNamespace } from "../Workers/DurableObjectNamespace.ts";
11
12
  import { DurableObjectState } from "../Workers/DurableObjectState.ts";
@@ -25,7 +26,9 @@ export default class Store extends DurableObjectNamespace<Store>()(
25
26
  const doState = yield* DurableObjectState;
26
27
  const storage = doState.storage;
27
28
 
28
- const keyHex = yield* encryptionSecret.get().pipe(Effect.orDie);
29
+ const keyHex = yield* encryptionSecret
30
+ .get()
31
+ .pipe(Effect.map(Redacted.value), Effect.orDie);
29
32
  const cryptoKey = yield* Effect.tryPromise(() =>
30
33
  crypto.subtle.importKey(
31
34
  "raw",
@@ -77,7 +77,7 @@ export declare namespace VpcService {
77
77
  export type VpcServiceAttributes = {
78
78
  serviceId: string;
79
79
  serviceName: string;
80
- serviceType: "http";
80
+ serviceType: "http" | "tcp";
81
81
  httpPort: number | undefined;
82
82
  httpsPort: number | undefined;
83
83
  host: VpcService.Host;
@@ -262,7 +262,7 @@ export const formatVpcService = (
262
262
  service: {
263
263
  serviceId?: string | null;
264
264
  name: string;
265
- type: "http";
265
+ type: "http" | "tcp";
266
266
  createdAt?: string | null;
267
267
  updatedAt?: string | null;
268
268
  httpPort?: number | null;
@@ -8,16 +8,12 @@ import {
8
8
  Worker,
9
9
  type WorkerAssetsConfig,
10
10
  type WorkerBindingProps,
11
- type WorkerEnv,
12
11
  type WorkerProps,
13
12
  } from "../Workers/Worker.ts";
14
13
 
15
- export interface StaticSiteProps<
16
- Bindings extends WorkerBindingProps = {},
17
- Env extends WorkerEnv = WorkerEnv,
18
- >
14
+ export interface StaticSiteProps<Bindings extends WorkerBindingProps = {}>
19
15
  extends
20
- Omit<WorkerProps<Bindings, Env, WorkerAssetsConfig>, "assets">,
16
+ Omit<WorkerProps<Bindings, WorkerAssetsConfig>, "assets" | "dev">,
21
17
  Omit<CommandProps, "env"> {
22
18
  /**
23
19
  * Optional configuration for static asset routing behavior.
@@ -120,13 +116,12 @@ export type StaticSite = ReturnType<typeof StaticSite>;
120
116
  */
121
117
  export const StaticSite = <
122
118
  const Bindings extends WorkerBindingProps = {},
123
- const Env extends WorkerEnv = WorkerEnv,
124
119
  Req = never,
125
120
  >(
126
121
  id: string,
127
122
  propsEff:
128
- | InputProps<StaticSiteProps<Bindings, Env>>
129
- | Effect.Effect<InputProps<StaticSiteProps<Bindings, Env>>, never, Req>,
123
+ | InputProps<StaticSiteProps<Bindings>>
124
+ | Effect.Effect<InputProps<StaticSiteProps<Bindings>>, never, Req>,
130
125
  ) =>
131
126
  Effect.gen(function* () {
132
127
  const props = Effect.isEffect(propsEff)
@@ -154,7 +149,7 @@ export const StaticSite = <
154
149
  })),
155
150
  );
156
151
 
157
- return yield* Worker<Bindings, Env, WorkerAssetsConfig, Req>(
152
+ return yield* Worker<Bindings, WorkerAssetsConfig, Req>(
158
153
  "Worker",
159
154
  Effect.map(props, (props) => ({
160
155
  ...props,
@@ -163,6 +158,9 @@ export const StaticSite = <
163
158
  hash: build.hash,
164
159
  config: props.assetsConfig,
165
160
  },
161
+ // Omit the dev command from WorkerProps since it's different from WorkerProps["dev"].
162
+ // TODO: we'll need to update this when we add local dev support for StaticSite.
163
+ dev: undefined,
166
164
  })),
167
165
  );
168
166
  }).pipe(Namespace.push(id));
@@ -5,14 +5,12 @@ import {
5
5
  Worker,
6
6
  type WorkerAssetsConfig,
7
7
  type WorkerBindingProps,
8
- type WorkerEnv,
9
8
  type WorkerProps,
10
9
  } from "../Workers/Worker.ts";
11
10
 
12
11
  export interface ViteProps<
13
12
  Bindings extends WorkerBindingProps = {},
14
- Env extends WorkerEnv = {},
15
- > extends Omit<WorkerProps<Bindings, Env>, "vite" | "main"> {
13
+ > extends Omit<WorkerProps<Bindings>, "vite" | "main"> {
16
14
  /**
17
15
  * Root directory passed to Vite's `root` option.
18
16
  * Defaults to the current working directory (`process.cwd()`).
@@ -111,15 +109,14 @@ export interface ViteProps<
111
109
  */
112
110
  export const Vite = <
113
111
  const Bindings extends WorkerBindingProps = {},
114
- const Env extends WorkerEnv = {},
115
112
  Req = never,
116
113
  >(
117
114
  id: string,
118
115
  propsEff?:
119
- | InputProps<ViteProps<Bindings, Env>>
120
- | Effect.Effect<InputProps<ViteProps<Bindings, Env>>, never, Req>,
116
+ | InputProps<ViteProps<Bindings>>
117
+ | Effect.Effect<InputProps<ViteProps<Bindings>>, never, Req>,
121
118
  ) =>
122
- Worker<Bindings, Env, WorkerAssetsConfig, Req>(
119
+ Worker<Bindings, WorkerAssetsConfig, Req>(
123
120
  id,
124
121
  Effect.map(
125
122
  Effect.isEffect(propsEff) ? propsEff : Effect.succeed(propsEff),
@@ -1,3 +1,4 @@
1
+ import createIgnore from "@alchemy.run/node-utils/ignore";
1
2
  import * as workers from "@distilled.cloud/cloudflare/workers";
2
3
  import * as Data from "effect/Data";
3
4
  import * as Effect from "effect/Effect";
@@ -6,7 +7,6 @@ import * as Path from "effect/Path";
6
7
  import type { PlatformError } from "effect/PlatformError";
7
8
  import type { ScopedPlanStatusSession } from "../../Cli/Cli.ts";
8
9
  import { sha256, sha256Object } from "../../Util/index.ts";
9
- import createIgnore from "../../Util/ignore.ts";
10
10
 
11
11
  const MAX_ASSET_SIZE = 1024 * 1024 * 25; // 25MB
12
12
  const MAX_ASSET_COUNT = 20_000;
@@ -16,7 +16,7 @@ import {
16
16
  DurableObjectState,
17
17
  fromDurableObjectState,
18
18
  } from "./DurableObjectState.ts";
19
- import { makeRequestEffect } from "./HttpServer.ts";
19
+ import { isScopeEjected, makeRequestEffect } from "./HttpServer.ts";
20
20
  import { fromWebSocket } from "./WebSocket.ts";
21
21
  import { getWorkerExport, handleRpcExit } from "./WorkerBridge.ts";
22
22
 
@@ -81,7 +81,6 @@ export const makeDurableObjectBridge =
81
81
 
82
82
  return new Proxy(this, {
83
83
  get: (target, prop) => {
84
- console.log(target, prop, prop in target);
85
84
  const bind = (f: any) =>
86
85
  typeof f === "function" ? f.bind(target) : f;
87
86
  if (typeof prop !== "string") return bind((target as any)[prop]);
@@ -131,9 +130,12 @@ export const makeDurableObjectBridge =
131
130
  : Promise.reject(Cause.squash(exit.cause))),
132
131
  )
133
132
  .finally(() =>
134
- Scope.close(scope, Exit.void).pipe(Effect.runPromise, (promise) =>
135
- this.#state.waitUntil(promise),
136
- ),
133
+ isScopeEjected(scope)
134
+ ? undefined
135
+ : Scope.close(scope, Exit.void).pipe(
136
+ Effect.runPromise,
137
+ (promise) => this.ctx.waitUntil(promise),
138
+ ),
137
139
  );
138
140
  }
139
141