alchemy 2.0.0-beta.62 → 2.0.0-beta.63
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/README.md +12 -12
- package/bin/exec.js +1959 -70
- package/bin/exec.js.map +1 -1
- package/lib/AWS/AuthProvider.js +1 -1
- package/lib/AWS/AuthProvider.js.map +1 -1
- package/lib/AWS/EC2/hosted.d.ts.map +1 -1
- package/lib/AWS/EC2/hosted.js +2 -1
- package/lib/AWS/EC2/hosted.js.map +1 -1
- package/lib/AWS/ECS/Task.d.ts.map +1 -1
- package/lib/AWS/ECS/Task.js +2 -1
- package/lib/AWS/ECS/Task.js.map +1 -1
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +13 -40
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Lambda/MicrovmRuntimeContext.d.ts.map +1 -1
- package/lib/AWS/Lambda/MicrovmRuntimeContext.js +9 -21
- package/lib/AWS/Lambda/MicrovmRuntimeContext.js.map +1 -1
- package/lib/Action.d.ts +8 -0
- package/lib/Action.d.ts.map +1 -1
- package/lib/Action.js +16 -5
- package/lib/Action.js.map +1 -1
- package/lib/ActionRuntimeContext.d.ts +14 -0
- package/lib/ActionRuntimeContext.d.ts.map +1 -0
- package/lib/ActionRuntimeContext.js +56 -0
- package/lib/ActionRuntimeContext.js.map +1 -0
- package/lib/Apply.d.ts.map +1 -1
- package/lib/Apply.js +40 -6
- package/lib/Apply.js.map +1 -1
- package/lib/Auth/AuthProvider.d.ts +3 -3
- package/lib/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Auth/AuthProvider.js +1 -1
- package/lib/Auth/AuthProvider.js.map +1 -1
- package/lib/Auth/Lock.d.ts.map +1 -1
- package/lib/Auth/Lock.js +5 -2
- package/lib/Auth/Lock.js.map +1 -1
- package/lib/Bundle/PurePlugin.d.ts.map +1 -1
- package/lib/Bundle/PurePlugin.js +26 -1
- package/lib/Bundle/PurePlugin.js.map +1 -1
- package/lib/Bundle/Vite.d.ts +2 -0
- package/lib/Bundle/Vite.d.ts.map +1 -1
- package/lib/Bundle/Vite.js +24 -1
- package/lib/Bundle/Vite.js.map +1 -1
- package/lib/Cli/LoggingCli.d.ts.map +1 -1
- package/lib/Cli/LoggingCli.js +7 -4
- package/lib/Cli/LoggingCli.js.map +1 -1
- package/lib/Cli/commands/_shared.d.ts +19 -0
- package/lib/Cli/commands/_shared.d.ts.map +1 -1
- package/lib/Cli/commands/_shared.js +22 -0
- package/lib/Cli/commands/_shared.js.map +1 -1
- package/lib/Cli/commands/login.d.ts +7 -3
- package/lib/Cli/commands/login.d.ts.map +1 -1
- package/lib/Cli/commands/login.js +70 -12
- 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 -20
- package/lib/Cli/commands/profile.js.map +1 -1
- package/lib/Cloudflare/AI/LanguageModel.js +21 -4
- package/lib/Cloudflare/AI/LanguageModel.js.map +1 -1
- package/lib/Cloudflare/AI/QuerySearchLocal.d.ts +37 -0
- package/lib/Cloudflare/AI/QuerySearchLocal.d.ts.map +1 -0
- package/lib/Cloudflare/AI/QuerySearchLocal.js +53 -0
- package/lib/Cloudflare/AI/QuerySearchLocal.js.map +1 -0
- package/lib/Cloudflare/AI/QuerySearchNamespaceLocal.d.ts +35 -0
- package/lib/Cloudflare/AI/QuerySearchNamespaceLocal.d.ts.map +1 -0
- package/lib/Cloudflare/AI/QuerySearchNamespaceLocal.js +47 -0
- package/lib/Cloudflare/AI/QuerySearchNamespaceLocal.js.map +1 -0
- package/lib/Cloudflare/AI/SearchHttpClient.d.ts +34 -0
- package/lib/Cloudflare/AI/SearchHttpClient.d.ts.map +1 -0
- package/lib/Cloudflare/AI/SearchHttpClient.js +262 -0
- package/lib/Cloudflare/AI/SearchHttpClient.js.map +1 -0
- package/lib/Cloudflare/AI/index.d.ts +2 -0
- package/lib/Cloudflare/AI/index.d.ts.map +1 -1
- package/lib/Cloudflare/AI/index.js +2 -0
- package/lib/Cloudflare/AI/index.js.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerBundle.js +11 -1
- package/lib/Cloudflare/Containers/ContainerBundle.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerPlatform.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerPlatform.js +12 -33
- package/lib/Cloudflare/Containers/ContainerPlatform.js.map +1 -1
- package/lib/Cloudflare/D1/QueryDatabaseHttpClient.d.ts +24 -0
- package/lib/Cloudflare/D1/QueryDatabaseHttpClient.d.ts.map +1 -0
- package/lib/Cloudflare/D1/QueryDatabaseHttpClient.js +106 -0
- package/lib/Cloudflare/D1/QueryDatabaseHttpClient.js.map +1 -0
- package/lib/Cloudflare/D1/QueryDatabaseLocal.d.ts +38 -0
- package/lib/Cloudflare/D1/QueryDatabaseLocal.d.ts.map +1 -0
- package/lib/Cloudflare/D1/QueryDatabaseLocal.js +54 -0
- package/lib/Cloudflare/D1/QueryDatabaseLocal.js.map +1 -0
- package/lib/Cloudflare/D1/index.d.ts +1 -0
- package/lib/Cloudflare/D1/index.d.ts.map +1 -1
- package/lib/Cloudflare/D1/index.js +1 -0
- package/lib/Cloudflare/D1/index.js.map +1 -1
- package/lib/Cloudflare/DNS/DnsHttp.d.ts +16 -1
- package/lib/Cloudflare/DNS/DnsHttp.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/DnsHttp.js +6 -1
- package/lib/Cloudflare/DNS/DnsHttp.js.map +1 -1
- package/lib/Cloudflare/DNS/DnsLocal.d.ts +22 -0
- package/lib/Cloudflare/DNS/DnsLocal.d.ts.map +1 -0
- package/lib/Cloudflare/DNS/DnsLocal.js +31 -0
- package/lib/Cloudflare/DNS/DnsLocal.js.map +1 -0
- package/lib/Cloudflare/DNS/ReadDnsHttp.d.ts +3 -3
- package/lib/Cloudflare/DNS/ReadDnsHttp.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/ReadDnsHttp.js +3 -4
- package/lib/Cloudflare/DNS/ReadDnsHttp.js.map +1 -1
- package/lib/Cloudflare/DNS/ReadDnsLocal.d.ts +32 -0
- package/lib/Cloudflare/DNS/ReadDnsLocal.d.ts.map +1 -0
- package/lib/Cloudflare/DNS/ReadDnsLocal.js +35 -0
- package/lib/Cloudflare/DNS/ReadDnsLocal.js.map +1 -0
- package/lib/Cloudflare/DNS/ReadWriteDnsHttp.d.ts +3 -3
- package/lib/Cloudflare/DNS/ReadWriteDnsHttp.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/ReadWriteDnsHttp.js +4 -4
- package/lib/Cloudflare/DNS/ReadWriteDnsHttp.js.map +1 -1
- package/lib/Cloudflare/DNS/ReadWriteDnsLocal.d.ts +40 -0
- package/lib/Cloudflare/DNS/ReadWriteDnsLocal.d.ts.map +1 -0
- package/lib/Cloudflare/DNS/ReadWriteDnsLocal.js +43 -0
- package/lib/Cloudflare/DNS/ReadWriteDnsLocal.js.map +1 -0
- package/lib/Cloudflare/DNS/WriteDnsHttp.d.ts +3 -3
- package/lib/Cloudflare/DNS/WriteDnsHttp.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/WriteDnsHttp.js +3 -4
- package/lib/Cloudflare/DNS/WriteDnsHttp.js.map +1 -1
- package/lib/Cloudflare/DNS/WriteDnsLocal.d.ts +38 -0
- package/lib/Cloudflare/DNS/WriteDnsLocal.d.ts.map +1 -0
- package/lib/Cloudflare/DNS/WriteDnsLocal.js +41 -0
- package/lib/Cloudflare/DNS/WriteDnsLocal.js.map +1 -0
- package/lib/Cloudflare/DNS/index.d.ts +3 -0
- package/lib/Cloudflare/DNS/index.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/index.js +3 -0
- package/lib/Cloudflare/DNS/index.js.map +1 -1
- package/lib/Cloudflare/Flagship/ReadFlagsHttpClient.d.ts +27 -0
- package/lib/Cloudflare/Flagship/ReadFlagsHttpClient.d.ts.map +1 -0
- package/lib/Cloudflare/Flagship/ReadFlagsHttpClient.js +86 -0
- package/lib/Cloudflare/Flagship/ReadFlagsHttpClient.js.map +1 -0
- package/lib/Cloudflare/Flagship/ReadFlagsLocal.d.ts +41 -0
- package/lib/Cloudflare/Flagship/ReadFlagsLocal.d.ts.map +1 -0
- package/lib/Cloudflare/Flagship/ReadFlagsLocal.js +57 -0
- package/lib/Cloudflare/Flagship/ReadFlagsLocal.js.map +1 -0
- package/lib/Cloudflare/Flagship/index.d.ts +1 -0
- package/lib/Cloudflare/Flagship/index.d.ts.map +1 -1
- package/lib/Cloudflare/Flagship/index.js +1 -0
- package/lib/Cloudflare/Flagship/index.js.map +1 -1
- package/lib/Cloudflare/KV/NamespaceHttp.d.ts +16 -1
- package/lib/Cloudflare/KV/NamespaceHttp.d.ts.map +1 -1
- package/lib/Cloudflare/KV/NamespaceHttp.js +8 -2
- package/lib/Cloudflare/KV/NamespaceHttp.js.map +1 -1
- package/lib/Cloudflare/KV/NamespaceLocal.d.ts +22 -0
- package/lib/Cloudflare/KV/NamespaceLocal.d.ts.map +1 -0
- package/lib/Cloudflare/KV/NamespaceLocal.js +32 -0
- package/lib/Cloudflare/KV/NamespaceLocal.js.map +1 -0
- package/lib/Cloudflare/KV/ReadNamespaceHttp.d.ts +2 -2
- package/lib/Cloudflare/KV/ReadNamespaceHttp.d.ts.map +1 -1
- package/lib/Cloudflare/KV/ReadNamespaceHttp.js +5 -6
- package/lib/Cloudflare/KV/ReadNamespaceHttp.js.map +1 -1
- package/lib/Cloudflare/KV/ReadNamespaceLocal.d.ts +27 -0
- package/lib/Cloudflare/KV/ReadNamespaceLocal.d.ts.map +1 -0
- package/lib/Cloudflare/KV/ReadNamespaceLocal.js +30 -0
- package/lib/Cloudflare/KV/ReadNamespaceLocal.js.map +1 -0
- package/lib/Cloudflare/KV/ReadWriteNamespaceHttp.d.ts +3 -3
- package/lib/Cloudflare/KV/ReadWriteNamespaceHttp.d.ts.map +1 -1
- package/lib/Cloudflare/KV/ReadWriteNamespaceHttp.js +6 -6
- package/lib/Cloudflare/KV/ReadWriteNamespaceHttp.js.map +1 -1
- package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.d.ts +34 -0
- package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.d.ts.map +1 -0
- package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.js +37 -0
- package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.js.map +1 -0
- package/lib/Cloudflare/KV/WriteNamespaceHttp.d.ts +2 -2
- package/lib/Cloudflare/KV/WriteNamespaceHttp.d.ts.map +1 -1
- package/lib/Cloudflare/KV/WriteNamespaceHttp.js +5 -6
- package/lib/Cloudflare/KV/WriteNamespaceHttp.js.map +1 -1
- package/lib/Cloudflare/KV/WriteNamespaceLocal.d.ts +27 -0
- package/lib/Cloudflare/KV/WriteNamespaceLocal.d.ts.map +1 -0
- package/lib/Cloudflare/KV/WriteNamespaceLocal.js +30 -0
- package/lib/Cloudflare/KV/WriteNamespaceLocal.js.map +1 -0
- package/lib/Cloudflare/KV/index.d.ts +3 -0
- package/lib/Cloudflare/KV/index.d.ts.map +1 -1
- package/lib/Cloudflare/KV/index.js +3 -0
- package/lib/Cloudflare/KV/index.js.map +1 -1
- package/lib/Cloudflare/Queues/QueueHttp.d.ts +20 -1
- package/lib/Cloudflare/Queues/QueueHttp.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/QueueHttp.js +2 -2
- package/lib/Cloudflare/Queues/QueueHttp.js.map +1 -1
- package/lib/Cloudflare/Queues/WriteQueueHttp.d.ts +9 -3
- package/lib/Cloudflare/Queues/WriteQueueHttp.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/WriteQueueHttp.js +11 -6
- package/lib/Cloudflare/Queues/WriteQueueHttp.js.map +1 -1
- package/lib/Cloudflare/Queues/WriteQueueLocal.d.ts +36 -0
- package/lib/Cloudflare/Queues/WriteQueueLocal.d.ts.map +1 -0
- package/lib/Cloudflare/Queues/WriteQueueLocal.js +51 -0
- package/lib/Cloudflare/Queues/WriteQueueLocal.js.map +1 -0
- package/lib/Cloudflare/Queues/index.d.ts +1 -0
- package/lib/Cloudflare/Queues/index.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/index.js +1 -0
- package/lib/Cloudflare/Queues/index.js.map +1 -1
- package/lib/Cloudflare/R2/BucketHttp.d.ts +15 -1
- package/lib/Cloudflare/R2/BucketHttp.d.ts.map +1 -1
- package/lib/Cloudflare/R2/BucketHttp.js +3 -3
- package/lib/Cloudflare/R2/BucketHttp.js.map +1 -1
- package/lib/Cloudflare/R2/BucketLocal.d.ts +21 -0
- package/lib/Cloudflare/R2/BucketLocal.d.ts.map +1 -0
- package/lib/Cloudflare/R2/BucketLocal.js +32 -0
- package/lib/Cloudflare/R2/BucketLocal.js.map +1 -0
- package/lib/Cloudflare/R2/ReadBucketHttp.d.ts +2 -2
- package/lib/Cloudflare/R2/ReadBucketHttp.d.ts.map +1 -1
- package/lib/Cloudflare/R2/ReadBucketHttp.js +4 -4
- package/lib/Cloudflare/R2/ReadBucketHttp.js.map +1 -1
- package/lib/Cloudflare/R2/ReadBucketLocal.d.ts +27 -0
- package/lib/Cloudflare/R2/ReadBucketLocal.d.ts.map +1 -0
- package/lib/Cloudflare/R2/ReadBucketLocal.js +30 -0
- package/lib/Cloudflare/R2/ReadBucketLocal.js.map +1 -0
- package/lib/Cloudflare/R2/ReadWriteBucketHttp.d.ts +2 -2
- package/lib/Cloudflare/R2/ReadWriteBucketHttp.d.ts.map +1 -1
- package/lib/Cloudflare/R2/ReadWriteBucketHttp.js +5 -4
- package/lib/Cloudflare/R2/ReadWriteBucketHttp.js.map +1 -1
- package/lib/Cloudflare/R2/ReadWriteBucketLocal.d.ts +30 -0
- package/lib/Cloudflare/R2/ReadWriteBucketLocal.d.ts.map +1 -0
- package/lib/Cloudflare/R2/ReadWriteBucketLocal.js +33 -0
- package/lib/Cloudflare/R2/ReadWriteBucketLocal.js.map +1 -0
- package/lib/Cloudflare/R2/WriteBucketHttp.d.ts +2 -2
- package/lib/Cloudflare/R2/WriteBucketHttp.d.ts.map +1 -1
- package/lib/Cloudflare/R2/WriteBucketHttp.js +4 -4
- package/lib/Cloudflare/R2/WriteBucketHttp.js.map +1 -1
- package/lib/Cloudflare/R2/WriteBucketLocal.d.ts +27 -0
- package/lib/Cloudflare/R2/WriteBucketLocal.d.ts.map +1 -0
- package/lib/Cloudflare/R2/WriteBucketLocal.js +30 -0
- package/lib/Cloudflare/R2/WriteBucketLocal.js.map +1 -0
- package/lib/Cloudflare/R2/index.d.ts +3 -0
- package/lib/Cloudflare/R2/index.d.ts.map +1 -1
- package/lib/Cloudflare/R2/index.js +3 -0
- package/lib/Cloudflare/R2/index.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +2 -0
- package/lib/Cloudflare/Tunnel/ReadTunnel.d.ts +3 -3
- package/lib/Cloudflare/Tunnel/ReadTunnel.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/ReadTunnel.js +7 -8
- package/lib/Cloudflare/Tunnel/ReadTunnel.js.map +1 -1
- package/lib/Cloudflare/Tunnel/ReadTunnelLocal.d.ts +29 -0
- package/lib/Cloudflare/Tunnel/ReadTunnelLocal.d.ts.map +1 -0
- package/lib/Cloudflare/Tunnel/ReadTunnelLocal.js +30 -0
- package/lib/Cloudflare/Tunnel/ReadTunnelLocal.js.map +1 -0
- package/lib/Cloudflare/Tunnel/ReadWriteTunnel.d.ts +3 -3
- package/lib/Cloudflare/Tunnel/ReadWriteTunnel.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/ReadWriteTunnel.js +4 -4
- package/lib/Cloudflare/Tunnel/ReadWriteTunnel.js.map +1 -1
- package/lib/Cloudflare/Tunnel/ReadWriteTunnelLocal.d.ts +35 -0
- package/lib/Cloudflare/Tunnel/ReadWriteTunnelLocal.d.ts.map +1 -0
- package/lib/Cloudflare/Tunnel/ReadWriteTunnelLocal.js +36 -0
- package/lib/Cloudflare/Tunnel/ReadWriteTunnelLocal.js.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelBinding.d.ts +17 -1
- package/lib/Cloudflare/Tunnel/TunnelBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/TunnelBinding.js +7 -1
- package/lib/Cloudflare/Tunnel/TunnelBinding.js.map +1 -1
- package/lib/Cloudflare/Tunnel/TunnelLocalBinding.d.ts +19 -0
- package/lib/Cloudflare/Tunnel/TunnelLocalBinding.d.ts.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelLocalBinding.js +29 -0
- package/lib/Cloudflare/Tunnel/TunnelLocalBinding.js.map +1 -0
- package/lib/Cloudflare/Tunnel/WarpConnector.d.ts +3 -3
- package/lib/Cloudflare/Tunnel/WarpConnector.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/WarpConnector.js +7 -4
- package/lib/Cloudflare/Tunnel/WarpConnector.js.map +1 -1
- package/lib/Cloudflare/Tunnel/WriteTunnel.d.ts +3 -3
- package/lib/Cloudflare/Tunnel/WriteTunnel.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/WriteTunnel.js +7 -8
- package/lib/Cloudflare/Tunnel/WriteTunnel.js.map +1 -1
- package/lib/Cloudflare/Tunnel/WriteTunnelLocal.d.ts +29 -0
- package/lib/Cloudflare/Tunnel/WriteTunnelLocal.d.ts.map +1 -0
- package/lib/Cloudflare/Tunnel/WriteTunnelLocal.js +30 -0
- package/lib/Cloudflare/Tunnel/WriteTunnelLocal.js.map +1 -0
- package/lib/Cloudflare/Tunnel/index.d.ts +3 -0
- package/lib/Cloudflare/Tunnel/index.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/index.js +3 -0
- package/lib/Cloudflare/Tunnel/index.js.map +1 -1
- package/lib/Cloudflare/Vectorize/SearchIndexHttpClient.d.ts +30 -0
- package/lib/Cloudflare/Vectorize/SearchIndexHttpClient.d.ts.map +1 -0
- package/lib/Cloudflare/Vectorize/SearchIndexHttpClient.js +100 -0
- package/lib/Cloudflare/Vectorize/SearchIndexHttpClient.js.map +1 -0
- package/lib/Cloudflare/Vectorize/SearchIndexLocal.d.ts +42 -0
- package/lib/Cloudflare/Vectorize/SearchIndexLocal.d.ts.map +1 -0
- package/lib/Cloudflare/Vectorize/SearchIndexLocal.js +58 -0
- package/lib/Cloudflare/Vectorize/SearchIndexLocal.js.map +1 -0
- package/lib/Cloudflare/Vectorize/index.d.ts +1 -0
- package/lib/Cloudflare/Vectorize/index.d.ts.map +1 -1
- package/lib/Cloudflare/Vectorize/index.js +1 -0
- package/lib/Cloudflare/Vectorize/index.js.map +1 -1
- package/lib/Cloudflare/Workers/BrowserHttpClient.d.ts +32 -0
- package/lib/Cloudflare/Workers/BrowserHttpClient.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/BrowserHttpClient.js +100 -0
- package/lib/Cloudflare/Workers/BrowserHttpClient.js.map +1 -0
- package/lib/Cloudflare/Workers/BrowserLocal.d.ts +37 -0
- package/lib/Cloudflare/Workers/BrowserLocal.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/BrowserLocal.js +53 -0
- package/lib/Cloudflare/Workers/BrowserLocal.js.map +1 -0
- package/lib/Cloudflare/Workers/ConfigProvider.d.ts +8 -0
- package/lib/Cloudflare/Workers/ConfigProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/ConfigProvider.js +10 -1
- package/lib/Cloudflare/Workers/ConfigProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.d.ts +137 -3
- package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.js +141 -6
- package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +2 -185
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Vite.js +81 -2
- package/lib/Cloudflare/Workers/Vite.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +15 -1
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +2 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +22 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
- 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 +7 -2
- package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts +81 -0
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.js +450 -61
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +11 -37
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
- package/lib/Cloudflare/Workers/index.d.ts +1 -0
- package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/index.js +1 -0
- package/lib/Cloudflare/Workers/index.js.map +1 -1
- package/lib/Diff.d.ts +16 -0
- package/lib/Diff.d.ts.map +1 -1
- package/lib/Diff.js +33 -0
- package/lib/Diff.js.map +1 -1
- package/lib/GitHub/Secrets.d.ts +1 -1
- package/lib/GitHub/Secrets.js +1 -1
- package/lib/GitHub/Variables.d.ts +1 -1
- package/lib/GitHub/Variables.js +1 -1
- package/lib/Local/RpcSerialization.d.ts.map +1 -1
- package/lib/Local/RpcSerialization.js +6 -2
- package/lib/Local/RpcSerialization.js.map +1 -1
- package/lib/Local/RpcSpawner.d.ts.map +1 -1
- package/lib/Local/RpcSpawner.js +14 -8
- package/lib/Local/RpcSpawner.js.map +1 -1
- package/lib/Neon/AuthProvider.js +1 -1
- package/lib/Neon/AuthProvider.js.map +1 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +11 -4
- package/lib/Plan.js.map +1 -1
- package/lib/Planetscale/Database.d.ts +2 -1
- package/lib/Planetscale/Database.d.ts.map +1 -1
- package/lib/Planetscale/MySQL/MySQLClusterSize.d.ts +41 -3
- package/lib/Planetscale/MySQL/MySQLClusterSize.d.ts.map +1 -1
- package/lib/Planetscale/MySQL/MySQLClusterSize.js +88 -11
- package/lib/Planetscale/MySQL/MySQLClusterSize.js.map +1 -1
- package/lib/Planetscale/MySQL/MySQLDatabase.d.ts +14 -0
- package/lib/Planetscale/MySQL/MySQLDatabase.d.ts.map +1 -1
- package/lib/Planetscale/MySQL/MySQLDatabase.js +24 -11
- package/lib/Planetscale/MySQL/MySQLDatabase.js.map +1 -1
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Platform.js +11 -1
- package/lib/Platform.js.map +1 -1
- package/lib/Runtime.d.ts +23 -0
- package/lib/Runtime.d.ts.map +1 -1
- package/lib/Runtime.js +83 -0
- package/lib/Runtime.js.map +1 -1
- package/lib/RuntimeContext.d.ts +46 -0
- package/lib/RuntimeContext.d.ts.map +1 -1
- package/lib/RuntimeContext.js +60 -0
- package/lib/RuntimeContext.js.map +1 -1
- package/lib/Server/Process.d.ts +1 -1
- package/lib/Server/Process.d.ts.map +1 -1
- package/lib/Server/Process.js +8 -8
- package/lib/Server/Process.js.map +1 -1
- package/lib/Stack.js +1 -1
- package/lib/Stack.js.map +1 -1
- package/lib/State/HttpStateApi.d.ts +10 -10
- package/lib/Test/Alchemy.d.ts +74 -0
- package/lib/Test/Alchemy.d.ts.map +1 -0
- package/lib/Test/Alchemy.js +143 -0
- package/lib/Test/Alchemy.js.map +1 -0
- package/lib/Util/cached-function.d.ts +1 -1
- package/lib/Util/cached-function.d.ts.map +1 -1
- package/lib/Util/cached-function.js +2 -2
- package/lib/Util/cached-function.js.map +1 -1
- package/lib/Util/proxy-chain.js +3 -0
- package/lib/Util/proxy-chain.js.map +1 -1
- package/package.json +10 -10
- package/src/AWS/AuthProvider.ts +1 -1
- package/src/AWS/EC2/hosted.ts +2 -1
- package/src/AWS/ECS/Task.ts +2 -1
- package/src/AWS/Lambda/Function.ts +13 -47
- package/src/AWS/Lambda/MicrovmRuntimeContext.ts +11 -38
- package/src/Action.ts +39 -6
- package/src/ActionRuntimeContext.ts +68 -0
- package/src/Apply.ts +46 -8
- package/src/Auth/AuthProvider.ts +1 -1
- package/src/Auth/Lock.ts +5 -2
- package/src/Bundle/PurePlugin.ts +34 -1
- package/src/Bundle/Vite.ts +51 -1
- package/src/Cli/LoggingCli.ts +7 -4
- package/src/Cli/commands/_shared.ts +52 -0
- package/src/Cli/commands/login.ts +90 -14
- package/src/Cli/commands/profile.ts +7 -41
- package/src/Cloudflare/AI/LanguageModel.ts +25 -5
- package/src/Cloudflare/AI/QuerySearchLocal.ts +66 -0
- package/src/Cloudflare/AI/QuerySearchNamespaceLocal.ts +60 -0
- package/src/Cloudflare/AI/SearchHttpClient.ts +423 -0
- package/src/Cloudflare/AI/index.ts +2 -0
- package/src/Cloudflare/Auth/AuthProvider.ts +1 -1
- package/src/Cloudflare/Containers/ContainerBundle.ts +11 -1
- package/src/Cloudflare/Containers/ContainerPlatform.ts +14 -52
- package/src/Cloudflare/D1/QueryDatabaseHttpClient.ts +176 -0
- package/src/Cloudflare/D1/QueryDatabaseLocal.ts +66 -0
- package/src/Cloudflare/D1/index.ts +1 -0
- package/src/Cloudflare/DNS/DnsHttp.ts +24 -2
- package/src/Cloudflare/DNS/DnsLocal.ts +41 -0
- package/src/Cloudflare/DNS/ReadDnsHttp.ts +4 -5
- package/src/Cloudflare/DNS/ReadDnsLocal.ts +38 -0
- package/src/Cloudflare/DNS/ReadWriteDnsHttp.ts +5 -5
- package/src/Cloudflare/DNS/ReadWriteDnsLocal.ts +46 -0
- package/src/Cloudflare/DNS/WriteDnsHttp.ts +4 -5
- package/src/Cloudflare/DNS/WriteDnsLocal.ts +44 -0
- package/src/Cloudflare/DNS/index.ts +3 -0
- package/src/Cloudflare/Flagship/ReadFlagsHttpClient.ts +183 -0
- package/src/Cloudflare/Flagship/ReadFlagsLocal.ts +69 -0
- package/src/Cloudflare/Flagship/index.ts +1 -0
- package/src/Cloudflare/KV/NamespaceHttp.ts +25 -2
- package/src/Cloudflare/KV/NamespaceLocal.ts +42 -0
- package/src/Cloudflare/KV/ReadNamespaceHttp.ts +7 -6
- package/src/Cloudflare/KV/ReadNamespaceLocal.ts +35 -0
- package/src/Cloudflare/KV/ReadWriteNamespaceHttp.ts +11 -6
- package/src/Cloudflare/KV/ReadWriteNamespaceLocal.ts +42 -0
- package/src/Cloudflare/KV/WriteNamespaceHttp.ts +7 -6
- package/src/Cloudflare/KV/WriteNamespaceLocal.ts +35 -0
- package/src/Cloudflare/KV/index.ts +3 -0
- package/src/Cloudflare/Queues/QueueHttp.ts +24 -2
- package/src/Cloudflare/Queues/WriteQueueHttp.ts +16 -7
- package/src/Cloudflare/Queues/WriteQueueLocal.ts +64 -0
- package/src/Cloudflare/Queues/index.ts +1 -0
- package/src/Cloudflare/R2/BucketHttp.ts +20 -3
- package/src/Cloudflare/R2/BucketLocal.ts +47 -0
- package/src/Cloudflare/R2/ReadBucketHttp.ts +10 -5
- package/src/Cloudflare/R2/ReadBucketLocal.ts +33 -0
- package/src/Cloudflare/R2/ReadWriteBucketHttp.ts +11 -5
- package/src/Cloudflare/R2/ReadWriteBucketLocal.ts +36 -0
- package/src/Cloudflare/R2/WriteBucketHttp.ts +10 -5
- package/src/Cloudflare/R2/WriteBucketLocal.ts +33 -0
- package/src/Cloudflare/R2/index.ts +3 -0
- package/src/Cloudflare/Tunnel/ReadTunnel.ts +8 -9
- package/src/Cloudflare/Tunnel/ReadTunnelLocal.ts +33 -0
- package/src/Cloudflare/Tunnel/ReadWriteTunnel.ts +5 -5
- package/src/Cloudflare/Tunnel/ReadWriteTunnelLocal.ts +39 -0
- package/src/Cloudflare/Tunnel/TunnelBinding.ts +26 -2
- package/src/Cloudflare/Tunnel/TunnelLocalBinding.ts +38 -0
- package/src/Cloudflare/Tunnel/WarpConnector.ts +8 -5
- package/src/Cloudflare/Tunnel/WriteTunnel.ts +8 -9
- package/src/Cloudflare/Tunnel/WriteTunnelLocal.ts +33 -0
- package/src/Cloudflare/Tunnel/index.ts +3 -0
- package/src/Cloudflare/Vectorize/SearchIndexHttpClient.ts +183 -0
- package/src/Cloudflare/Vectorize/SearchIndexLocal.ts +70 -0
- package/src/Cloudflare/Vectorize/index.ts +1 -0
- package/src/Cloudflare/Workers/BrowserHttpClient.ts +201 -0
- package/src/Cloudflare/Workers/BrowserLocal.ts +65 -0
- package/src/Cloudflare/Workers/ConfigProvider.ts +15 -1
- package/src/Cloudflare/Workers/DurableObject.ts +227 -6
- package/src/Cloudflare/Workers/Vite.ts +93 -11
- package/src/Cloudflare/Workers/Worker.ts +19 -1
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +6 -5
- package/src/Cloudflare/Workers/WorkerBinding.ts +20 -1
- package/src/Cloudflare/Workers/WorkerBridge.ts +12 -2
- package/src/Cloudflare/Workers/WorkerProvider.ts +664 -117
- package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +14 -45
- package/src/Cloudflare/Workers/index.ts +1 -0
- package/src/Diff.ts +33 -0
- package/src/GitHub/Secrets.ts +1 -1
- package/src/GitHub/Variables.ts +1 -1
- package/src/Local/RpcSerialization.ts +6 -2
- package/src/Local/RpcSpawner.ts +21 -8
- package/src/Neon/AuthProvider.ts +1 -1
- package/src/Plan.ts +17 -4
- package/src/Planetscale/Database.ts +2 -1
- package/src/Planetscale/MySQL/MySQLClusterSize.ts +120 -21
- package/src/Planetscale/MySQL/MySQLDatabase.ts +84 -44
- package/src/Platform.ts +12 -3
- package/src/Runtime.ts +92 -0
- package/src/RuntimeContext.ts +79 -0
- package/src/Server/Process.ts +11 -18
- package/src/Stack.ts +1 -1
- package/src/Test/Alchemy.ts +282 -0
- package/src/Util/cached-function.ts +5 -5
- package/src/Util/proxy-chain.ts +3 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import * as Config from "effect/Config";
|
|
2
1
|
import * as Effect from "effect/Effect";
|
|
3
2
|
import * as Option from "effect/Option";
|
|
4
|
-
import * as Redacted from "effect/Redacted";
|
|
5
3
|
import { HttpServer } from "../../Http.js";
|
|
6
4
|
import * as Output from "../../Output.js";
|
|
7
5
|
import { Platform } from "../../Platform.js";
|
|
8
6
|
import { serveRpc } from "../../Rpc.js";
|
|
7
|
+
import { packEnvValueKeepRedacted, unpackEnvValue, } from "../../RuntimeContext.js";
|
|
9
8
|
import * as Server from "../../Server/index.js";
|
|
10
9
|
import { fromCloudflareFetcher, toCloudflareFetcher } from "../Fetcher.js";
|
|
11
10
|
import { DurableObject } from "../Workers/DurableObject.js";
|
|
@@ -44,40 +43,20 @@ export const ContainerPlatform = Platform("Cloudflare.Container", {
|
|
|
44
43
|
env,
|
|
45
44
|
set: (bindingId, output) => Effect.sync(() => {
|
|
46
45
|
const key = bindingId.replaceAll(/[^a-zA-Z0-9]/g, "_");
|
|
47
|
-
//
|
|
48
|
-
//
|
|
46
|
+
// `packEnvValueKeepRedacted` keeps the Redacted wrapper on the
|
|
47
|
+
// outside so the provider can deploy secrets through the
|
|
49
48
|
// Secrets Store (referenced via `secrets`) instead of leaking
|
|
50
|
-
// them as plain `environmentVariables
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
env[key] = output.pipe(Output.map(
|
|
55
|
-
? Redacted.make(JSON.stringify({
|
|
56
|
-
_tag: "Redacted",
|
|
57
|
-
value: Redacted.value(value),
|
|
58
|
-
}))
|
|
59
|
-
: JSON.stringify(value)));
|
|
49
|
+
// them as plain `environmentVariables`, while the inner marker
|
|
50
|
+
// lets the runtime `get` accessor rebuild the wrapper after
|
|
51
|
+
// Cloudflare hands the value back as a plain env-var string.
|
|
52
|
+
// Mirrors `makeWorkerRuntimeContext`.
|
|
53
|
+
env[key] = output.pipe(Output.map(packEnvValueKeepRedacted));
|
|
60
54
|
return key;
|
|
61
55
|
}),
|
|
62
|
-
get: (key) =>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
// `{_tag: "Redacted", value: ...}`. After JSON.parse the
|
|
67
|
-
// result is a plain object — detect the marker shape and
|
|
68
|
-
// rebuild the Redacted wrapper. Plain values pass through.
|
|
69
|
-
if (typeof parsed === "object" &&
|
|
70
|
-
parsed !== null &&
|
|
71
|
-
parsed._tag === "Redacted" &&
|
|
72
|
-
"value" in parsed) {
|
|
73
|
-
return Redacted.make(parsed.value);
|
|
74
|
-
}
|
|
75
|
-
return parsed;
|
|
76
|
-
},
|
|
77
|
-
catch: (error) => error,
|
|
78
|
-
})), Effect.catch((cause) => Effect.die(new Error(`Failed to get environment variable: ${key}`, {
|
|
79
|
-
cause,
|
|
80
|
-
})))),
|
|
56
|
+
get: (key) =>
|
|
57
|
+
// Read straight from `process.env` — see `unpackEnvValue` for why
|
|
58
|
+
// this must never resolve through `Config.string`.
|
|
59
|
+
Effect.sync(() => unpackEnvValue(process.env[key])),
|
|
81
60
|
run: ((effect) => Effect.sync(() => {
|
|
82
61
|
runners.push(effect);
|
|
83
62
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerPlatform.js","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/ContainerPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"ContainerPlatform.js","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/ContainerPlatform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import type * as HttpClient from "effect/unstable/http/HttpClient";
|
|
3
|
+
import type { Credentials } from "../Credentials.ts";
|
|
4
|
+
import { type QueryDatabaseClient } from "./QueryDatabase.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Injectable auth shared by the Local (current-credentials) impl and a future
|
|
7
|
+
* Http (scoped-token) impl. `authorize` discharges the
|
|
8
|
+
* `Credentials | HttpClient` requirement of a distilled op; `accountId` is the
|
|
9
|
+
* Cloudflare account the ops run against.
|
|
10
|
+
*/
|
|
11
|
+
export interface D1Auth {
|
|
12
|
+
authorize: <A, E>(eff: Effect.Effect<A, E, Credentials | HttpClient.HttpClient>) => Effect.Effect<A, E>;
|
|
13
|
+
accountId: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Build a {@link QueryDatabaseClient} over the D1 HTTP query API.
|
|
17
|
+
*
|
|
18
|
+
* `databaseId` is an Effect so the resolution stays deferred to each call —
|
|
19
|
+
* inside an Action it resolves through the apply-time RuntimeContext. The
|
|
20
|
+
* credentials are provided ONLY around the distilled op (via `auth.authorize`),
|
|
21
|
+
* never around the id accessor, matching the KV / Vectorize Local variants.
|
|
22
|
+
*/
|
|
23
|
+
export declare const makeHttpQueryDatabaseClient: (auth: D1Auth, databaseId: Effect.Effect<string>) => QueryDatabaseClient;
|
|
24
|
+
//# sourceMappingURL=QueryDatabaseHttpClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryDatabaseHttpClient.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/D1/QueryDatabaseHttpClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAa5B;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EACd,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,SAChC,MAAM,cACA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAChC,mBAeF,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import * as d1 from "@distilled.cloud/cloudflare/d1";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { PreparedStatement, } from "./QueryDatabase.js";
|
|
4
|
+
/**
|
|
5
|
+
* Build a {@link QueryDatabaseClient} over the D1 HTTP query API.
|
|
6
|
+
*
|
|
7
|
+
* `databaseId` is an Effect so the resolution stays deferred to each call —
|
|
8
|
+
* inside an Action it resolves through the apply-time RuntimeContext. The
|
|
9
|
+
* credentials are provided ONLY around the distilled op (via `auth.authorize`),
|
|
10
|
+
* never around the id accessor, matching the KV / Vectorize Local variants.
|
|
11
|
+
*/
|
|
12
|
+
export const makeHttpQueryDatabaseClient = (auth, databaseId) => {
|
|
13
|
+
const rawEff = Effect.map(databaseId, (id) => makeHttpD1Database(auth, id));
|
|
14
|
+
return {
|
|
15
|
+
raw: rawEff,
|
|
16
|
+
prepare: (query) => new PreparedStatement(query, [], rawEff),
|
|
17
|
+
exec: (query) => Effect.flatMap(rawEff, (raw) => Effect.promise(() => raw.exec(query))),
|
|
18
|
+
batch: (statements) => Effect.flatMap(rawEff, (raw) => Effect.promise(() => raw.batch(statements.map((s) => s._build(raw))))),
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
const runQuery = (auth, databaseId, body) => auth
|
|
22
|
+
.authorize(d1.queryDatabase({
|
|
23
|
+
accountId: auth.accountId,
|
|
24
|
+
databaseId,
|
|
25
|
+
...body,
|
|
26
|
+
}))
|
|
27
|
+
.pipe(Effect.runPromise);
|
|
28
|
+
const toResult = (r) => ({
|
|
29
|
+
results: (r?.results ?? []),
|
|
30
|
+
success: r?.success ?? true,
|
|
31
|
+
meta: (r?.meta ?? {}),
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Normalize a bound value the way the native D1 binding does before it reaches
|
|
35
|
+
* SQLite. Over the raw HTTP query API, unlike the Worker binding, values are
|
|
36
|
+
* bound verbatim — a JS `true` would arrive as the string `"true"`. Match the
|
|
37
|
+
* native semantics: booleans become integers (1/0) and binary becomes a byte
|
|
38
|
+
* array (BLOB). `null`, numbers, and strings pass through unchanged.
|
|
39
|
+
*/
|
|
40
|
+
const normalizeBind = (value) => {
|
|
41
|
+
if (typeof value === "boolean")
|
|
42
|
+
return value ? 1 : 0;
|
|
43
|
+
if (value instanceof ArrayBuffer) {
|
|
44
|
+
return Array.from(new Uint8Array(value));
|
|
45
|
+
}
|
|
46
|
+
if (ArrayBuffer.isView(value)) {
|
|
47
|
+
return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
};
|
|
51
|
+
const makeHttpD1Database = (auth, databaseId) => {
|
|
52
|
+
const makeStatement = (query, binds) => {
|
|
53
|
+
const exec = async () => {
|
|
54
|
+
const res = await runQuery(auth, databaseId, {
|
|
55
|
+
sql: query,
|
|
56
|
+
params: binds.length ? binds.map(normalizeBind) : undefined,
|
|
57
|
+
});
|
|
58
|
+
return res.result[0];
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
bind: (...values) => makeStatement(query, values),
|
|
62
|
+
first: (async (column) => {
|
|
63
|
+
const first = (await exec())?.results?.[0];
|
|
64
|
+
if (first == null)
|
|
65
|
+
return null;
|
|
66
|
+
return column !== undefined ? (first[column] ?? null) : first;
|
|
67
|
+
}),
|
|
68
|
+
all: (async () => toResult(await exec())),
|
|
69
|
+
run: (async () => toResult(await exec())),
|
|
70
|
+
raw: (async (options) => {
|
|
71
|
+
const rows = ((await exec())?.results ?? []);
|
|
72
|
+
const arrays = rows.map((row) => Object.values(row));
|
|
73
|
+
if (options?.columnNames && rows[0]) {
|
|
74
|
+
return [Object.keys(rows[0]), ...arrays];
|
|
75
|
+
}
|
|
76
|
+
return arrays;
|
|
77
|
+
}),
|
|
78
|
+
// Carry query + params so `batch` can reconstruct the request.
|
|
79
|
+
__query: query,
|
|
80
|
+
__params: binds,
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
prepare: (query) => makeStatement(query, []),
|
|
85
|
+
exec: async (query) => {
|
|
86
|
+
const res = await runQuery(auth, databaseId, { sql: query });
|
|
87
|
+
const meta = res.result[res.result.length - 1]?.meta;
|
|
88
|
+
return {
|
|
89
|
+
count: res.result.length,
|
|
90
|
+
duration: meta?.duration ?? 0,
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
batch: async (statements) => {
|
|
94
|
+
const res = await runQuery(auth, databaseId, {
|
|
95
|
+
batch: statements.map((s) => ({
|
|
96
|
+
sql: s.__query,
|
|
97
|
+
params: s.__params.length
|
|
98
|
+
? s.__params.map(normalizeBind)
|
|
99
|
+
: undefined,
|
|
100
|
+
})),
|
|
101
|
+
});
|
|
102
|
+
return res.result.map((r) => toResult(r));
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=QueryDatabaseHttpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryDatabaseHttpClient.js","sourceRoot":"","sources":["../../../src/Cloudflare/D1/QueryDatabaseHttpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
import type * as HttpClient from "effect/unstable/http/HttpClient";
|
|
3
|
+
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
4
|
+
import type { Credentials } from "../Credentials.ts";
|
|
5
|
+
import { QueryDatabase } from "./QueryDatabase.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Local implementation of the {@link QueryDatabase} binding — queries D1 over
|
|
8
|
+
* the Cloudflare HTTP API using the **current credentials** instead of a native
|
|
9
|
+
* Worker binding (`QueryDatabaseBinding`) or a scoped API token.
|
|
10
|
+
*
|
|
11
|
+
* Provide it on an {@link Action} (or any deploy-time Effect) so you can talk to
|
|
12
|
+
* a D1 database with the same `prepare`/`exec`/`batch` client you'd use inside a
|
|
13
|
+
* Worker:
|
|
14
|
+
*
|
|
15
|
+
* @example Seeding a database from an Action
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const Seed = Alchemy.Action(
|
|
18
|
+
* "Seed",
|
|
19
|
+
* Effect.gen(function* () {
|
|
20
|
+
* const db = yield* Cloudflare.D1.QueryDatabase(database);
|
|
21
|
+
* return Effect.fn(function* () {
|
|
22
|
+
* yield* db.exec("CREATE TABLE IF NOT EXISTS users (id TEXT, name TEXT)");
|
|
23
|
+
* yield* db
|
|
24
|
+
* .prepare("INSERT INTO users (id, name) VALUES (?, ?)")
|
|
25
|
+
* .bind("1", "Ada")
|
|
26
|
+
* .run();
|
|
27
|
+
* });
|
|
28
|
+
* }).pipe(Effect.provide(Cloudflare.D1.QueryDatabaseLocal)),
|
|
29
|
+
* );
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* The database id is resolved at apply time through the ambient
|
|
33
|
+
* {@link RuntimeContext} (in an Action, that's the resolve context the engine
|
|
34
|
+
* provides around the body), so `QueryDatabase(database)` works even though the
|
|
35
|
+
* database is created in the same deploy.
|
|
36
|
+
*/
|
|
37
|
+
export declare const QueryDatabaseLocal: Layer.Layer<QueryDatabase, never, CloudflareEnvironment | Credentials | HttpClient.HttpClient>;
|
|
38
|
+
//# sourceMappingURL=QueryDatabaseLocal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryDatabaseLocal.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/D1/QueryDatabaseLocal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,kBAAkB,gGAsB9B,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
|
|
4
|
+
import { QueryDatabase } from "./QueryDatabase.js";
|
|
5
|
+
import { makeHttpQueryDatabaseClient, } from "./QueryDatabaseHttpClient.js";
|
|
6
|
+
/**
|
|
7
|
+
* Local implementation of the {@link QueryDatabase} binding — queries D1 over
|
|
8
|
+
* the Cloudflare HTTP API using the **current credentials** instead of a native
|
|
9
|
+
* Worker binding (`QueryDatabaseBinding`) or a scoped API token.
|
|
10
|
+
*
|
|
11
|
+
* Provide it on an {@link Action} (or any deploy-time Effect) so you can talk to
|
|
12
|
+
* a D1 database with the same `prepare`/`exec`/`batch` client you'd use inside a
|
|
13
|
+
* Worker:
|
|
14
|
+
*
|
|
15
|
+
* @example Seeding a database from an Action
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const Seed = Alchemy.Action(
|
|
18
|
+
* "Seed",
|
|
19
|
+
* Effect.gen(function* () {
|
|
20
|
+
* const db = yield* Cloudflare.D1.QueryDatabase(database);
|
|
21
|
+
* return Effect.fn(function* () {
|
|
22
|
+
* yield* db.exec("CREATE TABLE IF NOT EXISTS users (id TEXT, name TEXT)");
|
|
23
|
+
* yield* db
|
|
24
|
+
* .prepare("INSERT INTO users (id, name) VALUES (?, ?)")
|
|
25
|
+
* .bind("1", "Ada")
|
|
26
|
+
* .run();
|
|
27
|
+
* });
|
|
28
|
+
* }).pipe(Effect.provide(Cloudflare.D1.QueryDatabaseLocal)),
|
|
29
|
+
* );
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* The database id is resolved at apply time through the ambient
|
|
33
|
+
* {@link RuntimeContext} (in an Action, that's the resolve context the engine
|
|
34
|
+
* provides around the body), so `QueryDatabase(database)` works even though the
|
|
35
|
+
* database is created in the same deploy.
|
|
36
|
+
*/
|
|
37
|
+
export const QueryDatabaseLocal = Layer.effect(QueryDatabase, Effect.gen(function* () {
|
|
38
|
+
// Account + credentials are ambient during stack-eval (the stack's
|
|
39
|
+
// providers layer). Capture the full context so the HTTP query ops run
|
|
40
|
+
// with the current credentials — no `host.bind`, no minted token.
|
|
41
|
+
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
42
|
+
const context = yield* Effect.context();
|
|
43
|
+
const auth = {
|
|
44
|
+
authorize: (eff) => eff.pipe(Effect.provideContext(context)),
|
|
45
|
+
accountId,
|
|
46
|
+
};
|
|
47
|
+
return Effect.fn(function* (database) {
|
|
48
|
+
// Deferred accessor — resolves the databaseId against the tracker at
|
|
49
|
+
// apply time. No `host.bind`: the local variant registers no binding.
|
|
50
|
+
const databaseId = yield* database.databaseId;
|
|
51
|
+
return makeHttpQueryDatabaseClient(auth, databaseId);
|
|
52
|
+
});
|
|
53
|
+
}));
|
|
54
|
+
//# sourceMappingURL=QueryDatabaseLocal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryDatabaseLocal.js","sourceRoot":"","sources":["../../../src/Cloudflare/D1/QueryDatabaseLocal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAEL,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAC5C,aAAa,EACb,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,mEAAmE;IACnE,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAElC,CAAC;IACJ,MAAM,IAAI,GAAW;QACnB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5D,SAAS;KACV,CAAC;IAEF,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAkB;QAC5C,qEAAqE;QACrE,sEAAsE;QACtE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,OAAO,2BAA2B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/D1/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/D1/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/D1/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/D1/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import type * as Redacted from "effect/Redacted";
|
|
3
|
+
import type * as HttpClient from "effect/unstable/http/HttpClient";
|
|
4
|
+
import type { RuntimeContext } from "../../RuntimeContext.ts";
|
|
3
5
|
import { Self } from "../../Self.ts";
|
|
4
6
|
import type { PermissionGroupRef } from "../ApiToken/Common.ts";
|
|
7
|
+
import type { Credentials } from "../Credentials.ts";
|
|
5
8
|
import type { Zone } from "../Zone/Zone.ts";
|
|
6
9
|
/**
|
|
7
10
|
* Shared scaffolding for the HTTP-backed DNS bindings.
|
|
@@ -18,11 +21,23 @@ import type { Zone } from "../Zone/Zone.ts";
|
|
|
18
21
|
*/
|
|
19
22
|
export declare const makeHttpDnsBinding: <Client>(options: {
|
|
20
23
|
permissionGroups: PermissionGroupRef[];
|
|
21
|
-
makeClient: (
|
|
24
|
+
makeClient: (auth: DnsAuth, zoneId: Effect.Effect<string>) => Client;
|
|
22
25
|
}) => Effect.Effect<(zone: Zone) => Effect.Effect<Client, never, never>, never, Self<{
|
|
23
26
|
Type: string;
|
|
24
27
|
LogicalId: string;
|
|
25
28
|
}>>;
|
|
29
|
+
/**
|
|
30
|
+
* Injectable auth for the DNS HTTP client builders. Both the scoped-token
|
|
31
|
+
* (`*Http`) and current-credentials (`*Local`) variants supply an `authorize`
|
|
32
|
+
* that provides `Credentials` + `HttpClient` to a raw SDK op, so the client
|
|
33
|
+
* builders are agnostic to how creds are obtained. DNS record ops are
|
|
34
|
+
* zone-scoped (the `zoneId` is passed alongside), so no `accountId` is needed.
|
|
35
|
+
*/
|
|
36
|
+
export interface DnsAuth {
|
|
37
|
+
authorize: <A, E>(eff: Effect.Effect<A, E, Credentials | HttpClient.HttpClient>) => Effect.Effect<A, E, RuntimeContext>;
|
|
38
|
+
}
|
|
39
|
+
/** Build a scoped-token {@link DnsAuth} from a bound {@link Token}. */
|
|
40
|
+
export declare const makeDnsAuth: (token: Token) => DnsAuth;
|
|
26
41
|
/**
|
|
27
42
|
* Runtime accessor for a DNS binding's token, obtained by binding the
|
|
28
43
|
* {@link AccountApiToken}'s `value` output in the Worker's Init phase. Reads the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DnsHttp.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/DnsHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"DnsHttp.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/DnsHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,WAAW;IAClD,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;CACtE;;;GAgCG,CAAC;AAEL;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EACd,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;CAC1C;AAED,uEAAuE;AACvE,eAAO,MAAM,WAAW,UAAW,KAAK,KAAG,OAEzC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD"}
|
|
@@ -2,6 +2,7 @@ import * as Effect from "effect/Effect";
|
|
|
2
2
|
import * as Output from "../../Output.js";
|
|
3
3
|
import { Self } from "../../Self.js";
|
|
4
4
|
import { AccountApiToken } from "../ApiToken/AccountApiToken.js";
|
|
5
|
+
import { authorizeWith } from "../HttpClientUtils.js";
|
|
5
6
|
/**
|
|
6
7
|
* Shared scaffolding for the HTTP-backed DNS bindings.
|
|
7
8
|
*
|
|
@@ -37,7 +38,11 @@ export const makeHttpDnsBinding = (options) => Effect.gen(function* () {
|
|
|
37
38
|
value: yield* token.value,
|
|
38
39
|
};
|
|
39
40
|
const zoneId = yield* zone.zoneId;
|
|
40
|
-
return options.makeClient(bound, zoneId);
|
|
41
|
+
return options.makeClient(makeDnsAuth(bound), zoneId);
|
|
41
42
|
});
|
|
42
43
|
});
|
|
44
|
+
/** Build a scoped-token {@link DnsAuth} from a bound {@link Token}. */
|
|
45
|
+
export const makeDnsAuth = (token) => ({
|
|
46
|
+
authorize: authorizeWith(token),
|
|
47
|
+
});
|
|
43
48
|
//# sourceMappingURL=DnsHttp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DnsHttp.js","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/DnsHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"DnsHttp.js","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/DnsHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAS,OAG1C,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC;IAEzB,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAU;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;YACpC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,CAAC;gBAC5C,QAAQ,EAAE;oBACR;wBACE,MAAM,EAAE,OAAO;wBACf,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;wBAC1C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CACzB,MAAM,CAAC,OAAO,CACZ,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,WAAW,CAAA,mCAAmC,MAAM,EAAE,CAChE,EACD,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;4BACtB,CAAC,MAAM,CAAC,EAAE,GAAG;yBACd,CAAC,CAAC,CACJ;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,GAAG;YACZ,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK;SACV,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC,OAAO,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAeL,uEAAuE;AACvE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,CAAC;IACrD,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC;CAChC,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import type * as HttpClient from "effect/unstable/http/HttpClient";
|
|
3
|
+
import type { Credentials } from "../Credentials.ts";
|
|
4
|
+
import type { Zone } from "../Zone/Zone.ts";
|
|
5
|
+
import type { DnsAuth } from "./DnsHttp.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Shared scaffolding for the `*Local` DNS services.
|
|
8
|
+
*
|
|
9
|
+
* Instead of minting a scoped {@link AccountApiToken} (the `*Http` path), it
|
|
10
|
+
* captures the ambient current-credentials context available during stack-eval
|
|
11
|
+
* and builds a {@link DnsAuth} that provides those credentials directly to the
|
|
12
|
+
* DNS HTTP ops. It then delegates to the same client builders the `*Http`
|
|
13
|
+
* variant uses. DNS is a zone-management capability with no native Worker
|
|
14
|
+
* binding, so there is no `*Binding` counterpart.
|
|
15
|
+
*
|
|
16
|
+
* NOT exported from `index.ts` — this is internal scaffolding shared by the
|
|
17
|
+
* three access-level Local layers.
|
|
18
|
+
*/
|
|
19
|
+
export declare const makeLocalDnsBinding: <Client>(options: {
|
|
20
|
+
makeClient: (auth: DnsAuth, zoneId: Effect.Effect<string>) => Client;
|
|
21
|
+
}) => Effect.Effect<(zone: Zone) => Effect.Effect<Client, never, never>, never, Credentials | HttpClient.HttpClient>;
|
|
22
|
+
//# sourceMappingURL=DnsLocal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsLocal.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/DnsLocal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,WAAW;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;CACtE,mHAmBG,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
/**
|
|
3
|
+
* Shared scaffolding for the `*Local` DNS services.
|
|
4
|
+
*
|
|
5
|
+
* Instead of minting a scoped {@link AccountApiToken} (the `*Http` path), it
|
|
6
|
+
* captures the ambient current-credentials context available during stack-eval
|
|
7
|
+
* and builds a {@link DnsAuth} that provides those credentials directly to the
|
|
8
|
+
* DNS HTTP ops. It then delegates to the same client builders the `*Http`
|
|
9
|
+
* variant uses. DNS is a zone-management capability with no native Worker
|
|
10
|
+
* binding, so there is no `*Binding` counterpart.
|
|
11
|
+
*
|
|
12
|
+
* NOT exported from `index.ts` — this is internal scaffolding shared by the
|
|
13
|
+
* three access-level Local layers.
|
|
14
|
+
*/
|
|
15
|
+
export const makeLocalDnsBinding = (options) => Effect.gen(function* () {
|
|
16
|
+
// Credentials are ambient during stack-eval (the stack's providers layer).
|
|
17
|
+
// Capture the full context so DNS HTTP ops can run with the current
|
|
18
|
+
// credentials — no `host.bind`, no minted token. DNS record ops are
|
|
19
|
+
// zone-scoped, so no accountId is needed.
|
|
20
|
+
const context = yield* Effect.context();
|
|
21
|
+
return Effect.fn(function* (zone) {
|
|
22
|
+
// Deferred accessor — resolves the zoneId against the tracker at apply
|
|
23
|
+
// time (in an Action, that's the engine's resolve context).
|
|
24
|
+
const zoneId = yield* zone.zoneId;
|
|
25
|
+
const auth = {
|
|
26
|
+
authorize: (eff) => eff.pipe(Effect.provideContext(context)),
|
|
27
|
+
};
|
|
28
|
+
return options.makeClient(auth, zoneId);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=DnsLocal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsLocal.js","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/DnsLocal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAS,OAE3C,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,2EAA2E;IAC3E,oEAAoE;IACpE,oEAAoE;IACpE,0CAA0C;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAElC,CAAC;IAEJ,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAU;QACpC,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAY;YACpB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SAC7D,CAAC;QACF,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Layer from "effect/Layer";
|
|
3
|
-
import { type
|
|
3
|
+
import { type DnsAuth } from "./DnsHttp.ts";
|
|
4
4
|
import { ReadDns, type ReadDnsClient } from "./ReadDns.ts";
|
|
5
5
|
/** Runtime layer for {@link ReadDns}. */
|
|
6
6
|
export declare const ReadDnsHttp: Layer.Layer<ReadDns, never, import("../../Self.ts").Self<{
|
|
7
7
|
Type: string;
|
|
8
8
|
LogicalId: string;
|
|
9
9
|
}>>;
|
|
10
|
-
/** Build the read-only client over
|
|
11
|
-
export declare const dnsReadClient: (
|
|
10
|
+
/** Build the read-only client over an injectable auth and zone id. */
|
|
11
|
+
export declare const dnsReadClient: (auth: DnsAuth, zoneId: Effect.Effect<string>) => ReadDnsClient;
|
|
12
12
|
//# sourceMappingURL=ReadDnsHttp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadDnsHttp.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/ReadDnsHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ReadDnsHttp.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/ReadDnsHttp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,OAAO,EAAsB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAE3D,yCAAyC;AACzC,eAAO,MAAM,WAAW;;;GAQvB,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,aAAa,SAClB,OAAO,UACL,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAC5B,aAkBF,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as dns from "@distilled.cloud/cloudflare/dns";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import * as Layer from "effect/Layer";
|
|
4
|
-
import { authorizeWith } from "../HttpClientUtils.js";
|
|
5
4
|
import { makeHttpDnsBinding } from "./DnsHttp.js";
|
|
6
5
|
import { ReadDns } from "./ReadDns.js";
|
|
7
6
|
/** Runtime layer for {@link ReadDns}. */
|
|
@@ -9,9 +8,9 @@ export const ReadDnsHttp = Layer.effect(ReadDns, Effect.suspend(() => makeHttpDn
|
|
|
9
8
|
permissionGroups: ["DNS Read"],
|
|
10
9
|
makeClient: dnsReadClient,
|
|
11
10
|
})));
|
|
12
|
-
/** Build the read-only client over
|
|
13
|
-
export const dnsReadClient = (
|
|
14
|
-
const authorize =
|
|
11
|
+
/** Build the read-only client over an injectable auth and zone id. */
|
|
12
|
+
export const dnsReadClient = (auth, zoneId) => {
|
|
13
|
+
const authorize = auth.authorize;
|
|
15
14
|
return {
|
|
16
15
|
getDnsRecord: Effect.fn("Cloudflare.DNS.getDnsRecord")(function* (dnsRecordId) {
|
|
17
16
|
return yield* authorize(dns.getRecord({ zoneId: yield* zoneId, dnsRecordId }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadDnsHttp.js","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/ReadDnsHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"ReadDnsHttp.js","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/ReadDnsHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAgB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAsB,MAAM,cAAc,CAAC;AAE3D,yCAAyC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CACrC,OAAO,EACP,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,kBAAkB,CAAC;IACjB,gBAAgB,EAAE,CAAC,UAAU,CAAC;IAC9B,UAAU,EAAE,aAAa;CAC1B,CAAC,CACH,CACF,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAa,EACb,MAA6B,EACd,EAAE;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,6BAA6B,CAAC,CACpD,QAAQ,CAAC,EAAE,WAAW;YACpB,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CACtD,CAAC;QACJ,CAAC,CACF;QACD,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,+BAA+B,CAAC,CACxD,QAAQ,CAAC,EAAE,OAAO;YAChB,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CACvD,CAAC;QACJ,CAAC,CACF;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
import { ReadDns } from "./ReadDns.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Local implementation of the {@link ReadDns} binding — reads Cloudflare DNS
|
|
5
|
+
* records over the HTTP API using the **current credentials** instead of a
|
|
6
|
+
* scoped API token ({@link ReadDnsHttp}). DNS is a zone-management capability
|
|
7
|
+
* with no native Worker binding.
|
|
8
|
+
*
|
|
9
|
+
* Provide it on an {@link Action} (or any deploy-time Effect) so you can read a
|
|
10
|
+
* zone's DNS records with the same `getDnsRecord`/`listDnsRecords` client you'd
|
|
11
|
+
* use inside a Worker:
|
|
12
|
+
*
|
|
13
|
+
* @example Reading records from an Action
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const Check = Alchemy.Action(
|
|
16
|
+
* "Check",
|
|
17
|
+
* Effect.gen(function* () {
|
|
18
|
+
* const dns = yield* Cloudflare.DNS.ReadDns(zone);
|
|
19
|
+
* return Effect.fn(function* () {
|
|
20
|
+
* return yield* dns.listDnsRecords({ type: "TXT" });
|
|
21
|
+
* });
|
|
22
|
+
* }).pipe(Effect.provide(Cloudflare.DNS.ReadDnsLocal)),
|
|
23
|
+
* );
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* The zone id is resolved at apply time through the ambient
|
|
27
|
+
* {@link RuntimeContext} (in an Action, that's the resolve context the engine
|
|
28
|
+
* provides around the body), so `ReadDns(zone)` works even though the zone may
|
|
29
|
+
* be created/adopted in the same deploy.
|
|
30
|
+
*/
|
|
31
|
+
export declare const ReadDnsLocal: Layer.Layer<ReadDns, never, import("@distilled.cloud/cloudflare").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
|
|
32
|
+
//# sourceMappingURL=ReadDnsLocal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadDnsLocal.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/DNS/ReadDnsLocal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,YAAY,uIAGxB,CAAC"}
|