alchemy 2.0.0-beta.65 → 2.0.0-beta.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/exec.js +578 -224
- package/bin/exec.js.map +1 -1
- package/lib/AWS/ApiGateway/common.d.ts.map +1 -1
- package/lib/AWS/ApiGateway/common.js +8 -1
- package/lib/AWS/ApiGateway/common.js.map +1 -1
- package/lib/AWS/Bedrock/LanguageModel.d.ts +208 -0
- package/lib/AWS/Bedrock/LanguageModel.d.ts.map +1 -0
- package/lib/AWS/Bedrock/LanguageModel.js +508 -0
- package/lib/AWS/Bedrock/LanguageModel.js.map +1 -0
- package/lib/AWS/Bedrock/LanguageModelHttp.d.ts +10 -0
- package/lib/AWS/Bedrock/LanguageModelHttp.d.ts.map +1 -0
- package/lib/AWS/Bedrock/LanguageModelHttp.js +26 -0
- package/lib/AWS/Bedrock/LanguageModelHttp.js.map +1 -0
- package/lib/AWS/Bedrock/index.d.ts +2 -0
- package/lib/AWS/Bedrock/index.d.ts.map +1 -1
- package/lib/AWS/Bedrock/index.js +2 -0
- package/lib/AWS/Bedrock/index.js.map +1 -1
- package/lib/AWS/CloudFront/Distribution.d.ts +24 -0
- package/lib/AWS/CloudFront/Distribution.d.ts.map +1 -1
- package/lib/AWS/CloudFront/Distribution.js +89 -4
- package/lib/AWS/CloudFront/Distribution.js.map +1 -1
- package/lib/AWS/CostExplorer/AnomalyMonitor.d.ts +1 -1
- package/lib/AWS/CostExplorer/AnomalyMonitor.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/AnomalySubscription.d.ts +1 -1
- package/lib/AWS/CostExplorer/AnomalySubscription.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/BindingHttp.d.ts +3 -3
- package/lib/AWS/CostExplorer/BindingHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/CostCategory.d.ts +1 -1
- package/lib/AWS/CostExplorer/CostCategory.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetAnomaliesHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetAnomaliesHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetApproximateUsageRecordsHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetApproximateUsageRecordsHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetCommitmentPurchaseAnalysisHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetCommitmentPurchaseAnalysisHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetCostAndUsageComparisonsHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetCostAndUsageComparisonsHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetCostAndUsageHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetCostAndUsageHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetCostAndUsageWithResourcesHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetCostAndUsageWithResourcesHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetCostCategoriesHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetCostCategoriesHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetCostComparisonDriversHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetCostComparisonDriversHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetCostForecastHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetCostForecastHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetDimensionValuesHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetDimensionValuesHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetReservationCoverageHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetReservationCoverageHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetReservationPurchaseRecommendationHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetReservationPurchaseRecommendationHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetReservationUtilizationHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetReservationUtilizationHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetRightsizingRecommendationHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetRightsizingRecommendationHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlanPurchaseRecommendationDetailsHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlanPurchaseRecommendationDetailsHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlansCoverageHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlansCoverageHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlansPurchaseRecommendationHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlansPurchaseRecommendationHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlansUtilizationDetailsHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlansUtilizationDetailsHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlansUtilizationHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetSavingsPlansUtilizationHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetTagsHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetTagsHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/GetUsageForecastHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/GetUsageForecastHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/ListCommitmentPurchaseAnalysesHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/ListCommitmentPurchaseAnalysesHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/ListCostAllocationTagBackfillHistoryHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/ListCostAllocationTagBackfillHistoryHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/ListCostAllocationTagsHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/ListCostAllocationTagsHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/ListCostCategoryResourceAssociationsHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/ListCostCategoryResourceAssociationsHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/ListSavingsPlansPurchaseRecommendationGenerationHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/ListSavingsPlansPurchaseRecommendationGenerationHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/ProvideAnomalyFeedbackHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/ProvideAnomalyFeedbackHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/StartCommitmentPurchaseAnalysisHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/StartCommitmentPurchaseAnalysisHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/StartCostAllocationTagBackfillHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/StartCostAllocationTagBackfillHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/StartSavingsPlansPurchaseRecommendationGenerationHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/StartSavingsPlansPurchaseRecommendationGenerationHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/UpdateCostAllocationTagsStatusHttp.d.ts +1 -1
- package/lib/AWS/CostExplorer/UpdateCostAllocationTagsStatusHttp.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/common.d.ts +5 -3
- package/lib/AWS/CostExplorer/common.d.ts.map +1 -1
- package/lib/AWS/CostExplorer/common.js +16 -1
- package/lib/AWS/CostExplorer/common.js.map +1 -1
- package/lib/AWS/DataSync/Task.d.ts.map +1 -1
- package/lib/AWS/DataSync/Task.js +16 -2
- package/lib/AWS/DataSync/Task.js.map +1 -1
- package/lib/AWS/EC2/Vpc.d.ts.map +1 -1
- package/lib/AWS/EC2/Vpc.js +15 -2
- package/lib/AWS/EC2/Vpc.js.map +1 -1
- package/lib/AWS/EC2/hosted.d.ts.map +1 -1
- package/lib/AWS/EC2/hosted.js +10 -2
- package/lib/AWS/EC2/hosted.js.map +1 -1
- package/lib/AWS/ECR/Image.d.ts +132 -13
- package/lib/AWS/ECR/Image.d.ts.map +1 -1
- package/lib/AWS/ECR/ImageSource.d.ts.map +1 -1
- package/lib/AWS/ECR/ImageSource.js +10 -2
- package/lib/AWS/ECR/ImageSource.js.map +1 -1
- package/lib/AWS/ECR/Repository.d.ts +2 -0
- package/lib/AWS/ECR/Repository.d.ts.map +1 -1
- package/lib/AWS/ECR/Repository.js +28 -3
- package/lib/AWS/ECR/Repository.js.map +1 -1
- package/lib/AWS/ECS/Service.d.ts +27 -1
- package/lib/AWS/ECS/Service.d.ts.map +1 -1
- package/lib/AWS/ECS/Service.js +184 -22
- package/lib/AWS/ECS/Service.js.map +1 -1
- package/lib/AWS/ECS/Task.d.ts +32 -8
- package/lib/AWS/ECS/Task.d.ts.map +1 -1
- package/lib/AWS/ECS/Task.js +62 -29
- package/lib/AWS/ECS/Task.js.map +1 -1
- package/lib/AWS/EKS/Deployment.d.ts.map +1 -1
- package/lib/AWS/EKS/Deployment.js +10 -2
- package/lib/AWS/EKS/Deployment.js.map +1 -1
- package/lib/AWS/EKS/Job.d.ts.map +1 -1
- package/lib/AWS/EKS/Job.js +10 -2
- package/lib/AWS/EKS/Job.js.map +1 -1
- package/lib/AWS/Lambda/Function.d.ts +15 -0
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +67 -29
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Lambda/HttpServer.d.ts.map +1 -1
- package/lib/AWS/Lambda/HttpServer.js +7 -1
- package/lib/AWS/Lambda/HttpServer.js.map +1 -1
- package/lib/AWS/Lambda/LayerVersion.d.ts +176 -0
- package/lib/AWS/Lambda/LayerVersion.d.ts.map +1 -0
- package/lib/AWS/Lambda/LayerVersion.js +288 -0
- package/lib/AWS/Lambda/LayerVersion.js.map +1 -0
- package/lib/AWS/Lambda/MicrovmBundle.d.ts.map +1 -1
- package/lib/AWS/Lambda/MicrovmBundle.js +10 -2
- package/lib/AWS/Lambda/MicrovmBundle.js.map +1 -1
- package/lib/AWS/Lambda/index.d.ts +1 -0
- package/lib/AWS/Lambda/index.d.ts.map +1 -1
- package/lib/AWS/Lambda/index.js +1 -0
- package/lib/AWS/Lambda/index.js.map +1 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +6 -1
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/AWS/SES/ActiveReceiptRuleSet.d.ts +40 -0
- package/lib/AWS/SES/ActiveReceiptRuleSet.d.ts.map +1 -0
- package/lib/AWS/SES/ActiveReceiptRuleSet.js +58 -0
- package/lib/AWS/SES/ActiveReceiptRuleSet.js.map +1 -0
- package/lib/AWS/SES/ReceiptFilter.d.ts +67 -0
- package/lib/AWS/SES/ReceiptFilter.d.ts.map +1 -0
- package/lib/AWS/SES/ReceiptFilter.js +92 -0
- package/lib/AWS/SES/ReceiptFilter.js.map +1 -0
- package/lib/AWS/SES/ReceiptRule.d.ts +133 -0
- package/lib/AWS/SES/ReceiptRule.d.ts.map +1 -0
- package/lib/AWS/SES/ReceiptRule.js +178 -0
- package/lib/AWS/SES/ReceiptRule.js.map +1 -0
- package/lib/AWS/SES/ReceiptRuleSet.d.ts +55 -0
- package/lib/AWS/SES/ReceiptRuleSet.d.ts.map +1 -0
- package/lib/AWS/SES/ReceiptRuleSet.js +112 -0
- package/lib/AWS/SES/ReceiptRuleSet.js.map +1 -0
- package/lib/AWS/SES/SendBounce.d.ts +37 -0
- package/lib/AWS/SES/SendBounce.d.ts.map +1 -0
- package/lib/AWS/SES/SendBounce.js +3 -0
- package/lib/AWS/SES/SendBounce.js.map +1 -0
- package/lib/AWS/SES/SendBounceHttp.d.ts +4 -0
- package/lib/AWS/SES/SendBounceHttp.d.ts.map +1 -0
- package/lib/AWS/SES/SendBounceHttp.js +10 -0
- package/lib/AWS/SES/SendBounceHttp.js.map +1 -0
- package/lib/AWS/SES/index.d.ts +6 -0
- package/lib/AWS/SES/index.d.ts.map +1 -1
- package/lib/AWS/SES/index.js +6 -0
- package/lib/AWS/SES/index.js.map +1 -1
- package/lib/AWS/StateStore/State.d.ts +11 -0
- package/lib/AWS/StateStore/State.d.ts.map +1 -1
- package/lib/AWS/StateStore/State.js +117 -38
- package/lib/AWS/StateStore/State.js.map +1 -1
- package/lib/Apply.d.ts +37 -1
- package/lib/Apply.d.ts.map +1 -1
- package/lib/Apply.js +270 -194
- package/lib/Apply.js.map +1 -1
- package/lib/Axiom/Telemetry.d.ts +66 -0
- package/lib/Axiom/Telemetry.d.ts.map +1 -0
- package/lib/Axiom/Telemetry.js +69 -0
- package/lib/Axiom/Telemetry.js.map +1 -0
- package/lib/Axiom/index.d.ts +1 -0
- package/lib/Axiom/index.d.ts.map +1 -1
- package/lib/Axiom/index.js +1 -0
- package/lib/Axiom/index.js.map +1 -1
- package/lib/Bundle/Bundle.d.ts +1 -1
- package/lib/Bundle/Bundle.d.ts.map +1 -1
- package/lib/Bundle/Bundle.js +14 -6
- package/lib/Bundle/Bundle.js.map +1 -1
- package/lib/Bundle/BundleAnalyzerPlugin.d.ts +1 -1
- package/lib/Bundle/BundleAnalyzerPlugin.d.ts.map +1 -1
- package/lib/Bundle/BundleAnalyzerPlugin.js +10 -5
- package/lib/Bundle/BundleAnalyzerPlugin.js.map +1 -1
- package/lib/Bundle/PurePlugin.d.ts +1 -1
- package/lib/Bundle/PurePlugin.d.ts.map +1 -1
- package/lib/Bundle/PurePlugin.js +15 -7
- package/lib/Bundle/PurePlugin.js.map +1 -1
- package/lib/Cli/checkVersion.d.ts +11 -5
- package/lib/Cli/checkVersion.d.ts.map +1 -1
- package/lib/Cli/checkVersion.js +73 -12
- package/lib/Cli/checkVersion.js.map +1 -1
- package/lib/Cli/commands/_shared.d.ts.map +1 -1
- package/lib/Cli/commands/_shared.js +2 -1
- package/lib/Cli/commands/_shared.js.map +1 -1
- package/lib/Cli/commands/cloudflare.d.ts +1 -1
- package/lib/Cli/commands/deploy.d.ts.map +1 -1
- package/lib/Cli/commands/deploy.js +3 -11
- package/lib/Cli/commands/deploy.js.map +1 -1
- package/lib/Cli/commands/logs.d.ts.map +1 -1
- package/lib/Cli/commands/logs.js +3 -1
- package/lib/Cli/commands/logs.js.map +1 -1
- package/lib/Cli/commands/tail.d.ts.map +1 -1
- package/lib/Cli/commands/tail.js +3 -1
- package/lib/Cli/commands/tail.js.map +1 -1
- package/lib/Cli/main.d.ts.map +1 -1
- package/lib/Cli/main.js +5 -4
- package/lib/Cli/main.js.map +1 -1
- package/lib/Cloudflare/AI/Search.d.ts +4 -15
- package/lib/Cloudflare/AI/Search.d.ts.map +1 -1
- package/lib/Cloudflare/AI/Search.js +4 -6
- package/lib/Cloudflare/AI/Search.js.map +1 -1
- package/lib/Cloudflare/AI/SearchInstance.d.ts +7 -26
- package/lib/Cloudflare/AI/SearchInstance.d.ts.map +1 -1
- package/lib/Cloudflare/AI/SearchInstance.js +7 -26
- package/lib/Cloudflare/AI/SearchInstance.js.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts +3 -0
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.js +3 -0
- package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.d.ts +2 -1
- package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js +8 -3
- package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
- package/lib/Cloudflare/Auth/OAuthClient.d.ts +5 -0
- package/lib/Cloudflare/Auth/OAuthClient.d.ts.map +1 -1
- package/lib/Cloudflare/Auth/OAuthClient.js +50 -4
- package/lib/Cloudflare/Auth/OAuthClient.js.map +1 -1
- package/lib/Cloudflare/Containers/Container.d.ts +81 -3
- package/lib/Cloudflare/Containers/Container.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/Container.js +70 -0
- package/lib/Cloudflare/Containers/Container.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts +22 -1
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.js +4 -1
- package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerBundle.js +10 -2
- 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 +43 -0
- package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
- package/lib/Cloudflare/Credentials.d.ts +21 -1
- package/lib/Cloudflare/Credentials.d.ts.map +1 -1
- package/lib/Cloudflare/Credentials.js +52 -9
- package/lib/Cloudflare/Credentials.js.map +1 -1
- package/lib/Cloudflare/D1/ApplyMigrations.d.ts +30 -5
- package/lib/Cloudflare/D1/ApplyMigrations.d.ts.map +1 -1
- package/lib/Cloudflare/D1/ApplyMigrations.js +36 -26
- package/lib/Cloudflare/D1/ApplyMigrations.js.map +1 -1
- package/lib/Cloudflare/D1/Database.d.ts +18 -1
- package/lib/Cloudflare/D1/Database.d.ts.map +1 -1
- package/lib/Cloudflare/D1/Database.js +134 -2
- package/lib/Cloudflare/D1/Database.js.map +1 -1
- package/lib/Cloudflare/D1/LocalD1Gateway.d.ts +39 -0
- package/lib/Cloudflare/D1/LocalD1Gateway.d.ts.map +1 -0
- package/lib/Cloudflare/D1/LocalD1Gateway.js +100 -0
- package/lib/Cloudflare/D1/LocalD1Gateway.js.map +1 -0
- package/lib/Cloudflare/D1/QueryDatabaseHttpClient.d.ts +31 -0
- package/lib/Cloudflare/D1/QueryDatabaseHttpClient.d.ts.map +1 -1
- package/lib/Cloudflare/D1/QueryDatabaseHttpClient.js +13 -6
- package/lib/Cloudflare/D1/QueryDatabaseHttpClient.js.map +1 -1
- package/lib/Cloudflare/D1/QueryDatabaseLocal.d.ts.map +1 -1
- package/lib/Cloudflare/D1/QueryDatabaseLocal.js +21 -2
- package/lib/Cloudflare/D1/QueryDatabaseLocal.js.map +1 -1
- package/lib/Cloudflare/DNS/Record.d.ts +3 -1
- package/lib/Cloudflare/DNS/Record.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/Record.js +23 -4
- package/lib/Cloudflare/DNS/Record.js.map +1 -1
- package/lib/Cloudflare/Email/Address.d.ts.map +1 -1
- package/lib/Cloudflare/Email/Address.js +15 -1
- package/lib/Cloudflare/Email/Address.js.map +1 -1
- package/lib/Cloudflare/Email/SendBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Email/SendBinding.js +1 -0
- package/lib/Cloudflare/Email/SendBinding.js.map +1 -1
- package/lib/Cloudflare/Email/SendEmail.d.ts +12 -0
- package/lib/Cloudflare/Email/SendEmail.d.ts.map +1 -1
- package/lib/Cloudflare/Email/SendEmail.js +1 -0
- package/lib/Cloudflare/Email/SendEmail.js.map +1 -1
- package/lib/Cloudflare/Flagship/App.d.ts.map +1 -1
- package/lib/Cloudflare/Flagship/App.js +8 -3
- package/lib/Cloudflare/Flagship/App.js.map +1 -1
- package/lib/Cloudflare/KV/LocalKVGateway.d.ts +15 -0
- package/lib/Cloudflare/KV/LocalKVGateway.d.ts.map +1 -0
- package/lib/Cloudflare/KV/LocalKVGateway.js +64 -0
- package/lib/Cloudflare/KV/LocalKVGateway.js.map +1 -0
- package/lib/Cloudflare/KV/Namespace.d.ts +9 -1
- package/lib/Cloudflare/KV/Namespace.d.ts.map +1 -1
- package/lib/Cloudflare/KV/Namespace.js +45 -1
- package/lib/Cloudflare/KV/Namespace.js.map +1 -1
- package/lib/Cloudflare/KV/NamespaceLocal.d.ts +16 -5
- package/lib/Cloudflare/KV/NamespaceLocal.d.ts.map +1 -1
- package/lib/Cloudflare/KV/NamespaceLocal.js +21 -4
- package/lib/Cloudflare/KV/NamespaceLocal.js.map +1 -1
- package/lib/Cloudflare/KV/ReadNamespaceLocal.d.ts.map +1 -1
- package/lib/Cloudflare/KV/ReadNamespaceLocal.js +5 -1
- package/lib/Cloudflare/KV/ReadNamespaceLocal.js.map +1 -1
- package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.d.ts.map +1 -1
- package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.js +5 -1
- package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.js.map +1 -1
- package/lib/Cloudflare/KV/WriteNamespaceLocal.d.ts.map +1 -1
- package/lib/Cloudflare/KV/WriteNamespaceLocal.js +5 -1
- package/lib/Cloudflare/KV/WriteNamespaceLocal.js.map +1 -1
- package/lib/Cloudflare/LocalGateway.d.ts +25 -0
- package/lib/Cloudflare/LocalGateway.d.ts.map +1 -0
- package/lib/Cloudflare/LocalGateway.js +70 -0
- package/lib/Cloudflare/LocalGateway.js.map +1 -0
- package/lib/Cloudflare/LocalRuntime.d.ts +14 -1
- package/lib/Cloudflare/LocalRuntime.d.ts.map +1 -1
- package/lib/Cloudflare/LocalRuntime.js +16 -1
- package/lib/Cloudflare/LocalRuntime.js.map +1 -1
- package/lib/Cloudflare/Logs.d.ts.map +1 -1
- package/lib/Cloudflare/Logs.js +18 -6
- package/lib/Cloudflare/Logs.js.map +1 -1
- package/lib/Cloudflare/Providers.d.ts +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +6 -2
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Queues/Consumer.d.ts +16 -3
- package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/Consumer.js +51 -3
- package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
- package/lib/Cloudflare/Queues/Queue.d.ts +4 -3
- package/lib/Cloudflare/Queues/Queue.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/Queue.js +7 -17
- package/lib/Cloudflare/Queues/Queue.js.map +1 -1
- package/lib/Cloudflare/Queues/QueueBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/QueueBinding.js +19 -0
- package/lib/Cloudflare/Queues/QueueBinding.js.map +1 -1
- package/lib/Cloudflare/Queues/QueueShim.d.ts +55 -0
- package/lib/Cloudflare/Queues/QueueShim.d.ts.map +1 -0
- package/lib/Cloudflare/Queues/QueueShim.js +177 -0
- package/lib/Cloudflare/Queues/QueueShim.js.map +1 -0
- package/lib/Cloudflare/R2/Bucket.d.ts +14 -1
- package/lib/Cloudflare/R2/Bucket.d.ts.map +1 -1
- package/lib/Cloudflare/R2/Bucket.js +53 -1
- package/lib/Cloudflare/R2/Bucket.js.map +1 -1
- package/lib/Cloudflare/R2/BucketBinding.d.ts +10 -0
- package/lib/Cloudflare/R2/BucketBinding.d.ts.map +1 -1
- package/lib/Cloudflare/R2/BucketBinding.js +14 -3
- package/lib/Cloudflare/R2/BucketBinding.js.map +1 -1
- package/lib/Cloudflare/R2/BucketLocal.d.ts +13 -6
- package/lib/Cloudflare/R2/BucketLocal.d.ts.map +1 -1
- package/lib/Cloudflare/R2/BucketLocal.js +19 -6
- package/lib/Cloudflare/R2/BucketLocal.js.map +1 -1
- package/lib/Cloudflare/R2/LocalR2Gateway.d.ts +15 -0
- package/lib/Cloudflare/R2/LocalR2Gateway.d.ts.map +1 -0
- package/lib/Cloudflare/R2/LocalR2Gateway.js +65 -0
- package/lib/Cloudflare/R2/LocalR2Gateway.js.map +1 -0
- package/lib/Cloudflare/R2/ReadBucketLocal.d.ts.map +1 -1
- package/lib/Cloudflare/R2/ReadBucketLocal.js +5 -1
- package/lib/Cloudflare/R2/ReadBucketLocal.js.map +1 -1
- package/lib/Cloudflare/R2/ReadWriteBucketLocal.d.ts.map +1 -1
- package/lib/Cloudflare/R2/ReadWriteBucketLocal.js +5 -1
- package/lib/Cloudflare/R2/ReadWriteBucketLocal.js.map +1 -1
- package/lib/Cloudflare/R2/WriteBucketLocal.d.ts.map +1 -1
- package/lib/Cloudflare/R2/WriteBucketLocal.js +5 -1
- package/lib/Cloudflare/R2/WriteBucketLocal.js.map +1 -1
- package/lib/Cloudflare/Ruleset/AccountEntrypoint.d.ts.map +1 -1
- package/lib/Cloudflare/Ruleset/AccountEntrypoint.js +5 -1
- package/lib/Cloudflare/Ruleset/AccountEntrypoint.js.map +1 -1
- package/lib/Cloudflare/Ruleset/Ruleset.d.ts.map +1 -1
- package/lib/Cloudflare/Ruleset/Ruleset.js +19 -6
- package/lib/Cloudflare/Ruleset/Ruleset.js.map +1 -1
- package/lib/Cloudflare/Rum/Site.js +10 -2
- package/lib/Cloudflare/Rum/Site.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +31 -2
- package/lib/Cloudflare/StateStore/Api.js +1 -1
- package/lib/Cloudflare/StateStore/Api.js.map +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/Tunnel.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/Tunnel.js +20 -1
- package/lib/Cloudflare/Tunnel/Tunnel.js.map +1 -1
- package/lib/Cloudflare/Website/StaticSite.d.ts +34 -7
- package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
- package/lib/Cloudflare/Website/StaticSite.js +108 -24
- package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
- package/lib/Cloudflare/Website/Vite.d.ts +33 -19
- package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Website/Vite.js +33 -19
- 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 +26 -7
- package/lib/Cloudflare/Workers/Compatibility.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.d.ts +22 -0
- package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.js +22 -0
- package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectBridge.js +20 -5
- package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/InferEnv.d.ts +4 -2
- package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +7 -3
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +483 -298
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +612 -13
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +222 -1
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +13 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +171 -21
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +130 -28
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBridge.d.ts +6 -2
- package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBridge.js +18 -2
- package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBundle.js +4 -1
- package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts +186 -11
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.js +1765 -236
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts +7 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.js +14 -4
- package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
- package/lib/Command/Build.d.ts +2 -2
- package/lib/Command/Build.d.ts.map +1 -1
- package/lib/Command/Build.js +4 -7
- package/lib/Command/Build.js.map +1 -1
- package/lib/Command/Command.d.ts +34 -4
- package/lib/Command/Command.d.ts.map +1 -1
- package/lib/Command/Command.js +125 -30
- package/lib/Command/Command.js.map +1 -1
- package/lib/Command/Dev.d.ts +2 -2
- package/lib/Command/Dev.d.ts.map +1 -1
- package/lib/Command/Dev.js +51 -73
- package/lib/Command/Dev.js.map +1 -1
- package/lib/Command/Exec.d.ts +11 -2
- package/lib/Command/Exec.d.ts.map +1 -1
- package/lib/Command/Exec.js +9 -0
- package/lib/Command/Exec.js.map +1 -1
- package/lib/Command/Memo.d.ts +9 -1
- package/lib/Command/Memo.d.ts.map +1 -1
- package/lib/Command/Memo.js +14 -2
- package/lib/Command/Memo.js.map +1 -1
- package/lib/Command/Providers.d.ts +1 -1
- package/lib/Command/Providers.d.ts.map +1 -1
- package/lib/Command/Redaction.d.ts +10 -0
- package/lib/Command/Redaction.d.ts.map +1 -0
- package/lib/Command/Redaction.js +119 -0
- package/lib/Command/Redaction.js.map +1 -0
- package/lib/Deploy.d.ts +2 -1
- package/lib/Deploy.d.ts.map +1 -1
- package/lib/Destroy.d.ts +2 -1
- package/lib/Destroy.d.ts.map +1 -1
- package/lib/Destroy.js +1 -9
- package/lib/Destroy.js.map +1 -1
- package/lib/Docker/Container.d.ts +15 -1
- package/lib/Docker/Container.d.ts.map +1 -1
- package/lib/Docker/Container.js +34 -11
- package/lib/Docker/Container.js.map +1 -1
- package/lib/Docker/Context.d.ts +84 -0
- package/lib/Docker/Context.d.ts.map +1 -0
- package/lib/Docker/Context.js +145 -0
- package/lib/Docker/Context.js.map +1 -0
- package/lib/Docker/Docker.d.ts +190 -14
- package/lib/Docker/Docker.d.ts.map +1 -1
- package/lib/Docker/Docker.js +149 -28
- package/lib/Docker/Docker.js.map +1 -1
- package/lib/Docker/Image.d.ts +12 -0
- package/lib/Docker/Image.d.ts.map +1 -1
- package/lib/Docker/Image.js +24 -7
- package/lib/Docker/Image.js.map +1 -1
- package/lib/Docker/Network.d.ts +7 -0
- package/lib/Docker/Network.d.ts.map +1 -1
- package/lib/Docker/Network.js +16 -7
- package/lib/Docker/Network.js.map +1 -1
- package/lib/Docker/Providers.d.ts +1 -1
- package/lib/Docker/Providers.d.ts.map +1 -1
- package/lib/Docker/Providers.js +13 -1
- package/lib/Docker/Providers.js.map +1 -1
- package/lib/Docker/RemoteImage.d.ts +12 -0
- package/lib/Docker/RemoteImage.d.ts.map +1 -1
- package/lib/Docker/RemoteImage.js +22 -8
- package/lib/Docker/RemoteImage.js.map +1 -1
- package/lib/Docker/Service.d.ts +445 -0
- package/lib/Docker/Service.d.ts.map +1 -0
- package/lib/Docker/Service.js +578 -0
- package/lib/Docker/Service.js.map +1 -0
- package/lib/Docker/ServiceImage.d.ts +78 -0
- package/lib/Docker/ServiceImage.d.ts.map +1 -0
- package/lib/Docker/ServiceImage.js +232 -0
- package/lib/Docker/ServiceImage.js.map +1 -0
- package/lib/Docker/Swarm.d.ts +117 -0
- package/lib/Docker/Swarm.d.ts.map +1 -0
- package/lib/Docker/Swarm.js +149 -0
- package/lib/Docker/Swarm.js.map +1 -0
- package/lib/Docker/Volume.d.ts +11 -0
- package/lib/Docker/Volume.d.ts.map +1 -1
- package/lib/Docker/Volume.js +21 -6
- package/lib/Docker/Volume.js.map +1 -1
- package/lib/Docker/index.d.ts +3 -0
- package/lib/Docker/index.d.ts.map +1 -1
- package/lib/Docker/index.js +3 -0
- package/lib/Docker/index.js.map +1 -1
- package/lib/Http.d.ts +8 -1
- package/lib/Http.d.ts.map +1 -1
- package/lib/Http.js +7 -2
- package/lib/Http.js.map +1 -1
- package/lib/Local/LocalProvider.d.ts +182 -0
- package/lib/Local/LocalProvider.d.ts.map +1 -0
- package/lib/Local/LocalProvider.js +226 -0
- package/lib/Local/LocalProvider.js.map +1 -0
- package/lib/Local/ProviderLayer.d.ts +43 -2
- package/lib/Local/ProviderLayer.d.ts.map +1 -1
- package/lib/Local/ProviderLayer.js +80 -2
- package/lib/Local/ProviderLayer.js.map +1 -1
- package/lib/Local/RpcProvider.d.ts +7 -0
- package/lib/Local/RpcProvider.d.ts.map +1 -1
- package/lib/Local/RpcProvider.js +8 -3
- package/lib/Local/RpcProvider.js.map +1 -1
- package/lib/Local/RpcProviderProxy.d.ts.map +1 -1
- package/lib/Local/RpcProviderProxy.js +3 -0
- package/lib/Local/RpcProviderProxy.js.map +1 -1
- package/lib/Local/RpcServer.d.ts +8 -1
- package/lib/Local/RpcServer.d.ts.map +1 -1
- package/lib/Local/RpcServer.js +4 -1
- package/lib/Local/RpcServer.js.map +1 -1
- package/lib/Plan.d.ts +34 -0
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +127 -40
- package/lib/Plan.js.map +1 -1
- package/lib/Planetscale/AuthProvider.d.ts.map +1 -1
- package/lib/Planetscale/AuthProvider.js +6 -2
- package/lib/Planetscale/AuthProvider.js.map +1 -1
- package/lib/Planetscale/Branch.d.ts.map +1 -1
- package/lib/Planetscale/Branch.js +36 -6
- package/lib/Planetscale/Branch.js.map +1 -1
- package/lib/Planetscale/MySQL/MySQLDatabase.d.ts.map +1 -1
- package/lib/Planetscale/MySQL/MySQLDatabase.js +31 -6
- package/lib/Planetscale/MySQL/MySQLDatabase.js.map +1 -1
- package/lib/Planetscale/OAuthClient.d.ts +7 -1
- package/lib/Planetscale/OAuthClient.d.ts.map +1 -1
- package/lib/Planetscale/OAuthClient.js +51 -4
- package/lib/Planetscale/OAuthClient.js.map +1 -1
- package/lib/Planetscale/Postgres/PostgresDatabase.d.ts.map +1 -1
- package/lib/Planetscale/Postgres/PostgresDatabase.js +30 -5
- package/lib/Planetscale/Postgres/PostgresDatabase.js.map +1 -1
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Platform.js +25 -14
- package/lib/Platform.js.map +1 -1
- package/lib/Prisma/App.d.ts +93 -0
- package/lib/Prisma/App.d.ts.map +1 -0
- package/lib/Prisma/App.js +251 -0
- package/lib/Prisma/App.js.map +1 -0
- package/lib/Prisma/AuthProvider.d.ts +28 -0
- package/lib/Prisma/AuthProvider.d.ts.map +1 -0
- package/lib/Prisma/AuthProvider.js +131 -0
- package/lib/Prisma/AuthProvider.js.map +1 -0
- package/lib/Prisma/Branch.d.ts +96 -0
- package/lib/Prisma/Branch.d.ts.map +1 -0
- package/lib/Prisma/Branch.js +236 -0
- package/lib/Prisma/Branch.js.map +1 -0
- package/lib/Prisma/Client.d.ts +178 -0
- package/lib/Prisma/Client.d.ts.map +1 -0
- package/lib/Prisma/Client.js +562 -0
- package/lib/Prisma/Client.js.map +1 -0
- package/lib/Prisma/Compute.d.ts +585 -0
- package/lib/Prisma/Compute.d.ts.map +1 -0
- package/lib/Prisma/Compute.js +1545 -0
- package/lib/Prisma/Compute.js.map +1 -0
- package/lib/Prisma/ComputeArchive.d.ts +63 -0
- package/lib/Prisma/ComputeArchive.d.ts.map +1 -0
- package/lib/Prisma/ComputeArchive.js +227 -0
- package/lib/Prisma/ComputeArchive.js.map +1 -0
- package/lib/Prisma/ComputeBuild.d.ts +106 -0
- package/lib/Prisma/ComputeBuild.d.ts.map +1 -0
- package/lib/Prisma/ComputeBuild.js +987 -0
- package/lib/Prisma/ComputeBuild.js.map +1 -0
- package/lib/Prisma/ComputeLifecycle.d.ts +84 -0
- package/lib/Prisma/ComputeLifecycle.d.ts.map +1 -0
- package/lib/Prisma/ComputeLifecycle.js +186 -0
- package/lib/Prisma/ComputeLifecycle.js.map +1 -0
- package/lib/Prisma/Connect.d.ts +122 -0
- package/lib/Prisma/Connect.d.ts.map +1 -0
- package/lib/Prisma/Connect.js +187 -0
- package/lib/Prisma/Connect.js.map +1 -0
- package/lib/Prisma/Connection.d.ts +219 -0
- package/lib/Prisma/Connection.d.ts.map +1 -0
- package/lib/Prisma/Connection.js +360 -0
- package/lib/Prisma/Connection.js.map +1 -0
- package/lib/Prisma/CustomDomain.d.ts +91 -0
- package/lib/Prisma/CustomDomain.d.ts.map +1 -0
- package/lib/Prisma/CustomDomain.js +184 -0
- package/lib/Prisma/CustomDomain.js.map +1 -0
- package/lib/Prisma/Database.d.ts +222 -0
- package/lib/Prisma/Database.d.ts.map +1 -0
- package/lib/Prisma/Database.js +418 -0
- package/lib/Prisma/Database.js.map +1 -0
- package/lib/Prisma/Deployment.d.ts +141 -0
- package/lib/Prisma/Deployment.d.ts.map +1 -0
- package/lib/Prisma/Deployment.js +353 -0
- package/lib/Prisma/Deployment.js.map +1 -0
- package/lib/Prisma/EnvironmentVariable.d.ts +105 -0
- package/lib/Prisma/EnvironmentVariable.d.ts.map +1 -0
- package/lib/Prisma/EnvironmentVariable.js +229 -0
- package/lib/Prisma/EnvironmentVariable.js.map +1 -0
- package/lib/Prisma/Internal/AppIdentity.d.ts +10 -0
- package/lib/Prisma/Internal/AppIdentity.d.ts.map +1 -0
- package/lib/Prisma/Internal/AppIdentity.js +6 -0
- package/lib/Prisma/Internal/AppIdentity.js.map +1 -0
- package/lib/Prisma/Internal/AppPromotion.d.ts +19 -0
- package/lib/Prisma/Internal/AppPromotion.d.ts.map +1 -0
- package/lib/Prisma/Internal/AppPromotion.js +107 -0
- package/lib/Prisma/Internal/AppPromotion.js.map +1 -0
- package/lib/Prisma/Internal/ArchivePlatform.d.ts +42 -0
- package/lib/Prisma/Internal/ArchivePlatform.d.ts.map +1 -0
- package/lib/Prisma/Internal/ArchivePlatform.js +214 -0
- package/lib/Prisma/Internal/ArchivePlatform.js.map +1 -0
- package/lib/Prisma/Internal/ArtifactFile.d.ts +58 -0
- package/lib/Prisma/Internal/ArtifactFile.d.ts.map +1 -0
- package/lib/Prisma/Internal/ArtifactFile.js +134 -0
- package/lib/Prisma/Internal/ArtifactFile.js.map +1 -0
- package/lib/Prisma/Internal/ArtifactUpload.d.ts +5 -0
- package/lib/Prisma/Internal/ArtifactUpload.d.ts.map +1 -0
- package/lib/Prisma/Internal/ArtifactUpload.js +51 -0
- package/lib/Prisma/Internal/ArtifactUpload.js.map +1 -0
- package/lib/Prisma/Internal/BundlePaths.d.ts +4 -0
- package/lib/Prisma/Internal/BundlePaths.d.ts.map +1 -0
- package/lib/Prisma/Internal/BundlePaths.js +16 -0
- package/lib/Prisma/Internal/BundlePaths.js.map +1 -0
- package/lib/Prisma/Internal/CleanupFailure.d.ts +8 -0
- package/lib/Prisma/Internal/CleanupFailure.d.ts.map +1 -0
- package/lib/Prisma/Internal/CleanupFailure.js +8 -0
- package/lib/Prisma/Internal/CleanupFailure.js.map +1 -0
- package/lib/Prisma/Internal/DatabaseSecrets.d.ts +35 -0
- package/lib/Prisma/Internal/DatabaseSecrets.d.ts.map +1 -0
- package/lib/Prisma/Internal/DatabaseSecrets.js +85 -0
- package/lib/Prisma/Internal/DatabaseSecrets.js.map +1 -0
- package/lib/Prisma/Internal/DeploymentActions.d.ts +5 -0
- package/lib/Prisma/Internal/DeploymentActions.d.ts.map +1 -0
- package/lib/Prisma/Internal/DeploymentActions.js +16 -0
- package/lib/Prisma/Internal/DeploymentActions.js.map +1 -0
- package/lib/Prisma/Internal/DeploymentIdentity.d.ts +8 -0
- package/lib/Prisma/Internal/DeploymentIdentity.d.ts.map +1 -0
- package/lib/Prisma/Internal/DeploymentIdentity.js +12 -0
- package/lib/Prisma/Internal/DeploymentIdentity.js.map +1 -0
- package/lib/Prisma/Internal/DeploymentObserve.d.ts +3 -0
- package/lib/Prisma/Internal/DeploymentObserve.d.ts.map +1 -0
- package/lib/Prisma/Internal/DeploymentObserve.js +2 -0
- package/lib/Prisma/Internal/DeploymentObserve.js.map +1 -0
- package/lib/Prisma/Internal/EnvName.d.ts +7 -0
- package/lib/Prisma/Internal/EnvName.d.ts.map +1 -0
- package/lib/Prisma/Internal/EnvName.js +23 -0
- package/lib/Prisma/Internal/EnvName.js.map +1 -0
- package/lib/Prisma/Internal/HttpClient.d.ts +21 -0
- package/lib/Prisma/Internal/HttpClient.d.ts.map +1 -0
- package/lib/Prisma/Internal/HttpClient.js +23 -0
- package/lib/Prisma/Internal/HttpClient.js.map +1 -0
- package/lib/Prisma/Operations.d.ts +143 -0
- package/lib/Prisma/Operations.d.ts.map +1 -0
- package/lib/Prisma/Operations.js +75 -0
- package/lib/Prisma/Operations.js.map +1 -0
- package/lib/Prisma/Postgres.d.ts +25 -0
- package/lib/Prisma/Postgres.d.ts.map +1 -0
- package/lib/Prisma/Postgres.js +24 -0
- package/lib/Prisma/Postgres.js.map +1 -0
- package/lib/Prisma/PostgresOrigin.d.ts +31 -0
- package/lib/Prisma/PostgresOrigin.d.ts.map +1 -0
- package/lib/Prisma/PostgresOrigin.js +30 -0
- package/lib/Prisma/PostgresOrigin.js.map +1 -0
- package/lib/Prisma/PrismaDevDatabase.d.ts +25 -0
- package/lib/Prisma/PrismaDevDatabase.d.ts.map +1 -0
- package/lib/Prisma/PrismaDevDatabase.js +280 -0
- package/lib/Prisma/PrismaDevDatabase.js.map +1 -0
- package/lib/Prisma/PrismaEnvironment.d.ts +14 -0
- package/lib/Prisma/PrismaEnvironment.d.ts.map +1 -0
- package/lib/Prisma/PrismaEnvironment.js +50 -0
- package/lib/Prisma/PrismaEnvironment.js.map +1 -0
- package/lib/Prisma/PrismaLogs.d.ts +42 -0
- package/lib/Prisma/PrismaLogs.d.ts.map +1 -0
- package/lib/Prisma/PrismaLogs.js +318 -0
- package/lib/Prisma/PrismaLogs.js.map +1 -0
- package/lib/Prisma/Project.d.ts +123 -0
- package/lib/Prisma/Project.d.ts.map +1 -0
- package/lib/Prisma/Project.js +366 -0
- package/lib/Prisma/Project.js.map +1 -0
- package/lib/Prisma/Providers.d.ts +63 -0
- package/lib/Prisma/Providers.d.ts.map +1 -0
- package/lib/Prisma/Providers.js +306 -0
- package/lib/Prisma/Providers.js.map +1 -0
- package/lib/Prisma/Refs.d.ts +19 -0
- package/lib/Prisma/Refs.d.ts.map +1 -0
- package/lib/Prisma/Refs.js +25 -0
- package/lib/Prisma/Refs.js.map +1 -0
- package/lib/Prisma/SourceRepository.d.ts +127 -0
- package/lib/Prisma/SourceRepository.d.ts.map +1 -0
- package/lib/Prisma/SourceRepository.js +239 -0
- package/lib/Prisma/SourceRepository.js.map +1 -0
- package/lib/Prisma/Types.d.ts +539 -0
- package/lib/Prisma/Types.d.ts.map +1 -0
- package/lib/Prisma/Types.js +13 -0
- package/lib/Prisma/Types.js.map +1 -0
- package/lib/Prisma/index.d.ts +25 -0
- package/lib/Prisma/index.d.ts.map +1 -0
- package/lib/Prisma/index.js +24 -0
- package/lib/Prisma/index.js.map +1 -0
- package/lib/Provider.d.ts +57 -5
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js +54 -30
- package/lib/Provider.js.map +1 -1
- package/lib/ProviderMode.d.ts +93 -0
- package/lib/ProviderMode.d.ts.map +1 -0
- package/lib/ProviderMode.js +77 -0
- package/lib/ProviderMode.js.map +1 -0
- package/lib/Resource.d.ts +8 -0
- package/lib/Resource.d.ts.map +1 -1
- package/lib/Resource.js +31 -0
- package/lib/Resource.js.map +1 -1
- package/lib/RuntimeContext.d.ts +7 -0
- package/lib/RuntimeContext.d.ts.map +1 -1
- package/lib/RuntimeContext.js.map +1 -1
- package/lib/Server/Process.d.ts +8 -0
- package/lib/Server/Process.d.ts.map +1 -1
- package/lib/Server/Process.js +29 -0
- package/lib/Server/Process.js.map +1 -1
- package/lib/State/InMemoryState.d.ts.map +1 -1
- package/lib/State/InMemoryState.js +2 -0
- package/lib/State/InMemoryState.js.map +1 -1
- package/lib/State/ResourceState.d.ts +18 -0
- package/lib/State/ResourceState.d.ts.map +1 -1
- package/lib/Sync.d.ts.map +1 -1
- package/lib/Sync.js +8 -2
- package/lib/Sync.js.map +1 -1
- package/lib/Telemetry.d.ts +150 -0
- package/lib/Telemetry.d.ts.map +1 -0
- package/lib/Telemetry.js +512 -0
- package/lib/Telemetry.js.map +1 -0
- package/lib/Test/Alchemy.d.ts.map +1 -1
- package/lib/Test/Alchemy.js +3 -1
- package/lib/Test/Alchemy.js.map +1 -1
- package/lib/Test/Core.d.ts +2 -2
- package/lib/Test/Core.d.ts.map +1 -1
- package/lib/Test/Core.js +1 -8
- package/lib/Test/Core.js.map +1 -1
- package/lib/Util/Clank.d.ts +11 -6
- package/lib/Util/Clank.d.ts.map +1 -1
- package/lib/Util/Clank.js +22 -9
- package/lib/Util/Clank.js.map +1 -1
- package/lib/Util/zip.d.ts +11 -0
- package/lib/Util/zip.d.ts.map +1 -1
- package/lib/Util/zip.js +30 -0
- package/lib/Util/zip.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/package.json +46 -13
- package/src/AWS/ApiGateway/common.ts +9 -0
- package/src/AWS/Bedrock/LanguageModel.ts +883 -0
- package/src/AWS/Bedrock/LanguageModelHttp.ts +36 -0
- package/src/AWS/Bedrock/index.ts +2 -0
- package/src/AWS/CloudFront/Distribution.ts +116 -6
- package/src/AWS/CostExplorer/common.ts +23 -2
- package/src/AWS/DataSync/Task.ts +30 -15
- package/src/AWS/EC2/Vpc.ts +35 -21
- package/src/AWS/EC2/hosted.ts +10 -2
- package/src/AWS/ECR/ImageSource.ts +10 -2
- package/src/AWS/ECR/Repository.ts +39 -4
- package/src/AWS/ECS/Service.ts +322 -22
- package/src/AWS/ECS/Task.ts +82 -32
- package/src/AWS/EKS/Deployment.ts +10 -2
- package/src/AWS/EKS/Job.ts +10 -2
- package/src/AWS/Lambda/Function.ts +101 -43
- package/src/AWS/Lambda/HttpServer.ts +7 -1
- package/src/AWS/Lambda/LayerVersion.ts +490 -0
- package/src/AWS/Lambda/MicrovmBundle.ts +10 -2
- package/src/AWS/Lambda/index.ts +1 -0
- package/src/AWS/Providers.ts +10 -0
- package/src/AWS/SES/ActiveReceiptRuleSet.ts +88 -0
- package/src/AWS/SES/ReceiptFilter.ts +169 -0
- package/src/AWS/SES/ReceiptRule.ts +300 -0
- package/src/AWS/SES/ReceiptRuleSet.ts +164 -0
- package/src/AWS/SES/SendBounce.ts +44 -0
- package/src/AWS/SES/SendBounceHttp.ts +13 -0
- package/src/AWS/SES/index.ts +6 -0
- package/src/AWS/StateStore/State.ts +159 -42
- package/src/Apply.ts +199 -83
- package/src/Axiom/Telemetry.ts +119 -0
- package/src/Axiom/index.ts +1 -0
- package/src/Bundle/Bundle.ts +17 -7
- package/src/Bundle/BundleAnalyzerPlugin.ts +9 -4
- package/src/Bundle/PurePlugin.ts +19 -9
- package/src/Cli/checkVersion.ts +102 -16
- package/src/Cli/commands/_shared.ts +2 -0
- package/src/Cli/commands/deploy.ts +3 -14
- package/src/Cli/commands/logs.ts +6 -1
- package/src/Cli/commands/tail.ts +6 -1
- package/src/Cli/main.ts +5 -4
- package/src/Cloudflare/AI/Search.ts +4 -18
- package/src/Cloudflare/AI/SearchInstance.ts +7 -26
- package/src/Cloudflare/ApiToken/AccountApiToken.ts +3 -0
- package/src/Cloudflare/Auth/AuthProvider.ts +17 -3
- package/src/Cloudflare/Auth/OAuthClient.ts +58 -2
- package/src/Cloudflare/Containers/Container.ts +92 -3
- package/src/Cloudflare/Containers/ContainerApplication.ts +31 -5
- package/src/Cloudflare/Containers/ContainerBundle.ts +10 -2
- package/src/Cloudflare/Containers/ContainerProvider.ts +62 -0
- package/src/Cloudflare/Credentials.ts +69 -9
- package/src/Cloudflare/D1/ApplyMigrations.ts +72 -77
- package/src/Cloudflare/D1/Database.ts +169 -2
- package/src/Cloudflare/D1/LocalD1Gateway.ts +150 -0
- package/src/Cloudflare/D1/QueryDatabaseHttpClient.ts +49 -11
- package/src/Cloudflare/D1/QueryDatabaseLocal.ts +44 -2
- package/src/Cloudflare/DNS/Record.ts +30 -4
- package/src/Cloudflare/Email/Address.ts +18 -1
- package/src/Cloudflare/Email/SendBinding.ts +1 -0
- package/src/Cloudflare/Email/SendEmail.ts +13 -0
- package/src/Cloudflare/Flagship/App.ts +18 -6
- package/src/Cloudflare/KV/LocalKVGateway.ts +86 -0
- package/src/Cloudflare/KV/Namespace.ts +47 -1
- package/src/Cloudflare/KV/NamespaceLocal.ts +29 -6
- package/src/Cloudflare/KV/ReadNamespaceLocal.ts +5 -1
- package/src/Cloudflare/KV/ReadWriteNamespaceLocal.ts +5 -1
- package/src/Cloudflare/KV/WriteNamespaceLocal.ts +5 -1
- package/src/Cloudflare/LocalGateway.ts +86 -0
- package/src/Cloudflare/LocalRuntime.ts +21 -1
- package/src/Cloudflare/Logs.ts +58 -28
- package/src/Cloudflare/Providers.ts +4 -2
- package/src/Cloudflare/Queues/Consumer.ts +70 -2
- package/src/Cloudflare/Queues/Queue.ts +7 -16
- package/src/Cloudflare/Queues/QueueBinding.ts +21 -0
- package/src/Cloudflare/Queues/QueueShim.ts +193 -0
- package/src/Cloudflare/R2/Bucket.ts +55 -1
- package/src/Cloudflare/R2/BucketBinding.ts +17 -3
- package/src/Cloudflare/R2/BucketLocal.ts +25 -8
- package/src/Cloudflare/R2/LocalR2Gateway.ts +84 -0
- package/src/Cloudflare/R2/ReadBucketLocal.ts +7 -1
- package/src/Cloudflare/R2/ReadWriteBucketLocal.ts +7 -1
- package/src/Cloudflare/R2/WriteBucketLocal.ts +7 -1
- package/src/Cloudflare/Ruleset/AccountEntrypoint.ts +5 -1
- package/src/Cloudflare/Ruleset/Ruleset.ts +20 -6
- package/src/Cloudflare/Rum/Site.ts +11 -4
- package/src/Cloudflare/StateStore/Api.ts +1 -1
- package/src/Cloudflare/Tunnel/Tunnel.ts +23 -1
- package/src/Cloudflare/Website/StaticSite.ts +117 -28
- package/src/Cloudflare/Website/Vite.ts +33 -19
- package/src/Cloudflare/Workers/Compatibility.ts +27 -7
- package/src/Cloudflare/Workers/DurableObject.ts +22 -0
- package/src/Cloudflare/Workers/DurableObjectBridge.ts +29 -10
- package/src/Cloudflare/Workers/InferEnv.ts +74 -59
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +619 -401
- package/src/Cloudflare/Workers/Worker.ts +676 -28
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +209 -25
- package/src/Cloudflare/Workers/WorkerBinding.ts +67 -3
- package/src/Cloudflare/Workers/WorkerBridge.ts +26 -4
- package/src/Cloudflare/Workers/WorkerBundle.ts +6 -1
- package/src/Cloudflare/Workers/WorkerProvider.ts +2269 -277
- package/src/Cloudflare/Workflows/WorkflowBridge.ts +31 -13
- package/src/Command/Build.ts +8 -8
- package/src/Command/Command.ts +217 -42
- package/src/Command/Dev.ts +79 -107
- package/src/Command/Exec.ts +11 -2
- package/src/Command/Memo.ts +27 -3
- package/src/Command/Redaction.ts +181 -0
- package/src/Destroy.ts +1 -10
- package/src/Docker/Container.ts +55 -15
- package/src/Docker/Context.ts +236 -0
- package/src/Docker/Docker.ts +393 -43
- package/src/Docker/Image.ts +28 -7
- package/src/Docker/Network.ts +38 -14
- package/src/Docker/Providers.ts +16 -1
- package/src/Docker/RemoteImage.ts +23 -7
- package/src/Docker/Service.ts +1119 -0
- package/src/Docker/ServiceImage.ts +331 -0
- package/src/Docker/Swarm.ts +226 -0
- package/src/Docker/Volume.ts +25 -6
- package/src/Docker/index.ts +3 -0
- package/src/Http.ts +15 -2
- package/src/Local/LocalProvider.ts +518 -0
- package/src/Local/ProviderLayer.ts +113 -11
- package/src/Local/RpcProvider.ts +10 -5
- package/src/Local/RpcProviderProxy.ts +4 -1
- package/src/Local/RpcServer.ts +20 -2
- package/src/Plan.ts +182 -54
- package/src/Planetscale/AuthProvider.ts +15 -2
- package/src/Planetscale/Branch.ts +39 -6
- package/src/Planetscale/MySQL/MySQLDatabase.ts +34 -6
- package/src/Planetscale/OAuthClient.ts +59 -3
- package/src/Planetscale/Postgres/PostgresDatabase.ts +33 -5
- package/src/Platform.ts +29 -17
- package/src/Prisma/App.ts +433 -0
- package/src/Prisma/AuthProvider.ts +260 -0
- package/src/Prisma/Branch.ts +417 -0
- package/src/Prisma/Client.ts +1337 -0
- package/src/Prisma/Compute.ts +2878 -0
- package/src/Prisma/ComputeArchive.ts +432 -0
- package/src/Prisma/ComputeBuild.ts +1652 -0
- package/src/Prisma/ComputeLifecycle.ts +391 -0
- package/src/Prisma/Connect.ts +433 -0
- package/src/Prisma/Connection.ts +643 -0
- package/src/Prisma/CustomDomain.ts +373 -0
- package/src/Prisma/Database.ts +850 -0
- package/src/Prisma/Deployment.ts +661 -0
- package/src/Prisma/EnvironmentVariable.ts +417 -0
- package/src/Prisma/Internal/AppIdentity.ts +19 -0
- package/src/Prisma/Internal/AppPromotion.ts +172 -0
- package/src/Prisma/Internal/ArchivePlatform.ts +320 -0
- package/src/Prisma/Internal/ArtifactFile.ts +242 -0
- package/src/Prisma/Internal/ArtifactUpload.ts +86 -0
- package/src/Prisma/Internal/BundlePaths.ts +28 -0
- package/src/Prisma/Internal/CleanupFailure.ts +17 -0
- package/src/Prisma/Internal/DatabaseSecrets.ts +175 -0
- package/src/Prisma/Internal/DeploymentActions.ts +59 -0
- package/src/Prisma/Internal/DeploymentIdentity.ts +25 -0
- package/src/Prisma/Internal/DeploymentObserve.ts +6 -0
- package/src/Prisma/Internal/EnvName.ts +24 -0
- package/src/Prisma/Internal/HttpClient.ts +30 -0
- package/src/Prisma/Operations.ts +259 -0
- package/src/Prisma/Postgres.ts +25 -0
- package/src/Prisma/PostgresOrigin.ts +52 -0
- package/src/Prisma/PrismaDevDatabase.ts +395 -0
- package/src/Prisma/PrismaEnvironment.ts +89 -0
- package/src/Prisma/PrismaLogs.ts +434 -0
- package/src/Prisma/Project.ts +687 -0
- package/src/Prisma/Providers.ts +471 -0
- package/src/Prisma/Refs.ts +69 -0
- package/src/Prisma/SourceRepository.ts +455 -0
- package/src/Prisma/Types.ts +611 -0
- package/src/Prisma/index.ts +24 -0
- package/src/Provider.ts +155 -39
- package/src/ProviderMode.ts +123 -0
- package/src/Resource.ts +46 -0
- package/src/RuntimeContext.ts +7 -0
- package/src/Server/Process.ts +33 -0
- package/src/State/InMemoryState.ts +2 -0
- package/src/State/ResourceState.ts +18 -0
- package/src/Sync.ts +14 -2
- package/src/Telemetry.ts +736 -0
- package/src/Test/Alchemy.ts +3 -1
- package/src/Test/Core.ts +1 -8
- package/src/Util/Clank.ts +37 -11
- package/src/Util/zip.ts +39 -0
- package/src/index.ts +3 -0
package/src/AWS/ECS/Service.ts
CHANGED
|
@@ -11,6 +11,7 @@ import * as Effect from "effect/Effect";
|
|
|
11
11
|
import * as Option from "effect/Option";
|
|
12
12
|
import * as Schedule from "effect/Schedule";
|
|
13
13
|
import * as Stream from "effect/Stream";
|
|
14
|
+
import type { HttpClient } from "effect/unstable/http/HttpClient";
|
|
14
15
|
import { deepEqual, isResolved } from "../../Diff.ts";
|
|
15
16
|
import * as Namespace from "../../Namespace.ts";
|
|
16
17
|
import * as Output from "../../Output.ts";
|
|
@@ -21,7 +22,7 @@ import { Resource } from "../../Resource.ts";
|
|
|
21
22
|
import type { HostRuntimeContext, ServerHost } from "../../Server/Process.ts";
|
|
22
23
|
import { Stack } from "../../Stack.ts";
|
|
23
24
|
import { createInternalTags, diffTags } from "../../Tags.ts";
|
|
24
|
-
import { toSeconds, toWireSeconds } from "../../Util/Duration.ts";
|
|
25
|
+
import { toMillis, toSeconds, toWireSeconds } from "../../Util/Duration.ts";
|
|
25
26
|
import { Certificate } from "../ACM/Certificate.ts";
|
|
26
27
|
import { ScalableTarget } from "../ApplicationAutoScaling/ScalableTarget.ts";
|
|
27
28
|
import { ScalingPolicy } from "../ApplicationAutoScaling/ScalingPolicy.ts";
|
|
@@ -61,6 +62,7 @@ import {
|
|
|
61
62
|
ensureTaskLogGroup,
|
|
62
63
|
reapSupersededTaskDefinitionRevision,
|
|
63
64
|
registerTaskDefinitionRevision,
|
|
65
|
+
syncEnvironmentFilesPolicy,
|
|
64
66
|
syncTaskDefinitionTags,
|
|
65
67
|
taskImagePlatform,
|
|
66
68
|
type TaskBindingContract,
|
|
@@ -363,6 +365,22 @@ export class RequestCountScalingRequiresLoadBalancer extends Data.TaggedError(
|
|
|
363
365
|
readonly message: string;
|
|
364
366
|
}> {}
|
|
365
367
|
|
|
368
|
+
/** An ECS service did not converge to the requested deployment before timeout. */
|
|
369
|
+
export class ServiceDidNotStabilize extends Data.TaggedError(
|
|
370
|
+
"ServiceDidNotStabilize",
|
|
371
|
+
)<{
|
|
372
|
+
readonly clusterArn: string;
|
|
373
|
+
readonly serviceName: string;
|
|
374
|
+
readonly expectedTaskDefinitionArn: string | undefined;
|
|
375
|
+
readonly status: string | undefined;
|
|
376
|
+
readonly desiredCount: number | undefined;
|
|
377
|
+
readonly runningCount: number | undefined;
|
|
378
|
+
readonly pendingCount: number | undefined;
|
|
379
|
+
readonly deploymentCount: number;
|
|
380
|
+
readonly unhealthyTargetCount: number;
|
|
381
|
+
readonly message: string;
|
|
382
|
+
}> {}
|
|
383
|
+
|
|
366
384
|
/**
|
|
367
385
|
* Derive a deterministic listener-rule priority (1–50000) from the rule's
|
|
368
386
|
* namespaced logical id (FNV-1a 32-bit). Stable across deploys for the same
|
|
@@ -680,6 +698,14 @@ export interface ServicePropsBase extends PlatformProps {
|
|
|
680
698
|
*/
|
|
681
699
|
deploymentConfiguration?: ecs.DeploymentConfiguration;
|
|
682
700
|
|
|
701
|
+
/**
|
|
702
|
+
* Maximum time to wait for an ECS deployment, old-task drain, and target
|
|
703
|
+
* health to converge before failing the resource operation. The provider
|
|
704
|
+
* hard-caps this at 30 minutes so polling always remains bounded.
|
|
705
|
+
* @default "10 minutes"
|
|
706
|
+
*/
|
|
707
|
+
deploymentStabilizationTimeout?: Duration.Input;
|
|
708
|
+
|
|
683
709
|
/**
|
|
684
710
|
* Deployment controller (`ECS`, `CODE_DEPLOY`, `EXTERNAL`). The controller
|
|
685
711
|
* type is immutable — changing it replaces the service.
|
|
@@ -2526,6 +2552,219 @@ const resolveServiceVolumes = (
|
|
|
2526
2552
|
return { volumes: resolved, mountPoints };
|
|
2527
2553
|
};
|
|
2528
2554
|
|
|
2555
|
+
type ServiceConvergenceDependencies = Credentials | HttpClient | Region;
|
|
2556
|
+
|
|
2557
|
+
interface ServiceConvergenceSnapshot {
|
|
2558
|
+
readonly service: ecs.Service | undefined;
|
|
2559
|
+
readonly targetGroups: readonly {
|
|
2560
|
+
readonly missing: boolean;
|
|
2561
|
+
readonly states: readonly (string | undefined)[];
|
|
2562
|
+
}[];
|
|
2563
|
+
readonly converged: boolean;
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
type ServiceConvergenceMode = "stable" | "drained" | "deleted";
|
|
2567
|
+
|
|
2568
|
+
/**
|
|
2569
|
+
* Observe the complete service deployment boundary: ECS rollout state,
|
|
2570
|
+
* desired/running/pending counts, superseded deployments, and every target
|
|
2571
|
+
* group's registered target state.
|
|
2572
|
+
*/
|
|
2573
|
+
const observeServiceConvergence = (input: {
|
|
2574
|
+
clusterArn: string;
|
|
2575
|
+
serviceName: string;
|
|
2576
|
+
expectedTaskDefinitionArn?: string;
|
|
2577
|
+
mode: ServiceConvergenceMode;
|
|
2578
|
+
}): Effect.Effect<
|
|
2579
|
+
ServiceConvergenceSnapshot,
|
|
2580
|
+
ecs.DescribeServicesError | elbv2.DescribeTargetHealthError,
|
|
2581
|
+
ServiceConvergenceDependencies
|
|
2582
|
+
> =>
|
|
2583
|
+
Effect.gen(function* () {
|
|
2584
|
+
const described = yield* ecs
|
|
2585
|
+
.describeServices({
|
|
2586
|
+
cluster: input.clusterArn,
|
|
2587
|
+
services: [input.serviceName],
|
|
2588
|
+
})
|
|
2589
|
+
.pipe(
|
|
2590
|
+
Effect.catchTag("ClusterNotFoundException", () =>
|
|
2591
|
+
Effect.succeed(undefined),
|
|
2592
|
+
),
|
|
2593
|
+
);
|
|
2594
|
+
const service = described?.services?.find(
|
|
2595
|
+
(candidate) =>
|
|
2596
|
+
candidate.serviceName === input.serviceName &&
|
|
2597
|
+
candidate.status !== "INACTIVE",
|
|
2598
|
+
);
|
|
2599
|
+
|
|
2600
|
+
if (service === undefined) {
|
|
2601
|
+
return {
|
|
2602
|
+
service,
|
|
2603
|
+
targetGroups: [],
|
|
2604
|
+
converged: input.mode === "drained" || input.mode === "deleted",
|
|
2605
|
+
};
|
|
2606
|
+
}
|
|
2607
|
+
|
|
2608
|
+
const targetGroupArns = [
|
|
2609
|
+
...new Set(
|
|
2610
|
+
(service.loadBalancers ?? []).flatMap((loadBalancer) =>
|
|
2611
|
+
loadBalancer.targetGroupArn ? [loadBalancer.targetGroupArn] : [],
|
|
2612
|
+
),
|
|
2613
|
+
),
|
|
2614
|
+
];
|
|
2615
|
+
const targetGroups = yield* Effect.forEach(
|
|
2616
|
+
targetGroupArns,
|
|
2617
|
+
(targetGroupArn) =>
|
|
2618
|
+
elbv2.describeTargetHealth({ TargetGroupArn: targetGroupArn }).pipe(
|
|
2619
|
+
Effect.map((health) => ({
|
|
2620
|
+
missing: false,
|
|
2621
|
+
states: (health.TargetHealthDescriptions ?? []).map(
|
|
2622
|
+
(target) => target.TargetHealth?.State,
|
|
2623
|
+
),
|
|
2624
|
+
})),
|
|
2625
|
+
Effect.catchTag("TargetGroupNotFoundException", () =>
|
|
2626
|
+
Effect.succeed({
|
|
2627
|
+
missing: true,
|
|
2628
|
+
states: [] as (string | undefined)[],
|
|
2629
|
+
}),
|
|
2630
|
+
),
|
|
2631
|
+
),
|
|
2632
|
+
{ concurrency: 4 },
|
|
2633
|
+
);
|
|
2634
|
+
|
|
2635
|
+
if (input.mode === "deleted") {
|
|
2636
|
+
return { service, targetGroups, converged: false };
|
|
2637
|
+
}
|
|
2638
|
+
|
|
2639
|
+
const runningCount = service.runningCount ?? 0;
|
|
2640
|
+
const pendingCount = service.pendingCount ?? 0;
|
|
2641
|
+
const desiredCount = service.desiredCount ?? 0;
|
|
2642
|
+
const expectedTargetCount =
|
|
2643
|
+
service.schedulingStrategy === "DAEMON" ? runningCount : desiredCount;
|
|
2644
|
+
|
|
2645
|
+
if (input.mode === "drained") {
|
|
2646
|
+
return {
|
|
2647
|
+
service,
|
|
2648
|
+
targetGroups,
|
|
2649
|
+
converged:
|
|
2650
|
+
runningCount === 0 &&
|
|
2651
|
+
pendingCount === 0 &&
|
|
2652
|
+
targetGroups.every(
|
|
2653
|
+
(targetGroup) =>
|
|
2654
|
+
targetGroup.missing || targetGroup.states.length === 0,
|
|
2655
|
+
),
|
|
2656
|
+
};
|
|
2657
|
+
}
|
|
2658
|
+
|
|
2659
|
+
const deployments = service.deployments ?? [];
|
|
2660
|
+
const primary = deployments.find(
|
|
2661
|
+
(deployment) => deployment.status === "PRIMARY",
|
|
2662
|
+
);
|
|
2663
|
+
const deploymentController = service.deploymentController?.type ?? "ECS";
|
|
2664
|
+
const countsConverged =
|
|
2665
|
+
service.schedulingStrategy === "DAEMON"
|
|
2666
|
+
? pendingCount === 0
|
|
2667
|
+
: runningCount === desiredCount && pendingCount === 0;
|
|
2668
|
+
const deploymentConverged =
|
|
2669
|
+
deployments.length === 1 &&
|
|
2670
|
+
primary !== undefined &&
|
|
2671
|
+
primary.taskDefinition === input.expectedTaskDefinitionArn &&
|
|
2672
|
+
(deploymentController === "ECS"
|
|
2673
|
+
? primary.rolloutState === "COMPLETED"
|
|
2674
|
+
: primary.rolloutState === undefined ||
|
|
2675
|
+
primary.rolloutState === "COMPLETED");
|
|
2676
|
+
const targetsConverged = targetGroups.every(
|
|
2677
|
+
(targetGroup) =>
|
|
2678
|
+
!targetGroup.missing &&
|
|
2679
|
+
targetGroup.states.length === expectedTargetCount &&
|
|
2680
|
+
targetGroup.states.every((state) => state === "healthy"),
|
|
2681
|
+
);
|
|
2682
|
+
|
|
2683
|
+
return {
|
|
2684
|
+
service,
|
|
2685
|
+
targetGroups,
|
|
2686
|
+
converged:
|
|
2687
|
+
service.status === "ACTIVE" &&
|
|
2688
|
+
service.taskDefinition === input.expectedTaskDefinitionArn &&
|
|
2689
|
+
countsConverged &&
|
|
2690
|
+
deploymentConverged &&
|
|
2691
|
+
targetsConverged,
|
|
2692
|
+
};
|
|
2693
|
+
});
|
|
2694
|
+
|
|
2695
|
+
const waitForServiceConvergence = (input: {
|
|
2696
|
+
clusterArn: string;
|
|
2697
|
+
serviceName: string;
|
|
2698
|
+
expectedTaskDefinitionArn?: string;
|
|
2699
|
+
mode: ServiceConvergenceMode;
|
|
2700
|
+
timeout?: Duration.Input;
|
|
2701
|
+
}): Effect.Effect<
|
|
2702
|
+
ServiceConvergenceSnapshot,
|
|
2703
|
+
| ecs.DescribeServicesError
|
|
2704
|
+
| elbv2.DescribeTargetHealthError
|
|
2705
|
+
| ServiceDidNotStabilize,
|
|
2706
|
+
ServiceConvergenceDependencies
|
|
2707
|
+
> => {
|
|
2708
|
+
const pollIntervalMillis = 5_000;
|
|
2709
|
+
const timeoutMillis = Math.min(
|
|
2710
|
+
toMillis(input.timeout ?? "10 minutes")!,
|
|
2711
|
+
30 * 60 * 1_000,
|
|
2712
|
+
);
|
|
2713
|
+
const attempts = Math.max(1, Math.ceil(timeoutMillis / pollIntervalMillis));
|
|
2714
|
+
|
|
2715
|
+
return observeServiceConvergence(input).pipe(
|
|
2716
|
+
Effect.repeat({
|
|
2717
|
+
schedule: Schedule.max([
|
|
2718
|
+
Schedule.spaced(pollIntervalMillis),
|
|
2719
|
+
Schedule.recurs(attempts),
|
|
2720
|
+
]),
|
|
2721
|
+
until: (snapshot) =>
|
|
2722
|
+
snapshot.converged ||
|
|
2723
|
+
snapshot.service?.deployments?.some(
|
|
2724
|
+
(deployment) => deployment.rolloutState === "FAILED",
|
|
2725
|
+
) === true,
|
|
2726
|
+
}),
|
|
2727
|
+
Effect.flatMap((snapshot) => {
|
|
2728
|
+
if (snapshot.converged) {
|
|
2729
|
+
return Effect.succeed(snapshot);
|
|
2730
|
+
}
|
|
2731
|
+
const service = snapshot.service;
|
|
2732
|
+
const expectedTargetCount =
|
|
2733
|
+
service?.schedulingStrategy === "DAEMON"
|
|
2734
|
+
? (service.runningCount ?? 0)
|
|
2735
|
+
: (service?.desiredCount ?? 0);
|
|
2736
|
+
const unhealthyTargetCount = snapshot.targetGroups.reduce(
|
|
2737
|
+
(total, targetGroup) =>
|
|
2738
|
+
total +
|
|
2739
|
+
(targetGroup.missing
|
|
2740
|
+
? Math.max(1, expectedTargetCount)
|
|
2741
|
+
: targetGroup.states.filter((state) => state !== "healthy").length +
|
|
2742
|
+
Math.abs(targetGroup.states.length - expectedTargetCount)),
|
|
2743
|
+
0,
|
|
2744
|
+
);
|
|
2745
|
+
return Effect.fail(
|
|
2746
|
+
new ServiceDidNotStabilize({
|
|
2747
|
+
clusterArn: input.clusterArn,
|
|
2748
|
+
serviceName: input.serviceName,
|
|
2749
|
+
expectedTaskDefinitionArn: input.expectedTaskDefinitionArn,
|
|
2750
|
+
status: service?.status,
|
|
2751
|
+
desiredCount: service?.desiredCount,
|
|
2752
|
+
runningCount: service?.runningCount,
|
|
2753
|
+
pendingCount: service?.pendingCount,
|
|
2754
|
+
deploymentCount: service?.deployments?.length ?? 0,
|
|
2755
|
+
unhealthyTargetCount,
|
|
2756
|
+
message:
|
|
2757
|
+
service?.deployments?.some(
|
|
2758
|
+
(deployment) => deployment.rolloutState === "FAILED",
|
|
2759
|
+
) === true
|
|
2760
|
+
? `ECS service ${input.serviceName} reported a failed deployment`
|
|
2761
|
+
: `ECS service ${input.serviceName} did not become ${input.mode} before timeout`,
|
|
2762
|
+
}),
|
|
2763
|
+
);
|
|
2764
|
+
}),
|
|
2765
|
+
);
|
|
2766
|
+
};
|
|
2767
|
+
|
|
2529
2768
|
export const ServiceProvider = () =>
|
|
2530
2769
|
Provider.effect(
|
|
2531
2770
|
Service,
|
|
@@ -2792,6 +3031,24 @@ export const ServiceProvider = () =>
|
|
|
2792
3031
|
const taskRoleArn =
|
|
2793
3032
|
output?.taskRoleArn ??
|
|
2794
3033
|
(yield* createTaskRoleIfNotExists({ id, roleName: taskRoleName }));
|
|
3034
|
+
|
|
3035
|
+
// `taskRoleManagedPolicyArns` is part of the inherited
|
|
3036
|
+
// `TaskDefinitionConfig` surface — attach it like the standalone
|
|
3037
|
+
// Task provider does (its sibling `executionRoleManagedPolicyArns`
|
|
3038
|
+
// is already honored below). `attachRolePolicy` is idempotent for
|
|
3039
|
+
// already-attached ARNs; a `LimitExceededException` means the
|
|
3040
|
+
// policy was NOT attached, so it propagates and fails the deploy
|
|
3041
|
+
// rather than silently shipping a role with missing permissions.
|
|
3042
|
+
yield* Effect.all(
|
|
3043
|
+
(news.taskRoleManagedPolicyArns ?? []).map((policyArn) =>
|
|
3044
|
+
iam.attachRolePolicy({
|
|
3045
|
+
RoleName: taskRoleName,
|
|
3046
|
+
PolicyArn: policyArn,
|
|
3047
|
+
}),
|
|
3048
|
+
),
|
|
3049
|
+
{ concurrency: "unbounded" },
|
|
3050
|
+
);
|
|
3051
|
+
|
|
2795
3052
|
const executionRoleArn =
|
|
2796
3053
|
output?.executionRoleArn ??
|
|
2797
3054
|
(yield* ensureTaskExecutionRole({
|
|
@@ -2818,6 +3075,13 @@ export const ServiceProvider = () =>
|
|
|
2818
3075
|
secretArns: secretEntries.map(([, arn]) => arn),
|
|
2819
3076
|
});
|
|
2820
3077
|
|
|
3078
|
+
// Environment files: the execution role reads the referenced S3
|
|
3079
|
+
// objects at task start.
|
|
3080
|
+
yield* syncEnvironmentFilesPolicy({
|
|
3081
|
+
roleName: executionRoleName,
|
|
3082
|
+
environmentFiles: news.environmentFiles,
|
|
3083
|
+
});
|
|
3084
|
+
|
|
2821
3085
|
const logGroupArn =
|
|
2822
3086
|
output?.logGroupArn ??
|
|
2823
3087
|
(yield* ensureTaskLogGroup({ id, logGroupName }));
|
|
@@ -3292,6 +3556,17 @@ export const ServiceProvider = () =>
|
|
|
3292
3556
|
new Error("createService returned no service"),
|
|
3293
3557
|
);
|
|
3294
3558
|
}
|
|
3559
|
+
yield* session.note(
|
|
3560
|
+
`Waiting for ECS service ${serviceName} to stabilize`,
|
|
3561
|
+
);
|
|
3562
|
+
const stable = yield* waitForServiceConvergence({
|
|
3563
|
+
clusterArn,
|
|
3564
|
+
serviceName,
|
|
3565
|
+
expectedTaskDefinitionArn: task.taskDefinitionArn,
|
|
3566
|
+
mode: "stable",
|
|
3567
|
+
timeout: news.deploymentStabilizationTimeout,
|
|
3568
|
+
});
|
|
3569
|
+
const stableService = stable.service!;
|
|
3295
3570
|
// Legacy inline ingress recorded in prior attrs (service itself
|
|
3296
3571
|
// was missing — e.g. recreated) is stale now: reap it.
|
|
3297
3572
|
yield* reapLegacyIngress({ output, session });
|
|
@@ -3306,11 +3581,11 @@ export const ServiceProvider = () =>
|
|
|
3306
3581
|
}
|
|
3307
3582
|
yield* session.note(service.serviceArn);
|
|
3308
3583
|
return {
|
|
3309
|
-
serviceArn:
|
|
3310
|
-
serviceName:
|
|
3311
|
-
clusterArn:
|
|
3312
|
-
taskDefinitionArn:
|
|
3313
|
-
status:
|
|
3584
|
+
serviceArn: stableService.serviceArn as ServiceArn,
|
|
3585
|
+
serviceName: stableService.serviceName!,
|
|
3586
|
+
clusterArn: stableService.clusterArn as ClusterArn,
|
|
3587
|
+
taskDefinitionArn: stableService.taskDefinition!,
|
|
3588
|
+
status: stableService.status ?? "ACTIVE",
|
|
3314
3589
|
...ingressAttrs,
|
|
3315
3590
|
...ownedAttributes,
|
|
3316
3591
|
};
|
|
@@ -3319,7 +3594,7 @@ export const ServiceProvider = () =>
|
|
|
3319
3594
|
// Sync — apply in-place mutable fields via updateService. Force a new
|
|
3320
3595
|
// deployment so a changed task definition (same revision-less ARN) or
|
|
3321
3596
|
// load-balancer wiring rolls out.
|
|
3322
|
-
|
|
3597
|
+
yield* ecs
|
|
3323
3598
|
.updateService({
|
|
3324
3599
|
...mutableInput(news, task, network, securityGroups),
|
|
3325
3600
|
// While autoscaling manages the desired count, leave it
|
|
@@ -3359,7 +3634,17 @@ export const ServiceProvider = () =>
|
|
|
3359
3634
|
]),
|
|
3360
3635
|
}),
|
|
3361
3636
|
);
|
|
3362
|
-
|
|
3637
|
+
yield* session.note(
|
|
3638
|
+
`Waiting for ECS service ${serviceName} to stabilize`,
|
|
3639
|
+
);
|
|
3640
|
+
const stable = yield* waitForServiceConvergence({
|
|
3641
|
+
clusterArn,
|
|
3642
|
+
serviceName,
|
|
3643
|
+
expectedTaskDefinitionArn: task.taskDefinitionArn,
|
|
3644
|
+
mode: "stable",
|
|
3645
|
+
timeout: news.deploymentStabilizationTimeout,
|
|
3646
|
+
});
|
|
3647
|
+
const stableService = stable.service!;
|
|
3363
3648
|
|
|
3364
3649
|
// Sync tags — diff observed service tags against desired.
|
|
3365
3650
|
const observedTags = Object.fromEntries(
|
|
@@ -3405,24 +3690,18 @@ export const ServiceProvider = () =>
|
|
|
3405
3690
|
|
|
3406
3691
|
yield* session.note(observed.serviceArn);
|
|
3407
3692
|
return {
|
|
3408
|
-
serviceArn:
|
|
3409
|
-
serviceName:
|
|
3410
|
-
clusterArn:
|
|
3411
|
-
taskDefinitionArn:
|
|
3412
|
-
|
|
3413
|
-
observed.taskDefinition ??
|
|
3414
|
-
output?.taskDefinitionArn ??
|
|
3415
|
-
"",
|
|
3416
|
-
status: service?.status ?? observed.status ?? "ACTIVE",
|
|
3693
|
+
serviceArn: stableService.serviceArn as ServiceArn,
|
|
3694
|
+
serviceName: stableService.serviceName!,
|
|
3695
|
+
clusterArn: stableService.clusterArn as ClusterArn,
|
|
3696
|
+
taskDefinitionArn: stableService.taskDefinition!,
|
|
3697
|
+
status: stableService.status ?? "ACTIVE",
|
|
3417
3698
|
...ingressAttrs,
|
|
3418
3699
|
...ownedAttributes,
|
|
3419
3700
|
};
|
|
3420
3701
|
}),
|
|
3421
3702
|
delete: Effect.fn(function* ({ output, session }) {
|
|
3422
|
-
// Scale to zero
|
|
3423
|
-
//
|
|
3424
|
-
// we skip the scale-down — `deleteService({ force: true })` below
|
|
3425
|
-
// tears it down regardless.
|
|
3703
|
+
// Scale to zero and prove every task/target has drained before
|
|
3704
|
+
// deleting the service or its dependent task-definition resources.
|
|
3426
3705
|
yield* ecs
|
|
3427
3706
|
.updateService({
|
|
3428
3707
|
cluster: output.clusterArn,
|
|
@@ -3430,11 +3709,26 @@ export const ServiceProvider = () =>
|
|
|
3430
3709
|
desiredCount: 0,
|
|
3431
3710
|
})
|
|
3432
3711
|
.pipe(
|
|
3712
|
+
Effect.retry({
|
|
3713
|
+
while: (error) => error._tag === "ServiceNotActiveException",
|
|
3714
|
+
schedule: Schedule.max([
|
|
3715
|
+
Schedule.spaced("5 seconds"),
|
|
3716
|
+
Schedule.recurs(8),
|
|
3717
|
+
]),
|
|
3718
|
+
}),
|
|
3433
3719
|
Effect.catchTag("ServiceNotFoundException", () => Effect.void),
|
|
3434
3720
|
Effect.catchTag("ClusterNotFoundException", () => Effect.void),
|
|
3435
|
-
Effect.catchTag("ServiceNotActiveException", () => Effect.void),
|
|
3436
3721
|
);
|
|
3437
3722
|
|
|
3723
|
+
yield* session.note(
|
|
3724
|
+
`Waiting for ECS service ${output.serviceName} to drain`,
|
|
3725
|
+
);
|
|
3726
|
+
yield* waitForServiceConvergence({
|
|
3727
|
+
clusterArn: output.clusterArn,
|
|
3728
|
+
serviceName: output.serviceName,
|
|
3729
|
+
mode: "drained",
|
|
3730
|
+
});
|
|
3731
|
+
|
|
3438
3732
|
yield* ecs
|
|
3439
3733
|
.deleteService({
|
|
3440
3734
|
cluster: output.clusterArn,
|
|
@@ -3446,6 +3740,12 @@ export const ServiceProvider = () =>
|
|
|
3446
3740
|
Effect.catchTag("ClusterNotFoundException", () => Effect.void),
|
|
3447
3741
|
);
|
|
3448
3742
|
|
|
3743
|
+
yield* waitForServiceConvergence({
|
|
3744
|
+
clusterArn: output.clusterArn,
|
|
3745
|
+
serviceName: output.serviceName,
|
|
3746
|
+
mode: "deleted",
|
|
3747
|
+
});
|
|
3748
|
+
|
|
3449
3749
|
// Inline ingress teardown applies ONLY to legacy state rows (no
|
|
3450
3750
|
// `ingressKind` marker) whose ALB/TG/listener/SG were created
|
|
3451
3751
|
// inline by the pre-composition provider. Composed ingress is made
|
package/src/AWS/ECS/Task.ts
CHANGED
|
@@ -19,7 +19,7 @@ import * as Provider from "../../Provider.ts";
|
|
|
19
19
|
import { Resource, type ResourceBinding } from "../../Resource.ts";
|
|
20
20
|
import type { RuntimeContext } from "../../RuntimeContext.ts";
|
|
21
21
|
import {
|
|
22
|
-
|
|
22
|
+
createContainerRuntimeContext,
|
|
23
23
|
type HostRuntimeContext,
|
|
24
24
|
type ServerHost,
|
|
25
25
|
} from "../../Server/Process.ts";
|
|
@@ -104,6 +104,17 @@ export interface TaskDefinitionConfig {
|
|
|
104
104
|
* Additional environment variables for the container.
|
|
105
105
|
*/
|
|
106
106
|
env?: Record<string, any>;
|
|
107
|
+
/**
|
|
108
|
+
* Environment files to load into the primary container, e.g. `.env`
|
|
109
|
+
* objects stored in S3:
|
|
110
|
+
* `[{ value: "arn:aws:s3:::my-bucket/app.env", type: "s3" }]`.
|
|
111
|
+
*
|
|
112
|
+
* Variables from `env` (and the container's own `environment`) take
|
|
113
|
+
* precedence over values loaded from environment files. The execution
|
|
114
|
+
* role is automatically granted `s3:GetObject` on the referenced objects
|
|
115
|
+
* and `s3:GetBucketLocation` on their buckets.
|
|
116
|
+
*/
|
|
117
|
+
environmentFiles?: ecs.EnvironmentFile[];
|
|
107
118
|
/**
|
|
108
119
|
* Command override for the primary container (Docker `CMD`).
|
|
109
120
|
*/
|
|
@@ -298,37 +309,8 @@ export interface TaskRuntimeContext extends HostRuntimeContext {
|
|
|
298
309
|
readonly Type: "AWS.ECS.Task";
|
|
299
310
|
}
|
|
300
311
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
* process host context so an impl shape's `run` effect is registered as a
|
|
304
|
-
* one-shot runner (the container exits when it completes) and the HTTP
|
|
305
|
-
* server only boots when the impl actually declares a `fetch` handler.
|
|
306
|
-
*/
|
|
307
|
-
export const createContainerRuntimeContext =
|
|
308
|
-
(type: string) =>
|
|
309
|
-
(id: string): HostRuntimeContext => {
|
|
310
|
-
const base = createHostRuntimeContext(type)(id);
|
|
311
|
-
// Capture the host serve BEFORE Object.assign overwrites `base.serve`
|
|
312
|
-
// with the wrapper below — calling `base.serve` inside the wrapper would
|
|
313
|
-
// resolve to the wrapper itself (property lookup happens at call time)
|
|
314
|
-
// and recurse without bound the moment an impl declares `fetch`.
|
|
315
|
-
const serveBase = base.serve;
|
|
316
|
-
const serve: HostRuntimeContext["serve"] = (handler, options) =>
|
|
317
|
-
Effect.gen(function* () {
|
|
318
|
-
const shape = options?.shape;
|
|
319
|
-
const run = shape?.run;
|
|
320
|
-
if (Effect.isEffect(run)) {
|
|
321
|
-
yield* base.run(run as Effect.Effect<void, never, any>);
|
|
322
|
-
}
|
|
323
|
-
// Boot the HTTP server only for an impl that declared `fetch` — a
|
|
324
|
-
// pure one-shot `{ run }` program must exit when `run` completes
|
|
325
|
-
// rather than parking behind the 404 fallback server forever.
|
|
326
|
-
if (shape === undefined || shape.fetch !== undefined) {
|
|
327
|
-
yield* serveBase(handler, options);
|
|
328
|
-
}
|
|
329
|
-
}) as Effect.Effect<void, never, never>;
|
|
330
|
-
return Object.assign(base, { serve });
|
|
331
|
-
};
|
|
312
|
+
// Shared with `Docker.Service`; lives beside the host runtime context.
|
|
313
|
+
export { createContainerRuntimeContext } from "../../Server/Process.ts";
|
|
332
314
|
|
|
333
315
|
/**
|
|
334
316
|
* A Fargate task definition with a container image from one of three
|
|
@@ -426,6 +408,16 @@ export const createContainerRuntimeContext =
|
|
|
426
408
|
* },
|
|
427
409
|
* });
|
|
428
410
|
* ```
|
|
411
|
+
*
|
|
412
|
+
* @example Environment Files from S3
|
|
413
|
+
* ```typescript
|
|
414
|
+
* const task = yield* Task("ApiTask", {
|
|
415
|
+
* main: import.meta.url,
|
|
416
|
+
* environmentFiles: [
|
|
417
|
+
* { value: "arn:aws:s3:::my-config-bucket/app.env", type: "s3" },
|
|
418
|
+
* ],
|
|
419
|
+
* });
|
|
420
|
+
* ```
|
|
429
421
|
*/
|
|
430
422
|
export const Task: Platform<Task, TaskServices, TaskShape, TaskRuntimeContext> =
|
|
431
423
|
Platform("AWS.ECS.Task", {
|
|
@@ -518,6 +510,56 @@ export const ensureTaskExecutionRole = Effect.fn(function* ({
|
|
|
518
510
|
return roleArn;
|
|
519
511
|
});
|
|
520
512
|
|
|
513
|
+
/** Inline policy granting the execution role read access to `environmentFiles`. */
|
|
514
|
+
const ENVIRONMENT_FILES_POLICY_NAME = "alchemy-environment-files";
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Sync the execution role's read access to the S3 `environmentFiles`: put
|
|
518
|
+
* an inline policy granting `s3:GetObject` on the referenced objects (and
|
|
519
|
+
* `s3:GetBucketLocation` on their buckets), or delete the policy when no
|
|
520
|
+
* environment files are configured.
|
|
521
|
+
*/
|
|
522
|
+
export const syncEnvironmentFilesPolicy = Effect.fn(function* ({
|
|
523
|
+
roleName,
|
|
524
|
+
environmentFiles,
|
|
525
|
+
}: {
|
|
526
|
+
roleName: string;
|
|
527
|
+
environmentFiles: ecs.EnvironmentFile[] | undefined;
|
|
528
|
+
}) {
|
|
529
|
+
const objectArns = (environmentFiles ?? [])
|
|
530
|
+
.filter((file) => file.type === "s3")
|
|
531
|
+
.map((file) => file.value);
|
|
532
|
+
if (objectArns.length === 0) {
|
|
533
|
+
yield* iam
|
|
534
|
+
.deleteRolePolicy({
|
|
535
|
+
RoleName: roleName,
|
|
536
|
+
PolicyName: ENVIRONMENT_FILES_POLICY_NAME,
|
|
537
|
+
})
|
|
538
|
+
.pipe(Effect.catchTag("NoSuchEntityException", () => Effect.void));
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
541
|
+
const bucketArns = [...new Set(objectArns.map((arn) => arn.split("/")[0]))];
|
|
542
|
+
yield* iam.putRolePolicy({
|
|
543
|
+
RoleName: roleName,
|
|
544
|
+
PolicyName: ENVIRONMENT_FILES_POLICY_NAME,
|
|
545
|
+
PolicyDocument: JSON.stringify({
|
|
546
|
+
Version: "2012-10-17",
|
|
547
|
+
Statement: [
|
|
548
|
+
{
|
|
549
|
+
Effect: "Allow",
|
|
550
|
+
Action: ["s3:GetObject"],
|
|
551
|
+
Resource: objectArns,
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
Effect: "Allow",
|
|
555
|
+
Action: ["s3:GetBucketLocation"],
|
|
556
|
+
Resource: bucketArns,
|
|
557
|
+
},
|
|
558
|
+
],
|
|
559
|
+
}),
|
|
560
|
+
});
|
|
561
|
+
});
|
|
562
|
+
|
|
521
563
|
/** Ensure the CloudWatch log group the task writes to exists. */
|
|
522
564
|
export const ensureTaskLogGroup = Effect.fn(function* ({
|
|
523
565
|
id,
|
|
@@ -655,6 +697,7 @@ export const registerTaskDefinitionRevision = Effect.fn(function* ({
|
|
|
655
697
|
name,
|
|
656
698
|
value: typeof value === "string" ? value : JSON.stringify(value),
|
|
657
699
|
})),
|
|
700
|
+
environmentFiles: props.environmentFiles,
|
|
658
701
|
logConfiguration: {
|
|
659
702
|
logDriver: "awslogs",
|
|
660
703
|
options: {
|
|
@@ -1137,6 +1180,13 @@ export const TaskProvider = () =>
|
|
|
1137
1180
|
);
|
|
1138
1181
|
}
|
|
1139
1182
|
|
|
1183
|
+
// Environment files: the execution role reads the referenced S3
|
|
1184
|
+
// objects at task start.
|
|
1185
|
+
yield* syncEnvironmentFilesPolicy({
|
|
1186
|
+
roleName: executionRoleName,
|
|
1187
|
+
environmentFiles: news.environmentFiles,
|
|
1188
|
+
});
|
|
1189
|
+
|
|
1140
1190
|
const {
|
|
1141
1191
|
env: bindingEnv,
|
|
1142
1192
|
volumes: bindingVolumes,
|
|
@@ -382,6 +382,7 @@ import { BunServices } from "@effect/platform-bun";
|
|
|
382
382
|
import { BunHttpServer } from "alchemy/Http";
|
|
383
383
|
import { Stack } from "alchemy/Stack";
|
|
384
384
|
import { makeEntrypointLayer, reifyBoundConfigProvider } from "alchemy/Runtime";
|
|
385
|
+
import { provideProcessTelemetry } from "alchemy/Telemetry";
|
|
385
386
|
import * as Context from "effect/Context";
|
|
386
387
|
import * as Config from "effect/Config";
|
|
387
388
|
import * as ConfigProvider from "effect/ConfigProvider";
|
|
@@ -414,8 +415,15 @@ const platform = Layer.mergeAll(
|
|
|
414
415
|
// chain so EKS Pod Identity's container-credentials endpoint
|
|
415
416
|
// (AWS_CONTAINER_CREDENTIALS_FULL_URI + token file) resolves inside the pod.
|
|
416
417
|
const program = tag.pipe(
|
|
417
|
-
|
|
418
|
-
|
|
418
|
+
// Process-lifetime telemetry: built once into the root scope; exporters
|
|
419
|
+
// batch on their intervals and flush when the scope closes on graceful
|
|
420
|
+
// shutdown.
|
|
421
|
+
Effect.flatMap((host) =>
|
|
422
|
+
host.RuntimeContext.exports.pipe(
|
|
423
|
+
Effect.flatMap((exports) => exports.program),
|
|
424
|
+
provideProcessTelemetry(host.RuntimeContext),
|
|
425
|
+
),
|
|
426
|
+
),
|
|
419
427
|
Effect.provide(
|
|
420
428
|
layer.pipe(Layer.provideMerge(Layer.effect(
|
|
421
429
|
Stack,
|
package/src/AWS/EKS/Job.ts
CHANGED
|
@@ -357,6 +357,7 @@ export const makeEksJobBootstrap =
|
|
|
357
357
|
import { BunServices } from "@effect/platform-bun";
|
|
358
358
|
import { Stack } from "alchemy/Stack";
|
|
359
359
|
import { makeEntrypointLayer, reifyBoundConfigProvider } from "alchemy/Runtime";
|
|
360
|
+
import { provideProcessTelemetry } from "alchemy/Telemetry";
|
|
360
361
|
import * as Context from "effect/Context";
|
|
361
362
|
import * as Config from "effect/Config";
|
|
362
363
|
import * as ConfigProvider from "effect/ConfigProvider";
|
|
@@ -386,8 +387,15 @@ const platform = Layer.mergeAll(
|
|
|
386
387
|
// Resolve the bundled program's registered one-shot runners (the shape's
|
|
387
388
|
// \`run\` effect and any host.run work) and execute them to completion.
|
|
388
389
|
const program = tag.pipe(
|
|
389
|
-
|
|
390
|
-
|
|
390
|
+
// Process-lifetime telemetry: built once into the root scope; exporters
|
|
391
|
+
// batch on their intervals and flush when the scope closes as the
|
|
392
|
+
// one-shot program completes.
|
|
393
|
+
Effect.flatMap((host) =>
|
|
394
|
+
host.RuntimeContext.exports.pipe(
|
|
395
|
+
Effect.flatMap((exports) => exports.program),
|
|
396
|
+
provideProcessTelemetry(host.RuntimeContext),
|
|
397
|
+
),
|
|
398
|
+
),
|
|
391
399
|
Effect.provide(
|
|
392
400
|
layer.pipe(Layer.provideMerge(Layer.effect(
|
|
393
401
|
Stack,
|