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.
Files changed (950) hide show
  1. package/bin/exec.js +433 -181
  2. package/bin/exec.js.map +1 -1
  3. package/lib/AWS/ApiGateway/common.d.ts.map +1 -1
  4. package/lib/AWS/ApiGateway/common.js +8 -1
  5. package/lib/AWS/ApiGateway/common.js.map +1 -1
  6. package/lib/AWS/Bedrock/LanguageModel.d.ts +208 -0
  7. package/lib/AWS/Bedrock/LanguageModel.d.ts.map +1 -0
  8. package/lib/AWS/Bedrock/LanguageModel.js +508 -0
  9. package/lib/AWS/Bedrock/LanguageModel.js.map +1 -0
  10. package/lib/AWS/Bedrock/LanguageModelHttp.d.ts +10 -0
  11. package/lib/AWS/Bedrock/LanguageModelHttp.d.ts.map +1 -0
  12. package/lib/AWS/Bedrock/LanguageModelHttp.js +26 -0
  13. package/lib/AWS/Bedrock/LanguageModelHttp.js.map +1 -0
  14. package/lib/AWS/Bedrock/index.d.ts +2 -0
  15. package/lib/AWS/Bedrock/index.d.ts.map +1 -1
  16. package/lib/AWS/Bedrock/index.js +2 -0
  17. package/lib/AWS/Bedrock/index.js.map +1 -1
  18. package/lib/AWS/CloudFront/Distribution.d.ts +24 -0
  19. package/lib/AWS/CloudFront/Distribution.d.ts.map +1 -1
  20. package/lib/AWS/CloudFront/Distribution.js +89 -4
  21. package/lib/AWS/CloudFront/Distribution.js.map +1 -1
  22. package/lib/AWS/CostExplorer/AnomalyMonitor.d.ts +1 -1
  23. package/lib/AWS/CostExplorer/AnomalyMonitor.d.ts.map +1 -1
  24. package/lib/AWS/CostExplorer/AnomalySubscription.d.ts +1 -1
  25. package/lib/AWS/CostExplorer/AnomalySubscription.d.ts.map +1 -1
  26. package/lib/AWS/CostExplorer/BindingHttp.d.ts +3 -3
  27. package/lib/AWS/CostExplorer/BindingHttp.d.ts.map +1 -1
  28. package/lib/AWS/CostExplorer/CostCategory.d.ts +1 -1
  29. package/lib/AWS/CostExplorer/CostCategory.d.ts.map +1 -1
  30. package/lib/AWS/CostExplorer/GetAnomaliesHttp.d.ts +1 -1
  31. package/lib/AWS/CostExplorer/GetAnomaliesHttp.d.ts.map +1 -1
  32. package/lib/AWS/CostExplorer/GetApproximateUsageRecordsHttp.d.ts +1 -1
  33. package/lib/AWS/CostExplorer/GetApproximateUsageRecordsHttp.d.ts.map +1 -1
  34. package/lib/AWS/CostExplorer/GetCommitmentPurchaseAnalysisHttp.d.ts +1 -1
  35. package/lib/AWS/CostExplorer/GetCommitmentPurchaseAnalysisHttp.d.ts.map +1 -1
  36. package/lib/AWS/CostExplorer/GetCostAndUsageComparisonsHttp.d.ts +1 -1
  37. package/lib/AWS/CostExplorer/GetCostAndUsageComparisonsHttp.d.ts.map +1 -1
  38. package/lib/AWS/CostExplorer/GetCostAndUsageHttp.d.ts +1 -1
  39. package/lib/AWS/CostExplorer/GetCostAndUsageHttp.d.ts.map +1 -1
  40. package/lib/AWS/CostExplorer/GetCostAndUsageWithResourcesHttp.d.ts +1 -1
  41. package/lib/AWS/CostExplorer/GetCostAndUsageWithResourcesHttp.d.ts.map +1 -1
  42. package/lib/AWS/CostExplorer/GetCostCategoriesHttp.d.ts +1 -1
  43. package/lib/AWS/CostExplorer/GetCostCategoriesHttp.d.ts.map +1 -1
  44. package/lib/AWS/CostExplorer/GetCostComparisonDriversHttp.d.ts +1 -1
  45. package/lib/AWS/CostExplorer/GetCostComparisonDriversHttp.d.ts.map +1 -1
  46. package/lib/AWS/CostExplorer/GetCostForecastHttp.d.ts +1 -1
  47. package/lib/AWS/CostExplorer/GetCostForecastHttp.d.ts.map +1 -1
  48. package/lib/AWS/CostExplorer/GetDimensionValuesHttp.d.ts +1 -1
  49. package/lib/AWS/CostExplorer/GetDimensionValuesHttp.d.ts.map +1 -1
  50. package/lib/AWS/CostExplorer/GetReservationCoverageHttp.d.ts +1 -1
  51. package/lib/AWS/CostExplorer/GetReservationCoverageHttp.d.ts.map +1 -1
  52. package/lib/AWS/CostExplorer/GetReservationPurchaseRecommendationHttp.d.ts +1 -1
  53. package/lib/AWS/CostExplorer/GetReservationPurchaseRecommendationHttp.d.ts.map +1 -1
  54. package/lib/AWS/CostExplorer/GetReservationUtilizationHttp.d.ts +1 -1
  55. package/lib/AWS/CostExplorer/GetReservationUtilizationHttp.d.ts.map +1 -1
  56. package/lib/AWS/CostExplorer/GetRightsizingRecommendationHttp.d.ts +1 -1
  57. package/lib/AWS/CostExplorer/GetRightsizingRecommendationHttp.d.ts.map +1 -1
  58. package/lib/AWS/CostExplorer/GetSavingsPlanPurchaseRecommendationDetailsHttp.d.ts +1 -1
  59. package/lib/AWS/CostExplorer/GetSavingsPlanPurchaseRecommendationDetailsHttp.d.ts.map +1 -1
  60. package/lib/AWS/CostExplorer/GetSavingsPlansCoverageHttp.d.ts +1 -1
  61. package/lib/AWS/CostExplorer/GetSavingsPlansCoverageHttp.d.ts.map +1 -1
  62. package/lib/AWS/CostExplorer/GetSavingsPlansPurchaseRecommendationHttp.d.ts +1 -1
  63. package/lib/AWS/CostExplorer/GetSavingsPlansPurchaseRecommendationHttp.d.ts.map +1 -1
  64. package/lib/AWS/CostExplorer/GetSavingsPlansUtilizationDetailsHttp.d.ts +1 -1
  65. package/lib/AWS/CostExplorer/GetSavingsPlansUtilizationDetailsHttp.d.ts.map +1 -1
  66. package/lib/AWS/CostExplorer/GetSavingsPlansUtilizationHttp.d.ts +1 -1
  67. package/lib/AWS/CostExplorer/GetSavingsPlansUtilizationHttp.d.ts.map +1 -1
  68. package/lib/AWS/CostExplorer/GetTagsHttp.d.ts +1 -1
  69. package/lib/AWS/CostExplorer/GetTagsHttp.d.ts.map +1 -1
  70. package/lib/AWS/CostExplorer/GetUsageForecastHttp.d.ts +1 -1
  71. package/lib/AWS/CostExplorer/GetUsageForecastHttp.d.ts.map +1 -1
  72. package/lib/AWS/CostExplorer/ListCommitmentPurchaseAnalysesHttp.d.ts +1 -1
  73. package/lib/AWS/CostExplorer/ListCommitmentPurchaseAnalysesHttp.d.ts.map +1 -1
  74. package/lib/AWS/CostExplorer/ListCostAllocationTagBackfillHistoryHttp.d.ts +1 -1
  75. package/lib/AWS/CostExplorer/ListCostAllocationTagBackfillHistoryHttp.d.ts.map +1 -1
  76. package/lib/AWS/CostExplorer/ListCostAllocationTagsHttp.d.ts +1 -1
  77. package/lib/AWS/CostExplorer/ListCostAllocationTagsHttp.d.ts.map +1 -1
  78. package/lib/AWS/CostExplorer/ListCostCategoryResourceAssociationsHttp.d.ts +1 -1
  79. package/lib/AWS/CostExplorer/ListCostCategoryResourceAssociationsHttp.d.ts.map +1 -1
  80. package/lib/AWS/CostExplorer/ListSavingsPlansPurchaseRecommendationGenerationHttp.d.ts +1 -1
  81. package/lib/AWS/CostExplorer/ListSavingsPlansPurchaseRecommendationGenerationHttp.d.ts.map +1 -1
  82. package/lib/AWS/CostExplorer/ProvideAnomalyFeedbackHttp.d.ts +1 -1
  83. package/lib/AWS/CostExplorer/ProvideAnomalyFeedbackHttp.d.ts.map +1 -1
  84. package/lib/AWS/CostExplorer/StartCommitmentPurchaseAnalysisHttp.d.ts +1 -1
  85. package/lib/AWS/CostExplorer/StartCommitmentPurchaseAnalysisHttp.d.ts.map +1 -1
  86. package/lib/AWS/CostExplorer/StartCostAllocationTagBackfillHttp.d.ts +1 -1
  87. package/lib/AWS/CostExplorer/StartCostAllocationTagBackfillHttp.d.ts.map +1 -1
  88. package/lib/AWS/CostExplorer/StartSavingsPlansPurchaseRecommendationGenerationHttp.d.ts +1 -1
  89. package/lib/AWS/CostExplorer/StartSavingsPlansPurchaseRecommendationGenerationHttp.d.ts.map +1 -1
  90. package/lib/AWS/CostExplorer/UpdateCostAllocationTagsStatusHttp.d.ts +1 -1
  91. package/lib/AWS/CostExplorer/UpdateCostAllocationTagsStatusHttp.d.ts.map +1 -1
  92. package/lib/AWS/CostExplorer/common.d.ts +5 -3
  93. package/lib/AWS/CostExplorer/common.d.ts.map +1 -1
  94. package/lib/AWS/CostExplorer/common.js +16 -1
  95. package/lib/AWS/CostExplorer/common.js.map +1 -1
  96. package/lib/AWS/DataSync/Task.d.ts.map +1 -1
  97. package/lib/AWS/DataSync/Task.js +16 -2
  98. package/lib/AWS/DataSync/Task.js.map +1 -1
  99. package/lib/AWS/EC2/Vpc.d.ts.map +1 -1
  100. package/lib/AWS/EC2/Vpc.js +15 -2
  101. package/lib/AWS/EC2/Vpc.js.map +1 -1
  102. package/lib/AWS/EC2/hosted.d.ts.map +1 -1
  103. package/lib/AWS/EC2/hosted.js +10 -2
  104. package/lib/AWS/EC2/hosted.js.map +1 -1
  105. package/lib/AWS/ECR/Image.d.ts +132 -13
  106. package/lib/AWS/ECR/Image.d.ts.map +1 -1
  107. package/lib/AWS/ECR/ImageSource.d.ts.map +1 -1
  108. package/lib/AWS/ECR/ImageSource.js +10 -2
  109. package/lib/AWS/ECR/ImageSource.js.map +1 -1
  110. package/lib/AWS/ECR/Repository.d.ts +2 -0
  111. package/lib/AWS/ECR/Repository.d.ts.map +1 -1
  112. package/lib/AWS/ECR/Repository.js +28 -3
  113. package/lib/AWS/ECR/Repository.js.map +1 -1
  114. package/lib/AWS/ECS/Service.d.ts +27 -1
  115. package/lib/AWS/ECS/Service.d.ts.map +1 -1
  116. package/lib/AWS/ECS/Service.js +184 -22
  117. package/lib/AWS/ECS/Service.js.map +1 -1
  118. package/lib/AWS/ECS/Task.d.ts +32 -8
  119. package/lib/AWS/ECS/Task.d.ts.map +1 -1
  120. package/lib/AWS/ECS/Task.js +62 -29
  121. package/lib/AWS/ECS/Task.js.map +1 -1
  122. package/lib/AWS/EKS/Deployment.d.ts.map +1 -1
  123. package/lib/AWS/EKS/Deployment.js +10 -2
  124. package/lib/AWS/EKS/Deployment.js.map +1 -1
  125. package/lib/AWS/EKS/Job.d.ts.map +1 -1
  126. package/lib/AWS/EKS/Job.js +10 -2
  127. package/lib/AWS/EKS/Job.js.map +1 -1
  128. package/lib/AWS/Lambda/Function.d.ts +15 -0
  129. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  130. package/lib/AWS/Lambda/Function.js +67 -29
  131. package/lib/AWS/Lambda/Function.js.map +1 -1
  132. package/lib/AWS/Lambda/HttpServer.d.ts.map +1 -1
  133. package/lib/AWS/Lambda/HttpServer.js +7 -1
  134. package/lib/AWS/Lambda/HttpServer.js.map +1 -1
  135. package/lib/AWS/Lambda/LayerVersion.d.ts +176 -0
  136. package/lib/AWS/Lambda/LayerVersion.d.ts.map +1 -0
  137. package/lib/AWS/Lambda/LayerVersion.js +288 -0
  138. package/lib/AWS/Lambda/LayerVersion.js.map +1 -0
  139. package/lib/AWS/Lambda/MicrovmBundle.d.ts.map +1 -1
  140. package/lib/AWS/Lambda/MicrovmBundle.js +10 -2
  141. package/lib/AWS/Lambda/MicrovmBundle.js.map +1 -1
  142. package/lib/AWS/Lambda/index.d.ts +1 -0
  143. package/lib/AWS/Lambda/index.d.ts.map +1 -1
  144. package/lib/AWS/Lambda/index.js +1 -0
  145. package/lib/AWS/Lambda/index.js.map +1 -1
  146. package/lib/AWS/Providers.d.ts.map +1 -1
  147. package/lib/AWS/Providers.js +6 -1
  148. package/lib/AWS/Providers.js.map +1 -1
  149. package/lib/AWS/SES/ActiveReceiptRuleSet.d.ts +40 -0
  150. package/lib/AWS/SES/ActiveReceiptRuleSet.d.ts.map +1 -0
  151. package/lib/AWS/SES/ActiveReceiptRuleSet.js +58 -0
  152. package/lib/AWS/SES/ActiveReceiptRuleSet.js.map +1 -0
  153. package/lib/AWS/SES/ReceiptFilter.d.ts +67 -0
  154. package/lib/AWS/SES/ReceiptFilter.d.ts.map +1 -0
  155. package/lib/AWS/SES/ReceiptFilter.js +92 -0
  156. package/lib/AWS/SES/ReceiptFilter.js.map +1 -0
  157. package/lib/AWS/SES/ReceiptRule.d.ts +133 -0
  158. package/lib/AWS/SES/ReceiptRule.d.ts.map +1 -0
  159. package/lib/AWS/SES/ReceiptRule.js +178 -0
  160. package/lib/AWS/SES/ReceiptRule.js.map +1 -0
  161. package/lib/AWS/SES/ReceiptRuleSet.d.ts +55 -0
  162. package/lib/AWS/SES/ReceiptRuleSet.d.ts.map +1 -0
  163. package/lib/AWS/SES/ReceiptRuleSet.js +112 -0
  164. package/lib/AWS/SES/ReceiptRuleSet.js.map +1 -0
  165. package/lib/AWS/SES/SendBounce.d.ts +37 -0
  166. package/lib/AWS/SES/SendBounce.d.ts.map +1 -0
  167. package/lib/AWS/SES/SendBounce.js +3 -0
  168. package/lib/AWS/SES/SendBounce.js.map +1 -0
  169. package/lib/AWS/SES/SendBounceHttp.d.ts +4 -0
  170. package/lib/AWS/SES/SendBounceHttp.d.ts.map +1 -0
  171. package/lib/AWS/SES/SendBounceHttp.js +10 -0
  172. package/lib/AWS/SES/SendBounceHttp.js.map +1 -0
  173. package/lib/AWS/SES/index.d.ts +6 -0
  174. package/lib/AWS/SES/index.d.ts.map +1 -1
  175. package/lib/AWS/SES/index.js +6 -0
  176. package/lib/AWS/SES/index.js.map +1 -1
  177. package/lib/AWS/StateStore/State.d.ts +11 -0
  178. package/lib/AWS/StateStore/State.d.ts.map +1 -1
  179. package/lib/AWS/StateStore/State.js +117 -38
  180. package/lib/AWS/StateStore/State.js.map +1 -1
  181. package/lib/Apply.d.ts +37 -1
  182. package/lib/Apply.d.ts.map +1 -1
  183. package/lib/Apply.js +270 -194
  184. package/lib/Apply.js.map +1 -1
  185. package/lib/Axiom/Telemetry.d.ts +66 -0
  186. package/lib/Axiom/Telemetry.d.ts.map +1 -0
  187. package/lib/Axiom/Telemetry.js +69 -0
  188. package/lib/Axiom/Telemetry.js.map +1 -0
  189. package/lib/Axiom/index.d.ts +1 -0
  190. package/lib/Axiom/index.d.ts.map +1 -1
  191. package/lib/Axiom/index.js +1 -0
  192. package/lib/Axiom/index.js.map +1 -1
  193. package/lib/Bundle/Bundle.d.ts +1 -1
  194. package/lib/Bundle/Bundle.d.ts.map +1 -1
  195. package/lib/Bundle/Bundle.js +14 -6
  196. package/lib/Bundle/Bundle.js.map +1 -1
  197. package/lib/Bundle/BundleAnalyzerPlugin.d.ts +1 -1
  198. package/lib/Bundle/BundleAnalyzerPlugin.d.ts.map +1 -1
  199. package/lib/Bundle/BundleAnalyzerPlugin.js +10 -5
  200. package/lib/Bundle/BundleAnalyzerPlugin.js.map +1 -1
  201. package/lib/Bundle/PurePlugin.d.ts +1 -1
  202. package/lib/Bundle/PurePlugin.d.ts.map +1 -1
  203. package/lib/Bundle/PurePlugin.js +15 -7
  204. package/lib/Bundle/PurePlugin.js.map +1 -1
  205. package/lib/Cli/checkVersion.d.ts +11 -5
  206. package/lib/Cli/checkVersion.d.ts.map +1 -1
  207. package/lib/Cli/checkVersion.js +73 -12
  208. package/lib/Cli/checkVersion.js.map +1 -1
  209. package/lib/Cli/commands/cloudflare.d.ts +1 -1
  210. package/lib/Cli/commands/deploy.d.ts.map +1 -1
  211. package/lib/Cli/commands/deploy.js +3 -11
  212. package/lib/Cli/commands/deploy.js.map +1 -1
  213. package/lib/Cli/commands/logs.d.ts.map +1 -1
  214. package/lib/Cli/commands/logs.js +3 -1
  215. package/lib/Cli/commands/logs.js.map +1 -1
  216. package/lib/Cli/commands/tail.d.ts.map +1 -1
  217. package/lib/Cli/commands/tail.js +3 -1
  218. package/lib/Cli/commands/tail.js.map +1 -1
  219. package/lib/Cli/main.d.ts.map +1 -1
  220. package/lib/Cli/main.js +5 -4
  221. package/lib/Cli/main.js.map +1 -1
  222. package/lib/Cloudflare/AI/Search.d.ts +4 -15
  223. package/lib/Cloudflare/AI/Search.d.ts.map +1 -1
  224. package/lib/Cloudflare/AI/Search.js +4 -6
  225. package/lib/Cloudflare/AI/Search.js.map +1 -1
  226. package/lib/Cloudflare/AI/SearchInstance.d.ts +7 -26
  227. package/lib/Cloudflare/AI/SearchInstance.d.ts.map +1 -1
  228. package/lib/Cloudflare/AI/SearchInstance.js +7 -26
  229. package/lib/Cloudflare/AI/SearchInstance.js.map +1 -1
  230. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts +3 -0
  231. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
  232. package/lib/Cloudflare/ApiToken/AccountApiToken.js +3 -0
  233. package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
  234. package/lib/Cloudflare/Auth/AuthProvider.d.ts +2 -1
  235. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  236. package/lib/Cloudflare/Auth/AuthProvider.js +8 -3
  237. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  238. package/lib/Cloudflare/Auth/OAuthClient.d.ts +5 -0
  239. package/lib/Cloudflare/Auth/OAuthClient.d.ts.map +1 -1
  240. package/lib/Cloudflare/Auth/OAuthClient.js +50 -4
  241. package/lib/Cloudflare/Auth/OAuthClient.js.map +1 -1
  242. package/lib/Cloudflare/Containers/Container.d.ts +81 -3
  243. package/lib/Cloudflare/Containers/Container.d.ts.map +1 -1
  244. package/lib/Cloudflare/Containers/Container.js +70 -0
  245. package/lib/Cloudflare/Containers/Container.js.map +1 -1
  246. package/lib/Cloudflare/Containers/ContainerApplication.d.ts +22 -1
  247. package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
  248. package/lib/Cloudflare/Containers/ContainerApplication.js +4 -1
  249. package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
  250. package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
  251. package/lib/Cloudflare/Containers/ContainerBundle.js +10 -2
  252. package/lib/Cloudflare/Containers/ContainerBundle.js.map +1 -1
  253. package/lib/Cloudflare/Containers/ContainerProvider.d.ts.map +1 -1
  254. package/lib/Cloudflare/Containers/ContainerProvider.js +43 -0
  255. package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
  256. package/lib/Cloudflare/Credentials.d.ts +21 -1
  257. package/lib/Cloudflare/Credentials.d.ts.map +1 -1
  258. package/lib/Cloudflare/Credentials.js +52 -9
  259. package/lib/Cloudflare/Credentials.js.map +1 -1
  260. package/lib/Cloudflare/D1/ApplyMigrations.d.ts +30 -5
  261. package/lib/Cloudflare/D1/ApplyMigrations.d.ts.map +1 -1
  262. package/lib/Cloudflare/D1/ApplyMigrations.js +36 -26
  263. package/lib/Cloudflare/D1/ApplyMigrations.js.map +1 -1
  264. package/lib/Cloudflare/D1/Database.d.ts +18 -1
  265. package/lib/Cloudflare/D1/Database.d.ts.map +1 -1
  266. package/lib/Cloudflare/D1/Database.js +134 -2
  267. package/lib/Cloudflare/D1/Database.js.map +1 -1
  268. package/lib/Cloudflare/D1/LocalD1Gateway.d.ts +39 -0
  269. package/lib/Cloudflare/D1/LocalD1Gateway.d.ts.map +1 -0
  270. package/lib/Cloudflare/D1/LocalD1Gateway.js +100 -0
  271. package/lib/Cloudflare/D1/LocalD1Gateway.js.map +1 -0
  272. package/lib/Cloudflare/D1/QueryDatabaseHttpClient.d.ts +31 -0
  273. package/lib/Cloudflare/D1/QueryDatabaseHttpClient.d.ts.map +1 -1
  274. package/lib/Cloudflare/D1/QueryDatabaseHttpClient.js +13 -6
  275. package/lib/Cloudflare/D1/QueryDatabaseHttpClient.js.map +1 -1
  276. package/lib/Cloudflare/D1/QueryDatabaseLocal.d.ts.map +1 -1
  277. package/lib/Cloudflare/D1/QueryDatabaseLocal.js +21 -2
  278. package/lib/Cloudflare/D1/QueryDatabaseLocal.js.map +1 -1
  279. package/lib/Cloudflare/Email/Address.d.ts.map +1 -1
  280. package/lib/Cloudflare/Email/Address.js +15 -1
  281. package/lib/Cloudflare/Email/Address.js.map +1 -1
  282. package/lib/Cloudflare/Email/SendBinding.d.ts.map +1 -1
  283. package/lib/Cloudflare/Email/SendBinding.js +1 -0
  284. package/lib/Cloudflare/Email/SendBinding.js.map +1 -1
  285. package/lib/Cloudflare/Email/SendEmail.d.ts +12 -0
  286. package/lib/Cloudflare/Email/SendEmail.d.ts.map +1 -1
  287. package/lib/Cloudflare/Email/SendEmail.js +1 -0
  288. package/lib/Cloudflare/Email/SendEmail.js.map +1 -1
  289. package/lib/Cloudflare/Flagship/App.d.ts.map +1 -1
  290. package/lib/Cloudflare/Flagship/App.js +8 -3
  291. package/lib/Cloudflare/Flagship/App.js.map +1 -1
  292. package/lib/Cloudflare/KV/LocalKVGateway.d.ts +15 -0
  293. package/lib/Cloudflare/KV/LocalKVGateway.d.ts.map +1 -0
  294. package/lib/Cloudflare/KV/LocalKVGateway.js +64 -0
  295. package/lib/Cloudflare/KV/LocalKVGateway.js.map +1 -0
  296. package/lib/Cloudflare/KV/Namespace.d.ts +9 -1
  297. package/lib/Cloudflare/KV/Namespace.d.ts.map +1 -1
  298. package/lib/Cloudflare/KV/Namespace.js +45 -1
  299. package/lib/Cloudflare/KV/Namespace.js.map +1 -1
  300. package/lib/Cloudflare/KV/NamespaceLocal.d.ts +16 -5
  301. package/lib/Cloudflare/KV/NamespaceLocal.d.ts.map +1 -1
  302. package/lib/Cloudflare/KV/NamespaceLocal.js +21 -4
  303. package/lib/Cloudflare/KV/NamespaceLocal.js.map +1 -1
  304. package/lib/Cloudflare/KV/ReadNamespaceLocal.d.ts.map +1 -1
  305. package/lib/Cloudflare/KV/ReadNamespaceLocal.js +5 -1
  306. package/lib/Cloudflare/KV/ReadNamespaceLocal.js.map +1 -1
  307. package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.d.ts.map +1 -1
  308. package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.js +5 -1
  309. package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.js.map +1 -1
  310. package/lib/Cloudflare/KV/WriteNamespaceLocal.d.ts.map +1 -1
  311. package/lib/Cloudflare/KV/WriteNamespaceLocal.js +5 -1
  312. package/lib/Cloudflare/KV/WriteNamespaceLocal.js.map +1 -1
  313. package/lib/Cloudflare/LocalGateway.d.ts +25 -0
  314. package/lib/Cloudflare/LocalGateway.d.ts.map +1 -0
  315. package/lib/Cloudflare/LocalGateway.js +70 -0
  316. package/lib/Cloudflare/LocalGateway.js.map +1 -0
  317. package/lib/Cloudflare/LocalRuntime.d.ts +14 -1
  318. package/lib/Cloudflare/LocalRuntime.d.ts.map +1 -1
  319. package/lib/Cloudflare/LocalRuntime.js +16 -1
  320. package/lib/Cloudflare/LocalRuntime.js.map +1 -1
  321. package/lib/Cloudflare/Logs.d.ts.map +1 -1
  322. package/lib/Cloudflare/Logs.js +18 -6
  323. package/lib/Cloudflare/Logs.js.map +1 -1
  324. package/lib/Cloudflare/Providers.d.ts +1 -1
  325. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  326. package/lib/Cloudflare/Providers.js +6 -2
  327. package/lib/Cloudflare/Providers.js.map +1 -1
  328. package/lib/Cloudflare/Queues/Consumer.d.ts +16 -3
  329. package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
  330. package/lib/Cloudflare/Queues/Consumer.js +51 -3
  331. package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
  332. package/lib/Cloudflare/Queues/Queue.d.ts +4 -3
  333. package/lib/Cloudflare/Queues/Queue.d.ts.map +1 -1
  334. package/lib/Cloudflare/Queues/Queue.js +7 -17
  335. package/lib/Cloudflare/Queues/Queue.js.map +1 -1
  336. package/lib/Cloudflare/Queues/QueueBinding.d.ts.map +1 -1
  337. package/lib/Cloudflare/Queues/QueueBinding.js +19 -0
  338. package/lib/Cloudflare/Queues/QueueBinding.js.map +1 -1
  339. package/lib/Cloudflare/Queues/QueueShim.d.ts +55 -0
  340. package/lib/Cloudflare/Queues/QueueShim.d.ts.map +1 -0
  341. package/lib/Cloudflare/Queues/QueueShim.js +177 -0
  342. package/lib/Cloudflare/Queues/QueueShim.js.map +1 -0
  343. package/lib/Cloudflare/R2/Bucket.d.ts +14 -1
  344. package/lib/Cloudflare/R2/Bucket.d.ts.map +1 -1
  345. package/lib/Cloudflare/R2/Bucket.js +53 -1
  346. package/lib/Cloudflare/R2/Bucket.js.map +1 -1
  347. package/lib/Cloudflare/R2/BucketBinding.d.ts +10 -0
  348. package/lib/Cloudflare/R2/BucketBinding.d.ts.map +1 -1
  349. package/lib/Cloudflare/R2/BucketBinding.js +14 -3
  350. package/lib/Cloudflare/R2/BucketBinding.js.map +1 -1
  351. package/lib/Cloudflare/R2/BucketLocal.d.ts +13 -6
  352. package/lib/Cloudflare/R2/BucketLocal.d.ts.map +1 -1
  353. package/lib/Cloudflare/R2/BucketLocal.js +19 -6
  354. package/lib/Cloudflare/R2/BucketLocal.js.map +1 -1
  355. package/lib/Cloudflare/R2/LocalR2Gateway.d.ts +15 -0
  356. package/lib/Cloudflare/R2/LocalR2Gateway.d.ts.map +1 -0
  357. package/lib/Cloudflare/R2/LocalR2Gateway.js +65 -0
  358. package/lib/Cloudflare/R2/LocalR2Gateway.js.map +1 -0
  359. package/lib/Cloudflare/R2/ReadBucketLocal.d.ts.map +1 -1
  360. package/lib/Cloudflare/R2/ReadBucketLocal.js +5 -1
  361. package/lib/Cloudflare/R2/ReadBucketLocal.js.map +1 -1
  362. package/lib/Cloudflare/R2/ReadWriteBucketLocal.d.ts.map +1 -1
  363. package/lib/Cloudflare/R2/ReadWriteBucketLocal.js +5 -1
  364. package/lib/Cloudflare/R2/ReadWriteBucketLocal.js.map +1 -1
  365. package/lib/Cloudflare/R2/WriteBucketLocal.d.ts.map +1 -1
  366. package/lib/Cloudflare/R2/WriteBucketLocal.js +5 -1
  367. package/lib/Cloudflare/R2/WriteBucketLocal.js.map +1 -1
  368. package/lib/Cloudflare/Ruleset/AccountEntrypoint.d.ts.map +1 -1
  369. package/lib/Cloudflare/Ruleset/AccountEntrypoint.js +5 -1
  370. package/lib/Cloudflare/Ruleset/AccountEntrypoint.js.map +1 -1
  371. package/lib/Cloudflare/Ruleset/Ruleset.d.ts.map +1 -1
  372. package/lib/Cloudflare/Ruleset/Ruleset.js +19 -6
  373. package/lib/Cloudflare/Ruleset/Ruleset.js.map +1 -1
  374. package/lib/Cloudflare/Rum/Site.js +10 -2
  375. package/lib/Cloudflare/Rum/Site.js.map +1 -1
  376. package/lib/Cloudflare/StateStore/Api.d.ts +31 -2
  377. package/lib/Cloudflare/StateStore/Api.js +1 -1
  378. package/lib/Cloudflare/StateStore/Api.js.map +1 -1
  379. package/lib/Cloudflare/StateStore/State.d.ts +1 -1
  380. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  381. package/lib/Cloudflare/Tunnel/Tunnel.d.ts.map +1 -1
  382. package/lib/Cloudflare/Tunnel/Tunnel.js +20 -1
  383. package/lib/Cloudflare/Tunnel/Tunnel.js.map +1 -1
  384. package/lib/Cloudflare/Website/StaticSite.d.ts +34 -7
  385. package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
  386. package/lib/Cloudflare/Website/StaticSite.js +108 -24
  387. package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
  388. package/lib/Cloudflare/Website/Vite.d.ts +33 -19
  389. package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
  390. package/lib/Cloudflare/Website/Vite.js +33 -19
  391. package/lib/Cloudflare/Website/Vite.js.map +1 -1
  392. package/lib/Cloudflare/Workers/Compatibility.d.ts.map +1 -1
  393. package/lib/Cloudflare/Workers/Compatibility.js +26 -7
  394. package/lib/Cloudflare/Workers/Compatibility.js.map +1 -1
  395. package/lib/Cloudflare/Workers/DurableObject.d.ts +22 -0
  396. package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
  397. package/lib/Cloudflare/Workers/DurableObject.js +22 -0
  398. package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
  399. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  400. package/lib/Cloudflare/Workers/DurableObjectBridge.js +20 -5
  401. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  402. package/lib/Cloudflare/Workers/InferEnv.d.ts +4 -2
  403. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  404. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +7 -3
  405. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  406. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +483 -298
  407. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  408. package/lib/Cloudflare/Workers/Worker.d.ts +612 -13
  409. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  410. package/lib/Cloudflare/Workers/Worker.js +222 -1
  411. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  412. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +13 -1
  413. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  414. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +171 -21
  415. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  416. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +130 -28
  417. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  418. package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
  419. package/lib/Cloudflare/Workers/WorkerBridge.d.ts +6 -2
  420. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  421. package/lib/Cloudflare/Workers/WorkerBridge.js +18 -2
  422. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  423. package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
  424. package/lib/Cloudflare/Workers/WorkerBundle.js +4 -1
  425. package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
  426. package/lib/Cloudflare/Workers/WorkerProvider.d.ts +186 -11
  427. package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
  428. package/lib/Cloudflare/Workers/WorkerProvider.js +1765 -236
  429. package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
  430. package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts +7 -1
  431. package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
  432. package/lib/Cloudflare/Workflows/WorkflowBridge.js +14 -4
  433. package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
  434. package/lib/Command/Build.d.ts +2 -2
  435. package/lib/Command/Build.d.ts.map +1 -1
  436. package/lib/Command/Build.js +4 -7
  437. package/lib/Command/Build.js.map +1 -1
  438. package/lib/Command/Command.d.ts +34 -4
  439. package/lib/Command/Command.d.ts.map +1 -1
  440. package/lib/Command/Command.js +125 -30
  441. package/lib/Command/Command.js.map +1 -1
  442. package/lib/Command/Dev.d.ts +2 -2
  443. package/lib/Command/Dev.d.ts.map +1 -1
  444. package/lib/Command/Dev.js +51 -73
  445. package/lib/Command/Dev.js.map +1 -1
  446. package/lib/Command/Exec.d.ts +11 -2
  447. package/lib/Command/Exec.d.ts.map +1 -1
  448. package/lib/Command/Exec.js +9 -0
  449. package/lib/Command/Exec.js.map +1 -1
  450. package/lib/Command/Memo.d.ts +9 -1
  451. package/lib/Command/Memo.d.ts.map +1 -1
  452. package/lib/Command/Memo.js +14 -2
  453. package/lib/Command/Memo.js.map +1 -1
  454. package/lib/Command/Providers.d.ts +1 -1
  455. package/lib/Command/Providers.d.ts.map +1 -1
  456. package/lib/Command/Redaction.d.ts +10 -0
  457. package/lib/Command/Redaction.d.ts.map +1 -0
  458. package/lib/Command/Redaction.js +119 -0
  459. package/lib/Command/Redaction.js.map +1 -0
  460. package/lib/Deploy.d.ts +2 -1
  461. package/lib/Deploy.d.ts.map +1 -1
  462. package/lib/Destroy.d.ts +2 -1
  463. package/lib/Destroy.d.ts.map +1 -1
  464. package/lib/Destroy.js +1 -9
  465. package/lib/Destroy.js.map +1 -1
  466. package/lib/Docker/Container.d.ts +15 -1
  467. package/lib/Docker/Container.d.ts.map +1 -1
  468. package/lib/Docker/Container.js +34 -11
  469. package/lib/Docker/Container.js.map +1 -1
  470. package/lib/Docker/Context.d.ts +84 -0
  471. package/lib/Docker/Context.d.ts.map +1 -0
  472. package/lib/Docker/Context.js +145 -0
  473. package/lib/Docker/Context.js.map +1 -0
  474. package/lib/Docker/Docker.d.ts +190 -14
  475. package/lib/Docker/Docker.d.ts.map +1 -1
  476. package/lib/Docker/Docker.js +149 -28
  477. package/lib/Docker/Docker.js.map +1 -1
  478. package/lib/Docker/Image.d.ts +12 -0
  479. package/lib/Docker/Image.d.ts.map +1 -1
  480. package/lib/Docker/Image.js +24 -7
  481. package/lib/Docker/Image.js.map +1 -1
  482. package/lib/Docker/Network.d.ts +7 -0
  483. package/lib/Docker/Network.d.ts.map +1 -1
  484. package/lib/Docker/Network.js +16 -7
  485. package/lib/Docker/Network.js.map +1 -1
  486. package/lib/Docker/Providers.d.ts +1 -1
  487. package/lib/Docker/Providers.d.ts.map +1 -1
  488. package/lib/Docker/Providers.js +13 -1
  489. package/lib/Docker/Providers.js.map +1 -1
  490. package/lib/Docker/RemoteImage.d.ts +12 -0
  491. package/lib/Docker/RemoteImage.d.ts.map +1 -1
  492. package/lib/Docker/RemoteImage.js +22 -8
  493. package/lib/Docker/RemoteImage.js.map +1 -1
  494. package/lib/Docker/Service.d.ts +445 -0
  495. package/lib/Docker/Service.d.ts.map +1 -0
  496. package/lib/Docker/Service.js +578 -0
  497. package/lib/Docker/Service.js.map +1 -0
  498. package/lib/Docker/ServiceImage.d.ts +78 -0
  499. package/lib/Docker/ServiceImage.d.ts.map +1 -0
  500. package/lib/Docker/ServiceImage.js +232 -0
  501. package/lib/Docker/ServiceImage.js.map +1 -0
  502. package/lib/Docker/Swarm.d.ts +117 -0
  503. package/lib/Docker/Swarm.d.ts.map +1 -0
  504. package/lib/Docker/Swarm.js +149 -0
  505. package/lib/Docker/Swarm.js.map +1 -0
  506. package/lib/Docker/Volume.d.ts +11 -0
  507. package/lib/Docker/Volume.d.ts.map +1 -1
  508. package/lib/Docker/Volume.js +21 -6
  509. package/lib/Docker/Volume.js.map +1 -1
  510. package/lib/Docker/index.d.ts +3 -0
  511. package/lib/Docker/index.d.ts.map +1 -1
  512. package/lib/Docker/index.js +3 -0
  513. package/lib/Docker/index.js.map +1 -1
  514. package/lib/Http.d.ts +8 -1
  515. package/lib/Http.d.ts.map +1 -1
  516. package/lib/Http.js +7 -2
  517. package/lib/Http.js.map +1 -1
  518. package/lib/Local/LocalProvider.d.ts +182 -0
  519. package/lib/Local/LocalProvider.d.ts.map +1 -0
  520. package/lib/Local/LocalProvider.js +226 -0
  521. package/lib/Local/LocalProvider.js.map +1 -0
  522. package/lib/Local/ProviderLayer.d.ts +43 -2
  523. package/lib/Local/ProviderLayer.d.ts.map +1 -1
  524. package/lib/Local/ProviderLayer.js +80 -2
  525. package/lib/Local/ProviderLayer.js.map +1 -1
  526. package/lib/Local/RpcProvider.d.ts +7 -0
  527. package/lib/Local/RpcProvider.d.ts.map +1 -1
  528. package/lib/Local/RpcProvider.js +8 -3
  529. package/lib/Local/RpcProvider.js.map +1 -1
  530. package/lib/Local/RpcProviderProxy.d.ts.map +1 -1
  531. package/lib/Local/RpcProviderProxy.js +3 -0
  532. package/lib/Local/RpcProviderProxy.js.map +1 -1
  533. package/lib/Local/RpcServer.d.ts +8 -1
  534. package/lib/Local/RpcServer.d.ts.map +1 -1
  535. package/lib/Local/RpcServer.js +4 -1
  536. package/lib/Local/RpcServer.js.map +1 -1
  537. package/lib/Plan.d.ts +34 -0
  538. package/lib/Plan.d.ts.map +1 -1
  539. package/lib/Plan.js +127 -40
  540. package/lib/Plan.js.map +1 -1
  541. package/lib/Planetscale/AuthProvider.d.ts.map +1 -1
  542. package/lib/Planetscale/AuthProvider.js +6 -2
  543. package/lib/Planetscale/AuthProvider.js.map +1 -1
  544. package/lib/Planetscale/Branch.d.ts.map +1 -1
  545. package/lib/Planetscale/Branch.js +36 -6
  546. package/lib/Planetscale/Branch.js.map +1 -1
  547. package/lib/Planetscale/MySQL/MySQLDatabase.d.ts.map +1 -1
  548. package/lib/Planetscale/MySQL/MySQLDatabase.js +31 -6
  549. package/lib/Planetscale/MySQL/MySQLDatabase.js.map +1 -1
  550. package/lib/Planetscale/OAuthClient.d.ts +7 -1
  551. package/lib/Planetscale/OAuthClient.d.ts.map +1 -1
  552. package/lib/Planetscale/OAuthClient.js +51 -4
  553. package/lib/Planetscale/OAuthClient.js.map +1 -1
  554. package/lib/Planetscale/Postgres/PostgresDatabase.d.ts.map +1 -1
  555. package/lib/Planetscale/Postgres/PostgresDatabase.js +30 -5
  556. package/lib/Planetscale/Postgres/PostgresDatabase.js.map +1 -1
  557. package/lib/Platform.d.ts.map +1 -1
  558. package/lib/Platform.js +25 -14
  559. package/lib/Platform.js.map +1 -1
  560. package/lib/Prisma/App.d.ts +80 -0
  561. package/lib/Prisma/App.d.ts.map +1 -0
  562. package/lib/Prisma/App.js +238 -0
  563. package/lib/Prisma/App.js.map +1 -0
  564. package/lib/Prisma/AuthProvider.d.ts +28 -0
  565. package/lib/Prisma/AuthProvider.d.ts.map +1 -0
  566. package/lib/Prisma/AuthProvider.js +131 -0
  567. package/lib/Prisma/AuthProvider.js.map +1 -0
  568. package/lib/Prisma/Branch.d.ts +75 -0
  569. package/lib/Prisma/Branch.d.ts.map +1 -0
  570. package/lib/Prisma/Branch.js +216 -0
  571. package/lib/Prisma/Branch.js.map +1 -0
  572. package/lib/Prisma/Client.d.ts +178 -0
  573. package/lib/Prisma/Client.d.ts.map +1 -0
  574. package/lib/Prisma/Client.js +562 -0
  575. package/lib/Prisma/Client.js.map +1 -0
  576. package/lib/Prisma/Compute.d.ts +583 -0
  577. package/lib/Prisma/Compute.d.ts.map +1 -0
  578. package/lib/Prisma/Compute.js +1543 -0
  579. package/lib/Prisma/Compute.js.map +1 -0
  580. package/lib/Prisma/ComputeArchive.d.ts +63 -0
  581. package/lib/Prisma/ComputeArchive.d.ts.map +1 -0
  582. package/lib/Prisma/ComputeArchive.js +227 -0
  583. package/lib/Prisma/ComputeArchive.js.map +1 -0
  584. package/lib/Prisma/ComputeBuild.d.ts +106 -0
  585. package/lib/Prisma/ComputeBuild.d.ts.map +1 -0
  586. package/lib/Prisma/ComputeBuild.js +987 -0
  587. package/lib/Prisma/ComputeBuild.js.map +1 -0
  588. package/lib/Prisma/ComputeLifecycle.d.ts +84 -0
  589. package/lib/Prisma/ComputeLifecycle.d.ts.map +1 -0
  590. package/lib/Prisma/ComputeLifecycle.js +186 -0
  591. package/lib/Prisma/ComputeLifecycle.js.map +1 -0
  592. package/lib/Prisma/Connect.d.ts +99 -0
  593. package/lib/Prisma/Connect.d.ts.map +1 -0
  594. package/lib/Prisma/Connect.js +187 -0
  595. package/lib/Prisma/Connect.js.map +1 -0
  596. package/lib/Prisma/Connection.d.ts +202 -0
  597. package/lib/Prisma/Connection.d.ts.map +1 -0
  598. package/lib/Prisma/Connection.js +346 -0
  599. package/lib/Prisma/Connection.js.map +1 -0
  600. package/lib/Prisma/CustomDomain.d.ts +81 -0
  601. package/lib/Prisma/CustomDomain.d.ts.map +1 -0
  602. package/lib/Prisma/CustomDomain.js +175 -0
  603. package/lib/Prisma/CustomDomain.js.map +1 -0
  604. package/lib/Prisma/Database.d.ts +208 -0
  605. package/lib/Prisma/Database.d.ts.map +1 -0
  606. package/lib/Prisma/Database.js +405 -0
  607. package/lib/Prisma/Database.js.map +1 -0
  608. package/lib/Prisma/Deployment.d.ts +135 -0
  609. package/lib/Prisma/Deployment.d.ts.map +1 -0
  610. package/lib/Prisma/Deployment.js +348 -0
  611. package/lib/Prisma/Deployment.js.map +1 -0
  612. package/lib/Prisma/EnvironmentVariable.d.ts +89 -0
  613. package/lib/Prisma/EnvironmentVariable.d.ts.map +1 -0
  614. package/lib/Prisma/EnvironmentVariable.js +213 -0
  615. package/lib/Prisma/EnvironmentVariable.js.map +1 -0
  616. package/lib/Prisma/Internal/AppIdentity.d.ts +10 -0
  617. package/lib/Prisma/Internal/AppIdentity.d.ts.map +1 -0
  618. package/lib/Prisma/Internal/AppIdentity.js +6 -0
  619. package/lib/Prisma/Internal/AppIdentity.js.map +1 -0
  620. package/lib/Prisma/Internal/AppPromotion.d.ts +19 -0
  621. package/lib/Prisma/Internal/AppPromotion.d.ts.map +1 -0
  622. package/lib/Prisma/Internal/AppPromotion.js +107 -0
  623. package/lib/Prisma/Internal/AppPromotion.js.map +1 -0
  624. package/lib/Prisma/Internal/ArchivePlatform.d.ts +42 -0
  625. package/lib/Prisma/Internal/ArchivePlatform.d.ts.map +1 -0
  626. package/lib/Prisma/Internal/ArchivePlatform.js +214 -0
  627. package/lib/Prisma/Internal/ArchivePlatform.js.map +1 -0
  628. package/lib/Prisma/Internal/ArtifactFile.d.ts +58 -0
  629. package/lib/Prisma/Internal/ArtifactFile.d.ts.map +1 -0
  630. package/lib/Prisma/Internal/ArtifactFile.js +134 -0
  631. package/lib/Prisma/Internal/ArtifactFile.js.map +1 -0
  632. package/lib/Prisma/Internal/ArtifactUpload.d.ts +5 -0
  633. package/lib/Prisma/Internal/ArtifactUpload.d.ts.map +1 -0
  634. package/lib/Prisma/Internal/ArtifactUpload.js +51 -0
  635. package/lib/Prisma/Internal/ArtifactUpload.js.map +1 -0
  636. package/lib/Prisma/Internal/BundlePaths.d.ts +4 -0
  637. package/lib/Prisma/Internal/BundlePaths.d.ts.map +1 -0
  638. package/lib/Prisma/Internal/BundlePaths.js +16 -0
  639. package/lib/Prisma/Internal/BundlePaths.js.map +1 -0
  640. package/lib/Prisma/Internal/CleanupFailure.d.ts +8 -0
  641. package/lib/Prisma/Internal/CleanupFailure.d.ts.map +1 -0
  642. package/lib/Prisma/Internal/CleanupFailure.js +8 -0
  643. package/lib/Prisma/Internal/CleanupFailure.js.map +1 -0
  644. package/lib/Prisma/Internal/DatabaseSecrets.d.ts +35 -0
  645. package/lib/Prisma/Internal/DatabaseSecrets.d.ts.map +1 -0
  646. package/lib/Prisma/Internal/DatabaseSecrets.js +85 -0
  647. package/lib/Prisma/Internal/DatabaseSecrets.js.map +1 -0
  648. package/lib/Prisma/Internal/DeploymentActions.d.ts +5 -0
  649. package/lib/Prisma/Internal/DeploymentActions.d.ts.map +1 -0
  650. package/lib/Prisma/Internal/DeploymentActions.js +16 -0
  651. package/lib/Prisma/Internal/DeploymentActions.js.map +1 -0
  652. package/lib/Prisma/Internal/DeploymentIdentity.d.ts +8 -0
  653. package/lib/Prisma/Internal/DeploymentIdentity.d.ts.map +1 -0
  654. package/lib/Prisma/Internal/DeploymentIdentity.js +12 -0
  655. package/lib/Prisma/Internal/DeploymentIdentity.js.map +1 -0
  656. package/lib/Prisma/Internal/DeploymentObserve.d.ts +3 -0
  657. package/lib/Prisma/Internal/DeploymentObserve.d.ts.map +1 -0
  658. package/lib/Prisma/Internal/DeploymentObserve.js +2 -0
  659. package/lib/Prisma/Internal/DeploymentObserve.js.map +1 -0
  660. package/lib/Prisma/Internal/EnvName.d.ts +7 -0
  661. package/lib/Prisma/Internal/EnvName.d.ts.map +1 -0
  662. package/lib/Prisma/Internal/EnvName.js +23 -0
  663. package/lib/Prisma/Internal/EnvName.js.map +1 -0
  664. package/lib/Prisma/Internal/HttpClient.d.ts +21 -0
  665. package/lib/Prisma/Internal/HttpClient.d.ts.map +1 -0
  666. package/lib/Prisma/Internal/HttpClient.js +23 -0
  667. package/lib/Prisma/Internal/HttpClient.js.map +1 -0
  668. package/lib/Prisma/Operations.d.ts +143 -0
  669. package/lib/Prisma/Operations.d.ts.map +1 -0
  670. package/lib/Prisma/Operations.js +75 -0
  671. package/lib/Prisma/Operations.js.map +1 -0
  672. package/lib/Prisma/Postgres.d.ts +24 -0
  673. package/lib/Prisma/Postgres.d.ts.map +1 -0
  674. package/lib/Prisma/Postgres.js +23 -0
  675. package/lib/Prisma/Postgres.js.map +1 -0
  676. package/lib/Prisma/PostgresOrigin.d.ts +31 -0
  677. package/lib/Prisma/PostgresOrigin.d.ts.map +1 -0
  678. package/lib/Prisma/PostgresOrigin.js +30 -0
  679. package/lib/Prisma/PostgresOrigin.js.map +1 -0
  680. package/lib/Prisma/PrismaDevDatabase.d.ts +25 -0
  681. package/lib/Prisma/PrismaDevDatabase.d.ts.map +1 -0
  682. package/lib/Prisma/PrismaDevDatabase.js +280 -0
  683. package/lib/Prisma/PrismaDevDatabase.js.map +1 -0
  684. package/lib/Prisma/PrismaEnvironment.d.ts +14 -0
  685. package/lib/Prisma/PrismaEnvironment.d.ts.map +1 -0
  686. package/lib/Prisma/PrismaEnvironment.js +50 -0
  687. package/lib/Prisma/PrismaEnvironment.js.map +1 -0
  688. package/lib/Prisma/PrismaLogs.d.ts +42 -0
  689. package/lib/Prisma/PrismaLogs.d.ts.map +1 -0
  690. package/lib/Prisma/PrismaLogs.js +318 -0
  691. package/lib/Prisma/PrismaLogs.js.map +1 -0
  692. package/lib/Prisma/Project.d.ts +117 -0
  693. package/lib/Prisma/Project.d.ts.map +1 -0
  694. package/lib/Prisma/Project.js +361 -0
  695. package/lib/Prisma/Project.js.map +1 -0
  696. package/lib/Prisma/Providers.d.ts +61 -0
  697. package/lib/Prisma/Providers.d.ts.map +1 -0
  698. package/lib/Prisma/Providers.js +282 -0
  699. package/lib/Prisma/Providers.js.map +1 -0
  700. package/lib/Prisma/Refs.d.ts +19 -0
  701. package/lib/Prisma/Refs.d.ts.map +1 -0
  702. package/lib/Prisma/Refs.js +25 -0
  703. package/lib/Prisma/Refs.js.map +1 -0
  704. package/lib/Prisma/SourceRepository.d.ts +104 -0
  705. package/lib/Prisma/SourceRepository.d.ts.map +1 -0
  706. package/lib/Prisma/SourceRepository.js +221 -0
  707. package/lib/Prisma/SourceRepository.js.map +1 -0
  708. package/lib/Prisma/Types.d.ts +539 -0
  709. package/lib/Prisma/Types.d.ts.map +1 -0
  710. package/lib/Prisma/Types.js +13 -0
  711. package/lib/Prisma/Types.js.map +1 -0
  712. package/lib/Prisma/index.d.ts +25 -0
  713. package/lib/Prisma/index.d.ts.map +1 -0
  714. package/lib/Prisma/index.js +24 -0
  715. package/lib/Prisma/index.js.map +1 -0
  716. package/lib/Provider.d.ts +57 -5
  717. package/lib/Provider.d.ts.map +1 -1
  718. package/lib/Provider.js +54 -30
  719. package/lib/Provider.js.map +1 -1
  720. package/lib/ProviderMode.d.ts +93 -0
  721. package/lib/ProviderMode.d.ts.map +1 -0
  722. package/lib/ProviderMode.js +77 -0
  723. package/lib/ProviderMode.js.map +1 -0
  724. package/lib/Resource.d.ts +8 -0
  725. package/lib/Resource.d.ts.map +1 -1
  726. package/lib/Resource.js +31 -0
  727. package/lib/Resource.js.map +1 -1
  728. package/lib/RuntimeContext.d.ts +7 -0
  729. package/lib/RuntimeContext.d.ts.map +1 -1
  730. package/lib/RuntimeContext.js.map +1 -1
  731. package/lib/Server/Process.d.ts +8 -0
  732. package/lib/Server/Process.d.ts.map +1 -1
  733. package/lib/Server/Process.js +29 -0
  734. package/lib/Server/Process.js.map +1 -1
  735. package/lib/State/InMemoryState.d.ts.map +1 -1
  736. package/lib/State/InMemoryState.js +2 -0
  737. package/lib/State/InMemoryState.js.map +1 -1
  738. package/lib/State/ResourceState.d.ts +18 -0
  739. package/lib/State/ResourceState.d.ts.map +1 -1
  740. package/lib/Sync.d.ts.map +1 -1
  741. package/lib/Sync.js +8 -2
  742. package/lib/Sync.js.map +1 -1
  743. package/lib/Telemetry.d.ts +150 -0
  744. package/lib/Telemetry.d.ts.map +1 -0
  745. package/lib/Telemetry.js +512 -0
  746. package/lib/Telemetry.js.map +1 -0
  747. package/lib/Test/Alchemy.d.ts.map +1 -1
  748. package/lib/Test/Alchemy.js +3 -1
  749. package/lib/Test/Alchemy.js.map +1 -1
  750. package/lib/Test/Core.d.ts +2 -2
  751. package/lib/Test/Core.d.ts.map +1 -1
  752. package/lib/Test/Core.js +1 -8
  753. package/lib/Test/Core.js.map +1 -1
  754. package/lib/Util/Clank.d.ts +11 -6
  755. package/lib/Util/Clank.d.ts.map +1 -1
  756. package/lib/Util/Clank.js +22 -9
  757. package/lib/Util/Clank.js.map +1 -1
  758. package/lib/Util/zip.d.ts +11 -0
  759. package/lib/Util/zip.d.ts.map +1 -1
  760. package/lib/Util/zip.js +30 -0
  761. package/lib/Util/zip.js.map +1 -1
  762. package/lib/index.d.ts +3 -0
  763. package/lib/index.d.ts.map +1 -1
  764. package/lib/index.js +3 -0
  765. package/lib/index.js.map +1 -1
  766. package/package.json +46 -13
  767. package/src/AWS/ApiGateway/common.ts +9 -0
  768. package/src/AWS/Bedrock/LanguageModel.ts +883 -0
  769. package/src/AWS/Bedrock/LanguageModelHttp.ts +36 -0
  770. package/src/AWS/Bedrock/index.ts +2 -0
  771. package/src/AWS/CloudFront/Distribution.ts +116 -6
  772. package/src/AWS/CostExplorer/common.ts +23 -2
  773. package/src/AWS/DataSync/Task.ts +30 -15
  774. package/src/AWS/EC2/Vpc.ts +35 -21
  775. package/src/AWS/EC2/hosted.ts +10 -2
  776. package/src/AWS/ECR/ImageSource.ts +10 -2
  777. package/src/AWS/ECR/Repository.ts +39 -4
  778. package/src/AWS/ECS/Service.ts +322 -22
  779. package/src/AWS/ECS/Task.ts +82 -32
  780. package/src/AWS/EKS/Deployment.ts +10 -2
  781. package/src/AWS/EKS/Job.ts +10 -2
  782. package/src/AWS/Lambda/Function.ts +101 -43
  783. package/src/AWS/Lambda/HttpServer.ts +7 -1
  784. package/src/AWS/Lambda/LayerVersion.ts +490 -0
  785. package/src/AWS/Lambda/MicrovmBundle.ts +10 -2
  786. package/src/AWS/Lambda/index.ts +1 -0
  787. package/src/AWS/Providers.ts +10 -0
  788. package/src/AWS/SES/ActiveReceiptRuleSet.ts +88 -0
  789. package/src/AWS/SES/ReceiptFilter.ts +169 -0
  790. package/src/AWS/SES/ReceiptRule.ts +300 -0
  791. package/src/AWS/SES/ReceiptRuleSet.ts +164 -0
  792. package/src/AWS/SES/SendBounce.ts +44 -0
  793. package/src/AWS/SES/SendBounceHttp.ts +13 -0
  794. package/src/AWS/SES/index.ts +6 -0
  795. package/src/AWS/StateStore/State.ts +159 -42
  796. package/src/Apply.ts +199 -83
  797. package/src/Axiom/Telemetry.ts +119 -0
  798. package/src/Axiom/index.ts +1 -0
  799. package/src/Bundle/Bundle.ts +17 -7
  800. package/src/Bundle/BundleAnalyzerPlugin.ts +9 -4
  801. package/src/Bundle/PurePlugin.ts +19 -9
  802. package/src/Cli/checkVersion.ts +102 -16
  803. package/src/Cli/commands/deploy.ts +3 -14
  804. package/src/Cli/commands/logs.ts +6 -1
  805. package/src/Cli/commands/tail.ts +6 -1
  806. package/src/Cli/main.ts +5 -4
  807. package/src/Cloudflare/AI/Search.ts +4 -18
  808. package/src/Cloudflare/AI/SearchInstance.ts +7 -26
  809. package/src/Cloudflare/ApiToken/AccountApiToken.ts +3 -0
  810. package/src/Cloudflare/Auth/AuthProvider.ts +17 -3
  811. package/src/Cloudflare/Auth/OAuthClient.ts +58 -2
  812. package/src/Cloudflare/Containers/Container.ts +92 -3
  813. package/src/Cloudflare/Containers/ContainerApplication.ts +31 -5
  814. package/src/Cloudflare/Containers/ContainerBundle.ts +10 -2
  815. package/src/Cloudflare/Containers/ContainerProvider.ts +62 -0
  816. package/src/Cloudflare/Credentials.ts +69 -9
  817. package/src/Cloudflare/D1/ApplyMigrations.ts +72 -77
  818. package/src/Cloudflare/D1/Database.ts +154 -2
  819. package/src/Cloudflare/D1/LocalD1Gateway.ts +150 -0
  820. package/src/Cloudflare/D1/QueryDatabaseHttpClient.ts +49 -11
  821. package/src/Cloudflare/D1/QueryDatabaseLocal.ts +44 -2
  822. package/src/Cloudflare/Email/Address.ts +18 -1
  823. package/src/Cloudflare/Email/SendBinding.ts +1 -0
  824. package/src/Cloudflare/Email/SendEmail.ts +13 -0
  825. package/src/Cloudflare/Flagship/App.ts +18 -6
  826. package/src/Cloudflare/KV/LocalKVGateway.ts +86 -0
  827. package/src/Cloudflare/KV/Namespace.ts +47 -1
  828. package/src/Cloudflare/KV/NamespaceLocal.ts +29 -6
  829. package/src/Cloudflare/KV/ReadNamespaceLocal.ts +5 -1
  830. package/src/Cloudflare/KV/ReadWriteNamespaceLocal.ts +5 -1
  831. package/src/Cloudflare/KV/WriteNamespaceLocal.ts +5 -1
  832. package/src/Cloudflare/LocalGateway.ts +86 -0
  833. package/src/Cloudflare/LocalRuntime.ts +21 -1
  834. package/src/Cloudflare/Logs.ts +58 -28
  835. package/src/Cloudflare/Providers.ts +4 -2
  836. package/src/Cloudflare/Queues/Consumer.ts +70 -2
  837. package/src/Cloudflare/Queues/Queue.ts +7 -16
  838. package/src/Cloudflare/Queues/QueueBinding.ts +21 -0
  839. package/src/Cloudflare/Queues/QueueShim.ts +193 -0
  840. package/src/Cloudflare/R2/Bucket.ts +55 -1
  841. package/src/Cloudflare/R2/BucketBinding.ts +17 -3
  842. package/src/Cloudflare/R2/BucketLocal.ts +25 -8
  843. package/src/Cloudflare/R2/LocalR2Gateway.ts +84 -0
  844. package/src/Cloudflare/R2/ReadBucketLocal.ts +7 -1
  845. package/src/Cloudflare/R2/ReadWriteBucketLocal.ts +7 -1
  846. package/src/Cloudflare/R2/WriteBucketLocal.ts +7 -1
  847. package/src/Cloudflare/Ruleset/AccountEntrypoint.ts +5 -1
  848. package/src/Cloudflare/Ruleset/Ruleset.ts +20 -6
  849. package/src/Cloudflare/Rum/Site.ts +11 -4
  850. package/src/Cloudflare/StateStore/Api.ts +1 -1
  851. package/src/Cloudflare/Tunnel/Tunnel.ts +23 -1
  852. package/src/Cloudflare/Website/StaticSite.ts +117 -28
  853. package/src/Cloudflare/Website/Vite.ts +33 -19
  854. package/src/Cloudflare/Workers/Compatibility.ts +27 -7
  855. package/src/Cloudflare/Workers/DurableObject.ts +22 -0
  856. package/src/Cloudflare/Workers/DurableObjectBridge.ts +29 -10
  857. package/src/Cloudflare/Workers/InferEnv.ts +74 -59
  858. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +619 -401
  859. package/src/Cloudflare/Workers/Worker.ts +676 -28
  860. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +209 -25
  861. package/src/Cloudflare/Workers/WorkerBinding.ts +67 -3
  862. package/src/Cloudflare/Workers/WorkerBridge.ts +26 -4
  863. package/src/Cloudflare/Workers/WorkerBundle.ts +6 -1
  864. package/src/Cloudflare/Workers/WorkerProvider.ts +2269 -277
  865. package/src/Cloudflare/Workflows/WorkflowBridge.ts +31 -13
  866. package/src/Command/Build.ts +8 -8
  867. package/src/Command/Command.ts +217 -42
  868. package/src/Command/Dev.ts +79 -107
  869. package/src/Command/Exec.ts +11 -2
  870. package/src/Command/Memo.ts +27 -3
  871. package/src/Command/Redaction.ts +181 -0
  872. package/src/Destroy.ts +1 -10
  873. package/src/Docker/Container.ts +55 -15
  874. package/src/Docker/Context.ts +236 -0
  875. package/src/Docker/Docker.ts +393 -43
  876. package/src/Docker/Image.ts +28 -7
  877. package/src/Docker/Network.ts +38 -14
  878. package/src/Docker/Providers.ts +16 -1
  879. package/src/Docker/RemoteImage.ts +23 -7
  880. package/src/Docker/Service.ts +1119 -0
  881. package/src/Docker/ServiceImage.ts +331 -0
  882. package/src/Docker/Swarm.ts +226 -0
  883. package/src/Docker/Volume.ts +25 -6
  884. package/src/Docker/index.ts +3 -0
  885. package/src/Http.ts +15 -2
  886. package/src/Local/LocalProvider.ts +518 -0
  887. package/src/Local/ProviderLayer.ts +113 -11
  888. package/src/Local/RpcProvider.ts +10 -5
  889. package/src/Local/RpcProviderProxy.ts +4 -1
  890. package/src/Local/RpcServer.ts +20 -2
  891. package/src/Plan.ts +182 -54
  892. package/src/Planetscale/AuthProvider.ts +15 -2
  893. package/src/Planetscale/Branch.ts +39 -6
  894. package/src/Planetscale/MySQL/MySQLDatabase.ts +34 -6
  895. package/src/Planetscale/OAuthClient.ts +59 -3
  896. package/src/Planetscale/Postgres/PostgresDatabase.ts +33 -5
  897. package/src/Platform.ts +29 -17
  898. package/src/Prisma/App.ts +420 -0
  899. package/src/Prisma/AuthProvider.ts +260 -0
  900. package/src/Prisma/Branch.ts +396 -0
  901. package/src/Prisma/Client.ts +1337 -0
  902. package/src/Prisma/Compute.ts +2876 -0
  903. package/src/Prisma/ComputeArchive.ts +432 -0
  904. package/src/Prisma/ComputeBuild.ts +1652 -0
  905. package/src/Prisma/ComputeLifecycle.ts +391 -0
  906. package/src/Prisma/Connect.ts +410 -0
  907. package/src/Prisma/Connection.ts +626 -0
  908. package/src/Prisma/CustomDomain.ts +363 -0
  909. package/src/Prisma/Database.ts +836 -0
  910. package/src/Prisma/Deployment.ts +655 -0
  911. package/src/Prisma/EnvironmentVariable.ts +401 -0
  912. package/src/Prisma/Internal/AppIdentity.ts +19 -0
  913. package/src/Prisma/Internal/AppPromotion.ts +172 -0
  914. package/src/Prisma/Internal/ArchivePlatform.ts +320 -0
  915. package/src/Prisma/Internal/ArtifactFile.ts +242 -0
  916. package/src/Prisma/Internal/ArtifactUpload.ts +86 -0
  917. package/src/Prisma/Internal/BundlePaths.ts +28 -0
  918. package/src/Prisma/Internal/CleanupFailure.ts +17 -0
  919. package/src/Prisma/Internal/DatabaseSecrets.ts +175 -0
  920. package/src/Prisma/Internal/DeploymentActions.ts +59 -0
  921. package/src/Prisma/Internal/DeploymentIdentity.ts +25 -0
  922. package/src/Prisma/Internal/DeploymentObserve.ts +6 -0
  923. package/src/Prisma/Internal/EnvName.ts +24 -0
  924. package/src/Prisma/Internal/HttpClient.ts +30 -0
  925. package/src/Prisma/Operations.ts +259 -0
  926. package/src/Prisma/Postgres.ts +24 -0
  927. package/src/Prisma/PostgresOrigin.ts +52 -0
  928. package/src/Prisma/PrismaDevDatabase.ts +395 -0
  929. package/src/Prisma/PrismaEnvironment.ts +89 -0
  930. package/src/Prisma/PrismaLogs.ts +434 -0
  931. package/src/Prisma/Project.ts +681 -0
  932. package/src/Prisma/Providers.ts +411 -0
  933. package/src/Prisma/Refs.ts +69 -0
  934. package/src/Prisma/SourceRepository.ts +432 -0
  935. package/src/Prisma/Types.ts +611 -0
  936. package/src/Prisma/index.ts +24 -0
  937. package/src/Provider.ts +155 -39
  938. package/src/ProviderMode.ts +123 -0
  939. package/src/Resource.ts +46 -0
  940. package/src/RuntimeContext.ts +7 -0
  941. package/src/Server/Process.ts +33 -0
  942. package/src/State/InMemoryState.ts +2 -0
  943. package/src/State/ResourceState.ts +18 -0
  944. package/src/Sync.ts +14 -2
  945. package/src/Telemetry.ts +736 -0
  946. package/src/Test/Alchemy.ts +3 -1
  947. package/src/Test/Core.ts +1 -8
  948. package/src/Util/Clank.ts +37 -11
  949. package/src/Util/zip.ts +39 -0
  950. package/src/index.ts +3 -0
package/bin/exec.js CHANGED
@@ -392,14 +392,15 @@ var init_FQN = __esm({ "lib/FQN.js": (() => {
392
392
 
393
393
  //#endregion
394
394
  //#region lib/Provider.js
395
- var Provider, isProviderCollectionService, isProviderService, findProviderByType, MissingProviderError, missingProviderError, tryFindProviderByType;
395
+ var Provider, isProviderCollectionService, isProviderService, providerForMode, findProviderByType, MissingProviderError, missingProviderError, tryFindProviderByType;
396
396
  var init_Provider = __esm({ "lib/Provider.js": (() => {
397
397
  Provider = (type) => EffectContext.Service()(type);
398
398
  isProviderCollectionService = (value) => {
399
399
  return typeof value === "object" && value !== null && "kind" in value && value.kind === "ProviderCollection";
400
400
  };
401
401
  isProviderService = (value) => typeof value === "object" && value !== null && "reconcile" in value && typeof value.reconcile === "function" && "delete" in value && typeof value.delete === "function";
402
- findProviderByType = ((type) => tryFindProviderByType(type).pipe(Effect.flatMap(Option.match({
402
+ providerForMode = (service, mode) => mode !== void 0 && service.modes !== void 0 ? service.modes[mode] : Effect.succeed(service);
403
+ findProviderByType = ((type, mode) => tryFindProviderByType(type, mode).pipe(Effect.flatMap(Option.match({
403
404
  onNone: () => Effect.die(`Provider not found for ${type}`),
404
405
  onSome: (provider) => Effect.succeed(provider)
405
406
  }))));
@@ -409,19 +410,39 @@ var init_Provider = __esm({ "lib/Provider.js": (() => {
409
410
  resourceType,
410
411
  fqn
411
412
  });
412
- tryFindProviderByType = Effect.fn(function* (resourceType) {
413
- const Tag = Provider(resourceType);
414
- const direct = yield* Effect.serviceOption(Tag);
415
- if (Option.isSome(direct)) return direct;
416
- const context = yield* Effect.context();
417
- for (const value of context.mapUnsafe.values()) if (isProviderCollectionService(value)) {
418
- const provider = value.get(resourceType);
419
- if (provider) return Option.some(provider);
420
- }
421
- for (const value of context.mapUnsafe.values()) if (isProviderCollectionService(value)) {
422
- for (const provider of Object.values(value.providers)) if (provider.aliases?.includes(resourceType)) return Option.some(provider);
423
- } else if (isProviderService(value) && value.aliases?.includes(resourceType)) return Option.some(value);
424
- return Option.none();
413
+ tryFindProviderByType = Effect.fn(function* (resourceType, mode) {
414
+ const found = yield* Effect.gen(function* () {
415
+ const Tag = Provider(resourceType);
416
+ const direct = yield* Effect.serviceOption(Tag);
417
+ if (Option.isSome(direct)) return direct;
418
+ const context = yield* Effect.context();
419
+ for (const value of context.mapUnsafe.values()) if (isProviderCollectionService(value)) {
420
+ const provider = value.get(resourceType);
421
+ if (provider) return Option.some(provider);
422
+ }
423
+ for (const value of context.mapUnsafe.values()) if (isProviderCollectionService(value)) {
424
+ for (const provider of Object.values(value.providers)) if (provider.aliases?.includes(resourceType)) return Option.some(provider);
425
+ } else if (isProviderService(value) && value.aliases?.includes(resourceType)) return Option.some(value);
426
+ return Option.none();
427
+ });
428
+ if (Option.isNone(found)) return found;
429
+ return Option.some(yield* providerForMode(found.value, mode));
430
+ });
431
+ }) });
432
+
433
+ //#endregion
434
+ //#region lib/ProviderMode.js
435
+ var ProviderModePolicy, defaultProviderMode;
436
+ var init_ProviderMode = __esm({ "lib/ProviderMode.js": (() => {
437
+ init_AlchemyContext();
438
+ ProviderModePolicy = EffectContext.Reference("ProviderModePolicy", { defaultValue: () => void 0 });
439
+ defaultProviderMode = Effect.gen(function* () {
440
+ if (yield* ProviderModePolicy) return "live";
441
+ const ctx = yield* Effect.serviceOption(AlchemyContext);
442
+ return Option.match(ctx, {
443
+ onNone: () => "live",
444
+ onSome: (c$1) => c$1.dev ? "local" : "live"
445
+ });
425
446
  });
426
447
  }) });
427
448
 
@@ -1314,6 +1335,7 @@ init_Artifacts();
1314
1335
  init_FQN();
1315
1336
  init_Output();
1316
1337
  init_Provider();
1338
+ init_ProviderMode();
1317
1339
  init_Resource();
1318
1340
  init_sha256();
1319
1341
  const make = (stack, options$6 = {}) => Effect.gen(function* () {
@@ -1331,6 +1353,32 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1331
1353
  onSome: (c$1) => c$1.adopt
1332
1354
  });
1333
1355
  });
1356
+ const runDefaultMode = yield* defaultProviderMode;
1357
+ /**
1358
+ * Resolve the effective provider mode and the concrete provider
1359
+ * service for a resource.
1360
+ *
1361
+ * The mode only "sticks" when the provider actually distinguishes
1362
+ * modes (registered via `ProviderLayer.dual`). Mode-agnostic providers
1363
+ * satisfy any requested mode with their single implementation — in a
1364
+ * dev run, a construct that mixes emulatable resources with live-only
1365
+ * ones (e.g. R2 buckets) just works.
1366
+ */
1367
+ const resolveProviderAndMode = Effect.fn(function* (resource) {
1368
+ const base$1 = yield* findProviderByType(resource.Type);
1369
+ const mode = base$1.modes !== void 0 ? resource.Mode ?? runDefaultMode : void 0;
1370
+ return {
1371
+ provider: yield* providerForMode(base$1, mode),
1372
+ mode
1373
+ };
1374
+ });
1375
+ /**
1376
+ * Has this resource switched provider modes since it was last
1377
+ * reconciled? Rows without a persisted mode (legacy rows, or rows
1378
+ * written by a mode-agnostic provider) are assumed to already be in
1379
+ * the current run's mode — no replacement churn.
1380
+ */
1381
+ const hasModeSwitched = (mode, oldState) => mode !== void 0 && oldState?.providerMode !== void 0 && oldState.providerMode !== mode;
1334
1382
  const resourceFqns = yield* state.list({
1335
1383
  stack: stackName,
1336
1384
  stage: stage$1
@@ -1345,7 +1393,7 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1345
1393
  if (isAction(resourceExpr.src)) return resourceExpr;
1346
1394
  return yield* resolvedResources[resourceExpr.src.FQN] ??= yield* Effect.cached(Effect.gen(function* () {
1347
1395
  const resource = resourceExpr.src;
1348
- const provider = yield* findProviderByType(resource.Type);
1396
+ const { provider, mode } = yield* resolveProviderAndMode(resource);
1349
1397
  const props = yield* resolveInput(resource.Props);
1350
1398
  const persisted = yield* state.get({
1351
1399
  stack: stackName,
@@ -1354,6 +1402,7 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1354
1402
  });
1355
1403
  const oldState = isActionState(persisted) ? void 0 : persisted;
1356
1404
  if (!oldState || oldState.status === "creating") return resourceExpr;
1405
+ if (hasModeSwitched(mode, oldState)) return resourceExpr;
1357
1406
  const oldProps = oldState.status === "updating" ? oldState.old.props : oldState.props;
1358
1407
  const oldBindings = dedupeBindings(oldState.bindings ?? []);
1359
1408
  const newBindings = dedupeBindings(stack.bindings[resource.FQN] ?? []);
@@ -1476,7 +1525,7 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1476
1525
  };
1477
1526
  const newDownstreamDependencies = Object.fromEntries([...resources.map((resource) => [resource.FQN, computeDownstream(resource.FQN)]), ...actions.map((action) => [action.FQN, computeDownstream(action.FQN)])]);
1478
1527
  const resourceGraph = Object.fromEntries((yield* Effect.all(resources.map(Effect.fn("plan.diff.resource")(function* (resource) {
1479
- const provider = yield* findProviderByType(resource.Type);
1528
+ const { provider, mode } = yield* resolveProviderAndMode(resource);
1480
1529
  const id = resource.LogicalId;
1481
1530
  const fqn = resource.FQN;
1482
1531
  const news = yield* resolveInput(resource.Props);
@@ -1518,26 +1567,29 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1518
1567
  providerVersion: provider.version ?? 0,
1519
1568
  bindings: [],
1520
1569
  downstream,
1521
- removalPolicy: resource.RemovalPolicy
1570
+ removalPolicy: resource.RemovalPolicy,
1571
+ providerMode: mode
1522
1572
  };
1523
1573
  forceUpdateAfterAdoption = true;
1524
1574
  }
1525
1575
  }
1526
1576
  const oldBindings = dedupeBindings(oldState?.bindings ?? []);
1527
1577
  const bindingDiffs = diffBindings(oldBindings, newBindings);
1578
+ const modeSwitched = hasModeSwitched(mode, oldState);
1528
1579
  const Node = (node) => ({
1529
1580
  ...node,
1530
1581
  provider,
1531
1582
  resource,
1532
1583
  bindings: bindingDiffs,
1533
- downstream
1584
+ downstream,
1585
+ mode
1534
1586
  });
1535
1587
  if (oldState === void 0) return Node({
1536
1588
  action: "create",
1537
1589
  props: news,
1538
1590
  state: oldState
1539
1591
  });
1540
- else if (oldState.status === "creating" && oldState.attr === void 0) {
1592
+ else if (!modeSwitched && oldState.status === "creating" && oldState.attr === void 0) {
1541
1593
  if (provider.read && isResolved(oldState.props)) {
1542
1594
  const attr = yield* provider.read({
1543
1595
  id,
@@ -1546,7 +1598,7 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1546
1598
  olds: oldState.props,
1547
1599
  output: oldState.attr
1548
1600
  }).pipe(providePlanScope(fqn, oldState.instanceId));
1549
- if (attr) {
1601
+ if (attr !== void 0) {
1550
1602
  if (Unowned.is(attr)) {
1551
1603
  if (!(resource.Adopt ?? (yield* shouldAdopt))) return yield* new OwnedBySomeoneElse({
1552
1604
  message: `Cannot resume creating resource '${fqn}' (${resource.Type}): a resource with its physical identity exists in the cloud but is not owned by this stack/stage/logical-id. Re-run with \`--adopt\` (or wrap the effect in \`adopt(true)\`) to take it over.`,
@@ -1554,19 +1606,18 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1554
1606
  logicalId: id
1555
1607
  });
1556
1608
  }
1557
- return Node({
1558
- action: "create",
1559
- props: news,
1560
- state: {
1561
- ...oldState,
1562
- attr: stripUnowned(attr)
1563
- }
1564
- });
1609
+ oldState = {
1610
+ ...oldState,
1611
+ attr: stripUnowned(attr)
1612
+ };
1565
1613
  }
1566
1614
  }
1567
1615
  }
1568
1616
  const oldProps = oldState.props;
1569
- const diff = yield* asEffect(provider?.diff?.({
1617
+ const diff = modeSwitched ? {
1618
+ action: "replace",
1619
+ deleteFirst: false
1620
+ } : yield* asEffect(provider?.diff?.({
1570
1621
  id,
1571
1622
  fqn,
1572
1623
  olds: oldProps,
@@ -1651,6 +1702,7 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1651
1702
  });
1652
1703
  else if (diff.action === "update") return Node({
1653
1704
  action: "update",
1705
+ adopting: forceUpdateAfterAdoption,
1654
1706
  props: news,
1655
1707
  state: oldState
1656
1708
  });
@@ -1774,12 +1826,13 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1774
1826
  if (oldState) {
1775
1827
  const { logicalId } = parseFqn(fqn);
1776
1828
  const resourceType = oldState.resourceType;
1777
- const providerOption = yield* tryFindProviderByType(resourceType);
1829
+ const providerOption = yield* tryFindProviderByType(resourceType, oldState.providerMode);
1778
1830
  if (Option.isNone(providerOption)) return yield* Effect.die(missingProviderError(resourceType, fqn));
1779
1831
  return [fqn, {
1780
1832
  action: "delete",
1781
1833
  state: oldState,
1782
1834
  provider: providerOption.value,
1835
+ mode: oldState.providerMode,
1783
1836
  resource: {
1784
1837
  Namespace: oldState.namespace,
1785
1838
  FQN: fqn,
@@ -1791,6 +1844,7 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1791
1844
  Provider: Provider(resourceType),
1792
1845
  RemovalPolicy: oldState.removalPolicy,
1793
1846
  Adopt: void 0,
1847
+ Mode: oldState.providerMode,
1794
1848
  RuntimeContext: void 0,
1795
1849
  Providers: void 0
1796
1850
  },
@@ -1825,6 +1879,29 @@ const make = (stack, options$6 = {}) => Effect.gen(function* () {
1825
1879
  "alchemy.resources.count": Object.keys(stack.resources).length,
1826
1880
  "alchemy.force": !!options$6.force
1827
1881
  } }));
1882
+ /**
1883
+ * Build the plan that destroys every resource of `(stack.name, stack.stage)`.
1884
+ *
1885
+ * The spec is emptied out so every persisted resource becomes an orphan
1886
+ * deletion, and `output` is left undefined so `apply` does not overwrite the
1887
+ * last deploy's persisted stack output with an empty husk. `apply` recognizes
1888
+ * the `destroy` marker and deletes the stage's remaining persisted state (the
1889
+ * stack output record) once the destroy has converged, so `state.getOutput`
1890
+ * and `state.listStages` agree the stage is gone.
1891
+ *
1892
+ * @see https://github.com/alchemy-run/alchemy/issues/961
1893
+ */
1894
+ const destroy = (stack) => make({
1895
+ name: stack.name,
1896
+ stage: stack.stage,
1897
+ resources: {},
1898
+ bindings: {},
1899
+ actions: {},
1900
+ output: void 0
1901
+ }).pipe(Effect.map((plan) => ({
1902
+ ...plan,
1903
+ destroy: true
1904
+ })));
1828
1905
  const providePlanScope = (fqn, instanceId) => (effect) => Effect.serviceOption(ArtifactStore).pipe(Effect.map(Option.getOrElse(createArtifactStore)), Effect.flatMap((store) => effect.pipe(Effect.provideService(Artifacts, makeScopedArtifacts(store, fqn)), Effect.provideService(InstanceId, instanceId))));
1829
1906
  var DeleteResourceHasDownstreamDependencies = class extends Data.TaggedError("DeleteResourceHasDownstreamDependencies") {};
1830
1907
  var UnsatisfiedResourceCycle = class extends Data.TaggedError("UnsatisfiedResourceCycle") {};
@@ -1876,6 +1953,13 @@ const apply = (plan) => Effect.gen(function* () {
1876
1953
  status
1877
1954
  }), { concurrency: "unbounded" });
1878
1955
  yield* session.done();
1956
+ if (plan.destroy) {
1957
+ yield* state.deleteStack({
1958
+ stack: stackName,
1959
+ stage: stage$1
1960
+ });
1961
+ return;
1962
+ }
1879
1963
  if (!plan.output) return;
1880
1964
  const outputs = Object.fromEntries(Object.entries(tracker).map(([fqn, t]) => [fqn, t.output]));
1881
1965
  const resolved = yield* evaluate(plan.output, outputs);
@@ -1983,7 +2067,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
1983
2067
  providerVersion: node.provider.version ?? 0,
1984
2068
  resourceType: node.resource.Type,
1985
2069
  bindings: excludeDeletedBindings(node.bindings),
1986
- removalPolicy: node.resource.RemovalPolicy
2070
+ removalPolicy: node.resource.RemovalPolicy,
2071
+ providerMode: node.mode
1987
2072
  });
1988
2073
  return id;
1989
2074
  } else if (node.action === "replace") {
@@ -2001,7 +2086,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2001
2086
  bindings: excludeDeletedBindings(node.bindings),
2002
2087
  old: node.state,
2003
2088
  deleteFirst: node.deleteFirst,
2004
- removalPolicy: node.resource.RemovalPolicy
2089
+ removalPolicy: node.resource.RemovalPolicy,
2090
+ providerMode: node.mode
2005
2091
  });
2006
2092
  return id;
2007
2093
  } else if (node.state?.instanceId) return node.state.instanceId;
@@ -2020,7 +2106,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2020
2106
  providerVersion: node.provider.version ?? 0,
2021
2107
  bindings: excludeDeletedBindings(node.bindings),
2022
2108
  downstream: node.downstream,
2023
- removalPolicy: node.resource.RemovalPolicy
2109
+ removalPolicy: node.resource.RemovalPolicy,
2110
+ providerMode: node.mode
2024
2111
  });
2025
2112
  let attr = node.state?.attr;
2026
2113
  if (attr !== void 0) yield* storeAndSignal({
@@ -2050,7 +2137,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2050
2137
  providerVersion: node.provider.version ?? 0,
2051
2138
  bindings: excludeDeletedBindings(node.bindings),
2052
2139
  downstream: node.downstream,
2053
- removalPolicy: node.resource.RemovalPolicy
2140
+ removalPolicy: node.resource.RemovalPolicy,
2141
+ providerMode: node.mode
2054
2142
  });
2055
2143
  yield* storeAndSignal({
2056
2144
  output: attr,
@@ -2086,7 +2174,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2086
2174
  bindings: bindingOutputs,
2087
2175
  providerVersion: node.provider.version ?? 0,
2088
2176
  downstream: node.downstream,
2089
- removalPolicy: node.resource.RemovalPolicy
2177
+ removalPolicy: node.resource.RemovalPolicy,
2178
+ providerMode: node.mode
2090
2179
  });
2091
2180
  tracker[fqn] = {
2092
2181
  output: attr,
@@ -2110,10 +2199,12 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2110
2199
  yield* waitForDeps(allUpstreamFqns());
2111
2200
  const outputs = getOutputs();
2112
2201
  const news = yield* evaluate(node.props, outputs);
2202
+ const adopting = node.adopting === true || node.state.status === "updating" && node.state.adopting === true;
2113
2203
  yield* node.state.status === "replaced" ? commit({
2114
2204
  ...node.state,
2115
2205
  attr: node.state.attr,
2116
- props: news
2206
+ props: news,
2207
+ providerMode: node.mode
2117
2208
  }) : commit({
2118
2209
  status: "updating",
2119
2210
  fqn,
@@ -2126,10 +2217,12 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2126
2217
  bindings: excludeDeletedBindings(node.bindings),
2127
2218
  downstream: node.downstream,
2128
2219
  old: node.state.status === "updating" ? node.state.old : node.state,
2129
- removalPolicy: node.resource.RemovalPolicy
2220
+ adopting: adopting ? true : void 0,
2221
+ removalPolicy: node.resource.RemovalPolicy,
2222
+ providerMode: node.mode
2130
2223
  });
2131
2224
  yield* report("updating");
2132
- const previousProps = node.state.status === "created" || node.state.status === "updated" || node.state.status === "replaced" ? node.state.props : node.state.old.props;
2225
+ const previousProps = adopting ? void 0 : node.state.status === "created" || node.state.status === "updated" || node.state.status === "replaced" ? node.state.props : node.state.old.props;
2133
2226
  const bindingOutputs = excludeDeletedBindings(yield* evaluate(node.bindings, outputs));
2134
2227
  const attr = yield* node.provider.reconcile({
2135
2228
  id: logicalId,
@@ -2144,7 +2237,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2144
2237
  if (node.state.status === "replaced") yield* commit({
2145
2238
  ...node.state,
2146
2239
  attr,
2147
- props: news
2240
+ props: news,
2241
+ providerMode: node.mode
2148
2242
  });
2149
2243
  else yield* commit({
2150
2244
  status: "updated",
@@ -2157,7 +2251,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2157
2251
  bindings: bindingOutputs,
2158
2252
  providerVersion: node.provider.version ?? 0,
2159
2253
  downstream: node.downstream,
2160
- removalPolicy: node.resource.RemovalPolicy
2254
+ removalPolicy: node.resource.RemovalPolicy,
2255
+ providerMode: node.mode
2161
2256
  });
2162
2257
  tracker[fqn] = {
2163
2258
  output: attr,
@@ -2197,12 +2292,13 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2197
2292
  deleteFirst: node.deleteFirst,
2198
2293
  old: node.state,
2199
2294
  downstream: node.downstream,
2200
- removalPolicy: node.resource.RemovalPolicy
2295
+ removalPolicy: node.resource.RemovalPolicy,
2296
+ providerMode: node.mode
2201
2297
  });
2202
2298
  else replState = node.state;
2203
2299
  const deleteOldGenerations = (old) => Effect.gen(function* () {
2204
2300
  const retain = node.resource.RemovalPolicy === "retain";
2205
- if (old.attr !== void 0 && !retain) yield* node.provider.delete({
2301
+ if (old.attr !== void 0 && !retain) yield* (yield* findProviderByType(node.resource.Type, old.providerMode)).delete({
2206
2302
  id: logicalId,
2207
2303
  fqn,
2208
2304
  instanceId: old.instanceId,
@@ -2247,7 +2343,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2247
2343
  downstream: node.downstream,
2248
2344
  old: replState.old,
2249
2345
  deleteFirst: node.deleteFirst,
2250
- removalPolicy: node.resource.RemovalPolicy
2346
+ removalPolicy: node.resource.RemovalPolicy,
2347
+ providerMode: node.mode
2251
2348
  });
2252
2349
  yield* storeAndSignal({
2253
2350
  output: attr,
@@ -2283,7 +2380,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2283
2380
  providerVersion: node.provider.version ?? 0,
2284
2381
  bindings: bindingOutputs,
2285
2382
  downstream: node.downstream,
2286
- removalPolicy: node.resource.RemovalPolicy
2383
+ removalPolicy: node.resource.RemovalPolicy,
2384
+ providerMode: node.mode
2287
2385
  });
2288
2386
  else yield* commit({
2289
2387
  status: "replaced",
@@ -2298,7 +2396,8 @@ const executeNode = (fqn, node, tracker, ready, readyStable, terminalStatuses, s
2298
2396
  downstream: node.downstream,
2299
2397
  old: replState.old,
2300
2398
  deleteFirst: node.deleteFirst,
2301
- removalPolicy: node.resource.RemovalPolicy
2399
+ removalPolicy: node.resource.RemovalPolicy,
2400
+ providerMode: node.mode
2302
2401
  });
2303
2402
  tracker[fqn] = {
2304
2403
  output: attr,
@@ -2503,7 +2602,8 @@ const converge = Effect.fn(function* (plan, tracker, terminalStatuses, session,
2503
2602
  bindings: stripUnresolved(newBindings),
2504
2603
  downstream: node.downstream,
2505
2604
  namespace,
2506
- removalPolicy: node.resource.RemovalPolicy
2605
+ removalPolicy: node.resource.RemovalPolicy,
2606
+ providerMode: node.mode
2507
2607
  }
2508
2608
  });
2509
2609
  terminalStatuses.set(fqn, {
@@ -2571,18 +2671,24 @@ const converge = Effect.fn(function* (plan, tracker, terminalStatuses, session,
2571
2671
  }
2572
2672
  });
2573
2673
  /**
2574
- * Internal marker: this node's deletion was skipped because a DEPENDENT
2575
- * resource (one that still references it) failed to delete. The dependent's
2576
- * own failure is already recorded in the GC failure list, so nodes failing
2577
- * with ONLY this marker are not re-recorded — they just keep their state so
2578
- * the next destroy retries the whole chain.
2674
+ * Aggregate raised at the end of the deletion phase when one or more
2675
+ * resource deletes failed. Every resource whose delete did not depend on a
2676
+ * failed one was still attempted a single failure no longer strands
2677
+ * unrelated siblings.
2579
2678
  */
2580
- var DependentDeletionFailed = class extends Data.TaggedError("DependentDeletionFailed") {};
2679
+ var DestroyError = class extends Data.TaggedError("DestroyError") {
2680
+ get message() {
2681
+ return [
2682
+ `Failed to delete ${this.failures.length} resource(s)` + (this.blocked.length > 0 ? ` (${this.blocked.length} more skipped because a dependent's delete failed)` : "") + ":",
2683
+ ...this.failures.map((f) => ` ✗ ${f.fqn} (${f.resourceType}): ${Cause.pretty(f.cause)}`),
2684
+ ...this.blocked.map((b) => ` ⊘ ${b.fqn} (${b.resourceType}): skipped — blocked by failed delete of ${b.blockedBy.join(", ")}`)
2685
+ ].join("\n");
2686
+ }
2687
+ };
2581
2688
  const collectGarbage = Effect.fn(function* (plan, session) {
2582
2689
  const state = yield* yield* State;
2583
2690
  const stackName = (yield* Stack).name;
2584
2691
  const stage$1 = yield* Stage;
2585
- const failures = [];
2586
2692
  yield* Effect.all(Object.entries(plan.actionDeletions ?? {}).map(([fqn, node]) => node === void 0 ? Effect.void : Effect.gen(function* () {
2587
2693
  yield* session.emit({
2588
2694
  kind: "status-change",
@@ -2602,11 +2708,14 @@ const collectGarbage = Effect.fn(function* (plan, session) {
2602
2708
  status: "deleted"
2603
2709
  });
2604
2710
  })), { concurrency: "unbounded" });
2711
+ const failures = [];
2712
+ const blockedDeletes = [];
2713
+ const unresolved = /* @__PURE__ */ new Set();
2605
2714
  const deleteGraph = Effect.fn(function* (deletionGraph) {
2606
2715
  const deletions = {};
2607
2716
  const deleteResource = (node, ancestors = /* @__PURE__ */ new Set()) => Effect.gen(function* () {
2608
2717
  const isDeleteNode = (node$1) => "action" in node$1;
2609
- const { fqn, logicalId, namespace, resourceType, instanceId, downstream, props, attr: persistedAttr, provider } = isDeleteNode(node) ? {
2718
+ const { fqn, logicalId, namespace, resourceType, instanceId, downstream, props, attr: persistedAttr, provider, providerMode } = isDeleteNode(node) ? {
2610
2719
  fqn: node.resource.FQN,
2611
2720
  logicalId: node.resource.LogicalId,
2612
2721
  namespace: node.resource.Namespace,
@@ -2615,7 +2724,8 @@ const collectGarbage = Effect.fn(function* (plan, session) {
2615
2724
  downstream: node.downstream,
2616
2725
  props: node.state.props,
2617
2726
  attr: node.state.attr,
2618
- provider: node.provider
2727
+ provider: node.provider,
2728
+ providerMode: node.state.providerMode
2619
2729
  } : {
2620
2730
  fqn: node.fqn,
2621
2731
  logicalId: node.logicalId,
@@ -2625,10 +2735,11 @@ const collectGarbage = Effect.fn(function* (plan, session) {
2625
2735
  downstream: node.old.downstream,
2626
2736
  props: node.old.props,
2627
2737
  attr: node.old.attr,
2628
- provider: yield* tryFindProviderByType(node.old.resourceType).pipe(Effect.flatMap(Option.match({
2738
+ provider: yield* tryFindProviderByType(node.old.resourceType, node.old.providerMode).pipe(Effect.flatMap(Option.match({
2629
2739
  onNone: () => Effect.die(missingProviderError(node.old.resourceType, node.fqn)),
2630
2740
  onSome: Effect.succeed
2631
- })))
2741
+ }))),
2742
+ providerMode: node.old.providerMode
2632
2743
  };
2633
2744
  let attr = persistedAttr;
2634
2745
  const nextAncestors = new Set(ancestors).add(fqn);
@@ -2658,121 +2769,154 @@ const collectGarbage = Effect.fn(function* (plan, session) {
2658
2769
  })
2659
2770
  };
2660
2771
  return yield* deletions[fqn] ??= yield* Effect.cached(Effect.gen(function* () {
2661
- yield* Effect.all(downstream.map((dep) => dep !== fqn && dep in deletionGraph && !ancestors.has(dep) ? deleteResource(deletionGraph[dep], nextAncestors) : Effect.void), { concurrency: "unbounded" }).pipe(Effect.catchCause(() => Effect.fail(new DependentDeletionFailed({ fqn }))));
2662
- if (isDeleteNode(node)) {
2663
- yield* report("deleting");
2664
- if (node.resource.RemovalPolicy === "retain") {
2665
- yield* state.delete({
2666
- stack: stackName,
2667
- stage: stage$1,
2668
- fqn
2669
- });
2670
- yield* report("retained");
2671
- return;
2672
- }
2673
- }
2674
- const retainOldGeneration = !isDeleteNode(node) && node.removalPolicy === "retain";
2675
- if (retainOldGeneration) yield* scopedSession.note("Retaining replaced resource (removal policy: retain)...");
2676
- if (attr === void 0 && !retainOldGeneration) if (provider.read) {
2677
- const recovered = yield* provider.read({
2678
- id: logicalId,
2772
+ const blockedBy = (yield* Effect.all(downstream.map((dep) => dep !== fqn && !ancestors.has(dep) ? dep in deletionGraph ? deleteResource(deletionGraph[dep], nextAncestors).pipe(Effect.map((outcome) => ({
2773
+ dep,
2774
+ outcome
2775
+ }))) : Effect.sync(() => ({
2776
+ dep,
2777
+ outcome: unresolved.has(dep) ? "failed" : "deleted"
2778
+ })) : Effect.succeed({
2779
+ dep,
2780
+ outcome: "deleted"
2781
+ })), { concurrency: "unbounded" })).filter(({ outcome }) => outcome !== "deleted").map(({ dep }) => dep);
2782
+ if (blockedBy.length > 0) {
2783
+ unresolved.add(fqn);
2784
+ blockedDeletes.push({
2679
2785
  fqn,
2680
- instanceId,
2681
- olds: props,
2682
- output: void 0
2683
- }).pipe(instrumentLifecycle("read", fqn, resourceType, logicalId, instanceId));
2684
- if (recovered !== void 0) if (Unowned.is(recovered)) yield* scopedSession.note("Resource exists in the cloud but is not owned by this stack — leaving it in place (re-deploy with --adopt to take ownership, then destroy).");
2685
- else attr = stripUnowned(recovered);
2686
- } else yield* scopedSession.note("No attributes were recorded for this resource (its create was interrupted) and the provider does not implement `read` — if a physical resource was created, it must be cleaned up manually.");
2687
- if (isDeleteNode(node)) yield* commit({
2688
- status: "deleting",
2689
- fqn,
2690
- logicalId,
2691
- instanceId,
2692
- resourceType,
2693
- props,
2694
- attr,
2695
- downstream,
2696
- providerVersion: provider.version ?? 0,
2697
- bindings: excludeDeletedBindings(node.bindings),
2698
- removalPolicy: node.resource.RemovalPolicy
2699
- });
2700
- if (attr !== void 0 && !retainOldGeneration) yield* provider.delete({
2701
- id: logicalId,
2702
- fqn,
2703
- instanceId,
2704
- olds: props,
2705
- output: attr,
2706
- session: scopedSession,
2707
- bindings: []
2708
- }).pipe(instrumentLifecycle("delete", fqn, resourceType, logicalId, instanceId));
2709
- if (isDeleteNode(node)) {
2710
- yield* state.delete({
2711
- stack: stackName,
2712
- stage: stage$1,
2713
- fqn
2786
+ logicalId,
2787
+ resourceType,
2788
+ blockedBy
2714
2789
  });
2715
- yield* report("deleted");
2716
- } else {
2717
- if (!retainOldGeneration) yield* scopedSession.note("Cleaning up replaced resource...");
2718
- if (node.old.status === "replacing" || node.old.status === "replaced") yield* commit({
2719
- status: "replaced",
2790
+ yield* scopedSession.note(`Skipping delete — blocked by failed delete of ${blockedBy.join(", ")}.`);
2791
+ yield* report("skipped");
2792
+ return "blocked";
2793
+ }
2794
+ return yield* deleteResourceBody().pipe(Effect.catchCause((cause) => Effect.gen(function* () {
2795
+ unresolved.add(fqn);
2796
+ failures.push({
2720
2797
  fqn,
2721
- logicalId: node.logicalId,
2722
- instanceId: node.instanceId,
2723
- resourceType: node.resourceType,
2724
- props: node.props,
2725
- attr: node.attr,
2726
- providerVersion: node.providerVersion,
2727
- downstream: node.downstream,
2728
- bindings: excludeDeletedBindings(node.bindings),
2729
- old: node.old.old,
2730
- deleteFirst: node.deleteFirst,
2731
- removalPolicy: node.removalPolicy
2798
+ logicalId,
2799
+ resourceType,
2800
+ cause
2732
2801
  });
2733
- else yield* commit({
2734
- status: "created",
2802
+ yield* report("fail");
2803
+ return "failed";
2804
+ })));
2805
+ }));
2806
+ function deleteResourceBody() {
2807
+ return Effect.gen(function* () {
2808
+ if (isDeleteNode(node)) {
2809
+ yield* report("deleting");
2810
+ if (node.resource.RemovalPolicy === "retain") {
2811
+ yield* state.delete({
2812
+ stack: stackName,
2813
+ stage: stage$1,
2814
+ fqn
2815
+ });
2816
+ yield* report("retained");
2817
+ return "deleted";
2818
+ }
2819
+ }
2820
+ const retainOldGeneration = !isDeleteNode(node) && node.removalPolicy === "retain";
2821
+ if (retainOldGeneration) yield* scopedSession.note("Retaining replaced resource (removal policy: retain)...");
2822
+ if (attr === void 0 && !retainOldGeneration) if (provider.read) {
2823
+ const recovered = yield* provider.read({
2824
+ id: logicalId,
2825
+ fqn,
2826
+ instanceId,
2827
+ olds: props,
2828
+ output: void 0
2829
+ }).pipe(instrumentLifecycle("read", fqn, resourceType, logicalId, instanceId));
2830
+ if (recovered !== void 0) if (Unowned.is(recovered)) yield* scopedSession.note("Resource exists in the cloud but is not owned by this stack — leaving it in place (re-deploy with --adopt to take ownership, then destroy).");
2831
+ else attr = stripUnowned(recovered);
2832
+ } else yield* scopedSession.note("No attributes were recorded for this resource (its create was interrupted) and the provider does not implement `read` — if a physical resource was created, it must be cleaned up manually.");
2833
+ if (isDeleteNode(node)) yield* commit({
2834
+ status: "deleting",
2735
2835
  fqn,
2736
- logicalId: node.logicalId,
2737
- instanceId: node.instanceId,
2738
- resourceType: node.resourceType,
2739
- props: node.props,
2740
- attr: node.attr,
2741
- providerVersion: node.providerVersion,
2742
- downstream: node.downstream,
2836
+ logicalId,
2837
+ instanceId,
2838
+ resourceType,
2839
+ props,
2840
+ attr,
2841
+ downstream,
2842
+ providerVersion: provider.version ?? 0,
2743
2843
  bindings: excludeDeletedBindings(node.bindings),
2744
- removalPolicy: node.removalPolicy
2844
+ removalPolicy: node.resource.RemovalPolicy,
2845
+ providerMode
2745
2846
  });
2746
- yield* scopedSession.note(retainOldGeneration ? "Replaced resource retained." : "Replaced resource cleanup complete.");
2747
- }
2748
- }).pipe(Effect.catchCause((cause) => Effect.gen(function* () {
2749
- if (!cause.reasons.every((reason) => Cause.isFailReason(reason) && reason.error instanceof DependentDeletionFailed)) failures.push({
2750
- fqn,
2751
- logicalId,
2752
- type: resourceType,
2753
- cause
2847
+ if (attr !== void 0 && !retainOldGeneration) yield* provider.delete({
2848
+ id: logicalId,
2849
+ fqn,
2850
+ instanceId,
2851
+ olds: props,
2852
+ output: attr,
2853
+ session: scopedSession,
2854
+ bindings: []
2855
+ }).pipe(instrumentLifecycle("delete", fqn, resourceType, logicalId, instanceId));
2856
+ if (isDeleteNode(node)) {
2857
+ yield* state.delete({
2858
+ stack: stackName,
2859
+ stage: stage$1,
2860
+ fqn
2861
+ });
2862
+ yield* report("deleted");
2863
+ } else {
2864
+ if (!retainOldGeneration) yield* scopedSession.note("Cleaning up replaced resource...");
2865
+ if (node.old.status === "replacing" || node.old.status === "replaced") yield* commit({
2866
+ status: "replaced",
2867
+ fqn,
2868
+ logicalId: node.logicalId,
2869
+ instanceId: node.instanceId,
2870
+ resourceType: node.resourceType,
2871
+ props: node.props,
2872
+ attr: node.attr,
2873
+ providerVersion: node.providerVersion,
2874
+ downstream: node.downstream,
2875
+ bindings: excludeDeletedBindings(node.bindings),
2876
+ old: node.old.old,
2877
+ deleteFirst: node.deleteFirst,
2878
+ removalPolicy: node.removalPolicy,
2879
+ providerMode: node.providerMode
2880
+ });
2881
+ else yield* commit({
2882
+ status: "created",
2883
+ fqn,
2884
+ logicalId: node.logicalId,
2885
+ instanceId: node.instanceId,
2886
+ resourceType: node.resourceType,
2887
+ props: node.props,
2888
+ attr: node.attr,
2889
+ providerVersion: node.providerVersion,
2890
+ downstream: node.downstream,
2891
+ bindings: excludeDeletedBindings(node.bindings),
2892
+ removalPolicy: node.removalPolicy,
2893
+ providerMode: node.providerMode
2894
+ });
2895
+ yield* scopedSession.note(retainOldGeneration ? "Replaced resource retained." : "Replaced resource cleanup complete.");
2896
+ }
2897
+ return "deleted";
2754
2898
  });
2755
- yield* report("fail");
2756
- return yield* Effect.failCause(cause);
2757
- }))));
2899
+ }
2758
2900
  });
2759
- yield* Effect.all(Object.values(deletionGraph).filter((node) => node !== void 0).map((node) => deleteResource(node).pipe(Effect.ignore)), { concurrency: "unbounded" });
2901
+ yield* Effect.all(Object.values(deletionGraph).filter((node) => node !== void 0).map((node) => deleteResource(node)), { concurrency: "unbounded" });
2760
2902
  });
2761
2903
  let first = true;
2762
2904
  while (true) {
2763
- const remainingReplacedResources = yield* state.getReplacedResources({
2905
+ const remainingReplacedResources = (yield* state.getReplacedResources({
2764
2906
  stack: stackName,
2765
2907
  stage: stage$1
2766
- });
2908
+ })).filter((replaced) => !unresolved.has(replaced.fqn));
2767
2909
  if (!first && remainingReplacedResources.length === 0) break;
2768
2910
  yield* deleteGraph({
2769
2911
  ...first ? plan.deletions : {},
2770
2912
  ...Object.fromEntries(remainingReplacedResources.map((replaced) => [replaced.fqn, replaced]))
2771
2913
  });
2772
2914
  first = false;
2773
- if (failures.length > 0) break;
2774
2915
  }
2775
- if (failures.length > 0) return yield* Effect.failCause(failures.map((f) => f.cause).reduce(Cause.combine));
2916
+ if (failures.length > 0) return yield* Effect.fail(new DestroyError({
2917
+ failures,
2918
+ blocked: blockedDeletes
2919
+ }));
2776
2920
  });
2777
2921
  const excludeDeletedBindings = (bindings) => bindings.flatMap(({ action, sid, data }) => action === "delete" ? [] : [{
2778
2922
  sid,
@@ -2789,13 +2933,12 @@ const retryIfCancelled = Effect.retry({ while: (e) => e instanceof PromptCancell
2789
2933
  *
2790
2934
  * Returns `undefined` if the user cancels (Ctrl+C / Escape).
2791
2935
  *
2792
- * Uses `Effect.callback` so fiber interruption propagates via the abort
2793
- * signal to any async resources we own; the clack prompt itself is left
2794
- * to resolve — its result is ignored after interruption.
2936
+ * Uses `Effect.callback` so fiber interruption propagates to the clack
2937
+ * prompt through its abort signal, releasing stdin and restoring the cursor.
2795
2938
  */
2796
2939
  const prompt = (fn) => Effect.callback((resume, signal) => {
2797
2940
  let settled = false;
2798
- fn().then((result) => {
2941
+ fn(signal).then((result) => {
2799
2942
  if (settled || signal.aborted) return;
2800
2943
  settled = true;
2801
2944
  if (p.isCancel(result)) resume(Effect.fail(new PromptCancelled()));
@@ -2809,11 +2952,34 @@ const prompt = (fn) => Effect.callback((resume, signal) => {
2809
2952
  const success = (str) => Effect.sync(() => p.log.success(str));
2810
2953
  const warn = (str) => Effect.sync(() => p.log.warn(str));
2811
2954
  const info = (str) => Effect.sync(() => p.log.info(str));
2812
- const text = (opts) => prompt(() => p.text(opts));
2813
- const password = (opts) => prompt(() => p.password(opts));
2814
- const select = (opts) => prompt(() => p.select(opts));
2815
- const confirm = (opts) => prompt(() => p.confirm(opts));
2816
- const multiselect = (opts) => prompt(() => p.multiselect(opts));
2955
+ const text = (opts) => {
2956
+ const validate = opts.validate;
2957
+ return prompt((signal) => p.text({
2958
+ ...opts,
2959
+ signal,
2960
+ validate: validate === void 0 ? void 0 : (value) => validate(value ?? "")
2961
+ }));
2962
+ };
2963
+ const password = (opts) => {
2964
+ const validate = opts.validate;
2965
+ return prompt((signal) => p.password({
2966
+ ...opts,
2967
+ signal,
2968
+ validate: validate === void 0 ? void 0 : (value) => validate(value ?? "")
2969
+ }));
2970
+ };
2971
+ const select = (opts) => prompt((signal) => p.select({
2972
+ ...opts,
2973
+ signal
2974
+ }));
2975
+ const confirm = (opts) => prompt((signal) => p.confirm({
2976
+ ...opts,
2977
+ signal
2978
+ }));
2979
+ const multiselect = (opts) => prompt((signal) => p.multiselect({
2980
+ ...opts,
2981
+ signal
2982
+ }));
2817
2983
  /**
2818
2984
  * Open a URL in the user's default browser.
2819
2985
  *
@@ -3388,13 +3554,42 @@ const revoke = (credentials) => Effect.gen(function* () {
3388
3554
  });
3389
3555
  });
3390
3556
  /**
3557
+ * Exchange a code copied from the hosted relay page, or extract the code from
3558
+ * either the hosted or loopback callback URL.
3559
+ */
3560
+ const exchangeCallbackInput$1 = (input, authorization) => Effect.gen(function* () {
3561
+ const value = input.trim();
3562
+ let code = value;
3563
+ let state = null;
3564
+ try {
3565
+ const url = new URL(value);
3566
+ code = url.searchParams.get("code") ?? "";
3567
+ state = url.searchParams.get("state");
3568
+ } catch {
3569
+ const separator = value.lastIndexOf("#");
3570
+ if (separator >= 0) {
3571
+ code = value.slice(0, separator);
3572
+ state = value.slice(separator + 1);
3573
+ }
3574
+ }
3575
+ if (!code) return yield* new OAuthError$1({
3576
+ error: "invalid_request",
3577
+ errorDescription: "The authorization code is missing."
3578
+ });
3579
+ if (state !== null && state !== authorization.state) return yield* new OAuthError$1({
3580
+ error: "invalid_request",
3581
+ errorDescription: "The authorization state does not match."
3582
+ });
3583
+ return yield* exchange$1(code, authorization.verifier);
3584
+ });
3585
+ /**
3391
3586
  * Start a local HTTP server to listen for the OAuth callback, exchange
3392
3587
  * the authorization code, and return the credentials.
3393
3588
  *
3394
3589
  * Times out after 5 minutes.
3395
3590
  */
3396
3591
  const callback$1 = (authorization) => Effect.tryPromise({
3397
- try: () => callbackPromise$1(authorization),
3592
+ try: (signal) => callbackPromise$1(authorization, signal),
3398
3593
  catch: (err) => {
3399
3594
  if (err instanceof OAuthError$1) return err;
3400
3595
  return new OAuthError$1({
@@ -3403,11 +3598,21 @@ const callback$1 = (authorization) => Effect.tryPromise({
3403
3598
  });
3404
3599
  }
3405
3600
  });
3406
- function callbackPromise$1(authorization) {
3407
- const { pathname, port } = new URL(OAUTH_REDIRECT_URI$1);
3601
+ function callbackPromise$1(authorization, signal) {
3602
+ const { pathname, port } = new URL(OAUTH_LOCAL_CALLBACK_URI$1);
3408
3603
  return new Promise((resolve, reject) => {
3409
3604
  const server = http.createServer(async (req, res) => {
3410
3605
  const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
3606
+ if (url.pathname === "/auth/ping") {
3607
+ res.writeHead(req.method === "OPTIONS" ? 204 : 200, {
3608
+ "Access-Control-Allow-Origin": new URL(OAUTH_REDIRECT_URI$1).origin,
3609
+ "Access-Control-Allow-Methods": "GET, OPTIONS",
3610
+ "Access-Control-Allow-Private-Network": "true",
3611
+ "Cache-Control": "no-store"
3612
+ });
3613
+ res.end();
3614
+ return;
3615
+ }
3411
3616
  if (url.pathname !== pathname) {
3412
3617
  res.statusCode = 404;
3413
3618
  res.end("Not Found");
@@ -3469,8 +3674,10 @@ function callbackPromise$1(authorization) {
3469
3674
  }, 300 * 1e3);
3470
3675
  function cleanup() {
3471
3676
  clearTimeout(timeout);
3677
+ signal.removeEventListener("abort", cleanup);
3472
3678
  server.close();
3473
3679
  }
3680
+ signal.addEventListener("abort", cleanup, { once: true });
3474
3681
  server.on("error", (err) => {
3475
3682
  cleanup();
3476
3683
  reject(new OAuthError$1({
@@ -3573,8 +3780,12 @@ const CloudflareAuth = AuthProviderLayer()(CLOUDFLARE_AUTH_PROVIDER_NAME, Effect
3573
3780
  yield* info("Cloudflare: opening browser for OAuth login...");
3574
3781
  yield* info(authorization.url);
3575
3782
  yield* openUrl(authorization.url).pipe(Effect.catch(() => warn("Cloudflare: could not open browser automatically. Please open the URL above manually.")));
3576
- yield* info("Cloudflare: waiting for authorization (up to 5 minutes)...");
3577
- const credentials = yield* callback$1(authorization);
3783
+ yield* info("Cloudflare: waiting for authorization (up to 5 minutes).");
3784
+ const credentials = yield* Effect.raceFirst(callback$1(authorization), text({
3785
+ message: "Paste the authorization code or callback URL",
3786
+ placeholder: "The browser will complete this automatically when local",
3787
+ validate: (value) => value.trim().length > 0 ? void 0 : "Paste a code or URL"
3788
+ }).pipe(Effect.flatMap((input) => exchangeCallbackInput$1(input, authorization))));
3578
3789
  yield* store.write(profileName, "cf-oauth", credentials);
3579
3790
  yield* success("Cloudflare: OAuth credentials saved.");
3580
3791
  return credentials;
@@ -3852,7 +4063,8 @@ const DEFAULT_SCOPES = [
3852
4063
  "zone:read"
3853
4064
  ];
3854
4065
  const OAUTH_CLIENT_ID$1 = "6d8c2255-0773-45f6-b376-2914632e6f91";
3855
- const OAUTH_REDIRECT_URI$1 = "http://localhost:9976/auth/callback";
4066
+ const OAUTH_REDIRECT_URI$1 = "https://alchemy.run/auth/callback";
4067
+ const OAUTH_LOCAL_CALLBACK_URI$1 = "http://localhost:9976/auth/callback";
3856
4068
  const OAUTH_ENDPOINTS$1 = {
3857
4069
  authorize: "https://dash.cloudflare.com/oauth2/authorize",
3858
4070
  token: "https://dash.cloudflare.com/oauth2/token",
@@ -4198,7 +4410,8 @@ var OAuthError = class extends Data.TaggedError("OAuthError") {};
4198
4410
  */
4199
4411
  const OAUTH_CLIENT_ID = "pscale_app_aa12e3938baebb788aac443f66e422da";
4200
4412
  const OAUTH_CLIENT_SECRET = "pscale_app_secret_yyZ3Q8oe99GP9_yA5wrA5er6RuN6Lz9dC66Bj1OJzpg";
4201
- const OAUTH_REDIRECT_URI = "http://localhost:9976/auth/callback";
4413
+ const OAUTH_REDIRECT_URI = "https://alchemy.run/auth/callback";
4414
+ const OAUTH_LOCAL_CALLBACK_URI = "http://localhost:9976/auth/callback";
4202
4415
  const OAUTH_ENDPOINTS = {
4203
4416
  authorize: "https://app.planetscale.com/oauth/authorize",
4204
4417
  token: "https://auth.planetscale.com/oauth/token"
@@ -4288,13 +4501,42 @@ const refresh = (credentials) => tokenRequest({
4288
4501
  client_secret: OAUTH_CLIENT_SECRET
4289
4502
  });
4290
4503
  /**
4504
+ * Exchange a code copied from the hosted relay page, or extract the code from
4505
+ * either the hosted or loopback callback URL.
4506
+ */
4507
+ const exchangeCallbackInput = (input, authorization) => Effect.gen(function* () {
4508
+ const value = input.trim();
4509
+ let code = value;
4510
+ let state = null;
4511
+ try {
4512
+ const url = new URL(value);
4513
+ code = url.searchParams.get("code") ?? "";
4514
+ state = url.searchParams.get("state");
4515
+ } catch {
4516
+ const separator = value.lastIndexOf("#");
4517
+ if (separator >= 0) {
4518
+ code = value.slice(0, separator);
4519
+ state = value.slice(separator + 1);
4520
+ }
4521
+ }
4522
+ if (!code) return yield* new OAuthError({
4523
+ error: "invalid_request",
4524
+ errorDescription: "The authorization code is missing."
4525
+ });
4526
+ if (state !== null && state !== authorization.state) return yield* new OAuthError({
4527
+ error: "invalid_request",
4528
+ errorDescription: "The authorization state does not match."
4529
+ });
4530
+ return yield* exchange(code);
4531
+ });
4532
+ /**
4291
4533
  * Start a local HTTP server to listen for the OAuth callback, exchange
4292
4534
  * the authorization code, and return the credentials.
4293
4535
  *
4294
4536
  * Times out after 5 minutes.
4295
4537
  */
4296
4538
  const callback = (authorization) => Effect.tryPromise({
4297
- try: () => callbackPromise(authorization),
4539
+ try: (signal) => callbackPromise(authorization, signal),
4298
4540
  catch: (err) => {
4299
4541
  if (err instanceof OAuthError) return err;
4300
4542
  return new OAuthError({
@@ -4303,11 +4545,21 @@ const callback = (authorization) => Effect.tryPromise({
4303
4545
  });
4304
4546
  }
4305
4547
  });
4306
- function callbackPromise(authorization) {
4307
- const { pathname, port } = new URL(OAUTH_REDIRECT_URI);
4548
+ function callbackPromise(authorization, signal) {
4549
+ const { pathname, port } = new URL(OAUTH_LOCAL_CALLBACK_URI);
4308
4550
  return new Promise((resolve, reject) => {
4309
4551
  const server = http.createServer(async (req, res) => {
4310
4552
  const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
4553
+ if (url.pathname === "/auth/ping") {
4554
+ res.writeHead(req.method === "OPTIONS" ? 204 : 200, {
4555
+ "Access-Control-Allow-Origin": new URL(OAUTH_REDIRECT_URI).origin,
4556
+ "Access-Control-Allow-Methods": "GET, OPTIONS",
4557
+ "Access-Control-Allow-Private-Network": "true",
4558
+ "Cache-Control": "no-store"
4559
+ });
4560
+ res.end();
4561
+ return;
4562
+ }
4311
4563
  if (url.pathname !== pathname) {
4312
4564
  res.statusCode = 404;
4313
4565
  res.end("Not Found");
@@ -4369,8 +4621,10 @@ function callbackPromise(authorization) {
4369
4621
  }, 300 * 1e3);
4370
4622
  function cleanup() {
4371
4623
  clearTimeout(timeout);
4624
+ signal.removeEventListener("abort", cleanup);
4372
4625
  server.close();
4373
4626
  }
4627
+ signal.addEventListener("abort", cleanup, { once: true });
4374
4628
  server.on("error", (err) => {
4375
4629
  cleanup();
4376
4630
  reject(new OAuthError({
@@ -4462,8 +4716,12 @@ const PlanetscaleAuth = AuthProviderLayer()(PLANETSCALE_AUTH_PROVIDER_NAME, Effe
4462
4716
  yield* info("Planetscale: opening browser for OAuth login...");
4463
4717
  yield* info(authorization.url);
4464
4718
  yield* openUrl(authorization.url).pipe(Effect.catch(() => warn("Planetscale: could not open browser automatically. Please open the URL above manually.")));
4465
- yield* info("Planetscale: waiting for authorization (up to 5 minutes)...");
4466
- const credentials = yield* callback(authorization);
4719
+ yield* info("Planetscale: waiting for authorization (up to 5 minutes).");
4720
+ const credentials = yield* Effect.raceFirst(callback(authorization), text({
4721
+ message: "Paste the authorization code or callback URL",
4722
+ placeholder: "The browser will complete this automatically when local",
4723
+ validate: (value) => value.trim().length > 0 ? void 0 : "Paste a code or URL"
4724
+ }).pipe(Effect.flatMap((input) => exchangeCallbackInput(input, authorization))));
4467
4725
  yield* store.write(profileName, "planetscale-oauth", credentials);
4468
4726
  yield* success("Planetscale: OAuth credentials saved.");
4469
4727
  return credentials;
@@ -4765,7 +5023,7 @@ const stackSpanAttrs = (args) => ({
4765
5023
  "alchemy.adopt": !!args.adopt
4766
5024
  });
4767
5025
  const adopt = Flag.boolean("adopt").pipe(Flag.withDescription("Adopt pre-existing cloud resources that conflict with this stack instead of failing. Useful for re-importing infrastructure into a fresh state store."), Flag.withDefault(false));
4768
- const execStack = Effect.fn(function* ({ main, stage: stage$1, envFile: envFile$1, profile: profile$1, dryRun: dryRun$1 = false, force: force$1 = false, yes: yes$1 = false, destroy = false, dev = false, adopt: adopt$1 = false }) {
5026
+ const execStack = Effect.fn(function* ({ main, stage: stage$1, envFile: envFile$1, profile: profile$1, dryRun: dryRun$1 = false, force: force$1 = false, yes: yes$1 = false, destroy: destroy$1 = false, dev = false, adopt: adopt$1 = false }) {
4769
5027
  const stackEffect = yield* importStack(main);
4770
5028
  const services$1 = Layer.mergeAll(Layer.effect(AlchemyContext, AlchemyContext.pipe(Effect.map((ctx) => ({
4771
5029
  ...ctx,
@@ -4777,13 +5035,7 @@ const execStack = Effect.fn(function* ({ main, stage: stage$1, envFile: envFile$
4777
5035
  const cli = yield* Cli;
4778
5036
  const stack = yield* stackEffect;
4779
5037
  yield* Effect.gen(function* () {
4780
- const updatePlan = yield* make(destroy ? {
4781
- ...stack,
4782
- resources: {},
4783
- bindings: {},
4784
- actions: {},
4785
- output: {}
4786
- } : stack, { force: force$1 });
5038
+ const updatePlan = destroy$1 ? yield* destroy(stack) : yield* make(stack, { force: force$1 });
4787
5039
  if (dryRun$1) yield* cli.displayPlan(updatePlan);
4788
5040
  else {
4789
5041
  const hasChanges = Object.keys(updatePlan.deletions).length > 0 || Object.values(updatePlan.resources).some((node) => node.action !== "noop" || node.bindings.some((b) => b.action !== "noop"));