alchemy 2.0.0-beta.34 → 2.0.0-beta.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +8 -7
- package/bin/exec.js +226 -52
- package/bin/exec.js.map +1 -1
- package/lib/AWS/AuthProvider.d.ts +7 -6
- package/lib/AWS/AuthProvider.d.ts.map +1 -1
- package/lib/AWS/AuthProvider.js +143 -134
- package/lib/AWS/AuthProvider.js.map +1 -1
- package/lib/AWS/Bootstrap.d.ts +2 -2
- package/lib/AWS/Bootstrap.d.ts.map +1 -1
- package/lib/AWS/EC2/hosted.d.ts +1 -1
- package/lib/AWS/Environment.d.ts +25 -3
- package/lib/AWS/Environment.d.ts.map +1 -1
- package/lib/AWS/Environment.js +47 -3
- package/lib/AWS/Environment.js.map +1 -1
- package/lib/AWS/IAM/OpenIDConnectProvider.d.ts +14 -6
- package/lib/AWS/IAM/OpenIDConnectProvider.d.ts.map +1 -1
- package/lib/AWS/IAM/OpenIDConnectProvider.js +6 -3
- package/lib/AWS/IAM/OpenIDConnectProvider.js.map +1 -1
- package/lib/AWS/IAM/Policy.d.ts +1 -1
- package/lib/AWS/IAM/Policy.d.ts.map +1 -1
- package/lib/AWS/IAM/Policy.js.map +1 -1
- package/lib/AWS/Lambda/BucketEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/QueueEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/StreamEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/TableEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/TopicEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
- package/lib/AWS/Providers.d.ts +1 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +2 -1
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/Auth/Credentials.d.ts +21 -6
- package/lib/Auth/Credentials.d.ts.map +1 -1
- package/lib/Auth/Credentials.js +30 -31
- package/lib/Auth/Credentials.js.map +1 -1
- package/lib/Auth/Profile.d.ts +31 -34
- package/lib/Auth/Profile.d.ts.map +1 -1
- package/lib/Auth/Profile.js +46 -31
- package/lib/Auth/Profile.js.map +1 -1
- package/lib/Axiom/AuthProvider.d.ts +2 -1
- package/lib/Axiom/AuthProvider.d.ts.map +1 -1
- package/lib/Axiom/AuthProvider.js +149 -143
- package/lib/Axiom/AuthProvider.js.map +1 -1
- package/lib/Axiom/Credentials.d.ts +2 -1
- package/lib/Axiom/Credentials.d.ts.map +1 -1
- package/lib/Axiom/Credentials.js +4 -4
- package/lib/Axiom/Credentials.js.map +1 -1
- package/lib/Axiom/Providers.d.ts +1 -1
- package/lib/Axiom/Providers.d.ts.map +1 -1
- package/lib/Axiom/Providers.js +3 -1
- package/lib/Axiom/Providers.js.map +1 -1
- package/lib/Cli/LoggingCli.d.ts.map +1 -1
- package/lib/Cli/LoggingCli.js +105 -7
- package/lib/Cli/LoggingCli.js.map +1 -1
- package/lib/Cli/checkVersion.d.ts +13 -0
- package/lib/Cli/checkVersion.d.ts.map +1 -0
- package/lib/Cli/checkVersion.js +47 -0
- package/lib/Cli/checkVersion.js.map +1 -0
- package/lib/Cli/commands/_shared.d.ts +2 -2
- package/lib/Cli/commands/_shared.d.ts.map +1 -1
- package/lib/Cli/commands/_shared.js +3 -3
- package/lib/Cli/commands/_shared.js.map +1 -1
- package/lib/Cli/commands/aws.d.ts +6 -0
- package/lib/Cli/commands/aws.d.ts.map +1 -0
- package/lib/Cli/commands/aws.js +63 -0
- package/lib/Cli/commands/aws.js.map +1 -0
- package/lib/Cli/commands/cloudflare.d.ts +17 -0
- package/lib/Cli/commands/cloudflare.d.ts.map +1 -0
- package/lib/Cli/commands/cloudflare.js +111 -0
- package/lib/Cli/commands/cloudflare.js.map +1 -0
- package/lib/Cli/commands/deploy.d.ts +6 -5
- package/lib/Cli/commands/deploy.d.ts.map +1 -1
- package/lib/Cli/commands/deploy.js +10 -10
- package/lib/Cli/commands/deploy.js.map +1 -1
- package/lib/Cli/commands/dev.d.ts.map +1 -1
- package/lib/Cli/commands/dev.js +16 -16
- package/lib/Cli/commands/dev.js.map +1 -1
- package/lib/Cli/commands/login.d.ts +2 -1
- package/lib/Cli/commands/login.d.ts.map +1 -1
- package/lib/Cli/commands/login.js +9 -8
- package/lib/Cli/commands/login.js.map +1 -1
- package/lib/Cli/commands/logs.d.ts +1 -1
- package/lib/Cli/commands/logs.d.ts.map +1 -1
- package/lib/Cli/commands/logs.js +7 -7
- package/lib/Cli/commands/logs.js.map +1 -1
- package/lib/Cli/commands/profile.d.ts +3 -1
- package/lib/Cli/commands/profile.d.ts.map +1 -1
- package/lib/Cli/commands/profile.js +14 -11
- package/lib/Cli/commands/profile.js.map +1 -1
- package/lib/Cli/commands/state.d.ts +1 -1
- package/lib/Cli/commands/state.d.ts.map +1 -1
- package/lib/Cli/commands/state.js +8 -8
- package/lib/Cli/commands/state.js.map +1 -1
- package/lib/Cli/commands/tail.d.ts +1 -1
- package/lib/Cli/commands/tail.d.ts.map +1 -1
- package/lib/Cli/commands/tail.js +7 -7
- package/lib/Cli/commands/tail.js.map +1 -1
- package/lib/Cli/exec.d.ts.map +1 -1
- package/lib/Cli/exec.js +5 -3
- package/lib/Cli/exec.js.map +1 -1
- package/lib/Cli/main.d.ts.map +1 -1
- package/lib/Cli/main.js +17 -5
- package/lib/Cli/main.js.map +1 -1
- package/lib/Cli/selectCli.d.ts +12 -0
- package/lib/Cli/selectCli.d.ts.map +1 -0
- package/lib/Cli/selectCli.js +32 -0
- package/lib/Cli/selectCli.js.map +1 -0
- package/lib/Cloudflare/Auth/AuthProvider.d.ts +2 -1
- package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js +235 -214
- package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
- package/lib/Cloudflare/CloudflareEnvironment.d.ts +2 -1
- package/lib/Cloudflare/CloudflareEnvironment.d.ts.map +1 -1
- package/lib/Cloudflare/CloudflareEnvironment.js +3 -2
- package/lib/Cloudflare/CloudflareEnvironment.js.map +1 -1
- package/lib/Cloudflare/Credentials.d.ts +2 -1
- package/lib/Cloudflare/Credentials.d.ts.map +1 -1
- package/lib/Cloudflare/Credentials.js +4 -4
- package/lib/Cloudflare/Credentials.js.map +1 -1
- package/lib/Cloudflare/D1/D1Clone.d.ts +2 -1
- package/lib/Cloudflare/D1/D1Clone.d.ts.map +1 -1
- package/lib/Cloudflare/D1/D1Database.d.ts +2 -1
- package/lib/Cloudflare/D1/D1Database.d.ts.map +1 -1
- package/lib/Cloudflare/D1/D1Import.d.ts +3 -1
- package/lib/Cloudflare/D1/D1Import.d.ts.map +1 -1
- package/lib/Cloudflare/Local/Sidecar.d.ts +11 -4
- package/lib/Cloudflare/Local/Sidecar.d.ts.map +1 -1
- package/lib/Cloudflare/Local/Sidecar.js +8 -6
- package/lib/Cloudflare/Local/Sidecar.js.map +1 -1
- package/lib/Cloudflare/Local/SidecarHandlers.d.ts.map +1 -1
- package/lib/Cloudflare/Local/SidecarHandlers.js +1 -5
- package/lib/Cloudflare/Local/SidecarHandlers.js.map +1 -1
- package/lib/Cloudflare/Local/SidecarServer.js +5 -2
- package/lib/Cloudflare/Local/SidecarServer.js.map +1 -1
- package/lib/Cloudflare/Logs.d.ts +5 -0
- package/lib/Cloudflare/Logs.d.ts.map +1 -1
- package/lib/Cloudflare/Logs.js +70 -1
- package/lib/Cloudflare/Logs.js.map +1 -1
- package/lib/Cloudflare/Providers.d.ts +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +4 -1
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Queue/Queue.d.ts +1 -1
- package/lib/Cloudflare/Queue/Queue.js +1 -1
- package/lib/Cloudflare/Queue/QueueConsumer.d.ts +6 -2
- package/lib/Cloudflare/Queue/QueueConsumer.d.ts.map +1 -1
- package/lib/Cloudflare/Queue/QueueConsumer.js +194 -53
- package/lib/Cloudflare/Queue/QueueConsumer.js.map +1 -1
- package/lib/Cloudflare/Queue/QueueEventSource.d.ts +106 -0
- package/lib/Cloudflare/Queue/QueueEventSource.d.ts.map +1 -0
- package/lib/Cloudflare/Queue/QueueEventSource.js +145 -0
- package/lib/Cloudflare/Queue/QueueEventSource.js.map +1 -0
- package/lib/Cloudflare/Queue/index.d.ts +1 -0
- package/lib/Cloudflare/Queue/index.d.ts.map +1 -1
- package/lib/Cloudflare/Queue/index.js +1 -0
- package/lib/Cloudflare/Queue/index.js.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.d.ts +94 -0
- package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.js +186 -2
- package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts +4 -3
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/State.js +16 -8
- package/lib/Cloudflare/StateStore/State.js.map +1 -1
- package/lib/Cloudflare/VpcService/VpcServiceRef.d.ts +1 -1
- package/lib/Cloudflare/VpcService/VpcServiceRef.d.ts.map +1 -1
- package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
- package/lib/Cloudflare/Website/StaticSite.js +10 -1
- package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
- package/lib/Cloudflare/Workers/Assets.d.ts +1 -1
- package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +11 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +9 -7
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +62 -142
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts +2 -0
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.js +21 -7
- package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
- package/lib/Cloudflare/Zone.d.ts +14 -0
- package/lib/Cloudflare/Zone.d.ts.map +1 -0
- package/lib/Cloudflare/Zone.js +44 -0
- package/lib/Cloudflare/Zone.js.map +1 -0
- package/lib/Drizzle/Schema.d.ts.map +1 -1
- package/lib/Drizzle/Schema.js +20 -5
- package/lib/Drizzle/Schema.js.map +1 -1
- package/lib/GitHub/AuthProvider.d.ts +3 -1
- package/lib/GitHub/AuthProvider.d.ts.map +1 -1
- package/lib/GitHub/AuthProvider.js +114 -108
- package/lib/GitHub/AuthProvider.js.map +1 -1
- package/lib/GitHub/Credentials.d.ts +2 -1
- package/lib/GitHub/Credentials.d.ts.map +1 -1
- package/lib/GitHub/Credentials.js +4 -4
- package/lib/GitHub/Credentials.js.map +1 -1
- package/lib/GitHub/Providers.d.ts +1 -1
- package/lib/GitHub/Providers.d.ts.map +1 -1
- package/lib/GitHub/Providers.js +3 -1
- package/lib/GitHub/Providers.js.map +1 -1
- package/lib/GitHub/Secrets.d.ts.map +1 -1
- package/lib/GitHub/Secrets.js +14 -1
- package/lib/GitHub/Secrets.js.map +1 -1
- package/lib/GitHub/Variables.d.ts +40 -0
- package/lib/GitHub/Variables.d.ts.map +1 -0
- package/lib/GitHub/Variables.js +28 -0
- package/lib/GitHub/Variables.js.map +1 -0
- package/lib/GitHub/index.d.ts +1 -0
- package/lib/GitHub/index.d.ts.map +1 -1
- package/lib/GitHub/index.js +1 -0
- package/lib/GitHub/index.js.map +1 -1
- package/lib/Neon/AuthProvider.d.ts +3 -1
- package/lib/Neon/AuthProvider.d.ts.map +1 -1
- package/lib/Neon/AuthProvider.js +87 -80
- package/lib/Neon/AuthProvider.js.map +1 -1
- package/lib/Neon/Credentials.d.ts +2 -1
- package/lib/Neon/Credentials.d.ts.map +1 -1
- package/lib/Neon/Credentials.js +4 -4
- package/lib/Neon/Credentials.js.map +1 -1
- package/lib/Neon/NeonEnvironment.d.ts +2 -1
- package/lib/Neon/NeonEnvironment.d.ts.map +1 -1
- package/lib/Neon/NeonEnvironment.js +3 -2
- package/lib/Neon/NeonEnvironment.js.map +1 -1
- package/lib/Neon/Project.d.ts +16 -0
- package/lib/Neon/Project.d.ts.map +1 -1
- package/lib/Neon/Project.js +25 -0
- package/lib/Neon/Project.js.map +1 -1
- package/lib/Neon/Providers.d.ts +1 -1
- package/lib/Neon/Providers.d.ts.map +1 -1
- package/lib/Neon/Providers.js +3 -1
- package/lib/Neon/Providers.js.map +1 -1
- package/lib/Neon/api.d.ts +1 -0
- package/lib/Neon/api.d.ts.map +1 -1
- package/lib/Neon/api.js +1 -0
- package/lib/Neon/api.js.map +1 -1
- package/lib/Sidecar/RpcClient.d.ts.map +1 -1
- package/lib/Sidecar/RpcClient.js +8 -5
- package/lib/Sidecar/RpcClient.js.map +1 -1
- package/lib/Sidecar/RpcPaths.d.ts +5 -0
- package/lib/Sidecar/RpcPaths.d.ts.map +1 -1
- package/lib/Sidecar/RpcPaths.js +10 -1
- package/lib/Sidecar/RpcPaths.js.map +1 -1
- package/lib/Sidecar/RpcServer.d.ts +24 -4
- package/lib/Sidecar/RpcServer.d.ts.map +1 -1
- package/lib/Sidecar/RpcServer.js +70 -15
- package/lib/Sidecar/RpcServer.js.map +1 -1
- package/lib/Sidecar/RpcServerBun.d.ts +4 -0
- package/lib/Sidecar/RpcServerBun.d.ts.map +1 -0
- package/lib/Sidecar/RpcServerBun.js +28 -0
- package/lib/Sidecar/RpcServerBun.js.map +1 -0
- package/lib/Sidecar/RpcServerNode.d.ts +4 -0
- package/lib/Sidecar/RpcServerNode.d.ts.map +1 -0
- package/lib/Sidecar/RpcServerNode.js +39 -0
- package/lib/Sidecar/RpcServerNode.js.map +1 -0
- package/lib/Sidecar/RpcServices.d.ts +6 -0
- package/lib/Sidecar/RpcServices.d.ts.map +1 -0
- package/lib/Sidecar/RpcServices.js +29 -0
- package/lib/Sidecar/RpcServices.js.map +1 -0
- package/lib/Stack.d.ts +5 -3
- package/lib/Stack.d.ts.map +1 -1
- package/lib/Stack.js +3 -1
- package/lib/Stack.js.map +1 -1
- package/lib/Test/Core.d.ts.map +1 -1
- package/lib/Test/Core.js +5 -4
- package/lib/Test/Core.js.map +1 -1
- package/lib/Util/PlatformServices.js +1 -1
- package/lib/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +15 -12
- package/src/AWS/AuthProvider.ts +269 -259
- package/src/AWS/Environment.ts +57 -3
- package/src/AWS/IAM/OpenIDConnectProvider.ts +19 -8
- package/src/AWS/IAM/Policy.ts +1 -1
- package/src/AWS/Providers.ts +2 -0
- package/src/Auth/Credentials.ts +82 -46
- package/src/Auth/Profile.ts +123 -69
- package/src/Axiom/AuthProvider.ts +263 -255
- package/src/Axiom/Credentials.ts +3 -4
- package/src/Axiom/Providers.ts +4 -0
- package/src/Cli/LoggingCli.ts +127 -11
- package/src/Cli/checkVersion.ts +57 -0
- package/src/Cli/commands/_shared.ts +4 -4
- package/src/Cli/commands/aws.ts +127 -0
- package/src/Cli/commands/cloudflare.ts +222 -0
- package/src/Cli/commands/deploy.ts +11 -10
- package/src/Cli/commands/dev.ts +28 -33
- package/src/Cli/commands/login.ts +9 -12
- package/src/Cli/commands/logs.ts +8 -8
- package/src/Cli/commands/profile.ts +14 -16
- package/src/Cli/commands/state.ts +8 -8
- package/src/Cli/commands/tail.ts +8 -8
- package/src/Cli/exec.ts +7 -3
- package/src/Cli/main.ts +20 -5
- package/src/Cli/selectCli.ts +33 -0
- package/src/Cloudflare/Auth/AuthProvider.ts +445 -430
- package/src/Cloudflare/CloudflareEnvironment.ts +3 -2
- package/src/Cloudflare/Credentials.ts +3 -4
- package/src/Cloudflare/Local/Sidecar.ts +13 -10
- package/src/Cloudflare/Local/SidecarHandlers.ts +8 -13
- package/src/Cloudflare/Local/SidecarServer.ts +6 -1
- package/src/Cloudflare/Logs.ts +115 -1
- package/src/Cloudflare/Providers.ts +6 -0
- package/src/Cloudflare/Queue/Queue.ts +1 -1
- package/src/Cloudflare/Queue/QueueConsumer.ts +262 -60
- package/src/Cloudflare/Queue/QueueEventSource.ts +234 -0
- package/src/Cloudflare/Queue/index.ts +1 -0
- package/src/Cloudflare/R2/R2Bucket.ts +337 -2
- package/src/Cloudflare/StateStore/State.ts +25 -16
- package/src/Cloudflare/Website/StaticSite.ts +11 -1
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +9 -1
- package/src/Cloudflare/Workers/Worker.ts +83 -203
- package/src/Cloudflare/Workers/WorkerBundle.ts +38 -12
- package/src/Cloudflare/Zone.ts +88 -0
- package/src/Drizzle/Schema.ts +21 -5
- package/src/GitHub/AuthProvider.ts +221 -217
- package/src/GitHub/Credentials.ts +3 -4
- package/src/GitHub/Providers.ts +4 -0
- package/src/GitHub/Secrets.ts +25 -1
- package/src/GitHub/Variables.ts +54 -0
- package/src/GitHub/index.ts +1 -0
- package/src/Neon/AuthProvider.ts +160 -154
- package/src/Neon/Credentials.ts +3 -4
- package/src/Neon/NeonEnvironment.ts +3 -2
- package/src/Neon/Project.ts +42 -0
- package/src/Neon/Providers.ts +4 -0
- package/src/Neon/api.ts +2 -0
- package/src/Sidecar/RpcClient.ts +8 -7
- package/src/Sidecar/RpcPaths.ts +11 -1
- package/src/Sidecar/RpcServer.ts +97 -24
- package/src/Sidecar/RpcServerBun.ts +41 -0
- package/src/Sidecar/RpcServerNode.ts +51 -0
- package/src/Sidecar/RpcServices.ts +48 -0
- package/src/Stack.ts +8 -0
- package/src/Test/Core.ts +10 -4
- package/src/Util/PlatformServices.ts +1 -1
- package/lib/Cli/commands/bootstrap.d.ts +0 -20
- package/lib/Cli/commands/bootstrap.d.ts.map +0 -1
- package/lib/Cli/commands/bootstrap.js +0 -107
- package/lib/Cli/commands/bootstrap.js.map +0 -1
- package/lib/Sidecar/RpcTransport.d.ts +0 -22
- package/lib/Sidecar/RpcTransport.d.ts.map +0 -1
- package/lib/Sidecar/RpcTransport.js +0 -81
- package/lib/Sidecar/RpcTransport.js.map +0 -1
- package/lib/Test/TestCli.d.ts +0 -19
- package/lib/Test/TestCli.d.ts.map +0 -1
- package/lib/Test/TestCli.js +0 -175
- package/lib/Test/TestCli.js.map +0 -1
- package/src/Cli/commands/bootstrap.ts +0 -216
- package/src/Sidecar/RpcTransport.ts +0 -85
- package/src/Test/TestCli.ts +0 -221
|
@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";
|
|
|
4
4
|
import * as Layer from "effect/Layer";
|
|
5
5
|
import * as Option from "effect/Option";
|
|
6
6
|
import { getAuthProvider } from "../Auth/AuthProvider.ts";
|
|
7
|
-
import { ALCHEMY_PROFILE,
|
|
7
|
+
import { ALCHEMY_PROFILE, Profile } from "../Auth/Profile.ts";
|
|
8
8
|
import {
|
|
9
9
|
CLOUDFLARE_AUTH_PROVIDER_NAME,
|
|
10
10
|
type CloudflareAuthConfig,
|
|
@@ -34,6 +34,7 @@ export const fromProfile = () =>
|
|
|
34
34
|
Layer.effect(
|
|
35
35
|
CloudflareEnvironment,
|
|
36
36
|
Effect.gen(function* () {
|
|
37
|
+
const profile = yield* Profile;
|
|
37
38
|
const auth = yield* getAuthProvider<
|
|
38
39
|
CloudflareAuthConfig,
|
|
39
40
|
CloudflareResolvedCredentials
|
|
@@ -43,7 +44,7 @@ export const fromProfile = () =>
|
|
|
43
44
|
// `loadOrConfigure` reads the persisted config under the canonical
|
|
44
45
|
// provider name (`Cloudflare`); only runs `configure` (and persists the
|
|
45
46
|
// result) if no stored config exists.
|
|
46
|
-
const config = yield* loadOrConfigure(auth, profileName, { ci });
|
|
47
|
+
const config = yield* profile.loadOrConfigure(auth, profileName, { ci });
|
|
47
48
|
return yield* auth.read(profileName, config as CloudflareAuthConfig);
|
|
48
49
|
}),
|
|
49
50
|
);
|
|
@@ -11,7 +11,7 @@ import * as Layer from "effect/Layer";
|
|
|
11
11
|
import * as Match from "effect/Match";
|
|
12
12
|
import * as Redacted from "effect/Redacted";
|
|
13
13
|
import { getAuthProvider } from "../Auth/AuthProvider.ts";
|
|
14
|
-
import { ALCHEMY_PROFILE,
|
|
14
|
+
import { ALCHEMY_PROFILE, Profile } from "../Auth/Profile.ts";
|
|
15
15
|
import {
|
|
16
16
|
CLOUDFLARE_AUTH_PROVIDER_NAME,
|
|
17
17
|
type CloudflareAuthConfig,
|
|
@@ -29,15 +29,15 @@ export const fromAuthProvider = () =>
|
|
|
29
29
|
Layer.effect(
|
|
30
30
|
Credentials,
|
|
31
31
|
Effect.gen(function* () {
|
|
32
|
+
const profile = yield* Profile;
|
|
32
33
|
const auth = yield* getAuthProvider<
|
|
33
34
|
CloudflareAuthConfig,
|
|
34
35
|
CloudflareResolvedCredentials
|
|
35
36
|
>(CLOUDFLARE_AUTH_PROVIDER_NAME);
|
|
36
37
|
const profileName = yield* ALCHEMY_PROFILE;
|
|
37
38
|
const ci = yield* Config.boolean("CI").pipe(Config.withDefault(false));
|
|
38
|
-
const ctx = yield* Effect.context<never>();
|
|
39
39
|
|
|
40
|
-
return loadOrConfigure(auth, profileName, { ci }).pipe(
|
|
40
|
+
return profile.loadOrConfigure(auth, profileName, { ci }).pipe(
|
|
41
41
|
Effect.flatMap((config) =>
|
|
42
42
|
auth.read(profileName, config as CloudflareAuthConfig),
|
|
43
43
|
),
|
|
@@ -69,7 +69,6 @@ export const fromAuthProvider = () =>
|
|
|
69
69
|
message: `Failed to resolve Cloudflare credentials for profile '${profileName}': ${(e as { message?: string }).message ?? String(e)}`,
|
|
70
70
|
}),
|
|
71
71
|
),
|
|
72
|
-
Effect.provide(ctx),
|
|
73
72
|
);
|
|
74
73
|
}),
|
|
75
74
|
);
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ServeError,
|
|
3
|
-
type ServeResult,
|
|
4
|
-
} from "@distilled.cloud/cloudflare-runtime/Server";
|
|
1
|
+
import { RuntimeError } from "@distilled.cloud/cloudflare-runtime/RuntimeError";
|
|
5
2
|
import * as Worker from "@distilled.cloud/cloudflare-runtime/Worker";
|
|
6
3
|
import * as Effect from "effect/Effect";
|
|
7
4
|
import * as Schema from "effect/Schema";
|
|
@@ -22,13 +19,19 @@ export interface ServeOptions extends WorkerBundleOptions {
|
|
|
22
19
|
durableObjectNamespaces: Worker.DurableObjectNamespace[];
|
|
23
20
|
}
|
|
24
21
|
|
|
22
|
+
export const ServeResult = Schema.Struct({
|
|
23
|
+
name: Schema.String,
|
|
24
|
+
address: Schema.String,
|
|
25
|
+
});
|
|
26
|
+
export type ServeResult = typeof ServeResult.Type;
|
|
27
|
+
|
|
28
|
+
export const ServeError = Schema.Union([RuntimeError, BundleError]);
|
|
29
|
+
export type ServeError = typeof ServeError.Type;
|
|
30
|
+
|
|
25
31
|
export const SidecarSchema = defineSchema<Sidecar["Service"]>({
|
|
26
32
|
serve: {
|
|
27
|
-
success:
|
|
28
|
-
|
|
29
|
-
address: Schema.String,
|
|
30
|
-
}),
|
|
31
|
-
error: Schema.Union([ServeError, BundleError]),
|
|
33
|
+
success: ServeResult,
|
|
34
|
+
error: ServeError,
|
|
32
35
|
},
|
|
33
36
|
stop: { success: Schema.Void, error: Schema.Never },
|
|
34
37
|
});
|
|
@@ -38,7 +41,7 @@ export class Sidecar extends RpcClient.RpcClientService<
|
|
|
38
41
|
{
|
|
39
42
|
readonly serve: (
|
|
40
43
|
options: ServeOptions,
|
|
41
|
-
) => Effect.Effect<ServeResult, ServeError
|
|
44
|
+
) => Effect.Effect<ServeResult, ServeError>;
|
|
42
45
|
readonly stop: (name: string) => Effect.Effect<void>;
|
|
43
46
|
}
|
|
44
47
|
>()("Sidecar") {}
|
|
@@ -12,7 +12,12 @@ import * as Scope from "effect/Scope";
|
|
|
12
12
|
import * as Stream from "effect/Stream";
|
|
13
13
|
import * as Bundle from "../../Bundle/Bundle.ts";
|
|
14
14
|
import { WorkerBundle } from "../Workers/WorkerBundle.ts";
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
Sidecar,
|
|
17
|
+
type ServeError,
|
|
18
|
+
type ServeOptions,
|
|
19
|
+
type ServeResult,
|
|
20
|
+
} from "./Sidecar.ts";
|
|
16
21
|
|
|
17
22
|
export const SidecarHandlers = Layer.effect(
|
|
18
23
|
Sidecar,
|
|
@@ -29,10 +34,6 @@ export const SidecarHandlers = Layer.effect(
|
|
|
29
34
|
) {
|
|
30
35
|
const scope = yield* Effect.flatMap(Effect.scope, Scope.fork);
|
|
31
36
|
const result = yield* server
|
|
32
|
-
// The published @distilled.cloud/cloudflare-runtime types don't yet
|
|
33
|
-
// declare `hyperdrives` on the serve options, but the runtime
|
|
34
|
-
// accepts it. Cast through any so dev-mode local DB wiring works
|
|
35
|
-
// until the type is shipped upstream.
|
|
36
37
|
.serve({
|
|
37
38
|
name: worker.id.toLowerCase(),
|
|
38
39
|
compatibilityDate: worker.compatibility.date,
|
|
@@ -55,19 +56,13 @@ export const SidecarHandlers = Layer.effect(
|
|
|
55
56
|
string,
|
|
56
57
|
{
|
|
57
58
|
hash: number;
|
|
58
|
-
fiber: Fiber.Fiber<
|
|
59
|
-
Server.ServeResult,
|
|
60
|
-
Server.ServeError | Bundle.BundleError
|
|
61
|
-
>;
|
|
59
|
+
fiber: Fiber.Fiber<ServeResult, ServeError>;
|
|
62
60
|
scope: Scope.Closeable;
|
|
63
61
|
}
|
|
64
62
|
>();
|
|
65
63
|
|
|
66
64
|
const serveFiber = Effect.fnUntraced(function* (worker: ServeOptions) {
|
|
67
|
-
const result = yield* Deferred.make<
|
|
68
|
-
Server.ServeResult,
|
|
69
|
-
Server.ServeError | Bundle.BundleError
|
|
70
|
-
>();
|
|
65
|
+
const result = yield* Deferred.make<ServeResult, ServeError>();
|
|
71
66
|
let start = Date.now();
|
|
72
67
|
yield* bundle.watch(worker).pipe(
|
|
73
68
|
Stream.mapEffect((event) =>
|
|
@@ -5,7 +5,10 @@ import * as Path from "effect/Path";
|
|
|
5
5
|
import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
|
|
6
6
|
import * as AlchemyContext from "../../AlchemyContext.ts";
|
|
7
7
|
import { AuthProviders } from "../../Auth/AuthProvider.ts";
|
|
8
|
+
import { CredentialsStoreLive } from "../../Auth/Credentials.ts";
|
|
9
|
+
import { ProfileLive } from "../../Auth/Profile.ts";
|
|
8
10
|
import * as RpcServer from "../../Sidecar/RpcServer.ts";
|
|
11
|
+
import * as RpcServices from "../../Sidecar/RpcServices.ts";
|
|
9
12
|
import {
|
|
10
13
|
httpServer,
|
|
11
14
|
PlatformServices,
|
|
@@ -23,6 +26,8 @@ const apiServices = Layer.merge(
|
|
|
23
26
|
).pipe(
|
|
24
27
|
Layer.provide(CloudflareAuth),
|
|
25
28
|
Layer.provide(Layer.succeed(AuthProviders, {})),
|
|
29
|
+
Layer.provide(ProfileLive),
|
|
30
|
+
Layer.provide(CredentialsStoreLive),
|
|
26
31
|
);
|
|
27
32
|
|
|
28
33
|
const runtimeServices = SidecarHandlers.pipe(
|
|
@@ -46,7 +51,7 @@ const runtimeServices = SidecarHandlers.pipe(
|
|
|
46
51
|
);
|
|
47
52
|
|
|
48
53
|
const services = Layer.provideMerge(
|
|
49
|
-
Layer.provideMerge(runtimeServices,
|
|
54
|
+
Layer.provideMerge(runtimeServices, RpcServices.layer(import.meta.url)),
|
|
50
55
|
PlatformServices,
|
|
51
56
|
);
|
|
52
57
|
|
package/src/Cloudflare/Logs.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import * as workers from "@distilled.cloud/cloudflare/workers";
|
|
2
|
+
import type * as Cause from "effect/Cause";
|
|
2
3
|
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Queue from "effect/Queue";
|
|
5
|
+
import * as Schedule from "effect/Schedule";
|
|
3
6
|
import * as Stream from "effect/Stream";
|
|
7
|
+
import * as Socket from "effect/unstable/socket/Socket";
|
|
4
8
|
import type { LogLine, LogsInput } from "../Provider.ts";
|
|
5
9
|
|
|
6
10
|
const DEFAULT_LOOKBACK_MS = 1 * 60 * 60 * 1000;
|
|
@@ -23,6 +27,33 @@ export interface TelemetryFilter {
|
|
|
23
27
|
value?: string | number | boolean;
|
|
24
28
|
}
|
|
25
29
|
|
|
30
|
+
interface TailEventMessage {
|
|
31
|
+
eventTimestamp?: number;
|
|
32
|
+
wallTime: number;
|
|
33
|
+
cpuTime: number;
|
|
34
|
+
truncated: boolean;
|
|
35
|
+
outcome: string;
|
|
36
|
+
scriptName: string;
|
|
37
|
+
exceptions: {
|
|
38
|
+
name: string;
|
|
39
|
+
message: string;
|
|
40
|
+
stack: string;
|
|
41
|
+
timestamp: string;
|
|
42
|
+
}[];
|
|
43
|
+
logs: {
|
|
44
|
+
message: string[];
|
|
45
|
+
level: string;
|
|
46
|
+
timestamp: string;
|
|
47
|
+
}[];
|
|
48
|
+
event:
|
|
49
|
+
| {
|
|
50
|
+
request: { method: string; url: string };
|
|
51
|
+
response?: { status: number };
|
|
52
|
+
}
|
|
53
|
+
| null
|
|
54
|
+
| undefined;
|
|
55
|
+
}
|
|
56
|
+
|
|
26
57
|
const parseEvents = (
|
|
27
58
|
response: workers.QueryObservabilityTelemetryResponse,
|
|
28
59
|
): LogLine[] => {
|
|
@@ -44,6 +75,8 @@ const parseEvents = (
|
|
|
44
75
|
|
|
45
76
|
export const CloudflareLogs = Effect.gen(function* () {
|
|
46
77
|
const queryTelemetry = yield* workers.queryObservabilityTelemetry;
|
|
78
|
+
const createScriptTail = yield* workers.createScriptTail;
|
|
79
|
+
const deleteScriptTail = yield* workers.deleteScriptTail;
|
|
47
80
|
|
|
48
81
|
const queryLogs = (opts: {
|
|
49
82
|
accountId: string;
|
|
@@ -83,6 +116,87 @@ export const CloudflareLogs = Effect.gen(function* () {
|
|
|
83
116
|
return parseEvents(response);
|
|
84
117
|
});
|
|
85
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Open a real-time Workers tail session against `scriptName` and
|
|
121
|
+
* surface its messages as a {@link LogLine} stream. The websocket is
|
|
122
|
+
* automatically reconnected (with `Stream.repeat`) when Cloudflare
|
|
123
|
+
* closes it after its idle window.
|
|
124
|
+
*/
|
|
125
|
+
const tailScript = (opts: { accountId: string; scriptName: string }) => {
|
|
126
|
+
const runTailSession = Effect.gen(function* () {
|
|
127
|
+
const { id: tailId, url } = yield* createScriptTail({
|
|
128
|
+
scriptName: opts.scriptName,
|
|
129
|
+
accountId: opts.accountId,
|
|
130
|
+
body: { filters: [] },
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
const socket = yield* Socket.makeWebSocket(url, {
|
|
134
|
+
protocols: ["trace-v1"],
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
const queue = yield* Queue.make<LogLine, Cause.Done>();
|
|
138
|
+
|
|
139
|
+
yield* socket
|
|
140
|
+
.runRaw((raw) => {
|
|
141
|
+
const text =
|
|
142
|
+
typeof raw === "string" ? raw : new TextDecoder().decode(raw);
|
|
143
|
+
const data: TailEventMessage = JSON.parse(text);
|
|
144
|
+
const eventTs = new Date(data.eventTimestamp ?? Date.now());
|
|
145
|
+
|
|
146
|
+
if (data.event && "request" in data.event) {
|
|
147
|
+
const reqEvent = data.event;
|
|
148
|
+
const pathname = (() => {
|
|
149
|
+
try {
|
|
150
|
+
return new URL(reqEvent.request.url).pathname;
|
|
151
|
+
} catch {
|
|
152
|
+
return reqEvent.request.url;
|
|
153
|
+
}
|
|
154
|
+
})();
|
|
155
|
+
const status = reqEvent.response?.status ?? 500;
|
|
156
|
+
Queue.offerUnsafe(queue, {
|
|
157
|
+
timestamp: eventTs,
|
|
158
|
+
message: `${reqEvent.request.method} ${pathname} > ${status} (cpu: ${Math.round(data.cpuTime)}ms, wall: ${Math.round(data.wallTime)}ms)`,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
for (const log of data.logs) {
|
|
163
|
+
const msg = log.message.join(" ");
|
|
164
|
+
Queue.offerUnsafe(queue, {
|
|
165
|
+
timestamp: new Date(log.timestamp),
|
|
166
|
+
message: log.level === "log" ? msg : `${log.level}: ${msg}`,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
for (const exception of data.exceptions) {
|
|
171
|
+
Queue.offerUnsafe(queue, {
|
|
172
|
+
timestamp: new Date(exception.timestamp),
|
|
173
|
+
message: `${exception.name} ${exception.message}\n${exception.stack}`,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
})
|
|
177
|
+
.pipe(
|
|
178
|
+
Effect.ensuring(
|
|
179
|
+
Effect.all([
|
|
180
|
+
deleteScriptTail({
|
|
181
|
+
scriptName: opts.scriptName,
|
|
182
|
+
id: tailId,
|
|
183
|
+
accountId: opts.accountId,
|
|
184
|
+
}).pipe(Effect.ignore),
|
|
185
|
+
Queue.end(queue),
|
|
186
|
+
]),
|
|
187
|
+
),
|
|
188
|
+
Effect.ignore,
|
|
189
|
+
Effect.forkChild(),
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
return Stream.fromQueue(queue);
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
return Stream.unwrap(runTailSession).pipe(
|
|
196
|
+
Stream.repeat(Schedule.spaced("1 second")),
|
|
197
|
+
);
|
|
198
|
+
};
|
|
199
|
+
|
|
86
200
|
const tailStream = (opts: {
|
|
87
201
|
accountId: string;
|
|
88
202
|
filters: TelemetryFilter[];
|
|
@@ -118,5 +232,5 @@ export const CloudflareLogs = Effect.gen(function* () {
|
|
|
118
232
|
return poll(Date.now());
|
|
119
233
|
};
|
|
120
234
|
|
|
121
|
-
return { queryLogs, tailStream };
|
|
235
|
+
return { queryLogs, tailScript, tailStream };
|
|
122
236
|
});
|
|
@@ -8,6 +8,8 @@ import * as Schedule from "effect/Schedule";
|
|
|
8
8
|
import { Command } from "../Build/Command.ts";
|
|
9
9
|
import * as Build from "../Build/index.ts";
|
|
10
10
|
import * as Provider from "../Provider.ts";
|
|
11
|
+
import { CredentialsStoreLive } from "../Auth/Credentials.ts";
|
|
12
|
+
import { ProfileLive } from "../Auth/Profile.ts";
|
|
11
13
|
import { Random, RandomProvider } from "../Random.ts";
|
|
12
14
|
import * as Access from "./Access.ts";
|
|
13
15
|
import * as AiGateway from "./AiGateway/index.ts";
|
|
@@ -59,6 +61,7 @@ export const providers = () =>
|
|
|
59
61
|
Queue.Queue,
|
|
60
62
|
Queue.QueueBindingPolicy,
|
|
61
63
|
Queue.QueueConsumer,
|
|
64
|
+
Queue.QueueEventSourcePolicy,
|
|
62
65
|
R2.R2Bucket,
|
|
63
66
|
R2.R2BucketBindingPolicy,
|
|
64
67
|
SecretsStore.SecretBindingPolicy,
|
|
@@ -88,6 +91,7 @@ export const providers = () =>
|
|
|
88
91
|
KV.KVNamespaceBindingPolicyLive,
|
|
89
92
|
KV.KVNamespaceProvider(),
|
|
90
93
|
Queue.QueueBindingPolicyLive,
|
|
94
|
+
Queue.QueueEventSourcePolicyLive,
|
|
91
95
|
Queue.QueueProvider(),
|
|
92
96
|
Queue.QueueConsumerProvider(),
|
|
93
97
|
R2.R2BucketBindingPolicyLive,
|
|
@@ -110,6 +114,8 @@ export const providers = () =>
|
|
|
110
114
|
Layer.provideMerge(CloudflareEnvironment.fromProfile()),
|
|
111
115
|
Layer.provideMerge(CloudflareAuth),
|
|
112
116
|
Layer.provideMerge(Access.AccessLive),
|
|
117
|
+
Layer.provideMerge(ProfileLive),
|
|
118
|
+
Layer.provideMerge(CredentialsStoreLive),
|
|
113
119
|
// Apply a blanket retry policy to every Cloudflare API call. Extends
|
|
114
120
|
// `Retry.makeDefault`'s transient detection (throttling / 5xx /
|
|
115
121
|
// network) with one Cloudflare-specific misleadingly-tagged
|