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.
- package/bin/cli.js +18 -5
- package/bin/exec.js +381 -240
- package/bin/exec.js.map +1 -1
- package/lib/AWS/Lambda/Function.d.ts +17 -0
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +61 -16
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Providers.d.ts +2 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +3 -1
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/Apply.js +17 -1
- package/lib/Apply.js.map +1 -1
- package/lib/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Auth/AuthProvider.js +24 -6
- package/lib/Auth/AuthProvider.js.map +1 -1
- package/lib/Auth/Credentials.d.ts.map +1 -1
- package/lib/Auth/Credentials.js +3 -3
- package/lib/Auth/Credentials.js.map +1 -1
- package/lib/Auth/Lock.js +2 -2
- package/lib/Auth/Lock.js.map +1 -1
- package/lib/Bundle/Bundle.d.ts +11 -0
- package/lib/Bundle/Bundle.d.ts.map +1 -1
- package/lib/Bundle/Bundle.js +19 -12
- package/lib/Bundle/Bundle.js.map +1 -1
- package/lib/Bundle/BundleAnalyzerPlugin.d.ts +25 -0
- package/lib/Bundle/BundleAnalyzerPlugin.d.ts.map +1 -0
- package/lib/Bundle/BundleAnalyzerPlugin.js +16 -0
- package/lib/Bundle/BundleAnalyzerPlugin.js.map +1 -0
- package/lib/Bundle/RawPlugin.d.ts +36 -0
- package/lib/Bundle/RawPlugin.d.ts.map +1 -0
- package/lib/Bundle/RawPlugin.js +80 -0
- package/lib/Bundle/RawPlugin.js.map +1 -0
- package/lib/Bundle/index.d.ts +2 -0
- package/lib/Bundle/index.d.ts.map +1 -1
- package/lib/Bundle/index.js +2 -0
- package/lib/Bundle/index.js.map +1 -1
- package/lib/Cli/commands/_shared.d.ts +13 -1
- package/lib/Cli/commands/_shared.d.ts.map +1 -1
- package/lib/Cli/commands/_shared.js +33 -2
- package/lib/Cli/commands/_shared.js.map +1 -1
- package/lib/Cli/commands/dev.d.ts +3 -2
- package/lib/Cli/commands/dev.d.ts.map +1 -1
- package/lib/Cli/commands/dev.js +19 -2
- package/lib/Cli/commands/dev.js.map +1 -1
- package/lib/Cli/commands/login.d.ts.map +1 -1
- package/lib/Cli/commands/login.js +19 -5
- package/lib/Cli/commands/login.js.map +1 -1
- package/lib/Cli/commands/profile.d.ts.map +1 -1
- package/lib/Cli/commands/profile.js +7 -27
- package/lib/Cli/commands/profile.js.map +1 -1
- package/lib/Cli/exec.d.ts.map +1 -1
- package/lib/Cli/exec.js +2 -1
- package/lib/Cli/exec.js.map +1 -1
- package/lib/Cli/main.d.ts.map +1 -1
- package/lib/Cli/main.js +0 -2
- package/lib/Cli/main.js.map +1 -1
- package/lib/Cloudflare/AiGateway/AiGateway.d.ts +0 -2
- package/lib/Cloudflare/AiGateway/AiGateway.d.ts.map +1 -1
- package/lib/Cloudflare/AiGateway/AiGateway.js +2 -4
- package/lib/Cloudflare/AiGateway/AiGateway.js.map +1 -1
- package/lib/Cloudflare/BrowserRendering/BrowserRendering.d.ts +116 -0
- package/lib/Cloudflare/BrowserRendering/BrowserRendering.d.ts.map +1 -0
- package/lib/Cloudflare/BrowserRendering/BrowserRendering.js +92 -0
- package/lib/Cloudflare/BrowserRendering/BrowserRendering.js.map +1 -0
- package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.d.ts +55 -0
- package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.d.ts.map +1 -0
- package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.js +55 -0
- package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.js.map +1 -0
- package/lib/Cloudflare/BrowserRendering/index.d.ts +3 -0
- package/lib/Cloudflare/BrowserRendering/index.d.ts.map +1 -0
- package/lib/Cloudflare/BrowserRendering/index.js +3 -0
- package/lib/Cloudflare/BrowserRendering/index.js.map +1 -0
- package/lib/Cloudflare/Container/Container.d.ts +3 -3
- package/lib/Cloudflare/Container/Container.js +3 -3
- package/lib/Cloudflare/Container/StartContainer.d.ts.map +1 -1
- package/lib/Cloudflare/Container/StartContainer.js.map +1 -1
- package/lib/Cloudflare/D1/D1Database.d.ts +1 -0
- package/lib/Cloudflare/D1/D1Database.d.ts.map +1 -1
- package/lib/Cloudflare/D1/D1Database.js +2 -1
- package/lib/Cloudflare/D1/D1Database.js.map +1 -1
- package/lib/Cloudflare/D1/D1DatabaseBinding.js +1 -1
- package/lib/Cloudflare/D1/D1DatabaseBinding.js.map +1 -1
- package/lib/Cloudflare/Fetcher.d.ts.map +1 -1
- package/lib/Cloudflare/Fetcher.js +0 -2
- package/lib/Cloudflare/Fetcher.js.map +1 -1
- package/lib/Cloudflare/Hyperdrive/Hyperdrive.d.ts +1 -0
- package/lib/Cloudflare/Hyperdrive/Hyperdrive.d.ts.map +1 -1
- package/lib/Cloudflare/Hyperdrive/Hyperdrive.js +3 -0
- package/lib/Cloudflare/Hyperdrive/Hyperdrive.js.map +1 -1
- package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts +3 -2
- package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js +32 -33
- package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js.map +1 -1
- package/lib/Cloudflare/KV/KVNamespace.d.ts +1 -0
- package/lib/Cloudflare/KV/KVNamespace.d.ts.map +1 -1
- package/lib/Cloudflare/KV/KVNamespace.js +2 -0
- package/lib/Cloudflare/KV/KVNamespace.js.map +1 -1
- package/lib/Cloudflare/Local.d.ts +2 -0
- package/lib/Cloudflare/Local.d.ts.map +1 -0
- package/lib/Cloudflare/Local.js +9 -0
- package/lib/Cloudflare/Local.js.map +1 -0
- package/lib/Cloudflare/Providers.d.ts +2 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +23 -17
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Queue/Queue.d.ts +1 -0
- package/lib/Cloudflare/Queue/Queue.d.ts.map +1 -1
- package/lib/Cloudflare/Queue/Queue.js +1 -0
- package/lib/Cloudflare/Queue/Queue.js.map +1 -1
- package/lib/Cloudflare/Queue/QueueConsumer.d.ts +2 -1
- package/lib/Cloudflare/Queue/QueueConsumer.d.ts.map +1 -1
- package/lib/Cloudflare/Queue/QueueConsumer.js +11 -3
- package/lib/Cloudflare/Queue/QueueConsumer.js.map +1 -1
- package/lib/Cloudflare/Queue/QueueEventSource.d.ts +30 -4
- package/lib/Cloudflare/Queue/QueueEventSource.d.ts.map +1 -1
- package/lib/Cloudflare/Queue/QueueEventSource.js +22 -1
- package/lib/Cloudflare/Queue/QueueEventSource.js.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.d.ts +1 -0
- package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.js +18 -0
- package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
- package/lib/Cloudflare/SecretsStore/Secret.d.ts.map +1 -1
- package/lib/Cloudflare/SecretsStore/Secret.js +13 -34
- package/lib/Cloudflare/SecretsStore/Secret.js.map +1 -1
- package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts +3 -2
- package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts.map +1 -1
- package/lib/Cloudflare/SecretsStore/SecretBinding.js +3 -2
- package/lib/Cloudflare/SecretsStore/SecretBinding.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +5 -13
- package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Api.js +14 -8
- package/lib/Cloudflare/StateStore/Api.js.map +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/State.js +45 -9
- package/lib/Cloudflare/StateStore/State.js.map +1 -1
- package/lib/Cloudflare/StateStore/Store.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Store.js +5 -2
- package/lib/Cloudflare/StateStore/Store.js.map +1 -1
- package/lib/Cloudflare/VpcService/VpcService.d.ts +2 -2
- package/lib/Cloudflare/VpcService/VpcService.d.ts.map +1 -1
- package/lib/Cloudflare/Website/StaticSite.d.ts +5 -5
- package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
- package/lib/Cloudflare/Website/StaticSite.js +3 -0
- package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
- package/lib/Cloudflare/Website/Vite.d.ts +5 -5
- package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Website/Vite.js.map +1 -1
- package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Assets.js +1 -1
- package/lib/Cloudflare/Workers/Assets.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectBridge.js +4 -3
- package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts +183 -6
- package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectNamespace.js +279 -76
- package/lib/Cloudflare/Workers/DurableObjectNamespace.js.map +1 -1
- package/lib/Cloudflare/Workers/HttpServer.d.ts +6 -4
- package/lib/Cloudflare/Workers/HttpServer.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/HttpServer.js +20 -15
- package/lib/Cloudflare/Workers/HttpServer.js.map +1 -1
- package/lib/Cloudflare/Workers/InferEnv.d.ts +3 -2
- package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +19 -3
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +458 -21
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/Rpc.d.ts +16 -0
- package/lib/Cloudflare/Workers/Rpc.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Rpc.js +22 -0
- package/lib/Cloudflare/Workers/Rpc.js.map +1 -1
- package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.d.ts +285 -0
- package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.js +288 -0
- package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.js.map +1 -0
- package/lib/Cloudflare/Workers/RpcWorker.d.ts +305 -0
- package/lib/Cloudflare/Workers/RpcWorker.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/RpcWorker.js +350 -0
- package/lib/Cloudflare/Workers/RpcWorker.js.map +1 -0
- package/lib/Cloudflare/Workers/Vite.d.ts +1 -1
- package/lib/Cloudflare/Workers/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Vite.js +2 -1
- package/lib/Cloudflare/Workers/Vite.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +69 -37
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +171 -51
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +158 -97
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +11 -23
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.js +3 -0
- package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBridge.js +8 -7
- package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts +1 -2
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.js +7 -7
- package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +9 -10
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
- package/lib/Cloudflare/Workers/Workflow.d.ts +5 -3
- package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Workflow.js +19 -1
- package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
- package/lib/Cloudflare/Workers/index.d.ts +2 -0
- package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/index.js +2 -0
- package/lib/Cloudflare/Workers/index.js.map +1 -1
- package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts +184 -0
- package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts.map +1 -0
- package/lib/Cloudflare/Zaraz/ZarazConfig.js +216 -0
- package/lib/Cloudflare/Zaraz/ZarazConfig.js.map +1 -0
- package/lib/Cloudflare/Zaraz/ZarazEventTypes.d.ts +188 -0
- package/lib/Cloudflare/Zaraz/ZarazEventTypes.d.ts.map +1 -0
- package/lib/Cloudflare/Zaraz/ZarazEventTypes.js +4 -0
- package/lib/Cloudflare/Zaraz/ZarazEventTypes.js.map +1 -0
- package/lib/Cloudflare/Zaraz/index.d.ts +3 -0
- package/lib/Cloudflare/Zaraz/index.d.ts.map +1 -0
- package/lib/Cloudflare/Zaraz/index.js +2 -0
- package/lib/Cloudflare/Zaraz/index.js.map +1 -0
- package/lib/Cloudflare/index.d.ts +2 -0
- package/lib/Cloudflare/index.d.ts.map +1 -1
- package/lib/Cloudflare/index.js +2 -0
- package/lib/Cloudflare/index.js.map +1 -1
- package/lib/Dependencies.d.ts +10 -0
- package/lib/Dependencies.d.ts.map +1 -0
- package/lib/Dependencies.js +1 -0
- package/lib/Dependencies.js.map +1 -0
- package/lib/Deploy.d.ts +2 -1
- package/lib/Deploy.d.ts.map +1 -1
- package/lib/Deploy.js +2 -2
- package/lib/Deploy.js.map +1 -1
- package/lib/Diff.d.ts +11 -0
- package/lib/Diff.d.ts.map +1 -1
- package/lib/Diff.js +11 -0
- package/lib/Diff.js.map +1 -1
- package/lib/Input.d.ts +2 -1
- package/lib/Input.d.ts.map +1 -1
- package/lib/KeyPair.d.ts +77 -0
- package/lib/KeyPair.d.ts.map +1 -0
- package/lib/KeyPair.js +102 -0
- package/lib/KeyPair.js.map +1 -0
- package/lib/Local/RpcProvider.d.ts +56 -0
- package/lib/Local/RpcProvider.d.ts.map +1 -0
- package/lib/Local/RpcProvider.js +83 -0
- package/lib/Local/RpcProvider.js.map +1 -0
- package/lib/Local/RpcProviderProxy.d.ts +19 -0
- package/lib/Local/RpcProviderProxy.d.ts.map +1 -0
- package/lib/Local/RpcProviderProxy.js +48 -0
- package/lib/Local/RpcProviderProxy.js.map +1 -0
- package/lib/Local/RpcSerialization.d.ts +34 -0
- package/lib/Local/RpcSerialization.d.ts.map +1 -0
- package/lib/Local/RpcSerialization.js +120 -0
- package/lib/Local/RpcSerialization.js.map +1 -0
- package/lib/Local/RpcServer.d.ts +63 -0
- package/lib/Local/RpcServer.d.ts.map +1 -0
- package/lib/Local/RpcServer.js +72 -0
- package/lib/Local/RpcServer.js.map +1 -0
- package/lib/Local/RpcServerBun.d.ts +3 -0
- package/lib/Local/RpcServerBun.d.ts.map +1 -0
- package/lib/Local/RpcServerBun.js +47 -0
- package/lib/Local/RpcServerBun.js.map +1 -0
- package/lib/Local/RpcServerEnvironment.d.ts +20 -0
- package/lib/Local/RpcServerEnvironment.d.ts.map +1 -0
- package/lib/Local/RpcServerEnvironment.js +22 -0
- package/lib/Local/RpcServerEnvironment.js.map +1 -0
- package/lib/Local/RpcServerNode.d.ts +3 -0
- package/lib/Local/RpcServerNode.d.ts.map +1 -0
- package/lib/Local/RpcServerNode.js +43 -0
- package/lib/Local/RpcServerNode.js.map +1 -0
- package/lib/Local/RpcServerSession.d.ts +27 -0
- package/lib/Local/RpcServerSession.d.ts.map +1 -0
- package/lib/Local/RpcServerSession.js +68 -0
- package/lib/Local/RpcServerSession.js.map +1 -0
- package/lib/Local/RpcSpawner.d.ts +21 -0
- package/lib/Local/RpcSpawner.d.ts.map +1 -0
- package/lib/Local/RpcSpawner.js +132 -0
- package/lib/Local/RpcSpawner.js.map +1 -0
- package/lib/Neon/Project.d.ts.map +1 -1
- package/lib/Neon/Project.js +14 -3
- package/lib/Neon/Project.js.map +1 -1
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js +9 -2
- package/lib/Output.js.map +1 -1
- package/lib/Phase.d.ts +2 -1
- package/lib/Phase.d.ts.map +1 -1
- package/lib/Phase.js +6 -1
- package/lib/Phase.js.map +1 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +14 -3
- package/lib/Plan.js.map +1 -1
- package/lib/Platform.d.ts +8 -6
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Platform.js +33 -3
- package/lib/Platform.js.map +1 -1
- package/lib/Random.d.ts.map +1 -1
- package/lib/Random.js +9 -14
- package/lib/Random.js.map +1 -1
- package/lib/RuntimeContext.d.ts +21 -1
- package/lib/RuntimeContext.d.ts.map +1 -1
- package/lib/RuntimeContext.js +12 -0
- package/lib/RuntimeContext.js.map +1 -1
- package/lib/Stack.d.ts +3 -3
- package/lib/Stack.d.ts.map +1 -1
- package/lib/Stack.js.map +1 -1
- package/lib/State/HttpStateApi.d.ts +2 -2
- package/lib/State/StateEncoding.d.ts +8 -0
- package/lib/State/StateEncoding.d.ts.map +1 -1
- package/lib/State/StateEncoding.js +55 -5
- package/lib/State/StateEncoding.js.map +1 -1
- package/lib/Test/Bun.d.ts.map +1 -1
- package/lib/Test/Bun.js +0 -2
- package/lib/Test/Bun.js.map +1 -1
- package/lib/Test/Vitest.d.ts.map +1 -1
- package/lib/Test/Vitest.js +0 -2
- package/lib/Test/Vitest.js.map +1 -1
- package/lib/Util/Duration.d.ts +14 -0
- package/lib/Util/Duration.d.ts.map +1 -0
- package/lib/Util/Duration.js +18 -0
- package/lib/Util/Duration.js.map +1 -0
- package/lib/Util/PlatformServices.d.ts +7 -0
- package/lib/Util/PlatformServices.d.ts.map +1 -1
- package/lib/Util/PlatformServices.js +22 -11
- package/lib/Util/PlatformServices.js.map +1 -1
- package/lib/Util/camel.d.ts.map +1 -1
- package/lib/Util/camel.js +2 -3
- package/lib/Util/camel.js.map +1 -1
- package/lib/Util/data.d.ts +5 -0
- package/lib/Util/data.d.ts.map +1 -1
- package/lib/Util/data.js +29 -0
- package/lib/Util/data.js.map +1 -1
- package/lib/Util/index.d.ts +0 -6
- package/lib/Util/index.d.ts.map +1 -1
- package/lib/Util/index.js +0 -6
- package/lib/Util/index.js.map +1 -1
- package/lib/Util/stable.d.ts.map +1 -1
- package/lib/Util/stable.js +3 -6
- package/lib/Util/stable.js.map +1 -1
- package/lib/Util/types.d.ts +3 -1
- package/lib/Util/types.d.ts.map +1 -1
- package/lib/Util/types.js +5 -1
- package/lib/Util/types.js.map +1 -1
- package/lib/index.d.ts +2 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -3
- package/lib/index.js.map +1 -1
- package/lib/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +22 -23
- package/src/AWS/Lambda/Function.ts +87 -34
- package/src/AWS/Providers.ts +3 -0
- package/src/Apply.ts +18 -1
- package/src/Auth/AuthProvider.ts +25 -5
- package/src/Auth/Credentials.ts +8 -7
- package/src/Auth/Lock.ts +2 -2
- package/src/Bundle/Bundle.ts +35 -13
- package/src/Bundle/BundleAnalyzerPlugin.ts +33 -0
- package/src/Bundle/RawPlugin.ts +82 -0
- package/src/Bundle/index.ts +2 -0
- package/src/Cli/commands/_shared.ts +47 -4
- package/src/Cli/commands/dev.ts +63 -37
- package/src/Cli/commands/login.ts +20 -4
- package/src/Cli/commands/profile.ts +24 -34
- package/src/Cli/exec.ts +12 -7
- package/src/Cli/main.ts +0 -3
- package/src/Cloudflare/AiGateway/AiGateway.ts +2 -6
- package/src/Cloudflare/BrowserRendering/BrowserRendering.ts +132 -0
- package/src/Cloudflare/BrowserRendering/BrowserRenderingBinding.ts +137 -0
- package/src/Cloudflare/BrowserRendering/index.ts +11 -0
- package/src/Cloudflare/Container/Container.ts +3 -3
- package/src/Cloudflare/Container/StartContainer.ts +1 -2
- package/src/Cloudflare/D1/D1Database.ts +4 -1
- package/src/Cloudflare/D1/D1DatabaseBinding.ts +1 -1
- package/src/Cloudflare/Fetcher.ts +0 -2
- package/src/Cloudflare/Hyperdrive/Hyperdrive.ts +5 -0
- package/src/Cloudflare/Hyperdrive/HyperdriveBinding.ts +41 -43
- package/src/Cloudflare/KV/KVNamespace.ts +4 -0
- package/src/Cloudflare/Local.ts +23 -0
- package/src/Cloudflare/Providers.ts +28 -16
- package/src/Cloudflare/Queue/Queue.ts +3 -0
- package/src/Cloudflare/Queue/QueueConsumer.ts +23 -8
- package/src/Cloudflare/Queue/QueueEventSource.ts +33 -5
- package/src/Cloudflare/R2/R2Bucket.ts +26 -0
- package/src/Cloudflare/SecretsStore/Secret.ts +14 -41
- package/src/Cloudflare/SecretsStore/SecretBinding.ts +11 -11
- package/src/Cloudflare/StateStore/Api.ts +15 -15
- package/src/Cloudflare/StateStore/State.ts +68 -6
- package/src/Cloudflare/StateStore/Store.ts +5 -2
- package/src/Cloudflare/VpcService/VpcService.ts +2 -2
- package/src/Cloudflare/Website/StaticSite.ts +8 -10
- package/src/Cloudflare/Website/Vite.ts +4 -7
- package/src/Cloudflare/Workers/Assets.ts +1 -1
- package/src/Cloudflare/Workers/DurableObjectBridge.ts +7 -5
- package/src/Cloudflare/Workers/DurableObjectNamespace.ts +380 -121
- package/src/Cloudflare/Workers/HttpServer.ts +31 -25
- package/src/Cloudflare/Workers/InferEnv.ts +15 -8
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +609 -22
- package/src/Cloudflare/Workers/Rpc.ts +50 -0
- package/src/Cloudflare/Workers/RpcDurableObjectNamespace.ts +502 -0
- package/src/Cloudflare/Workers/RpcWorker.ts +562 -0
- package/src/Cloudflare/Workers/Vite.ts +2 -0
- package/src/Cloudflare/Workers/Worker.ts +280 -110
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +158 -103
- package/src/Cloudflare/Workers/WorkerBinding.ts +10 -0
- package/src/Cloudflare/Workers/WorkerBridge.ts +10 -9
- package/src/Cloudflare/Workers/WorkerBundle.ts +8 -9
- package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +8 -15
- package/src/Cloudflare/Workers/Workflow.ts +22 -3
- package/src/Cloudflare/Workers/index.ts +2 -0
- package/src/Cloudflare/Zaraz/ZarazConfig.ts +403 -0
- package/src/Cloudflare/Zaraz/ZarazEventTypes.ts +257 -0
- package/src/Cloudflare/Zaraz/index.ts +25 -0
- package/src/Cloudflare/index.ts +2 -0
- package/src/Dependencies.ts +10 -0
- package/src/Deploy.ts +3 -1
- package/src/Diff.ts +13 -0
- package/src/Input.ts +2 -0
- package/src/KeyPair.ts +146 -0
- package/src/Local/RpcProvider.ts +146 -0
- package/src/Local/RpcProviderProxy.ts +86 -0
- package/src/Local/RpcSerialization.ts +225 -0
- package/src/Local/RpcServer.ts +138 -0
- package/src/Local/RpcServerBun.ts +59 -0
- package/src/Local/RpcServerEnvironment.ts +55 -0
- package/src/Local/RpcServerNode.ts +58 -0
- package/src/Local/RpcServerSession.ts +87 -0
- package/src/Local/RpcSpawner.ts +196 -0
- package/src/Neon/Project.ts +16 -3
- package/src/Output.ts +8 -2
- package/src/Phase.ts +8 -0
- package/src/Plan.ts +16 -3
- package/src/Platform.ts +74 -27
- package/src/Random.ts +22 -27
- package/src/RuntimeContext.ts +23 -1
- package/src/Stack.ts +3 -3
- package/src/State/StateEncoding.ts +58 -7
- package/src/Test/Bun.ts +0 -3
- package/src/Test/Vitest.ts +0 -3
- package/src/Util/Duration.ts +21 -0
- package/src/Util/PlatformServices.ts +41 -27
- package/src/Util/camel.ts +3 -5
- package/src/Util/data.ts +38 -0
- package/src/Util/index.ts +0 -6
- package/src/Util/stable.ts +4 -10
- package/src/Util/types.ts +9 -2
- package/src/index.ts +2 -3
- package/lib/Cloudflare/Local/Sidecar.d.ts +0 -63
- package/lib/Cloudflare/Local/Sidecar.d.ts.map +0 -1
- package/lib/Cloudflare/Local/Sidecar.js +0 -50
- package/lib/Cloudflare/Local/Sidecar.js.map +0 -1
- package/lib/Cloudflare/Local/SidecarHandlers.d.ts +0 -8
- package/lib/Cloudflare/Local/SidecarHandlers.d.ts.map +0 -1
- package/lib/Cloudflare/Local/SidecarHandlers.js +0 -381
- package/lib/Cloudflare/Local/SidecarHandlers.js.map +0 -1
- package/lib/Cloudflare/Local/SidecarServer.d.ts +0 -2
- package/lib/Cloudflare/Local/SidecarServer.d.ts.map +0 -1
- package/lib/Cloudflare/Local/SidecarServer.js +0 -34
- package/lib/Cloudflare/Local/SidecarServer.js.map +0 -1
- package/lib/Secret.d.ts +0 -50
- package/lib/Secret.d.ts.map +0 -1
- package/lib/Secret.js +0 -23
- package/lib/Secret.js.map +0 -1
- package/lib/Sidecar/Lock.d.ts +0 -23
- package/lib/Sidecar/Lock.d.ts.map +0 -1
- package/lib/Sidecar/Lock.js +0 -39
- package/lib/Sidecar/Lock.js.map +0 -1
- package/lib/Sidecar/RpcClient.d.ts +0 -15
- package/lib/Sidecar/RpcClient.d.ts.map +0 -1
- package/lib/Sidecar/RpcClient.js +0 -78
- package/lib/Sidecar/RpcClient.js.map +0 -1
- package/lib/Sidecar/RpcHandler.d.ts +0 -51
- package/lib/Sidecar/RpcHandler.d.ts.map +0 -1
- package/lib/Sidecar/RpcHandler.js +0 -87
- package/lib/Sidecar/RpcHandler.js.map +0 -1
- package/lib/Sidecar/RpcPaths.d.ts +0 -19
- package/lib/Sidecar/RpcPaths.d.ts.map +0 -1
- package/lib/Sidecar/RpcPaths.js +0 -31
- package/lib/Sidecar/RpcPaths.js.map +0 -1
- package/lib/Sidecar/RpcServer.d.ts +0 -30
- package/lib/Sidecar/RpcServer.d.ts.map +0 -1
- package/lib/Sidecar/RpcServer.js +0 -105
- package/lib/Sidecar/RpcServer.js.map +0 -1
- package/lib/Sidecar/RpcServerBun.d.ts +0 -4
- package/lib/Sidecar/RpcServerBun.d.ts.map +0 -1
- package/lib/Sidecar/RpcServerBun.js +0 -28
- package/lib/Sidecar/RpcServerBun.js.map +0 -1
- package/lib/Sidecar/RpcServerNode.d.ts +0 -4
- package/lib/Sidecar/RpcServerNode.d.ts.map +0 -1
- package/lib/Sidecar/RpcServerNode.js +0 -39
- package/lib/Sidecar/RpcServerNode.js.map +0 -1
- package/lib/Sidecar/RpcServices.d.ts +0 -6
- package/lib/Sidecar/RpcServices.d.ts.map +0 -1
- package/lib/Sidecar/RpcServices.js +0 -29
- package/lib/Sidecar/RpcServices.js.map +0 -1
- package/lib/Trait.d.ts +0 -43
- package/lib/Trait.d.ts.map +0 -1
- package/lib/Trait.js +0 -17
- package/lib/Trait.js.map +0 -1
- package/lib/Util/LocalhostDns.d.ts +0 -23
- package/lib/Util/LocalhostDns.d.ts.map +0 -1
- package/lib/Util/LocalhostDns.js +0 -46
- package/lib/Util/LocalhostDns.js.map +0 -1
- package/lib/Util/assert-never.d.ts +0 -12
- package/lib/Util/assert-never.d.ts.map +0 -1
- package/lib/Util/assert-never.js +0 -11
- package/lib/Util/assert-never.js.map +0 -1
- package/lib/Util/class.d.ts +0 -3
- package/lib/Util/class.d.ts.map +0 -1
- package/lib/Util/class.js +0 -1
- package/lib/Util/class.js.map +0 -1
- package/lib/Util/ignore.d.ts +0 -40
- package/lib/Util/ignore.d.ts.map +0 -1
- package/lib/Util/ignore.js +0 -591
- package/lib/Util/ignore.js.map +0 -1
- package/lib/Util/instance.d.ts +0 -4
- package/lib/Util/instance.d.ts.map +0 -1
- package/lib/Util/instance.js +0 -1
- package/lib/Util/instance.js.map +0 -1
- package/lib/Util/pointer.d.ts +0 -5
- package/lib/Util/pointer.d.ts.map +0 -1
- package/lib/Util/pointer.js +0 -1
- package/lib/Util/pointer.js.map +0 -1
- package/lib/Util/schema-to-type.d.ts +0 -42
- package/lib/Util/schema-to-type.d.ts.map +0 -1
- package/lib/Util/schema-to-type.js +0 -364
- package/lib/Util/schema-to-type.js.map +0 -1
- package/lib/Util/todo.d.ts +0 -3
- package/lib/Util/todo.d.ts.map +0 -1
- package/lib/Util/todo.js +0 -3
- package/lib/Util/todo.js.map +0 -1
- package/lib/Variable.d.ts +0 -29
- package/lib/Variable.d.ts.map +0 -1
- package/lib/Variable.js +0 -9
- package/lib/Variable.js.map +0 -1
- package/src/Cloudflare/Local/Sidecar.ts +0 -81
- package/src/Cloudflare/Local/SidecarHandlers.ts +0 -491
- package/src/Cloudflare/Local/SidecarServer.ts +0 -70
- package/src/Secret.ts +0 -87
- package/src/Sidecar/Lock.ts +0 -66
- package/src/Sidecar/RpcClient.ts +0 -142
- package/src/Sidecar/RpcHandler.ts +0 -205
- package/src/Sidecar/RpcPaths.ts +0 -39
- package/src/Sidecar/RpcServer.ts +0 -153
- package/src/Sidecar/RpcServerBun.ts +0 -41
- package/src/Sidecar/RpcServerNode.ts +0 -51
- package/src/Sidecar/RpcServices.ts +0 -48
- package/src/Trait.ts +0 -105
- package/src/Util/LocalhostDns.ts +0 -52
- package/src/Util/assert-never.ts +0 -18
- package/src/Util/class.ts +0 -7
- package/src/Util/ignore.ts +0 -815
- package/src/Util/instance.ts +0 -9
- package/src/Util/pointer.ts +0 -5
- package/src/Util/schema-to-type.ts +0 -456
- package/src/Util/todo.ts +0 -4
- 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
|
|
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
|
|
67
|
-
Effect.flatMap((raw) =>
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
|
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 =
|
|
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
|
|
112
|
+
const remoteSecret = yield* Secret.bind(AuthToken);
|
|
112
113
|
const store = yield* Store;
|
|
113
114
|
|
|
114
|
-
const bearerTokenValidator = Layer.
|
|
115
|
+
const bearerTokenValidator = Layer.succeed(
|
|
115
116
|
BearerTokenValidator,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
),
|
|
125
|
-
|
|
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({
|
|
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({
|
|
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(
|
|
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
|
|
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 = (
|
|
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
|
|
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,
|
|
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
|
|
129
|
-
| Effect.Effect<InputProps<StaticSiteProps<Bindings
|
|
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,
|
|
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
|
-
|
|
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
|
|
120
|
-
| Effect.Effect<InputProps<ViteProps<Bindings
|
|
116
|
+
| InputProps<ViteProps<Bindings>>
|
|
117
|
+
| Effect.Effect<InputProps<ViteProps<Bindings>>, never, Req>,
|
|
121
118
|
) =>
|
|
122
|
-
Worker<Bindings,
|
|
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
|
-
|
|
135
|
-
|
|
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
|
|