alchemy 2.0.0-beta.65 → 2.0.0-beta.66
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 +433 -181
- 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/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/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 +80 -0
- package/lib/Prisma/App.d.ts.map +1 -0
- package/lib/Prisma/App.js +238 -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 +75 -0
- package/lib/Prisma/Branch.d.ts.map +1 -0
- package/lib/Prisma/Branch.js +216 -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 +583 -0
- package/lib/Prisma/Compute.d.ts.map +1 -0
- package/lib/Prisma/Compute.js +1543 -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 +99 -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 +202 -0
- package/lib/Prisma/Connection.d.ts.map +1 -0
- package/lib/Prisma/Connection.js +346 -0
- package/lib/Prisma/Connection.js.map +1 -0
- package/lib/Prisma/CustomDomain.d.ts +81 -0
- package/lib/Prisma/CustomDomain.d.ts.map +1 -0
- package/lib/Prisma/CustomDomain.js +175 -0
- package/lib/Prisma/CustomDomain.js.map +1 -0
- package/lib/Prisma/Database.d.ts +208 -0
- package/lib/Prisma/Database.d.ts.map +1 -0
- package/lib/Prisma/Database.js +405 -0
- package/lib/Prisma/Database.js.map +1 -0
- package/lib/Prisma/Deployment.d.ts +135 -0
- package/lib/Prisma/Deployment.d.ts.map +1 -0
- package/lib/Prisma/Deployment.js +348 -0
- package/lib/Prisma/Deployment.js.map +1 -0
- package/lib/Prisma/EnvironmentVariable.d.ts +89 -0
- package/lib/Prisma/EnvironmentVariable.d.ts.map +1 -0
- package/lib/Prisma/EnvironmentVariable.js +213 -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 +24 -0
- package/lib/Prisma/Postgres.d.ts.map +1 -0
- package/lib/Prisma/Postgres.js +23 -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 +117 -0
- package/lib/Prisma/Project.d.ts.map +1 -0
- package/lib/Prisma/Project.js +361 -0
- package/lib/Prisma/Project.js.map +1 -0
- package/lib/Prisma/Providers.d.ts +61 -0
- package/lib/Prisma/Providers.d.ts.map +1 -0
- package/lib/Prisma/Providers.js +282 -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 +104 -0
- package/lib/Prisma/SourceRepository.d.ts.map +1 -0
- package/lib/Prisma/SourceRepository.js +221 -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/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 +154 -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/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 +420 -0
- package/src/Prisma/AuthProvider.ts +260 -0
- package/src/Prisma/Branch.ts +396 -0
- package/src/Prisma/Client.ts +1337 -0
- package/src/Prisma/Compute.ts +2876 -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 +410 -0
- package/src/Prisma/Connection.ts +626 -0
- package/src/Prisma/CustomDomain.ts +363 -0
- package/src/Prisma/Database.ts +836 -0
- package/src/Prisma/Deployment.ts +655 -0
- package/src/Prisma/EnvironmentVariable.ts +401 -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 +24 -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 +681 -0
- package/src/Prisma/Providers.ts +411 -0
- package/src/Prisma/Refs.ts +69 -0
- package/src/Prisma/SourceRepository.ts +432 -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
|
@@ -1,9 +1,29 @@
|
|
|
1
|
-
import type { Credentials } from "@distilled.cloud/cloudflare/Credentials";
|
|
2
1
|
import * as d1 from "@distilled.cloud/cloudflare/d1";
|
|
3
2
|
import * as Effect from "effect/Effect";
|
|
4
|
-
import type * as HttpClient from "effect/unstable/http/HttpClient";
|
|
5
3
|
import type { SqlFile } from "../../SQL/SqlFile.ts";
|
|
6
4
|
|
|
5
|
+
/**
|
|
6
|
+
* The minimal query surface the migration flow needs: run (possibly
|
|
7
|
+
* multi-statement) SQL and return the D1 HTTP API's result envelope. Two
|
|
8
|
+
* implementations exist:
|
|
9
|
+
*
|
|
10
|
+
* - the cloud executor ({@link applyMigrations}), backed by distilled's
|
|
11
|
+
* `d1.queryDatabase`;
|
|
12
|
+
* - the local executor (`LocalD1Gateway.ts`), which tunnels the same
|
|
13
|
+
* protocol into the local workerd D1 simulator.
|
|
14
|
+
*/
|
|
15
|
+
export interface D1QueryResult {
|
|
16
|
+
result: Array<{
|
|
17
|
+
results?: unknown;
|
|
18
|
+
success?: boolean | null;
|
|
19
|
+
meta?: unknown;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type D1SqlExecutor<E = unknown, R = never> = (
|
|
24
|
+
sql: string,
|
|
25
|
+
) => Effect.Effect<D1QueryResult, E, R>;
|
|
26
|
+
|
|
7
27
|
export interface ApplyMigrationsOptions {
|
|
8
28
|
accountId: string;
|
|
9
29
|
databaseId: string;
|
|
@@ -12,19 +32,38 @@ export interface ApplyMigrationsOptions {
|
|
|
12
32
|
}
|
|
13
33
|
|
|
14
34
|
/**
|
|
15
|
-
* Apply pending D1 migrations in order. Uses the
|
|
16
|
-
* 3-column schema `(id TEXT PK, name TEXT, applied_at
|
|
35
|
+
* Apply pending D1 migrations in order against the live cloud API. Uses the
|
|
36
|
+
* wrangler-compatible 3-column schema `(id TEXT PK, name TEXT, applied_at
|
|
37
|
+
* TEXT)`.
|
|
17
38
|
*/
|
|
18
39
|
export const applyMigrations = (options: ApplyMigrationsOptions) =>
|
|
19
40
|
Effect.gen(function* () {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
41
|
+
const queryDb = yield* d1.queryDatabase;
|
|
42
|
+
const executor: D1SqlExecutor<d1.QueryDatabaseError> = (sql) =>
|
|
43
|
+
queryDb({
|
|
44
|
+
accountId: options.accountId,
|
|
45
|
+
databaseId: options.databaseId,
|
|
46
|
+
sql,
|
|
47
|
+
});
|
|
48
|
+
yield* applyMigrationsWith(executor, options);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Apply pending D1 migrations in order through the given SQL executor —
|
|
53
|
+
* the executor-agnostic core shared by the cloud and local flows.
|
|
54
|
+
*/
|
|
55
|
+
export const applyMigrationsWith = <E, R>(
|
|
56
|
+
executor: D1SqlExecutor<E, R>,
|
|
57
|
+
options: {
|
|
58
|
+
migrationsTable: string;
|
|
59
|
+
migrationsFiles: ReadonlyArray<SqlFile>;
|
|
60
|
+
},
|
|
61
|
+
): Effect.Effect<void, E, R> =>
|
|
62
|
+
Effect.gen(function* () {
|
|
63
|
+
const { migrationsTable, migrationsFiles } = options;
|
|
64
|
+
yield* ensureMigrationsTable(executor, migrationsTable);
|
|
65
|
+
const applied = yield* getAppliedMigrations(executor, migrationsTable);
|
|
66
|
+
let nextSeq = yield* getNextSeq(executor, migrationsTable);
|
|
28
67
|
|
|
29
68
|
for (const migration of migrationsFiles) {
|
|
30
69
|
if (applied.has(migration.id)) continue;
|
|
@@ -32,9 +71,7 @@ export const applyMigrations = (options: ApplyMigrationsOptions) =>
|
|
|
32
71
|
nextSeq += 1;
|
|
33
72
|
// D1 over HTTP doesn't support transactions; run migration + record
|
|
34
73
|
// in a single batched query.
|
|
35
|
-
yield*
|
|
36
|
-
accountId,
|
|
37
|
-
databaseId,
|
|
74
|
+
yield* executor(
|
|
38
75
|
[
|
|
39
76
|
migration.sql,
|
|
40
77
|
`INSERT INTO ${migrationsTable} (id, name, applied_at) VALUES ('${migrationId}', '${migration.id}', datetime('now'));`,
|
|
@@ -57,29 +94,12 @@ interface SchemaInfo {
|
|
|
57
94
|
columns: TableColumn[];
|
|
58
95
|
}
|
|
59
96
|
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
databaseId: string,
|
|
63
|
-
sql: string,
|
|
64
|
-
): Effect.Effect<
|
|
65
|
-
d1.QueryDatabaseResponse,
|
|
66
|
-
d1.QueryDatabaseError,
|
|
67
|
-
Credentials | HttpClient.HttpClient
|
|
68
|
-
> =>
|
|
69
|
-
Effect.gen(function* () {
|
|
70
|
-
const queryDb = yield* d1.queryDatabase;
|
|
71
|
-
return yield* queryDb({ accountId, databaseId, sql });
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
const detectSchema = (
|
|
75
|
-
accountId: string,
|
|
76
|
-
databaseId: string,
|
|
97
|
+
const detectSchema = <E, R>(
|
|
98
|
+
executor: D1SqlExecutor<E, R>,
|
|
77
99
|
migrationsTable: string,
|
|
78
100
|
) =>
|
|
79
101
|
Effect.gen(function* () {
|
|
80
|
-
const result = yield*
|
|
81
|
-
accountId,
|
|
82
|
-
databaseId,
|
|
102
|
+
const result = yield* executor(
|
|
83
103
|
`PRAGMA table_info(${migrationsTable});`,
|
|
84
104
|
).pipe(Effect.option);
|
|
85
105
|
|
|
@@ -120,9 +140,8 @@ const detectSchema = (
|
|
|
120
140
|
} satisfies SchemaInfo;
|
|
121
141
|
});
|
|
122
142
|
|
|
123
|
-
const migrateLegacySchema = (
|
|
124
|
-
|
|
125
|
-
databaseId: string,
|
|
143
|
+
const migrateLegacySchema = <E, R>(
|
|
144
|
+
executor: D1SqlExecutor<E, R>,
|
|
126
145
|
migrationsTable: string,
|
|
127
146
|
schema: SchemaInfo,
|
|
128
147
|
) =>
|
|
@@ -135,18 +154,14 @@ const migrateLegacySchema = (
|
|
|
135
154
|
);
|
|
136
155
|
}
|
|
137
156
|
const tempTable = `${migrationsTable}_temp_migration`;
|
|
138
|
-
yield*
|
|
139
|
-
accountId,
|
|
140
|
-
databaseId,
|
|
157
|
+
yield* executor(
|
|
141
158
|
`CREATE TABLE ${tempTable} (
|
|
142
159
|
id TEXT PRIMARY KEY,
|
|
143
160
|
name TEXT NOT NULL,
|
|
144
161
|
applied_at TEXT NOT NULL
|
|
145
162
|
);`,
|
|
146
163
|
);
|
|
147
|
-
yield*
|
|
148
|
-
accountId,
|
|
149
|
-
databaseId,
|
|
164
|
+
yield* executor(
|
|
150
165
|
`INSERT INTO ${tempTable} (id, name, applied_at)
|
|
151
166
|
SELECT
|
|
152
167
|
printf('%05d', row_number() OVER (ORDER BY applied_at)) as id,
|
|
@@ -155,25 +170,18 @@ const migrateLegacySchema = (
|
|
|
155
170
|
FROM ${migrationsTable}
|
|
156
171
|
ORDER BY applied_at;`,
|
|
157
172
|
);
|
|
158
|
-
yield*
|
|
159
|
-
yield*
|
|
160
|
-
accountId,
|
|
161
|
-
databaseId,
|
|
162
|
-
`ALTER TABLE ${tempTable} RENAME TO ${migrationsTable};`,
|
|
163
|
-
);
|
|
173
|
+
yield* executor(`DROP TABLE ${migrationsTable};`);
|
|
174
|
+
yield* executor(`ALTER TABLE ${tempTable} RENAME TO ${migrationsTable};`);
|
|
164
175
|
});
|
|
165
176
|
|
|
166
|
-
const ensureMigrationsTable = (
|
|
167
|
-
|
|
168
|
-
databaseId: string,
|
|
177
|
+
const ensureMigrationsTable = <E, R>(
|
|
178
|
+
executor: D1SqlExecutor<E, R>,
|
|
169
179
|
migrationsTable: string,
|
|
170
180
|
) =>
|
|
171
181
|
Effect.gen(function* () {
|
|
172
|
-
const schema = yield* detectSchema(
|
|
182
|
+
const schema = yield* detectSchema(executor, migrationsTable);
|
|
173
183
|
if (!schema.exists) {
|
|
174
|
-
yield*
|
|
175
|
-
accountId,
|
|
176
|
-
databaseId,
|
|
184
|
+
yield* executor(
|
|
177
185
|
`CREATE TABLE ${migrationsTable} (
|
|
178
186
|
id TEXT PRIMARY KEY,
|
|
179
187
|
name TEXT NOT NULL,
|
|
@@ -183,39 +191,26 @@ const ensureMigrationsTable = (
|
|
|
183
191
|
return;
|
|
184
192
|
}
|
|
185
193
|
if (schema.isLegacySchema || !schema.hasIdColumn || !schema.hasNameColumn) {
|
|
186
|
-
yield* migrateLegacySchema(
|
|
187
|
-
accountId,
|
|
188
|
-
databaseId,
|
|
189
|
-
migrationsTable,
|
|
190
|
-
schema,
|
|
191
|
-
);
|
|
194
|
+
yield* migrateLegacySchema(executor, migrationsTable, schema);
|
|
192
195
|
}
|
|
193
196
|
});
|
|
194
197
|
|
|
195
|
-
const getAppliedMigrations = (
|
|
196
|
-
|
|
197
|
-
databaseId: string,
|
|
198
|
+
const getAppliedMigrations = <E, R>(
|
|
199
|
+
executor: D1SqlExecutor<E, R>,
|
|
198
200
|
migrationsTable: string,
|
|
199
201
|
) =>
|
|
200
202
|
Effect.gen(function* () {
|
|
201
|
-
const result = yield*
|
|
202
|
-
accountId,
|
|
203
|
-
databaseId,
|
|
204
|
-
`SELECT name FROM ${migrationsTable};`,
|
|
205
|
-
);
|
|
203
|
+
const result = yield* executor(`SELECT name FROM ${migrationsTable};`);
|
|
206
204
|
const rows = (result.result[0]?.results ?? []) as Array<{ name: string }>;
|
|
207
205
|
return new Set(rows.map((r) => r.name));
|
|
208
206
|
});
|
|
209
207
|
|
|
210
|
-
const getNextSeq = (
|
|
211
|
-
|
|
212
|
-
databaseId: string,
|
|
208
|
+
const getNextSeq = <E, R>(
|
|
209
|
+
executor: D1SqlExecutor<E, R>,
|
|
213
210
|
migrationsTable: string,
|
|
214
211
|
) =>
|
|
215
212
|
Effect.gen(function* () {
|
|
216
|
-
const result = yield*
|
|
217
|
-
accountId,
|
|
218
|
-
databaseId,
|
|
213
|
+
const result = yield* executor(
|
|
219
214
|
`SELECT id FROM ${migrationsTable} ORDER BY id;`,
|
|
220
215
|
);
|
|
221
216
|
const rows = (result.result[0]?.results ?? []) as Array<{ id: string }>;
|
|
@@ -1,19 +1,25 @@
|
|
|
1
|
+
import type { RuntimeServices } from "@distilled.cloud/cloudflare-runtime";
|
|
1
2
|
import * as d1 from "@distilled.cloud/cloudflare/d1";
|
|
2
3
|
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
3
5
|
import * as Option from "effect/Option";
|
|
4
6
|
import * as Stream from "effect/Stream";
|
|
7
|
+
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
5
8
|
|
|
6
9
|
import { isResolved } from "../../Diff.ts";
|
|
10
|
+
import * as ProviderLayer from "../../Local/ProviderLayer.ts";
|
|
7
11
|
import { createPhysicalName } from "../../PhysicalName.ts";
|
|
8
12
|
import * as Provider from "../../Provider.ts";
|
|
9
13
|
import { isResourceOfType, Resource } from "../../Resource.ts";
|
|
10
14
|
import { listSqlFiles, readSqlFile } from "../../SQL/SqlFile.ts";
|
|
11
15
|
import { recordsEqual } from "../../Util/equal.ts";
|
|
12
16
|
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
17
|
+
import { generateLocalId, localRuntimeServices } from "../LocalRuntime.ts";
|
|
13
18
|
import type { Providers } from "../Providers.ts";
|
|
14
|
-
import { applyMigrations } from "./ApplyMigrations.ts";
|
|
19
|
+
import { applyMigrations, applyMigrationsWith } from "./ApplyMigrations.ts";
|
|
15
20
|
import { cloneDatabase } from "./CloneDatabase.ts";
|
|
16
21
|
import { importD1Database } from "./ImportDatabase.ts";
|
|
22
|
+
import { withLocalD1Executor } from "./LocalD1Gateway.ts";
|
|
17
23
|
|
|
18
24
|
export const isDatabase = (value: unknown): value is Database =>
|
|
19
25
|
isResourceOfType(value, "Cloudflare.D1Database");
|
|
@@ -248,7 +254,7 @@ export type Database = Resource<
|
|
|
248
254
|
*/
|
|
249
255
|
export const Database = Resource<Database>("Cloudflare.D1Database");
|
|
250
256
|
|
|
251
|
-
export const
|
|
257
|
+
export const ProviderLive = () =>
|
|
252
258
|
Provider.succeed(Database, {
|
|
253
259
|
stables: ["databaseId", "accountId"],
|
|
254
260
|
diff: Effect.fn(function* ({ id, olds = {}, news = {}, output }) {
|
|
@@ -552,6 +558,152 @@ export const DatabaseProvider = () =>
|
|
|
552
558
|
}),
|
|
553
559
|
});
|
|
554
560
|
|
|
561
|
+
/**
|
|
562
|
+
* Local (dev) provider — the database is purely virtual: a `dev:` id keyed
|
|
563
|
+
* into the local workerd D1 simulator (DO SQLite under `.alchemy/local/d1`).
|
|
564
|
+
* `toRuntimeBinding` lowers a `d1` binding whose id is `dev:`-prefixed onto
|
|
565
|
+
* the local D1 service.
|
|
566
|
+
*
|
|
567
|
+
* Migrations ARE applied locally: reconcile boots an ephemeral gateway
|
|
568
|
+
* workerd (see `LocalD1Gateway.ts`) and drives the same executor-agnostic
|
|
569
|
+
* migration flow the live provider uses, against the simulator's storage.
|
|
570
|
+
* Imports (`importFiles`) are still cloud-only — the import flow is a
|
|
571
|
+
* multi-step HTTP upload with no local counterpart.
|
|
572
|
+
*/
|
|
573
|
+
export const ProviderLocal = () =>
|
|
574
|
+
Provider.effect(
|
|
575
|
+
Database,
|
|
576
|
+
Effect.gen(function* () {
|
|
577
|
+
// The local runtime services (workerd `Runtime`, binding plugins) and
|
|
578
|
+
// the HTTP client are resolved once at layer build and closed over —
|
|
579
|
+
// lifecycle effects run with the engine's call-time context, which
|
|
580
|
+
// doesn't include them.
|
|
581
|
+
const runtimeContext = yield* Effect.context<
|
|
582
|
+
RuntimeServices | HttpClient.HttpClient
|
|
583
|
+
>();
|
|
584
|
+
|
|
585
|
+
return {
|
|
586
|
+
stables: ["accountId"],
|
|
587
|
+
diff: Effect.fn(function* ({ news = {}, output }) {
|
|
588
|
+
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
589
|
+
if (!output?.databaseId) return { action: "update" } as const;
|
|
590
|
+
if (!isResolved(news)) return undefined;
|
|
591
|
+
if (output.accountId !== accountId) {
|
|
592
|
+
return { action: "replace" } as const;
|
|
593
|
+
}
|
|
594
|
+
// Detect migration/import file drift — same rules as the live
|
|
595
|
+
// provider.
|
|
596
|
+
if (news.migrationsDir) {
|
|
597
|
+
const newHashes = yield* hashMigrations(news.migrationsDir);
|
|
598
|
+
if (!recordsEqual(newHashes, output.migrationsHashes ?? {})) {
|
|
599
|
+
return { action: "update" } as const;
|
|
600
|
+
}
|
|
601
|
+
if (
|
|
602
|
+
(news.migrationsTable ?? DEFAULT_MIGRATIONS_TABLE) !==
|
|
603
|
+
(output.migrationsTable ?? DEFAULT_MIGRATIONS_TABLE)
|
|
604
|
+
) {
|
|
605
|
+
return { action: "update" } as const;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
if (news.importFiles?.length) {
|
|
609
|
+
const newHashes = yield* hashImports(
|
|
610
|
+
news.importFiles,
|
|
611
|
+
yield* rootDir,
|
|
612
|
+
);
|
|
613
|
+
if (!recordsEqual(newHashes, output.importHashes ?? {})) {
|
|
614
|
+
return { action: "update" } as const;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
// Fall through to the engine's default prop diff.
|
|
618
|
+
}),
|
|
619
|
+
read: Effect.fn(function* ({ output }) {
|
|
620
|
+
// Purely virtual — the persisted state row is the source of truth.
|
|
621
|
+
return output ?? undefined;
|
|
622
|
+
}),
|
|
623
|
+
reconcile: Effect.fn(function* ({ id, news = {}, output }) {
|
|
624
|
+
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
625
|
+
const databaseId = output?.databaseId ?? generateLocalId();
|
|
626
|
+
|
|
627
|
+
// Sync migrations — the shared flow is idempotent (skips applied
|
|
628
|
+
// entries), driven through the ephemeral local gateway.
|
|
629
|
+
const migrationsTable =
|
|
630
|
+
news.migrationsTable ??
|
|
631
|
+
output?.migrationsTable ??
|
|
632
|
+
DEFAULT_MIGRATIONS_TABLE;
|
|
633
|
+
let migrationsHashes: Record<string, string> = {};
|
|
634
|
+
if (news.migrationsDir) {
|
|
635
|
+
const files = yield* listSqlFiles(news.migrationsDir);
|
|
636
|
+
if (files.length > 0) {
|
|
637
|
+
yield* withLocalD1Executor(databaseId, (executor) =>
|
|
638
|
+
applyMigrationsWith(executor, {
|
|
639
|
+
migrationsTable,
|
|
640
|
+
migrationsFiles: files,
|
|
641
|
+
}),
|
|
642
|
+
).pipe(Effect.provideContext(runtimeContext));
|
|
643
|
+
}
|
|
644
|
+
for (const file of files) migrationsHashes[file.id] = file.hash;
|
|
645
|
+
} else {
|
|
646
|
+
migrationsHashes = output?.migrationsHashes ?? {};
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
// Sync imports — locally an import file is just multi-statement
|
|
650
|
+
// SQL, executed through the same gateway. Files whose hash matches
|
|
651
|
+
// previously-imported state are skipped (mirroring `runImports`).
|
|
652
|
+
const importHashes: Record<string, string> = {
|
|
653
|
+
...(output?.importHashes ?? {}),
|
|
654
|
+
};
|
|
655
|
+
if (news.importFiles?.length) {
|
|
656
|
+
const importRootDir = yield* rootDir;
|
|
657
|
+
const pending: Array<{ path: string; sql: string; hash: string }> =
|
|
658
|
+
[];
|
|
659
|
+
for (const filePath of news.importFiles) {
|
|
660
|
+
const file = yield* readSqlFile(importRootDir, filePath);
|
|
661
|
+
if (importHashes[filePath] === file.hash) continue;
|
|
662
|
+
pending.push({ path: filePath, sql: file.sql, hash: file.hash });
|
|
663
|
+
}
|
|
664
|
+
if (pending.length > 0) {
|
|
665
|
+
yield* withLocalD1Executor(databaseId, (executor) =>
|
|
666
|
+
Effect.forEach(pending, (file) => executor(file.sql), {
|
|
667
|
+
discard: true,
|
|
668
|
+
}),
|
|
669
|
+
).pipe(Effect.provideContext(runtimeContext));
|
|
670
|
+
for (const file of pending) {
|
|
671
|
+
importHashes[file.path] = file.hash;
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
return {
|
|
677
|
+
databaseId,
|
|
678
|
+
databaseName: yield* createDatabaseName(id, news.name),
|
|
679
|
+
jurisdiction: (news.jurisdiction ?? "default") as Jurisdiction,
|
|
680
|
+
readReplication: news.readReplication,
|
|
681
|
+
accountId: output?.accountId ?? accountId,
|
|
682
|
+
migrationsDir: news.migrationsDir,
|
|
683
|
+
migrationsTable: news.migrationsDir ? migrationsTable : undefined,
|
|
684
|
+
migrationsHashes,
|
|
685
|
+
importHashes,
|
|
686
|
+
};
|
|
687
|
+
}),
|
|
688
|
+
delete: Effect.fn(function* () {
|
|
689
|
+
// The simulator's on-disk data is keyed by the dev id; dropping
|
|
690
|
+
// the state row is enough — orphaned data is reclaimed with
|
|
691
|
+
// `.alchemy`.
|
|
692
|
+
}),
|
|
693
|
+
};
|
|
694
|
+
}),
|
|
695
|
+
);
|
|
696
|
+
|
|
697
|
+
export const DatabaseProvider = () =>
|
|
698
|
+
ProviderLayer.dual(Database, {
|
|
699
|
+
// The local provider's reconcile boots an ephemeral workerd gateway to
|
|
700
|
+
// apply migrations, so it needs the shared local runtime layer (the
|
|
701
|
+
// module-memoized reference — one runtime instance per stack build,
|
|
702
|
+
// shared with the Worker/Queue/Container local providers).
|
|
703
|
+
local: () => ProviderLocal().pipe(Layer.provide(localRuntimeServices())),
|
|
704
|
+
live: () => ProviderLive(),
|
|
705
|
+
});
|
|
706
|
+
|
|
555
707
|
const createDatabaseName = (id: string, name: string | undefined) =>
|
|
556
708
|
Effect.gen(function* () {
|
|
557
709
|
return name ?? (yield* createPhysicalName({ id }));
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-side query path into the local workerd D1 simulator, built on the
|
|
3
|
+
* runtime's platform proxy (`PlatformProxy.open` — our `getPlatformProxy`).
|
|
4
|
+
*
|
|
5
|
+
* The simulator (a `d1` service routing to a per-database
|
|
6
|
+
* `D1DatabaseObject` Durable Object over DO SQLite) is only reachable from
|
|
7
|
+
* inside workerd — but alchemy's migration runner and the
|
|
8
|
+
* `QueryDatabaseLocal` capability run in Node. The platform proxy bridges
|
|
9
|
+
* the two: it hosts the binding in a scoped workerd instance and exposes it
|
|
10
|
+
* to Node. We bind the raw `d1` service (the same designator the
|
|
11
|
+
* `cloudflare-internal:d1-api` wrapped binding targets) so Node speaks the
|
|
12
|
+
* full D1 HTTP protocol (`POST /query`, multi-statement SQL) rather than
|
|
13
|
+
* the line-based `exec()` surface of the wrapped binding:
|
|
14
|
+
*
|
|
15
|
+
* Node ── proxy.env.D1_RAW.fetch({sql}) ──▶ `d1` service ──▶ D1DatabaseObject
|
|
16
|
+
*
|
|
17
|
+
* Data lands in the same `{storage}/d1` directory every local worker
|
|
18
|
+
* binding reads.
|
|
19
|
+
*
|
|
20
|
+
* NOT exported from `index.ts` — provider-internal scaffolding.
|
|
21
|
+
*/
|
|
22
|
+
import { open } from "@distilled.cloud/cloudflare-runtime/platform-proxy";
|
|
23
|
+
import { D1 } from "@distilled.cloud/cloudflare-runtime/bindings";
|
|
24
|
+
import { SERVICE_D1 } from "@distilled.cloud/cloudflare-runtime/bindings/d1/D1Options";
|
|
25
|
+
import type { BindingHook } from "@distilled.cloud/cloudflare-runtime/PluginContext";
|
|
26
|
+
import * as Data from "effect/Data";
|
|
27
|
+
import * as Effect from "effect/Effect";
|
|
28
|
+
import { gatewayName, localGatewayRuntime } from "../LocalGateway.ts";
|
|
29
|
+
import type { D1QueryResult, D1SqlExecutor } from "./ApplyMigrations.ts";
|
|
30
|
+
|
|
31
|
+
export { localGatewayRuntime as localD1GatewayRuntime };
|
|
32
|
+
|
|
33
|
+
export class LocalD1QueryError extends Data.TaggedError("LocalD1QueryError")<{
|
|
34
|
+
message: string;
|
|
35
|
+
cause?: unknown;
|
|
36
|
+
}> {}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* A single query or batch in the shape the cloud `d1.queryDatabase` op
|
|
40
|
+
* accepts — the local gateway speaks the same surface so client code can
|
|
41
|
+
* swap transports without translation.
|
|
42
|
+
*/
|
|
43
|
+
export type D1QueryBody =
|
|
44
|
+
| { sql: string; params?: unknown[] }
|
|
45
|
+
| { batch: Array<{ sql: string; params?: unknown[] }> };
|
|
46
|
+
|
|
47
|
+
interface D1StatementResponse {
|
|
48
|
+
success: boolean;
|
|
49
|
+
results?: unknown;
|
|
50
|
+
meta?: unknown;
|
|
51
|
+
error?: string;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* A plain service binding onto the raw `d1` service for `databaseId` —
|
|
56
|
+
* bypassing the `cloudflare-internal:d1-api` wrapper so the proxy's fetch
|
|
57
|
+
* passthrough can POST the full D1 HTTP protocol.
|
|
58
|
+
*/
|
|
59
|
+
const rawD1Binding = (databaseId: string): BindingHook =>
|
|
60
|
+
Effect.succeed({
|
|
61
|
+
name: "D1_RAW",
|
|
62
|
+
service: {
|
|
63
|
+
name: SERVICE_D1,
|
|
64
|
+
props: { json: JSON.stringify({ databaseId }) },
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Boot a scoped platform proxy for `databaseId`, hand `use` a query
|
|
70
|
+
* function that tunnels {@link D1QueryBody} requests into the local
|
|
71
|
+
* simulator, and tear the instance down when `use` completes.
|
|
72
|
+
*/
|
|
73
|
+
export const withLocalD1Query = <A, E, R>(
|
|
74
|
+
databaseId: string,
|
|
75
|
+
use: (
|
|
76
|
+
query: (
|
|
77
|
+
body: D1QueryBody,
|
|
78
|
+
) => Effect.Effect<D1QueryResult, LocalD1QueryError>,
|
|
79
|
+
) => Effect.Effect<A, E, R>,
|
|
80
|
+
) =>
|
|
81
|
+
Effect.scoped(
|
|
82
|
+
Effect.gen(function* () {
|
|
83
|
+
const proxy = yield* open({
|
|
84
|
+
name: gatewayName("alchemy-d1-gateway", databaseId),
|
|
85
|
+
bindings: [
|
|
86
|
+
// The wrapped binding is unused by the gateway itself, but its
|
|
87
|
+
// hook registers the database with the D1 plugin so the `d1`
|
|
88
|
+
// service is emitted into this workerd config.
|
|
89
|
+
D1.local({ binding: "DB", id: databaseId }),
|
|
90
|
+
rawD1Binding(databaseId),
|
|
91
|
+
],
|
|
92
|
+
});
|
|
93
|
+
const raw = (proxy.env as Record<string, unknown>).D1_RAW as {
|
|
94
|
+
fetch: (input: string, init?: RequestInit) => Promise<Response>;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const query = (body: D1QueryBody) =>
|
|
98
|
+
Effect.tryPromise({
|
|
99
|
+
try: async () => {
|
|
100
|
+
const response = await raw.fetch("http://d1/query", {
|
|
101
|
+
method: "POST",
|
|
102
|
+
headers: { "content-type": "application/json" },
|
|
103
|
+
// The DO accepts a single D1Query or an array (one
|
|
104
|
+
// transaction) — a batch maps to the array form.
|
|
105
|
+
body: JSON.stringify("batch" in body ? body.batch : body),
|
|
106
|
+
});
|
|
107
|
+
return (await response.json()) as unknown;
|
|
108
|
+
},
|
|
109
|
+
catch: (cause) =>
|
|
110
|
+
new LocalD1QueryError({
|
|
111
|
+
message: "Failed to reach the local D1 gateway",
|
|
112
|
+
cause,
|
|
113
|
+
}),
|
|
114
|
+
}).pipe(
|
|
115
|
+
Effect.flatMap((responseBody) => {
|
|
116
|
+
// Protocol errors come back `{ success: false, error }` (a
|
|
117
|
+
// single object); successes are one envelope per statement.
|
|
118
|
+
const responses = (
|
|
119
|
+
Array.isArray(responseBody) ? responseBody : [responseBody]
|
|
120
|
+
) as D1StatementResponse[];
|
|
121
|
+
const failed = responses.find((r) => !r.success);
|
|
122
|
+
if (failed) {
|
|
123
|
+
return Effect.fail(
|
|
124
|
+
new LocalD1QueryError({
|
|
125
|
+
message: failed.error ?? "Local D1 query failed",
|
|
126
|
+
}),
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
return Effect.succeed({
|
|
130
|
+
result: responses.map((r) => ({
|
|
131
|
+
results: r.results,
|
|
132
|
+
success: true,
|
|
133
|
+
meta: r.meta,
|
|
134
|
+
})),
|
|
135
|
+
} as D1QueryResult);
|
|
136
|
+
}),
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
return yield* use(query);
|
|
140
|
+
}),
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* SQL-only view of {@link withLocalD1Query} matching the migration flow's
|
|
145
|
+
* {@link D1SqlExecutor} contract.
|
|
146
|
+
*/
|
|
147
|
+
export const withLocalD1Executor = <A, E, R>(
|
|
148
|
+
databaseId: string,
|
|
149
|
+
use: (executor: D1SqlExecutor<LocalD1QueryError>) => Effect.Effect<A, E, R>,
|
|
150
|
+
) => withLocalD1Query(databaseId, (query) => use((sql) => query({ sql })));
|
|
@@ -43,9 +43,19 @@ export interface D1Auth {
|
|
|
43
43
|
export const makeHttpQueryDatabaseClient = (
|
|
44
44
|
auth: D1Auth,
|
|
45
45
|
databaseId: Effect.Effect<string>,
|
|
46
|
-
): QueryDatabaseClient =>
|
|
47
|
-
|
|
46
|
+
): QueryDatabaseClient =>
|
|
47
|
+
makeQueryDatabaseClientFrom(
|
|
48
|
+
Effect.map(databaseId, (id) => makeHttpD1Database(auth, id)),
|
|
49
|
+
);
|
|
48
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Build a {@link QueryDatabaseClient} from a deferred `D1Database` — shared
|
|
53
|
+
* by the cloud HTTP transport above and the local-simulator gateway
|
|
54
|
+
* transport (`QueryDatabaseLocal` with a `dev:` id).
|
|
55
|
+
*/
|
|
56
|
+
export const makeQueryDatabaseClientFrom = (
|
|
57
|
+
rawEff: Effect.Effect<runtime.D1Database>,
|
|
58
|
+
): QueryDatabaseClient => {
|
|
49
59
|
return {
|
|
50
60
|
raw: rawEff,
|
|
51
61
|
prepare: (query: string) => new PreparedStatement(query, [], rawEff),
|
|
@@ -78,7 +88,9 @@ const runQuery = (
|
|
|
78
88
|
.pipe(Effect.runPromise);
|
|
79
89
|
|
|
80
90
|
const toResult = <T>(
|
|
81
|
-
r:
|
|
91
|
+
r:
|
|
92
|
+
| { results?: unknown; success?: boolean | null; meta?: unknown }
|
|
93
|
+
| undefined,
|
|
82
94
|
): runtime.D1Result<T> =>
|
|
83
95
|
({
|
|
84
96
|
results: (r?.results ?? []) as T[],
|
|
@@ -106,16 +118,40 @@ const normalizeBind = (value: unknown): unknown => {
|
|
|
106
118
|
return value;
|
|
107
119
|
};
|
|
108
120
|
|
|
109
|
-
|
|
121
|
+
/** A `D1Database` facade over the cloud HTTP query API. */
|
|
122
|
+
export const makeHttpD1Database = (
|
|
110
123
|
auth: D1Auth,
|
|
111
124
|
databaseId: string,
|
|
125
|
+
): runtime.D1Database =>
|
|
126
|
+
makeD1DatabaseFromTransport((body) => runQuery(auth, databaseId, body));
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* The transport a {@link runtime.D1Database} facade is built over: run one
|
|
130
|
+
* query (or batch) and return the D1 result envelope(s). Two transports
|
|
131
|
+
* exist — the cloud HTTP API (`runQuery`) and the local-simulator gateway
|
|
132
|
+
* (`withLocalD1Query`).
|
|
133
|
+
*/
|
|
134
|
+
export type D1QueryTransport = (
|
|
135
|
+
body:
|
|
136
|
+
| { sql: string; params?: unknown[] }
|
|
137
|
+
| { batch: { sql: string; params?: unknown[] }[] },
|
|
138
|
+
) => Promise<{
|
|
139
|
+
result: Array<{
|
|
140
|
+
results?: unknown;
|
|
141
|
+
success?: boolean | null;
|
|
142
|
+
meta?: unknown;
|
|
143
|
+
}>;
|
|
144
|
+
}>;
|
|
145
|
+
|
|
146
|
+
export const makeD1DatabaseFromTransport = (
|
|
147
|
+
transport: D1QueryTransport,
|
|
112
148
|
): runtime.D1Database => {
|
|
113
149
|
const makeStatement = (
|
|
114
150
|
query: string,
|
|
115
151
|
binds: ReadonlyArray<unknown>,
|
|
116
152
|
): runtime.D1PreparedStatement => {
|
|
117
153
|
const exec = async () => {
|
|
118
|
-
const res = await
|
|
154
|
+
const res = await transport({
|
|
119
155
|
sql: query,
|
|
120
156
|
params: binds.length ? binds.map(normalizeBind) : undefined,
|
|
121
157
|
});
|
|
@@ -124,9 +160,9 @@ const makeHttpD1Database = (
|
|
|
124
160
|
return {
|
|
125
161
|
bind: (...values: unknown[]) => makeStatement(query, values),
|
|
126
162
|
first: (async (column?: string) => {
|
|
127
|
-
const first = (
|
|
128
|
-
|
|
129
|
-
|
|
163
|
+
const first = (
|
|
164
|
+
(await exec())?.results as Record<string, unknown>[] | undefined
|
|
165
|
+
)?.[0];
|
|
130
166
|
if (first == null) return null;
|
|
131
167
|
return column !== undefined ? (first[column] ?? null) : first;
|
|
132
168
|
}) as runtime.D1PreparedStatement["first"],
|
|
@@ -154,15 +190,17 @@ const makeHttpD1Database = (
|
|
|
154
190
|
return {
|
|
155
191
|
prepare: (query: string) => makeStatement(query, []),
|
|
156
192
|
exec: async (query: string) => {
|
|
157
|
-
const res = await
|
|
158
|
-
const meta = res.result[res.result.length - 1]?.meta
|
|
193
|
+
const res = await transport({ sql: query });
|
|
194
|
+
const meta = res.result[res.result.length - 1]?.meta as
|
|
195
|
+
| { duration?: number }
|
|
196
|
+
| undefined;
|
|
159
197
|
return {
|
|
160
198
|
count: res.result.length,
|
|
161
199
|
duration: meta?.duration ?? 0,
|
|
162
200
|
} as runtime.D1ExecResult;
|
|
163
201
|
},
|
|
164
202
|
batch: async <T = unknown>(statements: runtime.D1PreparedStatement[]) => {
|
|
165
|
-
const res = await
|
|
203
|
+
const res = await transport({
|
|
166
204
|
batch: statements.map((s) => ({
|
|
167
205
|
sql: (s as any).__query as string,
|
|
168
206
|
params: ((s as any).__params as unknown[]).length
|