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
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as Cause from "effect/Cause";
|
|
2
2
|
import * as Config from "effect/Config";
|
|
3
|
+
import * as ConfigProvider from "effect/ConfigProvider";
|
|
3
4
|
import * as Console from "effect/Console";
|
|
4
5
|
import * as Effect from "effect/Effect";
|
|
5
6
|
import * as Layer from "effect/Layer";
|
|
7
|
+
import * as Logger from "effect/Logger";
|
|
6
8
|
import * as Option from "effect/Option";
|
|
7
9
|
import * as Path from "effect/Path";
|
|
8
10
|
import * as S from "effect/Schema";
|
|
@@ -16,10 +18,17 @@ import {
|
|
|
16
18
|
AuthError,
|
|
17
19
|
AuthProviders,
|
|
18
20
|
} from "../../Auth/AuthProvider.ts";
|
|
19
|
-
import
|
|
20
|
-
|
|
21
|
+
import {
|
|
22
|
+
type AlchemyProfileProviders,
|
|
23
|
+
ALCHEMY_PROFILE,
|
|
24
|
+
withProfileOverride,
|
|
25
|
+
} from "../../Auth/Profile.ts";
|
|
26
|
+
import * as Stack from "../../Stack.ts";
|
|
27
|
+
import { Stage } from "../../Stage.ts";
|
|
21
28
|
import { recordCli } from "../../Telemetry/Metrics.ts";
|
|
22
29
|
import { PromptCancelled } from "../../Util/Clank.ts";
|
|
30
|
+
import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
|
|
31
|
+
import { fileLogger } from "../../Util/FileLogger.ts";
|
|
23
32
|
|
|
24
33
|
export const USER = Config.string("USER").pipe(
|
|
25
34
|
Config.orElse(() => Config.string("USERNAME")),
|
|
@@ -147,10 +156,22 @@ export const script = Argument.file("main", {
|
|
|
147
156
|
|
|
148
157
|
export const profile = Flag.string("profile").pipe(
|
|
149
158
|
Flag.withDescription(
|
|
150
|
-
"Auth profile to use (~/.alchemy/profiles.json). Defaults to 'default'
|
|
159
|
+
"Auth profile to use (~/.alchemy/profiles.json). Defaults to $ALCHEMY_PROFILE or 'default'.",
|
|
151
160
|
),
|
|
152
161
|
Flag.optional,
|
|
153
|
-
Flag.
|
|
162
|
+
Flag.mapEffect(
|
|
163
|
+
Effect.fn(function* (profile) {
|
|
164
|
+
// --profile wins; otherwise fall back to $ALCHEMY_PROFILE (which
|
|
165
|
+
// itself defaults to "default"). Without this, the flag's default
|
|
166
|
+
// would shadow the env var via withProfileOverride.
|
|
167
|
+
if (Option.isSome(profile)) {
|
|
168
|
+
return profile.value;
|
|
169
|
+
}
|
|
170
|
+
return yield* ALCHEMY_PROFILE.pipe(
|
|
171
|
+
Effect.catch(() => Effect.succeed("default")),
|
|
172
|
+
);
|
|
173
|
+
}),
|
|
174
|
+
),
|
|
154
175
|
);
|
|
155
176
|
|
|
156
177
|
export const resourceFilter = Flag.string("filter").pipe(
|
|
@@ -296,7 +317,19 @@ export const printProfile = Effect.fn(function* (
|
|
|
296
317
|
}
|
|
297
318
|
continue;
|
|
298
319
|
}
|
|
299
|
-
|
|
320
|
+
// A provider's `prettyPrint` catches its own credential-resolution
|
|
321
|
+
// failures, but some resolve paths `Effect.orDie` (e.g. AWS SSO with an
|
|
322
|
+
// expired token), which escapes as a defect. Contain it here — via
|
|
323
|
+
// `Console.log` so the message stays on stdout under this provider's
|
|
324
|
+
// header instead of interleaving on stderr — so one broken provider
|
|
325
|
+
// can't abort rendering the rest of the profile.
|
|
326
|
+
yield* provider.prettyPrint(profile, cfg).pipe(
|
|
327
|
+
Effect.catchCause((cause) => {
|
|
328
|
+
const error = Cause.squash(cause);
|
|
329
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
330
|
+
return Console.log(` Failed to retrieve credentials: ${message}`);
|
|
331
|
+
}),
|
|
332
|
+
);
|
|
300
333
|
}
|
|
301
334
|
});
|
|
302
335
|
|
|
@@ -326,3 +359,84 @@ export const importStack = Effect.fn(function* (main: string) {
|
|
|
326
359
|
state: Layer.Layer<never>;
|
|
327
360
|
};
|
|
328
361
|
});
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* Placeholder {@link Stack.Stack} value used while building a stack's
|
|
365
|
+
* `providers()` layer out of band. No real resources exist yet — we only
|
|
366
|
+
* want the layer's provider/auth registrations and cloud-environment
|
|
367
|
+
* services, so `resources`/`bindings`/`actions` are empty and the stage is a
|
|
368
|
+
* sentinel.
|
|
369
|
+
*/
|
|
370
|
+
const placeholderStack = (name: string) => ({
|
|
371
|
+
actions: {},
|
|
372
|
+
bindings: {},
|
|
373
|
+
name,
|
|
374
|
+
resources: {},
|
|
375
|
+
stage: "placeholder",
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
export interface BuildStackProvidersOptions {
|
|
379
|
+
/** Stack entrypoint to import (e.g. `"alchemy.run.ts"`). */
|
|
380
|
+
main: string;
|
|
381
|
+
envFile: Option.Option<string>;
|
|
382
|
+
profile: string;
|
|
383
|
+
/**
|
|
384
|
+
* Registry to populate. Pass a pre-seeded registry (e.g. one that already
|
|
385
|
+
* has built-in providers) to layer the stack's providers on top of it,
|
|
386
|
+
* overriding by name. Defaults to a fresh empty registry.
|
|
387
|
+
*/
|
|
388
|
+
registry?: AuthProviders["Service"];
|
|
389
|
+
/**
|
|
390
|
+
* Logger layer used during the build. Defaults to the file logger
|
|
391
|
+
* (`out`). `alchemy unsafe nuke` overrides this to log to the console in
|
|
392
|
+
* debug mode.
|
|
393
|
+
*/
|
|
394
|
+
logger?: Layer.Layer<never, never, never>;
|
|
395
|
+
/**
|
|
396
|
+
* Extra layer merged into the placeholder scaffold — e.g.
|
|
397
|
+
* `Layer.succeed(MinimumLogLevel, ...)`, which sets a fiber-ref default
|
|
398
|
+
* and so contributes no context service (`Layer<never>`).
|
|
399
|
+
*/
|
|
400
|
+
extra?: Layer.Layer<never, never, never>;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Import a stack entrypoint and build its `providers()` (+ `state()`) layer
|
|
405
|
+
* out of band against placeholder {@link Stack.Stack}/{@link Stage} services,
|
|
406
|
+
* so its `AuthProviderLayer` registrations land in an {@link AuthProviders}
|
|
407
|
+
* registry and the built context holds every resource provider plus the
|
|
408
|
+
* cloud-environment services their operations need.
|
|
409
|
+
*
|
|
410
|
+
* Shared by `alchemy login`, `alchemy profile show`, and `alchemy unsafe
|
|
411
|
+
* nuke`. The caller decides what to do with the result — use `authProviders`
|
|
412
|
+
* (login / profile show) or `context` (nuke) — and whether a missing/invalid
|
|
413
|
+
* entrypoint is fatal (login / nuke let it propagate) or best-effort
|
|
414
|
+
* (profile show wraps the call in `Effect.catchCause`).
|
|
415
|
+
*/
|
|
416
|
+
export const buildStackProviders = Effect.fn("buildStackProviders")(function* (
|
|
417
|
+
options: BuildStackProvidersOptions,
|
|
418
|
+
) {
|
|
419
|
+
const authProviders = options.registry ?? {};
|
|
420
|
+
const stackEffect = yield* importStack(options.main);
|
|
421
|
+
const configProvider = withProfileOverride(
|
|
422
|
+
yield* loadConfigProvider(options.envFile),
|
|
423
|
+
options.profile,
|
|
424
|
+
);
|
|
425
|
+
const context = yield* Layer.build(
|
|
426
|
+
(stackEffect.providers ?? Layer.empty).pipe(
|
|
427
|
+
Layer.provideMerge(stackEffect.state ?? Layer.empty),
|
|
428
|
+
Layer.provideMerge(
|
|
429
|
+
Layer.mergeAll(
|
|
430
|
+
Layer.succeed(AuthProviders, authProviders),
|
|
431
|
+
ConfigProvider.layer(configProvider),
|
|
432
|
+
options.logger ??
|
|
433
|
+
Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
|
|
434
|
+
Layer.succeed(Stage, "placeholder"),
|
|
435
|
+
Layer.succeed(Stack.Stack, placeholderStack(stackEffect.stackName)),
|
|
436
|
+
options.extra ?? Layer.empty,
|
|
437
|
+
),
|
|
438
|
+
),
|
|
439
|
+
),
|
|
440
|
+
);
|
|
441
|
+
return { authProviders, context, stackEffect };
|
|
442
|
+
});
|
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
import * as Config from "effect/Config";
|
|
2
|
-
import * as ConfigProvider from "effect/ConfigProvider";
|
|
3
2
|
import * as Console from "effect/Console";
|
|
4
3
|
import * as Effect from "effect/Effect";
|
|
5
|
-
import * as Layer from "effect/Layer";
|
|
6
|
-
import * as Logger from "effect/Logger";
|
|
7
4
|
import { Command, Flag } from "effect/unstable/cli";
|
|
8
5
|
|
|
9
|
-
import {
|
|
10
|
-
import { AlchemyProfile, withProfileOverride } from "../../Auth/Profile.ts";
|
|
11
|
-
import { Stage } from "../../Stage.ts";
|
|
12
|
-
import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
|
|
13
|
-
import { fileLogger } from "../../Util/FileLogger.ts";
|
|
6
|
+
import { AlchemyProfile } from "../../Auth/Profile.ts";
|
|
14
7
|
|
|
15
|
-
import { Stack } from "../../Stack.ts";
|
|
16
8
|
import {
|
|
9
|
+
buildStackProviders,
|
|
17
10
|
envFile,
|
|
18
|
-
importStack,
|
|
19
11
|
instrumentCommand,
|
|
20
12
|
printProfile,
|
|
21
13
|
profile,
|
|
@@ -46,36 +38,13 @@ export const loginCommand = Command.make(
|
|
|
46
38
|
}),
|
|
47
39
|
)(
|
|
48
40
|
Effect.fn(function* ({ main, envFile, profile, configure }) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const authProviders
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Layer.provideMerge(stackEffect.state ?? Layer.empty),
|
|
57
|
-
Layer.provideMerge(
|
|
58
|
-
Layer.mergeAll(
|
|
59
|
-
Layer.succeed(AuthProviders, authProviders),
|
|
60
|
-
ConfigProvider.layer(
|
|
61
|
-
withProfileOverride(
|
|
62
|
-
yield* loadConfigProvider(envFile),
|
|
63
|
-
profile,
|
|
64
|
-
),
|
|
65
|
-
),
|
|
66
|
-
Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
|
|
67
|
-
Layer.succeed(Stage, "placeholder"),
|
|
68
|
-
Layer.succeed(Stack, {
|
|
69
|
-
actions: {},
|
|
70
|
-
bindings: {},
|
|
71
|
-
name: stackEffect.stackName,
|
|
72
|
-
resources: {},
|
|
73
|
-
stage: "placeholder",
|
|
74
|
-
}),
|
|
75
|
-
),
|
|
76
|
-
),
|
|
77
|
-
),
|
|
78
|
-
);
|
|
41
|
+
// Build the user's providers() (+ state) layer to capture the auth
|
|
42
|
+
// providers their stack wires up.
|
|
43
|
+
const { authProviders } = yield* buildStackProviders({
|
|
44
|
+
main,
|
|
45
|
+
envFile,
|
|
46
|
+
profile,
|
|
47
|
+
});
|
|
79
48
|
|
|
80
49
|
const profiles = yield* AlchemyProfile;
|
|
81
50
|
|
package/src/Cli/commands/logs.ts
CHANGED
|
@@ -126,6 +126,7 @@ export const logsCommand = Command.make(
|
|
|
126
126
|
|
|
127
127
|
const lines = yield* provider.logs({
|
|
128
128
|
id: resource.LogicalId,
|
|
129
|
+
fqn,
|
|
129
130
|
instanceId: (resourceState as any).instanceId,
|
|
130
131
|
props: (resourceState as any).props,
|
|
131
132
|
output: (resourceState as any).attr,
|
package/src/Cli/commands/nuke.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as ConfigProvider from "effect/ConfigProvider";
|
|
2
1
|
import * as Console from "effect/Console";
|
|
3
2
|
import type * as Context from "effect/Context";
|
|
4
3
|
import * as Effect from "effect/Effect";
|
|
@@ -8,22 +7,16 @@ import { MinimumLogLevel } from "effect/References";
|
|
|
8
7
|
import { Command, Flag } from "effect/unstable/cli";
|
|
9
8
|
import picomatch from "picomatch";
|
|
10
9
|
|
|
11
|
-
import { AuthProviders } from "../../Auth/AuthProvider.ts";
|
|
12
|
-
import { withProfileOverride } from "../../Auth/Profile.ts";
|
|
13
10
|
import type { ProviderService } from "../../Provider.ts";
|
|
14
|
-
import { Stack } from "../../Stack.ts";
|
|
15
|
-
import { Stage } from "../../Stage.ts";
|
|
16
11
|
import * as Clank from "../../Util/Clank.ts";
|
|
17
|
-
import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
|
|
18
|
-
import { fileLogger } from "../../Util/FileLogger.ts";
|
|
19
12
|
import type { ScopedPlanStatusSession } from "../Cli.ts";
|
|
20
13
|
import { isNonInteractive } from "../selectCli.ts";
|
|
21
14
|
import * as NukeUI from "../tui/components/Nuke.tsx";
|
|
22
15
|
|
|
23
16
|
import {
|
|
17
|
+
buildStackProviders,
|
|
24
18
|
dryRun,
|
|
25
19
|
envFile,
|
|
26
|
-
importStack,
|
|
27
20
|
instrumentCommand,
|
|
28
21
|
profile,
|
|
29
22
|
script,
|
|
@@ -311,42 +304,18 @@ const nukeCommand = Command.make(
|
|
|
311
304
|
// log stream isn't clobbered by the progress renderer.
|
|
312
305
|
const debug = !!process.env.DEBUG;
|
|
313
306
|
const interactive = !isNonInteractive() && !debug;
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
//
|
|
318
|
-
//
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
ConfigProvider.layer(
|
|
327
|
-
withProfileOverride(
|
|
328
|
-
yield* loadConfigProvider(envFile),
|
|
329
|
-
profile,
|
|
330
|
-
),
|
|
331
|
-
),
|
|
332
|
-
debug
|
|
333
|
-
? Logger.layer([Logger.defaultLogger])
|
|
334
|
-
: Logger.layer([fileLogger("out")], {
|
|
335
|
-
mergeWithExisting: true,
|
|
336
|
-
}),
|
|
337
|
-
Layer.succeed(MinimumLogLevel, debug ? "Debug" : "Info"),
|
|
338
|
-
Layer.succeed(Stage, "placeholder"),
|
|
339
|
-
Layer.succeed(Stack, {
|
|
340
|
-
actions: {},
|
|
341
|
-
bindings: {},
|
|
342
|
-
name: stackEffect.stackName,
|
|
343
|
-
resources: {},
|
|
344
|
-
stage: "placeholder",
|
|
345
|
-
}),
|
|
346
|
-
),
|
|
347
|
-
),
|
|
348
|
-
),
|
|
349
|
-
);
|
|
307
|
+
|
|
308
|
+
// Build the user's providers() (+ state) layer so the resulting context
|
|
309
|
+
// holds every resource provider plus the cloud-environment services
|
|
310
|
+
// their `list`/`delete` need at call time. DEBUG=1 routes provider logs
|
|
311
|
+
// to the console at Debug level instead of the .alchemy/log/out file.
|
|
312
|
+
const { context } = yield* buildStackProviders({
|
|
313
|
+
main,
|
|
314
|
+
envFile,
|
|
315
|
+
profile,
|
|
316
|
+
logger: debug ? Logger.layer([Logger.defaultLogger]) : undefined,
|
|
317
|
+
extra: Layer.succeed(MinimumLogLevel, debug ? "Debug" : "Info"),
|
|
318
|
+
});
|
|
350
319
|
|
|
351
320
|
const discovered = discoverProviders(context as Context.Context<never>);
|
|
352
321
|
|
|
@@ -521,6 +490,9 @@ const nukeCommand = Command.make(
|
|
|
521
490
|
item.provider
|
|
522
491
|
.delete({
|
|
523
492
|
id: displayName(item.attr),
|
|
493
|
+
// Enumerated straight from the cloud, so there is no
|
|
494
|
+
// Alchemy namespace — an un-namespaced fqn is just the id.
|
|
495
|
+
fqn: displayName(item.attr),
|
|
524
496
|
instanceId: "",
|
|
525
497
|
olds: item.attr as never,
|
|
526
498
|
output: item.attr as never,
|
|
@@ -3,7 +3,9 @@ import * as Console from "effect/Console";
|
|
|
3
3
|
import * as Effect from "effect/Effect";
|
|
4
4
|
import * as Layer from "effect/Layer";
|
|
5
5
|
import * as Logger from "effect/Logger";
|
|
6
|
+
import * as Option from "effect/Option";
|
|
6
7
|
import { Command } from "effect/unstable/cli";
|
|
8
|
+
import * as Argument from "effect/unstable/cli/Argument";
|
|
7
9
|
|
|
8
10
|
import { AuthProviders } from "../../Auth/AuthProvider.ts";
|
|
9
11
|
import { CredentialsStore } from "../../Auth/Credentials.ts";
|
|
@@ -18,19 +20,98 @@ import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
|
|
|
18
20
|
import { fileLogger } from "../../Util/FileLogger.ts";
|
|
19
21
|
|
|
20
22
|
import {
|
|
23
|
+
buildStackProviders,
|
|
21
24
|
envFile,
|
|
22
25
|
instrumentCommand,
|
|
23
26
|
printProfile,
|
|
24
27
|
profile,
|
|
25
28
|
} from "./_shared.ts";
|
|
26
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The auth providers Alchemy ships with. Built into the registry as a
|
|
32
|
+
* baseline so `profile show` can pretty-print any provider a profile
|
|
33
|
+
* mentions, even one the current stack doesn't wire up.
|
|
34
|
+
*/
|
|
35
|
+
const builtinAuth = Layer.mergeAll(
|
|
36
|
+
AwsAuth,
|
|
37
|
+
AxiomAuth,
|
|
38
|
+
CloudflareAuth,
|
|
39
|
+
GitHubAuth,
|
|
40
|
+
NeonAuth,
|
|
41
|
+
PlanetscaleAuth,
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Entrypoint whose `providers()` layer contributes the user's own auth
|
|
46
|
+
* providers. Optional and best-effort — if it's missing or fails to load,
|
|
47
|
+
* `profile show` still renders the built-in providers.
|
|
48
|
+
*/
|
|
49
|
+
const mainFile = Argument.file("main").pipe(
|
|
50
|
+
Argument.withDescription(
|
|
51
|
+
"Stack entrypoint whose providers() should be used, defaults to alchemy.run.ts",
|
|
52
|
+
),
|
|
53
|
+
Argument.withDefault("alchemy.run.ts"),
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Populate an {@link AuthProviders} registry for display: the built-in
|
|
58
|
+
* providers first, then the user's stack `providers()` layer on top so a
|
|
59
|
+
* customized provider (same name) overrides the built-in one. Loading the
|
|
60
|
+
* user's stack is best-effort — a missing or invalid entrypoint leaves the
|
|
61
|
+
* built-ins in place.
|
|
62
|
+
*
|
|
63
|
+
* Registration happens as a side effect of building each layer (see
|
|
64
|
+
* `AuthProviderLayer`), and later builds overwrite earlier entries by name,
|
|
65
|
+
* so build order is what gives the user's providers precedence.
|
|
66
|
+
*/
|
|
67
|
+
export const collectAuthProviders = Effect.fn("collectAuthProviders")(
|
|
68
|
+
function* (options: {
|
|
69
|
+
main: string;
|
|
70
|
+
envFile: Option.Option<string>;
|
|
71
|
+
profile: string;
|
|
72
|
+
}) {
|
|
73
|
+
const authProviders: AuthProviders["Service"] = {};
|
|
74
|
+
|
|
75
|
+
// 1. Built-in providers first (baseline).
|
|
76
|
+
yield* Layer.build(
|
|
77
|
+
Layer.provide(
|
|
78
|
+
builtinAuth,
|
|
79
|
+
Layer.mergeAll(
|
|
80
|
+
Layer.succeed(AuthProviders, authProviders),
|
|
81
|
+
ConfigProvider.layer(
|
|
82
|
+
withProfileOverride(
|
|
83
|
+
yield* loadConfigProvider(options.envFile),
|
|
84
|
+
options.profile,
|
|
85
|
+
),
|
|
86
|
+
),
|
|
87
|
+
Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
|
|
88
|
+
),
|
|
89
|
+
),
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
// 2. The user's own providers() layer on top — building into the same
|
|
93
|
+
// registry overrides the built-ins by name. Best-effort: swallow
|
|
94
|
+
// load/build failures (including a missing entrypoint) so display
|
|
95
|
+
// still works with just the built-ins.
|
|
96
|
+
yield* buildStackProviders({ ...options, registry: authProviders }).pipe(
|
|
97
|
+
Effect.catchCause((cause) =>
|
|
98
|
+
Effect.logDebug("profile show: could not load user stack providers", {
|
|
99
|
+
cause,
|
|
100
|
+
}),
|
|
101
|
+
),
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
return authProviders;
|
|
105
|
+
},
|
|
106
|
+
);
|
|
107
|
+
|
|
27
108
|
const showCommand = Command.make(
|
|
28
109
|
"show",
|
|
29
|
-
{ profile, envFile },
|
|
110
|
+
{ profile, envFile, main: mainFile },
|
|
30
111
|
instrumentCommand("profile.show", (a: { profile: string }) => ({
|
|
31
112
|
"alchemy.profile": a.profile,
|
|
32
113
|
}))(
|
|
33
|
-
Effect.fn(function* ({ profile, envFile }) {
|
|
114
|
+
Effect.fn(function* ({ profile, envFile, main }) {
|
|
34
115
|
const profiles = yield* AlchemyProfile;
|
|
35
116
|
const stored = yield* profiles.getProfile(profile);
|
|
36
117
|
if (stored == null) {
|
|
@@ -45,32 +126,13 @@ const showCommand = Command.make(
|
|
|
45
126
|
return;
|
|
46
127
|
}
|
|
47
128
|
|
|
48
|
-
const authProviders
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
withProfileOverride(yield* loadConfigProvider(envFile), profile),
|
|
54
|
-
),
|
|
55
|
-
Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
|
|
56
|
-
// Building these layers triggers their AuthProviderLayer effect, which
|
|
57
|
-
// registers the provider into the shared `authProviders` registry.
|
|
58
|
-
Layer.provide(
|
|
59
|
-
Layer.mergeAll(
|
|
60
|
-
AwsAuth,
|
|
61
|
-
AxiomAuth,
|
|
62
|
-
CloudflareAuth,
|
|
63
|
-
GitHubAuth,
|
|
64
|
-
NeonAuth,
|
|
65
|
-
PlanetscaleAuth,
|
|
66
|
-
),
|
|
67
|
-
authRegistry,
|
|
68
|
-
),
|
|
69
|
-
);
|
|
129
|
+
const authProviders = yield* collectAuthProviders({
|
|
130
|
+
main,
|
|
131
|
+
envFile,
|
|
132
|
+
profile,
|
|
133
|
+
});
|
|
70
134
|
|
|
71
|
-
yield* printProfile(profile, stored, authProviders)
|
|
72
|
-
Effect.provide(services),
|
|
73
|
-
);
|
|
135
|
+
yield* printProfile(profile, stored, authProviders);
|
|
74
136
|
}),
|
|
75
137
|
),
|
|
76
138
|
);
|
package/src/Cli/commands/tail.ts
CHANGED
|
@@ -104,6 +104,7 @@ export const tailCommand = Command.make(
|
|
|
104
104
|
logicalId: resource.LogicalId,
|
|
105
105
|
stream: provider.tail({
|
|
106
106
|
id: resource.LogicalId,
|
|
107
|
+
fqn,
|
|
107
108
|
instanceId: (resourceState as any).instanceId,
|
|
108
109
|
props: (resourceState as any).props,
|
|
109
110
|
output: (resourceState as any).attr,
|
|
@@ -406,12 +406,44 @@ export const DynamicRoutingProvider = () =>
|
|
|
406
406
|
});
|
|
407
407
|
|
|
408
408
|
if (current.name !== name) {
|
|
409
|
-
yield* aiGateway
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
409
|
+
yield* aiGateway
|
|
410
|
+
.patchDynamicRouting({
|
|
411
|
+
accountId,
|
|
412
|
+
gatewayId,
|
|
413
|
+
id: routeId,
|
|
414
|
+
name,
|
|
415
|
+
})
|
|
416
|
+
.pipe(
|
|
417
|
+
// Cloudflare does not cascade-delete a gateway's routes when the
|
|
418
|
+
// gateway itself is deleted: recreating a gateway with the same
|
|
419
|
+
// id resurrects its old route rows, and a rename onto one of
|
|
420
|
+
// those ghosts trips the backing `UNIQUE(routes.name,
|
|
421
|
+
// routes.gateway_id)` constraint (leaked as a 500, typed as
|
|
422
|
+
// `RouteAlreadyExists` via a distilled patch). Route names are
|
|
423
|
+
// unique and deterministic, so the holder is a stale duplicate
|
|
424
|
+
// of this logical resource — delete it and retry the rename.
|
|
425
|
+
Effect.catchTag("RouteAlreadyExists", (error) =>
|
|
426
|
+
Effect.gen(function* () {
|
|
427
|
+
const holder = yield* findByName(accountId, gatewayId, name);
|
|
428
|
+
if (holder === undefined || holder.id === routeId) {
|
|
429
|
+
return yield* Effect.fail(error);
|
|
430
|
+
}
|
|
431
|
+
yield* aiGateway
|
|
432
|
+
.deleteDynamicRouting({
|
|
433
|
+
accountId,
|
|
434
|
+
gatewayId,
|
|
435
|
+
id: holder.id,
|
|
436
|
+
})
|
|
437
|
+
.pipe(Effect.catchTag("RouteNotFound", () => Effect.void));
|
|
438
|
+
yield* aiGateway.patchDynamicRouting({
|
|
439
|
+
accountId,
|
|
440
|
+
gatewayId,
|
|
441
|
+
id: routeId,
|
|
442
|
+
name,
|
|
443
|
+
});
|
|
444
|
+
}),
|
|
445
|
+
),
|
|
446
|
+
);
|
|
415
447
|
}
|
|
416
448
|
|
|
417
449
|
// `get` returns the *deployed* version's graph, so an undeployed
|
|
@@ -835,9 +835,10 @@ const retryTokenPropagation = <A, E extends { _tag: string }, R>(
|
|
|
835
835
|
// sparsely and detects a settled token tens of seconds late. Capped
|
|
836
836
|
// polling detects within 6s of propagation completing while still
|
|
837
837
|
// covering a long total window.
|
|
838
|
-
schedule: Schedule.
|
|
839
|
-
Schedule.
|
|
840
|
-
|
|
838
|
+
schedule: Schedule.min([
|
|
839
|
+
Schedule.exponential("1 second", 1.5),
|
|
840
|
+
Schedule.spaced("6 seconds"),
|
|
841
|
+
]),
|
|
841
842
|
times: 22,
|
|
842
843
|
}),
|
|
843
844
|
);
|
|
@@ -292,10 +292,13 @@ const retryTransientAccessError = <A, E extends { _tag: string }, R>(
|
|
|
292
292
|
Effect.retry({
|
|
293
293
|
while: (e) =>
|
|
294
294
|
e._tag === "AccessReferenceNotFound" || e._tag === "Forbidden",
|
|
295
|
-
schedule: Schedule.
|
|
296
|
-
Schedule.
|
|
297
|
-
|
|
298
|
-
|
|
295
|
+
schedule: Schedule.max([
|
|
296
|
+
Schedule.min([
|
|
297
|
+
Schedule.exponential("1 second", 1.5),
|
|
298
|
+
Schedule.spaced("5 seconds"),
|
|
299
|
+
]),
|
|
300
|
+
Schedule.recurs(12),
|
|
301
|
+
]),
|
|
299
302
|
}),
|
|
300
303
|
);
|
|
301
304
|
|
|
@@ -250,9 +250,10 @@ export const SilenceProvider = () =>
|
|
|
250
250
|
),
|
|
251
251
|
Effect.retry({
|
|
252
252
|
while: (e) => e._tag === "SilencePending",
|
|
253
|
-
schedule: Schedule.
|
|
254
|
-
Schedule.
|
|
255
|
-
|
|
253
|
+
schedule: Schedule.max([
|
|
254
|
+
Schedule.exponential("500 millis"),
|
|
255
|
+
Schedule.recurs(8),
|
|
256
|
+
]),
|
|
256
257
|
}),
|
|
257
258
|
);
|
|
258
259
|
return toSilenceAttributes(observed, accountId);
|
|
@@ -211,9 +211,10 @@ export const NotificationWebhookProvider = () =>
|
|
|
211
211
|
.pipe(
|
|
212
212
|
Effect.retry({
|
|
213
213
|
while: (e) => e._tag === "WebhookTestFailed",
|
|
214
|
-
schedule: Schedule.
|
|
215
|
-
Schedule.
|
|
216
|
-
|
|
214
|
+
schedule: Schedule.max([
|
|
215
|
+
Schedule.exponential("1 second"),
|
|
216
|
+
Schedule.recurs(5),
|
|
217
|
+
]),
|
|
217
218
|
}),
|
|
218
219
|
);
|
|
219
220
|
if (!created.id) {
|
|
@@ -247,9 +248,10 @@ export const NotificationWebhookProvider = () =>
|
|
|
247
248
|
.pipe(
|
|
248
249
|
Effect.retry({
|
|
249
250
|
while: (e) => e._tag === "WebhookTestFailed",
|
|
250
|
-
schedule: Schedule.
|
|
251
|
-
Schedule.
|
|
252
|
-
|
|
251
|
+
schedule: Schedule.max([
|
|
252
|
+
Schedule.exponential("1 second"),
|
|
253
|
+
Schedule.recurs(5),
|
|
254
|
+
]),
|
|
253
255
|
}),
|
|
254
256
|
);
|
|
255
257
|
const fresh = yield* observeWebhook(accountId, observed.id);
|