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
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-registered *internal extension* for the generated Lambda entry.
|
|
3
|
+
*
|
|
4
|
+
* Registering an internal extension buys the Shutdown phase: a sandbox
|
|
5
|
+
* with no registered extensions is killed with no signal at all (0 ms);
|
|
6
|
+
* with an internal extension Lambda sends SIGTERM and allows 500 ms before
|
|
7
|
+
* SIGKILL — the entry closes the instance scope in that window.
|
|
8
|
+
*
|
|
9
|
+
* The extension deliberately subscribes to NO events (`events: []`).
|
|
10
|
+
* Subscribing to `INVOKE` and holding `/event/next` open as a
|
|
11
|
+
* post-response work window was tried and rejected: a buffered Function
|
|
12
|
+
* URL does not return the response to the caller until the entire Invoke
|
|
13
|
+
* phase completes, so held work showed up as response latency anyway — and
|
|
14
|
+
* environments whose invoke phase was extended this way were observed
|
|
15
|
+
* being condemned and recycled (no END/REPORT, SIGTERM within seconds,
|
|
16
|
+
* fresh INIT on the next request). Per-invocation cleanup therefore
|
|
17
|
+
* settles inline in the dispatch; keep request finalizers fast.
|
|
18
|
+
*
|
|
19
|
+
* A registered extension must signal readiness via the blocking
|
|
20
|
+
* `/event/next` long-poll or the Init phase hangs; for an extension
|
|
21
|
+
* subscribed to no events that call never resolves, so it is fired
|
|
22
|
+
* un-awaited and parks for the sandbox's lifetime.
|
|
23
|
+
*
|
|
24
|
+
* https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html
|
|
25
|
+
*/
|
|
26
|
+
export const registerLambdaExtension = async (): Promise<void> => {
|
|
27
|
+
const api = process.env.AWS_LAMBDA_RUNTIME_API;
|
|
28
|
+
if (!api) return;
|
|
29
|
+
const base = `http://${api}/2020-01-01/extension`;
|
|
30
|
+
try {
|
|
31
|
+
const registration = await fetch(`${base}/register`, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers: { "Lambda-Extension-Name": "alchemy-graceful-shutdown" },
|
|
34
|
+
body: JSON.stringify({ events: [] }),
|
|
35
|
+
});
|
|
36
|
+
const extensionId = registration.headers.get("lambda-extension-identifier");
|
|
37
|
+
if (extensionId) {
|
|
38
|
+
void fetch(`${base}/event/next`, {
|
|
39
|
+
headers: { "Lambda-Extension-Identifier": extensionId },
|
|
40
|
+
}).catch(() => undefined);
|
|
41
|
+
}
|
|
42
|
+
} catch {
|
|
43
|
+
// Not running on Lambda (or the Extensions API refused) — the function
|
|
44
|
+
// still works, it just gets no shutdown window.
|
|
45
|
+
}
|
|
46
|
+
};
|
|
@@ -329,9 +329,10 @@ const waitForCreateAccount = (requestId: string) =>
|
|
|
329
329
|
}).pipe(
|
|
330
330
|
Effect.retry({
|
|
331
331
|
while: (error: any) => error?._tag === "CreateAccountInProgress",
|
|
332
|
-
schedule: Schedule.
|
|
333
|
-
Schedule.
|
|
334
|
-
|
|
332
|
+
schedule: Schedule.max([
|
|
333
|
+
Schedule.spaced("2 seconds"),
|
|
334
|
+
Schedule.recurs(120),
|
|
335
|
+
]),
|
|
335
336
|
}),
|
|
336
337
|
);
|
|
337
338
|
|
|
@@ -341,8 +342,6 @@ const retryAccountManagement = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
|
341
342
|
while: (error: any) =>
|
|
342
343
|
error?._tag === "TooManyRequestsException" ||
|
|
343
344
|
error?._tag === "InternalServerException",
|
|
344
|
-
schedule: Schedule.exponential(200).
|
|
345
|
-
Schedule.both(Schedule.recurs(8)),
|
|
346
|
-
),
|
|
345
|
+
schedule: Schedule.max([Schedule.exponential(200), Schedule.recurs(8)]),
|
|
347
346
|
}),
|
|
348
347
|
);
|
|
@@ -55,9 +55,7 @@ export const retryOrganizations = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
|
55
55
|
error?._tag === "TooManyRequestsException" ||
|
|
56
56
|
error?._tag === "ServiceException" ||
|
|
57
57
|
error?._tag === "FinalizingOrganizationException",
|
|
58
|
-
schedule: Schedule.exponential(200).
|
|
59
|
-
Schedule.both(Schedule.recurs(8)),
|
|
60
|
-
),
|
|
58
|
+
schedule: Schedule.max([Schedule.exponential(200), Schedule.recurs(8)]),
|
|
61
59
|
}),
|
|
62
60
|
);
|
|
63
61
|
|
package/src/AWS/Providers.ts
CHANGED
|
@@ -442,26 +442,28 @@ const awsRetryFactory: RetryFactory = (lastError) => ({
|
|
|
442
442
|
isThrottlingError(error) ||
|
|
443
443
|
isRetryable(error) ||
|
|
444
444
|
isHttpTransportError(error),
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
445
|
+
// Transient transport failures (e.g. a sustained `read ETIMEDOUT` blip
|
|
446
|
+
// against a control-plane endpoint) can outlast a 10-attempt budget. With
|
|
447
|
+
// the 5s cap below, the extra attempts add bounded backoff while making
|
|
448
|
+
// the network-flake recovery materially more robust.
|
|
449
|
+
schedule: Schedule.max([
|
|
450
|
+
pipe(
|
|
451
|
+
Schedule.exponential(Duration.millis(200), 2),
|
|
452
|
+
Schedule.modifyDelay(
|
|
453
|
+
Effect.fn(function* ({ duration }) {
|
|
454
|
+
const error = yield* Ref.get(lastError);
|
|
455
|
+
if (isThrottlingError(error)) {
|
|
456
|
+
// Throttling: floor at 500ms (matches distilled default).
|
|
457
|
+
if (Duration.toMillis(duration) < 500) {
|
|
458
|
+
return Duration.toMillis(Duration.millis(500));
|
|
459
|
+
}
|
|
454
460
|
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
461
|
+
return Duration.toMillis(duration);
|
|
462
|
+
}),
|
|
463
|
+
),
|
|
464
|
+
capped(Duration.seconds(5)),
|
|
465
|
+
jittered,
|
|
458
466
|
),
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
// Transient transport failures (e.g. a sustained `read ETIMEDOUT` blip
|
|
462
|
-
// against a control-plane endpoint) can outlast a 10-attempt budget. With
|
|
463
|
-
// the 5s cap above, the extra attempts add bounded backoff while making
|
|
464
|
-
// the network-flake recovery materially more robust.
|
|
465
|
-
Schedule.both(Schedule.recurs(15)),
|
|
466
|
-
),
|
|
467
|
+
Schedule.recurs(15),
|
|
468
|
+
]),
|
|
467
469
|
});
|
package/src/AWS/RDS/DBCluster.ts
CHANGED
|
@@ -456,9 +456,10 @@ export const DBClusterProvider = () =>
|
|
|
456
456
|
clusterId: string,
|
|
457
457
|
{ requireAvailable = true }: { requireAvailable?: boolean } = {},
|
|
458
458
|
) {
|
|
459
|
-
const readinessPolicy = Schedule.
|
|
460
|
-
Schedule.
|
|
461
|
-
|
|
459
|
+
const readinessPolicy = Schedule.max([
|
|
460
|
+
Schedule.fixed("10 seconds"),
|
|
461
|
+
Schedule.recurs(60),
|
|
462
|
+
]);
|
|
462
463
|
return yield* readCluster(clusterId).pipe(
|
|
463
464
|
Effect.flatMap((cluster) => {
|
|
464
465
|
if (!cluster?.DBClusterArn) {
|
|
@@ -762,9 +763,10 @@ export const DBClusterProvider = () =>
|
|
|
762
763
|
),
|
|
763
764
|
),
|
|
764
765
|
{
|
|
765
|
-
schedule: Schedule.
|
|
766
|
-
Schedule.
|
|
767
|
-
|
|
766
|
+
schedule: Schedule.max([
|
|
767
|
+
Schedule.fixed("15 seconds"),
|
|
768
|
+
Schedule.recurs(40),
|
|
769
|
+
]),
|
|
768
770
|
until: (exists) => exists === false,
|
|
769
771
|
},
|
|
770
772
|
).pipe(Effect.catch(() => Effect.void));
|
|
@@ -421,9 +421,10 @@ export const DBInstanceProvider = () =>
|
|
|
421
421
|
instanceId: string,
|
|
422
422
|
{ requireAvailable = true }: { requireAvailable?: boolean } = {},
|
|
423
423
|
) {
|
|
424
|
-
const readinessPolicy = Schedule.
|
|
425
|
-
Schedule.
|
|
426
|
-
|
|
424
|
+
const readinessPolicy = Schedule.max([
|
|
425
|
+
Schedule.fixed("10 seconds"),
|
|
426
|
+
Schedule.recurs(60),
|
|
427
|
+
]);
|
|
427
428
|
return yield* readInstance(instanceId).pipe(
|
|
428
429
|
Effect.flatMap((instance) => {
|
|
429
430
|
if (!instance?.DBInstanceArn) {
|
|
@@ -728,9 +729,10 @@ export const DBInstanceProvider = () =>
|
|
|
728
729
|
),
|
|
729
730
|
),
|
|
730
731
|
{
|
|
731
|
-
schedule: Schedule.
|
|
732
|
-
Schedule.
|
|
733
|
-
|
|
732
|
+
schedule: Schedule.max([
|
|
733
|
+
Schedule.fixed("15 seconds"),
|
|
734
|
+
Schedule.recurs(40),
|
|
735
|
+
]),
|
|
734
736
|
until: (exists) => exists === false,
|
|
735
737
|
},
|
|
736
738
|
).pipe(Effect.catch(() => Effect.void));
|
package/src/AWS/RDS/DBProxy.ts
CHANGED
|
@@ -133,9 +133,10 @@ export const DBProxyProvider = () =>
|
|
|
133
133
|
});
|
|
134
134
|
|
|
135
135
|
const waitForProxy = Effect.fn(function* (name: string) {
|
|
136
|
-
const readinessPolicy = Schedule.
|
|
137
|
-
Schedule.
|
|
138
|
-
|
|
136
|
+
const readinessPolicy = Schedule.max([
|
|
137
|
+
Schedule.fixed("2 seconds"),
|
|
138
|
+
Schedule.recurs(30),
|
|
139
|
+
]);
|
|
139
140
|
return yield* readProxy(name).pipe(
|
|
140
141
|
Effect.flatMap((proxy) =>
|
|
141
142
|
proxy?.DBProxyArn
|
|
@@ -119,9 +119,10 @@ export const DBProxyEndpointProvider = () =>
|
|
|
119
119
|
dbProxyName: string;
|
|
120
120
|
dbProxyEndpointName: string;
|
|
121
121
|
}) {
|
|
122
|
-
const readinessPolicy = Schedule.
|
|
123
|
-
Schedule.
|
|
124
|
-
|
|
122
|
+
const readinessPolicy = Schedule.max([
|
|
123
|
+
Schedule.fixed("2 seconds"),
|
|
124
|
+
Schedule.recurs(30),
|
|
125
|
+
]);
|
|
125
126
|
return yield* readEndpoint(props).pipe(
|
|
126
127
|
Effect.flatMap((endpoint) =>
|
|
127
128
|
endpoint?.DBProxyEndpointArn
|
|
@@ -313,9 +313,10 @@ export const HealthCheckProvider = () =>
|
|
|
313
313
|
// Optimistic-lock retry: re-read for the latest version.
|
|
314
314
|
Effect.retry({
|
|
315
315
|
while: (e) => e._tag === "HealthCheckVersionMismatch",
|
|
316
|
-
schedule: Schedule.
|
|
317
|
-
Schedule.
|
|
318
|
-
|
|
316
|
+
schedule: Schedule.max([
|
|
317
|
+
Schedule.fixed("1 second"),
|
|
318
|
+
Schedule.recurs(5),
|
|
319
|
+
]),
|
|
319
320
|
}),
|
|
320
321
|
);
|
|
321
322
|
check = updated;
|
|
@@ -337,9 +338,10 @@ export const HealthCheckProvider = () =>
|
|
|
337
338
|
// Still referenced by a record whose delete is propagating.
|
|
338
339
|
Effect.retry({
|
|
339
340
|
while: (e) => e._tag === "HealthCheckInUse",
|
|
340
|
-
schedule: Schedule.
|
|
341
|
-
Schedule.
|
|
342
|
-
|
|
341
|
+
schedule: Schedule.max([
|
|
342
|
+
Schedule.fixed("3 seconds"),
|
|
343
|
+
Schedule.recurs(10),
|
|
344
|
+
]),
|
|
343
345
|
}),
|
|
344
346
|
Effect.catchTag("HealthCheckInUse", () => Effect.void),
|
|
345
347
|
);
|
|
@@ -124,9 +124,10 @@ export const HostedZoneProvider = () =>
|
|
|
124
124
|
Effect.map((r) => r.ChangeInfo.Status),
|
|
125
125
|
Effect.catchTag("NoSuchChange", () => Effect.succeed("PENDING")),
|
|
126
126
|
Effect.repeat({
|
|
127
|
-
schedule: Schedule.
|
|
128
|
-
Schedule.
|
|
129
|
-
|
|
127
|
+
schedule: Schedule.max([
|
|
128
|
+
Schedule.fixed("2 seconds"),
|
|
129
|
+
Schedule.recurs(60),
|
|
130
|
+
]),
|
|
130
131
|
until: (status) => status === "INSYNC",
|
|
131
132
|
}),
|
|
132
133
|
);
|
|
@@ -384,9 +385,10 @@ export const HostedZoneProvider = () =>
|
|
|
384
385
|
// in case a referencing record's delete is still propagating.
|
|
385
386
|
Effect.retry({
|
|
386
387
|
while: (e) => e._tag === "PriorRequestNotComplete",
|
|
387
|
-
schedule: Schedule.
|
|
388
|
-
Schedule.
|
|
389
|
-
|
|
388
|
+
schedule: Schedule.max([
|
|
389
|
+
Schedule.fixed("2 seconds"),
|
|
390
|
+
Schedule.recurs(10),
|
|
391
|
+
]),
|
|
390
392
|
}),
|
|
391
393
|
);
|
|
392
394
|
}),
|
|
@@ -487,9 +487,10 @@ export const RecordProvider = () =>
|
|
|
487
487
|
Effect.map((response) => response.ChangeInfo.Status),
|
|
488
488
|
Effect.catchTag("NoSuchChange", () => Effect.succeed("PENDING")),
|
|
489
489
|
Effect.repeat({
|
|
490
|
-
schedule: Schedule.
|
|
491
|
-
Schedule.
|
|
492
|
-
|
|
490
|
+
schedule: Schedule.max([
|
|
491
|
+
Schedule.fixed("2 seconds"),
|
|
492
|
+
Schedule.recurs(60),
|
|
493
|
+
]),
|
|
493
494
|
until: (status) => status === "INSYNC",
|
|
494
495
|
}),
|
|
495
496
|
);
|
package/src/AWS/S3/Bucket.ts
CHANGED
|
@@ -543,7 +543,7 @@ export const BucketProvider = () =>
|
|
|
543
543
|
// Wait for bucket to exist (eventual consistency)
|
|
544
544
|
yield* Effect.retry(
|
|
545
545
|
s3.headBucket({ Bucket: bucketName }),
|
|
546
|
-
Schedule.exponential(100)
|
|
546
|
+
Schedule.max([Schedule.exponential(100), Schedule.recurs(10)]),
|
|
547
547
|
);
|
|
548
548
|
yield* Effect.logInfo(
|
|
549
549
|
`S3 Bucket create: bucket is available ${bucketName}`,
|
|
@@ -1544,9 +1544,10 @@ export const BucketProvider = () =>
|
|
|
1544
1544
|
Effect.catchTag("NoSuchBucket", () => Effect.void),
|
|
1545
1545
|
Effect.retry({
|
|
1546
1546
|
while: (e) => e._tag === "BucketNotEmpty",
|
|
1547
|
-
schedule: Schedule.
|
|
1548
|
-
Schedule.
|
|
1549
|
-
|
|
1547
|
+
schedule: Schedule.max([
|
|
1548
|
+
Schedule.exponential(100),
|
|
1549
|
+
Schedule.recurs(5),
|
|
1550
|
+
]),
|
|
1550
1551
|
}),
|
|
1551
1552
|
);
|
|
1552
1553
|
});
|
package/src/AWS/SQS/Queue.ts
CHANGED
|
@@ -517,9 +517,9 @@ export const QueueProvider = () =>
|
|
|
517
517
|
Effect.retry({
|
|
518
518
|
while: (e) => e._tag === "QueueDeletedRecently",
|
|
519
519
|
schedule: Schedule.fixed(1000).pipe(
|
|
520
|
-
Schedule.
|
|
520
|
+
Schedule.tap(({ attempt }) =>
|
|
521
521
|
session.note(
|
|
522
|
-
`Queue was deleted recently, retrying... ${
|
|
522
|
+
`Queue was deleted recently, retrying... ${attempt}s`,
|
|
523
523
|
),
|
|
524
524
|
),
|
|
525
525
|
),
|
|
@@ -531,9 +531,10 @@ export const QueueProvider = () =>
|
|
|
531
531
|
// genuine validation failure, so retry on a bounded schedule.
|
|
532
532
|
Effect.retry({
|
|
533
533
|
while: (e) => e._tag === "InvalidParameterValueException",
|
|
534
|
-
schedule: Schedule.
|
|
535
|
-
Schedule.
|
|
536
|
-
|
|
534
|
+
schedule: Schedule.max([
|
|
535
|
+
Schedule.fixed(1000),
|
|
536
|
+
Schedule.recurs(30),
|
|
537
|
+
]),
|
|
537
538
|
}),
|
|
538
539
|
Effect.catchTag("QueueNameExists", () =>
|
|
539
540
|
sqs.getQueueUrl({ QueueName: queueName }),
|
|
@@ -558,9 +559,10 @@ export const QueueProvider = () =>
|
|
|
558
559
|
.pipe(
|
|
559
560
|
Effect.retry({
|
|
560
561
|
while: (e) => e._tag === "QueueDoesNotExist",
|
|
561
|
-
schedule: Schedule.
|
|
562
|
-
Schedule.
|
|
563
|
-
|
|
562
|
+
schedule: Schedule.max([
|
|
563
|
+
Schedule.fixed(1000),
|
|
564
|
+
Schedule.recurs(30),
|
|
565
|
+
]),
|
|
564
566
|
}),
|
|
565
567
|
Effect.map((r) => r.Attributes ?? {}),
|
|
566
568
|
);
|
|
@@ -588,9 +590,10 @@ export const QueueProvider = () =>
|
|
|
588
590
|
.pipe(
|
|
589
591
|
Effect.retry({
|
|
590
592
|
while: (e) => e._tag === "QueueDoesNotExist",
|
|
591
|
-
schedule: Schedule.
|
|
592
|
-
Schedule.
|
|
593
|
-
|
|
593
|
+
schedule: Schedule.max([
|
|
594
|
+
Schedule.fixed(1000),
|
|
595
|
+
Schedule.recurs(30),
|
|
596
|
+
]),
|
|
594
597
|
}),
|
|
595
598
|
);
|
|
596
599
|
}
|
|
@@ -603,9 +606,10 @@ export const QueueProvider = () =>
|
|
|
603
606
|
.pipe(
|
|
604
607
|
Effect.retry({
|
|
605
608
|
while: (e) => e._tag === "QueueDoesNotExist",
|
|
606
|
-
schedule: Schedule.
|
|
607
|
-
Schedule.
|
|
608
|
-
|
|
609
|
+
schedule: Schedule.max([
|
|
610
|
+
Schedule.fixed(1000),
|
|
611
|
+
Schedule.recurs(30),
|
|
612
|
+
]),
|
|
609
613
|
}),
|
|
610
614
|
Effect.map((r) => r.Tags ?? {}),
|
|
611
615
|
Effect.catch(() => Effect.succeed({} as Record<string, string>)),
|
|
@@ -631,9 +635,10 @@ export const QueueProvider = () =>
|
|
|
631
635
|
.pipe(
|
|
632
636
|
Effect.retry({
|
|
633
637
|
while: (e) => e._tag === "QueueDoesNotExist",
|
|
634
|
-
schedule: Schedule.
|
|
635
|
-
Schedule.
|
|
636
|
-
|
|
638
|
+
schedule: Schedule.max([
|
|
639
|
+
Schedule.fixed(1000),
|
|
640
|
+
Schedule.recurs(30),
|
|
641
|
+
]),
|
|
637
642
|
}),
|
|
638
643
|
);
|
|
639
644
|
}
|
|
@@ -643,9 +648,10 @@ export const QueueProvider = () =>
|
|
|
643
648
|
.pipe(
|
|
644
649
|
Effect.retry({
|
|
645
650
|
while: (e) => e._tag === "QueueDoesNotExist",
|
|
646
|
-
schedule: Schedule.
|
|
647
|
-
Schedule.
|
|
648
|
-
|
|
651
|
+
schedule: Schedule.max([
|
|
652
|
+
Schedule.fixed(1000),
|
|
653
|
+
Schedule.recurs(30),
|
|
654
|
+
]),
|
|
649
655
|
}),
|
|
650
656
|
);
|
|
651
657
|
}
|
|
@@ -416,7 +416,7 @@ const ensureStateBucket = (bucket: string, region: string) =>
|
|
|
416
416
|
.headBucket({ Bucket: bucket })
|
|
417
417
|
.pipe(
|
|
418
418
|
Effect.retry(
|
|
419
|
-
Schedule.spaced("1 second")
|
|
419
|
+
Schedule.max([Schedule.spaced("1 second"), Schedule.recurs(15)]),
|
|
420
420
|
),
|
|
421
421
|
);
|
|
422
422
|
}).pipe(
|
|
@@ -430,8 +430,9 @@ const ensureStateBucket = (bucket: string, region: string) =>
|
|
|
430
430
|
e._tag === "OperationAborted" ||
|
|
431
431
|
e._tag === "NoSuchBucket" ||
|
|
432
432
|
e._tag === "NotFound",
|
|
433
|
-
schedule: Schedule.
|
|
434
|
-
Schedule.
|
|
435
|
-
|
|
433
|
+
schedule: Schedule.max([
|
|
434
|
+
Schedule.spaced("2 seconds"),
|
|
435
|
+
Schedule.recurs(10),
|
|
436
|
+
]),
|
|
436
437
|
}),
|
|
437
438
|
);
|
|
@@ -380,12 +380,16 @@ const retryForBucketReadiness = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
|
380
380
|
effect.pipe(
|
|
381
381
|
Effect.retry({
|
|
382
382
|
while: isMissingBucket,
|
|
383
|
-
schedule: Schedule.
|
|
384
|
-
Schedule.
|
|
385
|
-
Schedule.
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
383
|
+
schedule: Schedule.max([
|
|
384
|
+
Schedule.exponential("100 millis"),
|
|
385
|
+
Schedule.recurs(30),
|
|
386
|
+
]).pipe(
|
|
387
|
+
Schedule.modifyDelay(({ duration }) =>
|
|
388
|
+
Effect.succeed(
|
|
389
|
+
Duration.isGreaterThan(duration, Duration.seconds(2))
|
|
390
|
+
? Duration.seconds(2)
|
|
391
|
+
: duration,
|
|
392
|
+
),
|
|
389
393
|
),
|
|
390
394
|
),
|
|
391
395
|
}),
|
package/src/Apply.ts
CHANGED
|
@@ -584,6 +584,7 @@ const executeNode = (
|
|
|
584
584
|
attr = yield* node.provider
|
|
585
585
|
.precreate({
|
|
586
586
|
id: logicalId,
|
|
587
|
+
fqn,
|
|
587
588
|
news: node.props,
|
|
588
589
|
session: scopedSession,
|
|
589
590
|
instanceId,
|
|
@@ -643,6 +644,7 @@ const executeNode = (
|
|
|
643
644
|
attr = yield* node.provider
|
|
644
645
|
.reconcile({
|
|
645
646
|
id: logicalId,
|
|
647
|
+
fqn,
|
|
646
648
|
news,
|
|
647
649
|
instanceId,
|
|
648
650
|
bindings: bindingOutputs,
|
|
@@ -765,6 +767,7 @@ const executeNode = (
|
|
|
765
767
|
const attr = yield* node.provider
|
|
766
768
|
.reconcile({
|
|
767
769
|
id: logicalId,
|
|
770
|
+
fqn,
|
|
768
771
|
news,
|
|
769
772
|
instanceId,
|
|
770
773
|
bindings: bindingOutputs,
|
|
@@ -887,6 +890,7 @@ const executeNode = (
|
|
|
887
890
|
yield* node.provider
|
|
888
891
|
.delete({
|
|
889
892
|
id: logicalId,
|
|
893
|
+
fqn,
|
|
890
894
|
instanceId: old.instanceId,
|
|
891
895
|
olds: old.props as never,
|
|
892
896
|
output: old.attr,
|
|
@@ -933,6 +937,7 @@ const executeNode = (
|
|
|
933
937
|
attr = yield* node.provider
|
|
934
938
|
.precreate({
|
|
935
939
|
id: logicalId,
|
|
940
|
+
fqn,
|
|
936
941
|
news: node.props,
|
|
937
942
|
session: scopedSession,
|
|
938
943
|
instanceId,
|
|
@@ -993,6 +998,7 @@ const executeNode = (
|
|
|
993
998
|
attr = yield* node.provider
|
|
994
999
|
.reconcile({
|
|
995
1000
|
id: logicalId,
|
|
1001
|
+
fqn,
|
|
996
1002
|
news,
|
|
997
1003
|
instanceId,
|
|
998
1004
|
bindings: bindingOutputs,
|
|
@@ -1346,6 +1352,7 @@ const converge = Effect.fn(function* (
|
|
|
1346
1352
|
const attr = yield* node.provider
|
|
1347
1353
|
.reconcile({
|
|
1348
1354
|
id: logicalId,
|
|
1355
|
+
fqn,
|
|
1349
1356
|
news: newProps,
|
|
1350
1357
|
instanceId,
|
|
1351
1358
|
bindings: newBindings,
|
|
@@ -1648,6 +1655,7 @@ const collectGarbage = Effect.fn(function* (
|
|
|
1648
1655
|
yield* provider
|
|
1649
1656
|
.delete({
|
|
1650
1657
|
id: logicalId,
|
|
1658
|
+
fqn,
|
|
1651
1659
|
instanceId,
|
|
1652
1660
|
olds: props as never,
|
|
1653
1661
|
output: attr,
|
package/src/Auth/AuthProvider.ts
CHANGED
|
@@ -5,6 +5,17 @@ import * as Schema from "effect/Schema";
|
|
|
5
5
|
import * as Semaphore from "effect/Semaphore";
|
|
6
6
|
import { withLock } from "./Lock.ts";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Canonical web host for OAuth provider-agnostic landing pages
|
|
10
|
+
* (`/auth/success`, `/auth/error`). The CLI's loopback server 302s the
|
|
11
|
+
* browser to one of these after handling the OAuth callback. Centralized
|
|
12
|
+
* here so the redirect target lives in exactly one place across all
|
|
13
|
+
* provider OAuth clients.
|
|
14
|
+
*/
|
|
15
|
+
export const AUTH_LANDING_HOST = "https://v2.alchemy.run";
|
|
16
|
+
export const AUTH_SUCCESS_URL = `${AUTH_LANDING_HOST}/auth/success`;
|
|
17
|
+
export const AUTH_ERROR_URL = `${AUTH_LANDING_HOST}/auth/error`;
|
|
18
|
+
|
|
8
19
|
/**
|
|
9
20
|
* Methods on an {@link AuthProviderImpl} that mutate (or could trigger
|
|
10
21
|
* mutation of) on-disk credentials. The factory wraps these in a
|
package/src/Bundle/Vite.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { NonEmptyArray } from "effect/Array";
|
|
2
2
|
import * as Cause from "effect/Cause";
|
|
3
|
-
import * as Deferred from "effect/Deferred";
|
|
4
3
|
import * as Effect from "effect/Effect";
|
|
5
4
|
import * as FileSystem from "effect/FileSystem";
|
|
6
5
|
import * as Path from "effect/Path";
|
|
@@ -45,11 +44,18 @@ export const viteBuildOutputPlugin = Effect.fn(function* ({
|
|
|
45
44
|
string,
|
|
46
45
|
Effect.Effect<BundleFile, BundleError>
|
|
47
46
|
>();
|
|
48
|
-
const deferred = yield* Deferred.make<ViteBuildOutput, BundleError>();
|
|
49
47
|
|
|
50
48
|
const plugin: vite.Plugin = {
|
|
51
49
|
name: "alchemy:build-output",
|
|
52
50
|
sharedDuringBuild: true,
|
|
51
|
+
// Collect the client output directory and server chunks as each
|
|
52
|
+
// environment writes its bundle. We deliberately do NOT resolve the build
|
|
53
|
+
// result from a `buildApp` hook: on Vite 8, when a project declares no
|
|
54
|
+
// `builder.buildApp` (e.g. a plain client-only SPA), `builder.buildApp()`
|
|
55
|
+
// runs post-order `buildApp` hooks *before* the default environment builds,
|
|
56
|
+
// so a hook fires while the output is still empty (issue #792). Instead,
|
|
57
|
+
// `viteBuild` reads `output` *after* `builder.buildApp()` resolves — by
|
|
58
|
+
// which point every environment that actually built has run `writeBundle`.
|
|
53
59
|
async writeBundle(_, bundle) {
|
|
54
60
|
if (this.environment.name === "client") {
|
|
55
61
|
clientDirectory = path.resolve(
|
|
@@ -107,18 +113,6 @@ export const viteBuildOutputPlugin = Effect.fn(function* ({
|
|
|
107
113
|
}),
|
|
108
114
|
);
|
|
109
115
|
},
|
|
110
|
-
buildApp: {
|
|
111
|
-
order: "post",
|
|
112
|
-
async handler() {
|
|
113
|
-
Deferred.doneUnsafe(
|
|
114
|
-
deferred,
|
|
115
|
-
Effect.succeed({
|
|
116
|
-
clientDirectory,
|
|
117
|
-
serverBundle: makeServerBundle(),
|
|
118
|
-
}),
|
|
119
|
-
);
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
116
|
};
|
|
123
117
|
|
|
124
118
|
// The server bundle may include chunks from more than one Vite environment, so we need to prefix them with the environment-specific output directory.
|
|
@@ -199,6 +193,13 @@ export const viteBuildOutputPlugin = Effect.fn(function* ({
|
|
|
199
193
|
|
|
200
194
|
return {
|
|
201
195
|
plugin,
|
|
202
|
-
|
|
196
|
+
// Read lazily so callers observe the state collected during the build.
|
|
197
|
+
// Only safe to await *after* `builder.buildApp()` has resolved.
|
|
198
|
+
output: Effect.sync(
|
|
199
|
+
(): ViteBuildOutput => ({
|
|
200
|
+
clientDirectory,
|
|
201
|
+
serverBundle: makeServerBundle(),
|
|
202
|
+
}),
|
|
203
|
+
),
|
|
203
204
|
};
|
|
204
205
|
});
|