alchemy 2.0.0-beta.65 → 2.0.0-beta.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (959) hide show
  1. package/bin/exec.js +578 -224
  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/_shared.d.ts.map +1 -1
  210. package/lib/Cli/commands/_shared.js +2 -1
  211. package/lib/Cli/commands/_shared.js.map +1 -1
  212. package/lib/Cli/commands/cloudflare.d.ts +1 -1
  213. package/lib/Cli/commands/deploy.d.ts.map +1 -1
  214. package/lib/Cli/commands/deploy.js +3 -11
  215. package/lib/Cli/commands/deploy.js.map +1 -1
  216. package/lib/Cli/commands/logs.d.ts.map +1 -1
  217. package/lib/Cli/commands/logs.js +3 -1
  218. package/lib/Cli/commands/logs.js.map +1 -1
  219. package/lib/Cli/commands/tail.d.ts.map +1 -1
  220. package/lib/Cli/commands/tail.js +3 -1
  221. package/lib/Cli/commands/tail.js.map +1 -1
  222. package/lib/Cli/main.d.ts.map +1 -1
  223. package/lib/Cli/main.js +5 -4
  224. package/lib/Cli/main.js.map +1 -1
  225. package/lib/Cloudflare/AI/Search.d.ts +4 -15
  226. package/lib/Cloudflare/AI/Search.d.ts.map +1 -1
  227. package/lib/Cloudflare/AI/Search.js +4 -6
  228. package/lib/Cloudflare/AI/Search.js.map +1 -1
  229. package/lib/Cloudflare/AI/SearchInstance.d.ts +7 -26
  230. package/lib/Cloudflare/AI/SearchInstance.d.ts.map +1 -1
  231. package/lib/Cloudflare/AI/SearchInstance.js +7 -26
  232. package/lib/Cloudflare/AI/SearchInstance.js.map +1 -1
  233. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts +3 -0
  234. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
  235. package/lib/Cloudflare/ApiToken/AccountApiToken.js +3 -0
  236. package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
  237. package/lib/Cloudflare/Auth/AuthProvider.d.ts +2 -1
  238. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  239. package/lib/Cloudflare/Auth/AuthProvider.js +8 -3
  240. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  241. package/lib/Cloudflare/Auth/OAuthClient.d.ts +5 -0
  242. package/lib/Cloudflare/Auth/OAuthClient.d.ts.map +1 -1
  243. package/lib/Cloudflare/Auth/OAuthClient.js +50 -4
  244. package/lib/Cloudflare/Auth/OAuthClient.js.map +1 -1
  245. package/lib/Cloudflare/Containers/Container.d.ts +81 -3
  246. package/lib/Cloudflare/Containers/Container.d.ts.map +1 -1
  247. package/lib/Cloudflare/Containers/Container.js +70 -0
  248. package/lib/Cloudflare/Containers/Container.js.map +1 -1
  249. package/lib/Cloudflare/Containers/ContainerApplication.d.ts +22 -1
  250. package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
  251. package/lib/Cloudflare/Containers/ContainerApplication.js +4 -1
  252. package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
  253. package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
  254. package/lib/Cloudflare/Containers/ContainerBundle.js +10 -2
  255. package/lib/Cloudflare/Containers/ContainerBundle.js.map +1 -1
  256. package/lib/Cloudflare/Containers/ContainerProvider.d.ts.map +1 -1
  257. package/lib/Cloudflare/Containers/ContainerProvider.js +43 -0
  258. package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
  259. package/lib/Cloudflare/Credentials.d.ts +21 -1
  260. package/lib/Cloudflare/Credentials.d.ts.map +1 -1
  261. package/lib/Cloudflare/Credentials.js +52 -9
  262. package/lib/Cloudflare/Credentials.js.map +1 -1
  263. package/lib/Cloudflare/D1/ApplyMigrations.d.ts +30 -5
  264. package/lib/Cloudflare/D1/ApplyMigrations.d.ts.map +1 -1
  265. package/lib/Cloudflare/D1/ApplyMigrations.js +36 -26
  266. package/lib/Cloudflare/D1/ApplyMigrations.js.map +1 -1
  267. package/lib/Cloudflare/D1/Database.d.ts +18 -1
  268. package/lib/Cloudflare/D1/Database.d.ts.map +1 -1
  269. package/lib/Cloudflare/D1/Database.js +134 -2
  270. package/lib/Cloudflare/D1/Database.js.map +1 -1
  271. package/lib/Cloudflare/D1/LocalD1Gateway.d.ts +39 -0
  272. package/lib/Cloudflare/D1/LocalD1Gateway.d.ts.map +1 -0
  273. package/lib/Cloudflare/D1/LocalD1Gateway.js +100 -0
  274. package/lib/Cloudflare/D1/LocalD1Gateway.js.map +1 -0
  275. package/lib/Cloudflare/D1/QueryDatabaseHttpClient.d.ts +31 -0
  276. package/lib/Cloudflare/D1/QueryDatabaseHttpClient.d.ts.map +1 -1
  277. package/lib/Cloudflare/D1/QueryDatabaseHttpClient.js +13 -6
  278. package/lib/Cloudflare/D1/QueryDatabaseHttpClient.js.map +1 -1
  279. package/lib/Cloudflare/D1/QueryDatabaseLocal.d.ts.map +1 -1
  280. package/lib/Cloudflare/D1/QueryDatabaseLocal.js +21 -2
  281. package/lib/Cloudflare/D1/QueryDatabaseLocal.js.map +1 -1
  282. package/lib/Cloudflare/DNS/Record.d.ts +3 -1
  283. package/lib/Cloudflare/DNS/Record.d.ts.map +1 -1
  284. package/lib/Cloudflare/DNS/Record.js +23 -4
  285. package/lib/Cloudflare/DNS/Record.js.map +1 -1
  286. package/lib/Cloudflare/Email/Address.d.ts.map +1 -1
  287. package/lib/Cloudflare/Email/Address.js +15 -1
  288. package/lib/Cloudflare/Email/Address.js.map +1 -1
  289. package/lib/Cloudflare/Email/SendBinding.d.ts.map +1 -1
  290. package/lib/Cloudflare/Email/SendBinding.js +1 -0
  291. package/lib/Cloudflare/Email/SendBinding.js.map +1 -1
  292. package/lib/Cloudflare/Email/SendEmail.d.ts +12 -0
  293. package/lib/Cloudflare/Email/SendEmail.d.ts.map +1 -1
  294. package/lib/Cloudflare/Email/SendEmail.js +1 -0
  295. package/lib/Cloudflare/Email/SendEmail.js.map +1 -1
  296. package/lib/Cloudflare/Flagship/App.d.ts.map +1 -1
  297. package/lib/Cloudflare/Flagship/App.js +8 -3
  298. package/lib/Cloudflare/Flagship/App.js.map +1 -1
  299. package/lib/Cloudflare/KV/LocalKVGateway.d.ts +15 -0
  300. package/lib/Cloudflare/KV/LocalKVGateway.d.ts.map +1 -0
  301. package/lib/Cloudflare/KV/LocalKVGateway.js +64 -0
  302. package/lib/Cloudflare/KV/LocalKVGateway.js.map +1 -0
  303. package/lib/Cloudflare/KV/Namespace.d.ts +9 -1
  304. package/lib/Cloudflare/KV/Namespace.d.ts.map +1 -1
  305. package/lib/Cloudflare/KV/Namespace.js +45 -1
  306. package/lib/Cloudflare/KV/Namespace.js.map +1 -1
  307. package/lib/Cloudflare/KV/NamespaceLocal.d.ts +16 -5
  308. package/lib/Cloudflare/KV/NamespaceLocal.d.ts.map +1 -1
  309. package/lib/Cloudflare/KV/NamespaceLocal.js +21 -4
  310. package/lib/Cloudflare/KV/NamespaceLocal.js.map +1 -1
  311. package/lib/Cloudflare/KV/ReadNamespaceLocal.d.ts.map +1 -1
  312. package/lib/Cloudflare/KV/ReadNamespaceLocal.js +5 -1
  313. package/lib/Cloudflare/KV/ReadNamespaceLocal.js.map +1 -1
  314. package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.d.ts.map +1 -1
  315. package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.js +5 -1
  316. package/lib/Cloudflare/KV/ReadWriteNamespaceLocal.js.map +1 -1
  317. package/lib/Cloudflare/KV/WriteNamespaceLocal.d.ts.map +1 -1
  318. package/lib/Cloudflare/KV/WriteNamespaceLocal.js +5 -1
  319. package/lib/Cloudflare/KV/WriteNamespaceLocal.js.map +1 -1
  320. package/lib/Cloudflare/LocalGateway.d.ts +25 -0
  321. package/lib/Cloudflare/LocalGateway.d.ts.map +1 -0
  322. package/lib/Cloudflare/LocalGateway.js +70 -0
  323. package/lib/Cloudflare/LocalGateway.js.map +1 -0
  324. package/lib/Cloudflare/LocalRuntime.d.ts +14 -1
  325. package/lib/Cloudflare/LocalRuntime.d.ts.map +1 -1
  326. package/lib/Cloudflare/LocalRuntime.js +16 -1
  327. package/lib/Cloudflare/LocalRuntime.js.map +1 -1
  328. package/lib/Cloudflare/Logs.d.ts.map +1 -1
  329. package/lib/Cloudflare/Logs.js +18 -6
  330. package/lib/Cloudflare/Logs.js.map +1 -1
  331. package/lib/Cloudflare/Providers.d.ts +1 -1
  332. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  333. package/lib/Cloudflare/Providers.js +6 -2
  334. package/lib/Cloudflare/Providers.js.map +1 -1
  335. package/lib/Cloudflare/Queues/Consumer.d.ts +16 -3
  336. package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
  337. package/lib/Cloudflare/Queues/Consumer.js +51 -3
  338. package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
  339. package/lib/Cloudflare/Queues/Queue.d.ts +4 -3
  340. package/lib/Cloudflare/Queues/Queue.d.ts.map +1 -1
  341. package/lib/Cloudflare/Queues/Queue.js +7 -17
  342. package/lib/Cloudflare/Queues/Queue.js.map +1 -1
  343. package/lib/Cloudflare/Queues/QueueBinding.d.ts.map +1 -1
  344. package/lib/Cloudflare/Queues/QueueBinding.js +19 -0
  345. package/lib/Cloudflare/Queues/QueueBinding.js.map +1 -1
  346. package/lib/Cloudflare/Queues/QueueShim.d.ts +55 -0
  347. package/lib/Cloudflare/Queues/QueueShim.d.ts.map +1 -0
  348. package/lib/Cloudflare/Queues/QueueShim.js +177 -0
  349. package/lib/Cloudflare/Queues/QueueShim.js.map +1 -0
  350. package/lib/Cloudflare/R2/Bucket.d.ts +14 -1
  351. package/lib/Cloudflare/R2/Bucket.d.ts.map +1 -1
  352. package/lib/Cloudflare/R2/Bucket.js +53 -1
  353. package/lib/Cloudflare/R2/Bucket.js.map +1 -1
  354. package/lib/Cloudflare/R2/BucketBinding.d.ts +10 -0
  355. package/lib/Cloudflare/R2/BucketBinding.d.ts.map +1 -1
  356. package/lib/Cloudflare/R2/BucketBinding.js +14 -3
  357. package/lib/Cloudflare/R2/BucketBinding.js.map +1 -1
  358. package/lib/Cloudflare/R2/BucketLocal.d.ts +13 -6
  359. package/lib/Cloudflare/R2/BucketLocal.d.ts.map +1 -1
  360. package/lib/Cloudflare/R2/BucketLocal.js +19 -6
  361. package/lib/Cloudflare/R2/BucketLocal.js.map +1 -1
  362. package/lib/Cloudflare/R2/LocalR2Gateway.d.ts +15 -0
  363. package/lib/Cloudflare/R2/LocalR2Gateway.d.ts.map +1 -0
  364. package/lib/Cloudflare/R2/LocalR2Gateway.js +65 -0
  365. package/lib/Cloudflare/R2/LocalR2Gateway.js.map +1 -0
  366. package/lib/Cloudflare/R2/ReadBucketLocal.d.ts.map +1 -1
  367. package/lib/Cloudflare/R2/ReadBucketLocal.js +5 -1
  368. package/lib/Cloudflare/R2/ReadBucketLocal.js.map +1 -1
  369. package/lib/Cloudflare/R2/ReadWriteBucketLocal.d.ts.map +1 -1
  370. package/lib/Cloudflare/R2/ReadWriteBucketLocal.js +5 -1
  371. package/lib/Cloudflare/R2/ReadWriteBucketLocal.js.map +1 -1
  372. package/lib/Cloudflare/R2/WriteBucketLocal.d.ts.map +1 -1
  373. package/lib/Cloudflare/R2/WriteBucketLocal.js +5 -1
  374. package/lib/Cloudflare/R2/WriteBucketLocal.js.map +1 -1
  375. package/lib/Cloudflare/Ruleset/AccountEntrypoint.d.ts.map +1 -1
  376. package/lib/Cloudflare/Ruleset/AccountEntrypoint.js +5 -1
  377. package/lib/Cloudflare/Ruleset/AccountEntrypoint.js.map +1 -1
  378. package/lib/Cloudflare/Ruleset/Ruleset.d.ts.map +1 -1
  379. package/lib/Cloudflare/Ruleset/Ruleset.js +19 -6
  380. package/lib/Cloudflare/Ruleset/Ruleset.js.map +1 -1
  381. package/lib/Cloudflare/Rum/Site.js +10 -2
  382. package/lib/Cloudflare/Rum/Site.js.map +1 -1
  383. package/lib/Cloudflare/StateStore/Api.d.ts +31 -2
  384. package/lib/Cloudflare/StateStore/Api.js +1 -1
  385. package/lib/Cloudflare/StateStore/Api.js.map +1 -1
  386. package/lib/Cloudflare/StateStore/State.d.ts +1 -1
  387. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  388. package/lib/Cloudflare/Tunnel/Tunnel.d.ts.map +1 -1
  389. package/lib/Cloudflare/Tunnel/Tunnel.js +20 -1
  390. package/lib/Cloudflare/Tunnel/Tunnel.js.map +1 -1
  391. package/lib/Cloudflare/Website/StaticSite.d.ts +34 -7
  392. package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
  393. package/lib/Cloudflare/Website/StaticSite.js +108 -24
  394. package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
  395. package/lib/Cloudflare/Website/Vite.d.ts +33 -19
  396. package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
  397. package/lib/Cloudflare/Website/Vite.js +33 -19
  398. package/lib/Cloudflare/Website/Vite.js.map +1 -1
  399. package/lib/Cloudflare/Workers/Compatibility.d.ts.map +1 -1
  400. package/lib/Cloudflare/Workers/Compatibility.js +26 -7
  401. package/lib/Cloudflare/Workers/Compatibility.js.map +1 -1
  402. package/lib/Cloudflare/Workers/DurableObject.d.ts +22 -0
  403. package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
  404. package/lib/Cloudflare/Workers/DurableObject.js +22 -0
  405. package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
  406. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  407. package/lib/Cloudflare/Workers/DurableObjectBridge.js +20 -5
  408. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  409. package/lib/Cloudflare/Workers/InferEnv.d.ts +4 -2
  410. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  411. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts +7 -3
  412. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  413. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +483 -298
  414. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  415. package/lib/Cloudflare/Workers/Worker.d.ts +612 -13
  416. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  417. package/lib/Cloudflare/Workers/Worker.js +222 -1
  418. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  419. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +13 -1
  420. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  421. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +171 -21
  422. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  423. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +130 -28
  424. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  425. package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
  426. package/lib/Cloudflare/Workers/WorkerBridge.d.ts +6 -2
  427. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  428. package/lib/Cloudflare/Workers/WorkerBridge.js +18 -2
  429. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  430. package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
  431. package/lib/Cloudflare/Workers/WorkerBundle.js +4 -1
  432. package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
  433. package/lib/Cloudflare/Workers/WorkerProvider.d.ts +186 -11
  434. package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
  435. package/lib/Cloudflare/Workers/WorkerProvider.js +1765 -236
  436. package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
  437. package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts +7 -1
  438. package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
  439. package/lib/Cloudflare/Workflows/WorkflowBridge.js +14 -4
  440. package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
  441. package/lib/Command/Build.d.ts +2 -2
  442. package/lib/Command/Build.d.ts.map +1 -1
  443. package/lib/Command/Build.js +4 -7
  444. package/lib/Command/Build.js.map +1 -1
  445. package/lib/Command/Command.d.ts +34 -4
  446. package/lib/Command/Command.d.ts.map +1 -1
  447. package/lib/Command/Command.js +125 -30
  448. package/lib/Command/Command.js.map +1 -1
  449. package/lib/Command/Dev.d.ts +2 -2
  450. package/lib/Command/Dev.d.ts.map +1 -1
  451. package/lib/Command/Dev.js +51 -73
  452. package/lib/Command/Dev.js.map +1 -1
  453. package/lib/Command/Exec.d.ts +11 -2
  454. package/lib/Command/Exec.d.ts.map +1 -1
  455. package/lib/Command/Exec.js +9 -0
  456. package/lib/Command/Exec.js.map +1 -1
  457. package/lib/Command/Memo.d.ts +9 -1
  458. package/lib/Command/Memo.d.ts.map +1 -1
  459. package/lib/Command/Memo.js +14 -2
  460. package/lib/Command/Memo.js.map +1 -1
  461. package/lib/Command/Providers.d.ts +1 -1
  462. package/lib/Command/Providers.d.ts.map +1 -1
  463. package/lib/Command/Redaction.d.ts +10 -0
  464. package/lib/Command/Redaction.d.ts.map +1 -0
  465. package/lib/Command/Redaction.js +119 -0
  466. package/lib/Command/Redaction.js.map +1 -0
  467. package/lib/Deploy.d.ts +2 -1
  468. package/lib/Deploy.d.ts.map +1 -1
  469. package/lib/Destroy.d.ts +2 -1
  470. package/lib/Destroy.d.ts.map +1 -1
  471. package/lib/Destroy.js +1 -9
  472. package/lib/Destroy.js.map +1 -1
  473. package/lib/Docker/Container.d.ts +15 -1
  474. package/lib/Docker/Container.d.ts.map +1 -1
  475. package/lib/Docker/Container.js +34 -11
  476. package/lib/Docker/Container.js.map +1 -1
  477. package/lib/Docker/Context.d.ts +84 -0
  478. package/lib/Docker/Context.d.ts.map +1 -0
  479. package/lib/Docker/Context.js +145 -0
  480. package/lib/Docker/Context.js.map +1 -0
  481. package/lib/Docker/Docker.d.ts +190 -14
  482. package/lib/Docker/Docker.d.ts.map +1 -1
  483. package/lib/Docker/Docker.js +149 -28
  484. package/lib/Docker/Docker.js.map +1 -1
  485. package/lib/Docker/Image.d.ts +12 -0
  486. package/lib/Docker/Image.d.ts.map +1 -1
  487. package/lib/Docker/Image.js +24 -7
  488. package/lib/Docker/Image.js.map +1 -1
  489. package/lib/Docker/Network.d.ts +7 -0
  490. package/lib/Docker/Network.d.ts.map +1 -1
  491. package/lib/Docker/Network.js +16 -7
  492. package/lib/Docker/Network.js.map +1 -1
  493. package/lib/Docker/Providers.d.ts +1 -1
  494. package/lib/Docker/Providers.d.ts.map +1 -1
  495. package/lib/Docker/Providers.js +13 -1
  496. package/lib/Docker/Providers.js.map +1 -1
  497. package/lib/Docker/RemoteImage.d.ts +12 -0
  498. package/lib/Docker/RemoteImage.d.ts.map +1 -1
  499. package/lib/Docker/RemoteImage.js +22 -8
  500. package/lib/Docker/RemoteImage.js.map +1 -1
  501. package/lib/Docker/Service.d.ts +445 -0
  502. package/lib/Docker/Service.d.ts.map +1 -0
  503. package/lib/Docker/Service.js +578 -0
  504. package/lib/Docker/Service.js.map +1 -0
  505. package/lib/Docker/ServiceImage.d.ts +78 -0
  506. package/lib/Docker/ServiceImage.d.ts.map +1 -0
  507. package/lib/Docker/ServiceImage.js +232 -0
  508. package/lib/Docker/ServiceImage.js.map +1 -0
  509. package/lib/Docker/Swarm.d.ts +117 -0
  510. package/lib/Docker/Swarm.d.ts.map +1 -0
  511. package/lib/Docker/Swarm.js +149 -0
  512. package/lib/Docker/Swarm.js.map +1 -0
  513. package/lib/Docker/Volume.d.ts +11 -0
  514. package/lib/Docker/Volume.d.ts.map +1 -1
  515. package/lib/Docker/Volume.js +21 -6
  516. package/lib/Docker/Volume.js.map +1 -1
  517. package/lib/Docker/index.d.ts +3 -0
  518. package/lib/Docker/index.d.ts.map +1 -1
  519. package/lib/Docker/index.js +3 -0
  520. package/lib/Docker/index.js.map +1 -1
  521. package/lib/Http.d.ts +8 -1
  522. package/lib/Http.d.ts.map +1 -1
  523. package/lib/Http.js +7 -2
  524. package/lib/Http.js.map +1 -1
  525. package/lib/Local/LocalProvider.d.ts +182 -0
  526. package/lib/Local/LocalProvider.d.ts.map +1 -0
  527. package/lib/Local/LocalProvider.js +226 -0
  528. package/lib/Local/LocalProvider.js.map +1 -0
  529. package/lib/Local/ProviderLayer.d.ts +43 -2
  530. package/lib/Local/ProviderLayer.d.ts.map +1 -1
  531. package/lib/Local/ProviderLayer.js +80 -2
  532. package/lib/Local/ProviderLayer.js.map +1 -1
  533. package/lib/Local/RpcProvider.d.ts +7 -0
  534. package/lib/Local/RpcProvider.d.ts.map +1 -1
  535. package/lib/Local/RpcProvider.js +8 -3
  536. package/lib/Local/RpcProvider.js.map +1 -1
  537. package/lib/Local/RpcProviderProxy.d.ts.map +1 -1
  538. package/lib/Local/RpcProviderProxy.js +3 -0
  539. package/lib/Local/RpcProviderProxy.js.map +1 -1
  540. package/lib/Local/RpcServer.d.ts +8 -1
  541. package/lib/Local/RpcServer.d.ts.map +1 -1
  542. package/lib/Local/RpcServer.js +4 -1
  543. package/lib/Local/RpcServer.js.map +1 -1
  544. package/lib/Plan.d.ts +34 -0
  545. package/lib/Plan.d.ts.map +1 -1
  546. package/lib/Plan.js +127 -40
  547. package/lib/Plan.js.map +1 -1
  548. package/lib/Planetscale/AuthProvider.d.ts.map +1 -1
  549. package/lib/Planetscale/AuthProvider.js +6 -2
  550. package/lib/Planetscale/AuthProvider.js.map +1 -1
  551. package/lib/Planetscale/Branch.d.ts.map +1 -1
  552. package/lib/Planetscale/Branch.js +36 -6
  553. package/lib/Planetscale/Branch.js.map +1 -1
  554. package/lib/Planetscale/MySQL/MySQLDatabase.d.ts.map +1 -1
  555. package/lib/Planetscale/MySQL/MySQLDatabase.js +31 -6
  556. package/lib/Planetscale/MySQL/MySQLDatabase.js.map +1 -1
  557. package/lib/Planetscale/OAuthClient.d.ts +7 -1
  558. package/lib/Planetscale/OAuthClient.d.ts.map +1 -1
  559. package/lib/Planetscale/OAuthClient.js +51 -4
  560. package/lib/Planetscale/OAuthClient.js.map +1 -1
  561. package/lib/Planetscale/Postgres/PostgresDatabase.d.ts.map +1 -1
  562. package/lib/Planetscale/Postgres/PostgresDatabase.js +30 -5
  563. package/lib/Planetscale/Postgres/PostgresDatabase.js.map +1 -1
  564. package/lib/Platform.d.ts.map +1 -1
  565. package/lib/Platform.js +25 -14
  566. package/lib/Platform.js.map +1 -1
  567. package/lib/Prisma/App.d.ts +93 -0
  568. package/lib/Prisma/App.d.ts.map +1 -0
  569. package/lib/Prisma/App.js +251 -0
  570. package/lib/Prisma/App.js.map +1 -0
  571. package/lib/Prisma/AuthProvider.d.ts +28 -0
  572. package/lib/Prisma/AuthProvider.d.ts.map +1 -0
  573. package/lib/Prisma/AuthProvider.js +131 -0
  574. package/lib/Prisma/AuthProvider.js.map +1 -0
  575. package/lib/Prisma/Branch.d.ts +96 -0
  576. package/lib/Prisma/Branch.d.ts.map +1 -0
  577. package/lib/Prisma/Branch.js +236 -0
  578. package/lib/Prisma/Branch.js.map +1 -0
  579. package/lib/Prisma/Client.d.ts +178 -0
  580. package/lib/Prisma/Client.d.ts.map +1 -0
  581. package/lib/Prisma/Client.js +562 -0
  582. package/lib/Prisma/Client.js.map +1 -0
  583. package/lib/Prisma/Compute.d.ts +585 -0
  584. package/lib/Prisma/Compute.d.ts.map +1 -0
  585. package/lib/Prisma/Compute.js +1545 -0
  586. package/lib/Prisma/Compute.js.map +1 -0
  587. package/lib/Prisma/ComputeArchive.d.ts +63 -0
  588. package/lib/Prisma/ComputeArchive.d.ts.map +1 -0
  589. package/lib/Prisma/ComputeArchive.js +227 -0
  590. package/lib/Prisma/ComputeArchive.js.map +1 -0
  591. package/lib/Prisma/ComputeBuild.d.ts +106 -0
  592. package/lib/Prisma/ComputeBuild.d.ts.map +1 -0
  593. package/lib/Prisma/ComputeBuild.js +987 -0
  594. package/lib/Prisma/ComputeBuild.js.map +1 -0
  595. package/lib/Prisma/ComputeLifecycle.d.ts +84 -0
  596. package/lib/Prisma/ComputeLifecycle.d.ts.map +1 -0
  597. package/lib/Prisma/ComputeLifecycle.js +186 -0
  598. package/lib/Prisma/ComputeLifecycle.js.map +1 -0
  599. package/lib/Prisma/Connect.d.ts +122 -0
  600. package/lib/Prisma/Connect.d.ts.map +1 -0
  601. package/lib/Prisma/Connect.js +187 -0
  602. package/lib/Prisma/Connect.js.map +1 -0
  603. package/lib/Prisma/Connection.d.ts +219 -0
  604. package/lib/Prisma/Connection.d.ts.map +1 -0
  605. package/lib/Prisma/Connection.js +360 -0
  606. package/lib/Prisma/Connection.js.map +1 -0
  607. package/lib/Prisma/CustomDomain.d.ts +91 -0
  608. package/lib/Prisma/CustomDomain.d.ts.map +1 -0
  609. package/lib/Prisma/CustomDomain.js +184 -0
  610. package/lib/Prisma/CustomDomain.js.map +1 -0
  611. package/lib/Prisma/Database.d.ts +222 -0
  612. package/lib/Prisma/Database.d.ts.map +1 -0
  613. package/lib/Prisma/Database.js +418 -0
  614. package/lib/Prisma/Database.js.map +1 -0
  615. package/lib/Prisma/Deployment.d.ts +141 -0
  616. package/lib/Prisma/Deployment.d.ts.map +1 -0
  617. package/lib/Prisma/Deployment.js +353 -0
  618. package/lib/Prisma/Deployment.js.map +1 -0
  619. package/lib/Prisma/EnvironmentVariable.d.ts +105 -0
  620. package/lib/Prisma/EnvironmentVariable.d.ts.map +1 -0
  621. package/lib/Prisma/EnvironmentVariable.js +229 -0
  622. package/lib/Prisma/EnvironmentVariable.js.map +1 -0
  623. package/lib/Prisma/Internal/AppIdentity.d.ts +10 -0
  624. package/lib/Prisma/Internal/AppIdentity.d.ts.map +1 -0
  625. package/lib/Prisma/Internal/AppIdentity.js +6 -0
  626. package/lib/Prisma/Internal/AppIdentity.js.map +1 -0
  627. package/lib/Prisma/Internal/AppPromotion.d.ts +19 -0
  628. package/lib/Prisma/Internal/AppPromotion.d.ts.map +1 -0
  629. package/lib/Prisma/Internal/AppPromotion.js +107 -0
  630. package/lib/Prisma/Internal/AppPromotion.js.map +1 -0
  631. package/lib/Prisma/Internal/ArchivePlatform.d.ts +42 -0
  632. package/lib/Prisma/Internal/ArchivePlatform.d.ts.map +1 -0
  633. package/lib/Prisma/Internal/ArchivePlatform.js +214 -0
  634. package/lib/Prisma/Internal/ArchivePlatform.js.map +1 -0
  635. package/lib/Prisma/Internal/ArtifactFile.d.ts +58 -0
  636. package/lib/Prisma/Internal/ArtifactFile.d.ts.map +1 -0
  637. package/lib/Prisma/Internal/ArtifactFile.js +134 -0
  638. package/lib/Prisma/Internal/ArtifactFile.js.map +1 -0
  639. package/lib/Prisma/Internal/ArtifactUpload.d.ts +5 -0
  640. package/lib/Prisma/Internal/ArtifactUpload.d.ts.map +1 -0
  641. package/lib/Prisma/Internal/ArtifactUpload.js +51 -0
  642. package/lib/Prisma/Internal/ArtifactUpload.js.map +1 -0
  643. package/lib/Prisma/Internal/BundlePaths.d.ts +4 -0
  644. package/lib/Prisma/Internal/BundlePaths.d.ts.map +1 -0
  645. package/lib/Prisma/Internal/BundlePaths.js +16 -0
  646. package/lib/Prisma/Internal/BundlePaths.js.map +1 -0
  647. package/lib/Prisma/Internal/CleanupFailure.d.ts +8 -0
  648. package/lib/Prisma/Internal/CleanupFailure.d.ts.map +1 -0
  649. package/lib/Prisma/Internal/CleanupFailure.js +8 -0
  650. package/lib/Prisma/Internal/CleanupFailure.js.map +1 -0
  651. package/lib/Prisma/Internal/DatabaseSecrets.d.ts +35 -0
  652. package/lib/Prisma/Internal/DatabaseSecrets.d.ts.map +1 -0
  653. package/lib/Prisma/Internal/DatabaseSecrets.js +85 -0
  654. package/lib/Prisma/Internal/DatabaseSecrets.js.map +1 -0
  655. package/lib/Prisma/Internal/DeploymentActions.d.ts +5 -0
  656. package/lib/Prisma/Internal/DeploymentActions.d.ts.map +1 -0
  657. package/lib/Prisma/Internal/DeploymentActions.js +16 -0
  658. package/lib/Prisma/Internal/DeploymentActions.js.map +1 -0
  659. package/lib/Prisma/Internal/DeploymentIdentity.d.ts +8 -0
  660. package/lib/Prisma/Internal/DeploymentIdentity.d.ts.map +1 -0
  661. package/lib/Prisma/Internal/DeploymentIdentity.js +12 -0
  662. package/lib/Prisma/Internal/DeploymentIdentity.js.map +1 -0
  663. package/lib/Prisma/Internal/DeploymentObserve.d.ts +3 -0
  664. package/lib/Prisma/Internal/DeploymentObserve.d.ts.map +1 -0
  665. package/lib/Prisma/Internal/DeploymentObserve.js +2 -0
  666. package/lib/Prisma/Internal/DeploymentObserve.js.map +1 -0
  667. package/lib/Prisma/Internal/EnvName.d.ts +7 -0
  668. package/lib/Prisma/Internal/EnvName.d.ts.map +1 -0
  669. package/lib/Prisma/Internal/EnvName.js +23 -0
  670. package/lib/Prisma/Internal/EnvName.js.map +1 -0
  671. package/lib/Prisma/Internal/HttpClient.d.ts +21 -0
  672. package/lib/Prisma/Internal/HttpClient.d.ts.map +1 -0
  673. package/lib/Prisma/Internal/HttpClient.js +23 -0
  674. package/lib/Prisma/Internal/HttpClient.js.map +1 -0
  675. package/lib/Prisma/Operations.d.ts +143 -0
  676. package/lib/Prisma/Operations.d.ts.map +1 -0
  677. package/lib/Prisma/Operations.js +75 -0
  678. package/lib/Prisma/Operations.js.map +1 -0
  679. package/lib/Prisma/Postgres.d.ts +25 -0
  680. package/lib/Prisma/Postgres.d.ts.map +1 -0
  681. package/lib/Prisma/Postgres.js +24 -0
  682. package/lib/Prisma/Postgres.js.map +1 -0
  683. package/lib/Prisma/PostgresOrigin.d.ts +31 -0
  684. package/lib/Prisma/PostgresOrigin.d.ts.map +1 -0
  685. package/lib/Prisma/PostgresOrigin.js +30 -0
  686. package/lib/Prisma/PostgresOrigin.js.map +1 -0
  687. package/lib/Prisma/PrismaDevDatabase.d.ts +25 -0
  688. package/lib/Prisma/PrismaDevDatabase.d.ts.map +1 -0
  689. package/lib/Prisma/PrismaDevDatabase.js +280 -0
  690. package/lib/Prisma/PrismaDevDatabase.js.map +1 -0
  691. package/lib/Prisma/PrismaEnvironment.d.ts +14 -0
  692. package/lib/Prisma/PrismaEnvironment.d.ts.map +1 -0
  693. package/lib/Prisma/PrismaEnvironment.js +50 -0
  694. package/lib/Prisma/PrismaEnvironment.js.map +1 -0
  695. package/lib/Prisma/PrismaLogs.d.ts +42 -0
  696. package/lib/Prisma/PrismaLogs.d.ts.map +1 -0
  697. package/lib/Prisma/PrismaLogs.js +318 -0
  698. package/lib/Prisma/PrismaLogs.js.map +1 -0
  699. package/lib/Prisma/Project.d.ts +123 -0
  700. package/lib/Prisma/Project.d.ts.map +1 -0
  701. package/lib/Prisma/Project.js +366 -0
  702. package/lib/Prisma/Project.js.map +1 -0
  703. package/lib/Prisma/Providers.d.ts +63 -0
  704. package/lib/Prisma/Providers.d.ts.map +1 -0
  705. package/lib/Prisma/Providers.js +306 -0
  706. package/lib/Prisma/Providers.js.map +1 -0
  707. package/lib/Prisma/Refs.d.ts +19 -0
  708. package/lib/Prisma/Refs.d.ts.map +1 -0
  709. package/lib/Prisma/Refs.js +25 -0
  710. package/lib/Prisma/Refs.js.map +1 -0
  711. package/lib/Prisma/SourceRepository.d.ts +127 -0
  712. package/lib/Prisma/SourceRepository.d.ts.map +1 -0
  713. package/lib/Prisma/SourceRepository.js +239 -0
  714. package/lib/Prisma/SourceRepository.js.map +1 -0
  715. package/lib/Prisma/Types.d.ts +539 -0
  716. package/lib/Prisma/Types.d.ts.map +1 -0
  717. package/lib/Prisma/Types.js +13 -0
  718. package/lib/Prisma/Types.js.map +1 -0
  719. package/lib/Prisma/index.d.ts +25 -0
  720. package/lib/Prisma/index.d.ts.map +1 -0
  721. package/lib/Prisma/index.js +24 -0
  722. package/lib/Prisma/index.js.map +1 -0
  723. package/lib/Provider.d.ts +57 -5
  724. package/lib/Provider.d.ts.map +1 -1
  725. package/lib/Provider.js +54 -30
  726. package/lib/Provider.js.map +1 -1
  727. package/lib/ProviderMode.d.ts +93 -0
  728. package/lib/ProviderMode.d.ts.map +1 -0
  729. package/lib/ProviderMode.js +77 -0
  730. package/lib/ProviderMode.js.map +1 -0
  731. package/lib/Resource.d.ts +8 -0
  732. package/lib/Resource.d.ts.map +1 -1
  733. package/lib/Resource.js +31 -0
  734. package/lib/Resource.js.map +1 -1
  735. package/lib/RuntimeContext.d.ts +7 -0
  736. package/lib/RuntimeContext.d.ts.map +1 -1
  737. package/lib/RuntimeContext.js.map +1 -1
  738. package/lib/Server/Process.d.ts +8 -0
  739. package/lib/Server/Process.d.ts.map +1 -1
  740. package/lib/Server/Process.js +29 -0
  741. package/lib/Server/Process.js.map +1 -1
  742. package/lib/State/InMemoryState.d.ts.map +1 -1
  743. package/lib/State/InMemoryState.js +2 -0
  744. package/lib/State/InMemoryState.js.map +1 -1
  745. package/lib/State/ResourceState.d.ts +18 -0
  746. package/lib/State/ResourceState.d.ts.map +1 -1
  747. package/lib/Sync.d.ts.map +1 -1
  748. package/lib/Sync.js +8 -2
  749. package/lib/Sync.js.map +1 -1
  750. package/lib/Telemetry.d.ts +150 -0
  751. package/lib/Telemetry.d.ts.map +1 -0
  752. package/lib/Telemetry.js +512 -0
  753. package/lib/Telemetry.js.map +1 -0
  754. package/lib/Test/Alchemy.d.ts.map +1 -1
  755. package/lib/Test/Alchemy.js +3 -1
  756. package/lib/Test/Alchemy.js.map +1 -1
  757. package/lib/Test/Core.d.ts +2 -2
  758. package/lib/Test/Core.d.ts.map +1 -1
  759. package/lib/Test/Core.js +1 -8
  760. package/lib/Test/Core.js.map +1 -1
  761. package/lib/Util/Clank.d.ts +11 -6
  762. package/lib/Util/Clank.d.ts.map +1 -1
  763. package/lib/Util/Clank.js +22 -9
  764. package/lib/Util/Clank.js.map +1 -1
  765. package/lib/Util/zip.d.ts +11 -0
  766. package/lib/Util/zip.d.ts.map +1 -1
  767. package/lib/Util/zip.js +30 -0
  768. package/lib/Util/zip.js.map +1 -1
  769. package/lib/index.d.ts +3 -0
  770. package/lib/index.d.ts.map +1 -1
  771. package/lib/index.js +3 -0
  772. package/lib/index.js.map +1 -1
  773. package/package.json +46 -13
  774. package/src/AWS/ApiGateway/common.ts +9 -0
  775. package/src/AWS/Bedrock/LanguageModel.ts +883 -0
  776. package/src/AWS/Bedrock/LanguageModelHttp.ts +36 -0
  777. package/src/AWS/Bedrock/index.ts +2 -0
  778. package/src/AWS/CloudFront/Distribution.ts +116 -6
  779. package/src/AWS/CostExplorer/common.ts +23 -2
  780. package/src/AWS/DataSync/Task.ts +30 -15
  781. package/src/AWS/EC2/Vpc.ts +35 -21
  782. package/src/AWS/EC2/hosted.ts +10 -2
  783. package/src/AWS/ECR/ImageSource.ts +10 -2
  784. package/src/AWS/ECR/Repository.ts +39 -4
  785. package/src/AWS/ECS/Service.ts +322 -22
  786. package/src/AWS/ECS/Task.ts +82 -32
  787. package/src/AWS/EKS/Deployment.ts +10 -2
  788. package/src/AWS/EKS/Job.ts +10 -2
  789. package/src/AWS/Lambda/Function.ts +101 -43
  790. package/src/AWS/Lambda/HttpServer.ts +7 -1
  791. package/src/AWS/Lambda/LayerVersion.ts +490 -0
  792. package/src/AWS/Lambda/MicrovmBundle.ts +10 -2
  793. package/src/AWS/Lambda/index.ts +1 -0
  794. package/src/AWS/Providers.ts +10 -0
  795. package/src/AWS/SES/ActiveReceiptRuleSet.ts +88 -0
  796. package/src/AWS/SES/ReceiptFilter.ts +169 -0
  797. package/src/AWS/SES/ReceiptRule.ts +300 -0
  798. package/src/AWS/SES/ReceiptRuleSet.ts +164 -0
  799. package/src/AWS/SES/SendBounce.ts +44 -0
  800. package/src/AWS/SES/SendBounceHttp.ts +13 -0
  801. package/src/AWS/SES/index.ts +6 -0
  802. package/src/AWS/StateStore/State.ts +159 -42
  803. package/src/Apply.ts +199 -83
  804. package/src/Axiom/Telemetry.ts +119 -0
  805. package/src/Axiom/index.ts +1 -0
  806. package/src/Bundle/Bundle.ts +17 -7
  807. package/src/Bundle/BundleAnalyzerPlugin.ts +9 -4
  808. package/src/Bundle/PurePlugin.ts +19 -9
  809. package/src/Cli/checkVersion.ts +102 -16
  810. package/src/Cli/commands/_shared.ts +2 -0
  811. package/src/Cli/commands/deploy.ts +3 -14
  812. package/src/Cli/commands/logs.ts +6 -1
  813. package/src/Cli/commands/tail.ts +6 -1
  814. package/src/Cli/main.ts +5 -4
  815. package/src/Cloudflare/AI/Search.ts +4 -18
  816. package/src/Cloudflare/AI/SearchInstance.ts +7 -26
  817. package/src/Cloudflare/ApiToken/AccountApiToken.ts +3 -0
  818. package/src/Cloudflare/Auth/AuthProvider.ts +17 -3
  819. package/src/Cloudflare/Auth/OAuthClient.ts +58 -2
  820. package/src/Cloudflare/Containers/Container.ts +92 -3
  821. package/src/Cloudflare/Containers/ContainerApplication.ts +31 -5
  822. package/src/Cloudflare/Containers/ContainerBundle.ts +10 -2
  823. package/src/Cloudflare/Containers/ContainerProvider.ts +62 -0
  824. package/src/Cloudflare/Credentials.ts +69 -9
  825. package/src/Cloudflare/D1/ApplyMigrations.ts +72 -77
  826. package/src/Cloudflare/D1/Database.ts +169 -2
  827. package/src/Cloudflare/D1/LocalD1Gateway.ts +150 -0
  828. package/src/Cloudflare/D1/QueryDatabaseHttpClient.ts +49 -11
  829. package/src/Cloudflare/D1/QueryDatabaseLocal.ts +44 -2
  830. package/src/Cloudflare/DNS/Record.ts +30 -4
  831. package/src/Cloudflare/Email/Address.ts +18 -1
  832. package/src/Cloudflare/Email/SendBinding.ts +1 -0
  833. package/src/Cloudflare/Email/SendEmail.ts +13 -0
  834. package/src/Cloudflare/Flagship/App.ts +18 -6
  835. package/src/Cloudflare/KV/LocalKVGateway.ts +86 -0
  836. package/src/Cloudflare/KV/Namespace.ts +47 -1
  837. package/src/Cloudflare/KV/NamespaceLocal.ts +29 -6
  838. package/src/Cloudflare/KV/ReadNamespaceLocal.ts +5 -1
  839. package/src/Cloudflare/KV/ReadWriteNamespaceLocal.ts +5 -1
  840. package/src/Cloudflare/KV/WriteNamespaceLocal.ts +5 -1
  841. package/src/Cloudflare/LocalGateway.ts +86 -0
  842. package/src/Cloudflare/LocalRuntime.ts +21 -1
  843. package/src/Cloudflare/Logs.ts +58 -28
  844. package/src/Cloudflare/Providers.ts +4 -2
  845. package/src/Cloudflare/Queues/Consumer.ts +70 -2
  846. package/src/Cloudflare/Queues/Queue.ts +7 -16
  847. package/src/Cloudflare/Queues/QueueBinding.ts +21 -0
  848. package/src/Cloudflare/Queues/QueueShim.ts +193 -0
  849. package/src/Cloudflare/R2/Bucket.ts +55 -1
  850. package/src/Cloudflare/R2/BucketBinding.ts +17 -3
  851. package/src/Cloudflare/R2/BucketLocal.ts +25 -8
  852. package/src/Cloudflare/R2/LocalR2Gateway.ts +84 -0
  853. package/src/Cloudflare/R2/ReadBucketLocal.ts +7 -1
  854. package/src/Cloudflare/R2/ReadWriteBucketLocal.ts +7 -1
  855. package/src/Cloudflare/R2/WriteBucketLocal.ts +7 -1
  856. package/src/Cloudflare/Ruleset/AccountEntrypoint.ts +5 -1
  857. package/src/Cloudflare/Ruleset/Ruleset.ts +20 -6
  858. package/src/Cloudflare/Rum/Site.ts +11 -4
  859. package/src/Cloudflare/StateStore/Api.ts +1 -1
  860. package/src/Cloudflare/Tunnel/Tunnel.ts +23 -1
  861. package/src/Cloudflare/Website/StaticSite.ts +117 -28
  862. package/src/Cloudflare/Website/Vite.ts +33 -19
  863. package/src/Cloudflare/Workers/Compatibility.ts +27 -7
  864. package/src/Cloudflare/Workers/DurableObject.ts +22 -0
  865. package/src/Cloudflare/Workers/DurableObjectBridge.ts +29 -10
  866. package/src/Cloudflare/Workers/InferEnv.ts +74 -59
  867. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +619 -401
  868. package/src/Cloudflare/Workers/Worker.ts +676 -28
  869. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +209 -25
  870. package/src/Cloudflare/Workers/WorkerBinding.ts +67 -3
  871. package/src/Cloudflare/Workers/WorkerBridge.ts +26 -4
  872. package/src/Cloudflare/Workers/WorkerBundle.ts +6 -1
  873. package/src/Cloudflare/Workers/WorkerProvider.ts +2269 -277
  874. package/src/Cloudflare/Workflows/WorkflowBridge.ts +31 -13
  875. package/src/Command/Build.ts +8 -8
  876. package/src/Command/Command.ts +217 -42
  877. package/src/Command/Dev.ts +79 -107
  878. package/src/Command/Exec.ts +11 -2
  879. package/src/Command/Memo.ts +27 -3
  880. package/src/Command/Redaction.ts +181 -0
  881. package/src/Destroy.ts +1 -10
  882. package/src/Docker/Container.ts +55 -15
  883. package/src/Docker/Context.ts +236 -0
  884. package/src/Docker/Docker.ts +393 -43
  885. package/src/Docker/Image.ts +28 -7
  886. package/src/Docker/Network.ts +38 -14
  887. package/src/Docker/Providers.ts +16 -1
  888. package/src/Docker/RemoteImage.ts +23 -7
  889. package/src/Docker/Service.ts +1119 -0
  890. package/src/Docker/ServiceImage.ts +331 -0
  891. package/src/Docker/Swarm.ts +226 -0
  892. package/src/Docker/Volume.ts +25 -6
  893. package/src/Docker/index.ts +3 -0
  894. package/src/Http.ts +15 -2
  895. package/src/Local/LocalProvider.ts +518 -0
  896. package/src/Local/ProviderLayer.ts +113 -11
  897. package/src/Local/RpcProvider.ts +10 -5
  898. package/src/Local/RpcProviderProxy.ts +4 -1
  899. package/src/Local/RpcServer.ts +20 -2
  900. package/src/Plan.ts +182 -54
  901. package/src/Planetscale/AuthProvider.ts +15 -2
  902. package/src/Planetscale/Branch.ts +39 -6
  903. package/src/Planetscale/MySQL/MySQLDatabase.ts +34 -6
  904. package/src/Planetscale/OAuthClient.ts +59 -3
  905. package/src/Planetscale/Postgres/PostgresDatabase.ts +33 -5
  906. package/src/Platform.ts +29 -17
  907. package/src/Prisma/App.ts +433 -0
  908. package/src/Prisma/AuthProvider.ts +260 -0
  909. package/src/Prisma/Branch.ts +417 -0
  910. package/src/Prisma/Client.ts +1337 -0
  911. package/src/Prisma/Compute.ts +2878 -0
  912. package/src/Prisma/ComputeArchive.ts +432 -0
  913. package/src/Prisma/ComputeBuild.ts +1652 -0
  914. package/src/Prisma/ComputeLifecycle.ts +391 -0
  915. package/src/Prisma/Connect.ts +433 -0
  916. package/src/Prisma/Connection.ts +643 -0
  917. package/src/Prisma/CustomDomain.ts +373 -0
  918. package/src/Prisma/Database.ts +850 -0
  919. package/src/Prisma/Deployment.ts +661 -0
  920. package/src/Prisma/EnvironmentVariable.ts +417 -0
  921. package/src/Prisma/Internal/AppIdentity.ts +19 -0
  922. package/src/Prisma/Internal/AppPromotion.ts +172 -0
  923. package/src/Prisma/Internal/ArchivePlatform.ts +320 -0
  924. package/src/Prisma/Internal/ArtifactFile.ts +242 -0
  925. package/src/Prisma/Internal/ArtifactUpload.ts +86 -0
  926. package/src/Prisma/Internal/BundlePaths.ts +28 -0
  927. package/src/Prisma/Internal/CleanupFailure.ts +17 -0
  928. package/src/Prisma/Internal/DatabaseSecrets.ts +175 -0
  929. package/src/Prisma/Internal/DeploymentActions.ts +59 -0
  930. package/src/Prisma/Internal/DeploymentIdentity.ts +25 -0
  931. package/src/Prisma/Internal/DeploymentObserve.ts +6 -0
  932. package/src/Prisma/Internal/EnvName.ts +24 -0
  933. package/src/Prisma/Internal/HttpClient.ts +30 -0
  934. package/src/Prisma/Operations.ts +259 -0
  935. package/src/Prisma/Postgres.ts +25 -0
  936. package/src/Prisma/PostgresOrigin.ts +52 -0
  937. package/src/Prisma/PrismaDevDatabase.ts +395 -0
  938. package/src/Prisma/PrismaEnvironment.ts +89 -0
  939. package/src/Prisma/PrismaLogs.ts +434 -0
  940. package/src/Prisma/Project.ts +687 -0
  941. package/src/Prisma/Providers.ts +471 -0
  942. package/src/Prisma/Refs.ts +69 -0
  943. package/src/Prisma/SourceRepository.ts +455 -0
  944. package/src/Prisma/Types.ts +611 -0
  945. package/src/Prisma/index.ts +24 -0
  946. package/src/Provider.ts +155 -39
  947. package/src/ProviderMode.ts +123 -0
  948. package/src/Resource.ts +46 -0
  949. package/src/RuntimeContext.ts +7 -0
  950. package/src/Server/Process.ts +33 -0
  951. package/src/State/InMemoryState.ts +2 -0
  952. package/src/State/ResourceState.ts +18 -0
  953. package/src/Sync.ts +14 -2
  954. package/src/Telemetry.ts +736 -0
  955. package/src/Test/Alchemy.ts +3 -1
  956. package/src/Test/Core.ts +1 -8
  957. package/src/Util/Clank.ts +37 -11
  958. package/src/Util/zip.ts +39 -0
  959. package/src/index.ts +3 -0
@@ -1,11 +1,10 @@
1
- import { Runtime, RuntimeError, } from "@distilled.cloud/cloudflare-runtime";
1
+ import { Runtime, } from "@distilled.cloud/cloudflare-runtime";
2
2
  import { Ai, AiSearch, AnalyticsEngine, Artifacts, Assets, Browser, D1, Data, DispatchNamespace, DurableObjectNamespace, Flagship, Hyperdrive, Images, Json, KvNamespace, MtlsCertificate, Pipelines, Queue, R2Bucket, RateLimit, SendEmail, Service, Text, Vectorize, VersionMetadata, WasmModule, WorkerLoader, Workflows, } from "@distilled.cloud/cloudflare-runtime/bindings";
3
3
  import * as WorkerProxy from "@distilled.cloud/cloudflare-runtime/proxy/WorkerProxy";
4
4
  import * as Cause from "effect/Cause";
5
5
  import * as Effect from "effect/Effect";
6
6
  import * as Equal from "effect/Equal";
7
7
  import * as Exit from "effect/Exit";
8
- import * as Fiber from "effect/Fiber";
9
8
  import * as MutableHashMap from "effect/MutableHashMap";
10
9
  import * as Option from "effect/Option";
11
10
  import * as Path from "effect/Path";
@@ -15,37 +14,92 @@ import * as Schema from "effect/Schema";
15
14
  import * as Scope from "effect/Scope";
16
15
  import * as Semaphore from "effect/Semaphore";
17
16
  import * as Stream from "effect/Stream";
18
- import { isResolved, stripEffects } from "../../Diff.js";
19
- import * as RpcProvider from "../../Local/RpcProvider.js";
17
+ import * as os from "node:os";
18
+ import * as LocalProvider from "../../Local/LocalProvider.js";
20
19
  import { Stack } from "../../Stack.js";
21
- import { sha256, unwrapRedacted } from "../../Util/index.js";
20
+ import { unwrapRedacted } from "../../Util/index.js";
22
21
  import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
23
- import { LOCAL_ENTRY_URL, LocalRuntimeState } from "../LocalRuntime.js";
22
+ import { isLiveId, isLocalId, LOCAL_ENTRY_URL, LocalRuntimeState, } from "../LocalRuntime.js";
24
23
  import { readAssetsConfigFiles } from "./Assets.js";
25
24
  import { getCompatibility } from "./Compatibility.js";
26
25
  import { isPythonMain, watchPythonWorkerBundle } from "./PythonWorkerBundle.js";
27
- import { Worker } from "./Worker.js";
26
+ import { isSelfUrl, Worker } from "./Worker.js";
28
27
  import { getCronBindings } from "./WorkerAsyncBindings.js";
29
28
  import { WorkerBundle } from "./WorkerBundle.js";
30
29
  import { createWorkerName } from "./WorkerName.js";
30
+ // Hosts that bind every interface — the dev server is then reachable at
31
+ // `localhost` *and* at each LAN address, like Vite's `--host` output.
32
+ const isWildcardHost = (host) => host === "0.0.0.0" || host === "::" || host === "[::]" || host === "*";
33
+ /**
34
+ * Resolve every URL a local dev server is reachable at, most relevant
35
+ * first. A loopback or explicit host yields just that URL; a wildcard host
36
+ * (`0.0.0.0`, `::`) yields `http://localhost:<port>` followed by one URL
37
+ * per external IPv4 interface (`http://192.168.0.12:<port>`, ...) —
38
+ * mirroring Vite's "Local / Network" dev-server output.
39
+ */
40
+ const resolveLocalUrls = (serverUrl) => Effect.sync(() => {
41
+ const port = serverUrl.port;
42
+ const host = serverUrl.hostname;
43
+ if (!isWildcardHost(host)) {
44
+ return [serverUrl.origin];
45
+ }
46
+ // `os.networkInterfaces()` is a sync, CPU-only syscall with no Effect
47
+ // platform equivalent — wrapped in `Effect.sync` so it participates in
48
+ // the runtime.
49
+ const interfaces = os.networkInterfaces();
50
+ const lanAddresses = Object.values(interfaces)
51
+ .flatMap((addresses) => addresses ?? [])
52
+ .filter((address) => address.family === "IPv4" && !address.internal)
53
+ .map((address) => address.address);
54
+ return [
55
+ `http://localhost:${port}`,
56
+ ...lanAddresses.map((address) => `http://${address}:${port}`),
57
+ ];
58
+ });
31
59
  export class WorkerValidationError extends Schema.TaggedErrorClass()("WorkerValidationError", {
32
60
  message: Schema.String,
33
61
  hint: Schema.optional(Schema.String),
34
62
  value: Schema.Unknown,
35
63
  }) {
36
64
  }
37
- export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_URL, Effect.gen(function* () {
65
+ export const LocalWorkerProvider = () => LocalProvider.make(Worker, LOCAL_ENTRY_URL, Effect.gen(function* () {
38
66
  const bundler = yield* WorkerBundle;
39
67
  const runtime = yield* Runtime;
40
68
  const stack = yield* Stack;
41
69
  const path = yield* Path.Path;
42
70
  const localRuntimeState = yield* LocalRuntimeState;
43
71
  const workerProxy = yield* WorkerProxy.WorkerProxy;
72
+ const cloudflareEnv = yield* CloudflareEnvironment;
73
+ const context = yield* Effect.context();
74
+ const rootScope = yield* Effect.scope;
75
+ // Proxies are deliberately NOT owned by the per-instance scope: they
76
+ // survive restarts so the worker's URL stays stable across rebuilds
77
+ // and config changes. Torn down by `stop` on delete.
44
78
  const proxyInstances = new Map();
45
79
  const getQueueConsumers = Effect.fn(function* (scriptName) {
46
80
  const consumers = [];
47
81
  for (const consumer of MutableHashMap.values(localRuntimeState.queueConsumers)) {
48
82
  if (consumer.scriptName === scriptName) {
83
+ // A LIVE queue (`Alchemy.remote()`) consumed locally: the broker
84
+ // is still local, but it is fed by the runtime's pull loop
85
+ // draining the real queue over the HTTP pull API (the
86
+ // Consumer's local provider attached the `http_pull` consumer
87
+ // and resolved the queue's real name).
88
+ if (isLiveId(consumer.queueId)) {
89
+ if (!consumer.queueName) {
90
+ return yield* Effect.die(`Consumer of live queue ${consumer.queueId} is missing its resolved queueName — re-deploy the consumer`);
91
+ }
92
+ consumers.push({
93
+ queueName: consumer.queueName,
94
+ deadLetterQueue: consumer.deadLetterQueue,
95
+ ...consumer.settings,
96
+ pull: {
97
+ queueId: consumer.queueId,
98
+ accountId: consumer.accountId,
99
+ },
100
+ });
101
+ continue;
102
+ }
49
103
  const queue = MutableHashMap.get(localRuntimeState.queues, consumer.queueId).pipe(Option.getOrUndefined);
50
104
  if (queue) {
51
105
  consumers.push({
@@ -146,123 +200,23 @@ export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_
146
200
  }
147
201
  return modules;
148
202
  });
149
- // Latest successful serve per worker id, so runtime wiring changes
150
- // that arrive AFTER workerd started (e.g. a sibling `Consumer`
151
- // resource registering this script as a queue consumer) can restart
152
- // the instance with the same bundle. `scope` is the parent scope the
153
- // workerd child scope is forked from (the instance scope), NOT the
154
- // caller's ambient scope — restarts are triggered from other
155
- // providers' reconcile fibers whose scopes must not own workerd.
156
- const latestServes = new Map();
157
- // Serializes serves per worker id: a restart triggered by a sibling
158
- // resource may otherwise interleave with a rebuild-triggered serve
159
- // and leak a workerd scope.
160
- const serveLocks = new Map();
161
- const serveLock = (id) => {
162
- let lock = serveLocks.get(id);
163
- if (!lock) {
164
- lock = Semaphore.makeUnsafe(1);
165
- serveLocks.set(id, lock);
166
- }
167
- return lock;
168
- };
169
- const serveWith = (worker, bundle, proxy, parentScope) => Semaphore.withPermits(serveLock(worker.id), 1)(Effect.gen(function* () {
170
- // Queue-consumer wiring can change while `runtime.start` is in
171
- // flight (a sibling `Consumer` reconcile), before the restart
172
- // hook below exists to pick it up. We hold the serve lock, so a
173
- // restart would deadlock — instead, loop and serve again until
174
- // the wiring is stable across a start.
175
- while (true) {
176
- const previous = workerdScopes.get(worker.id);
177
- if (previous) {
178
- // Both runtimes use the same registry key. Close the old scope first so
179
- // its unregister finalizer cannot delete the replacement registration.
180
- yield* Scope.close(previous, Exit.void);
181
- workerdScopes.delete(worker.id);
182
- }
183
- const queueConsumers = yield* getQueueConsumers(worker.name);
184
- const scope = yield* Scope.fork(parentScope);
185
- const url = yield* runtime
186
- .start({
187
- name: worker.name,
188
- compatibilityDate: worker.compatibility.date,
189
- compatibilityFlags: worker.compatibility.flags,
190
- bindings: worker.workerBindings,
191
- hyperdrives: worker.hyperdrives,
192
- durableObjectNamespaces: worker.durableObjectNamespaces,
193
- workflows: worker.workflows,
194
- queueConsumers,
195
- modules: yield* toRuntimeModules(bundle),
196
- assets: yield* toRuntimeAssets(worker.assets),
197
- })
198
- .pipe(Scope.provide(scope));
199
- workerdScopes.set(worker.id, scope);
200
- latestServes.set(worker.id, {
201
- worker,
202
- bundle,
203
- proxy,
204
- scope: parentScope,
205
- });
206
- // Register the restart hook before the re-check below: changes
207
- // landing after the re-check find the hook; changes before it
208
- // are caught by the re-check. Nothing falls in between.
209
- MutableHashMap.set(localRuntimeState.workerRestarts, worker.name, restartWorker(worker.id));
210
- const currentConsumers = yield* getQueueConsumers(worker.name);
211
- if (JSON.stringify(currentConsumers) !==
212
- JSON.stringify(queueConsumers)) {
213
- // Wiring changed while workerd was starting — serve again with
214
- // the fresh consumers before exposing the instance.
215
- continue;
216
- }
217
- yield* proxy.set(url);
218
- return url;
219
- }
220
- }));
221
- const serveScoped = Effect.fn(function* (worker, bundle, proxy) {
222
- const parentScope = yield* Effect.scope;
223
- return yield* serveWith(worker, bundle, proxy, parentScope);
224
- });
225
203
  /**
226
- * Restart a running worker with its latest bundle so start-time
227
- * runtime wiring (queue consumers) is re-read from
228
- * {@link LocalRuntimeState}. No-op if the worker hasn't served yet —
229
- * the pending first serve will already observe the updated state.
204
+ * The restart-relevant, canonically-hashable view of a local Worker's
205
+ * desired state — `LocalProvider`'s `resolveConfig`. Everything here
206
+ * is plain data: binding *descriptors* (not `BindingHook` closures —
207
+ * those are materialized in `start` via {@link toRuntimeBinding}),
208
+ * DO-namespace/hyperdrive/container-image records, bundle options.
209
+ *
210
+ * Queue consumers are deliberately EXCLUDED: `getQueueConsumers`
211
+ * reads `LocalRuntimeState` at serve time and sibling `Consumer`
212
+ * reconciles drive restarts through the `workerRestarts` hook — they
213
+ * are runtime wiring observed at start, not desired-state config.
230
214
  */
231
- const restartWorker = (id) => Effect.suspend(() => {
232
- const latest = latestServes.get(id);
233
- if (!latest)
234
- return Effect.void;
235
- return serveWith(latest.worker, latest.bundle, latest.proxy, latest.scope).pipe(Effect.asVoid, Effect.catchCause((cause) => Effect.logWarning(`[${id}] Failed to restart local worker`, Cause.squash(cause))));
236
- });
237
- // Note: `serveLocks` entries are intentionally retained — an
238
- // in-flight restart may still hold the semaphore when the instance
239
- // is torn down, and a same-id re-create must serialize against it.
240
- const dropServeState = (id) => {
241
- const latest = latestServes.get(id);
242
- if (latest) {
243
- MutableHashMap.remove(localRuntimeState.workerRestarts, latest.worker.name);
244
- latestServes.delete(id);
245
- }
246
- };
247
- const buildConfig = Effect.fn(function* ({ id, props, bindings, }) {
248
- const { accountId } = yield* yield* CloudflareEnvironment;
215
+ const resolveConfig = Effect.fn(function* ({ id, news, bindings, }) {
216
+ const props = news;
249
217
  const name = yield* createWorkerName(id, props.name);
250
218
  const compatibility = getCompatibility(props);
251
- const workerBindings = [
252
- Text.local("ALCHEMY_PHASE", "runtime"),
253
- Text.local("ALCHEMY_STACK_NAME", stack.name),
254
- Text.local("ALCHEMY_STAGE", stack.stage),
255
- Text.local("ALCHEMY_CLOUDFLARE_ACCOUNT_ID", accountId),
256
- ...Object.entries(props.env ?? {}).map(([key, value]) => {
257
- const unredacted = Redacted.isRedacted(value)
258
- ? Redacted.value(value)
259
- : value;
260
- return typeof unredacted === "string"
261
- ? Text.local(key, unredacted)
262
- : Json.local(key, unredacted);
263
- }),
264
- ...(props.assets || props.vite ? [Assets.local("ASSETS")] : []),
265
- ];
219
+ const bindingDescriptors = [];
266
220
  const durableObjectNamespaces = {};
267
221
  const workflows = {};
268
222
  const hyperdrives = {};
@@ -282,10 +236,7 @@ export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_
282
236
  uniqueKey: namespaceId,
283
237
  sql: true,
284
238
  };
285
- workerBindings.push(yield* toRuntimeBinding({
286
- ...binding,
287
- namespaceId,
288
- }));
239
+ bindingDescriptors.push({ ...binding, namespaceId });
289
240
  }
290
241
  else {
291
242
  if (binding.type === "workflow" &&
@@ -298,7 +249,7 @@ export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_
298
249
  className: binding.className,
299
250
  };
300
251
  }
301
- workerBindings.push(yield* toRuntimeBinding(binding));
252
+ bindingDescriptors.push(binding);
302
253
  }
303
254
  }
304
255
  if (data.hyperdrives) {
@@ -332,39 +283,271 @@ export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_
332
283
  }
333
284
  durableObjectNamespaces[className].container = dev;
334
285
  }
286
+ const dev = props.dev?.mode === "external"
287
+ ? props.dev
288
+ : {
289
+ ...props.dev,
290
+ mode: "worker",
291
+ // This is the default. Vite and cloudflare-runtime will retry
292
+ // if unavailable, unless `strictPort` is true.
293
+ port: props.dev?.port ?? 1337,
294
+ };
335
295
  return {
336
296
  id,
337
297
  name,
338
298
  compatibility,
339
- workerBindings,
299
+ /** User env (Redacted preserved — the canonical hasher unwraps). */
300
+ env: props.env,
301
+ /**
302
+ * Raw inline module source (mutually exclusive with `main`).
303
+ * Serves as-is without the bundler; part of the hashed config so
304
+ * editing the script restarts the instance.
305
+ */
306
+ script: props.script,
307
+ hasAssets: !!(props.assets || props.vite),
308
+ /**
309
+ * Assets-only Worker (no entry module at all): served locally by
310
+ * a stub that delegates every request to the ASSETS binding.
311
+ */
312
+ assetsOnly: props.main === undefined &&
313
+ props.script === undefined &&
314
+ !props.vite &&
315
+ !!props.assets,
316
+ bindingDescriptors,
340
317
  durableObjectNamespaces: Object.values(durableObjectNamespaces),
341
318
  workflows: Object.values(workflows),
342
- viteMain: props.vite?.main,
343
- viteEnvironments: props.vite?.viteEnvironments,
344
319
  hyperdrives,
345
- env: props.env,
320
+ vite: !!props.vite,
321
+ // Relative `vite.main` resolves from the Vite root (see the
322
+ // matching normalization in WorkerProvider's `viteBuild`).
323
+ viteMain: props.vite?.main
324
+ ? path.resolve(props.vite.rootDir ?? process.cwd(), props.vite.main)
325
+ : undefined,
326
+ viteEnvironments: props.vite?.viteEnvironments,
327
+ viteRootDir: props.vite?.rootDir,
346
328
  bundleOptions: {
347
329
  id,
348
330
  main: props.main,
349
331
  compatibility,
350
332
  entry: props.isExternal
351
333
  ? { kind: "external" }
352
- : { kind: "effect", exports: props.exports ?? {} },
334
+ : {
335
+ kind: "effect",
336
+ exports: props.exports ?? {},
337
+ },
353
338
  stack: { name: stack.name, stage: stack.stage },
354
339
  extraOptions: props.build,
355
340
  },
356
341
  assets: props.assets,
357
- dev: {
358
- ...props.dev,
359
- // This is the default. Vite and cloudflare-runtime will retry if unavailable, unless `strictPort` is true.
360
- port: props.dev?.port ?? 1337,
361
- },
342
+ dev,
343
+ crons: Array.from(new Set([...getCronBindings(bindings), ...(props.crons ?? [])])),
362
344
  };
363
345
  });
346
+ /**
347
+ * Materialize the plain binding descriptors from {@link resolveConfig}
348
+ * into live cloudflare-runtime `BindingHook`s. This is the non-plain
349
+ * half of the old `buildConfig` — kept out of the hashed config.
350
+ */
351
+ const materializeWorkerBindings = Effect.fn(function* (config, selfUrl) {
352
+ const { accountId } = yield* cloudflareEnv;
353
+ // Resource-backed env entries (e.g. `env: { KV: namespace }`) are
354
+ // represented by their binding descriptor (same name) — don't ALSO
355
+ // serialize the resolved attributes as a duplicate json binding.
356
+ const descriptorNames = new Set(config.bindingDescriptors.map((descriptor) => descriptor.name));
357
+ const workerBindings = [
358
+ Text.local("ALCHEMY_PHASE", "runtime"),
359
+ Text.local("ALCHEMY_WORKER_NAME", config.name),
360
+ Text.local("ALCHEMY_STACK_NAME", stack.name),
361
+ Text.local("ALCHEMY_STAGE", stack.stage),
362
+ Text.local("ALCHEMY_CLOUDFLARE_ACCOUNT_ID", accountId),
363
+ ...Object.entries(config.env ?? {})
364
+ .filter(([key]) => !descriptorNames.has(key))
365
+ .map(([key, value]) => {
366
+ if (isSelfUrl(value)) {
367
+ return Text.local(key, selfUrl);
368
+ }
369
+ const unredacted = Redacted.isRedacted(value)
370
+ ? Redacted.value(value)
371
+ : value;
372
+ return typeof unredacted === "string"
373
+ ? Text.local(key, unredacted)
374
+ : Json.local(key, unredacted);
375
+ }),
376
+ ...(config.hasAssets ? [Assets.local("ASSETS")] : []),
377
+ ];
378
+ for (const descriptor of config.bindingDescriptors) {
379
+ if (descriptor.type === "self_url") {
380
+ // Lowered here rather than in `toRuntimeBinding` — only this
381
+ // scope knows the worker's own dev-proxy URL.
382
+ workerBindings.push(Text.local(descriptor.name, selfUrl));
383
+ continue;
384
+ }
385
+ workerBindings.push(yield* toRuntimeBinding(descriptor));
386
+ }
387
+ return workerBindings;
388
+ });
389
+ // Latest successful serve per worker id, so runtime wiring changes
390
+ // that arrive AFTER workerd started (e.g. a sibling `Consumer`
391
+ // resource registering this script as a queue consumer) can restart
392
+ // the instance with the same bundle.
393
+ const latestServes = new Map();
394
+ // Serializes serves per worker id: a restart triggered by a sibling
395
+ // resource may otherwise interleave with a rebuild-triggered serve
396
+ // and leak a workerd scope.
397
+ const serveLocks = new Map();
398
+ const serveLock = (id) => {
399
+ let lock = serveLocks.get(id);
400
+ if (!lock) {
401
+ lock = Semaphore.makeUnsafe(1);
402
+ serveLocks.set(id, lock);
403
+ }
404
+ return lock;
405
+ };
406
+ const workerdScopes = new Map();
407
+ // Serve with make-before-break semantics: start the replacement
408
+ // workerd while the previous instance (if any) keeps serving — and
409
+ // stays registered in the dev registry — then cut the proxy over and
410
+ // tear the previous instance down. Cross-script consumers (e.g. a DO
411
+ // bound via `scriptName` from another Worker) therefore never observe
412
+ // a window where the script has no running instance and no registry
413
+ // entry, even when `runtime.start` is slow (container image builds).
414
+ // Both instances use the same registry key; the registry's entry
415
+ // removal is owner-aware, so closing the old scope after the
416
+ // replacement has re-registered cannot delete the replacement's
417
+ // registration.
418
+ //
419
+ // The workerd scope is forked from the provider's `rootScope`, NOT
420
+ // the instance scope: a reconcile that replaces the instance (or a
421
+ // restart triggered from a sibling provider's fiber) tears down the
422
+ // bundle watcher without killing the currently serving workerd — the
423
+ // last good instance keeps serving until the replacement's first
424
+ // serve completes. Ownership is tracked in `workerdScopes`, closed by
425
+ // the next successful serve, by `delete`, or by provider shutdown.
426
+ const serveWith = (worker, bundle, proxy) => Semaphore.withPermits(serveLock(worker.id), 1)(
427
+ // The bookkeeping around `runtime.start` must not be torn in half
428
+ // by an interrupt: once a replacement workerd is up, it must be
429
+ // recorded in `workerdScopes` and the superseded instances must be
430
+ // closed, or one of the workerds would leak until provider
431
+ // shutdown while holding the shared registry key.
432
+ Effect.uninterruptibleMask((restore) => Effect.gen(function* () {
433
+ const previous = workerdScopes.get(worker.id);
434
+ // Instances whose queue-consumer wiring went stale while they
435
+ // were starting; never exposed via the proxy, closed together
436
+ // with `previous` after the cutover below.
437
+ const superseded = [];
438
+ let scope;
439
+ let url;
440
+ // Queue-consumer wiring can change while `runtime.start` is in
441
+ // flight (a sibling `Consumer` reconcile), before the restart
442
+ // hook below exists to pick it up. We hold the serve lock, so a
443
+ // restart would deadlock — instead, loop and serve again until
444
+ // the wiring is stable across a start.
445
+ while (true) {
446
+ const queueConsumers = yield* getQueueConsumers(worker.name);
447
+ scope = yield* Scope.fork(rootScope);
448
+ url = yield* restore(runtime
449
+ .start({
450
+ name: worker.name,
451
+ compatibilityDate: worker.compatibility.date,
452
+ compatibilityFlags: worker.compatibility.flags,
453
+ bindings: worker.workerBindings,
454
+ hyperdrives: worker.hyperdrives,
455
+ durableObjectNamespaces: worker.durableObjectNamespaces,
456
+ workflows: worker.workflows,
457
+ queueConsumers,
458
+ // Cache API opt-out (`dev: { cache: false }`) — matches
459
+ // production workers.dev, where the Cache API is a no-op.
460
+ cache: worker.dev.cache,
461
+ // Per-worker request.cf override (`dev: { cf: {...} }`).
462
+ cf: worker.dev.cf,
463
+ modules: yield* toRuntimeModules(bundle),
464
+ assets: yield* toRuntimeAssets(worker.assets),
465
+ })
466
+ .pipe(Scope.provide(scope))).pipe(
467
+ // The scope hangs off `rootScope`, so a failed or
468
+ // interrupted start must close it here — nothing else owns
469
+ // it yet.
470
+ Effect.onExit((exit) => exit._tag === "Failure"
471
+ ? Scope.close(scope, exit)
472
+ : Effect.void));
473
+ workerdScopes.set(worker.id, scope);
474
+ latestServes.set(worker.id, { worker, bundle, proxy });
475
+ // Register the restart hook before the re-check below: changes
476
+ // landing after the re-check find the hook; changes before it
477
+ // are caught by the re-check. Nothing falls in between.
478
+ MutableHashMap.set(localRuntimeState.workerRestarts, worker.name, restartWorker(worker.id));
479
+ const currentConsumers = yield* getQueueConsumers(worker.name);
480
+ if (JSON.stringify(currentConsumers) !==
481
+ JSON.stringify(queueConsumers)) {
482
+ // Wiring changed while workerd was starting — serve again
483
+ // with the fresh consumers before exposing the instance.
484
+ superseded.push(scope);
485
+ continue;
486
+ }
487
+ break;
488
+ }
489
+ yield* proxy.set(url);
490
+ // Only now tear the replaced instances down: `previous` kept
491
+ // serving — and stayed registered in the dev registry — until
492
+ // the cutover above. The registry's entry removal is
493
+ // owner-aware, so these closes cannot delete the replacement's
494
+ // registration.
495
+ for (const replaced of previous
496
+ ? [...superseded, previous]
497
+ : superseded) {
498
+ yield* Scope.close(replaced, Exit.void).pipe(Effect.catchCause((cause) => Effect.logWarning(`[${worker.id}] Failed to stop previous local worker instance`, Cause.squash(cause))));
499
+ }
500
+ return url;
501
+ })));
502
+ /**
503
+ * Restart a running worker with its latest bundle so start-time
504
+ * runtime wiring (queue consumers) is re-read from
505
+ * {@link LocalRuntimeState}. No-op if the worker hasn't served yet —
506
+ * the pending first serve will already observe the updated state.
507
+ */
508
+ const restartWorker = (id) => Effect.suspend(() => {
509
+ const latest = latestServes.get(id);
510
+ if (!latest)
511
+ return Effect.void;
512
+ return serveWith(latest.worker, latest.bundle, latest.proxy).pipe(Effect.asVoid, Effect.catchCause((cause) => Effect.logWarning(`[${id}] Failed to restart local worker`, Cause.squash(cause))));
513
+ });
514
+ // Tear down the running workerd for a worker id, if any. Used when the
515
+ // Worker is deleted or handed off to an external dev process —
516
+ // instance replacement does NOT go through this: the previous workerd
517
+ // keeps serving until the replacement's first serve closes it.
518
+ const closeWorkerd = Effect.fn(function* (id) {
519
+ const scope = workerdScopes.get(id);
520
+ if (scope) {
521
+ workerdScopes.delete(id);
522
+ yield* Scope.close(scope, Exit.void);
523
+ }
524
+ });
525
+ // Note: `serveLocks` entries are intentionally retained — an
526
+ // in-flight restart may still hold the semaphore when the instance
527
+ // is torn down, and a same-id re-create must serialize against it.
528
+ const dropServeState = (id) => {
529
+ const latest = latestServes.get(id);
530
+ if (latest) {
531
+ MutableHashMap.remove(localRuntimeState.workerRestarts, latest.worker.name);
532
+ latestServes.delete(id);
533
+ }
534
+ };
364
535
  const runWorker = Effect.fn(function* (worker) {
365
536
  let start = Date.now();
366
537
  let status = "start";
367
538
  const proxy = yield* maybeStartProxy(worker.id, worker.dev);
539
+ // Inline `script` workers bypass the bundler entirely — the string
540
+ // IS the module (mirroring the deploy path, which uploads it as a
541
+ // single `main.js`). There is nothing to watch: script changes flow
542
+ // through the hashed config and restart the instance.
543
+ if (worker.script !== undefined) {
544
+ yield* serveWith(worker, {
545
+ files: [{ path: "main.js", content: worker.script, hash: "" }],
546
+ hash: "",
547
+ }, proxy);
548
+ yield* Effect.log(`[${worker.id}] Started in ${Math.round(Date.now() - start)}ms`);
549
+ return proxy.url;
550
+ }
368
551
  yield* (isPythonMain(worker.bundleOptions.main)
369
552
  ? watchPythonWorkerBundle({
370
553
  id: worker.bundleOptions.id,
@@ -388,7 +571,7 @@ export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_
388
571
  return Effect.void;
389
572
  }), Stream.filterMap((event) => event._tag === "Success"
390
573
  ? Result.succeed(event.output)
391
- : Result.failVoid), Stream.mapEffect((bundle) => serveScoped(worker, bundle, proxy).pipe(Effect.exit, Effect.tap((exit) => {
574
+ : Result.failVoid), Stream.mapEffect((bundle) => serveWith(worker, bundle, proxy).pipe(Effect.exit, Effect.tap((exit) => {
392
575
  if (exit._tag === "Success") {
393
576
  const message = Effect.log(`[${worker.id}] ${status === "update" ? "Updated" : "Started"} in ${Math.round(Date.now() - start)}ms`);
394
577
  status = "update";
@@ -400,6 +583,29 @@ export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_
400
583
  }))), Stream.runDrain, Effect.forkScoped);
401
584
  return proxy.url;
402
585
  });
586
+ // Assets-only Worker: there is no entry module to bundle or watch.
587
+ // The local runtime requires a user worker module, so serve a stub
588
+ // that delegates every request to the ASSETS binding — the assets
589
+ // worker applies `htmlHandling` / `notFoundHandling` (including SPA
590
+ // fallback) itself, matching Cloudflare's deployed assets-only
591
+ // behavior.
592
+ const assetsOnlyBundle = {
593
+ files: [
594
+ {
595
+ path: "main.js",
596
+ content: "export default { fetch: (request, env) => env.ASSETS.fetch(request) };",
597
+ hash: "assets-only-stub",
598
+ },
599
+ ],
600
+ hash: "assets-only-stub",
601
+ };
602
+ const runAssetsOnly = Effect.fn(function* (worker) {
603
+ const start = Date.now();
604
+ const proxy = yield* maybeStartProxy(worker.id, worker.dev);
605
+ yield* serveWith(worker, assetsOnlyBundle, proxy);
606
+ yield* Effect.log(`[${worker.id}] Started in ${Math.round(Date.now() - start)}ms`);
607
+ return proxy.url;
608
+ });
403
609
  const runVite = Effect.fn(function* (worker, rootDir) {
404
610
  const proxy = yield* maybeStartProxy(worker.id, worker.dev);
405
611
  yield* proxy.unset().pipe(Effect.forkChild);
@@ -425,61 +631,12 @@ export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_
425
631
  yield* proxy.set(new URL(devServer.resolvedUrls.local[0]));
426
632
  return proxy.url;
427
633
  });
428
- const rootScope = yield* Effect.scope;
429
- const workerdScopes = new Map();
430
- const context = yield* Effect.context();
431
- const instances = new Map();
432
- const runInstance = Effect.fn(function* (options) {
433
- const { accountId } = yield* yield* CloudflareEnvironment;
434
- const { props, bindings } = options;
435
- const config = yield* buildConfig(options);
436
- const url = yield* (props.vite ? runVite(config, props.vite.rootDir) : runWorker(config)).pipe(Effect.map((url) => url.toString()));
437
- return {
438
- workerId: config.name,
439
- workerName: config.name,
440
- namespace: undefined,
441
- logpush: undefined,
442
- url,
443
- tags: [],
444
- durableObjectNamespaces: Object.fromEntries(config.durableObjectNamespaces.map((namespace) => [
445
- namespace.className,
446
- namespace.uniqueKey,
447
- ])),
448
- domains: [url],
449
- routes: [],
450
- crons: Array.from(new Set([...getCronBindings(bindings), ...(props.crons ?? [])])),
451
- accountId,
452
- };
453
- });
454
634
  return {
455
- // Local dev provider: there is no cloud enumeration API. The set of
456
- // locally running Workers is the in-memory `instances` map; each
457
- // instance's fiber resolves to the Worker Attributes once it has
458
- // started, so enumerate that local state.
459
- list: () => Effect.forEach(Array.from(instances.values()), (instance) => Fiber.join(instance.fiber), { concurrency: "unbounded" }),
460
- diff: Effect.fn(function* ({ id, news: desired, newBindings, output }) {
461
- // Effect-valued `env` entries (tagged Worker classes) never resolve
462
- // at plan time; their identity is carried by the resolved binding
463
- // data. Strip them so the signature-based diff still runs — same
464
- // rationale as the cloud WorkerProvider (#874).
465
- const news = stripEffects(desired);
466
- if (!isResolved(news) || !isResolved(newBindings))
467
- return undefined;
468
- const options = {
469
- id,
470
- props: news,
471
- bindings: newBindings,
472
- };
473
- const signature = yield* structuralSignature(options);
474
- if (instances.get(options.id)?.signature === signature) {
475
- return { action: "noop" };
476
- }
477
- const name = yield* createWorkerName(id, news.name);
478
- return {
479
- action: "update",
480
- stables: output?.workerName === name ? ["workerName"] : undefined,
481
- };
482
- }),
635
+ resolveConfig,
636
+ // The physical name only survives an update when it isn't changing.
637
+ stables: ({ output, config }) => Effect.succeed(output?.workerName === config.name
638
+ ? ["workerName"]
639
+ : undefined),
483
640
  precreate: Effect.fn(function* ({ id, news, bindings }) {
484
641
  const name = yield* createWorkerName(id, news.name);
485
642
  const durableObjectNamespaces = {};
@@ -492,93 +649,123 @@ export const LocalWorkerProvider = () => RpcProvider.effect(Worker, LOCAL_ENTRY_
492
649
  }
493
650
  }
494
651
  }
495
- const { accountId } = yield* yield* CloudflareEnvironment;
496
- const url = news.dev?.mode === "external"
652
+ const { accountId } = yield* cloudflareEnv;
653
+ const urls = news.dev?.mode === "external"
497
654
  ? // news.dev.url may be an unresolved output; avoid trying to resolve it here.
498
- undefined
655
+ []
499
656
  : yield* maybeStartProxy(id, {
500
657
  ...news.dev,
658
+ mode: "worker",
501
659
  port: news.dev?.port ?? 1337,
502
- }).pipe(Effect.map((proxy) => proxy.url.toString()));
660
+ }).pipe(Effect.flatMap((proxy) => resolveLocalUrls(proxy.url)));
503
661
  return {
504
662
  workerId: name,
505
663
  workerName: name,
506
664
  namespace: undefined,
507
665
  logpush: undefined,
508
- url,
666
+ url: urls[0],
667
+ urls,
668
+ domain: undefined,
509
669
  tags: [],
510
670
  durableObjectNamespaces,
511
- domains: url ? [url] : [],
512
671
  routes: [],
513
672
  crons: Array.from(new Set([...getCronBindings(bindings), ...(news.crons ?? [])])),
514
673
  accountId,
515
674
  };
516
675
  }),
517
- reconcile: Effect.fn(function* ({ id, news, bindings }) {
518
- // `dev: false` opts out of running a local Worker entirely —
519
- // typically because an external dev process (DevCommand) is
520
- // serving requests. Tear down any prior instance and return a
521
- // stub Attributes; the resource exists in state but has no
522
- // running workerd / proxy behind it.
523
- if (news.dev?.mode === "external") {
524
- const { accountId } = yield* yield* CloudflareEnvironment;
525
- const existing = instances.get(id);
526
- if (existing) {
527
- yield* Fiber.interrupt(existing.fiber);
528
- yield* Scope.close(existing.scope, Exit.void);
529
- instances.delete(id);
530
- dropServeState(id);
531
- }
532
- const name = yield* createWorkerName(id, news.name);
676
+ start: Effect.fn(function* ({ id, config }) {
677
+ const { accountId } = yield* cloudflareEnv;
678
+ // `dev: { mode: "external" }` opts out of running a local Worker
679
+ // entirely — typically because an external dev process
680
+ // (Command.Dev) is serving requests. The instance exists in the
681
+ // registry (with an empty scope) but has no workerd behind it. A
682
+ // previous worker-mode instance for this id may have registered
683
+ // serve/restart state — drop it, and tear down its workerd (with
684
+ // make-before-break the running workerd outlives instance scopes
685
+ // and must be closed explicitly on handoff).
686
+ if (config.dev.mode === "external") {
687
+ dropServeState(id);
688
+ yield* closeWorkerd(id);
689
+ const urls = config.dev.url ? [config.dev.url] : [];
533
690
  return {
534
- workerId: name,
535
- workerName: name,
691
+ workerId: config.name,
692
+ workerName: config.name,
536
693
  namespace: undefined,
537
694
  logpush: undefined,
538
- url: news.dev.url,
695
+ url: urls[0],
696
+ urls,
697
+ domain: undefined,
539
698
  tags: [],
540
699
  durableObjectNamespaces: {},
541
700
  accountId,
542
- domains: [],
543
701
  routes: [],
544
- crons: news.crons ?? [],
702
+ crons: config.crons,
545
703
  };
546
704
  }
547
- const options = { id, props: news, bindings };
548
- const signature = yield* structuralSignature(options);
549
- const existing = instances.get(options.id);
550
- if (existing) {
551
- if (existing.signature === signature) {
552
- yield* Effect.log(`[${options.id}] No changes, using existing instance`);
553
- return yield* Fiber.join(existing.fiber);
554
- }
555
- yield* Effect.log(`[${options.id}] Changes detected, interrupting existing instance`);
556
- yield* Fiber.interrupt(existing.fiber);
557
- yield* Scope.close(existing.scope, Exit.void);
558
- instances.delete(options.id);
559
- dropServeState(options.id);
560
- }
561
- const scope = yield* Scope.fork(rootScope);
562
- const fiber = yield* runInstance(options).pipe(Effect.forkDetach, Scope.provide(scope));
563
- instances.set(options.id, { signature, fiber, scope });
564
- return yield* Fiber.join(fiber).pipe(Effect.onExit((exit) => Effect.sync(() => {
565
- if (exit._tag === "Failure") {
566
- instances.delete(options.id);
567
- }
568
- })));
705
+ // `Worker.URL` locally resolves to the worker's dev-proxy URL —
706
+ // the proxy is stable per worker id (the same instance `runWorker`
707
+ // / `runVite` attach to below), so the URL is known before workerd
708
+ // starts. Trailing slash stripped to match the cloud value's shape.
709
+ const needsSelfUrl = config.bindingDescriptors.some((b) => b.type === "self_url") ||
710
+ Object.values(config.env ?? {}).some(isSelfUrl);
711
+ const selfUrl = needsSelfUrl
712
+ ? (yield* maybeStartProxy(id, config.dev)).url
713
+ .toString()
714
+ .replace(/\/$/, "")
715
+ : undefined;
716
+ const workerBindings = yield* materializeWorkerBindings(config, selfUrl);
717
+ const worker = {
718
+ ...config,
719
+ // Substitute `Worker.URL` sentinels so the Vite dev server
720
+ // inlines the local URL into VITE_*-prefixed define entries.
721
+ env: config.env && selfUrl !== undefined
722
+ ? Object.fromEntries(Object.entries(config.env).map(([key, value]) => [
723
+ key,
724
+ isSelfUrl(value) ? selfUrl : value,
725
+ ]))
726
+ : config.env,
727
+ dev: config.dev,
728
+ workerBindings,
729
+ };
730
+ const serverUrl = yield* config.vite
731
+ ? runVite(worker, config.viteRootDir)
732
+ : config.assetsOnly
733
+ ? runAssetsOnly(worker)
734
+ : runWorker(worker);
735
+ // In dev, `urls` is the dev server's actual surface — localhost
736
+ // first, then LAN addresses for wildcard hosts. Deployed domains
737
+ // are not served by this session, so they don't appear.
738
+ const urls = yield* resolveLocalUrls(serverUrl);
739
+ return {
740
+ workerId: config.name,
741
+ workerName: config.name,
742
+ namespace: undefined,
743
+ logpush: undefined,
744
+ url: urls[0],
745
+ urls,
746
+ domain: undefined,
747
+ tags: [],
748
+ durableObjectNamespaces: Object.fromEntries(config.durableObjectNamespaces.map((namespace) => [
749
+ namespace.className,
750
+ namespace.uniqueKey,
751
+ ])),
752
+ routes: [],
753
+ crons: config.crons,
754
+ accountId,
755
+ };
569
756
  }),
570
- delete: Effect.fn(function* ({ id }) {
571
- const existing = instances.get(id);
572
- if (existing) {
573
- yield* Fiber.interrupt(existing.fiber);
574
- yield* Scope.close(existing.scope, Exit.void);
575
- instances.delete(id);
576
- dropServeState(id);
577
- }
757
+ stop: Effect.fn(function* ({ id }) {
758
+ // Cross-restart state: the serve/restart bookkeeping, the running
759
+ // workerd (which outlives instance scopes for make-before-break),
760
+ // and the URL proxy live outside instance scopes and are only
761
+ // reclaimed on a real delete.
762
+ dropServeState(id);
763
+ yield* closeWorkerd(id);
764
+ yield* stopProxy(id);
578
765
  }),
579
766
  };
580
767
  }));
581
- export const toRuntimeBinding = Effect.fn(function* (b) {
768
+ export const toRuntimeBinding = Effect.fn(function* (b, dev) {
582
769
  const unsupported = () => new WorkerValidationError({
583
770
  message: `${b.type} bindings are not supported in local mode`,
584
771
  value: b,
@@ -599,7 +786,12 @@ export const toRuntimeBinding = Effect.fn(function* (b) {
599
786
  case "browser":
600
787
  return Browser.remote(b.name);
601
788
  case "d1":
602
- return D1.remote(b.name, b.databaseId);
789
+ // A `dev:` id belongs to a locally-emulated database (local D1
790
+ // provider); a real id is a live database the dev worker proxies to
791
+ // (e.g. the resource opted out of emulation via `Alchemy.remote()`).
792
+ return isLocalId(b.databaseId)
793
+ ? D1.local({ binding: b.name, id: b.databaseId })
794
+ : D1.remote(b.name, b.databaseId);
603
795
  case "data_blob":
604
796
  return Data.local(b.name, Buffer.from(b.part));
605
797
  case "dispatch_namespace":
@@ -626,20 +818,57 @@ export const toRuntimeBinding = Effect.fn(function* (b) {
626
818
  case "json":
627
819
  return Json.local(b.name, b.json);
628
820
  case "kv_namespace":
629
- return KvNamespace.remote(b.name, b.namespaceId);
821
+ // A `dev:` id belongs to a locally-emulated namespace; a real id is
822
+ // a live namespace the dev worker proxies to.
823
+ return isLocalId(b.namespaceId)
824
+ ? KvNamespace.local({ binding: b.name, id: b.namespaceId })
825
+ : KvNamespace.remote(b.name, b.namespaceId);
630
826
  case "mtls_certificate":
631
827
  return MtlsCertificate.remote(b.name, b.certificateId);
632
828
  case "pipelines":
633
829
  return Pipelines.remote(b.name, b.pipeline);
634
830
  case "plain_text":
635
831
  return Text.local(b.name, b.text);
636
- case "queue":
832
+ case "queue": {
833
+ // A real queueId belongs to an `Alchemy.remote()` queue. Queue bindings
834
+ // are NOT supported in Cloudflare's remote/preview sessions — a
835
+ // platform limitation (cloudflare/workers-sdk#9929) — so live
836
+ // production goes through the deployed shim worker registered at
837
+ // eval time (see `Queues/QueueShim.ts`): the local binding targets a
838
+ // forwarder service that relays the queue wire protocol to the shim
839
+ // over HTTPS with a bearer token.
840
+ if (b.queueId !== undefined && !isLocalId(b.queueId)) {
841
+ const url = b.shim?.url;
842
+ const token = b.shim?.token;
843
+ if (url === undefined || token === undefined) {
844
+ // Defensive: binding data produced by current eval always carries
845
+ // the shim for this mode combination.
846
+ return yield* new WorkerValidationError({
847
+ message: `Queue binding "${b.name}" targets a live queue ` +
848
+ "(Alchemy.remote()) but no producer shim was registered for it — " +
849
+ "re-deploy, or remove remote() from the queue (local emulation).",
850
+ value: b,
851
+ });
852
+ }
853
+ return Queue.remote({
854
+ binding: b.name,
855
+ queueName: b.queueName,
856
+ url,
857
+ token: typeof token === "string" ? token : Redacted.value(token),
858
+ });
859
+ }
637
860
  return Queue.local({
638
861
  binding: b.name,
639
862
  queueName: b.queueName,
640
863
  });
864
+ }
641
865
  case "r2_bucket":
642
- return R2Bucket.remote(b.name, b.bucketName, b.jurisdiction);
866
+ // A `dev:`-prefixed bucket name belongs to a locally-emulated bucket
867
+ // (R2 has no opaque id — the name is the identity); a real name is a
868
+ // live bucket the dev worker proxies to.
869
+ return isLocalId(b.bucketName)
870
+ ? R2Bucket.local({ binding: b.name, id: b.bucketName })
871
+ : R2Bucket.remote(b.name, b.bucketName, b.jurisdiction);
643
872
  case "ratelimit":
644
873
  return RateLimit.local({
645
874
  binding: b.name,
@@ -653,7 +882,7 @@ export const toRuntimeBinding = Effect.fn(function* (b) {
653
882
  case "secrets_store_secret":
654
883
  return yield* unsupported();
655
884
  case "send_email":
656
- return SendEmail.remote({
885
+ return SendEmail[dev?.remote ? "remote" : "local"]({
657
886
  binding: b.name,
658
887
  destinationAddress: b.destinationAddress,
659
888
  allowedDestinationAddresses: b.allowedDestinationAddresses,
@@ -686,50 +915,6 @@ export const toRuntimeBinding = Effect.fn(function* (b) {
686
915
  return yield* unsupported();
687
916
  }
688
917
  });
689
- /**
690
- * Stable, collision-free structural signature used to decide whether a
691
- * locally-running dev Worker needs to be torn down and restarted.
692
- *
693
- * We deliberately do NOT use `Hash.structure` here: Effect's structural
694
- * hash folds sibling fields together with XOR, so when the *same* value
695
- * change appears in two sibling subtrees the diffs cancel and the hash is
696
- * unchanged. The Worker config mirrors `env` values into `bindings`
697
- * (e.g. `DEV_MARKER`/an R2 bucket name appear in both `props.env` and the
698
- * derived `bindings`), which is exactly the shape that collides — so an
699
- * env-only or rebind change would be silently treated as "no change" and
700
- * the dev Worker would never restart with the new bindings.
701
- *
702
- * A canonical JSON serialization (sorted keys, unwrapped `Redacted`,
703
- * cycle-safe) gives an exact comparison instead of a lossy fingerprint. We
704
- * hash that serialization with SHA-256 so each retained signature is a fixed
705
- * 64-char digest rather than a copy of the whole props/bindings blob.
706
- */
707
- const structuralSignature = (value) => {
708
- const seen = new WeakSet();
709
- const normalize = (input) => {
710
- if (typeof input === "bigint")
711
- return `bigint:${input.toString()}`;
712
- if (input === null || typeof input !== "object")
713
- return input;
714
- if (Redacted.isRedacted(input)) {
715
- return { __redacted: normalize(Redacted.value(input)) };
716
- }
717
- if (seen.has(input))
718
- return "[circular]";
719
- seen.add(input);
720
- if (input instanceof Uint8Array)
721
- return { __bytes: Array.from(input) };
722
- if (Array.isArray(input))
723
- return input.map(normalize);
724
- return Object.fromEntries(Object.keys(input)
725
- .sort()
726
- .map((key) => [
727
- key,
728
- normalize(input[key]),
729
- ]));
730
- };
731
- return sha256(JSON.stringify(normalize(value)));
732
- };
733
918
  const toRuntimeAssets = Effect.fn(function* (assets) {
734
919
  if (!assets)
735
920
  return undefined;