alchemy 2.0.0-beta.61 → 2.0.0-beta.62
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 +15 -0
- package/bin/exec.js +71 -12
- package/bin/exec.js.map +1 -1
- package/lib/AWS/ACM/Certificate.d.ts.map +1 -1
- package/lib/AWS/ACM/Certificate.js +16 -4
- package/lib/AWS/ACM/Certificate.js.map +1 -1
- package/lib/AWS/ApiGateway/common.d.ts.map +1 -1
- package/lib/AWS/ApiGateway/common.js +6 -3
- package/lib/AWS/ApiGateway/common.js.map +1 -1
- package/lib/AWS/AuthProvider.d.ts.map +1 -1
- package/lib/AWS/AuthProvider.js +1 -1
- package/lib/AWS/AuthProvider.js.map +1 -1
- package/lib/AWS/AutoScaling/AutoScalingGroup.d.ts.map +1 -1
- package/lib/AWS/AutoScaling/AutoScalingGroup.js +8 -2
- package/lib/AWS/AutoScaling/AutoScalingGroup.js.map +1 -1
- package/lib/AWS/Bootstrap.d.ts.map +1 -1
- package/lib/AWS/Bootstrap.js +5 -2
- package/lib/AWS/Bootstrap.js.map +1 -1
- package/lib/AWS/CloudFront/Distribution.d.ts.map +1 -1
- package/lib/AWS/CloudFront/Distribution.js +20 -5
- package/lib/AWS/CloudFront/Distribution.js.map +1 -1
- package/lib/AWS/CloudFront/Function.js +5 -2
- package/lib/AWS/CloudFront/Function.js.map +1 -1
- package/lib/AWS/CloudFront/Invalidation.d.ts.map +1 -1
- package/lib/AWS/CloudFront/Invalidation.js +4 -1
- package/lib/AWS/CloudFront/Invalidation.js.map +1 -1
- package/lib/AWS/CloudFront/KvEntries.d.ts.map +1 -1
- package/lib/AWS/CloudFront/KvEntries.js +4 -1
- package/lib/AWS/CloudFront/KvEntries.js.map +1 -1
- package/lib/AWS/CloudFront/KvRoutesUpdate.d.ts.map +1 -1
- package/lib/AWS/CloudFront/KvRoutesUpdate.js +8 -2
- package/lib/AWS/CloudFront/KvRoutesUpdate.js.map +1 -1
- package/lib/AWS/CloudFront/VpcOrigin.d.ts.map +1 -1
- package/lib/AWS/CloudFront/VpcOrigin.js +12 -3
- package/lib/AWS/CloudFront/VpcOrigin.js.map +1 -1
- package/lib/AWS/CloudFront/common.d.ts.map +1 -1
- package/lib/AWS/CloudFront/common.js +5 -2
- package/lib/AWS/CloudFront/common.js.map +1 -1
- package/lib/AWS/CloudWatch/AnomalyDetector.d.ts.map +1 -1
- package/lib/AWS/CloudWatch/AnomalyDetector.js +4 -1
- package/lib/AWS/CloudWatch/AnomalyDetector.js.map +1 -1
- package/lib/AWS/CloudWatch/common.d.ts.map +1 -1
- package/lib/AWS/CloudWatch/common.js +1 -1
- package/lib/AWS/CloudWatch/common.js.map +1 -1
- package/lib/AWS/DynamoDB/Table.d.ts.map +1 -1
- package/lib/AWS/DynamoDB/Table.js +53 -20
- package/lib/AWS/DynamoDB/Table.js.map +1 -1
- package/lib/AWS/EC2/EIP.d.ts.map +1 -1
- package/lib/AWS/EC2/EIP.js +4 -1
- package/lib/AWS/EC2/EIP.js.map +1 -1
- package/lib/AWS/EC2/EgressOnlyInternetGateway.d.ts.map +1 -1
- package/lib/AWS/EC2/EgressOnlyInternetGateway.js +4 -2
- package/lib/AWS/EC2/EgressOnlyInternetGateway.js.map +1 -1
- package/lib/AWS/EC2/Instance.d.ts.map +1 -1
- package/lib/AWS/EC2/Instance.js +12 -3
- package/lib/AWS/EC2/Instance.js.map +1 -1
- package/lib/AWS/EC2/InternetGateway.d.ts.map +1 -1
- package/lib/AWS/EC2/InternetGateway.js +12 -5
- package/lib/AWS/EC2/InternetGateway.js.map +1 -1
- package/lib/AWS/EC2/NatGateway.js +2 -4
- package/lib/AWS/EC2/NatGateway.js.map +1 -1
- package/lib/AWS/EC2/NetworkAcl.d.ts.map +1 -1
- package/lib/AWS/EC2/NetworkAcl.js +4 -1
- package/lib/AWS/EC2/NetworkAcl.js.map +1 -1
- package/lib/AWS/EC2/NetworkAclEntry.d.ts.map +1 -1
- package/lib/AWS/EC2/NetworkAclEntry.js +4 -1
- package/lib/AWS/EC2/NetworkAclEntry.js.map +1 -1
- package/lib/AWS/EC2/RouteTable.d.ts.map +1 -1
- package/lib/AWS/EC2/RouteTable.js +8 -6
- package/lib/AWS/EC2/RouteTable.js.map +1 -1
- package/lib/AWS/EC2/RouteTableAssociation.js +2 -5
- package/lib/AWS/EC2/RouteTableAssociation.js.map +1 -1
- package/lib/AWS/EC2/SecurityGroup.d.ts.map +1 -1
- package/lib/AWS/EC2/SecurityGroup.js +8 -3
- package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
- package/lib/AWS/EC2/Subnet.d.ts.map +1 -1
- package/lib/AWS/EC2/Subnet.js +10 -6
- package/lib/AWS/EC2/Subnet.js.map +1 -1
- package/lib/AWS/EC2/Vpc.d.ts.map +1 -1
- package/lib/AWS/EC2/Vpc.js +7 -7
- package/lib/AWS/EC2/Vpc.js.map +1 -1
- package/lib/AWS/EC2/VpcEndpoint.js +2 -4
- package/lib/AWS/EC2/VpcEndpoint.js.map +1 -1
- package/lib/AWS/ECS/Service.d.ts.map +1 -1
- package/lib/AWS/ECS/Service.js +4 -1
- package/lib/AWS/ECS/Service.js.map +1 -1
- package/lib/AWS/EKS/Addon.js +8 -2
- package/lib/AWS/EKS/Addon.js.map +1 -1
- package/lib/AWS/EKS/Cluster.d.ts.map +1 -1
- package/lib/AWS/EKS/Cluster.js +4 -1
- package/lib/AWS/EKS/Cluster.js.map +1 -1
- package/lib/AWS/ELBv2/TargetGroup.d.ts.map +1 -1
- package/lib/AWS/ELBv2/TargetGroup.js +4 -1
- package/lib/AWS/ELBv2/TargetGroup.js.map +1 -1
- package/lib/AWS/ELBv2/TrustStore.d.ts.map +1 -1
- package/lib/AWS/ELBv2/TrustStore.js +4 -1
- package/lib/AWS/ELBv2/TrustStore.js.map +1 -1
- package/lib/AWS/IAM/SAMLProvider.js +4 -1
- package/lib/AWS/IAM/SAMLProvider.js.map +1 -1
- package/lib/AWS/IdentityCenter/AccountAssignment.js +8 -2
- package/lib/AWS/IdentityCenter/AccountAssignment.js.map +1 -1
- package/lib/AWS/IdentityCenter/common.d.ts.map +1 -1
- package/lib/AWS/IdentityCenter/common.js +1 -1
- package/lib/AWS/IdentityCenter/common.js.map +1 -1
- package/lib/AWS/KMS/Alias.js +4 -1
- package/lib/AWS/KMS/Alias.js.map +1 -1
- package/lib/AWS/KMS/Key.js +4 -1
- package/lib/AWS/KMS/Key.js.map +1 -1
- package/lib/AWS/Kinesis/Stream.d.ts.map +1 -1
- package/lib/AWS/Kinesis/Stream.js +2 -2
- package/lib/AWS/Kinesis/Stream.js.map +1 -1
- package/lib/AWS/Kinesis/StreamConsumer.d.ts.map +1 -1
- package/lib/AWS/Kinesis/StreamConsumer.js +7 -4
- package/lib/AWS/Kinesis/StreamConsumer.js.map +1 -1
- package/lib/AWS/Lambda/Alias.d.ts.map +1 -1
- package/lib/AWS/Lambda/Alias.js +4 -1
- package/lib/AWS/Lambda/Alias.js.map +1 -1
- package/lib/AWS/Lambda/EventInvokeConfig.d.ts.map +1 -1
- package/lib/AWS/Lambda/EventInvokeConfig.js +2 -2
- package/lib/AWS/Lambda/EventInvokeConfig.js.map +1 -1
- package/lib/AWS/Lambda/EventSourceMapping.d.ts.map +1 -1
- package/lib/AWS/Lambda/EventSourceMapping.js +10 -4
- package/lib/AWS/Lambda/EventSourceMapping.js.map +1 -1
- package/lib/AWS/Lambda/Function.d.ts +16 -1
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +101 -26
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Lambda/MicrovmProvider.d.ts.map +1 -1
- package/lib/AWS/Lambda/MicrovmProvider.js +13 -5
- package/lib/AWS/Lambda/MicrovmProvider.js.map +1 -1
- package/lib/AWS/Lambda/NetworkConnector.js +13 -5
- package/lib/AWS/Lambda/NetworkConnector.js.map +1 -1
- package/lib/AWS/Lambda/RuntimeExtension.d.ts +27 -0
- package/lib/AWS/Lambda/RuntimeExtension.d.ts.map +1 -0
- package/lib/AWS/Lambda/RuntimeExtension.js +49 -0
- package/lib/AWS/Lambda/RuntimeExtension.js.map +1 -0
- package/lib/AWS/Organizations/Account.js +5 -2
- package/lib/AWS/Organizations/Account.js.map +1 -1
- package/lib/AWS/Organizations/common.d.ts.map +1 -1
- package/lib/AWS/Organizations/common.js +1 -1
- package/lib/AWS/Organizations/common.js.map +1 -1
- package/lib/AWS/Providers.js +14 -12
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/AWS/RDS/DBCluster.d.ts.map +1 -1
- package/lib/AWS/RDS/DBCluster.js +8 -2
- package/lib/AWS/RDS/DBCluster.js.map +1 -1
- package/lib/AWS/RDS/DBInstance.d.ts.map +1 -1
- package/lib/AWS/RDS/DBInstance.js +8 -2
- package/lib/AWS/RDS/DBInstance.js.map +1 -1
- package/lib/AWS/RDS/DBProxy.d.ts.map +1 -1
- package/lib/AWS/RDS/DBProxy.js +4 -1
- package/lib/AWS/RDS/DBProxy.js.map +1 -1
- package/lib/AWS/RDS/DBProxyEndpoint.d.ts.map +1 -1
- package/lib/AWS/RDS/DBProxyEndpoint.js +4 -1
- package/lib/AWS/RDS/DBProxyEndpoint.js.map +1 -1
- package/lib/AWS/Route53/HealthCheck.d.ts.map +1 -1
- package/lib/AWS/Route53/HealthCheck.js +8 -2
- package/lib/AWS/Route53/HealthCheck.js.map +1 -1
- package/lib/AWS/Route53/HostedZone.d.ts.map +1 -1
- package/lib/AWS/Route53/HostedZone.js +8 -2
- package/lib/AWS/Route53/HostedZone.js.map +1 -1
- package/lib/AWS/Route53/Record.d.ts.map +1 -1
- package/lib/AWS/Route53/Record.js +4 -1
- package/lib/AWS/Route53/Record.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/SQS/Queue.d.ts.map +1 -1
- package/lib/AWS/SQS/Queue.js +25 -7
- package/lib/AWS/SQS/Queue.js.map +1 -1
- package/lib/AWS/StateStore/State.js +5 -2
- package/lib/AWS/StateStore/State.js.map +1 -1
- package/lib/AWS/Website/AssetDeployment.js +5 -2
- package/lib/AWS/Website/AssetDeployment.js.map +1 -1
- package/lib/Apply.js +8 -0
- package/lib/Apply.js.map +1 -1
- package/lib/Auth/AuthProvider.d.ts +10 -0
- package/lib/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Auth/AuthProvider.js +10 -0
- package/lib/Auth/AuthProvider.js.map +1 -1
- package/lib/Axiom/AuthProvider.d.ts.map +1 -1
- package/lib/Axiom/AuthProvider.js +1 -1
- package/lib/Axiom/AuthProvider.js.map +1 -1
- package/lib/Bundle/Vite.d.ts +1 -1
- package/lib/Bundle/Vite.d.ts.map +1 -1
- package/lib/Bundle/Vite.js +14 -12
- package/lib/Bundle/Vite.js.map +1 -1
- package/lib/Cli/commands/_shared.d.ts +55 -5
- package/lib/Cli/commands/_shared.d.ts.map +1 -1
- package/lib/Cli/commands/_shared.js +62 -2
- package/lib/Cli/commands/_shared.js.map +1 -1
- package/lib/Cli/commands/login.d.ts.map +1 -1
- package/lib/Cli/commands/login.js +9 -20
- package/lib/Cli/commands/login.js.map +1 -1
- package/lib/Cli/commands/logs.d.ts.map +1 -1
- package/lib/Cli/commands/logs.js +1 -0
- package/lib/Cli/commands/logs.js.map +1 -1
- package/lib/Cli/commands/nuke.d.ts.map +1 -1
- package/lib/Cli/commands/nuke.js +15 -24
- package/lib/Cli/commands/nuke.js.map +1 -1
- package/lib/Cli/commands/profile.d.ts +23 -1
- package/lib/Cli/commands/profile.d.ts.map +1 -1
- package/lib/Cli/commands/profile.js +47 -10
- package/lib/Cli/commands/profile.js.map +1 -1
- package/lib/Cli/commands/tail.d.ts.map +1 -1
- package/lib/Cli/commands/tail.js +1 -0
- package/lib/Cli/commands/tail.js.map +1 -1
- package/lib/Cloudflare/AI/GatewayDynamicRouting.d.ts.map +1 -1
- package/lib/Cloudflare/AI/GatewayDynamicRouting.js +31 -2
- package/lib/Cloudflare/AI/GatewayDynamicRouting.js.map +1 -1
- package/lib/Cloudflare/AI/SearchInstance.js +4 -1
- package/lib/Cloudflare/AI/SearchInstance.js.map +1 -1
- package/lib/Cloudflare/Access/Application.d.ts.map +1 -1
- package/lib/Cloudflare/Access/Application.js +7 -1
- package/lib/Cloudflare/Access/Application.js.map +1 -1
- package/lib/Cloudflare/Alerting/Silence.d.ts.map +1 -1
- package/lib/Cloudflare/Alerting/Silence.js +4 -1
- package/lib/Cloudflare/Alerting/Silence.js.map +1 -1
- package/lib/Cloudflare/Alerting/Webhook.d.ts.map +1 -1
- package/lib/Cloudflare/Alerting/Webhook.js +8 -2
- package/lib/Cloudflare/Alerting/Webhook.js.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js +22 -7
- package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
- package/lib/Cloudflare/Auth/OAuthClient.d.ts.map +1 -1
- package/lib/Cloudflare/Auth/OAuthClient.js +6 -7
- package/lib/Cloudflare/Auth/OAuthClient.js.map +1 -1
- package/lib/Cloudflare/Cache/RegionalTieredCache.d.ts.map +1 -1
- package/lib/Cloudflare/Cache/RegionalTieredCache.js +7 -1
- package/lib/Cloudflare/Cache/RegionalTieredCache.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts +18 -2
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.js +1 -0
- package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerBundle.d.ts +29 -3
- package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerBundle.js +73 -22
- package/lib/Cloudflare/Containers/ContainerBundle.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerProvider.js +53 -14
- package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
- package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts +6 -6
- package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/LocalContainerProvider.js +69 -47
- package/lib/Cloudflare/Containers/LocalContainerProvider.js.map +1 -1
- package/lib/Cloudflare/Diagnostics/EndpointHealthcheck.js +4 -1
- package/lib/Cloudflare/Diagnostics/EndpointHealthcheck.js.map +1 -1
- package/lib/Cloudflare/Images/Variant.d.ts.map +1 -1
- package/lib/Cloudflare/Images/Variant.js +4 -1
- package/lib/Cloudflare/Images/Variant.js.map +1 -1
- package/lib/Cloudflare/LoadBalancer/Monitor.d.ts.map +1 -1
- package/lib/Cloudflare/LoadBalancer/Monitor.js +4 -1
- package/lib/Cloudflare/LoadBalancer/Monitor.js.map +1 -1
- package/lib/Cloudflare/LoadBalancer/MonitorGroup.d.ts.map +1 -1
- package/lib/Cloudflare/LoadBalancer/MonitorGroup.js +4 -1
- package/lib/Cloudflare/LoadBalancer/MonitorGroup.js.map +1 -1
- package/lib/Cloudflare/LoadBalancer/Pool.d.ts.map +1 -1
- package/lib/Cloudflare/LoadBalancer/Pool.js +4 -1
- package/lib/Cloudflare/LoadBalancer/Pool.js.map +1 -1
- package/lib/Cloudflare/LocalRuntime.d.ts +14 -0
- package/lib/Cloudflare/LocalRuntime.d.ts.map +1 -1
- package/lib/Cloudflare/LocalRuntime.js +1 -0
- package/lib/Cloudflare/LocalRuntime.js.map +1 -1
- package/lib/Cloudflare/MagicNetworkMonitoring/Rule.d.ts.map +1 -1
- package/lib/Cloudflare/MagicNetworkMonitoring/Rule.js +4 -1
- package/lib/Cloudflare/MagicNetworkMonitoring/Rule.js.map +1 -1
- package/lib/Cloudflare/Pipelines/Pipeline.d.ts.map +1 -1
- package/lib/Cloudflare/Pipelines/Pipeline.js +8 -2
- package/lib/Cloudflare/Pipelines/Pipeline.js.map +1 -1
- package/lib/Cloudflare/Pipelines/Sink.d.ts.map +1 -1
- package/lib/Cloudflare/Pipelines/Sink.js +8 -2
- package/lib/Cloudflare/Pipelines/Sink.js.map +1 -1
- package/lib/Cloudflare/Pipelines/Stream.d.ts.map +1 -1
- package/lib/Cloudflare/Pipelines/Stream.js +4 -1
- package/lib/Cloudflare/Pipelines/Stream.js.map +1 -1
- package/lib/Cloudflare/Providers.js +14 -11
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/Consumer.js +30 -3
- package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
- package/lib/Cloudflare/Queues/Queue.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/Queue.js +4 -1
- package/lib/Cloudflare/Queues/Queue.js.map +1 -1
- package/lib/Cloudflare/R2/Bucket.js +12 -3
- package/lib/Cloudflare/R2/Bucket.js.map +1 -1
- package/lib/Cloudflare/R2/BucketEventNotification.js +4 -1
- package/lib/Cloudflare/R2/BucketEventNotification.js.map +1 -1
- package/lib/Cloudflare/R2/DataCatalog.js +4 -1
- package/lib/Cloudflare/R2/DataCatalog.js.map +1 -1
- package/lib/Cloudflare/Rum/Rule.d.ts.map +1 -1
- package/lib/Cloudflare/Rum/Rule.js +4 -1
- package/lib/Cloudflare/Rum/Rule.js.map +1 -1
- package/lib/Cloudflare/Snippets/Snippet.d.ts.map +1 -1
- package/lib/Cloudflare/Snippets/Snippet.js +4 -1
- package/lib/Cloudflare/Snippets/Snippet.js.map +1 -1
- package/lib/Cloudflare/StateStore/CredentialsFile.d.ts +42 -0
- package/lib/Cloudflare/StateStore/CredentialsFile.d.ts.map +1 -0
- package/lib/Cloudflare/StateStore/CredentialsFile.js +23 -0
- package/lib/Cloudflare/StateStore/CredentialsFile.js.map +1 -0
- package/lib/Cloudflare/StateStore/State.d.ts +2 -2
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/State.js +46 -9
- package/lib/Cloudflare/StateStore/State.js.map +1 -1
- package/lib/Cloudflare/Tags/ZoneResourceTags.d.ts.map +1 -1
- package/lib/Cloudflare/Tags/ZoneResourceTags.js +4 -1
- package/lib/Cloudflare/Tags/ZoneResourceTags.js.map +1 -1
- package/lib/Cloudflare/UrlNormalization/UrlNormalization.d.ts.map +1 -1
- package/lib/Cloudflare/UrlNormalization/UrlNormalization.js +7 -1
- package/lib/Cloudflare/UrlNormalization/UrlNormalization.js.map +1 -1
- package/lib/Cloudflare/WaitingRoom/Settings.d.ts.map +1 -1
- package/lib/Cloudflare/WaitingRoom/Settings.js +7 -1
- package/lib/Cloudflare/WaitingRoom/Settings.js.map +1 -1
- package/lib/Cloudflare/Website/Vite.d.ts +19 -0
- package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Website/Vite.js +20 -0
- package/lib/Cloudflare/Website/Vite.js.map +1 -1
- package/lib/Cloudflare/Workers/Compatibility.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Compatibility.js +43 -7
- package/lib/Cloudflare/Workers/Compatibility.js.map +1 -1
- package/lib/Cloudflare/Workers/CronEventSource.d.ts +3 -2
- package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/CronEventSource.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectBridge.js +86 -82
- package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/HttpServer.d.ts +1 -4
- package/lib/Cloudflare/Workers/HttpServer.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/HttpServer.js +1 -3
- package/lib/Cloudflare/Workers/HttpServer.js.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +74 -11
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/ObservabilityDestination.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/ObservabilityDestination.js +4 -1
- package/lib/Cloudflare/Workers/ObservabilityDestination.js.map +1 -1
- package/lib/Cloudflare/Workers/Vite.d.ts +1 -1
- package/lib/Cloudflare/Workers/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +27 -5
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +10 -5
- 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 +24 -15
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBridge.d.ts +13 -5
- package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBridge.js +126 -50
- package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.js +26 -7
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/cloudflare_workers.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/cloudflare_workers.js +10 -3
- package/lib/Cloudflare/Workers/cloudflare_workers.js.map +1 -1
- package/lib/Cloudflare/Workflows/Workflow.d.ts +10 -7
- package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/Workflow.js +38 -13
- package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.js +39 -37
- package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowName.d.ts +11 -0
- package/lib/Cloudflare/Workflows/WorkflowName.d.ts.map +1 -0
- package/lib/Cloudflare/Workflows/WorkflowName.js +28 -0
- package/lib/Cloudflare/Workflows/WorkflowName.js.map +1 -0
- package/lib/Cloudflare/Zone/Hold.d.ts.map +1 -1
- package/lib/Cloudflare/Zone/Hold.js +7 -1
- package/lib/Cloudflare/Zone/Hold.js.map +1 -1
- package/lib/Command/Dev.d.ts +16 -6
- package/lib/Command/Dev.d.ts.map +1 -1
- package/lib/Command/Dev.js +37 -7
- package/lib/Command/Dev.js.map +1 -1
- package/lib/Docker/Container.js +4 -1
- package/lib/Docker/Container.js.map +1 -1
- package/lib/Drizzle/Postgres.d.ts +14 -13
- package/lib/Drizzle/Postgres.d.ts.map +1 -1
- package/lib/Drizzle/Postgres.js +39 -19
- package/lib/Drizzle/Postgres.js.map +1 -1
- package/lib/GitHub/AuthProvider.d.ts.map +1 -1
- package/lib/GitHub/AuthProvider.js +1 -1
- package/lib/GitHub/AuthProvider.js.map +1 -1
- package/lib/GitHub/Env.d.ts +20 -0
- package/lib/GitHub/Env.d.ts.map +1 -0
- package/lib/GitHub/Env.js +27 -0
- package/lib/GitHub/Env.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/Http.d.ts +9 -0
- package/lib/Http.d.ts.map +1 -1
- package/lib/Http.js +9 -0
- package/lib/Http.js.map +1 -1
- package/lib/Local/RpcProviderProxy.js +1 -1
- package/lib/Local/RpcProviderProxy.js.map +1 -1
- package/lib/Neon/AuthProvider.d.ts.map +1 -1
- package/lib/Neon/AuthProvider.js +1 -1
- package/lib/Neon/AuthProvider.js.map +1 -1
- package/lib/Neon/Project.js +4 -1
- package/lib/Neon/Project.js.map +1 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +28 -11
- package/lib/Plan.js.map +1 -1
- package/lib/Planetscale/AuthProvider.d.ts +26 -9
- package/lib/Planetscale/AuthProvider.d.ts.map +1 -1
- package/lib/Planetscale/AuthProvider.js +142 -11
- package/lib/Planetscale/AuthProvider.js.map +1 -1
- package/lib/Planetscale/Branch.d.ts.map +1 -1
- package/lib/Planetscale/Branch.js +4 -1
- package/lib/Planetscale/Branch.js.map +1 -1
- package/lib/Planetscale/Credentials.d.ts.map +1 -1
- package/lib/Planetscale/Credentials.js +14 -6
- package/lib/Planetscale/Credentials.js.map +1 -1
- package/lib/Planetscale/MySQL/MySQLMigrations.js +4 -1
- package/lib/Planetscale/MySQL/MySQLMigrations.js.map +1 -1
- package/lib/Planetscale/OAuthClient.d.ts +72 -0
- package/lib/Planetscale/OAuthClient.d.ts.map +1 -0
- package/lib/Planetscale/OAuthClient.js +227 -0
- package/lib/Planetscale/OAuthClient.js.map +1 -0
- package/lib/Planetscale/Postgres/PostgresClusterSize.d.ts.map +1 -1
- package/lib/Planetscale/Postgres/PostgresClusterSize.js +4 -1
- package/lib/Planetscale/Postgres/PostgresClusterSize.js.map +1 -1
- package/lib/Planetscale/Postgres/PostgresMigrations.js +4 -1
- package/lib/Planetscale/Postgres/PostgresMigrations.js.map +1 -1
- package/lib/Planetscale/Util.d.ts.map +1 -1
- package/lib/Planetscale/Util.js +4 -1
- package/lib/Planetscale/Util.js.map +1 -1
- package/lib/Platform.d.ts +2 -3
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Platform.js +52 -3
- package/lib/Platform.js.map +1 -1
- package/lib/Provider.d.ts +35 -0
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js.map +1 -1
- package/lib/State/HttpStateApi.d.ts +8 -8
- package/lib/State/HttpStateStore.js +5 -2
- package/lib/State/HttpStateStore.js.map +1 -1
- package/lib/Sync.d.ts.map +1 -1
- package/lib/Sync.js +3 -0
- package/lib/Sync.js.map +1 -1
- package/lib/Test/Http.d.ts.map +1 -1
- package/lib/Test/Http.js +8 -2
- package/lib/Test/Http.js.map +1 -1
- package/lib/Util/data.d.ts +6 -1
- package/lib/Util/data.d.ts.map +1 -1
- package/lib/Util/data.js.map +1 -1
- package/lib/Util/poll.js +1 -1
- package/lib/Util/poll.js.map +1 -1
- package/package.json +20 -20
- package/src/AWS/ACM/Certificate.ts +16 -12
- package/src/AWS/ApiGateway/common.ts +11 -8
- package/src/AWS/AuthProvider.ts +0 -3
- package/src/AWS/AutoScaling/AutoScalingGroup.ts +8 -6
- package/src/AWS/Bootstrap.ts +5 -6
- package/src/AWS/CloudFront/Distribution.ts +20 -16
- package/src/AWS/CloudFront/Function.ts +10 -6
- package/src/AWS/CloudFront/Invalidation.ts +4 -3
- package/src/AWS/CloudFront/KvEntries.ts +4 -3
- package/src/AWS/CloudFront/KvRoutesUpdate.ts +8 -6
- package/src/AWS/CloudFront/VpcOrigin.ts +12 -9
- package/src/AWS/CloudFront/common.ts +10 -6
- package/src/AWS/CloudWatch/AnomalyDetector.ts +4 -3
- package/src/AWS/CloudWatch/common.ts +1 -3
- package/src/AWS/DynamoDB/Table.ts +57 -47
- package/src/AWS/EC2/EIP.ts +6 -4
- package/src/AWS/EC2/EgressOnlyInternetGateway.ts +6 -4
- package/src/AWS/EC2/Instance.ts +12 -9
- package/src/AWS/EC2/InternetGateway.ts +18 -12
- package/src/AWS/EC2/NatGateway.ts +6 -10
- package/src/AWS/EC2/NetworkAcl.ts +6 -4
- package/src/AWS/EC2/NetworkAclEntry.ts +4 -3
- package/src/AWS/EC2/RouteTable.ts +12 -9
- package/src/AWS/EC2/RouteTableAssociation.ts +3 -5
- package/src/AWS/EC2/SecurityGroup.ts +10 -7
- package/src/AWS/EC2/Subnet.ts +15 -15
- package/src/AWS/EC2/Vpc.ts +12 -12
- package/src/AWS/EC2/VpcEndpoint.ts +6 -8
- package/src/AWS/ECS/Service.ts +4 -3
- package/src/AWS/EKS/Addon.ts +8 -6
- package/src/AWS/EKS/Cluster.ts +4 -3
- package/src/AWS/ELBv2/TargetGroup.ts +4 -3
- package/src/AWS/ELBv2/TrustStore.ts +4 -3
- package/src/AWS/IAM/SAMLProvider.ts +4 -4
- package/src/AWS/IdentityCenter/AccountAssignment.ts +8 -6
- package/src/AWS/IdentityCenter/common.ts +1 -3
- package/src/AWS/KMS/Alias.ts +4 -3
- package/src/AWS/KMS/Key.ts +4 -3
- package/src/AWS/Kinesis/Stream.ts +2 -6
- package/src/AWS/Kinesis/StreamConsumer.ts +7 -12
- package/src/AWS/Lambda/Alias.ts +4 -3
- package/src/AWS/Lambda/EventInvokeConfig.ts +2 -6
- package/src/AWS/Lambda/EventSourceMapping.ts +10 -8
- package/src/AWS/Lambda/Function.ts +111 -31
- package/src/AWS/Lambda/MicrovmProvider.ts +18 -16
- package/src/AWS/Lambda/NetworkConnector.ts +19 -15
- package/src/AWS/Lambda/RuntimeExtension.ts +46 -0
- package/src/AWS/Organizations/Account.ts +5 -6
- package/src/AWS/Organizations/common.ts +1 -3
- package/src/AWS/Providers.ts +22 -20
- package/src/AWS/RDS/DBCluster.ts +8 -6
- package/src/AWS/RDS/DBInstance.ts +8 -6
- package/src/AWS/RDS/DBProxy.ts +4 -3
- package/src/AWS/RDS/DBProxyEndpoint.ts +4 -3
- package/src/AWS/Route53/HealthCheck.ts +8 -6
- package/src/AWS/Route53/HostedZone.ts +8 -6
- package/src/AWS/Route53/Record.ts +4 -3
- package/src/AWS/S3/Bucket.ts +5 -4
- package/src/AWS/SQS/Queue.ts +26 -20
- package/src/AWS/StateStore/State.ts +5 -4
- package/src/AWS/Website/AssetDeployment.ts +10 -6
- package/src/Apply.ts +8 -0
- package/src/Auth/AuthProvider.ts +11 -0
- package/src/Axiom/AuthProvider.ts +0 -3
- package/src/Bundle/Vite.ts +16 -15
- package/src/Cli/commands/_shared.ts +119 -5
- package/src/Cli/commands/login.ts +9 -40
- package/src/Cli/commands/logs.ts +1 -0
- package/src/Cli/commands/nuke.ts +16 -44
- package/src/Cli/commands/profile.ts +89 -27
- package/src/Cli/commands/tail.ts +1 -0
- package/src/Cloudflare/AI/GatewayDynamicRouting.ts +38 -6
- package/src/Cloudflare/AI/SearchInstance.ts +4 -3
- package/src/Cloudflare/Access/Application.ts +7 -4
- package/src/Cloudflare/Alerting/Silence.ts +4 -3
- package/src/Cloudflare/Alerting/Webhook.ts +8 -6
- package/src/Cloudflare/Auth/AuthProvider.ts +54 -38
- package/src/Cloudflare/Auth/OAuthClient.ts +6 -7
- package/src/Cloudflare/Cache/RegionalTieredCache.ts +7 -4
- package/src/Cloudflare/Containers/ContainerApplication.ts +22 -2
- package/src/Cloudflare/Containers/ContainerBundle.ts +99 -33
- package/src/Cloudflare/Containers/ContainerProvider.ts +73 -19
- package/src/Cloudflare/Containers/LocalContainerProvider.ts +78 -72
- package/src/Cloudflare/Diagnostics/EndpointHealthcheck.ts +4 -3
- package/src/Cloudflare/Images/Variant.ts +4 -3
- package/src/Cloudflare/LoadBalancer/Monitor.ts +4 -3
- package/src/Cloudflare/LoadBalancer/MonitorGroup.ts +4 -3
- package/src/Cloudflare/LoadBalancer/Pool.ts +4 -3
- package/src/Cloudflare/LocalRuntime.ts +17 -0
- package/src/Cloudflare/MagicNetworkMonitoring/Rule.ts +4 -3
- package/src/Cloudflare/Pipelines/Pipeline.ts +8 -6
- package/src/Cloudflare/Pipelines/Sink.ts +8 -6
- package/src/Cloudflare/Pipelines/Stream.ts +4 -3
- package/src/Cloudflare/Providers.ts +21 -19
- package/src/Cloudflare/Queues/Consumer.ts +45 -9
- package/src/Cloudflare/Queues/Queue.ts +4 -3
- package/src/Cloudflare/R2/Bucket.ts +12 -9
- package/src/Cloudflare/R2/BucketEventNotification.ts +4 -3
- package/src/Cloudflare/R2/DataCatalog.ts +4 -3
- package/src/Cloudflare/Rum/Rule.ts +4 -3
- package/src/Cloudflare/Snippets/Snippet.ts +4 -3
- package/src/Cloudflare/StateStore/CredentialsFile.ts +48 -0
- package/src/Cloudflare/StateStore/State.ts +61 -25
- package/src/Cloudflare/Tags/ZoneResourceTags.ts +4 -3
- package/src/Cloudflare/UrlNormalization/UrlNormalization.ts +7 -4
- package/src/Cloudflare/WaitingRoom/Settings.ts +7 -4
- package/src/Cloudflare/Website/Vite.ts +20 -0
- package/src/Cloudflare/Workers/Compatibility.ts +50 -7
- package/src/Cloudflare/Workers/CronEventSource.ts +3 -2
- package/src/Cloudflare/Workers/DurableObjectBridge.ts +38 -33
- package/src/Cloudflare/Workers/HttpServer.ts +1 -4
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +132 -26
- package/src/Cloudflare/Workers/ObservabilityDestination.ts +4 -3
- package/src/Cloudflare/Workers/Worker.ts +27 -5
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +27 -16
- package/src/Cloudflare/Workers/WorkerBridge.ts +227 -106
- package/src/Cloudflare/Workers/WorkerProvider.ts +26 -19
- package/src/Cloudflare/Workers/cloudflare_workers.ts +20 -12
- package/src/Cloudflare/Workflows/Workflow.ts +54 -20
- package/src/Cloudflare/Workflows/WorkflowBridge.ts +19 -23
- package/src/Cloudflare/Workflows/WorkflowName.ts +41 -0
- package/src/Cloudflare/Zone/Hold.ts +7 -4
- package/src/Command/Dev.ts +42 -10
- package/src/Docker/Container.ts +4 -1
- package/src/Drizzle/Postgres.ts +51 -23
- package/src/GitHub/AuthProvider.ts +0 -3
- package/src/GitHub/Env.ts +57 -0
- package/src/GitHub/index.ts +1 -0
- package/src/Http.ts +11 -0
- package/src/Local/RpcProviderProxy.ts +1 -1
- package/src/Neon/AuthProvider.ts +0 -3
- package/src/Neon/Project.ts +2 -2
- package/src/Plan.ts +28 -11
- package/src/Planetscale/AuthProvider.ts +267 -27
- package/src/Planetscale/Branch.ts +4 -3
- package/src/Planetscale/Credentials.ts +18 -6
- package/src/Planetscale/MySQL/MySQLMigrations.ts +4 -3
- package/src/Planetscale/OAuthClient.ts +307 -0
- package/src/Planetscale/Postgres/PostgresClusterSize.ts +4 -3
- package/src/Planetscale/Postgres/PostgresMigrations.ts +4 -3
- package/src/Planetscale/Util.ts +4 -3
- package/src/Platform.ts +74 -7
- package/src/Provider.ts +35 -0
- package/src/State/HttpStateStore.ts +5 -5
- package/src/Sync.ts +3 -0
- package/src/Test/Http.ts +8 -6
- package/src/Util/data.ts +14 -5
- package/src/Util/poll.ts +1 -1
- package/lib/ExecutionContext.d.ts +0 -18
- package/lib/ExecutionContext.d.ts.map +0 -1
- package/lib/ExecutionContext.js +0 -10
- package/lib/ExecutionContext.js.map +0 -1
- package/src/ExecutionContext.ts +0 -18
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
retryOnce,
|
|
22
22
|
} from "../../Auth/Env.ts";
|
|
23
23
|
import * as Clank from "../../Util/Clank.ts";
|
|
24
|
+
import { CREDENTIALS_FILE as STATE_STORE_CREDENTIALS_FILE } from "../StateStore/CredentialsFile.ts";
|
|
24
25
|
import * as OAuthClient from "./OAuthClient.ts";
|
|
25
26
|
|
|
26
27
|
const options: Array<{
|
|
@@ -343,10 +344,18 @@ export const CloudflareAuth = AuthProviderLayer<
|
|
|
343
344
|
|
|
344
345
|
const configureCredentials = (profileName: string, ctx: ConfigureContext) =>
|
|
345
346
|
Effect.gen(function* () {
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
347
|
+
const config = ctx.ci
|
|
348
|
+
? { method: "env" as const }
|
|
349
|
+
: yield* configureInteractive(profileName);
|
|
350
|
+
// Re-configuring auth may point this profile at a different
|
|
351
|
+
// Cloudflare account. The cached state-store credentials
|
|
352
|
+
// (`~/.alchemy/credentials/{profile}/cloudflare-state-store.json`)
|
|
353
|
+
// are minted per-account, so drop them here; the next deploy
|
|
354
|
+
// re-derives them against the freshly-configured account.
|
|
355
|
+
yield* store
|
|
356
|
+
.delete(profileName, STATE_STORE_CREDENTIALS_FILE)
|
|
357
|
+
.pipe(Effect.ignore);
|
|
358
|
+
return config;
|
|
350
359
|
}).pipe(
|
|
351
360
|
Effect.mapError(
|
|
352
361
|
(e) =>
|
|
@@ -491,40 +500,50 @@ export const CloudflareAuth = AuthProviderLayer<
|
|
|
491
500
|
);
|
|
492
501
|
|
|
493
502
|
const logout = (profileName: string, config: CloudflareAuthConfig) =>
|
|
494
|
-
Match.value(config)
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
503
|
+
Match.value(config)
|
|
504
|
+
.pipe(
|
|
505
|
+
Match.when({ method: "env" }, () => Effect.void),
|
|
506
|
+
Match.when({ method: "stored" }, () =>
|
|
507
|
+
store
|
|
508
|
+
.delete(profileName, "cf-stored")
|
|
509
|
+
.pipe(
|
|
510
|
+
Effect.andThen(
|
|
511
|
+
Clank.success("Cloudflare: stored credentials removed"),
|
|
512
|
+
),
|
|
502
513
|
),
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
514
|
+
),
|
|
515
|
+
Match.when({ method: "oauth" }, () =>
|
|
516
|
+
store
|
|
517
|
+
.read<OAuthClient.OAuthCredentials>(profileName, "cf-oauth")
|
|
518
|
+
.pipe(
|
|
519
|
+
Effect.tap((creds) =>
|
|
520
|
+
creds?.type === "oauth"
|
|
521
|
+
? OAuthClient.revoke(creds).pipe(
|
|
522
|
+
Effect.catchTag("OAuthError", (err) =>
|
|
523
|
+
Clank.warn(
|
|
524
|
+
`Cloudflare: could not revoke OAuth token: ${err.errorDescription}`,
|
|
525
|
+
),
|
|
515
526
|
),
|
|
516
|
-
)
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
527
|
+
)
|
|
528
|
+
: Effect.void,
|
|
529
|
+
),
|
|
530
|
+
Effect.andThen(store.delete(profileName, "cf-oauth")),
|
|
531
|
+
Effect.andThen(
|
|
532
|
+
Clank.success("Cloudflare: OAuth credentials removed."),
|
|
533
|
+
),
|
|
523
534
|
),
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
535
|
+
),
|
|
536
|
+
Match.exhaustive,
|
|
537
|
+
)
|
|
538
|
+
// The cached state-store credentials are derived from the account we
|
|
539
|
+
// just logged out of, so drop them regardless of auth method.
|
|
540
|
+
.pipe(
|
|
541
|
+
Effect.andThen(
|
|
542
|
+
store
|
|
543
|
+
.delete(profileName, STATE_STORE_CREDENTIALS_FILE)
|
|
544
|
+
.pipe(Effect.ignore),
|
|
545
|
+
),
|
|
546
|
+
);
|
|
528
547
|
|
|
529
548
|
const login = (profileName: string, config: CloudflareAuthConfig) =>
|
|
530
549
|
Match.value(config)
|
|
@@ -619,9 +638,6 @@ export const CloudflareAuth = AuthProviderLayer<
|
|
|
619
638
|
Match.exhaustive,
|
|
620
639
|
);
|
|
621
640
|
}),
|
|
622
|
-
Effect.catch((e) =>
|
|
623
|
-
Console.error(` Failed to retrieve credentials: ${e}`),
|
|
624
|
-
),
|
|
625
641
|
);
|
|
626
642
|
|
|
627
643
|
return {
|
|
@@ -2,6 +2,7 @@ import * as Data from "effect/Data";
|
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import crypto from "node:crypto";
|
|
4
4
|
import http from "node:http";
|
|
5
|
+
import { AUTH_ERROR_URL, AUTH_SUCCESS_URL } from "../../Auth/AuthProvider.ts";
|
|
5
6
|
import {
|
|
6
7
|
OAUTH_CLIENT_ID,
|
|
7
8
|
OAUTH_ENDPOINTS,
|
|
@@ -224,7 +225,7 @@ function callbackPromise(
|
|
|
224
225
|
const error = url.searchParams.get("error");
|
|
225
226
|
const errorDescription = url.searchParams.get("error_description");
|
|
226
227
|
if (error) {
|
|
227
|
-
res.writeHead(302, { Location:
|
|
228
|
+
res.writeHead(302, { Location: AUTH_ERROR_URL });
|
|
228
229
|
res.end();
|
|
229
230
|
cleanup();
|
|
230
231
|
reject(
|
|
@@ -239,7 +240,7 @@ function callbackPromise(
|
|
|
239
240
|
const code = url.searchParams.get("code");
|
|
240
241
|
const state = url.searchParams.get("state");
|
|
241
242
|
if (!code || !state) {
|
|
242
|
-
res.writeHead(302, { Location:
|
|
243
|
+
res.writeHead(302, { Location: AUTH_ERROR_URL });
|
|
243
244
|
res.end();
|
|
244
245
|
cleanup();
|
|
245
246
|
reject(
|
|
@@ -252,7 +253,7 @@ function callbackPromise(
|
|
|
252
253
|
}
|
|
253
254
|
|
|
254
255
|
if (state !== authorization.state) {
|
|
255
|
-
res.writeHead(302, { Location:
|
|
256
|
+
res.writeHead(302, { Location: AUTH_ERROR_URL });
|
|
256
257
|
res.end();
|
|
257
258
|
cleanup();
|
|
258
259
|
reject(
|
|
@@ -268,14 +269,12 @@ function callbackPromise(
|
|
|
268
269
|
const credentials = await Effect.runPromise(
|
|
269
270
|
exchange(code, authorization.verifier),
|
|
270
271
|
);
|
|
271
|
-
res.writeHead(302, {
|
|
272
|
-
Location: "https://alchemy.run/auth/success",
|
|
273
|
-
});
|
|
272
|
+
res.writeHead(302, { Location: AUTH_SUCCESS_URL });
|
|
274
273
|
res.end();
|
|
275
274
|
cleanup();
|
|
276
275
|
resolve(credentials);
|
|
277
276
|
} catch (err) {
|
|
278
|
-
res.writeHead(302, { Location:
|
|
277
|
+
res.writeHead(302, { Location: AUTH_ERROR_URL });
|
|
279
278
|
res.end();
|
|
280
279
|
cleanup();
|
|
281
280
|
reject(err);
|
|
@@ -114,10 +114,13 @@ const desiredValue = (props: RegionalTieredCacheProps): "on" | "off" =>
|
|
|
114
114
|
// Cloudflare can transiently fail to authenticate a valid token, surfacing as
|
|
115
115
|
// `Unauthorized`/`Forbidden`. Retry with exponential backoff capped at 5s,
|
|
116
116
|
// bounded to ~8 attempts so a persistently-failing call still fails fast.
|
|
117
|
-
const transientAuthRetrySchedule = Schedule.
|
|
118
|
-
Schedule.
|
|
119
|
-
|
|
120
|
-
)
|
|
117
|
+
const transientAuthRetrySchedule = Schedule.max([
|
|
118
|
+
Schedule.min([
|
|
119
|
+
Schedule.exponential("500 millis"),
|
|
120
|
+
Schedule.spaced("5 seconds"),
|
|
121
|
+
]),
|
|
122
|
+
Schedule.recurs(8),
|
|
123
|
+
]);
|
|
121
124
|
|
|
122
125
|
export const RegionalTieredCacheProvider = () =>
|
|
123
126
|
Provider.succeed(RegionalTieredCache, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ContainerImage } from "@distilled.cloud/cloudflare-runtime/Docker";
|
|
2
1
|
import * as Containers from "@distilled.cloud/cloudflare/containers";
|
|
2
|
+
import * as Redacted from "effect/Redacted";
|
|
3
3
|
import * as ProviderLayer from "../../Local/ProviderLayer.ts";
|
|
4
4
|
import {
|
|
5
5
|
type Main,
|
|
@@ -610,7 +610,27 @@ export interface ContainerApplication<Shape = unknown> extends Resource<
|
|
|
610
610
|
// imported by Worker.ts). The provider helpers that previously lived here
|
|
611
611
|
// (resolveDurableObjectApplicationRecovery, the readiness schedule/retry, etc.)
|
|
612
612
|
// were extracted to ContainerProvider.ts on this branch.
|
|
613
|
-
export type DevContainerImage =
|
|
613
|
+
export type DevContainerImage =
|
|
614
|
+
| DevContainerImage.Build
|
|
615
|
+
| DevContainerImage.Pull
|
|
616
|
+
| DevContainerImage.Ref;
|
|
617
|
+
|
|
618
|
+
export declare namespace DevContainerImage {
|
|
619
|
+
interface Base {
|
|
620
|
+
readonly env?: Record<string, string | Redacted.Redacted<string>>;
|
|
621
|
+
}
|
|
622
|
+
export interface Build extends Base {
|
|
623
|
+
readonly dockerfile: string;
|
|
624
|
+
readonly context?: string;
|
|
625
|
+
readonly buildArgs?: Record<string, string>;
|
|
626
|
+
}
|
|
627
|
+
export interface Pull extends Base {
|
|
628
|
+
readonly imageUri: string;
|
|
629
|
+
}
|
|
630
|
+
export interface Ref extends Base {
|
|
631
|
+
readonly tag: string;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
614
634
|
|
|
615
635
|
export const ContainerProvider = () =>
|
|
616
636
|
ProviderLayer.select({
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Path from "effect/Path";
|
|
2
3
|
import * as Redacted from "effect/Redacted";
|
|
3
4
|
import type * as rolldown from "rolldown";
|
|
5
|
+
import { AlchemyContext } from "../../AlchemyContext.ts";
|
|
4
6
|
import * as Bundle from "../../Bundle/Bundle.ts";
|
|
5
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
findCwdForBundle,
|
|
9
|
+
getStableContextDir,
|
|
10
|
+
resolveMainPath,
|
|
11
|
+
} from "../../Bundle/TempRoot.ts";
|
|
12
|
+
import { Docker } from "../../Docker/Docker.ts";
|
|
6
13
|
import * as Output from "../../Output.ts";
|
|
7
14
|
import { createPhysicalName } from "../../PhysicalName.ts";
|
|
8
15
|
import { Self } from "../../Self.ts";
|
|
9
16
|
import { Stack } from "../../Stack.ts";
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
ContainerApplicationProps,
|
|
13
|
-
} from "./ContainerApplication.ts";
|
|
17
|
+
import { sha256Object } from "../../Util/sha256.ts";
|
|
18
|
+
import type { ContainerApplicationProps } from "./ContainerApplication.ts";
|
|
14
19
|
|
|
15
20
|
/**
|
|
16
21
|
* Fold the runtime-context `env` map (populated by `Binding.Service`s and
|
|
@@ -36,35 +41,24 @@ import type {
|
|
|
36
41
|
*
|
|
37
42
|
* Explicit `props.environmentVariables` win on a name collision.
|
|
38
43
|
*/
|
|
39
|
-
export const
|
|
44
|
+
export const makeContainerEnv = (
|
|
40
45
|
props: ContainerApplicationProps,
|
|
41
|
-
accountId
|
|
42
|
-
)
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
!explicitNames.has(name) &&
|
|
58
|
-
name !== "ALCHEMY_CLOUDFLARE_ACCOUNT_ID",
|
|
59
|
-
)
|
|
60
|
-
.map(([name, value]) => ({
|
|
61
|
-
name,
|
|
62
|
-
value: Redacted.isRedacted(value)
|
|
63
|
-
? Redacted.value(value as Redacted.Redacted<string>)
|
|
64
|
-
: (value as string),
|
|
65
|
-
})),
|
|
66
|
-
];
|
|
67
|
-
return environmentVariables.length > 0 ? environmentVariables : undefined;
|
|
46
|
+
accountId: string,
|
|
47
|
+
) => {
|
|
48
|
+
const env: Record<string, string | Redacted.Redacted<string>> = {};
|
|
49
|
+
for (const [name, value] of Object.entries(props.env ?? {})) {
|
|
50
|
+
if (Output.isOutput(value) || value === undefined) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
env[name] = value;
|
|
54
|
+
}
|
|
55
|
+
for (const value of props.environmentVariables ?? []) {
|
|
56
|
+
env[value.name] = value.value;
|
|
57
|
+
}
|
|
58
|
+
if (!env.ALCHEMY_CLOUDFLARE_ACCOUNT_ID) {
|
|
59
|
+
env.ALCHEMY_CLOUDFLARE_ACCOUNT_ID = accountId;
|
|
60
|
+
}
|
|
61
|
+
return env;
|
|
68
62
|
};
|
|
69
63
|
|
|
70
64
|
/**
|
|
@@ -290,3 +284,75 @@ await Effect.runPromise(serverEffect).catch((err) => {
|
|
|
290
284
|
|
|
291
285
|
return { files, hash: bundleOutput.hash };
|
|
292
286
|
});
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Bundle an Effect-native container `main` and materialize it (plus the
|
|
290
|
+
* generated Dockerfile) into a stable Docker build context directory, then
|
|
291
|
+
* return the paths + content hash of that context.
|
|
292
|
+
*
|
|
293
|
+
* This is the local-dev image shape (`ContainerImage.Build`) that
|
|
294
|
+
* `@distilled.cloud/cloudflare-runtime` consumes: it `docker build`s the
|
|
295
|
+
* `dockerfile` against the `context` directory. Shared between the local
|
|
296
|
+
* provider (which serves this context to the runtime as the `dev` image) and
|
|
297
|
+
* the live provider (which persists the same deterministic context path as
|
|
298
|
+
* `dev` so a subsequent `alchemy dev` run has an image to build even though the
|
|
299
|
+
* live deploy pushed to Cloudflare's registry instead).
|
|
300
|
+
*
|
|
301
|
+
* The context directory is deterministic for a given resource id, so live and
|
|
302
|
+
* local agree on the path. Callers that want to skip re-bundling on an
|
|
303
|
+
* unchanged resource should wrap this in {@link Artifacts.cached}.
|
|
304
|
+
*/
|
|
305
|
+
export const prepareContainerBuildContext = Effect.fn(function* (
|
|
306
|
+
id: string,
|
|
307
|
+
news: ContainerApplicationProps,
|
|
308
|
+
) {
|
|
309
|
+
const { dotAlchemy } = yield* AlchemyContext;
|
|
310
|
+
const docker = yield* Docker;
|
|
311
|
+
const path = yield* Path.Path;
|
|
312
|
+
|
|
313
|
+
const main = news.main;
|
|
314
|
+
if (!main) {
|
|
315
|
+
return yield* Effect.die(
|
|
316
|
+
new Error("Container requires a `main` entrypoint."),
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
const runtime = news.runtime ?? "bun";
|
|
320
|
+
const context = yield* getStableContextDir(
|
|
321
|
+
process.cwd(),
|
|
322
|
+
dotAlchemy,
|
|
323
|
+
`${id}-container`,
|
|
324
|
+
);
|
|
325
|
+
const dockerfileContent = buildFinalDockerfile(
|
|
326
|
+
news.dockerfile,
|
|
327
|
+
runtime,
|
|
328
|
+
news.external,
|
|
329
|
+
news.autoInstallExternals,
|
|
330
|
+
);
|
|
331
|
+
const [bundle] = yield* Effect.all(
|
|
332
|
+
[
|
|
333
|
+
bundleContainerProgram({
|
|
334
|
+
id,
|
|
335
|
+
main,
|
|
336
|
+
runtime,
|
|
337
|
+
handler: news.handler,
|
|
338
|
+
isExternal: news.isExternal,
|
|
339
|
+
external: news.external,
|
|
340
|
+
outdir: context,
|
|
341
|
+
}),
|
|
342
|
+
docker.materialize({
|
|
343
|
+
context,
|
|
344
|
+
dockerfile: dockerfileContent,
|
|
345
|
+
files: [],
|
|
346
|
+
}),
|
|
347
|
+
],
|
|
348
|
+
{ concurrency: "unbounded" },
|
|
349
|
+
);
|
|
350
|
+
return {
|
|
351
|
+
context,
|
|
352
|
+
dockerfile: path.join(context, "Dockerfile"),
|
|
353
|
+
hash: yield* sha256Object({
|
|
354
|
+
bundle: bundle.hash,
|
|
355
|
+
dockerfileContent,
|
|
356
|
+
}),
|
|
357
|
+
};
|
|
358
|
+
});
|
|
@@ -2,6 +2,7 @@ import * as Containers from "@distilled.cloud/cloudflare/containers";
|
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import * as FileSystem from "effect/FileSystem";
|
|
4
4
|
import * as Path from "effect/Path";
|
|
5
|
+
import * as Redacted from "effect/Redacted";
|
|
5
6
|
import * as Schedule from "effect/Schedule";
|
|
6
7
|
import { Unowned } from "../../AdoptPolicy.ts";
|
|
7
8
|
import { AlchemyContext } from "../../AlchemyContext.ts";
|
|
@@ -24,7 +25,7 @@ import {
|
|
|
24
25
|
buildFinalDockerfile,
|
|
25
26
|
bundleContainerProgram,
|
|
26
27
|
createContainerApplicationName,
|
|
27
|
-
|
|
28
|
+
makeContainerEnv,
|
|
28
29
|
} from "./ContainerBundle.ts";
|
|
29
30
|
import { ContainerPlatform } from "./ContainerPlatform.ts";
|
|
30
31
|
|
|
@@ -105,8 +106,8 @@ export const LiveContainerProvider = () =>
|
|
|
105
106
|
|
|
106
107
|
const desiredConfiguration = (
|
|
107
108
|
props: ContainerApplicationProps,
|
|
109
|
+
env: Record<string, string | Redacted.Redacted<string>>,
|
|
108
110
|
imageRef: string,
|
|
109
|
-
accountId: string,
|
|
110
111
|
) =>
|
|
111
112
|
normalizeNulls({
|
|
112
113
|
image: imageRef,
|
|
@@ -127,10 +128,10 @@ export const LiveContainerProvider = () =>
|
|
|
127
128
|
vcpu: props.vcpu,
|
|
128
129
|
memory: props.memory,
|
|
129
130
|
disk: props.disk,
|
|
130
|
-
environmentVariables:
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
),
|
|
131
|
+
environmentVariables: Object.entries(env).map(([name, value]) => ({
|
|
132
|
+
name,
|
|
133
|
+
value: Redacted.isRedacted(value) ? Redacted.value(value) : value,
|
|
134
|
+
})),
|
|
134
135
|
labels: props.labels,
|
|
135
136
|
network: props.network,
|
|
136
137
|
command: props.command,
|
|
@@ -165,6 +166,7 @@ export const LiveContainerProvider = () =>
|
|
|
165
166
|
const computeImage = Effect.fn(function* (
|
|
166
167
|
id: string,
|
|
167
168
|
props: ContainerApplicationProps,
|
|
169
|
+
env: Record<string, string | Redacted.Redacted<string>>,
|
|
168
170
|
) {
|
|
169
171
|
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
170
172
|
const name = yield* createApplicationName(id, props.name);
|
|
@@ -195,10 +197,26 @@ export const LiveContainerProvider = () =>
|
|
|
195
197
|
bundleHash,
|
|
196
198
|
dockerfile: finalDockerfile,
|
|
197
199
|
})).slice(0, 16);
|
|
200
|
+
// The dev image is the deterministic build-context directory that
|
|
201
|
+
// `buildAndPushImage` materializes into (and that the local provider
|
|
202
|
+
// regenerates on the next `alchemy dev`). We persist the path here so
|
|
203
|
+
// a dev run after a live deploy has an image to `docker build` — the
|
|
204
|
+
// live deploy pushes to Cloudflare's registry, which the local
|
|
205
|
+
// `workerd` runtime can't pull. See `prepareContainerBuildContext`.
|
|
206
|
+
const contextDir = yield* getStableContextDir(
|
|
207
|
+
process.cwd(),
|
|
208
|
+
dotAlchemy,
|
|
209
|
+
`${id}-container`,
|
|
210
|
+
);
|
|
198
211
|
return {
|
|
199
212
|
build: { kind: "effectful" as const, files },
|
|
200
213
|
imageRef: makeRef(imageHash),
|
|
201
214
|
imageHash,
|
|
215
|
+
dev: {
|
|
216
|
+
context: path.relative(process.cwd(), contextDir),
|
|
217
|
+
dockerfile: "Dockerfile",
|
|
218
|
+
env,
|
|
219
|
+
},
|
|
202
220
|
};
|
|
203
221
|
}
|
|
204
222
|
|
|
@@ -212,6 +230,8 @@ export const LiveContainerProvider = () =>
|
|
|
212
230
|
build: { kind: "remote" as const, image: props.image },
|
|
213
231
|
imageRef: makeRef(imageHash),
|
|
214
232
|
imageHash,
|
|
233
|
+
// The local runtime pulls this image directly (no build context).
|
|
234
|
+
dev: { imageUri: props.image, env },
|
|
215
235
|
};
|
|
216
236
|
}
|
|
217
237
|
|
|
@@ -230,6 +250,13 @@ export const LiveContainerProvider = () =>
|
|
|
230
250
|
build: { kind: "external" as const, context, dockerfile },
|
|
231
251
|
imageRef: makeRef(imageHash),
|
|
232
252
|
imageHash,
|
|
253
|
+
// The local runtime builds the user's Dockerfile against the same
|
|
254
|
+
// (already real-path'd) context directory.
|
|
255
|
+
dev: {
|
|
256
|
+
context: path.relative(process.cwd(), context),
|
|
257
|
+
dockerfile: path.relative(context, dockerfile),
|
|
258
|
+
env,
|
|
259
|
+
},
|
|
233
260
|
};
|
|
234
261
|
});
|
|
235
262
|
|
|
@@ -531,8 +558,13 @@ export const LiveContainerProvider = () =>
|
|
|
531
558
|
yield* Effect.logInfo(
|
|
532
559
|
`Cloudflare Container update: preparing ${existing.applicationName}`,
|
|
533
560
|
);
|
|
534
|
-
const
|
|
535
|
-
const
|
|
561
|
+
const env = makeContainerEnv(news, accountId);
|
|
562
|
+
const { build, imageRef, imageHash, dev } = yield* computeImage(
|
|
563
|
+
id,
|
|
564
|
+
news,
|
|
565
|
+
env,
|
|
566
|
+
);
|
|
567
|
+
const configuration = desiredConfiguration(news, env, imageRef);
|
|
536
568
|
|
|
537
569
|
if (imageHash !== existing.hash?.image) {
|
|
538
570
|
yield* buildAndPushImage(id, news, build, imageRef, session);
|
|
@@ -589,7 +621,7 @@ export const LiveContainerProvider = () =>
|
|
|
589
621
|
rollout: news.rollout,
|
|
590
622
|
});
|
|
591
623
|
}
|
|
592
|
-
return { ...updated, configuration, hash: { image: imageHash } };
|
|
624
|
+
return { ...updated, configuration, hash: { image: imageHash }, dev };
|
|
593
625
|
});
|
|
594
626
|
|
|
595
627
|
const getDurableObjects = (
|
|
@@ -664,8 +696,12 @@ export const LiveContainerProvider = () =>
|
|
|
664
696
|
return { action: "update", stables: ["accountId"] } as const;
|
|
665
697
|
}
|
|
666
698
|
|
|
667
|
-
const { imageHash } = yield* computeImage(
|
|
668
|
-
|
|
699
|
+
const { imageHash, dev } = yield* computeImage(
|
|
700
|
+
id,
|
|
701
|
+
news,
|
|
702
|
+
makeContainerEnv(news, accountId),
|
|
703
|
+
);
|
|
704
|
+
if (imageHash !== output.hash?.image || !deepEqual(dev, output.dev)) {
|
|
669
705
|
return { action: "update" } as const;
|
|
670
706
|
}
|
|
671
707
|
}),
|
|
@@ -676,8 +712,13 @@ export const LiveContainerProvider = () =>
|
|
|
676
712
|
);
|
|
677
713
|
|
|
678
714
|
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
679
|
-
const
|
|
680
|
-
const
|
|
715
|
+
const env = makeContainerEnv(news, accountId);
|
|
716
|
+
const { build, imageRef, imageHash, dev } = yield* computeImage(
|
|
717
|
+
id,
|
|
718
|
+
news,
|
|
719
|
+
env,
|
|
720
|
+
);
|
|
721
|
+
const configuration = desiredConfiguration(news, env, imageRef);
|
|
681
722
|
yield* buildAndPushImage(id, news, build, imageRef, session);
|
|
682
723
|
|
|
683
724
|
// Precreate intentionally omits the Durable Object attachment so the
|
|
@@ -699,6 +740,7 @@ export const LiveContainerProvider = () =>
|
|
|
699
740
|
return {
|
|
700
741
|
...("applicationId" in result ? result : toAttributes(result)),
|
|
701
742
|
hash: { image: imageHash },
|
|
743
|
+
dev,
|
|
702
744
|
};
|
|
703
745
|
}),
|
|
704
746
|
reconcile: Effect.fn(function* ({
|
|
@@ -714,8 +756,13 @@ export const LiveContainerProvider = () =>
|
|
|
714
756
|
);
|
|
715
757
|
const durableObjects = yield* getDurableObjects(bindings);
|
|
716
758
|
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
717
|
-
const
|
|
718
|
-
const
|
|
759
|
+
const env = makeContainerEnv(news, accountId);
|
|
760
|
+
const { build, imageRef, imageHash, dev } = yield* computeImage(
|
|
761
|
+
id,
|
|
762
|
+
news,
|
|
763
|
+
env,
|
|
764
|
+
);
|
|
765
|
+
const configuration = desiredConfiguration(news, env, imageRef);
|
|
719
766
|
|
|
720
767
|
// Observe — re-fetch the cached application to confirm it still
|
|
721
768
|
// exists. Cloudflare reports a deleted container application as
|
|
@@ -815,6 +862,7 @@ export const LiveContainerProvider = () =>
|
|
|
815
862
|
return {
|
|
816
863
|
...("applicationId" in result ? result : toAttributes(result)),
|
|
817
864
|
hash: { image: imageHash },
|
|
865
|
+
dev,
|
|
818
866
|
};
|
|
819
867
|
}
|
|
820
868
|
|
|
@@ -849,6 +897,7 @@ export const LiveContainerProvider = () =>
|
|
|
849
897
|
return {
|
|
850
898
|
...("applicationId" in result ? result : toAttributes(result)),
|
|
851
899
|
hash: { image: imageHash },
|
|
900
|
+
dev,
|
|
852
901
|
};
|
|
853
902
|
}),
|
|
854
903
|
delete: Effect.fn(function* ({ output }) {
|
|
@@ -881,6 +930,10 @@ export const LiveContainerProvider = () =>
|
|
|
881
930
|
return {
|
|
882
931
|
...toAttributes(existing),
|
|
883
932
|
hash: output?.hash,
|
|
933
|
+
// The dev image is a local build-context reference that the
|
|
934
|
+
// API can't return — preserve the persisted one so a refresh
|
|
935
|
+
// doesn't wipe it (which would break a later `alchemy dev`).
|
|
936
|
+
dev: output?.dev,
|
|
884
937
|
};
|
|
885
938
|
});
|
|
886
939
|
|
|
@@ -902,6 +955,7 @@ export const LiveContainerProvider = () =>
|
|
|
902
955
|
Effect.map((app) => ({
|
|
903
956
|
...toAttributes(app),
|
|
904
957
|
hash: output.hash,
|
|
958
|
+
dev: output.dev,
|
|
905
959
|
})),
|
|
906
960
|
Effect.catchTag("ContainerApplicationNotFound", () =>
|
|
907
961
|
readByName(output.applicationName),
|
|
@@ -997,10 +1051,10 @@ const resolveDurableObjectApplicationRecovery = ({
|
|
|
997
1051
|
// uncapped `Schedule.exponential(150)` reaches a ~76s single delay by the 10th
|
|
998
1052
|
// retry (~150s total), which both blows test budgets and needlessly stalls the
|
|
999
1053
|
// update→create fallback when the target is genuinely gone.
|
|
1000
|
-
const containerApplicationReadinessSchedule = Schedule.
|
|
1001
|
-
Schedule.
|
|
1002
|
-
Schedule.
|
|
1003
|
-
);
|
|
1054
|
+
const containerApplicationReadinessSchedule = Schedule.max([
|
|
1055
|
+
Schedule.min([Schedule.exponential(150), Schedule.spaced("3 seconds")]),
|
|
1056
|
+
Schedule.recurs(10),
|
|
1057
|
+
]);
|
|
1004
1058
|
|
|
1005
1059
|
const isContainerApplicationNotFound = (
|
|
1006
1060
|
error: unknown,
|