alchemy 2.0.0-beta.36 → 2.0.0-beta.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/exec.js +646 -104
- package/bin/exec.js.map +1 -1
- package/lib/AWS/AutoScaling/LaunchTemplate.d.ts +1 -1
- package/lib/AWS/CloudWatch/common.d.ts +1 -1
- package/lib/AWS/Credentials.d.ts.map +1 -1
- package/lib/AWS/Credentials.js +1 -2
- package/lib/AWS/Credentials.js.map +1 -1
- package/lib/AWS/DynamoDB/Stream.d.ts.map +1 -1
- package/lib/AWS/DynamoDB/Stream.js +1 -1
- package/lib/AWS/DynamoDB/Stream.js.map +1 -1
- package/lib/AWS/EC2/Instance.d.ts +1 -1
- package/lib/AWS/EC2/hosted.d.ts +1 -1
- package/lib/AWS/EC2/hosted.d.ts.map +1 -1
- package/lib/AWS/EC2/hosted.js +3 -5
- package/lib/AWS/EC2/hosted.js.map +1 -1
- package/lib/AWS/ECS/Task.d.ts +1 -1
- package/lib/AWS/ECS/Task.d.ts.map +1 -1
- package/lib/AWS/ECS/Task.js +3 -5
- package/lib/AWS/ECS/Task.js.map +1 -1
- package/lib/AWS/Endpoint.d.ts.map +1 -1
- package/lib/AWS/Endpoint.js +1 -2
- package/lib/AWS/Endpoint.js.map +1 -1
- package/lib/AWS/Environment.d.ts +2 -2
- package/lib/AWS/EventBridge/EventSource.d.ts.map +1 -1
- package/lib/AWS/EventBridge/EventSource.js +1 -1
- package/lib/AWS/EventBridge/EventSource.js.map +1 -1
- package/lib/AWS/Kinesis/StreamEventSource.d.ts.map +1 -1
- package/lib/AWS/Kinesis/StreamEventSource.js +1 -1
- package/lib/AWS/Kinesis/StreamEventSource.js.map +1 -1
- package/lib/AWS/Lambda/BucketEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/Function.d.ts +1 -1
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +29 -13
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Lambda/QueueEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/StreamEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/TableEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/TopicEventSource.d.ts +1 -1
- package/lib/AWS/Organizations/common.d.ts +1 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +21 -3
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/AWS/Region.d.ts +1 -1
- package/lib/AWS/Region.d.ts.map +1 -1
- package/lib/AWS/Region.js +2 -3
- package/lib/AWS/Region.js.map +1 -1
- package/lib/AWS/S3/Bucket.d.ts.map +1 -1
- package/lib/AWS/S3/Bucket.js +5 -2
- package/lib/AWS/S3/Bucket.js.map +1 -1
- package/lib/AWS/S3/BucketNotifications.d.ts.map +1 -1
- package/lib/AWS/S3/BucketNotifications.js +1 -1
- package/lib/AWS/S3/BucketNotifications.js.map +1 -1
- package/lib/AWS/SNS/TopicEventSource.d.ts.map +1 -1
- package/lib/AWS/SNS/TopicEventSource.js +1 -1
- package/lib/AWS/SNS/TopicEventSource.js.map +1 -1
- package/lib/AWS/SQS/Queue.d.ts.map +1 -1
- package/lib/AWS/SQS/Queue.js +23 -5
- package/lib/AWS/SQS/Queue.js.map +1 -1
- package/lib/Action.d.ts +77 -0
- package/lib/Action.d.ts.map +1 -0
- package/lib/Action.js +89 -0
- package/lib/Action.js.map +1 -0
- package/lib/AlchemyContext.d.ts +1 -1
- package/lib/Apply.d.ts.map +1 -1
- package/lib/Apply.js +228 -4
- package/lib/Apply.js.map +1 -1
- package/lib/Artifacts.d.ts +1 -1
- package/lib/Artifacts.d.ts.map +1 -1
- package/lib/Artifacts.js +1 -1
- package/lib/Artifacts.js.map +1 -1
- package/lib/Auth/AuthProvider.js +1 -1
- package/lib/Auth/AuthProvider.js.map +1 -1
- package/lib/Auth/Env.d.ts.map +1 -1
- package/lib/Auth/Env.js +4 -12
- package/lib/Auth/Env.js.map +1 -1
- package/lib/Binding.d.ts.map +1 -1
- package/lib/Binding.js +5 -5
- package/lib/Binding.js.map +1 -1
- package/lib/Build/Command.d.ts +1 -1
- package/lib/Build/Memo.d.ts +1 -1
- package/lib/Bundle/Docker.d.ts +3 -3
- package/lib/Bundle/Docker.js +1 -1
- package/lib/Bundle/Docker.js.map +1 -1
- package/lib/Bundle/TempRoot.d.ts +3 -3
- package/lib/Cli/Event.d.ts +1 -1
- package/lib/Cli/Event.d.ts.map +1 -1
- package/lib/Cli/NamespaceTree.d.ts +11 -5
- package/lib/Cli/NamespaceTree.d.ts.map +1 -1
- package/lib/Cli/NamespaceTree.js +28 -1
- package/lib/Cli/NamespaceTree.js.map +1 -1
- package/lib/Cli/commands/_shared.d.ts +1 -1
- package/lib/Cli/commands/_shared.js +2 -2
- package/lib/Cli/commands/_shared.js.map +1 -1
- package/lib/Cli/commands/aws.d.ts +1 -1
- package/lib/Cli/commands/cloudflare.d.ts +2 -2
- package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
- package/lib/Cli/commands/deploy.d.ts +9 -9
- package/lib/Cli/commands/deploy.js +1 -1
- package/lib/Cli/commands/deploy.js.map +1 -1
- package/lib/Cli/commands/login.d.ts +1 -1
- package/lib/Cli/commands/logs.d.ts +1 -1
- package/lib/Cli/commands/logs.js.map +1 -1
- package/lib/Cli/commands/profile.d.ts +1 -3
- package/lib/Cli/commands/profile.d.ts.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/tail.d.ts +1 -1
- package/lib/Cli/commands/tail.js.map +1 -1
- package/lib/Cli/tui/components/Plan.d.ts.map +1 -1
- package/lib/Cli/tui/components/Plan.js +27 -13
- package/lib/Cli/tui/components/Plan.js.map +1 -1
- package/lib/Cli/tui/components/PlanProgress.d.ts +8 -1
- package/lib/Cli/tui/components/PlanProgress.d.ts.map +1 -1
- package/lib/Cli/tui/components/PlanProgress.js +95 -16
- package/lib/Cli/tui/components/PlanProgress.js.map +1 -1
- package/lib/Cloudflare/Access.js +0 -1
- package/lib/Cloudflare/Access.js.map +1 -1
- package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.d.ts +54 -0
- package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.d.ts.map +1 -0
- package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.js +17 -0
- package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.js.map +1 -0
- package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.d.ts +37 -0
- package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.d.ts.map +1 -0
- package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js +45 -0
- package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js.map +1 -0
- package/lib/Cloudflare/AnalyticsEngine/index.d.ts +3 -0
- package/lib/Cloudflare/AnalyticsEngine/index.d.ts.map +1 -0
- package/lib/Cloudflare/AnalyticsEngine/index.js +3 -0
- package/lib/Cloudflare/AnalyticsEngine/index.js.map +1 -0
- package/lib/Cloudflare/Artifacts/ArtifactsBinding.js +1 -1
- package/lib/Cloudflare/Artifacts/ArtifactsBinding.js.map +1 -1
- package/lib/Cloudflare/CloudflareEnvironment.d.ts +1 -1
- package/lib/Cloudflare/Container/Container.js +0 -1
- package/lib/Cloudflare/Container/Container.js.map +1 -1
- package/lib/Cloudflare/Container/ContainerApplication.d.ts +1 -1
- package/lib/Cloudflare/Container/ContainerApplication.d.ts.map +1 -1
- package/lib/Cloudflare/Container/ContainerApplication.js +4 -6
- package/lib/Cloudflare/Container/ContainerApplication.js.map +1 -1
- package/lib/Cloudflare/Container/ContainerBinding.js +2 -2
- package/lib/Cloudflare/Container/ContainerBinding.js.map +1 -1
- package/lib/Cloudflare/D1/D1Connection.d.ts +47 -3
- package/lib/Cloudflare/D1/D1Connection.d.ts.map +1 -1
- package/lib/Cloudflare/D1/D1Connection.js +62 -5
- package/lib/Cloudflare/D1/D1Connection.js.map +1 -1
- package/lib/Cloudflare/D1/D1Database.d.ts +1 -1
- package/lib/Cloudflare/D1/D1SqlFile.d.ts +2 -2
- package/lib/Cloudflare/Email/EmailAddress.d.ts +45 -0
- package/lib/Cloudflare/Email/EmailAddress.d.ts.map +1 -0
- package/lib/Cloudflare/Email/EmailAddress.js +99 -0
- package/lib/Cloudflare/Email/EmailAddress.js.map +1 -0
- package/lib/Cloudflare/Email/EmailRouting.d.ts +42 -0
- package/lib/Cloudflare/Email/EmailRouting.d.ts.map +1 -0
- package/lib/Cloudflare/Email/EmailRouting.js +89 -0
- package/lib/Cloudflare/Email/EmailRouting.js.map +1 -0
- package/lib/Cloudflare/Email/EmailRule.d.ts +80 -0
- package/lib/Cloudflare/Email/EmailRule.d.ts.map +1 -0
- package/lib/Cloudflare/Email/EmailRule.js +110 -0
- package/lib/Cloudflare/Email/EmailRule.js.map +1 -0
- package/lib/Cloudflare/Email/SendEmail.d.ts +74 -0
- package/lib/Cloudflare/Email/SendEmail.d.ts.map +1 -0
- package/lib/Cloudflare/Email/SendEmail.js +19 -0
- package/lib/Cloudflare/Email/SendEmail.js.map +1 -0
- package/lib/Cloudflare/Email/SendEmailBinding.d.ts +64 -0
- package/lib/Cloudflare/Email/SendEmailBinding.d.ts.map +1 -0
- package/lib/Cloudflare/Email/SendEmailBinding.js +54 -0
- package/lib/Cloudflare/Email/SendEmailBinding.js.map +1 -0
- package/lib/Cloudflare/Email/index.d.ts +6 -0
- package/lib/Cloudflare/Email/index.d.ts.map +1 -0
- package/lib/Cloudflare/Email/index.js +6 -0
- package/lib/Cloudflare/Email/index.js.map +1 -0
- package/lib/Cloudflare/Hyperdrive/Hyperdrive.d.ts +1 -1
- package/lib/Cloudflare/Images/ImagesBinding.js +1 -1
- package/lib/Cloudflare/Images/ImagesBinding.js.map +1 -1
- package/lib/Cloudflare/KV/KVNamespaceBinding.js +1 -1
- package/lib/Cloudflare/KV/KVNamespaceBinding.js.map +1 -1
- package/lib/Cloudflare/Local/Sidecar.d.ts +1 -1
- package/lib/Cloudflare/Local/SidecarHandlers.d.ts +1 -1
- package/lib/Cloudflare/Local/SidecarHandlers.js +9 -1
- package/lib/Cloudflare/Local/SidecarHandlers.js.map +1 -1
- package/lib/Cloudflare/Local/SidecarServer.js +1 -1
- package/lib/Cloudflare/Local/SidecarServer.js.map +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +9 -1
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Queue/QueueBinding.js +1 -1
- package/lib/Cloudflare/Queue/QueueBinding.js.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.js +16 -0
- package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
- package/lib/Cloudflare/R2/R2BucketBinding.js +1 -1
- package/lib/Cloudflare/R2/R2BucketBinding.js.map +1 -1
- package/lib/Cloudflare/SecretsStore/SecretBinding.js +1 -1
- package/lib/Cloudflare/SecretsStore/SecretBinding.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +7 -2
- package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Api.js +23 -1
- package/lib/Cloudflare/StateStore/Api.js.map +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts +2 -2
- package/lib/Cloudflare/StateStore/Store.d.ts +16 -1
- package/lib/Cloudflare/StateStore/Store.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Store.js +22 -5
- package/lib/Cloudflare/StateStore/Store.js.map +1 -1
- package/lib/Cloudflare/Workers/Assets.d.ts +2 -2
- package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Assets.js +5 -4
- package/lib/Cloudflare/Workers/Assets.js.map +1 -1
- package/lib/Cloudflare/Workers/CronEventSource.d.ts +35 -0
- package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/CronEventSource.js +55 -0
- package/lib/Cloudflare/Workers/CronEventSource.js.map +1 -0
- package/lib/Cloudflare/Workers/InferEnv.d.ts +37 -2
- package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +2 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/Rpc.d.ts +76 -3
- package/lib/Cloudflare/Workers/Rpc.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Rpc.js +197 -13
- package/lib/Cloudflare/Workers/Rpc.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +24 -4
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +187 -45
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.js +19 -11
- package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerName.d.ts +1 -1
- package/lib/Cloudflare/Workers/Workflow.d.ts +50 -47
- package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Workflow.js +43 -37
- package/lib/Cloudflare/Workers/Workflow.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/Cloudflare/index.d.ts +2 -0
- package/lib/Cloudflare/index.d.ts.map +1 -1
- package/lib/Cloudflare/index.js +2 -0
- package/lib/Cloudflare/index.js.map +1 -1
- package/lib/Construct.d.ts +3 -3
- package/lib/Construct.d.ts.map +1 -1
- package/lib/Construct.js.map +1 -1
- package/lib/Deploy.d.ts +5 -2
- package/lib/Deploy.d.ts.map +1 -1
- package/lib/Deploy.js +2 -2
- package/lib/Deploy.js.map +1 -1
- package/lib/Destroy.d.ts +5 -2
- package/lib/Destroy.d.ts.map +1 -1
- package/lib/Destroy.js +3 -2
- package/lib/Destroy.js.map +1 -1
- package/lib/Drizzle/Providers.d.ts +1 -1
- package/lib/Drizzle/Schema.d.ts +1 -1
- package/lib/GitHub/Providers.d.ts +1 -1
- package/lib/Http.d.ts +1 -1
- package/lib/Http.d.ts.map +1 -1
- package/lib/Http.js +1 -1
- package/lib/Http.js.map +1 -1
- package/lib/Namespace.d.ts.map +1 -1
- package/lib/Namespace.js +3 -4
- package/lib/Namespace.js.map +1 -1
- package/lib/Neon/Branch.d.ts +2 -2
- package/lib/Neon/Branch.d.ts.map +1 -1
- package/lib/Neon/Branch.js +59 -27
- package/lib/Neon/Branch.js.map +1 -1
- package/lib/Neon/Credentials.d.ts +2 -2
- package/lib/Neon/Credentials.d.ts.map +1 -1
- package/lib/Neon/Credentials.js +2 -2
- package/lib/Neon/Credentials.js.map +1 -1
- package/lib/Neon/NeonEnvironment.d.ts +1 -1
- package/lib/Neon/Project.d.ts +25 -1
- package/lib/Neon/Project.d.ts.map +1 -1
- package/lib/Neon/Project.js +121 -42
- package/lib/Neon/Project.js.map +1 -1
- package/lib/Neon/Providers.d.ts +1 -1
- package/lib/Neon/SqlFile.d.ts +2 -2
- package/lib/Output.d.ts +47 -8
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js +106 -7
- package/lib/Output.js.map +1 -1
- package/lib/PhysicalName.d.ts +1 -1
- package/lib/Plan.d.ts +36 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +284 -37
- package/lib/Plan.js.map +1 -1
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Platform.js +22 -9
- package/lib/Platform.js.map +1 -1
- package/lib/Provider.d.ts +1 -1
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js +1 -1
- package/lib/Provider.js.map +1 -1
- package/lib/Random.d.ts +1 -1
- package/lib/Random.d.ts.map +1 -1
- package/lib/Random.js +1 -1
- package/lib/Random.js.map +1 -1
- package/lib/Ref.d.ts +4 -1
- package/lib/Ref.d.ts.map +1 -1
- package/lib/Ref.js +1 -1
- package/lib/Ref.js.map +1 -1
- package/lib/Resource.d.ts +8 -0
- package/lib/Resource.d.ts.map +1 -1
- package/lib/Resource.js +12 -25
- package/lib/Resource.js.map +1 -1
- package/lib/Runtime.d.ts +24 -0
- package/lib/Runtime.d.ts.map +1 -0
- package/lib/Runtime.js +31 -0
- package/lib/Runtime.js.map +1 -0
- package/lib/RuntimeContext.d.ts +3 -1
- package/lib/RuntimeContext.d.ts.map +1 -1
- package/lib/RuntimeContext.js.map +1 -1
- package/lib/Secret.d.ts +50 -0
- package/lib/Secret.d.ts.map +1 -0
- package/lib/Secret.js +23 -0
- package/lib/Secret.js.map +1 -0
- package/lib/Serverless/Function.d.ts +9 -1
- package/lib/Serverless/Function.d.ts.map +1 -1
- package/lib/Sidecar/RpcClient.d.ts +1 -1
- package/lib/Sidecar/RpcPaths.d.ts +1 -1
- package/lib/Sidecar/RpcServer.d.ts +1 -1
- package/lib/Sidecar/RpcServices.d.ts +1 -1
- package/lib/Stack.d.ts +20 -6
- package/lib/Stack.d.ts.map +1 -1
- package/lib/Stack.js +35 -23
- package/lib/Stack.js.map +1 -1
- package/lib/State/ActionState.d.ts +48 -0
- package/lib/State/ActionState.d.ts.map +1 -0
- package/lib/State/ActionState.js +1 -0
- package/lib/State/ActionState.js.map +1 -0
- package/lib/State/HttpStateApi.d.ts +15 -1
- package/lib/State/HttpStateApi.d.ts.map +1 -1
- package/lib/State/HttpStateApi.js +11 -0
- package/lib/State/HttpStateApi.js.map +1 -1
- package/lib/State/HttpStateStore.d.ts.map +1 -1
- package/lib/State/HttpStateStore.js +12 -1
- package/lib/State/HttpStateStore.js.map +1 -1
- package/lib/State/InMemoryState.d.ts +2 -2
- package/lib/State/InMemoryState.d.ts.map +1 -1
- package/lib/State/InMemoryState.js +12 -6
- package/lib/State/InMemoryState.js.map +1 -1
- package/lib/State/LocalState.d.ts +2 -2
- package/lib/State/LocalState.d.ts.map +1 -1
- package/lib/State/LocalState.js +11 -2
- package/lib/State/LocalState.js.map +1 -1
- package/lib/State/ResourceState.d.ts +5 -0
- package/lib/State/ResourceState.d.ts.map +1 -1
- package/lib/State/State.d.ts +31 -2
- package/lib/State/State.d.ts.map +1 -1
- package/lib/State/State.js +2 -0
- package/lib/State/State.js.map +1 -1
- package/lib/State/index.d.ts +1 -0
- package/lib/State/index.d.ts.map +1 -1
- package/lib/State/index.js +1 -0
- package/lib/State/index.js.map +1 -1
- package/lib/Test/Bun.d.ts.map +1 -1
- package/lib/Test/Bun.js +30 -7
- package/lib/Test/Bun.js.map +1 -1
- package/lib/Test/Core.d.ts +19 -4
- package/lib/Test/Core.d.ts.map +1 -1
- package/lib/Test/Core.js +33 -12
- package/lib/Test/Core.js.map +1 -1
- package/lib/Test/Vitest.d.ts.map +1 -1
- package/lib/Test/Vitest.js +24 -5
- package/lib/Test/Vitest.js.map +1 -1
- package/lib/Util/FileLogger.d.ts +1 -1
- package/lib/Util/LocalhostDns.d.ts +14 -10
- package/lib/Util/LocalhostDns.d.ts.map +1 -1
- package/lib/Util/LocalhostDns.js +27 -36
- package/lib/Util/LocalhostDns.js.map +1 -1
- package/lib/Util/effect.d.ts +7 -0
- package/lib/Util/effect.d.ts.map +1 -1
- package/lib/Util/effect.js +10 -4
- package/lib/Util/effect.js.map +1 -1
- package/lib/Util/exec.d.ts.map +1 -0
- package/lib/Util/exec.js.map +1 -0
- package/lib/Util/hash.d.ts +8 -0
- package/lib/Util/hash.d.ts.map +1 -0
- package/lib/Util/hash.js +11 -0
- package/lib/Util/hash.js.map +1 -0
- package/lib/Util/ignore.d.ts +40 -0
- package/lib/Util/ignore.d.ts.map +1 -0
- package/lib/Util/ignore.js +591 -0
- package/lib/Util/ignore.js.map +1 -0
- package/lib/Variable.d.ts +29 -0
- package/lib/Variable.d.ts.map +1 -0
- package/lib/Variable.js +9 -0
- package/lib/Variable.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/lib/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +22 -29
- package/src/AWS/Credentials.ts +1 -2
- package/src/AWS/DynamoDB/Stream.ts +1 -4
- package/src/AWS/EC2/hosted.ts +14 -16
- package/src/AWS/ECS/Task.ts +14 -16
- package/src/AWS/Endpoint.ts +2 -5
- package/src/AWS/EventBridge/EventSource.ts +1 -4
- package/src/AWS/Kinesis/StreamEventSource.ts +1 -4
- package/src/AWS/Lambda/Function.ts +47 -23
- package/src/AWS/Providers.ts +22 -3
- package/src/AWS/Region.ts +2 -3
- package/src/AWS/S3/Bucket.ts +7 -2
- package/src/AWS/S3/BucketNotifications.ts +1 -4
- package/src/AWS/SNS/TopicEventSource.ts +1 -4
- package/src/AWS/SQS/Queue.ts +40 -6
- package/src/Action.ts +280 -0
- package/src/Apply.ts +359 -24
- package/src/Artifacts.ts +2 -4
- package/src/Auth/AuthProvider.ts +1 -1
- package/src/Auth/Env.ts +12 -20
- package/src/Binding.ts +5 -9
- package/src/Bundle/Docker.ts +1 -1
- package/src/Cli/Event.ts +4 -0
- package/src/Cli/NamespaceTree.ts +52 -5
- package/src/Cli/commands/_shared.ts +2 -2
- package/src/Cli/commands/deploy.ts +1 -1
- package/src/Cli/commands/logs.ts +4 -4
- package/src/Cli/commands/tail.ts +4 -4
- package/src/Cli/tui/components/Plan.tsx +65 -17
- package/src/Cli/tui/components/PlanProgress.tsx +142 -32
- package/src/Cloudflare/Access.ts +1 -1
- package/src/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.ts +82 -0
- package/src/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.ts +106 -0
- package/src/Cloudflare/AnalyticsEngine/index.ts +2 -0
- package/src/Cloudflare/Artifacts/ArtifactsBinding.ts +1 -1
- package/src/Cloudflare/Container/Container.ts +1 -1
- package/src/Cloudflare/Container/ContainerApplication.ts +4 -6
- package/src/Cloudflare/Container/ContainerBinding.ts +2 -2
- package/src/Cloudflare/D1/D1Connection.ts +95 -12
- package/src/Cloudflare/Email/EmailAddress.ts +155 -0
- package/src/Cloudflare/Email/EmailRouting.ts +138 -0
- package/src/Cloudflare/Email/EmailRule.ts +210 -0
- package/src/Cloudflare/Email/SendEmail.ts +95 -0
- package/src/Cloudflare/Email/SendEmailBinding.ts +124 -0
- package/src/Cloudflare/Email/index.ts +5 -0
- package/src/Cloudflare/Images/ImagesBinding.ts +1 -1
- package/src/Cloudflare/KV/KVNamespaceBinding.ts +1 -1
- package/src/Cloudflare/Local/SidecarHandlers.ts +9 -1
- package/src/Cloudflare/Local/SidecarServer.ts +1 -1
- package/src/Cloudflare/Providers.ts +14 -0
- package/src/Cloudflare/Queue/QueueBinding.ts +1 -1
- package/src/Cloudflare/R2/R2Bucket.ts +31 -0
- package/src/Cloudflare/R2/R2BucketBinding.ts +1 -1
- package/src/Cloudflare/SecretsStore/SecretBinding.ts +1 -1
- package/src/Cloudflare/StateStore/Api.ts +34 -1
- package/src/Cloudflare/StateStore/Store.ts +40 -10
- package/src/Cloudflare/Workers/Assets.ts +5 -6
- package/src/Cloudflare/Workers/CronEventSource.ts +89 -0
- package/src/Cloudflare/Workers/InferEnv.ts +94 -20
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +9 -1
- package/src/Cloudflare/Workers/Rpc.ts +227 -18
- package/src/Cloudflare/Workers/Worker.ts +294 -65
- package/src/Cloudflare/Workers/WorkerBundle.ts +19 -11
- package/src/Cloudflare/Workers/Workflow.ts +76 -72
- package/src/Cloudflare/Workers/index.ts +1 -0
- package/src/Cloudflare/index.ts +2 -0
- package/src/Construct.ts +3 -7
- package/src/Deploy.ts +5 -1
- package/src/Destroy.ts +6 -1
- package/src/Http.ts +1 -1
- package/src/Namespace.ts +4 -4
- package/src/Neon/Branch.ts +93 -59
- package/src/Neon/Credentials.ts +2 -2
- package/src/Neon/Project.ts +193 -64
- package/src/Output.ts +129 -18
- package/src/Plan.ts +375 -36
- package/src/Platform.ts +26 -11
- package/src/Provider.ts +8 -3
- package/src/Random.ts +1 -1
- package/src/Ref.ts +10 -5
- package/src/Resource.ts +24 -25
- package/src/Runtime.ts +38 -0
- package/src/RuntimeContext.ts +1 -0
- package/src/Secret.ts +87 -0
- package/src/Serverless/Function.ts +10 -1
- package/src/Stack.ts +62 -35
- package/src/State/ActionState.ts +51 -0
- package/src/State/HttpStateApi.ts +21 -0
- package/src/State/HttpStateStore.ts +27 -2
- package/src/State/InMemoryState.ts +31 -10
- package/src/State/LocalState.ts +28 -4
- package/src/State/ResourceState.ts +5 -0
- package/src/State/State.ts +38 -2
- package/src/State/index.ts +1 -0
- package/src/Test/Bun.ts +43 -7
- package/src/Test/Core.ts +33 -11
- package/src/Test/Vitest.ts +33 -4
- package/src/Util/LocalhostDns.ts +30 -36
- package/src/Util/effect.ts +29 -4
- package/src/Util/hash.ts +14 -0
- package/src/Util/ignore.ts +815 -0
- package/src/Variable.ts +44 -0
- package/src/index.ts +9 -0
- package/lib/Agent/Agent.d.ts +0 -9
- package/lib/Agent/Agent.d.ts.map +0 -1
- package/lib/Agent/Agent.js +0 -10
- package/lib/Agent/Agent.js.map +0 -1
- package/lib/Agent/Aspect.d.ts +0 -51
- package/lib/Agent/Aspect.d.ts.map +0 -1
- package/lib/Agent/Aspect.js +0 -45
- package/lib/Agent/Aspect.js.map +0 -1
- package/lib/Agent/AspectGraph.d.ts +0 -45
- package/lib/Agent/AspectGraph.d.ts.map +0 -1
- package/lib/Agent/AspectGraph.js +0 -39
- package/lib/Agent/AspectGraph.js.map +0 -1
- package/lib/Agent/ContextPlugin.d.ts +0 -8
- package/lib/Agent/ContextPlugin.d.ts.map +0 -1
- package/lib/Agent/ContextPlugin.js +0 -3
- package/lib/Agent/ContextPlugin.js.map +0 -1
- package/lib/Agent/Plugin.d.ts +0 -18
- package/lib/Agent/Plugin.d.ts.map +0 -1
- package/lib/Agent/Plugin.js +0 -8
- package/lib/Agent/Plugin.js.map +0 -1
- package/lib/Agent/chat/channel.d.ts +0 -9
- package/lib/Agent/chat/channel.d.ts.map +0 -1
- package/lib/Agent/chat/channel.js +0 -10
- package/lib/Agent/chat/channel.js.map +0 -1
- package/lib/Agent/chat/event.d.ts +0 -32
- package/lib/Agent/chat/event.d.ts.map +0 -1
- package/lib/Agent/chat/event.js +0 -32
- package/lib/Agent/chat/event.js.map +0 -1
- package/lib/Agent/chat/message.d.ts +0 -22
- package/lib/Agent/chat/message.d.ts.map +0 -1
- package/lib/Agent/chat/message.js +0 -31
- package/lib/Agent/chat/message.js.map +0 -1
- package/lib/Agent/chat/service.d.ts +0 -102
- package/lib/Agent/chat/service.d.ts.map +0 -1
- package/lib/Agent/chat/service.js +0 -79
- package/lib/Agent/chat/service.js.map +0 -1
- package/lib/Agent/chat/thread.d.ts +0 -13
- package/lib/Agent/chat/thread.d.ts.map +0 -1
- package/lib/Agent/chat/thread.js +0 -16
- package/lib/Agent/chat/thread.js.map +0 -1
- package/lib/Agent/coding/bash.d.ts +0 -36
- package/lib/Agent/coding/bash.d.ts.map +0 -1
- package/lib/Agent/coding/bash.js +0 -170
- package/lib/Agent/coding/bash.js.map +0 -1
- package/lib/Agent/coding/edit.d.ts +0 -31
- package/lib/Agent/coding/edit.d.ts.map +0 -1
- package/lib/Agent/coding/edit.js +0 -90
- package/lib/Agent/coding/edit.js.map +0 -1
- package/lib/Agent/coding/glob.d.ts +0 -23
- package/lib/Agent/coding/glob.d.ts.map +0 -1
- package/lib/Agent/coding/glob.js +0 -78
- package/lib/Agent/coding/glob.js.map +0 -1
- package/lib/Agent/coding/grep.d.ts +0 -26
- package/lib/Agent/coding/grep.d.ts.map +0 -1
- package/lib/Agent/coding/grep.js +0 -105
- package/lib/Agent/coding/grep.js.map +0 -1
- package/lib/Agent/coding/index.d.ts +0 -8
- package/lib/Agent/coding/index.d.ts.map +0 -1
- package/lib/Agent/coding/index.js +0 -8
- package/lib/Agent/coding/index.js.map +0 -1
- package/lib/Agent/coding/read.d.ts +0 -27
- package/lib/Agent/coding/read.d.ts.map +0 -1
- package/lib/Agent/coding/read.js +0 -89
- package/lib/Agent/coding/read.js.map +0 -1
- package/lib/Agent/coding/readlints.d.ts +0 -19
- package/lib/Agent/coding/readlints.d.ts.map +0 -1
- package/lib/Agent/coding/readlints.js +0 -53
- package/lib/Agent/coding/readlints.js.map +0 -1
- package/lib/Agent/coding/write.d.ts +0 -22
- package/lib/Agent/coding/write.d.ts.map +0 -1
- package/lib/Agent/coding/write.js +0 -53
- package/lib/Agent/coding/write.js.map +0 -1
- package/lib/Agent/fs/file.d.ts +0 -12
- package/lib/Agent/fs/file.d.ts.map +0 -1
- package/lib/Agent/fs/file.js +0 -8
- package/lib/Agent/fs/file.js.map +0 -1
- package/lib/Agent/fs/folder.d.ts +0 -5
- package/lib/Agent/fs/folder.d.ts.map +0 -1
- package/lib/Agent/fs/folder.js +0 -3
- package/lib/Agent/fs/folder.js.map +0 -1
- package/lib/Agent/index.d.ts +0 -9
- package/lib/Agent/index.d.ts.map +0 -1
- package/lib/Agent/index.js +0 -9
- package/lib/Agent/index.js.map +0 -1
- package/lib/Agent/llm/error.d.ts +0 -208
- package/lib/Agent/llm/error.d.ts.map +0 -1
- package/lib/Agent/llm/error.js +0 -209
- package/lib/Agent/llm/error.js.map +0 -1
- package/lib/Agent/llm/index.d.ts +0 -5
- package/lib/Agent/llm/index.d.ts.map +0 -1
- package/lib/Agent/llm/index.js +0 -5
- package/lib/Agent/llm/index.js.map +0 -1
- package/lib/Agent/llm/llm.d.ts +0 -32
- package/lib/Agent/llm/llm.d.ts.map +0 -1
- package/lib/Agent/llm/llm.js +0 -74
- package/lib/Agent/llm/llm.js.map +0 -1
- package/lib/Agent/llm/stream-collectors.d.ts +0 -46
- package/lib/Agent/llm/stream-collectors.d.ts.map +0 -1
- package/lib/Agent/llm/stream-collectors.js +0 -33
- package/lib/Agent/llm/stream-collectors.js.map +0 -1
- package/lib/Agent/llm/stream-text-part.d.ts +0 -5
- package/lib/Agent/llm/stream-text-part.d.ts.map +0 -1
- package/lib/Agent/llm/stream-text-part.js +0 -4
- package/lib/Agent/llm/stream-text-part.js.map +0 -1
- package/lib/Agent/lsp/client.d.ts +0 -122
- package/lib/Agent/lsp/client.d.ts.map +0 -1
- package/lib/Agent/lsp/client.js +0 -180
- package/lib/Agent/lsp/client.js.map +0 -1
- package/lib/Agent/lsp/diagnostics.d.ts +0 -16
- package/lib/Agent/lsp/diagnostics.d.ts.map +0 -1
- package/lib/Agent/lsp/diagnostics.js +0 -48
- package/lib/Agent/lsp/diagnostics.js.map +0 -1
- package/lib/Agent/lsp/jsonrpc.d.ts +0 -90
- package/lib/Agent/lsp/jsonrpc.d.ts.map +0 -1
- package/lib/Agent/lsp/jsonrpc.js +0 -178
- package/lib/Agent/lsp/jsonrpc.js.map +0 -1
- package/lib/Agent/lsp/manager.d.ts +0 -38
- package/lib/Agent/lsp/manager.d.ts.map +0 -1
- package/lib/Agent/lsp/manager.js +0 -98
- package/lib/Agent/lsp/manager.js.map +0 -1
- package/lib/Agent/lsp/servers.d.ts +0 -28
- package/lib/Agent/lsp/servers.d.ts.map +0 -1
- package/lib/Agent/lsp/servers.js +0 -21
- package/lib/Agent/lsp/servers.js.map +0 -1
- package/lib/Agent/process/driver.d.ts +0 -10
- package/lib/Agent/process/driver.d.ts.map +0 -1
- package/lib/Agent/process/driver.js +0 -153
- package/lib/Agent/process/driver.js.map +0 -1
- package/lib/Agent/process/issue-service.d.ts +0 -44
- package/lib/Agent/process/issue-service.d.ts.map +0 -1
- package/lib/Agent/process/issue-service.js +0 -28
- package/lib/Agent/process/issue-service.js.map +0 -1
- package/lib/Agent/process/issue-tools.d.ts +0 -28
- package/lib/Agent/process/issue-tools.d.ts.map +0 -1
- package/lib/Agent/process/issue-tools.js +0 -28
- package/lib/Agent/process/issue-tools.js.map +0 -1
- package/lib/Agent/process/issue.d.ts +0 -16
- package/lib/Agent/process/issue.d.ts.map +0 -1
- package/lib/Agent/process/issue.js +0 -17
- package/lib/Agent/process/issue.js.map +0 -1
- package/lib/Agent/process/organization.d.ts +0 -4
- package/lib/Agent/process/organization.d.ts.map +0 -1
- package/lib/Agent/process/organization.js +0 -3
- package/lib/Agent/process/organization.js.map +0 -1
- package/lib/Agent/process/process.d.ts +0 -5
- package/lib/Agent/process/process.d.ts.map +0 -1
- package/lib/Agent/process/process.js +0 -3
- package/lib/Agent/process/process.js.map +0 -1
- package/lib/Agent/process/reply.d.ts +0 -16
- package/lib/Agent/process/reply.d.ts.map +0 -1
- package/lib/Agent/process/reply.js +0 -18
- package/lib/Agent/process/reply.js.map +0 -1
- package/lib/Agent/process/task.d.ts +0 -25
- package/lib/Agent/process/task.d.ts.map +0 -1
- package/lib/Agent/process/task.js +0 -26
- package/lib/Agent/process/task.js.map +0 -1
- package/lib/Agent/tool/index.d.ts +0 -4
- package/lib/Agent/tool/index.d.ts.map +0 -1
- package/lib/Agent/tool/index.js +0 -4
- package/lib/Agent/tool/index.js.map +0 -1
- package/lib/Agent/tool/parameter.d.ts +0 -12
- package/lib/Agent/tool/parameter.d.ts.map +0 -1
- package/lib/Agent/tool/parameter.js +0 -6
- package/lib/Agent/tool/parameter.js.map +0 -1
- package/lib/Agent/tool/result.d.ts +0 -17
- package/lib/Agent/tool/result.d.ts.map +0 -1
- package/lib/Agent/tool/result.js +0 -6
- package/lib/Agent/tool/result.js.map +0 -1
- package/lib/Agent/tool/tool.d.ts +0 -32
- package/lib/Agent/tool/tool.d.ts.map +0 -1
- package/lib/Agent/tool/tool.js +0 -16
- package/lib/Agent/tool/tool.js.map +0 -1
- package/lib/Agent/util/command-validator.d.ts +0 -12
- package/lib/Agent/util/command-validator.d.ts.map +0 -1
- package/lib/Agent/util/command-validator.js +0 -74
- package/lib/Agent/util/command-validator.js.map +0 -1
- package/lib/Agent/util/exec.d.ts.map +0 -1
- package/lib/Agent/util/exec.js.map +0 -1
- package/lib/Agent/util/parser.d.ts +0 -5
- package/lib/Agent/util/parser.d.ts.map +0 -1
- package/lib/Agent/util/parser.js +0 -41
- package/lib/Agent/util/parser.js.map +0 -1
- package/lib/Agent/util/replace.d.ts +0 -38
- package/lib/Agent/util/replace.d.ts.map +0 -1
- package/lib/Agent/util/replace.js +0 -458
- package/lib/Agent/util/replace.js.map +0 -1
- package/lib/Agent/util/ripgrep.d.ts +0 -109
- package/lib/Agent/util/ripgrep.d.ts.map +0 -1
- package/lib/Agent/util/ripgrep.js +0 -221
- package/lib/Agent/util/ripgrep.js.map +0 -1
- package/lib/Neon/api.d.ts +0 -258
- package/lib/Neon/api.d.ts.map +0 -1
- package/lib/Neon/api.js +0 -215
- package/lib/Neon/api.js.map +0 -1
- package/src/Agent/Agent.ts +0 -26
- package/src/Agent/Aspect.ts +0 -173
- package/src/Agent/AspectGraph.ts +0 -98
- package/src/Agent/ContextPlugin.ts +0 -18
- package/src/Agent/Plugin.ts +0 -29
- package/src/Agent/chat/channel.ts +0 -26
- package/src/Agent/chat/event.ts +0 -43
- package/src/Agent/chat/message.ts +0 -35
- package/src/Agent/chat/service.ts +0 -133
- package/src/Agent/chat/thread.ts +0 -17
- package/src/Agent/coding/bash.ts +0 -197
- package/src/Agent/coding/edit.ts +0 -152
- package/src/Agent/coding/glob.ts +0 -96
- package/src/Agent/coding/grep.ts +0 -143
- package/src/Agent/coding/index.ts +0 -7
- package/src/Agent/coding/read.ts +0 -119
- package/src/Agent/coding/readlints.ts +0 -78
- package/src/Agent/coding/write.ts +0 -79
- package/src/Agent/fs/file.ts +0 -22
- package/src/Agent/fs/folder.ts +0 -16
- package/src/Agent/index.ts +0 -9
- package/src/Agent/llm/error.ts +0 -330
- package/src/Agent/llm/index.ts +0 -4
- package/src/Agent/llm/llm.ts +0 -131
- package/src/Agent/llm/stream-collectors.ts +0 -58
- package/src/Agent/llm/stream-text-part.ts +0 -7
- package/src/Agent/lsp/client.ts +0 -293
- package/src/Agent/lsp/diagnostics.ts +0 -64
- package/src/Agent/lsp/jsonrpc.ts +0 -317
- package/src/Agent/lsp/manager.ts +0 -213
- package/src/Agent/lsp/servers.ts +0 -37
- package/src/Agent/process/driver.ts +0 -168
- package/src/Agent/process/issue-service.ts +0 -48
- package/src/Agent/process/issue-tools.ts +0 -33
- package/src/Agent/process/issue.ts +0 -22
- package/src/Agent/process/organization.ts +0 -16
- package/src/Agent/process/process.ts +0 -16
- package/src/Agent/process/reply.ts +0 -21
- package/src/Agent/process/task.ts +0 -34
- package/src/Agent/tool/index.ts +0 -3
- package/src/Agent/tool/parameter.ts +0 -35
- package/src/Agent/tool/result.ts +0 -51
- package/src/Agent/tool/tool.ts +0 -74
- package/src/Agent/util/command-validator.ts +0 -98
- package/src/Agent/util/parser.ts +0 -39
- package/src/Agent/util/replace.ts +0 -559
- package/src/Agent/util/ripgrep.ts +0 -256
- package/src/Neon/api.ts +0 -579
- /package/lib/{Agent/util → Util}/exec.d.ts +0 -0
- /package/lib/{Agent/util → Util}/exec.js +0 -0
- /package/src/{Agent/util → Util}/exec.ts +0 -0
|
@@ -50,12 +50,21 @@ export class WorkflowStep extends Context.Service<
|
|
|
50
50
|
* Execute a named, durable workflow step. The effect is run inside the
|
|
51
51
|
* Cloudflare step transaction so its result is automatically persisted
|
|
52
52
|
* and replayed on retries.
|
|
53
|
+
*
|
|
54
|
+
* Any services the inner effect requires (e.g. `WorkerEnvironment` from a
|
|
55
|
+
* binding like `kv.put` / `kv.get`) are threaded through automatically by
|
|
56
|
+
* capturing the surrounding workflow body's context and providing it to
|
|
57
|
+
* the inner effect before it runs inside `step.do`.
|
|
53
58
|
*/
|
|
54
|
-
export const task = <T>(
|
|
59
|
+
export const task = <T, R = never>(
|
|
55
60
|
name: string,
|
|
56
|
-
effect: Effect.Effect<T>,
|
|
57
|
-
): Effect.Effect<T, never, WorkflowStep> =>
|
|
58
|
-
|
|
61
|
+
effect: Effect.Effect<T, never, R>,
|
|
62
|
+
): Effect.Effect<T, never, WorkflowStep | R> =>
|
|
63
|
+
Effect.gen(function* () {
|
|
64
|
+
const step = yield* WorkflowStep;
|
|
65
|
+
const context = yield* Effect.context<R>();
|
|
66
|
+
return yield* step.do(name, effect.pipe(Effect.provide(context)));
|
|
67
|
+
});
|
|
59
68
|
|
|
60
69
|
/**
|
|
61
70
|
* Pause the workflow for the given duration.
|
|
@@ -64,7 +73,7 @@ export const sleep = (
|
|
|
64
73
|
name: string,
|
|
65
74
|
duration: string | number,
|
|
66
75
|
): Effect.Effect<void, never, WorkflowStep> =>
|
|
67
|
-
WorkflowStep.
|
|
76
|
+
WorkflowStep.pipe(
|
|
68
77
|
Effect.flatMap((step) => step.sleep(name, duration)),
|
|
69
78
|
Effect.orDie,
|
|
70
79
|
);
|
|
@@ -76,7 +85,7 @@ export const sleepUntil = (
|
|
|
76
85
|
name: string,
|
|
77
86
|
timestamp: Date | number,
|
|
78
87
|
): Effect.Effect<void, never, WorkflowStep> =>
|
|
79
|
-
WorkflowStep.
|
|
88
|
+
WorkflowStep.pipe(
|
|
80
89
|
Effect.flatMap((step) => step.sleepUntil(name, timestamp)),
|
|
81
90
|
Effect.orDie,
|
|
82
91
|
);
|
|
@@ -103,20 +112,17 @@ export type WorkflowServices = WorkerServices | PlatformServices;
|
|
|
103
112
|
*/
|
|
104
113
|
export interface WorkflowExport {
|
|
105
114
|
readonly kind: "workflow";
|
|
106
|
-
readonly make: (
|
|
107
|
-
env: unknown,
|
|
108
|
-
) => Effect.Effect<Effect.Effect<unknown, never, WorkflowRunServices>>;
|
|
115
|
+
readonly make: (env: unknown) => Effect.Effect<WorkflowImpl<any, any>>;
|
|
109
116
|
}
|
|
110
117
|
|
|
111
118
|
/**
|
|
112
|
-
* A workflow
|
|
113
|
-
*
|
|
119
|
+
* A workflow implementation is a function from a typed `Input` payload to
|
|
120
|
+
* an Effect that produces the workflow's `Result`. The Effect requires
|
|
121
|
+
* `WorkflowRunServices` (event + step + env) to execute.
|
|
114
122
|
*/
|
|
115
|
-
export type
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
WorkflowRunServices
|
|
119
|
-
>;
|
|
123
|
+
export type WorkflowImpl<Input = unknown, Result = unknown> = (
|
|
124
|
+
input: Input,
|
|
125
|
+
) => Effect.Effect<Result, never, WorkflowRunServices>;
|
|
120
126
|
|
|
121
127
|
export const isWorkflowExport = (value: unknown): value is WorkflowExport =>
|
|
122
128
|
typeof value === "object" &&
|
|
@@ -141,24 +147,24 @@ export const isWorkflowBinding = (binding: {
|
|
|
141
147
|
* Handle returned to the caller at deploy/bind time. Allows starting
|
|
142
148
|
* workflow instances and checking their status from the Api layer.
|
|
143
149
|
*/
|
|
144
|
-
export interface WorkflowHandle<
|
|
150
|
+
export interface WorkflowHandle<Input = unknown, Result = unknown> {
|
|
145
151
|
Type: WorkflowTypeId;
|
|
146
152
|
name: string;
|
|
147
|
-
create(
|
|
148
|
-
get(instanceId: string): Effect.Effect<WorkflowInstance
|
|
153
|
+
create(input: Input): Effect.Effect<WorkflowInstance<Result>>;
|
|
154
|
+
get(instanceId: string): Effect.Effect<WorkflowInstance<Result>>;
|
|
149
155
|
}
|
|
150
156
|
|
|
151
|
-
export interface WorkflowInstance {
|
|
157
|
+
export interface WorkflowInstance<Result = unknown> {
|
|
152
158
|
id: string;
|
|
153
|
-
status(): Effect.Effect<WorkflowInstanceStatus
|
|
159
|
+
status(): Effect.Effect<WorkflowInstanceStatus<Result>>;
|
|
154
160
|
pause(): Effect.Effect<void>;
|
|
155
161
|
resume(): Effect.Effect<void>;
|
|
156
162
|
terminate(): Effect.Effect<void>;
|
|
157
163
|
}
|
|
158
164
|
|
|
159
|
-
export interface WorkflowInstanceStatus {
|
|
165
|
+
export interface WorkflowInstanceStatus<Result = unknown> {
|
|
160
166
|
status: string;
|
|
161
|
-
output?:
|
|
167
|
+
output?: Result;
|
|
162
168
|
error?: { name: string; message: string } | null;
|
|
163
169
|
}
|
|
164
170
|
|
|
@@ -168,22 +174,22 @@ export interface WorkflowClass extends Effect.Effect<
|
|
|
168
174
|
WorkflowHandle
|
|
169
175
|
> {
|
|
170
176
|
<_Self>(): {
|
|
171
|
-
<Result = unknown, InitReq = never>(
|
|
177
|
+
<Input = unknown, Result = unknown, InitReq = never>(
|
|
172
178
|
name: string,
|
|
173
|
-
impl: Effect.Effect<
|
|
179
|
+
impl: Effect.Effect<WorkflowImpl<Input, Result>, never, InitReq>,
|
|
174
180
|
): Effect.Effect<
|
|
175
|
-
WorkflowHandle,
|
|
181
|
+
WorkflowHandle<Input, Result>,
|
|
176
182
|
never,
|
|
177
183
|
Worker | Exclude<InitReq, WorkflowServices>
|
|
178
184
|
> & {
|
|
179
|
-
new (_: never):
|
|
185
|
+
new (_: never): WorkflowImpl<Input, Result>;
|
|
180
186
|
};
|
|
181
187
|
};
|
|
182
|
-
<Result = unknown, InitReq = never>(
|
|
188
|
+
<Input = unknown, Result = unknown, InitReq = never>(
|
|
183
189
|
name: string,
|
|
184
|
-
impl: Effect.Effect<
|
|
190
|
+
impl: Effect.Effect<WorkflowImpl<Input, Result>, never, InitReq>,
|
|
185
191
|
): Effect.Effect<
|
|
186
|
-
WorkflowHandle,
|
|
192
|
+
WorkflowHandle<Input, Result>,
|
|
187
193
|
never,
|
|
188
194
|
Worker | Exclude<InitReq, WorkflowServices>
|
|
189
195
|
>;
|
|
@@ -200,18 +206,18 @@ export class WorkflowScope extends Context.Service<
|
|
|
200
206
|
*
|
|
201
207
|
* A Workflow follows the same two-phase pattern as Workers and Durable
|
|
202
208
|
* Objects. The outer `Effect.gen` resolves shared dependencies. The inner
|
|
203
|
-
* `Effect.
|
|
204
|
-
* runs steps using `task`, `sleep`, and
|
|
209
|
+
* `Effect.fn` is the workflow body — a function from a typed `input`
|
|
210
|
+
* payload to an Effect that runs steps using `task`, `sleep`, and
|
|
211
|
+
* `sleepUntil`.
|
|
205
212
|
*
|
|
206
213
|
* ```typescript
|
|
207
214
|
* Effect.gen(function* () {
|
|
208
215
|
* // Phase 1: resolve dependencies
|
|
209
216
|
* const notifier = yield* NotificationService;
|
|
210
217
|
*
|
|
211
|
-
* return Effect.
|
|
218
|
+
* return Effect.fn(function* (input: { orderId: string }) {
|
|
212
219
|
* // Phase 2: workflow body (durable steps)
|
|
213
|
-
* const
|
|
214
|
-
* const result = yield* Cloudflare.task("process", doWork(event.payload));
|
|
220
|
+
* const result = yield* Cloudflare.task("process", doWork(input.orderId));
|
|
215
221
|
* yield* Cloudflare.sleep("cooldown", "10 seconds");
|
|
216
222
|
* return result;
|
|
217
223
|
* });
|
|
@@ -226,9 +232,8 @@ export class WorkflowScope extends Context.Service<
|
|
|
226
232
|
* export default class MyWorkflow extends Cloudflare.Workflow<MyWorkflow>()(
|
|
227
233
|
* "MyWorkflow",
|
|
228
234
|
* Effect.gen(function* () {
|
|
229
|
-
* return Effect.
|
|
230
|
-
*
|
|
231
|
-
* return { received: event.payload };
|
|
235
|
+
* return Effect.fn(function* (input: { name: string }) {
|
|
236
|
+
* return { received: input.name };
|
|
232
237
|
* });
|
|
233
238
|
* }),
|
|
234
239
|
* ) {}
|
|
@@ -248,33 +253,31 @@ export class WorkflowScope extends Context.Service<
|
|
|
248
253
|
* yield* Cloudflare.sleep("cooldown", "30 seconds");
|
|
249
254
|
* ```
|
|
250
255
|
*
|
|
251
|
-
* @example Accessing env bindings inside a
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
+
* @example Accessing env bindings inside a task
|
|
257
|
+
* Bind a resource (e.g. `KVNamespace`, `R2Bucket`) in the workflow's
|
|
258
|
+
* outer init phase to get a typed Effect-native client, then use it
|
|
259
|
+
* directly inside `task`. `task` threads the binding's service
|
|
260
|
+
* requirement (`WorkerEnvironment`) through automatically so the inner
|
|
261
|
+
* Effect needs no extra plumbing.
|
|
256
262
|
*
|
|
257
263
|
* ```typescript
|
|
258
264
|
* Effect.gen(function* () {
|
|
259
|
-
* const
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
* roomId
|
|
263
|
-
* message: string;
|
|
264
|
-
* };
|
|
265
|
+
* const kv = yield* Cloudflare.KVNamespace.bind(KV);
|
|
266
|
+
*
|
|
267
|
+
* return Effect.fn(function* (input: { roomId: string; message: string }) {
|
|
268
|
+
* const { roomId, message } = input;
|
|
265
269
|
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
* return
|
|
272
|
-
* },
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
* );
|
|
277
|
-
* return stored;
|
|
270
|
+
* const stored = yield* Cloudflare.task(
|
|
271
|
+
* "kv-roundtrip",
|
|
272
|
+
* Effect.gen(function* () {
|
|
273
|
+
* const key = `workflow:${roomId}`;
|
|
274
|
+
* yield* kv.put(key, message);
|
|
275
|
+
* return yield* kv.get(key);
|
|
276
|
+
* }).pipe(Effect.orDie),
|
|
277
|
+
* );
|
|
278
|
+
*
|
|
279
|
+
* return stored;
|
|
280
|
+
* });
|
|
278
281
|
* });
|
|
279
282
|
* ```
|
|
280
283
|
*
|
|
@@ -357,7 +360,7 @@ export class WorkflowScope extends Context.Service<
|
|
|
357
360
|
* ```
|
|
358
361
|
*/
|
|
359
362
|
export const Workflow: WorkflowClass = taggedFunction(WorkflowScope, ((
|
|
360
|
-
...args: [] | [name: string, impl: Effect.Effect<
|
|
363
|
+
...args: [] | [name: string, impl: Effect.Effect<WorkflowImpl<any, any>>]
|
|
361
364
|
) =>
|
|
362
365
|
args.length === 0
|
|
363
366
|
? Workflow
|
|
@@ -404,11 +407,11 @@ export const Workflow: WorkflowClass = taggedFunction(WorkflowScope, ((
|
|
|
404
407
|
}),
|
|
405
408
|
);
|
|
406
409
|
|
|
407
|
-
const self: WorkflowHandle = {
|
|
410
|
+
const self: WorkflowHandle<any, any> = {
|
|
408
411
|
Type: WorkflowTypeId,
|
|
409
412
|
name,
|
|
410
|
-
create: (
|
|
411
|
-
Effect.tryPromise(() => binding.create({ params })).pipe(
|
|
413
|
+
create: (input: unknown) =>
|
|
414
|
+
Effect.tryPromise(() => binding.create({ params: input })).pipe(
|
|
412
415
|
Effect.map(wrapInstance),
|
|
413
416
|
Effect.orDie,
|
|
414
417
|
),
|
|
@@ -419,21 +422,22 @@ export const Workflow: WorkflowClass = taggedFunction(WorkflowScope, ((
|
|
|
419
422
|
),
|
|
420
423
|
};
|
|
421
424
|
|
|
422
|
-
const
|
|
425
|
+
const fn = yield* impl.pipe(
|
|
423
426
|
Effect.provideService(WorkflowScope, self as any),
|
|
424
427
|
);
|
|
425
428
|
|
|
426
429
|
yield* worker.export(name, {
|
|
427
430
|
kind: "workflow",
|
|
428
431
|
make: (env: unknown) =>
|
|
429
|
-
Effect.succeed(
|
|
430
|
-
|
|
432
|
+
Effect.succeed(((input: unknown) =>
|
|
433
|
+
fn(input).pipe(
|
|
431
434
|
Effect.provideService(
|
|
432
435
|
WorkerEnvironment,
|
|
433
436
|
env as Record<string, any>,
|
|
434
437
|
),
|
|
435
|
-
),
|
|
436
|
-
|
|
438
|
+
)) as WorkflowImpl<any, any>).pipe(
|
|
439
|
+
Effect.provideContext(services),
|
|
440
|
+
),
|
|
437
441
|
} satisfies WorkflowExport);
|
|
438
442
|
|
|
439
443
|
return self;
|
|
@@ -520,13 +524,13 @@ export const WorkflowProvider = () =>
|
|
|
520
524
|
// Helpers
|
|
521
525
|
// ---------------------------------------------------------------------------
|
|
522
526
|
|
|
523
|
-
const wrapInstance = (raw: any): WorkflowInstance => ({
|
|
527
|
+
const wrapInstance = <Result>(raw: any): WorkflowInstance<Result> => ({
|
|
524
528
|
id: raw.id,
|
|
525
529
|
status: () =>
|
|
526
530
|
Effect.tryPromise(() => raw.status()).pipe(
|
|
527
531
|
Effect.map((s: any) => ({
|
|
528
532
|
status: s.status as string,
|
|
529
|
-
output: s.output,
|
|
533
|
+
output: s.output as Result,
|
|
530
534
|
error: s.error,
|
|
531
535
|
})),
|
|
532
536
|
Effect.orDie,
|
package/src/Cloudflare/index.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export * from "./ApiToken/index.ts";
|
|
2
2
|
export * from "./Artifacts/index.ts";
|
|
3
3
|
export * from "./AiGateway/index.ts";
|
|
4
|
+
export * from "./AnalyticsEngine/index.ts";
|
|
4
5
|
export * from "./CloudflareEnvironment.ts";
|
|
5
6
|
export * from "./Container/index.ts";
|
|
6
7
|
export * from "./D1/index.ts";
|
|
7
8
|
export * from "./EdgeSession.ts";
|
|
9
|
+
export * from "./Email/index.ts";
|
|
8
10
|
export * from "./Hyperdrive/index.ts";
|
|
9
11
|
export * from "./Images/index.ts";
|
|
10
12
|
export * from "./KV/index.ts";
|
package/src/Construct.ts
CHANGED
|
@@ -49,11 +49,7 @@ import * as Namespace from "./Namespace.ts";
|
|
|
49
49
|
* ```
|
|
50
50
|
*/
|
|
51
51
|
export const fn: {
|
|
52
|
-
<
|
|
53
|
-
Eff extends Effect.Yieldable<any, any, any, any>,
|
|
54
|
-
AEff,
|
|
55
|
-
Props extends object,
|
|
56
|
-
>(
|
|
52
|
+
<Eff extends Effect.Effect<any, any, any>, AEff, Props extends object>(
|
|
57
53
|
body: (id: string, props: Props) => Generator<Eff, AEff, never>,
|
|
58
54
|
): (
|
|
59
55
|
id: string,
|
|
@@ -62,12 +58,12 @@ export const fn: {
|
|
|
62
58
|
AEff,
|
|
63
59
|
[Eff] extends [never]
|
|
64
60
|
? never
|
|
65
|
-
: [Eff] extends [Effect.
|
|
61
|
+
: [Eff] extends [Effect.Effect<infer _A, infer E, infer _R>]
|
|
66
62
|
? E
|
|
67
63
|
: never,
|
|
68
64
|
[Eff] extends [never]
|
|
69
65
|
? never
|
|
70
|
-
: [Eff] extends [Effect.
|
|
66
|
+
: [Eff] extends [Effect.Effect<infer _A, infer _E, infer R>]
|
|
71
67
|
? R
|
|
72
68
|
: never
|
|
73
69
|
>;
|
package/src/Deploy.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
+
import type * as Scope from "effect/Scope";
|
|
2
3
|
import { AlchemyContext } from "./AlchemyContext.ts";
|
|
3
4
|
import * as Apply from "./Apply.ts";
|
|
4
5
|
import type { Input } from "./Input.ts";
|
|
@@ -10,10 +11,13 @@ export const deploy = <A>({
|
|
|
10
11
|
stack,
|
|
11
12
|
stage,
|
|
12
13
|
dev,
|
|
14
|
+
scope,
|
|
13
15
|
}: {
|
|
14
16
|
stack: StackEffect<CompiledStack<A>, Stage | AlchemyContext>;
|
|
15
17
|
stage: string;
|
|
16
18
|
dev?: boolean;
|
|
19
|
+
/** See {@link evalStack} — when set, scoped resources outlive `deploy`. */
|
|
20
|
+
scope?: Scope.Scope;
|
|
17
21
|
}) =>
|
|
18
22
|
evalStack(
|
|
19
23
|
stack,
|
|
@@ -23,5 +27,5 @@ export const deploy = <A>({
|
|
|
23
27
|
const output = yield* Apply.apply(plan);
|
|
24
28
|
return output as Input.Resolve<A>;
|
|
25
29
|
}),
|
|
26
|
-
{ stage, dev },
|
|
30
|
+
{ stage, dev, scope },
|
|
27
31
|
);
|
package/src/Destroy.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
+
import type * as Scope from "effect/Scope";
|
|
2
3
|
import type { AlchemyContext } from "./AlchemyContext.ts";
|
|
3
4
|
import * as Apply from "./Apply.ts";
|
|
4
5
|
import * as Plan from "./Plan.ts";
|
|
@@ -10,10 +11,13 @@ export const destroy = ({
|
|
|
10
11
|
stack,
|
|
11
12
|
stage,
|
|
12
13
|
dev,
|
|
14
|
+
scope,
|
|
13
15
|
}: {
|
|
14
16
|
stack: StackEffect<CompiledStack, Stage | AlchemyContext>;
|
|
15
17
|
stage: string;
|
|
16
18
|
dev?: boolean;
|
|
19
|
+
/** See {@link evalStack} — when set, scoped resources outlive `destroy`. */
|
|
20
|
+
scope?: Scope.Scope;
|
|
17
21
|
}) =>
|
|
18
22
|
evalStack(
|
|
19
23
|
stack,
|
|
@@ -24,7 +28,8 @@ export const destroy = ({
|
|
|
24
28
|
// TODO(sam): probably better to have Plan.destroy and Plan.update
|
|
25
29
|
resources: {},
|
|
26
30
|
bindings: {},
|
|
31
|
+
actions: {},
|
|
27
32
|
output: {},
|
|
28
33
|
}).pipe(Effect.flatMap(Apply.apply)),
|
|
29
|
-
{ stage, dev },
|
|
34
|
+
{ stage, dev, scope },
|
|
30
35
|
);
|
package/src/Http.ts
CHANGED
|
@@ -80,7 +80,7 @@ export const safeHttpEffect = <Req = never>(
|
|
|
80
80
|
export const resolvePort = (options: { port?: number } | undefined) =>
|
|
81
81
|
options?.port !== undefined
|
|
82
82
|
? Effect.succeed(options.port)
|
|
83
|
-
: Config.number("PORT").pipe(Config.withDefault(3000))
|
|
83
|
+
: Config.number("PORT").pipe(Config.withDefault(3000));
|
|
84
84
|
|
|
85
85
|
export const BunHttpServer = () =>
|
|
86
86
|
Layer.effect(
|
package/src/Namespace.ts
CHANGED
|
@@ -40,10 +40,10 @@ export const set = (namespace: string | NamespaceNode) =>
|
|
|
40
40
|
);
|
|
41
41
|
|
|
42
42
|
export const CurrentNamespace = Effect.serviceOption(Namespace)
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
.pipe(Effect.map(Option.getOrUndefined));
|
|
45
45
|
|
|
46
|
-
export const CurrentChain = CurrentNamespace.
|
|
46
|
+
export const CurrentChain = CurrentNamespace.pipe(
|
|
47
47
|
Effect.map(function findRoot(ns): string[] {
|
|
48
48
|
if (ns?.Parent) {
|
|
49
49
|
return [ns.Id, ...findRoot(ns.Parent)];
|
|
@@ -52,9 +52,9 @@ export const CurrentChain = CurrentNamespace.asEffect().pipe(
|
|
|
52
52
|
}),
|
|
53
53
|
);
|
|
54
54
|
|
|
55
|
-
export const Parent = Namespace.
|
|
55
|
+
export const Parent = Namespace.pipe(Effect.map((ns) => ns?.Parent));
|
|
56
56
|
|
|
57
|
-
export const Root = Namespace.
|
|
57
|
+
export const Root = Namespace.pipe(
|
|
58
58
|
Effect.map(function findRoot(ns) {
|
|
59
59
|
if (ns.Parent) {
|
|
60
60
|
return findRoot(ns.Parent);
|
package/src/Neon/Branch.ts
CHANGED
|
@@ -1,16 +1,43 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createProjectBranch,
|
|
3
|
+
deleteProjectBranch,
|
|
4
|
+
getConnectionURI,
|
|
5
|
+
getProjectBranch,
|
|
6
|
+
listProjectBranchDatabases,
|
|
7
|
+
listProjectBranches,
|
|
8
|
+
type ListProjectBranchesOutput,
|
|
9
|
+
updateProjectBranch,
|
|
10
|
+
} from "@distilled.cloud/neon";
|
|
1
11
|
import * as Effect from "effect/Effect";
|
|
2
12
|
import * as Redacted from "effect/Redacted";
|
|
3
13
|
import { isResolved } from "../Diff.ts";
|
|
4
14
|
import { createPhysicalName } from "../PhysicalName.ts";
|
|
5
15
|
import * as Provider from "../Provider.ts";
|
|
6
16
|
import { Resource } from "../Resource.ts";
|
|
7
|
-
import * as api from "./api.ts";
|
|
8
17
|
import { applyMigrations, runSql } from "./Migrations.ts";
|
|
9
18
|
import { parsePostgresOrigin, type PostgresOrigin } from "./PostgresOrigin.ts";
|
|
10
|
-
import type
|
|
19
|
+
import { type Project, waitForOperations } from "./Project.ts";
|
|
11
20
|
import type { Providers } from "./Providers.ts";
|
|
12
21
|
import { listSqlFiles, readSqlFile } from "./SqlFile.ts";
|
|
13
22
|
|
|
23
|
+
const findBranchByName = (projectId: string, name: string) =>
|
|
24
|
+
Effect.gen(function* () {
|
|
25
|
+
const matches: ListProjectBranchesOutput["branches"][number][] = [];
|
|
26
|
+
let cursor: string | undefined;
|
|
27
|
+
do {
|
|
28
|
+
const page = yield* listProjectBranches({
|
|
29
|
+
project_id: projectId,
|
|
30
|
+
search: name,
|
|
31
|
+
...(cursor !== undefined ? { cursor } : {}),
|
|
32
|
+
});
|
|
33
|
+
for (const b of page.branches) {
|
|
34
|
+
if (b.name === name) matches.push(b);
|
|
35
|
+
}
|
|
36
|
+
cursor = page.pagination?.next;
|
|
37
|
+
} while (cursor);
|
|
38
|
+
return matches;
|
|
39
|
+
});
|
|
40
|
+
|
|
14
41
|
const DEFAULT_MIGRATIONS_TABLE = "neon_migrations";
|
|
15
42
|
|
|
16
43
|
export type BranchSource =
|
|
@@ -202,7 +229,7 @@ const resolveParentBranchId = (
|
|
|
202
229
|
return source.branchId as unknown as string;
|
|
203
230
|
}
|
|
204
231
|
if ("name" in source && source.name) {
|
|
205
|
-
const matches = yield*
|
|
232
|
+
const matches = yield* findBranchByName(projectId, source.name);
|
|
206
233
|
if (matches.length === 0) {
|
|
207
234
|
return yield* Effect.die(
|
|
208
235
|
`Parent branch "${source.name}" not found in project ${projectId}`,
|
|
@@ -218,9 +245,7 @@ const resolveParentBranchId = (
|
|
|
218
245
|
return undefined as string | undefined;
|
|
219
246
|
});
|
|
220
247
|
|
|
221
|
-
const buildEndpoints = (
|
|
222
|
-
endpoints: BranchEndpointConfig[] | undefined,
|
|
223
|
-
): api.CreateBranchEndpoint[] => {
|
|
248
|
+
const buildEndpoints = (endpoints: BranchEndpointConfig[] | undefined) => {
|
|
224
249
|
const list = endpoints ?? [{ type: "read_write" as const }];
|
|
225
250
|
return list.map((e) => ({
|
|
226
251
|
type: e.type,
|
|
@@ -237,13 +262,15 @@ const fetchConnection = (
|
|
|
237
262
|
roleName: string,
|
|
238
263
|
) =>
|
|
239
264
|
Effect.gen(function* () {
|
|
240
|
-
const direct = yield*
|
|
265
|
+
const direct = yield* getConnectionURI({
|
|
266
|
+
project_id: projectId,
|
|
241
267
|
branch_id: branchId,
|
|
242
268
|
database_name: databaseName,
|
|
243
269
|
role_name: roleName,
|
|
244
270
|
pooled: false,
|
|
245
271
|
});
|
|
246
|
-
const pooled = yield*
|
|
272
|
+
const pooled = yield* getConnectionURI({
|
|
273
|
+
project_id: projectId,
|
|
247
274
|
branch_id: branchId,
|
|
248
275
|
database_name: databaseName,
|
|
249
276
|
role_name: roleName,
|
|
@@ -318,31 +345,30 @@ export const BranchProvider = () =>
|
|
|
318
345
|
}),
|
|
319
346
|
read: Effect.fn(function* ({ id, output, olds }) {
|
|
320
347
|
if (output?.branchId) {
|
|
321
|
-
return yield*
|
|
322
|
-
|
|
323
|
-
.
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
);
|
|
348
|
+
return yield* getProjectBranch({
|
|
349
|
+
project_id: output.projectId,
|
|
350
|
+
branch_id: output.branchId,
|
|
351
|
+
}).pipe(
|
|
352
|
+
Effect.map(({ branch }) => ({
|
|
353
|
+
...output,
|
|
354
|
+
branchName: branch.name,
|
|
355
|
+
protected: branch.protected,
|
|
356
|
+
default: branch.default,
|
|
357
|
+
expiresAt: branch.expires_at,
|
|
358
|
+
})),
|
|
359
|
+
Effect.catchTag("NotFound", () => Effect.succeed(undefined)),
|
|
360
|
+
);
|
|
335
361
|
}
|
|
336
362
|
if (!olds?.project) return undefined;
|
|
337
363
|
const projectId = resolveProjectId(olds.project as BranchSource);
|
|
338
364
|
const name = yield* createBranchName(id, olds.name);
|
|
339
|
-
const matches = yield*
|
|
365
|
+
const matches = yield* findBranchByName(projectId, name);
|
|
340
366
|
const match = matches[0];
|
|
341
367
|
if (!match) return undefined;
|
|
342
|
-
const dbs = yield*
|
|
343
|
-
projectId,
|
|
344
|
-
match.id,
|
|
345
|
-
);
|
|
368
|
+
const dbs = yield* listProjectBranchDatabases({
|
|
369
|
+
project_id: projectId,
|
|
370
|
+
branch_id: match.id,
|
|
371
|
+
});
|
|
346
372
|
const db = dbs.databases[0];
|
|
347
373
|
if (!db) return undefined;
|
|
348
374
|
const conn = yield* fetchConnection(
|
|
@@ -383,31 +409,33 @@ export const BranchProvider = () =>
|
|
|
383
409
|
// otherwise sync the mutable scalar fields on the existing
|
|
384
410
|
// branch via updateProjectBranch.
|
|
385
411
|
const branchInfo = output
|
|
386
|
-
? yield*
|
|
387
|
-
|
|
412
|
+
? yield* updateProjectBranch({
|
|
413
|
+
project_id: output.projectId,
|
|
414
|
+
branch_id: output.branchId,
|
|
415
|
+
branch: {
|
|
388
416
|
name: newName !== output.branchName ? newName : undefined,
|
|
389
417
|
protected: news.protected,
|
|
390
418
|
expires_at: news.expiresAt ?? null,
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
419
|
+
},
|
|
420
|
+
}).pipe(
|
|
421
|
+
Effect.map((r) => ({
|
|
422
|
+
branchId: output.branchId,
|
|
423
|
+
branchName: r.branch.name,
|
|
424
|
+
projectId: output.projectId,
|
|
425
|
+
parentBranchId: output.parentBranchId,
|
|
426
|
+
parentLsn: output.parentLsn,
|
|
427
|
+
parentTimestamp: output.parentTimestamp,
|
|
428
|
+
initSource: output.initSource,
|
|
429
|
+
protected: r.branch.protected,
|
|
430
|
+
default: output.default,
|
|
431
|
+
expiresAt: r.branch.expires_at,
|
|
432
|
+
databaseName: output.databaseName,
|
|
433
|
+
roleName: output.roleName,
|
|
434
|
+
connectionUri: output.connectionUri,
|
|
435
|
+
pooledConnectionUri: output.pooledConnectionUri,
|
|
436
|
+
origin: output.origin,
|
|
437
|
+
})),
|
|
438
|
+
)
|
|
411
439
|
: yield* Effect.gen(function* () {
|
|
412
440
|
const projectId = resolveProjectId(
|
|
413
441
|
news.project as BranchSource,
|
|
@@ -416,17 +444,20 @@ export const BranchProvider = () =>
|
|
|
416
444
|
news.parentBranch as ParentBranchSource | undefined,
|
|
417
445
|
projectId,
|
|
418
446
|
);
|
|
419
|
-
const created = yield*
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
447
|
+
const created = yield* createProjectBranch({
|
|
448
|
+
project_id: projectId,
|
|
449
|
+
branch: {
|
|
450
|
+
name: newName,
|
|
451
|
+
parent_id: parentBranchId,
|
|
452
|
+
parent_lsn: news.parentLsn,
|
|
453
|
+
parent_timestamp: news.parentTimestamp,
|
|
454
|
+
init_source: news.initSource,
|
|
455
|
+
protected: news.protected,
|
|
456
|
+
expires_at: news.expiresAt,
|
|
457
|
+
},
|
|
427
458
|
endpoints: buildEndpoints(news.endpoints),
|
|
428
459
|
});
|
|
429
|
-
yield*
|
|
460
|
+
yield* waitForOperations(created.operations);
|
|
430
461
|
|
|
431
462
|
const db = created.databases[0];
|
|
432
463
|
if (!db) {
|
|
@@ -492,7 +523,10 @@ export const BranchProvider = () =>
|
|
|
492
523
|
};
|
|
493
524
|
}),
|
|
494
525
|
delete: Effect.fn(function* ({ output }) {
|
|
495
|
-
yield*
|
|
526
|
+
yield* deleteProjectBranch({
|
|
527
|
+
project_id: output.projectId,
|
|
528
|
+
branch_id: output.branchId,
|
|
529
|
+
}).pipe(Effect.catchTag("NotFound", () => Effect.void));
|
|
496
530
|
}),
|
|
497
531
|
};
|
|
498
532
|
}),
|