alchemy 2.0.0-beta.44 → 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/exec.js +67 -8
- 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/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.map +1 -1
- package/lib/Cli/commands/dev.js +10 -1
- 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/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.js +1 -1
- package/lib/Cloudflare/Local.js.map +1 -1
- package/lib/Cloudflare/Providers.d.ts +2 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +21 -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 -2
- 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 +4 -7
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +111 -66
- 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 -24
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +168 -47
- 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 +5 -2
- package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.js +4 -1
- 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/index.d.ts +1 -0
- package/lib/Cloudflare/index.d.ts.map +1 -1
- package/lib/Cloudflare/index.js +1 -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 +3 -1
- package/lib/Local/RpcProvider.d.ts.map +1 -1
- package/lib/Local/RpcProvider.js +28 -2
- package/lib/Local/RpcProvider.js.map +1 -1
- package/lib/Local/RpcServerEnvironment.js +1 -1
- package/lib/Local/RpcServerEnvironment.js.map +1 -1
- 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/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/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 +20 -19
- 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/Cli/commands/_shared.ts +47 -4
- package/src/Cli/commands/dev.ts +13 -1
- package/src/Cli/commands/login.ts +20 -4
- package/src/Cli/commands/profile.ts +24 -34
- 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 +1 -1
- package/src/Cloudflare/Providers.ts +25 -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 -4
- 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 +139 -78
- 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 +274 -93
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +158 -103
- package/src/Cloudflare/Workers/WorkerBinding.ts +10 -0
- package/src/Cloudflare/Workers/WorkerBridge.ts +7 -4
- package/src/Cloudflare/Workers/WorkerBundle.ts +4 -1
- 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/index.ts +1 -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 +45 -1
- package/src/Local/RpcServerEnvironment.ts +1 -1
- 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/index.ts +0 -6
- package/src/Util/types.ts +9 -2
- package/src/index.ts +2 -3
- 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/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/Secret.ts +0 -87
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type CloudflareVitePluginOptions } from "@distilled.cloud/cloudflare-vite-plugin";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import type * as vite from "vite";
|
|
4
|
-
export declare const viteDev: (rootDir: string | undefined, env: Record<string, unknown>, pluginOptions: CloudflareVitePluginOptions) => Effect.Effect<vite.ViteDevServer, never, import("effect/Scope").Scope>;
|
|
4
|
+
export declare const viteDev: (rootDir: string | undefined, env: Record<string, unknown>, pluginOptions: CloudflareVitePluginOptions, serverOptions: vite.ServerOptions) => Effect.Effect<vite.ViteDevServer, never, import("effect/Scope").Scope>;
|
|
5
5
|
export declare const viteBuild: (rootDir: string | undefined, env: Record<string, unknown>, pluginOptions: CloudflareVitePluginOptions) => Effect.Effect<{
|
|
6
6
|
serverBundle: vite.Rolldown.OutputBundle | undefined;
|
|
7
7
|
assetsDirectory: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vite.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Vite.ts"],"names":[],"mappings":"AAAA,OAAmB,EACjB,KAAK,2BAA2B,EACjC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAElC,eAAO,MAAM,OAAO,GAClB,SAAS,MAAM,YAAgB,EAC/B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,eAAe,2BAA2B,
|
|
1
|
+
{"version":3,"file":"Vite.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Vite.ts"],"names":[],"mappings":"AAAA,OAAmB,EACjB,KAAK,2BAA2B,EACjC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAElC,eAAO,MAAM,OAAO,GAClB,SAAS,MAAM,YAAgB,EAC/B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,eAAe,2BAA2B,EAC1C,eAAe,IAAI,CAAC,aAAa,2EAkBhC,CAAC;AAEJ,eAAO,MAAM,SAAS,GACpB,SAAS,MAAM,YAAgB,EAC/B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,eAAe,2BAA2B;;;gBA0CxC,CAAC"}
|
|
@@ -12,12 +12,13 @@ import * as Redacted from "effect/Redacted";
|
|
|
12
12
|
import { createRequire } from "node:module";
|
|
13
13
|
import path from "node:path";
|
|
14
14
|
import { pathToFileURL } from "node:url";
|
|
15
|
-
export const viteDev = (rootDir = process.cwd(), env, pluginOptions) => Effect.acquireRelease(Effect.promise(async () => {
|
|
15
|
+
export const viteDev = (rootDir = process.cwd(), env, pluginOptions, serverOptions) => Effect.acquireRelease(Effect.promise(async () => {
|
|
16
16
|
const vite = await loadVite(rootDir);
|
|
17
17
|
const devServer = await vite.createServer({
|
|
18
18
|
root: rootDir,
|
|
19
19
|
define: getDefine(env),
|
|
20
20
|
plugins: [cloudflare(pluginOptions)],
|
|
21
|
+
server: serverOptions,
|
|
21
22
|
});
|
|
22
23
|
await devServer.listen();
|
|
23
24
|
return devServer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Vite.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,UAAU,EAAE,EAElB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,UAAkB,OAAO,CAAC,GAAG,EAAE,EAC/B,GAA4B,EAC5B,aAA0C,EAC1C,EAAE,CACF,MAAM,CAAC,cAAc,CACnB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IACxB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;QACxC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC;QACtB,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Vite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Vite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import type * as cf from "@cloudflare/workers-types";
|
|
2
2
|
import * as workers from "@distilled.cloud/cloudflare/workers";
|
|
3
|
+
import * as Config from "effect/Config";
|
|
3
4
|
import * as Context from "effect/Context";
|
|
4
5
|
import * as Effect from "effect/Effect";
|
|
5
6
|
import * as Layer from "effect/Layer";
|
|
6
|
-
import * as Path from "effect/Path";
|
|
7
7
|
import * as Redacted from "effect/Redacted";
|
|
8
|
-
import { AlchemyContext } from "../../AlchemyContext.ts";
|
|
9
8
|
import { type MemoOptions } from "../../Build/Memo.ts";
|
|
10
9
|
import * as Bundle from "../../Bundle/Bundle.ts";
|
|
11
10
|
import type { InputProps } from "../../Input.ts";
|
|
12
11
|
import { Platform, type Main, type PlatformProps } from "../../Platform.ts";
|
|
13
12
|
import * as Provider from "../../Provider.ts";
|
|
14
13
|
import { Resource } from "../../Resource.ts";
|
|
15
|
-
import { Stack } from "../../Stack.ts";
|
|
16
|
-
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
17
14
|
import type { HyperdriveDevOrigin } from "../Hyperdrive/Hyperdrive.ts";
|
|
18
15
|
import type { Providers } from "../Providers.ts";
|
|
19
16
|
import { type Assets, type AssetsConfig, type AssetsProps } from "./Assets.ts";
|
|
@@ -74,12 +71,12 @@ export type WorkerBindingProps = {
|
|
|
74
71
|
[bindingName in string]: WorkerBindingResource | Effect.Effect<WorkerBindingResource, any, any>;
|
|
75
72
|
};
|
|
76
73
|
type NormalizedBindings<Bindings extends WorkerBindingProps = {}, AssetsConfig extends WorkerAssetsConfig | undefined = undefined> = {
|
|
77
|
-
[B in keyof Bindings]: Bindings[B] extends Effect.Effect<infer T extends WorkerBindingResource, any, any> ? T : Extract<Bindings[B], WorkerBindingResource>;
|
|
74
|
+
[B in keyof Bindings]: Bindings[B] extends Effect.Effect<infer T extends WorkerBindingResource, any, any> ? T extends Redacted.Redacted<infer T> | Config.Config<infer T> ? T : T : Extract<Bindings[B], WorkerBindingResource>;
|
|
78
75
|
} & (undefined extends AssetsConfig ? {} : {
|
|
79
76
|
ASSETS: Assets;
|
|
80
77
|
});
|
|
81
78
|
export type WorkerAssetsConfig = string | AssetsProps | AssetsWithHash;
|
|
82
|
-
export interface WorkerProps<Bindings extends WorkerBindingProps = any,
|
|
79
|
+
export interface WorkerProps<Bindings extends WorkerBindingProps = any, Assets extends WorkerAssetsConfig | undefined = WorkerAssetsConfig | undefined> extends PlatformProps {
|
|
83
80
|
/**
|
|
84
81
|
* Worker name override. If omitted, Alchemy derives a deterministic physical
|
|
85
82
|
* name from the stack, stage, and logical ID.
|
|
@@ -118,16 +115,46 @@ export interface WorkerProps<Bindings extends WorkerBindingProps = any, Env exte
|
|
|
118
115
|
*/
|
|
119
116
|
observability?: WorkerObservability;
|
|
120
117
|
tags?: string[];
|
|
121
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Path to the Worker's entry module. Bundled with rolldown before
|
|
120
|
+
* upload. Mutually exclusive with {@link script} — provide exactly one.
|
|
121
|
+
*/
|
|
122
|
+
main?: string;
|
|
123
|
+
/**
|
|
124
|
+
* Raw module source for the Worker. When provided, bundling is bypassed
|
|
125
|
+
* entirely and this string is uploaded as a single ESM module
|
|
126
|
+
* (`main.js`). Useful for tiny inline workers (tests, fixtures,
|
|
127
|
+
* one-offs) and any case where you've already produced the final
|
|
128
|
+
* bundle elsewhere. Mutually exclusive with {@link main}.
|
|
129
|
+
*/
|
|
130
|
+
script?: string;
|
|
122
131
|
compatibility?: {
|
|
123
132
|
date?: string;
|
|
124
133
|
flags?: ("nodejs_compat" | "nodejs_als" | (string & {}))[];
|
|
125
134
|
};
|
|
126
135
|
limits?: WorkerLimits;
|
|
127
136
|
placement?: WorkerPlacement;
|
|
128
|
-
env?: Env;
|
|
129
137
|
exports?: string[];
|
|
130
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Environment variables and native Cloudflare Bindings to bind to
|
|
140
|
+
* the Worker. Accepts:
|
|
141
|
+
*
|
|
142
|
+
* - Resource references (R2 bucket, KV namespace, D1 database,
|
|
143
|
+
* another Worker, Durable Object, etc.) — emitted as the
|
|
144
|
+
* corresponding native binding.
|
|
145
|
+
* - `effect/Config` values (`Config.redacted`, `Config.string`,
|
|
146
|
+
* `Config.number`, …) — resolved at deploy time and bound as
|
|
147
|
+
* `secret_text` on Cloudflare regardless of the `Config`
|
|
148
|
+
* constructor used. See
|
|
149
|
+
* {@link https://v2.alchemy.run/concepts/secrets | Concepts › Secrets and Variables}.
|
|
150
|
+
* - Literal values — routed by shape: `Redacted<string>` →
|
|
151
|
+
* `secret_text`, `string` → `plain_text`, anything else → `json`.
|
|
152
|
+
*
|
|
153
|
+
* In Effect-native Workers you can alternatively `yield*` a
|
|
154
|
+
* `Config` in the Init phase to register the binding implicitly;
|
|
155
|
+
* `env` is the only option for async (non-Effect) Workers.
|
|
156
|
+
*/
|
|
157
|
+
env?: Bindings;
|
|
131
158
|
/**
|
|
132
159
|
* Cron expressions that trigger the Worker's scheduled handler.
|
|
133
160
|
*
|
|
@@ -145,6 +172,29 @@ export interface WorkerProps<Bindings extends WorkerBindingProps = any, Env exte
|
|
|
145
172
|
* options used to build this Worker. See {@link Bundle.BundleExtraOptions}.
|
|
146
173
|
*/
|
|
147
174
|
build?: Bundle.BundleExtraOptions;
|
|
175
|
+
/**
|
|
176
|
+
* Options for the local dev server that runs this Worker under `alchemy dev`.
|
|
177
|
+
* Each Worker is served on its own port.
|
|
178
|
+
*/
|
|
179
|
+
dev?: {
|
|
180
|
+
/**
|
|
181
|
+
* Host the local dev server binds to.
|
|
182
|
+
* @default "localhost"
|
|
183
|
+
*/
|
|
184
|
+
host?: string;
|
|
185
|
+
/**
|
|
186
|
+
* Port the local dev server listens on. If the port is unavailable, the
|
|
187
|
+
* next free port is used unless {@link strictPort} is `true`.
|
|
188
|
+
* @default 1337
|
|
189
|
+
*/
|
|
190
|
+
port?: number;
|
|
191
|
+
/**
|
|
192
|
+
* When `true`, fail instead of falling back to another port if {@link port}
|
|
193
|
+
* is already in use.
|
|
194
|
+
* @default false
|
|
195
|
+
*/
|
|
196
|
+
strictPort?: boolean;
|
|
197
|
+
};
|
|
148
198
|
}
|
|
149
199
|
export type Worker<Bindings extends WorkerBindings = any> = Resource<WorkerTypeId, WorkerProps<Bindings>, {
|
|
150
200
|
workerId: string;
|
|
@@ -154,11 +204,7 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<WorkerTypeI
|
|
|
154
204
|
tags: string[] | undefined;
|
|
155
205
|
durableObjectNamespaces: Record<string, string>;
|
|
156
206
|
accountId: string;
|
|
157
|
-
domains:
|
|
158
|
-
hostname: string;
|
|
159
|
-
id: string;
|
|
160
|
-
zoneId: string;
|
|
161
|
-
}[];
|
|
207
|
+
domains: string[];
|
|
162
208
|
crons: string[];
|
|
163
209
|
hash?: {
|
|
164
210
|
assets: string | undefined;
|
|
@@ -212,9 +258,10 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<WorkerTypeI
|
|
|
212
258
|
* as-is. Your handler is a plain `async fetch` — no Effect runtime
|
|
213
259
|
* is included in the bundle.
|
|
214
260
|
*
|
|
215
|
-
* Use the `
|
|
216
|
-
*
|
|
217
|
-
* `env` object from
|
|
261
|
+
* Use the `env` prop to declare which resources, `Config` values,
|
|
262
|
+
* and literal env vars are available at runtime, and
|
|
263
|
+
* `Cloudflare.InferEnv` to extract a fully typed `env` object from
|
|
264
|
+
* them.
|
|
218
265
|
*
|
|
219
266
|
* See the {@link https://alchemy.run/guides/async-worker | Async Workers Guide}
|
|
220
267
|
* for a comprehensive walkthrough of all binding types (R2, D1,
|
|
@@ -230,7 +277,7 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<WorkerTypeI
|
|
|
230
277
|
*
|
|
231
278
|
* export const Worker = Cloudflare.Worker("Worker", {
|
|
232
279
|
* main: "./src/worker.ts",
|
|
233
|
-
*
|
|
280
|
+
* env: { db, bucket },
|
|
234
281
|
* });
|
|
235
282
|
* ```
|
|
236
283
|
*
|
|
@@ -487,7 +534,7 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<WorkerTypeI
|
|
|
487
534
|
* const sandbox = yield* Cloudflare.Container.bind(Sandbox);
|
|
488
535
|
*
|
|
489
536
|
* return Effect.gen(function* () {
|
|
490
|
-
* const container = yield* Cloudflare.start(sandbox);
|
|
537
|
+
* const container = yield* Cloudflare.start(sandbox, { enableInternet: true });
|
|
491
538
|
*
|
|
492
539
|
* return {
|
|
493
540
|
* exec: (cmd: string) => container.exec(cmd),
|
|
@@ -531,13 +578,11 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<WorkerTypeI
|
|
|
531
578
|
* ```
|
|
532
579
|
*/
|
|
533
580
|
export declare const Worker: Platform<Worker, WorkerServices, WorkerShape, WorkerRuntimeContext> & {
|
|
534
|
-
<const Bindings extends WorkerBindingProps = {}, const
|
|
581
|
+
<const Bindings extends WorkerBindingProps = {}, const Assets extends WorkerAssetsConfig | undefined = undefined, Req = never>(id: string, props: InputProps<WorkerProps<Bindings, Assets>> | Effect.Effect<InputProps<WorkerProps<Bindings, Assets>>, never, Req>): Effect.Effect<Worker<{
|
|
535
582
|
[binding in keyof NormalizedBindings<Bindings, Assets>]: NormalizedBindings<Bindings, Assets>[binding];
|
|
536
|
-
} & {
|
|
537
|
-
[K in keyof Env]: Env[K] extends Redacted.Redacted<infer T> ? T : Env[K];
|
|
538
583
|
}>, never, Req | Providers>;
|
|
539
584
|
};
|
|
540
|
-
export declare const WorkerProvider: () => Layer.Layer<Provider.Provider<Worker<any>>,
|
|
541
|
-
export declare const LiveWorkerProvider: () => Layer.Layer<Provider.Provider<Worker<any>>, never,
|
|
585
|
+
export declare const WorkerProvider: () => Layer.Layer<Provider.Provider<Worker<any>>, Config.ConfigError | import("effect/PlatformError").PlatformError | import("@distilled.cloud/cloudflare-runtime").SystemError, any>;
|
|
586
|
+
export declare const LiveWorkerProvider: () => Layer.Layer<Provider.Provider<Worker<any>>, never, any>;
|
|
542
587
|
export {};
|
|
543
588
|
//# sourceMappingURL=Worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAE/D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as workers from "@distilled.cloud/cloudflare/workers";
|
|
2
2
|
import * as zones from "@distilled.cloud/cloudflare/zones";
|
|
3
|
+
import * as Config from "effect/Config";
|
|
3
4
|
import * as Context from "effect/Context";
|
|
4
5
|
import * as Data from "effect/Data";
|
|
5
6
|
import * as Effect from "effect/Effect";
|
|
@@ -7,6 +8,7 @@ import * as Layer from "effect/Layer";
|
|
|
7
8
|
import * as Path from "effect/Path";
|
|
8
9
|
import * as Redacted from "effect/Redacted";
|
|
9
10
|
import * as Schedule from "effect/Schedule";
|
|
11
|
+
import * as crypto from "node:crypto";
|
|
10
12
|
import { Unowned } from "../../AdoptPolicy.js";
|
|
11
13
|
import { AlchemyContext } from "../../AlchemyContext.js";
|
|
12
14
|
import * as Artifacts from "../../Artifacts.js";
|
|
@@ -88,9 +90,10 @@ export const ExportedHandlerMethods = [
|
|
|
88
90
|
* as-is. Your handler is a plain `async fetch` — no Effect runtime
|
|
89
91
|
* is included in the bundle.
|
|
90
92
|
*
|
|
91
|
-
* Use the `
|
|
92
|
-
*
|
|
93
|
-
* `env` object from
|
|
93
|
+
* Use the `env` prop to declare which resources, `Config` values,
|
|
94
|
+
* and literal env vars are available at runtime, and
|
|
95
|
+
* `Cloudflare.InferEnv` to extract a fully typed `env` object from
|
|
96
|
+
* them.
|
|
94
97
|
*
|
|
95
98
|
* See the {@link https://alchemy.run/guides/async-worker | Async Workers Guide}
|
|
96
99
|
* for a comprehensive walkthrough of all binding types (R2, D1,
|
|
@@ -106,7 +109,7 @@ export const ExportedHandlerMethods = [
|
|
|
106
109
|
*
|
|
107
110
|
* export const Worker = Cloudflare.Worker("Worker", {
|
|
108
111
|
* main: "./src/worker.ts",
|
|
109
|
-
*
|
|
112
|
+
* env: { db, bucket },
|
|
110
113
|
* });
|
|
111
114
|
* ```
|
|
112
115
|
*
|
|
@@ -363,7 +366,7 @@ export const ExportedHandlerMethods = [
|
|
|
363
366
|
* const sandbox = yield* Cloudflare.Container.bind(Sandbox);
|
|
364
367
|
*
|
|
365
368
|
* return Effect.gen(function* () {
|
|
366
|
-
* const container = yield* Cloudflare.start(sandbox);
|
|
369
|
+
* const container = yield* Cloudflare.start(sandbox, { enableInternet: true });
|
|
367
370
|
*
|
|
368
371
|
* return {
|
|
369
372
|
* exec: (cmd: string) => container.exec(cmd),
|
|
@@ -522,7 +525,7 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
522
525
|
return yield* Effect.die(`Could not infer Cloudflare Zone for hostname "${hostname}". ` +
|
|
523
526
|
"Ensure the parent zone exists in this account.");
|
|
524
527
|
});
|
|
525
|
-
const reconcileDomains = (scriptName, desired
|
|
528
|
+
const reconcileDomains = (scriptName, desired) => Effect.gen(function* () {
|
|
526
529
|
// Always query the live state of domains attached to *this*
|
|
527
530
|
// Worker rather than trusting `_previous` from local state.
|
|
528
531
|
// State may have been wiped, populated by another machine, or
|
|
@@ -619,7 +622,10 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
619
622
|
: []));
|
|
620
623
|
return namespaces;
|
|
621
624
|
};
|
|
622
|
-
const getExpectedDurableObjectClassNames = (bindings) => Array.from(new Set(bindings?.flatMap((binding) => binding.type === "durable_object_namespace" &&
|
|
625
|
+
const getExpectedDurableObjectClassNames = (bindings, workerName) => Array.from(new Set(bindings?.flatMap((binding) => binding.type === "durable_object_namespace" &&
|
|
626
|
+
binding.className &&
|
|
627
|
+
(binding.scriptName === undefined ||
|
|
628
|
+
binding.scriptName === workerName)
|
|
623
629
|
? [binding.className]
|
|
624
630
|
: []) ?? []));
|
|
625
631
|
const getWorkerSettingsWithDurableObjects = Effect.fnUntraced(function* (scriptName, expectedClassNames) {
|
|
@@ -676,9 +682,22 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
676
682
|
extraOptions: props.build,
|
|
677
683
|
})
|
|
678
684
|
.pipe(Artifacts.cached("build"));
|
|
685
|
+
const hashScript = (script) => Effect.sync(() => crypto.createHash("sha256").update(script).digest("hex"));
|
|
679
686
|
const viteBuild = Effect.fnUntraced(function* (props) {
|
|
680
687
|
const compatibility = getCompatibility(props);
|
|
681
|
-
const { assetsDirectory, serverBundle } = yield* Vite.viteBuild(props.vite?.rootDir, props.env ?? {}, {
|
|
688
|
+
const { assetsDirectory, serverBundle } = yield* Vite.viteBuild(props.vite?.rootDir, Object.fromEntries((yield* Effect.all(Object.entries(props.env ?? {}).map(Effect.fnUntraced(function* ([key, value]) {
|
|
689
|
+
return [
|
|
690
|
+
key,
|
|
691
|
+
typeof value === "string"
|
|
692
|
+
? value
|
|
693
|
+
: Redacted.isRedacted(value) &&
|
|
694
|
+
typeof Redacted.value(value) === "string"
|
|
695
|
+
? Redacted.value(value)
|
|
696
|
+
: Config.isConfig(value) || Effect.isEffect(value)
|
|
697
|
+
? yield* value
|
|
698
|
+
: undefined,
|
|
699
|
+
];
|
|
700
|
+
})))).filter(([_, value]) => value !== undefined)), {
|
|
682
701
|
compatibilityDate: compatibility.date,
|
|
683
702
|
compatibilityFlags: compatibility.flags,
|
|
684
703
|
});
|
|
@@ -701,6 +720,21 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
701
720
|
return { assets, bundle };
|
|
702
721
|
});
|
|
703
722
|
const prepareAssetsAndBundle = (id, props, opts = {}) => Effect.gen(function* () {
|
|
723
|
+
if (props.script !== undefined) {
|
|
724
|
+
const [assets, bundleHash] = yield* Effect.all([
|
|
725
|
+
opts.skipAssetsRead
|
|
726
|
+
? Effect.succeed(undefined)
|
|
727
|
+
: prepareAssets(props.assets),
|
|
728
|
+
hashScript(props.script),
|
|
729
|
+
], { concurrency: "unbounded" });
|
|
730
|
+
return {
|
|
731
|
+
assets,
|
|
732
|
+
bundle: {
|
|
733
|
+
files: [{ path: "main.js", content: props.script }],
|
|
734
|
+
hash: bundleHash,
|
|
735
|
+
},
|
|
736
|
+
};
|
|
737
|
+
}
|
|
704
738
|
if (props.vite) {
|
|
705
739
|
const [{ assets, bundle }, input] = yield* Effect.all([
|
|
706
740
|
viteBuild(props),
|
|
@@ -773,7 +807,7 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
773
807
|
assets: precomputedAssetsHash ?? preparedHash.assets,
|
|
774
808
|
};
|
|
775
809
|
const metadataBindings = bindings.flatMap((b) => b.data.bindings ?? []);
|
|
776
|
-
const expectedDurableObjectClassNames = getExpectedDurableObjectClassNames(metadataBindings);
|
|
810
|
+
const expectedDurableObjectClassNames = getExpectedDurableObjectClassNames(metadataBindings, name);
|
|
777
811
|
let metadataAssets;
|
|
778
812
|
let keepAssets = false;
|
|
779
813
|
if (skipAssetsRead) {
|
|
@@ -816,6 +850,10 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
816
850
|
});
|
|
817
851
|
}
|
|
818
852
|
metadataBindings.push({
|
|
853
|
+
type: "plain_text",
|
|
854
|
+
name: "ALCHEMY_PHASE",
|
|
855
|
+
text: "runtime",
|
|
856
|
+
}, {
|
|
819
857
|
type: "plain_text",
|
|
820
858
|
name: "ALCHEMY_STACK_NAME",
|
|
821
859
|
text: stack.name,
|
|
@@ -829,11 +867,16 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
829
867
|
for (const [key, value] of Object.entries(news.env)) {
|
|
830
868
|
if (value === undefined)
|
|
831
869
|
continue;
|
|
870
|
+
if (metadataBindings.some((b) => b.name === key))
|
|
871
|
+
continue;
|
|
832
872
|
if (Redacted.isRedacted(value)) {
|
|
873
|
+
const unredacted = Redacted.value(value);
|
|
833
874
|
metadataBindings.push({
|
|
834
875
|
type: "secret_text",
|
|
835
876
|
name: key,
|
|
836
|
-
text:
|
|
877
|
+
text: typeof unredacted === "string"
|
|
878
|
+
? unredacted
|
|
879
|
+
: JSON.stringify(unredacted),
|
|
837
880
|
});
|
|
838
881
|
}
|
|
839
882
|
else if (typeof value === "string") {
|
|
@@ -888,15 +931,17 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
888
931
|
}
|
|
889
932
|
}
|
|
890
933
|
// Backward compatibility for old workers that have DO bindings but no
|
|
891
|
-
// alchemy:do tags yet.
|
|
934
|
+
// alchemy:do tags yet. Cross-script bindings (`scriptName` set to
|
|
935
|
+
// anything other than this worker) are NEVER candidates for
|
|
936
|
+
// delete-class migrations — the class lives on the foreign script
|
|
937
|
+
// and we don't own its lifecycle.
|
|
892
938
|
if (Object.keys(oldDoClassNameByLogicalId).length === 0) {
|
|
893
939
|
for (const oldBinding of oldBindings) {
|
|
940
|
+
const ownedLocally = !("scriptName" in oldBinding) || oldBinding.scriptName === name;
|
|
894
941
|
if (oldBinding.type === "durable_object_namespace" &&
|
|
895
942
|
"className" in oldBinding &&
|
|
896
943
|
oldBinding.className &&
|
|
897
|
-
|
|
898
|
-
!oldBinding.scriptName ||
|
|
899
|
-
oldBinding.scriptName === name) &&
|
|
944
|
+
ownedLocally &&
|
|
900
945
|
!currentDoBindings.some((binding) => binding.bindingName === oldBinding.name)) {
|
|
901
946
|
deletedClasses.push(oldBinding.className);
|
|
902
947
|
}
|
|
@@ -1022,20 +1067,28 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
1022
1067
|
// Cloudflare currently has it (disabled by default, or whatever
|
|
1023
1068
|
// a previous failed/external action left it as).
|
|
1024
1069
|
const desiredSubdomainEnabled = news.url !== false;
|
|
1025
|
-
const
|
|
1070
|
+
const observedSubdomain = yield* getScriptSubdomain({
|
|
1026
1071
|
accountId,
|
|
1027
1072
|
scriptName: name,
|
|
1028
|
-
}).pipe(Effect.
|
|
1029
|
-
|
|
1073
|
+
}).pipe(Effect.orElseSucceed(() => ({
|
|
1074
|
+
enabled: false,
|
|
1075
|
+
previewsEnabled: false,
|
|
1076
|
+
})));
|
|
1077
|
+
if (desiredSubdomainEnabled !== observedSubdomain.enabled ||
|
|
1078
|
+
desiredSubdomainEnabled !== observedSubdomain.previewsEnabled) {
|
|
1030
1079
|
yield* session.note(`${desiredSubdomainEnabled ? "Enabling" : "Disabling"} workers.dev subdomain...`);
|
|
1031
1080
|
// Cloudflare's script registry is eventually consistent — for the
|
|
1032
1081
|
// first few hundred ms after `putScript` returns, POST /subdomain
|
|
1033
1082
|
// can still get back `WorkerNotFound` (a generic "unknown error"
|
|
1034
|
-
// body)
|
|
1035
|
-
//
|
|
1036
|
-
//
|
|
1083
|
+
// body), or a bare 500 surfaced as `InternalServerError` /
|
|
1084
|
+
// `UnknownCloudflareError` (code 10013). Bigger uploads race harder.
|
|
1085
|
+
// Retry the subdomain toggle on those transient tags with a short
|
|
1086
|
+
// exponential backoff; same pattern we use elsewhere in this
|
|
1087
|
+
// provider for DO-namespace propagation and for `putScript` itself.
|
|
1037
1088
|
yield* setWorkerSubdomain(name, desiredSubdomainEnabled).pipe(Effect.retry({
|
|
1038
|
-
while: (error) => error?._tag === "WorkerNotFound"
|
|
1089
|
+
while: (error) => error?._tag === "WorkerNotFound" ||
|
|
1090
|
+
error?._tag === "InternalServerError" ||
|
|
1091
|
+
error?._tag === "UnknownCloudflareError",
|
|
1039
1092
|
schedule: Schedule.exponential(200).pipe(Schedule.both(Schedule.recurs(15))),
|
|
1040
1093
|
}));
|
|
1041
1094
|
}
|
|
@@ -1044,15 +1097,20 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
1044
1097
|
if (desiredDomains.length > 0 || previousDomains.length > 0) {
|
|
1045
1098
|
yield* session.note(`Reconciling custom domains (${desiredDomains.length}) ...`);
|
|
1046
1099
|
}
|
|
1047
|
-
const
|
|
1100
|
+
const reconciled = yield* reconcileDomains(name, desiredDomains);
|
|
1101
|
+
const workersDevUrl = news.url !== false
|
|
1102
|
+
? `https://${name}.${yield* getAccountSubdomain(accountId)}.workers.dev`
|
|
1103
|
+
: undefined;
|
|
1104
|
+
const domains = [
|
|
1105
|
+
...reconciled.map((d) => `https://${d.hostname}`),
|
|
1106
|
+
...(workersDevUrl ? [workersDevUrl] : []),
|
|
1107
|
+
];
|
|
1048
1108
|
const crons = yield* reconcileCrons(name, normalizeCrons([...getCronBindings(bindings), ...(news.crons ?? [])]), output?.crons ?? [], session);
|
|
1049
1109
|
return {
|
|
1050
1110
|
workerId: worker.id ?? name,
|
|
1051
1111
|
workerName: name,
|
|
1052
1112
|
logpush: worker.logpush ?? undefined,
|
|
1053
|
-
url:
|
|
1054
|
-
? `https://${name}.${yield* getAccountSubdomain(accountId)}.workers.dev`
|
|
1055
|
-
: undefined,
|
|
1113
|
+
url: domains[0],
|
|
1056
1114
|
tags: settings.tags ?? metadata.tags,
|
|
1057
1115
|
durableObjectNamespaces,
|
|
1058
1116
|
accountId,
|
|
@@ -1062,6 +1120,24 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
1062
1120
|
};
|
|
1063
1121
|
});
|
|
1064
1122
|
const hasChanged = Effect.fnUntraced(function* (id, props, output) {
|
|
1123
|
+
if (props.script !== undefined) {
|
|
1124
|
+
const scriptHash = yield* hashScript(props.script);
|
|
1125
|
+
if (scriptHash !== output.hash?.bundle) {
|
|
1126
|
+
return true;
|
|
1127
|
+
}
|
|
1128
|
+
if (!props.assets) {
|
|
1129
|
+
return false;
|
|
1130
|
+
}
|
|
1131
|
+
const assetsHash = typeof props.assets === "object" &&
|
|
1132
|
+
"path" in props.assets &&
|
|
1133
|
+
"hash" in props.assets
|
|
1134
|
+
? props.assets.hash
|
|
1135
|
+
: undefined;
|
|
1136
|
+
if (assetsHash === undefined) {
|
|
1137
|
+
return true;
|
|
1138
|
+
}
|
|
1139
|
+
return assetsHash !== output.hash?.assets;
|
|
1140
|
+
}
|
|
1065
1141
|
if (props.vite) {
|
|
1066
1142
|
const input = yield* hashDirectory({
|
|
1067
1143
|
cwd: props.vite.rootDir,
|
|
@@ -1120,9 +1196,11 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
1120
1196
|
if (!output) {
|
|
1121
1197
|
return;
|
|
1122
1198
|
}
|
|
1123
|
-
const newDomains = normalizeDomains(news.domain)
|
|
1199
|
+
const newDomains = normalizeDomains(news.domain)
|
|
1200
|
+
.map((h) => `https://${h}`)
|
|
1201
|
+
.sort();
|
|
1124
1202
|
const oldDomains = (output?.domains ?? [])
|
|
1125
|
-
.
|
|
1203
|
+
.filter((u) => !u.endsWith(".workers.dev"))
|
|
1126
1204
|
.sort();
|
|
1127
1205
|
const domainsChanged = newDomains.length !== oldDomains.length ||
|
|
1128
1206
|
newDomains.some((d, i) => d !== oldDomains[i]);
|
|
@@ -1278,6 +1356,25 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
1278
1356
|
service: workerName,
|
|
1279
1357
|
}).pipe(Effect.map((r) => r.result ?? [])),
|
|
1280
1358
|
]);
|
|
1359
|
+
// Preserve the order the user provided in `olds.domain`. The
|
|
1360
|
+
// Cloudflare API returns domains in non-deterministic order,
|
|
1361
|
+
// which would cause downstream `worker.domains[0]` reads to flip
|
|
1362
|
+
// between deploys. Drift (domains we don't know about) is
|
|
1363
|
+
// appended after the user-ordered ones.
|
|
1364
|
+
const userOrder = normalizeDomains(olds?.domain);
|
|
1365
|
+
const orderedHostnames = [
|
|
1366
|
+
...userOrder.flatMap((h) => domainsList.find((d) => d.hostname === h)?.hostname ?? []),
|
|
1367
|
+
...domainsList.flatMap((d) => d.hostname && !userOrder.includes(d.hostname)
|
|
1368
|
+
? [d.hostname]
|
|
1369
|
+
: []),
|
|
1370
|
+
];
|
|
1371
|
+
const workersDevUrl = subdomain.enabled
|
|
1372
|
+
? `https://${workerName}.${yield* getAccountSubdomain(accountId)}.workers.dev`
|
|
1373
|
+
: undefined;
|
|
1374
|
+
const domains = [
|
|
1375
|
+
...orderedHostnames.map((h) => `https://${h}`),
|
|
1376
|
+
...(workersDevUrl ? [workersDevUrl] : []),
|
|
1377
|
+
];
|
|
1281
1378
|
const crons = yield* getWorkerCrons(workerName);
|
|
1282
1379
|
yield* Effect.logInfo(`Cloudflare Worker read: found ${workerName}`);
|
|
1283
1380
|
const attrs = {
|
|
@@ -1285,14 +1382,10 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
1285
1382
|
workerId: workerName,
|
|
1286
1383
|
workerName,
|
|
1287
1384
|
logpush: settings.logpush ?? undefined,
|
|
1288
|
-
url:
|
|
1289
|
-
? `https://${workerName}.${yield* getAccountSubdomain(accountId)}.workers.dev`
|
|
1290
|
-
: undefined,
|
|
1385
|
+
url: domains[0],
|
|
1291
1386
|
tags: settings.tags ?? undefined,
|
|
1292
1387
|
durableObjectNamespaces: getDurableObjectNamespaces(settings.bindings),
|
|
1293
|
-
domains
|
|
1294
|
-
? [{ id: d.id, hostname: d.hostname, zoneId: d.zoneId }]
|
|
1295
|
-
: []),
|
|
1388
|
+
domains,
|
|
1296
1389
|
crons,
|
|
1297
1390
|
};
|
|
1298
1391
|
// Centralized ownership decision: the engine routes `read`'s
|
|
@@ -1328,11 +1421,23 @@ export const LiveWorkerProvider = () => Provider.effect(Worker, Effect.gen(funct
|
|
|
1328
1421
|
}),
|
|
1329
1422
|
delete: Effect.fnUntraced(function* ({ output }) {
|
|
1330
1423
|
yield* Effect.logInfo(`Cloudflare Worker delete: deleting ${output.workerName}`);
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1424
|
+
// Look up live domain IDs rather than trusting persisted state.
|
|
1425
|
+
// We no longer track `{ id, zoneId }` on the output; fetching
|
|
1426
|
+
// straight from Cloudflare handles both the normal case and
|
|
1427
|
+
// adopted workers whose domains we never recorded.
|
|
1428
|
+
const liveDomains = yield* listDomains({
|
|
1429
|
+
accountId: output.accountId,
|
|
1430
|
+
service: output.workerName,
|
|
1431
|
+
}).pipe(Effect.map((r) => r.result ?? []), Effect.catch(() => Effect.succeed([])));
|
|
1432
|
+
if (liveDomains.length) {
|
|
1433
|
+
yield* Effect.all(liveDomains.flatMap((d) => d.id
|
|
1434
|
+
? [
|
|
1435
|
+
deleteDomain({
|
|
1436
|
+
accountId: output.accountId,
|
|
1437
|
+
domainId: d.id,
|
|
1438
|
+
}).pipe(Effect.catchTag("DomainNotFound", () => Effect.void)),
|
|
1439
|
+
]
|
|
1440
|
+
: []), { concurrency: "unbounded" });
|
|
1336
1441
|
}
|
|
1337
1442
|
yield* deleteScript({
|
|
1338
1443
|
accountId: output.accountId,
|
|
@@ -1394,20 +1499,36 @@ function bumpMigrationTagVersion(oldTag) {
|
|
|
1394
1499
|
return `alchemy:v${parseInt(version, 10) + 1}`;
|
|
1395
1500
|
}
|
|
1396
1501
|
function getDurableObjectBindings(bindings, workerName) {
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1502
|
+
// Resource authors (and the `make`/`yield* Tag`/plan-vs-apply machinery)
|
|
1503
|
+
// can register the same DO binding multiple times under the same logical
|
|
1504
|
+
// id — `binding()` is a plain `worker.bind` and intentionally has no
|
|
1505
|
+
// dedup. Collapse duplicates here so each `(logicalId, bindingName,
|
|
1506
|
+
// className)` tuple appears at most once. We also exclude cross-script
|
|
1507
|
+
// references: a `scriptName` pointing to *another* worker means this
|
|
1508
|
+
// worker just references a foreign class — ship the binding to
|
|
1509
|
+
// Cloudflare, but don't drive class migrations for it.
|
|
1510
|
+
const seen = new Set();
|
|
1511
|
+
return bindings.flatMap((binding) => (binding.data.bindings ?? []).flatMap((item) => {
|
|
1512
|
+
if (item.type !== "durable_object_namespace" ||
|
|
1513
|
+
!("className" in item) ||
|
|
1514
|
+
!item.className) {
|
|
1515
|
+
return [];
|
|
1516
|
+
}
|
|
1517
|
+
if (item.scriptName !== undefined && item.scriptName !== workerName) {
|
|
1518
|
+
return [];
|
|
1519
|
+
}
|
|
1520
|
+
const dedupKey = `${binding.sid}::${item.name}::${item.className}`;
|
|
1521
|
+
if (seen.has(dedupKey))
|
|
1522
|
+
return [];
|
|
1523
|
+
seen.add(dedupKey);
|
|
1524
|
+
return [
|
|
1404
1525
|
{
|
|
1405
1526
|
logicalId: binding.sid,
|
|
1406
1527
|
bindingName: item.name,
|
|
1407
1528
|
className: item.className,
|
|
1408
1529
|
},
|
|
1409
|
-
]
|
|
1410
|
-
|
|
1530
|
+
];
|
|
1531
|
+
}));
|
|
1411
1532
|
}
|
|
1412
1533
|
function getDurableObjectTagMap(tags) {
|
|
1413
1534
|
return Object.fromEntries(tags.flatMap((tag) => {
|