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
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import type * as rolldown from "rolldown";
|
|
3
|
+
import { AlchemyContext } from "../AlchemyContext.ts";
|
|
4
|
+
import * as Bundle from "../Bundle/Bundle.ts";
|
|
5
|
+
import {
|
|
6
|
+
findCwdForBundle,
|
|
7
|
+
getStableContextDir,
|
|
8
|
+
resolveMainPath,
|
|
9
|
+
} from "../Bundle/TempRoot.ts";
|
|
10
|
+
import { Self } from "../Self.ts";
|
|
11
|
+
import { sha256Object } from "../Util/sha256.ts";
|
|
12
|
+
import { Docker } from "./Docker.ts";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* INTERNAL — image machinery for the effectful `Docker.Service` platform.
|
|
16
|
+
*
|
|
17
|
+
* NOT exported from the Docker barrel. Bundles a `main` Effect program with
|
|
18
|
+
* rolldown, bakes it into a generated bun Dockerfile, and builds the image
|
|
19
|
+
* with the Docker CLI against the service's Docker context — so the image is
|
|
20
|
+
* present in the exact engine the Swarm service schedules from. There is no
|
|
21
|
+
* registry push: the built image is content-addressed (`<name>:<hash>`) and
|
|
22
|
+
* only rebuilt when the bundle, Dockerfile, or environment image changes.
|
|
23
|
+
*
|
|
24
|
+
* Multi-node swarms need the image on every node; for those, build with
|
|
25
|
+
* `Docker.Image` + a `registry` and pass the pushed ref as `image` instead.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/** The props subset that describes a bundled `main` service image. */
|
|
29
|
+
export interface BundledServiceSource {
|
|
30
|
+
main: string;
|
|
31
|
+
image?: string;
|
|
32
|
+
handler?: string;
|
|
33
|
+
port?: number;
|
|
34
|
+
build?: {
|
|
35
|
+
input?: Partial<rolldown.InputOptions>;
|
|
36
|
+
output?: Partial<rolldown.OutputOptions>;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** The resolved (built) local image. */
|
|
41
|
+
export interface ResolvedServiceImage {
|
|
42
|
+
/** Full image reference, `<name>:<codeHash>`. */
|
|
43
|
+
imageRef: string;
|
|
44
|
+
/** Content hash identifying the image (also the image tag). */
|
|
45
|
+
codeHash: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The standard bun bootstrap wrapped around a `Docker.Service` `main` entry:
|
|
50
|
+
* resolves the bundled program's registered runners (`host.run` loops and the
|
|
51
|
+
* served `fetch` handler) and runs them with a Bun HTTP server bound to
|
|
52
|
+
* `PORT`. Mirrors the ECS bootstrap minus the AWS credential/region layers —
|
|
53
|
+
* a Swarm task has no ambient cloud identity.
|
|
54
|
+
*/
|
|
55
|
+
export const makeServiceBunBootstrap =
|
|
56
|
+
(handler: string) =>
|
|
57
|
+
(importPath: string): string =>
|
|
58
|
+
`
|
|
59
|
+
import { BunServices } from "@effect/platform-bun";
|
|
60
|
+
import { BunHttpServer } from "alchemy/Http";
|
|
61
|
+
import { Stack } from "alchemy/Stack";
|
|
62
|
+
import { makeEntrypointLayer, reifyBoundConfigProvider } from "alchemy/Runtime";
|
|
63
|
+
import * as Config from "effect/Config";
|
|
64
|
+
import * as ConfigProvider from "effect/ConfigProvider";
|
|
65
|
+
import * as Context from "effect/Context";
|
|
66
|
+
import * as Effect from "effect/Effect";
|
|
67
|
+
import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
|
|
68
|
+
import * as Layer from "effect/Layer";
|
|
69
|
+
import * as Logger from "effect/Logger";
|
|
70
|
+
|
|
71
|
+
import { ${handler} as entrypoint } from ${JSON.stringify(importPath)};
|
|
72
|
+
|
|
73
|
+
// Normalize the entrypoint export: an inline-effect class default export is
|
|
74
|
+
// an Effect resolving the platform instance, while the tagged form
|
|
75
|
+
// (X.make(props, impl)) exports a Layer providing the Self tag. Both fold
|
|
76
|
+
// into a Layer via makeEntrypointLayer (same pattern as the ECS bridge).
|
|
77
|
+
const tag = Context.Service("${Self.key}");
|
|
78
|
+
const layer = makeEntrypointLayer(tag, entrypoint);
|
|
79
|
+
|
|
80
|
+
const platform = Layer.mergeAll(
|
|
81
|
+
BunServices.layer,
|
|
82
|
+
FetchHttpClient.layer,
|
|
83
|
+
Logger.layer([Logger.consolePretty()]),
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
const stack = Layer.effect(
|
|
87
|
+
Stack,
|
|
88
|
+
Effect.all([
|
|
89
|
+
Config.string("ALCHEMY_STACK_NAME"),
|
|
90
|
+
Config.string("ALCHEMY_STAGE")
|
|
91
|
+
]).pipe(
|
|
92
|
+
Effect.map(([name, stage]) => ({
|
|
93
|
+
name,
|
|
94
|
+
stage,
|
|
95
|
+
bindings: {},
|
|
96
|
+
resources: {}
|
|
97
|
+
}))
|
|
98
|
+
)
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
// Resolve the bundled program (the runners registered via host.run / serve)
|
|
102
|
+
// and run it with a Bun HTTP server bound to PORT, so the returned { fetch }
|
|
103
|
+
// handler is actually served and host.run loops stay alive.
|
|
104
|
+
const program = tag.pipe(
|
|
105
|
+
Effect.flatMap((service) => service.RuntimeContext.exports),
|
|
106
|
+
Effect.flatMap((exports) => exports.program),
|
|
107
|
+
Effect.provide(
|
|
108
|
+
layer.pipe(
|
|
109
|
+
Layer.provideMerge(stack),
|
|
110
|
+
Layer.provideMerge(BunHttpServer()),
|
|
111
|
+
Layer.provideMerge(platform),
|
|
112
|
+
Layer.provideMerge(
|
|
113
|
+
Layer.succeed(
|
|
114
|
+
ConfigProvider.ConfigProvider,
|
|
115
|
+
reifyBoundConfigProvider(ConfigProvider.fromEnv(), process.env)
|
|
116
|
+
)
|
|
117
|
+
),
|
|
118
|
+
)
|
|
119
|
+
),
|
|
120
|
+
Effect.scoped
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
console.log("Docker service bootstrap starting...");
|
|
124
|
+
await Effect.runPromise(program).catch((err) => {
|
|
125
|
+
console.error("Docker service bootstrap failed:", err);
|
|
126
|
+
process.exit(1);
|
|
127
|
+
});
|
|
128
|
+
`;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Init-time constructor for the service-image resolver. Resolves the services
|
|
132
|
+
* that are only available at provider-layer construction (Docker, the
|
|
133
|
+
* `.alchemy` directory, the rolldown virtual-entry plugin) and returns
|
|
134
|
+
* `resolve` (build the image if its content hash isn't present in the target
|
|
135
|
+
* engine) and `hash` (content hash only, for `diff`).
|
|
136
|
+
*/
|
|
137
|
+
export const makeServiceImage = Effect.gen(function* () {
|
|
138
|
+
const docker = yield* Docker;
|
|
139
|
+
const { dotAlchemy } = yield* AlchemyContext;
|
|
140
|
+
const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
|
|
141
|
+
|
|
142
|
+
/** Bundle the Effect program behind a `main` source. */
|
|
143
|
+
const bundleProgram = Effect.fn(function* (options: {
|
|
144
|
+
source: BundledServiceSource;
|
|
145
|
+
isExternal?: boolean;
|
|
146
|
+
}) {
|
|
147
|
+
const { source } = options;
|
|
148
|
+
const realMain = yield* resolveMainPath(source.main);
|
|
149
|
+
const cwd = yield* findCwdForBundle(realMain);
|
|
150
|
+
const bootstrap = makeServiceBunBootstrap(source.handler ?? "default");
|
|
151
|
+
|
|
152
|
+
const buildBundle = Effect.fn(function* (
|
|
153
|
+
entry: string,
|
|
154
|
+
plugins?: rolldown.RolldownPluginOption,
|
|
155
|
+
) {
|
|
156
|
+
return yield* Bundle.build(
|
|
157
|
+
{
|
|
158
|
+
...source.build?.input,
|
|
159
|
+
input: entry,
|
|
160
|
+
cwd,
|
|
161
|
+
platform: "node",
|
|
162
|
+
// The container runs on `bun`; keep `bun`/`bun:*` external (the
|
|
163
|
+
// runtime provides them) and resolve the `bun` export condition
|
|
164
|
+
// so `@effect/platform-bun` picks its Bun implementations.
|
|
165
|
+
external: [
|
|
166
|
+
"bun",
|
|
167
|
+
"bun:*",
|
|
168
|
+
...((source.build?.input?.external as string[] | undefined) ?? []),
|
|
169
|
+
],
|
|
170
|
+
resolve: {
|
|
171
|
+
conditionNames: ["bun", "import", "module", "default"],
|
|
172
|
+
...source.build?.input?.resolve,
|
|
173
|
+
},
|
|
174
|
+
plugins: [source.build?.input?.plugins, plugins],
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
...source.build?.output,
|
|
178
|
+
format: "esm",
|
|
179
|
+
sourcemap: source.build?.output?.sourcemap ?? false,
|
|
180
|
+
minify: source.build?.output?.minify ?? false,
|
|
181
|
+
entryFileNames: "index.mjs",
|
|
182
|
+
},
|
|
183
|
+
);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
const bundleOutput = options.isExternal
|
|
187
|
+
? yield* buildBundle(realMain)
|
|
188
|
+
: yield* buildBundle(realMain, virtualEntryPlugin(bootstrap));
|
|
189
|
+
|
|
190
|
+
// Return every emitted file (entry + shared chunks). Dynamic imports in
|
|
191
|
+
// the Bun HTTP server split into chunks; dropping any of them crashes the
|
|
192
|
+
// container with `Cannot find module './chunk-XXX.js'`.
|
|
193
|
+
const files = bundleOutput.files.map((file) => ({
|
|
194
|
+
path: file.path,
|
|
195
|
+
content:
|
|
196
|
+
typeof file.content === "string"
|
|
197
|
+
? new TextEncoder().encode(file.content)
|
|
198
|
+
: file.content,
|
|
199
|
+
}));
|
|
200
|
+
|
|
201
|
+
return { files, hash: bundleOutput.hash };
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Generated Dockerfile for a bundled `main` program. The environment
|
|
206
|
+
* preamble is the `image` ref or the default bun base (`oven/bun` is
|
|
207
|
+
* Docker-Hub only).
|
|
208
|
+
*/
|
|
209
|
+
const generateDockerfile = (source: BundledServiceSource) => {
|
|
210
|
+
const lines = [
|
|
211
|
+
`FROM ${source.image ?? "oven/bun:1"}`,
|
|
212
|
+
`WORKDIR /app`,
|
|
213
|
+
`COPY index.mjs /app/index.mjs`,
|
|
214
|
+
// Copy any additional rolldown chunks (`chunk-XXX.js`, …). Non-trivial
|
|
215
|
+
// bundles always emit at least one; minimal bundles emit none and the
|
|
216
|
+
// COPY no-ops.
|
|
217
|
+
`COPY *.js /app/`,
|
|
218
|
+
];
|
|
219
|
+
if (source.port !== undefined) {
|
|
220
|
+
lines.push(
|
|
221
|
+
`ENV PORT=${String(source.port)}`,
|
|
222
|
+
`EXPOSE ${String(source.port)}`,
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
lines.push(`ENTRYPOINT ["bun", "/app/index.mjs"]`);
|
|
226
|
+
return `${lines.join("\n")}\n`;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Bundle a `main` source and compute its content-addressed code hash. The
|
|
231
|
+
* hash covers the full image identity — the bundle output (bootstrap entry
|
|
232
|
+
* included, so bootstrap-template changes invalidate it) and the generated
|
|
233
|
+
* Dockerfile — so `diff` and `resolve` always agree.
|
|
234
|
+
*/
|
|
235
|
+
const computeCodeHash = Effect.fn(function* (options: {
|
|
236
|
+
source: BundledServiceSource;
|
|
237
|
+
isExternal?: boolean;
|
|
238
|
+
}) {
|
|
239
|
+
const bundled = yield* bundleProgram(options);
|
|
240
|
+
const dockerfile = generateDockerfile(options.source);
|
|
241
|
+
const codeHash = (yield* sha256Object({
|
|
242
|
+
bundleHash: bundled.hash,
|
|
243
|
+
dockerfile,
|
|
244
|
+
})).slice(0, 16);
|
|
245
|
+
return { bundled, dockerfile, codeHash };
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
/** Observe a locally-present tag in the target engine. Missing → undefined. */
|
|
249
|
+
const imageExists = (imageRef: string, context: string | undefined) =>
|
|
250
|
+
docker.image.inspect(imageRef, context).pipe(
|
|
251
|
+
Effect.map(() => true),
|
|
252
|
+
Effect.catchReason("PlatformError", "NotFound", () =>
|
|
253
|
+
Effect.succeed(false),
|
|
254
|
+
),
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Resolve the image for a bundled service: compute the content-addressed
|
|
259
|
+
* tag, then build only when that exact tag is not already present in the
|
|
260
|
+
* target Docker context (crash-safe convergence).
|
|
261
|
+
*/
|
|
262
|
+
const resolve = Effect.fn(function* (options: {
|
|
263
|
+
/** Logical resource id — keys the stable build-context directory. */
|
|
264
|
+
id: string;
|
|
265
|
+
source: BundledServiceSource;
|
|
266
|
+
/** Image repository name (the service's physical name). */
|
|
267
|
+
name: string;
|
|
268
|
+
/** Docker context the swarm service is deployed to. */
|
|
269
|
+
context: string | undefined;
|
|
270
|
+
isExternal?: boolean;
|
|
271
|
+
/** Plan-status session used to emit build progress notes. */
|
|
272
|
+
session: { note: (message: string) => Effect.Effect<void> };
|
|
273
|
+
}) {
|
|
274
|
+
const { id, source, session } = options;
|
|
275
|
+
yield* session.note(`Bundling ${id} program...`);
|
|
276
|
+
const { bundled, dockerfile, codeHash } = yield* computeCodeHash({
|
|
277
|
+
source,
|
|
278
|
+
isExternal: options.isExternal,
|
|
279
|
+
});
|
|
280
|
+
const imageRef = `${options.name}:${codeHash}`;
|
|
281
|
+
|
|
282
|
+
if (yield* imageExists(imageRef, options.context)) {
|
|
283
|
+
return { imageRef, codeHash } satisfies ResolvedServiceImage;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
const realMain = yield* resolveMainPath(source.main);
|
|
287
|
+
const contextDir = yield* getStableContextDir(
|
|
288
|
+
realMain,
|
|
289
|
+
dotAlchemy,
|
|
290
|
+
`${id}-image`,
|
|
291
|
+
);
|
|
292
|
+
yield* docker.materialize({
|
|
293
|
+
context: contextDir,
|
|
294
|
+
dockerfile,
|
|
295
|
+
// Entry chunk becomes `index.mjs`; all other chunks keep their emitted
|
|
296
|
+
// `*.js` names so the entry's relative imports resolve.
|
|
297
|
+
files: bundled.files.map((file, index) => ({
|
|
298
|
+
path: index === 0 ? "index.mjs" : file.path,
|
|
299
|
+
content: file.content,
|
|
300
|
+
})),
|
|
301
|
+
});
|
|
302
|
+
yield* session.note(`Building container image ${imageRef}...`);
|
|
303
|
+
yield* docker.image.build({
|
|
304
|
+
context: contextDir,
|
|
305
|
+
tag: imageRef,
|
|
306
|
+
engineContext: options.context,
|
|
307
|
+
});
|
|
308
|
+
yield* session.note(`Built ${imageRef}`);
|
|
309
|
+
return { imageRef, codeHash } satisfies ResolvedServiceImage;
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Content hash without building the image. Runs the bundler (bootstrap
|
|
314
|
+
* entry included) so the hash reflects the exact image `resolve` would
|
|
315
|
+
* build — bootstrap-template changes and user-code edits both surface as
|
|
316
|
+
* drift. The provider calls this from `diff` and compares against
|
|
317
|
+
* `output.code.hash`.
|
|
318
|
+
*/
|
|
319
|
+
const hash = Effect.fn(function* (options: {
|
|
320
|
+
source: BundledServiceSource;
|
|
321
|
+
isExternal?: boolean;
|
|
322
|
+
}) {
|
|
323
|
+
const { codeHash } = yield* computeCodeHash(options);
|
|
324
|
+
return codeHash;
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
return { resolve, hash };
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
/** The resolver service returned by {@link makeServiceImage}. */
|
|
331
|
+
export interface ServiceImage extends Effect.Success<typeof makeServiceImage> {}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { Unowned } from "../AdoptPolicy.ts";
|
|
3
|
+
import { isResolved } from "../Diff.ts";
|
|
4
|
+
import * as Provider from "../Provider.ts";
|
|
5
|
+
import { Resource } from "../Resource.ts";
|
|
6
|
+
import { Docker, dockerContextName } from "./Docker.ts";
|
|
7
|
+
import type { Providers } from "./Providers.ts";
|
|
8
|
+
|
|
9
|
+
export interface SwarmProps {
|
|
10
|
+
/** Docker context name or context resource of the engine to initialize. */
|
|
11
|
+
context?: Docker.ContextRef;
|
|
12
|
+
/**
|
|
13
|
+
* Address advertised to other swarm members, e.g. `"10.0.0.1"` or
|
|
14
|
+
* `"eth0"`. Required by Docker when the host has several network
|
|
15
|
+
* interfaces. Applied only when the swarm is first initialized.
|
|
16
|
+
*/
|
|
17
|
+
advertiseAddr?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Listen address for swarm traffic, e.g. `"0.0.0.0:2377"`. Applied only
|
|
20
|
+
* when the swarm is first initialized.
|
|
21
|
+
*/
|
|
22
|
+
listenAddr?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Address pools for global-scope (overlay) networks, e.g.
|
|
25
|
+
* `["10.20.0.0/16"]`. Applied only when the swarm is first initialized.
|
|
26
|
+
*/
|
|
27
|
+
defaultAddrPool?: string[];
|
|
28
|
+
/**
|
|
29
|
+
* CIDR mask length for each subnet carved from `defaultAddrPool`.
|
|
30
|
+
* Applied only when the swarm is first initialized.
|
|
31
|
+
*
|
|
32
|
+
* @default 24
|
|
33
|
+
*/
|
|
34
|
+
subnetSize?: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface Swarm extends Resource<
|
|
38
|
+
"Docker.Swarm",
|
|
39
|
+
SwarmProps,
|
|
40
|
+
{
|
|
41
|
+
/** Swarm cluster id. */
|
|
42
|
+
id: string;
|
|
43
|
+
/** This node's id in the swarm (a manager). */
|
|
44
|
+
nodeId: string;
|
|
45
|
+
/** Docker context the swarm was initialized on. */
|
|
46
|
+
context?: string;
|
|
47
|
+
/** Number of manager nodes. */
|
|
48
|
+
managers: number;
|
|
49
|
+
/** Number of nodes in the swarm. */
|
|
50
|
+
nodes: number;
|
|
51
|
+
},
|
|
52
|
+
never,
|
|
53
|
+
Providers
|
|
54
|
+
> {}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Swarm mode on a Docker engine — an idempotent `docker swarm init`.
|
|
58
|
+
*
|
|
59
|
+
* Turns the engine behind the given `context` (or the local engine) into a
|
|
60
|
+
* single-node swarm: the node becomes a manager that can run `Docker.Service`
|
|
61
|
+
* workloads. Regular (non-swarm) docker usage of the engine is unaffected.
|
|
62
|
+
*
|
|
63
|
+
* Pass the swarm as the `context` of a `Docker.Service` or overlay
|
|
64
|
+
* `Docker.Network`: the workload then deploys after the swarm exists and
|
|
65
|
+
* inherits its Docker context.
|
|
66
|
+
*
|
|
67
|
+
* An engine that is already in swarm mode is treated as foreign — adopt it
|
|
68
|
+
* with `adopt(true)` (or `--adopt`) to manage it. Destroying the resource
|
|
69
|
+
* dissolves the node's swarm membership (`docker swarm leave --force`),
|
|
70
|
+
* which stops every service running on it — services managed by the same
|
|
71
|
+
* stack are destroyed first via their dependency edges.
|
|
72
|
+
*
|
|
73
|
+
* Growing the cluster beyond one node is host-level setup: run
|
|
74
|
+
* `docker swarm join --token <token> <manager-ip>:2377` on each additional
|
|
75
|
+
* machine (`docker swarm join-token worker` on the manager prints the
|
|
76
|
+
* command). Alchemy manages the swarm's workloads through the manager.
|
|
77
|
+
* @resource
|
|
78
|
+
* @section Creating a Swarm
|
|
79
|
+
* @example Local single-node swarm
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const swarm = yield* Docker.Swarm("swarm");
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @example Remote engine over SSH
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const vps = yield* Docker.Context("vps", {
|
|
87
|
+
* docker: "host=ssh://deploy@example.com",
|
|
88
|
+
* });
|
|
89
|
+
* const swarm = yield* Docker.Swarm("swarm", {
|
|
90
|
+
* context: vps,
|
|
91
|
+
* advertiseAddr: "10.0.0.1",
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* @section Using an Existing Swarm
|
|
96
|
+
* @example Reference without owning
|
|
97
|
+
* ```typescript
|
|
98
|
+
* // Services don't require a Swarm resource — point them at an engine that
|
|
99
|
+
* // is already a manager and the swarm's lifecycle stays external: destroy
|
|
100
|
+
* // removes the services, never the swarm.
|
|
101
|
+
* const web = yield* Docker.Service("web", {
|
|
102
|
+
* context: vps,
|
|
103
|
+
* image: "nginx:alpine",
|
|
104
|
+
* });
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @example Adopt an already-initialized engine
|
|
108
|
+
* ```typescript
|
|
109
|
+
* // Adoption makes the swarm part of the stack — destroy then dissolves
|
|
110
|
+
* // the node's membership.
|
|
111
|
+
* const swarm = yield* Docker.Swarm("swarm").pipe(adopt(true));
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @section Deploying into the Swarm
|
|
115
|
+
* @example Service ordered after the swarm
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const swarm = yield* Docker.Swarm("swarm");
|
|
118
|
+
* const web = yield* Docker.Service("web", {
|
|
119
|
+
* context: swarm,
|
|
120
|
+
* image: "nginx:alpine",
|
|
121
|
+
* replicas: 2,
|
|
122
|
+
* ports: [{ external: 8080, internal: 80 }],
|
|
123
|
+
* });
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export const Swarm = Resource<Swarm>("Docker.Swarm");
|
|
127
|
+
|
|
128
|
+
export const SwarmProvider = () =>
|
|
129
|
+
Provider.effect(
|
|
130
|
+
Swarm,
|
|
131
|
+
Effect.gen(function* () {
|
|
132
|
+
const docker = yield* Docker;
|
|
133
|
+
|
|
134
|
+
/** Active-manager info, or undefined when the engine isn't one. */
|
|
135
|
+
const observe = Effect.fn(function* (context: string | undefined) {
|
|
136
|
+
const info = yield* docker.swarm.info(context);
|
|
137
|
+
if (
|
|
138
|
+
info.LocalNodeState !== "active" ||
|
|
139
|
+
!info.ControlAvailable ||
|
|
140
|
+
!info.Cluster?.ID
|
|
141
|
+
) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
return info;
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
return Swarm.Provider.of({
|
|
148
|
+
list: () => Effect.succeed([]),
|
|
149
|
+
read: Effect.fn(function* ({ olds, output }) {
|
|
150
|
+
const context = dockerContextName(olds?.context);
|
|
151
|
+
const info = yield* observe(context);
|
|
152
|
+
if (!info) return undefined;
|
|
153
|
+
const attrs = toSwarmAttributes(info, context);
|
|
154
|
+
if (output) return attrs;
|
|
155
|
+
// A swarm carries no labels to brand, so an already-initialized
|
|
156
|
+
// engine can never be proven ours — adoption is gated behind
|
|
157
|
+
// `--adopt` / `adopt(true)`.
|
|
158
|
+
return Unowned(attrs);
|
|
159
|
+
}),
|
|
160
|
+
diff: Effect.fn(function* ({ news, olds }) {
|
|
161
|
+
if (!isResolved(news)) return undefined;
|
|
162
|
+
if (
|
|
163
|
+
dockerContextName(olds?.context) !==
|
|
164
|
+
dockerContextName(news?.context)
|
|
165
|
+
) {
|
|
166
|
+
return { action: "replace" as const, deleteFirst: true };
|
|
167
|
+
}
|
|
168
|
+
// The remaining props only apply at `swarm init`; changing them on
|
|
169
|
+
// a live swarm is a no-op rather than a destructive re-init.
|
|
170
|
+
return { action: "noop" as const };
|
|
171
|
+
}),
|
|
172
|
+
reconcile: Effect.fn(function* ({ news }) {
|
|
173
|
+
const context = dockerContextName(news?.context);
|
|
174
|
+
const existing = yield* observe(context);
|
|
175
|
+
if (existing) return toSwarmAttributes(existing, context);
|
|
176
|
+
|
|
177
|
+
yield* docker.swarm
|
|
178
|
+
.init({
|
|
179
|
+
context,
|
|
180
|
+
"advertise-addr": news?.advertiseAddr,
|
|
181
|
+
"listen-addr": news?.listenAddr,
|
|
182
|
+
"default-addr-pool": news?.defaultAddrPool,
|
|
183
|
+
"default-addr-pool-mask-length": news?.subnetSize,
|
|
184
|
+
})
|
|
185
|
+
.pipe(
|
|
186
|
+
// A concurrent init (or an interrupted prior reconcile) already
|
|
187
|
+
// made this node a swarm member — converge on the observation.
|
|
188
|
+
Effect.catchIf(
|
|
189
|
+
(error) => /already part of a swarm/i.test(String(error)),
|
|
190
|
+
() => Effect.void,
|
|
191
|
+
),
|
|
192
|
+
);
|
|
193
|
+
|
|
194
|
+
const info = yield* observe(context);
|
|
195
|
+
if (!info) {
|
|
196
|
+
return yield* Effect.die(
|
|
197
|
+
new Error(
|
|
198
|
+
"docker swarm init succeeded but the engine did not become an active swarm manager",
|
|
199
|
+
),
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
return toSwarmAttributes(info, context);
|
|
203
|
+
}),
|
|
204
|
+
delete: Effect.fn(({ output }) =>
|
|
205
|
+
docker.swarm.leave(true, output.context).pipe(
|
|
206
|
+
Effect.catchIf(
|
|
207
|
+
(error) => /not part of a swarm/i.test(String(error)),
|
|
208
|
+
() => Effect.void,
|
|
209
|
+
),
|
|
210
|
+
Effect.asVoid,
|
|
211
|
+
),
|
|
212
|
+
),
|
|
213
|
+
});
|
|
214
|
+
}),
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
const toSwarmAttributes = (
|
|
218
|
+
info: Docker.SwarmInfo,
|
|
219
|
+
context: string | undefined,
|
|
220
|
+
): Swarm["Attributes"] => ({
|
|
221
|
+
id: info.Cluster!.ID,
|
|
222
|
+
nodeId: info.NodeID,
|
|
223
|
+
context,
|
|
224
|
+
managers: info.Managers ?? 1,
|
|
225
|
+
nodes: info.Nodes ?? 1,
|
|
226
|
+
});
|
package/src/Docker/Volume.ts
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
hasAlchemyTags,
|
|
10
10
|
stripInternalTags,
|
|
11
11
|
} from "../Tags.ts";
|
|
12
|
-
import { Docker, dockerPhysicalName } from "./Docker.ts";
|
|
12
|
+
import { Docker, dockerContextName, dockerPhysicalName } from "./Docker.ts";
|
|
13
13
|
import type { Providers } from "./Providers.ts";
|
|
14
14
|
|
|
15
15
|
export interface VolumeLabel {
|
|
@@ -32,6 +32,8 @@ export interface VolumeProps {
|
|
|
32
32
|
driverOpts?: Record<string, string>;
|
|
33
33
|
/** Custom metadata labels. */
|
|
34
34
|
labels?: Record<string, string>;
|
|
35
|
+
/** Docker context name or context resource. */
|
|
36
|
+
context?: Docker.ContextRef;
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
export interface Volume extends Resource<
|
|
@@ -92,6 +94,15 @@ export interface Volume extends Resource<
|
|
|
92
94
|
* },
|
|
93
95
|
* });
|
|
94
96
|
* ```
|
|
97
|
+
*
|
|
98
|
+
* @section Docker Context
|
|
99
|
+
* @example Create a volume in a named Docker context
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const data = yield* Docker.Volume("data", {
|
|
102
|
+
* name: "app-data",
|
|
103
|
+
* context: "remote-build",
|
|
104
|
+
* });
|
|
105
|
+
* ```
|
|
95
106
|
*/
|
|
96
107
|
export const Volume = Resource<Volume>("Docker.Volume");
|
|
97
108
|
|
|
@@ -104,9 +115,10 @@ export const VolumeProvider = () =>
|
|
|
104
115
|
return Volume.Provider.of({
|
|
105
116
|
list: () => Effect.succeed([]),
|
|
106
117
|
read: Effect.fn(function* ({ id, instanceId, olds, output }) {
|
|
118
|
+
const context = dockerContextName(olds.context);
|
|
107
119
|
const name = yield* dockerPhysicalName(id, olds, instanceId);
|
|
108
120
|
const info = yield* docker.volume
|
|
109
|
-
.inspect(name)
|
|
121
|
+
.inspect(name, context)
|
|
110
122
|
.pipe(
|
|
111
123
|
Effect.catchReason(
|
|
112
124
|
"PlatformError",
|
|
@@ -122,8 +134,13 @@ export const VolumeProvider = () =>
|
|
|
122
134
|
const owned = yield* hasAlchemyTags(id, info.Labels ?? undefined);
|
|
123
135
|
return owned ? attrs : Unowned(attrs);
|
|
124
136
|
}),
|
|
125
|
-
diff: Effect.fn(function* ({ id, instanceId, output, news }) {
|
|
137
|
+
diff: Effect.fn(function* ({ id, instanceId, output, news, olds }) {
|
|
126
138
|
if (!isResolved(news)) return undefined;
|
|
139
|
+
if (
|
|
140
|
+
dockerContextName(olds.context) !== dockerContextName(news.context)
|
|
141
|
+
) {
|
|
142
|
+
return { action: "replace" as const, deleteFirst: true };
|
|
143
|
+
}
|
|
127
144
|
const args = yield* makeVolumeArgs(id, news, instanceId);
|
|
128
145
|
// Auto-generated names are engine-owned: the deployed name stays
|
|
129
146
|
// authoritative even if the generator would name this id differently
|
|
@@ -141,6 +158,7 @@ export const VolumeProvider = () =>
|
|
|
141
158
|
}
|
|
142
159
|
}),
|
|
143
160
|
reconcile: Effect.fn(function* ({ id, instanceId, news, output }) {
|
|
161
|
+
const context = dockerContextName(news.context);
|
|
144
162
|
const args = yield* makeVolumeArgs(id, news, instanceId);
|
|
145
163
|
// Prefer the deployed name: regenerating would target a different
|
|
146
164
|
// volume if the generator's output for this id ever drifts.
|
|
@@ -150,14 +168,15 @@ export const VolumeProvider = () =>
|
|
|
150
168
|
...args,
|
|
151
169
|
name,
|
|
152
170
|
label: { ...internalTags, ...args.label },
|
|
171
|
+
context,
|
|
153
172
|
});
|
|
154
173
|
return toVolumeAttributes(
|
|
155
|
-
yield* docker.volume.inspect(result.stdout),
|
|
174
|
+
yield* docker.volume.inspect(result.stdout, context),
|
|
156
175
|
);
|
|
157
176
|
}),
|
|
158
|
-
delete: Effect.fn(({ output }) =>
|
|
177
|
+
delete: Effect.fn(({ olds, output }) =>
|
|
159
178
|
docker.volume
|
|
160
|
-
.remove(output.name)
|
|
179
|
+
.remove(output.name, dockerContextName(olds.context))
|
|
161
180
|
.pipe(
|
|
162
181
|
Effect.catchReason(
|
|
163
182
|
"PlatformError",
|
package/src/Docker/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from "./Container.ts";
|
|
2
|
+
export * from "./Context.ts";
|
|
2
3
|
export * from "./Docker.ts";
|
|
3
4
|
export * as Dockerfile from "./Dockerfile.ts";
|
|
4
5
|
export * from "./Image.ts";
|
|
@@ -6,4 +7,6 @@ export * from "./Network.ts";
|
|
|
6
7
|
export * from "./Providers.ts";
|
|
7
8
|
export type { ImageRegistry } from "./Registry.ts";
|
|
8
9
|
export * from "./RemoteImage.ts";
|
|
10
|
+
export * from "./Service.ts";
|
|
11
|
+
export * from "./Swarm.ts";
|
|
9
12
|
export * from "./Volume.ts";
|
package/src/Http.ts
CHANGED
|
@@ -108,7 +108,15 @@ export const resolvePort = (options: { port?: number } | undefined) =>
|
|
|
108
108
|
? Effect.succeed(options.port)
|
|
109
109
|
: Config.number("PORT").pipe(Config.withDefault(3000));
|
|
110
110
|
|
|
111
|
-
export
|
|
111
|
+
export interface BunHttpServerOptions {
|
|
112
|
+
/**
|
|
113
|
+
* Network interface on which the Bun HTTP server listens.
|
|
114
|
+
* Omit to use Bun's default.
|
|
115
|
+
*/
|
|
116
|
+
hostname?: string;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export const BunHttpServer = (serverOptions?: BunHttpServerOptions) =>
|
|
112
120
|
Layer.effect(
|
|
113
121
|
HttpServer,
|
|
114
122
|
Effect.gen(function* () {
|
|
@@ -119,7 +127,12 @@ export const BunHttpServer = () =>
|
|
|
119
127
|
serve: (handler, options) =>
|
|
120
128
|
Effect.gen(function* () {
|
|
121
129
|
const port = yield* resolvePort(options);
|
|
122
|
-
const server = yield* BunHttpServerPlatform.make({
|
|
130
|
+
const server = yield* BunHttpServerPlatform.make({
|
|
131
|
+
port,
|
|
132
|
+
...(serverOptions?.hostname === undefined
|
|
133
|
+
? {}
|
|
134
|
+
: { hostname: serverOptions.hostname }),
|
|
135
|
+
});
|
|
123
136
|
yield* server.serve(safeHttpEffect(handler));
|
|
124
137
|
}).pipe(Effect.orDie),
|
|
125
138
|
};
|