alchemy 2.0.0-beta.61 → 2.0.0-beta.62

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 (602) hide show
  1. package/README.md +15 -0
  2. package/bin/exec.js +71 -12
  3. package/bin/exec.js.map +1 -1
  4. package/lib/AWS/ACM/Certificate.d.ts.map +1 -1
  5. package/lib/AWS/ACM/Certificate.js +16 -4
  6. package/lib/AWS/ACM/Certificate.js.map +1 -1
  7. package/lib/AWS/ApiGateway/common.d.ts.map +1 -1
  8. package/lib/AWS/ApiGateway/common.js +6 -3
  9. package/lib/AWS/ApiGateway/common.js.map +1 -1
  10. package/lib/AWS/AuthProvider.d.ts.map +1 -1
  11. package/lib/AWS/AuthProvider.js +1 -1
  12. package/lib/AWS/AuthProvider.js.map +1 -1
  13. package/lib/AWS/AutoScaling/AutoScalingGroup.d.ts.map +1 -1
  14. package/lib/AWS/AutoScaling/AutoScalingGroup.js +8 -2
  15. package/lib/AWS/AutoScaling/AutoScalingGroup.js.map +1 -1
  16. package/lib/AWS/Bootstrap.d.ts.map +1 -1
  17. package/lib/AWS/Bootstrap.js +5 -2
  18. package/lib/AWS/Bootstrap.js.map +1 -1
  19. package/lib/AWS/CloudFront/Distribution.d.ts.map +1 -1
  20. package/lib/AWS/CloudFront/Distribution.js +20 -5
  21. package/lib/AWS/CloudFront/Distribution.js.map +1 -1
  22. package/lib/AWS/CloudFront/Function.js +5 -2
  23. package/lib/AWS/CloudFront/Function.js.map +1 -1
  24. package/lib/AWS/CloudFront/Invalidation.d.ts.map +1 -1
  25. package/lib/AWS/CloudFront/Invalidation.js +4 -1
  26. package/lib/AWS/CloudFront/Invalidation.js.map +1 -1
  27. package/lib/AWS/CloudFront/KvEntries.d.ts.map +1 -1
  28. package/lib/AWS/CloudFront/KvEntries.js +4 -1
  29. package/lib/AWS/CloudFront/KvEntries.js.map +1 -1
  30. package/lib/AWS/CloudFront/KvRoutesUpdate.d.ts.map +1 -1
  31. package/lib/AWS/CloudFront/KvRoutesUpdate.js +8 -2
  32. package/lib/AWS/CloudFront/KvRoutesUpdate.js.map +1 -1
  33. package/lib/AWS/CloudFront/VpcOrigin.d.ts.map +1 -1
  34. package/lib/AWS/CloudFront/VpcOrigin.js +12 -3
  35. package/lib/AWS/CloudFront/VpcOrigin.js.map +1 -1
  36. package/lib/AWS/CloudFront/common.d.ts.map +1 -1
  37. package/lib/AWS/CloudFront/common.js +5 -2
  38. package/lib/AWS/CloudFront/common.js.map +1 -1
  39. package/lib/AWS/CloudWatch/AnomalyDetector.d.ts.map +1 -1
  40. package/lib/AWS/CloudWatch/AnomalyDetector.js +4 -1
  41. package/lib/AWS/CloudWatch/AnomalyDetector.js.map +1 -1
  42. package/lib/AWS/CloudWatch/common.d.ts.map +1 -1
  43. package/lib/AWS/CloudWatch/common.js +1 -1
  44. package/lib/AWS/CloudWatch/common.js.map +1 -1
  45. package/lib/AWS/DynamoDB/Table.d.ts.map +1 -1
  46. package/lib/AWS/DynamoDB/Table.js +53 -20
  47. package/lib/AWS/DynamoDB/Table.js.map +1 -1
  48. package/lib/AWS/EC2/EIP.d.ts.map +1 -1
  49. package/lib/AWS/EC2/EIP.js +4 -1
  50. package/lib/AWS/EC2/EIP.js.map +1 -1
  51. package/lib/AWS/EC2/EgressOnlyInternetGateway.d.ts.map +1 -1
  52. package/lib/AWS/EC2/EgressOnlyInternetGateway.js +4 -2
  53. package/lib/AWS/EC2/EgressOnlyInternetGateway.js.map +1 -1
  54. package/lib/AWS/EC2/Instance.d.ts.map +1 -1
  55. package/lib/AWS/EC2/Instance.js +12 -3
  56. package/lib/AWS/EC2/Instance.js.map +1 -1
  57. package/lib/AWS/EC2/InternetGateway.d.ts.map +1 -1
  58. package/lib/AWS/EC2/InternetGateway.js +12 -5
  59. package/lib/AWS/EC2/InternetGateway.js.map +1 -1
  60. package/lib/AWS/EC2/NatGateway.js +2 -4
  61. package/lib/AWS/EC2/NatGateway.js.map +1 -1
  62. package/lib/AWS/EC2/NetworkAcl.d.ts.map +1 -1
  63. package/lib/AWS/EC2/NetworkAcl.js +4 -1
  64. package/lib/AWS/EC2/NetworkAcl.js.map +1 -1
  65. package/lib/AWS/EC2/NetworkAclEntry.d.ts.map +1 -1
  66. package/lib/AWS/EC2/NetworkAclEntry.js +4 -1
  67. package/lib/AWS/EC2/NetworkAclEntry.js.map +1 -1
  68. package/lib/AWS/EC2/RouteTable.d.ts.map +1 -1
  69. package/lib/AWS/EC2/RouteTable.js +8 -6
  70. package/lib/AWS/EC2/RouteTable.js.map +1 -1
  71. package/lib/AWS/EC2/RouteTableAssociation.js +2 -5
  72. package/lib/AWS/EC2/RouteTableAssociation.js.map +1 -1
  73. package/lib/AWS/EC2/SecurityGroup.d.ts.map +1 -1
  74. package/lib/AWS/EC2/SecurityGroup.js +8 -3
  75. package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
  76. package/lib/AWS/EC2/Subnet.d.ts.map +1 -1
  77. package/lib/AWS/EC2/Subnet.js +10 -6
  78. package/lib/AWS/EC2/Subnet.js.map +1 -1
  79. package/lib/AWS/EC2/Vpc.d.ts.map +1 -1
  80. package/lib/AWS/EC2/Vpc.js +7 -7
  81. package/lib/AWS/EC2/Vpc.js.map +1 -1
  82. package/lib/AWS/EC2/VpcEndpoint.js +2 -4
  83. package/lib/AWS/EC2/VpcEndpoint.js.map +1 -1
  84. package/lib/AWS/ECS/Service.d.ts.map +1 -1
  85. package/lib/AWS/ECS/Service.js +4 -1
  86. package/lib/AWS/ECS/Service.js.map +1 -1
  87. package/lib/AWS/EKS/Addon.js +8 -2
  88. package/lib/AWS/EKS/Addon.js.map +1 -1
  89. package/lib/AWS/EKS/Cluster.d.ts.map +1 -1
  90. package/lib/AWS/EKS/Cluster.js +4 -1
  91. package/lib/AWS/EKS/Cluster.js.map +1 -1
  92. package/lib/AWS/ELBv2/TargetGroup.d.ts.map +1 -1
  93. package/lib/AWS/ELBv2/TargetGroup.js +4 -1
  94. package/lib/AWS/ELBv2/TargetGroup.js.map +1 -1
  95. package/lib/AWS/ELBv2/TrustStore.d.ts.map +1 -1
  96. package/lib/AWS/ELBv2/TrustStore.js +4 -1
  97. package/lib/AWS/ELBv2/TrustStore.js.map +1 -1
  98. package/lib/AWS/IAM/SAMLProvider.js +4 -1
  99. package/lib/AWS/IAM/SAMLProvider.js.map +1 -1
  100. package/lib/AWS/IdentityCenter/AccountAssignment.js +8 -2
  101. package/lib/AWS/IdentityCenter/AccountAssignment.js.map +1 -1
  102. package/lib/AWS/IdentityCenter/common.d.ts.map +1 -1
  103. package/lib/AWS/IdentityCenter/common.js +1 -1
  104. package/lib/AWS/IdentityCenter/common.js.map +1 -1
  105. package/lib/AWS/KMS/Alias.js +4 -1
  106. package/lib/AWS/KMS/Alias.js.map +1 -1
  107. package/lib/AWS/KMS/Key.js +4 -1
  108. package/lib/AWS/KMS/Key.js.map +1 -1
  109. package/lib/AWS/Kinesis/Stream.d.ts.map +1 -1
  110. package/lib/AWS/Kinesis/Stream.js +2 -2
  111. package/lib/AWS/Kinesis/Stream.js.map +1 -1
  112. package/lib/AWS/Kinesis/StreamConsumer.d.ts.map +1 -1
  113. package/lib/AWS/Kinesis/StreamConsumer.js +7 -4
  114. package/lib/AWS/Kinesis/StreamConsumer.js.map +1 -1
  115. package/lib/AWS/Lambda/Alias.d.ts.map +1 -1
  116. package/lib/AWS/Lambda/Alias.js +4 -1
  117. package/lib/AWS/Lambda/Alias.js.map +1 -1
  118. package/lib/AWS/Lambda/EventInvokeConfig.d.ts.map +1 -1
  119. package/lib/AWS/Lambda/EventInvokeConfig.js +2 -2
  120. package/lib/AWS/Lambda/EventInvokeConfig.js.map +1 -1
  121. package/lib/AWS/Lambda/EventSourceMapping.d.ts.map +1 -1
  122. package/lib/AWS/Lambda/EventSourceMapping.js +10 -4
  123. package/lib/AWS/Lambda/EventSourceMapping.js.map +1 -1
  124. package/lib/AWS/Lambda/Function.d.ts +16 -1
  125. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  126. package/lib/AWS/Lambda/Function.js +101 -26
  127. package/lib/AWS/Lambda/Function.js.map +1 -1
  128. package/lib/AWS/Lambda/MicrovmProvider.d.ts.map +1 -1
  129. package/lib/AWS/Lambda/MicrovmProvider.js +13 -5
  130. package/lib/AWS/Lambda/MicrovmProvider.js.map +1 -1
  131. package/lib/AWS/Lambda/NetworkConnector.js +13 -5
  132. package/lib/AWS/Lambda/NetworkConnector.js.map +1 -1
  133. package/lib/AWS/Lambda/RuntimeExtension.d.ts +27 -0
  134. package/lib/AWS/Lambda/RuntimeExtension.d.ts.map +1 -0
  135. package/lib/AWS/Lambda/RuntimeExtension.js +49 -0
  136. package/lib/AWS/Lambda/RuntimeExtension.js.map +1 -0
  137. package/lib/AWS/Organizations/Account.js +5 -2
  138. package/lib/AWS/Organizations/Account.js.map +1 -1
  139. package/lib/AWS/Organizations/common.d.ts.map +1 -1
  140. package/lib/AWS/Organizations/common.js +1 -1
  141. package/lib/AWS/Organizations/common.js.map +1 -1
  142. package/lib/AWS/Providers.js +14 -12
  143. package/lib/AWS/Providers.js.map +1 -1
  144. package/lib/AWS/RDS/DBCluster.d.ts.map +1 -1
  145. package/lib/AWS/RDS/DBCluster.js +8 -2
  146. package/lib/AWS/RDS/DBCluster.js.map +1 -1
  147. package/lib/AWS/RDS/DBInstance.d.ts.map +1 -1
  148. package/lib/AWS/RDS/DBInstance.js +8 -2
  149. package/lib/AWS/RDS/DBInstance.js.map +1 -1
  150. package/lib/AWS/RDS/DBProxy.d.ts.map +1 -1
  151. package/lib/AWS/RDS/DBProxy.js +4 -1
  152. package/lib/AWS/RDS/DBProxy.js.map +1 -1
  153. package/lib/AWS/RDS/DBProxyEndpoint.d.ts.map +1 -1
  154. package/lib/AWS/RDS/DBProxyEndpoint.js +4 -1
  155. package/lib/AWS/RDS/DBProxyEndpoint.js.map +1 -1
  156. package/lib/AWS/Route53/HealthCheck.d.ts.map +1 -1
  157. package/lib/AWS/Route53/HealthCheck.js +8 -2
  158. package/lib/AWS/Route53/HealthCheck.js.map +1 -1
  159. package/lib/AWS/Route53/HostedZone.d.ts.map +1 -1
  160. package/lib/AWS/Route53/HostedZone.js +8 -2
  161. package/lib/AWS/Route53/HostedZone.js.map +1 -1
  162. package/lib/AWS/Route53/Record.d.ts.map +1 -1
  163. package/lib/AWS/Route53/Record.js +4 -1
  164. package/lib/AWS/Route53/Record.js.map +1 -1
  165. package/lib/AWS/S3/Bucket.d.ts.map +1 -1
  166. package/lib/AWS/S3/Bucket.js +5 -2
  167. package/lib/AWS/S3/Bucket.js.map +1 -1
  168. package/lib/AWS/SQS/Queue.d.ts.map +1 -1
  169. package/lib/AWS/SQS/Queue.js +25 -7
  170. package/lib/AWS/SQS/Queue.js.map +1 -1
  171. package/lib/AWS/StateStore/State.js +5 -2
  172. package/lib/AWS/StateStore/State.js.map +1 -1
  173. package/lib/AWS/Website/AssetDeployment.js +5 -2
  174. package/lib/AWS/Website/AssetDeployment.js.map +1 -1
  175. package/lib/Apply.js +8 -0
  176. package/lib/Apply.js.map +1 -1
  177. package/lib/Auth/AuthProvider.d.ts +10 -0
  178. package/lib/Auth/AuthProvider.d.ts.map +1 -1
  179. package/lib/Auth/AuthProvider.js +10 -0
  180. package/lib/Auth/AuthProvider.js.map +1 -1
  181. package/lib/Axiom/AuthProvider.d.ts.map +1 -1
  182. package/lib/Axiom/AuthProvider.js +1 -1
  183. package/lib/Axiom/AuthProvider.js.map +1 -1
  184. package/lib/Bundle/Vite.d.ts +1 -1
  185. package/lib/Bundle/Vite.d.ts.map +1 -1
  186. package/lib/Bundle/Vite.js +14 -12
  187. package/lib/Bundle/Vite.js.map +1 -1
  188. package/lib/Cli/commands/_shared.d.ts +55 -5
  189. package/lib/Cli/commands/_shared.d.ts.map +1 -1
  190. package/lib/Cli/commands/_shared.js +62 -2
  191. package/lib/Cli/commands/_shared.js.map +1 -1
  192. package/lib/Cli/commands/login.d.ts.map +1 -1
  193. package/lib/Cli/commands/login.js +9 -20
  194. package/lib/Cli/commands/login.js.map +1 -1
  195. package/lib/Cli/commands/logs.d.ts.map +1 -1
  196. package/lib/Cli/commands/logs.js +1 -0
  197. package/lib/Cli/commands/logs.js.map +1 -1
  198. package/lib/Cli/commands/nuke.d.ts.map +1 -1
  199. package/lib/Cli/commands/nuke.js +15 -24
  200. package/lib/Cli/commands/nuke.js.map +1 -1
  201. package/lib/Cli/commands/profile.d.ts +23 -1
  202. package/lib/Cli/commands/profile.d.ts.map +1 -1
  203. package/lib/Cli/commands/profile.js +47 -10
  204. package/lib/Cli/commands/profile.js.map +1 -1
  205. package/lib/Cli/commands/tail.d.ts.map +1 -1
  206. package/lib/Cli/commands/tail.js +1 -0
  207. package/lib/Cli/commands/tail.js.map +1 -1
  208. package/lib/Cloudflare/AI/GatewayDynamicRouting.d.ts.map +1 -1
  209. package/lib/Cloudflare/AI/GatewayDynamicRouting.js +31 -2
  210. package/lib/Cloudflare/AI/GatewayDynamicRouting.js.map +1 -1
  211. package/lib/Cloudflare/AI/SearchInstance.js +4 -1
  212. package/lib/Cloudflare/AI/SearchInstance.js.map +1 -1
  213. package/lib/Cloudflare/Access/Application.d.ts.map +1 -1
  214. package/lib/Cloudflare/Access/Application.js +7 -1
  215. package/lib/Cloudflare/Access/Application.js.map +1 -1
  216. package/lib/Cloudflare/Alerting/Silence.d.ts.map +1 -1
  217. package/lib/Cloudflare/Alerting/Silence.js +4 -1
  218. package/lib/Cloudflare/Alerting/Silence.js.map +1 -1
  219. package/lib/Cloudflare/Alerting/Webhook.d.ts.map +1 -1
  220. package/lib/Cloudflare/Alerting/Webhook.js +8 -2
  221. package/lib/Cloudflare/Alerting/Webhook.js.map +1 -1
  222. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  223. package/lib/Cloudflare/Auth/AuthProvider.js +22 -7
  224. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  225. package/lib/Cloudflare/Auth/OAuthClient.d.ts.map +1 -1
  226. package/lib/Cloudflare/Auth/OAuthClient.js +6 -7
  227. package/lib/Cloudflare/Auth/OAuthClient.js.map +1 -1
  228. package/lib/Cloudflare/Cache/RegionalTieredCache.d.ts.map +1 -1
  229. package/lib/Cloudflare/Cache/RegionalTieredCache.js +7 -1
  230. package/lib/Cloudflare/Cache/RegionalTieredCache.js.map +1 -1
  231. package/lib/Cloudflare/Containers/ContainerApplication.d.ts +18 -2
  232. package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
  233. package/lib/Cloudflare/Containers/ContainerApplication.js +1 -0
  234. package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
  235. package/lib/Cloudflare/Containers/ContainerBundle.d.ts +29 -3
  236. package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
  237. package/lib/Cloudflare/Containers/ContainerBundle.js +73 -22
  238. package/lib/Cloudflare/Containers/ContainerBundle.js.map +1 -1
  239. package/lib/Cloudflare/Containers/ContainerProvider.d.ts.map +1 -1
  240. package/lib/Cloudflare/Containers/ContainerProvider.js +53 -14
  241. package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
  242. package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts +6 -6
  243. package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts.map +1 -1
  244. package/lib/Cloudflare/Containers/LocalContainerProvider.js +69 -47
  245. package/lib/Cloudflare/Containers/LocalContainerProvider.js.map +1 -1
  246. package/lib/Cloudflare/Diagnostics/EndpointHealthcheck.js +4 -1
  247. package/lib/Cloudflare/Diagnostics/EndpointHealthcheck.js.map +1 -1
  248. package/lib/Cloudflare/Images/Variant.d.ts.map +1 -1
  249. package/lib/Cloudflare/Images/Variant.js +4 -1
  250. package/lib/Cloudflare/Images/Variant.js.map +1 -1
  251. package/lib/Cloudflare/LoadBalancer/Monitor.d.ts.map +1 -1
  252. package/lib/Cloudflare/LoadBalancer/Monitor.js +4 -1
  253. package/lib/Cloudflare/LoadBalancer/Monitor.js.map +1 -1
  254. package/lib/Cloudflare/LoadBalancer/MonitorGroup.d.ts.map +1 -1
  255. package/lib/Cloudflare/LoadBalancer/MonitorGroup.js +4 -1
  256. package/lib/Cloudflare/LoadBalancer/MonitorGroup.js.map +1 -1
  257. package/lib/Cloudflare/LoadBalancer/Pool.d.ts.map +1 -1
  258. package/lib/Cloudflare/LoadBalancer/Pool.js +4 -1
  259. package/lib/Cloudflare/LoadBalancer/Pool.js.map +1 -1
  260. package/lib/Cloudflare/LocalRuntime.d.ts +14 -0
  261. package/lib/Cloudflare/LocalRuntime.d.ts.map +1 -1
  262. package/lib/Cloudflare/LocalRuntime.js +1 -0
  263. package/lib/Cloudflare/LocalRuntime.js.map +1 -1
  264. package/lib/Cloudflare/MagicNetworkMonitoring/Rule.d.ts.map +1 -1
  265. package/lib/Cloudflare/MagicNetworkMonitoring/Rule.js +4 -1
  266. package/lib/Cloudflare/MagicNetworkMonitoring/Rule.js.map +1 -1
  267. package/lib/Cloudflare/Pipelines/Pipeline.d.ts.map +1 -1
  268. package/lib/Cloudflare/Pipelines/Pipeline.js +8 -2
  269. package/lib/Cloudflare/Pipelines/Pipeline.js.map +1 -1
  270. package/lib/Cloudflare/Pipelines/Sink.d.ts.map +1 -1
  271. package/lib/Cloudflare/Pipelines/Sink.js +8 -2
  272. package/lib/Cloudflare/Pipelines/Sink.js.map +1 -1
  273. package/lib/Cloudflare/Pipelines/Stream.d.ts.map +1 -1
  274. package/lib/Cloudflare/Pipelines/Stream.js +4 -1
  275. package/lib/Cloudflare/Pipelines/Stream.js.map +1 -1
  276. package/lib/Cloudflare/Providers.js +14 -11
  277. package/lib/Cloudflare/Providers.js.map +1 -1
  278. package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
  279. package/lib/Cloudflare/Queues/Consumer.js +30 -3
  280. package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
  281. package/lib/Cloudflare/Queues/Queue.d.ts.map +1 -1
  282. package/lib/Cloudflare/Queues/Queue.js +4 -1
  283. package/lib/Cloudflare/Queues/Queue.js.map +1 -1
  284. package/lib/Cloudflare/R2/Bucket.js +12 -3
  285. package/lib/Cloudflare/R2/Bucket.js.map +1 -1
  286. package/lib/Cloudflare/R2/BucketEventNotification.js +4 -1
  287. package/lib/Cloudflare/R2/BucketEventNotification.js.map +1 -1
  288. package/lib/Cloudflare/R2/DataCatalog.js +4 -1
  289. package/lib/Cloudflare/R2/DataCatalog.js.map +1 -1
  290. package/lib/Cloudflare/Rum/Rule.d.ts.map +1 -1
  291. package/lib/Cloudflare/Rum/Rule.js +4 -1
  292. package/lib/Cloudflare/Rum/Rule.js.map +1 -1
  293. package/lib/Cloudflare/Snippets/Snippet.d.ts.map +1 -1
  294. package/lib/Cloudflare/Snippets/Snippet.js +4 -1
  295. package/lib/Cloudflare/Snippets/Snippet.js.map +1 -1
  296. package/lib/Cloudflare/StateStore/CredentialsFile.d.ts +42 -0
  297. package/lib/Cloudflare/StateStore/CredentialsFile.d.ts.map +1 -0
  298. package/lib/Cloudflare/StateStore/CredentialsFile.js +23 -0
  299. package/lib/Cloudflare/StateStore/CredentialsFile.js.map +1 -0
  300. package/lib/Cloudflare/StateStore/State.d.ts +2 -2
  301. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  302. package/lib/Cloudflare/StateStore/State.js +46 -9
  303. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  304. package/lib/Cloudflare/Tags/ZoneResourceTags.d.ts.map +1 -1
  305. package/lib/Cloudflare/Tags/ZoneResourceTags.js +4 -1
  306. package/lib/Cloudflare/Tags/ZoneResourceTags.js.map +1 -1
  307. package/lib/Cloudflare/UrlNormalization/UrlNormalization.d.ts.map +1 -1
  308. package/lib/Cloudflare/UrlNormalization/UrlNormalization.js +7 -1
  309. package/lib/Cloudflare/UrlNormalization/UrlNormalization.js.map +1 -1
  310. package/lib/Cloudflare/WaitingRoom/Settings.d.ts.map +1 -1
  311. package/lib/Cloudflare/WaitingRoom/Settings.js +7 -1
  312. package/lib/Cloudflare/WaitingRoom/Settings.js.map +1 -1
  313. package/lib/Cloudflare/Website/Vite.d.ts +19 -0
  314. package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
  315. package/lib/Cloudflare/Website/Vite.js +20 -0
  316. package/lib/Cloudflare/Website/Vite.js.map +1 -1
  317. package/lib/Cloudflare/Workers/Compatibility.d.ts.map +1 -1
  318. package/lib/Cloudflare/Workers/Compatibility.js +43 -7
  319. package/lib/Cloudflare/Workers/Compatibility.js.map +1 -1
  320. package/lib/Cloudflare/Workers/CronEventSource.d.ts +3 -2
  321. package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -1
  322. package/lib/Cloudflare/Workers/CronEventSource.js.map +1 -1
  323. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  324. package/lib/Cloudflare/Workers/DurableObjectBridge.js +86 -82
  325. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  326. package/lib/Cloudflare/Workers/HttpServer.d.ts +1 -4
  327. package/lib/Cloudflare/Workers/HttpServer.d.ts.map +1 -1
  328. package/lib/Cloudflare/Workers/HttpServer.js +1 -3
  329. package/lib/Cloudflare/Workers/HttpServer.js.map +1 -1
  330. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  331. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +74 -11
  332. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  333. package/lib/Cloudflare/Workers/ObservabilityDestination.d.ts.map +1 -1
  334. package/lib/Cloudflare/Workers/ObservabilityDestination.js +4 -1
  335. package/lib/Cloudflare/Workers/ObservabilityDestination.js.map +1 -1
  336. package/lib/Cloudflare/Workers/Vite.d.ts +1 -1
  337. package/lib/Cloudflare/Workers/Vite.d.ts.map +1 -1
  338. package/lib/Cloudflare/Workers/Worker.d.ts +27 -5
  339. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  340. package/lib/Cloudflare/Workers/Worker.js +10 -5
  341. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  342. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  343. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +24 -15
  344. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  345. package/lib/Cloudflare/Workers/WorkerBridge.d.ts +13 -5
  346. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  347. package/lib/Cloudflare/Workers/WorkerBridge.js +126 -50
  348. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  349. package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
  350. package/lib/Cloudflare/Workers/WorkerProvider.js +26 -7
  351. package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
  352. package/lib/Cloudflare/Workers/cloudflare_workers.d.ts.map +1 -1
  353. package/lib/Cloudflare/Workers/cloudflare_workers.js +10 -3
  354. package/lib/Cloudflare/Workers/cloudflare_workers.js.map +1 -1
  355. package/lib/Cloudflare/Workflows/Workflow.d.ts +10 -7
  356. package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
  357. package/lib/Cloudflare/Workflows/Workflow.js +38 -13
  358. package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
  359. package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
  360. package/lib/Cloudflare/Workflows/WorkflowBridge.js +39 -37
  361. package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
  362. package/lib/Cloudflare/Workflows/WorkflowName.d.ts +11 -0
  363. package/lib/Cloudflare/Workflows/WorkflowName.d.ts.map +1 -0
  364. package/lib/Cloudflare/Workflows/WorkflowName.js +28 -0
  365. package/lib/Cloudflare/Workflows/WorkflowName.js.map +1 -0
  366. package/lib/Cloudflare/Zone/Hold.d.ts.map +1 -1
  367. package/lib/Cloudflare/Zone/Hold.js +7 -1
  368. package/lib/Cloudflare/Zone/Hold.js.map +1 -1
  369. package/lib/Command/Dev.d.ts +16 -6
  370. package/lib/Command/Dev.d.ts.map +1 -1
  371. package/lib/Command/Dev.js +37 -7
  372. package/lib/Command/Dev.js.map +1 -1
  373. package/lib/Docker/Container.js +4 -1
  374. package/lib/Docker/Container.js.map +1 -1
  375. package/lib/Drizzle/Postgres.d.ts +14 -13
  376. package/lib/Drizzle/Postgres.d.ts.map +1 -1
  377. package/lib/Drizzle/Postgres.js +39 -19
  378. package/lib/Drizzle/Postgres.js.map +1 -1
  379. package/lib/GitHub/AuthProvider.d.ts.map +1 -1
  380. package/lib/GitHub/AuthProvider.js +1 -1
  381. package/lib/GitHub/AuthProvider.js.map +1 -1
  382. package/lib/GitHub/Env.d.ts +20 -0
  383. package/lib/GitHub/Env.d.ts.map +1 -0
  384. package/lib/GitHub/Env.js +27 -0
  385. package/lib/GitHub/Env.js.map +1 -0
  386. package/lib/GitHub/index.d.ts +1 -0
  387. package/lib/GitHub/index.d.ts.map +1 -1
  388. package/lib/GitHub/index.js +1 -0
  389. package/lib/GitHub/index.js.map +1 -1
  390. package/lib/Http.d.ts +9 -0
  391. package/lib/Http.d.ts.map +1 -1
  392. package/lib/Http.js +9 -0
  393. package/lib/Http.js.map +1 -1
  394. package/lib/Local/RpcProviderProxy.js +1 -1
  395. package/lib/Local/RpcProviderProxy.js.map +1 -1
  396. package/lib/Neon/AuthProvider.d.ts.map +1 -1
  397. package/lib/Neon/AuthProvider.js +1 -1
  398. package/lib/Neon/AuthProvider.js.map +1 -1
  399. package/lib/Neon/Project.js +4 -1
  400. package/lib/Neon/Project.js.map +1 -1
  401. package/lib/Plan.d.ts.map +1 -1
  402. package/lib/Plan.js +28 -11
  403. package/lib/Plan.js.map +1 -1
  404. package/lib/Planetscale/AuthProvider.d.ts +26 -9
  405. package/lib/Planetscale/AuthProvider.d.ts.map +1 -1
  406. package/lib/Planetscale/AuthProvider.js +142 -11
  407. package/lib/Planetscale/AuthProvider.js.map +1 -1
  408. package/lib/Planetscale/Branch.d.ts.map +1 -1
  409. package/lib/Planetscale/Branch.js +4 -1
  410. package/lib/Planetscale/Branch.js.map +1 -1
  411. package/lib/Planetscale/Credentials.d.ts.map +1 -1
  412. package/lib/Planetscale/Credentials.js +14 -6
  413. package/lib/Planetscale/Credentials.js.map +1 -1
  414. package/lib/Planetscale/MySQL/MySQLMigrations.js +4 -1
  415. package/lib/Planetscale/MySQL/MySQLMigrations.js.map +1 -1
  416. package/lib/Planetscale/OAuthClient.d.ts +72 -0
  417. package/lib/Planetscale/OAuthClient.d.ts.map +1 -0
  418. package/lib/Planetscale/OAuthClient.js +227 -0
  419. package/lib/Planetscale/OAuthClient.js.map +1 -0
  420. package/lib/Planetscale/Postgres/PostgresClusterSize.d.ts.map +1 -1
  421. package/lib/Planetscale/Postgres/PostgresClusterSize.js +4 -1
  422. package/lib/Planetscale/Postgres/PostgresClusterSize.js.map +1 -1
  423. package/lib/Planetscale/Postgres/PostgresMigrations.js +4 -1
  424. package/lib/Planetscale/Postgres/PostgresMigrations.js.map +1 -1
  425. package/lib/Planetscale/Util.d.ts.map +1 -1
  426. package/lib/Planetscale/Util.js +4 -1
  427. package/lib/Planetscale/Util.js.map +1 -1
  428. package/lib/Platform.d.ts +2 -3
  429. package/lib/Platform.d.ts.map +1 -1
  430. package/lib/Platform.js +52 -3
  431. package/lib/Platform.js.map +1 -1
  432. package/lib/Provider.d.ts +35 -0
  433. package/lib/Provider.d.ts.map +1 -1
  434. package/lib/Provider.js.map +1 -1
  435. package/lib/State/HttpStateApi.d.ts +8 -8
  436. package/lib/State/HttpStateStore.js +5 -2
  437. package/lib/State/HttpStateStore.js.map +1 -1
  438. package/lib/Sync.d.ts.map +1 -1
  439. package/lib/Sync.js +3 -0
  440. package/lib/Sync.js.map +1 -1
  441. package/lib/Test/Http.d.ts.map +1 -1
  442. package/lib/Test/Http.js +8 -2
  443. package/lib/Test/Http.js.map +1 -1
  444. package/lib/Util/data.d.ts +6 -1
  445. package/lib/Util/data.d.ts.map +1 -1
  446. package/lib/Util/data.js.map +1 -1
  447. package/lib/Util/poll.js +1 -1
  448. package/lib/Util/poll.js.map +1 -1
  449. package/package.json +20 -20
  450. package/src/AWS/ACM/Certificate.ts +16 -12
  451. package/src/AWS/ApiGateway/common.ts +11 -8
  452. package/src/AWS/AuthProvider.ts +0 -3
  453. package/src/AWS/AutoScaling/AutoScalingGroup.ts +8 -6
  454. package/src/AWS/Bootstrap.ts +5 -6
  455. package/src/AWS/CloudFront/Distribution.ts +20 -16
  456. package/src/AWS/CloudFront/Function.ts +10 -6
  457. package/src/AWS/CloudFront/Invalidation.ts +4 -3
  458. package/src/AWS/CloudFront/KvEntries.ts +4 -3
  459. package/src/AWS/CloudFront/KvRoutesUpdate.ts +8 -6
  460. package/src/AWS/CloudFront/VpcOrigin.ts +12 -9
  461. package/src/AWS/CloudFront/common.ts +10 -6
  462. package/src/AWS/CloudWatch/AnomalyDetector.ts +4 -3
  463. package/src/AWS/CloudWatch/common.ts +1 -3
  464. package/src/AWS/DynamoDB/Table.ts +57 -47
  465. package/src/AWS/EC2/EIP.ts +6 -4
  466. package/src/AWS/EC2/EgressOnlyInternetGateway.ts +6 -4
  467. package/src/AWS/EC2/Instance.ts +12 -9
  468. package/src/AWS/EC2/InternetGateway.ts +18 -12
  469. package/src/AWS/EC2/NatGateway.ts +6 -10
  470. package/src/AWS/EC2/NetworkAcl.ts +6 -4
  471. package/src/AWS/EC2/NetworkAclEntry.ts +4 -3
  472. package/src/AWS/EC2/RouteTable.ts +12 -9
  473. package/src/AWS/EC2/RouteTableAssociation.ts +3 -5
  474. package/src/AWS/EC2/SecurityGroup.ts +10 -7
  475. package/src/AWS/EC2/Subnet.ts +15 -15
  476. package/src/AWS/EC2/Vpc.ts +12 -12
  477. package/src/AWS/EC2/VpcEndpoint.ts +6 -8
  478. package/src/AWS/ECS/Service.ts +4 -3
  479. package/src/AWS/EKS/Addon.ts +8 -6
  480. package/src/AWS/EKS/Cluster.ts +4 -3
  481. package/src/AWS/ELBv2/TargetGroup.ts +4 -3
  482. package/src/AWS/ELBv2/TrustStore.ts +4 -3
  483. package/src/AWS/IAM/SAMLProvider.ts +4 -4
  484. package/src/AWS/IdentityCenter/AccountAssignment.ts +8 -6
  485. package/src/AWS/IdentityCenter/common.ts +1 -3
  486. package/src/AWS/KMS/Alias.ts +4 -3
  487. package/src/AWS/KMS/Key.ts +4 -3
  488. package/src/AWS/Kinesis/Stream.ts +2 -6
  489. package/src/AWS/Kinesis/StreamConsumer.ts +7 -12
  490. package/src/AWS/Lambda/Alias.ts +4 -3
  491. package/src/AWS/Lambda/EventInvokeConfig.ts +2 -6
  492. package/src/AWS/Lambda/EventSourceMapping.ts +10 -8
  493. package/src/AWS/Lambda/Function.ts +111 -31
  494. package/src/AWS/Lambda/MicrovmProvider.ts +18 -16
  495. package/src/AWS/Lambda/NetworkConnector.ts +19 -15
  496. package/src/AWS/Lambda/RuntimeExtension.ts +46 -0
  497. package/src/AWS/Organizations/Account.ts +5 -6
  498. package/src/AWS/Organizations/common.ts +1 -3
  499. package/src/AWS/Providers.ts +22 -20
  500. package/src/AWS/RDS/DBCluster.ts +8 -6
  501. package/src/AWS/RDS/DBInstance.ts +8 -6
  502. package/src/AWS/RDS/DBProxy.ts +4 -3
  503. package/src/AWS/RDS/DBProxyEndpoint.ts +4 -3
  504. package/src/AWS/Route53/HealthCheck.ts +8 -6
  505. package/src/AWS/Route53/HostedZone.ts +8 -6
  506. package/src/AWS/Route53/Record.ts +4 -3
  507. package/src/AWS/S3/Bucket.ts +5 -4
  508. package/src/AWS/SQS/Queue.ts +26 -20
  509. package/src/AWS/StateStore/State.ts +5 -4
  510. package/src/AWS/Website/AssetDeployment.ts +10 -6
  511. package/src/Apply.ts +8 -0
  512. package/src/Auth/AuthProvider.ts +11 -0
  513. package/src/Axiom/AuthProvider.ts +0 -3
  514. package/src/Bundle/Vite.ts +16 -15
  515. package/src/Cli/commands/_shared.ts +119 -5
  516. package/src/Cli/commands/login.ts +9 -40
  517. package/src/Cli/commands/logs.ts +1 -0
  518. package/src/Cli/commands/nuke.ts +16 -44
  519. package/src/Cli/commands/profile.ts +89 -27
  520. package/src/Cli/commands/tail.ts +1 -0
  521. package/src/Cloudflare/AI/GatewayDynamicRouting.ts +38 -6
  522. package/src/Cloudflare/AI/SearchInstance.ts +4 -3
  523. package/src/Cloudflare/Access/Application.ts +7 -4
  524. package/src/Cloudflare/Alerting/Silence.ts +4 -3
  525. package/src/Cloudflare/Alerting/Webhook.ts +8 -6
  526. package/src/Cloudflare/Auth/AuthProvider.ts +54 -38
  527. package/src/Cloudflare/Auth/OAuthClient.ts +6 -7
  528. package/src/Cloudflare/Cache/RegionalTieredCache.ts +7 -4
  529. package/src/Cloudflare/Containers/ContainerApplication.ts +22 -2
  530. package/src/Cloudflare/Containers/ContainerBundle.ts +99 -33
  531. package/src/Cloudflare/Containers/ContainerProvider.ts +73 -19
  532. package/src/Cloudflare/Containers/LocalContainerProvider.ts +78 -72
  533. package/src/Cloudflare/Diagnostics/EndpointHealthcheck.ts +4 -3
  534. package/src/Cloudflare/Images/Variant.ts +4 -3
  535. package/src/Cloudflare/LoadBalancer/Monitor.ts +4 -3
  536. package/src/Cloudflare/LoadBalancer/MonitorGroup.ts +4 -3
  537. package/src/Cloudflare/LoadBalancer/Pool.ts +4 -3
  538. package/src/Cloudflare/LocalRuntime.ts +17 -0
  539. package/src/Cloudflare/MagicNetworkMonitoring/Rule.ts +4 -3
  540. package/src/Cloudflare/Pipelines/Pipeline.ts +8 -6
  541. package/src/Cloudflare/Pipelines/Sink.ts +8 -6
  542. package/src/Cloudflare/Pipelines/Stream.ts +4 -3
  543. package/src/Cloudflare/Providers.ts +21 -19
  544. package/src/Cloudflare/Queues/Consumer.ts +45 -9
  545. package/src/Cloudflare/Queues/Queue.ts +4 -3
  546. package/src/Cloudflare/R2/Bucket.ts +12 -9
  547. package/src/Cloudflare/R2/BucketEventNotification.ts +4 -3
  548. package/src/Cloudflare/R2/DataCatalog.ts +4 -3
  549. package/src/Cloudflare/Rum/Rule.ts +4 -3
  550. package/src/Cloudflare/Snippets/Snippet.ts +4 -3
  551. package/src/Cloudflare/StateStore/CredentialsFile.ts +48 -0
  552. package/src/Cloudflare/StateStore/State.ts +61 -25
  553. package/src/Cloudflare/Tags/ZoneResourceTags.ts +4 -3
  554. package/src/Cloudflare/UrlNormalization/UrlNormalization.ts +7 -4
  555. package/src/Cloudflare/WaitingRoom/Settings.ts +7 -4
  556. package/src/Cloudflare/Website/Vite.ts +20 -0
  557. package/src/Cloudflare/Workers/Compatibility.ts +50 -7
  558. package/src/Cloudflare/Workers/CronEventSource.ts +3 -2
  559. package/src/Cloudflare/Workers/DurableObjectBridge.ts +38 -33
  560. package/src/Cloudflare/Workers/HttpServer.ts +1 -4
  561. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +132 -26
  562. package/src/Cloudflare/Workers/ObservabilityDestination.ts +4 -3
  563. package/src/Cloudflare/Workers/Worker.ts +27 -5
  564. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +27 -16
  565. package/src/Cloudflare/Workers/WorkerBridge.ts +227 -106
  566. package/src/Cloudflare/Workers/WorkerProvider.ts +26 -19
  567. package/src/Cloudflare/Workers/cloudflare_workers.ts +20 -12
  568. package/src/Cloudflare/Workflows/Workflow.ts +54 -20
  569. package/src/Cloudflare/Workflows/WorkflowBridge.ts +19 -23
  570. package/src/Cloudflare/Workflows/WorkflowName.ts +41 -0
  571. package/src/Cloudflare/Zone/Hold.ts +7 -4
  572. package/src/Command/Dev.ts +42 -10
  573. package/src/Docker/Container.ts +4 -1
  574. package/src/Drizzle/Postgres.ts +51 -23
  575. package/src/GitHub/AuthProvider.ts +0 -3
  576. package/src/GitHub/Env.ts +57 -0
  577. package/src/GitHub/index.ts +1 -0
  578. package/src/Http.ts +11 -0
  579. package/src/Local/RpcProviderProxy.ts +1 -1
  580. package/src/Neon/AuthProvider.ts +0 -3
  581. package/src/Neon/Project.ts +2 -2
  582. package/src/Plan.ts +28 -11
  583. package/src/Planetscale/AuthProvider.ts +267 -27
  584. package/src/Planetscale/Branch.ts +4 -3
  585. package/src/Planetscale/Credentials.ts +18 -6
  586. package/src/Planetscale/MySQL/MySQLMigrations.ts +4 -3
  587. package/src/Planetscale/OAuthClient.ts +307 -0
  588. package/src/Planetscale/Postgres/PostgresClusterSize.ts +4 -3
  589. package/src/Planetscale/Postgres/PostgresMigrations.ts +4 -3
  590. package/src/Planetscale/Util.ts +4 -3
  591. package/src/Platform.ts +74 -7
  592. package/src/Provider.ts +35 -0
  593. package/src/State/HttpStateStore.ts +5 -5
  594. package/src/Sync.ts +3 -0
  595. package/src/Test/Http.ts +8 -6
  596. package/src/Util/data.ts +14 -5
  597. package/src/Util/poll.ts +1 -1
  598. package/lib/ExecutionContext.d.ts +0 -18
  599. package/lib/ExecutionContext.d.ts.map +0 -1
  600. package/lib/ExecutionContext.js +0 -10
  601. package/lib/ExecutionContext.js.map +0 -1
  602. package/src/ExecutionContext.ts +0 -18
@@ -274,9 +274,10 @@ export const RuleProvider = () =>
274
274
  // visible. Ride out the propagation window with a bounded retry.
275
275
  Effect.retry({
276
276
  while: (e) => e._tag === "RulesetNotFound",
277
- schedule: Schedule.exponential("500 millis").pipe(
278
- Schedule.both(Schedule.recurs(8)),
279
- ),
277
+ schedule: Schedule.max([
278
+ Schedule.exponential("500 millis"),
279
+ Schedule.recurs(8),
280
+ ]),
280
281
  }),
281
282
  );
282
283
  const fresh = yield* listRules(accountId, rulesetId);
@@ -256,9 +256,10 @@ export const SnippetProvider = () =>
256
256
  .pipe(
257
257
  Effect.retry({
258
258
  while: (e) => e._tag === "SnippetInUse",
259
- schedule: Schedule.exponential("1 second").pipe(
260
- Schedule.both(Schedule.recurs(8)),
261
- ),
259
+ schedule: Schedule.max([
260
+ Schedule.exponential("1 second"),
261
+ Schedule.recurs(8),
262
+ ]),
262
263
  }),
263
264
  Effect.catchTag("SnippetNotFound", () => Effect.void),
264
265
  );
@@ -0,0 +1,48 @@
1
+ import type { HttpStateStoreCredentials } from "../../State/HttpStateStore.ts";
2
+
3
+ /**
4
+ * Filename (under `~/.alchemy/credentials/{profile}/`) used to cache the
5
+ * Cloudflare-deployed HTTP state store's endpoint + bearer token.
6
+ *
7
+ * Kept in this leaf module (rather than `StateStore/State.ts`) so the
8
+ * Cloudflare auth provider can invalidate the cache on
9
+ * `login --configure` / `logout` without importing the heavy state-store
10
+ * module and creating an import cycle
11
+ * (`StateStore/State.ts` -> `Providers.ts` -> `Auth/AuthProvider.ts`).
12
+ */
13
+ export const CREDENTIALS_FILE = "cloudflare-state-store";
14
+
15
+ /**
16
+ * On-disk shape of the cached Cloudflare state-store credentials.
17
+ *
18
+ * Extends the generic {@link HttpStateStoreCredentials} (`{ url, authToken }`)
19
+ * with the `accountId` the credentials were minted against. The `url` already
20
+ * encodes the account (via the `*.workers.dev` subdomain), so a cache written
21
+ * while logged into account A keeps pointing at account A's state store even
22
+ * after the user re-authenticates against account B. Persisting `accountId`
23
+ * lets `state()` detect that mismatch and re-derive.
24
+ *
25
+ * `accountId` is optional so legacy files written before this field existed
26
+ * still parse — they are treated as stale (see
27
+ * {@link isStateStoreCredentialsStale}) and re-derived on next use.
28
+ */
29
+ export interface StoredStateStoreCredentials extends HttpStateStoreCredentials {
30
+ /** Cloudflare account ID the `url`/`authToken` were minted against. */
31
+ accountId?: string;
32
+ }
33
+
34
+ /**
35
+ * `true` when cached state-store credentials must not be trusted for the
36
+ * current account:
37
+ *
38
+ * - the file predates the `accountId` field (legacy cache — exactly the
39
+ * artifact that caused deploys to silently target the wrong account), or
40
+ * - it was minted against a different account than the one now in use.
41
+ *
42
+ * A stale cache is discarded and re-derived from the current account.
43
+ */
44
+ export const isStateStoreCredentialsStale = (
45
+ credentials: StoredStateStoreCredentials,
46
+ currentAccountId: string,
47
+ ): boolean =>
48
+ credentials.accountId == null || credentials.accountId !== currentAccountId;
@@ -39,6 +39,11 @@ import * as Access from "../Access.ts";
39
39
  import * as CloudflareEnvironment from "../CloudflareEnvironment.ts";
40
40
  import { EdgeSessionError, createEdgeSession } from "../EdgeSession.ts";
41
41
  import Api, { STATE_STORE_SCRIPT_NAME, STATE_STORE_VERSION } from "./Api.ts";
42
+ import {
43
+ CREDENTIALS_FILE,
44
+ type StoredStateStoreCredentials,
45
+ isStateStoreCredentialsStale,
46
+ } from "./CredentialsFile.ts";
42
47
  import {
43
48
  AuthToken,
44
49
  AuthTokenSecretName,
@@ -48,9 +53,6 @@ import {
48
53
 
49
54
  const CI = Config.boolean("CI").pipe(Config.withDefault(false));
50
55
 
51
- /** Filename used for stored credentials under the profile directory. */
52
- const CREDENTIALS_FILE = "cloudflare-state-store";
53
-
54
56
  export const state = () =>
55
57
  Layer.effect(
56
58
  State,
@@ -173,15 +175,32 @@ export const state = () =>
173
175
  return yield* makeCloudflareStateStore(credentials);
174
176
  });
175
177
 
176
- const credentials = yield* credStore.read<HttpStateStoreCredentials>(
178
+ const { accountId } =
179
+ yield* yield* CloudflareEnvironment.CloudflareEnvironment;
180
+
181
+ const credentials = yield* credStore.read<StoredStateStoreCredentials>(
177
182
  profileName,
178
183
  CREDENTIALS_FILE,
179
184
  );
180
185
  if (credentials) {
181
- return yield* ensureLatest(credentials);
186
+ // The cached `url`/`authToken` are minted per-account (the `url`
187
+ // encodes the account via its workers.dev subdomain). If the
188
+ // active account changed since they were written — or the file
189
+ // predates the `accountId` field — trusting the cache would
190
+ // silently read/write state in the wrong account, so discard it
191
+ // and fall through to re-derivation from the current account.
192
+ if (isStateStoreCredentialsStale(credentials, accountId)) {
193
+ yield* Clank.info(
194
+ `Cloudflare State Store credentials were minted for a different ` +
195
+ `Cloudflare account; re-deriving for the current account.`,
196
+ );
197
+ yield* credStore
198
+ .delete(profileName, CREDENTIALS_FILE)
199
+ .pipe(Effect.ignore);
200
+ } else {
201
+ return yield* ensureLatest(credentials);
202
+ }
182
203
  }
183
- const { accountId } =
184
- yield* yield* CloudflareEnvironment.CloudflareEnvironment;
185
204
  if (yield* isStateStoreServing(accountId)) {
186
205
  return yield* ensureLatest(
187
206
  yield* loginWithCloudflare(profileName, false),
@@ -283,7 +302,7 @@ export const bootstrap = (options: BootstrapOptions = {}) =>
283
302
  if (!isCI) {
284
303
  // we don't write credentials in CI because the file system is ephemeral
285
304
  const store = yield* CredentialsStore;
286
- yield* store.write<HttpStateStoreCredentials>(
305
+ yield* store.write<StoredStateStoreCredentials>(
287
306
  profileName,
288
307
  CREDENTIALS_FILE,
289
308
  credentials,
@@ -667,9 +686,10 @@ const hoistBootstrapStack = Effect.fn(function* ({
667
686
  // Secrets Store bindings) can take a while to serve
668
687
  // consistently; anything persisting past that is a real
669
688
  // failure to surface, not to spin on.
670
- schedule: Schedule.fixed(500).pipe(
671
- Schedule.both(Schedule.recurs(60)),
672
- ),
689
+ schedule: Schedule.max([
690
+ Schedule.fixed(500),
691
+ Schedule.recurs(60),
692
+ ]),
673
693
  }),
674
694
  );
675
695
  }
@@ -703,11 +723,17 @@ export const loginWithCloudflare = (profileName: string, force: boolean) =>
703
723
 
704
724
  if (!force) {
705
725
  // try and read from the cached credentials first if not forcing (force will always refresh)
706
- const credentials = yield* credStore.read<HttpStateStoreCredentials>(
726
+ const credentials = yield* credStore.read<StoredStateStoreCredentials>(
707
727
  profileName,
708
728
  CREDENTIALS_FILE,
709
729
  );
710
- if (credentials) {
730
+ // Ignore a cache minted for a different account (or a legacy file with
731
+ // no `accountId`) — reusing it would hand back the wrong account's
732
+ // state-store URL. Fall through to re-derive against `accountId`.
733
+ if (
734
+ credentials &&
735
+ !isStateStoreCredentialsStale(credentials, accountId)
736
+ ) {
711
737
  return credentials;
712
738
  }
713
739
  }
@@ -736,10 +762,13 @@ export const loginWithCloudflare = (profileName: string, force: boolean) =>
736
762
  isTransientEdgeSessionError(error),
737
763
  // Cap the exponential delay at 2s so 15 retries stay within
738
764
  // ~30s instead of doubling unboundedly.
739
- schedule: Schedule.exponential(200).pipe(
740
- Schedule.either(Schedule.spaced("2 seconds")),
741
- Schedule.both(Schedule.recurs(15)),
742
- ),
765
+ schedule: Schedule.max([
766
+ Schedule.min([
767
+ Schedule.exponential(200),
768
+ Schedule.spaced("2 seconds"),
769
+ ]),
770
+ Schedule.recurs(15),
771
+ ]),
743
772
  }),
744
773
  );
745
774
 
@@ -751,9 +780,10 @@ export const loginWithCloudflare = (profileName: string, force: boolean) =>
751
780
  // 4. Persist credentials. The profile entry is managed by
752
781
  // `loadOrConfigure` when this is invoked through `configure`.
753
782
  yield* credStore
754
- .write<HttpStateStoreCredentials>(profileName, CREDENTIALS_FILE, {
783
+ .write<StoredStateStoreCredentials>(profileName, CREDENTIALS_FILE, {
755
784
  url,
756
785
  authToken: authToken.trim(),
786
+ accountId,
757
787
  })
758
788
  .pipe(
759
789
  Effect.mapError(
@@ -774,6 +804,7 @@ export const loginWithCloudflare = (profileName: string, force: boolean) =>
774
804
  return {
775
805
  url,
776
806
  authToken: authToken.trim(),
807
+ accountId,
777
808
  };
778
809
  }).pipe(
779
810
  Effect.catchTag("EdgeSessionError", (e) =>
@@ -871,9 +902,10 @@ const waitForStateStoreVersion = (url: string) =>
871
902
  // Edge propagation is usually sub-second but production traces
872
903
  // show redeploys occasionally serving the old version for well
873
904
  // over 10s. Poll for ~30s before failing loudly.
874
- schedule: Schedule.spaced("500 millis").pipe(
875
- Schedule.both(Schedule.recurs(60)),
876
- ),
905
+ schedule: Schedule.max([
906
+ Schedule.spaced("500 millis"),
907
+ Schedule.recurs(60),
908
+ ]),
877
909
  }),
878
910
  Effect.withSpan("state_store.wait_for_version", {
879
911
  attributes: {
@@ -911,9 +943,10 @@ const checkStateStoreVersion = (url: string) =>
911
943
  : Effect.fail(e),
912
944
  ),
913
945
  Effect.retry({
914
- schedule: Schedule.spaced("250 millis").pipe(
915
- Schedule.both(Schedule.recurs(40)),
916
- ),
946
+ schedule: Schedule.max([
947
+ Schedule.spaced("250 millis"),
948
+ Schedule.recurs(40),
949
+ ]),
917
950
  }),
918
951
  Effect.catch(() => Effect.succeed(undefined)),
919
952
  );
@@ -1022,12 +1055,15 @@ const writeCredentials = (url: string, authToken: string) =>
1022
1055
  Effect.gen(function* () {
1023
1056
  const profileName = yield* ALCHEMY_PROFILE;
1024
1057
  const credStore = yield* CredentialsStore;
1025
- yield* credStore.write<HttpStateStoreCredentials>(
1058
+ const { accountId } =
1059
+ yield* yield* CloudflareEnvironment.CloudflareEnvironment;
1060
+ yield* credStore.write<StoredStateStoreCredentials>(
1026
1061
  profileName,
1027
1062
  CREDENTIALS_FILE,
1028
1063
  {
1029
1064
  url,
1030
1065
  authToken,
1066
+ accountId,
1031
1067
  },
1032
1068
  );
1033
1069
  });
@@ -21,9 +21,10 @@ type TypeId = typeof TypeId;
21
21
  // calls on that typed tag so reconcile waits out the propagation window.
22
22
  const targetVisibleRetry = {
23
23
  while: (e: { _tag: string }) => e._tag === "ZoneTagResourceNotFound",
24
- schedule: Schedule.exponential("500 millis").pipe(
25
- Schedule.both(Schedule.recurs(10)),
26
- ),
24
+ schedule: Schedule.max([
25
+ Schedule.exponential("500 millis"),
26
+ Schedule.recurs(10),
27
+ ]),
27
28
  } as const;
28
29
 
29
30
  /**
@@ -155,10 +155,13 @@ export const UrlNormalizationProvider = () =>
155
155
  // zone never falls out of the enumeration on a blip.
156
156
  Effect.retry({
157
157
  while: (e) => e._tag === "Forbidden",
158
- schedule: Schedule.exponential("500 millis").pipe(
159
- Schedule.either(Schedule.spaced("5 seconds")),
160
- Schedule.both(Schedule.recurs(8)),
161
- ),
158
+ schedule: Schedule.max([
159
+ Schedule.min([
160
+ Schedule.exponential("500 millis"),
161
+ Schedule.spaced("5 seconds"),
162
+ ]),
163
+ Schedule.recurs(8),
164
+ ]),
162
165
  }),
163
166
  Effect.map((observed) => toAttributes(zoneId, observed)),
164
167
  // Plan-gated or partial zones reject the route; skip them.
@@ -116,10 +116,13 @@ export const SettingsProvider = () =>
116
116
  // test timeout when a zone is persistently 403.
117
117
  Effect.retry({
118
118
  while: (e) => e._tag === "Forbidden",
119
- schedule: Schedule.exponential("500 millis").pipe(
120
- Schedule.either(Schedule.spaced("5 seconds")),
121
- Schedule.both(Schedule.recurs(8)),
122
- ),
119
+ schedule: Schedule.max([
120
+ Schedule.min([
121
+ Schedule.exponential("500 millis"),
122
+ Schedule.spaced("5 seconds"),
123
+ ]),
124
+ Schedule.recurs(8),
125
+ ]),
123
126
  }),
124
127
  Effect.map((observed) =>
125
128
  toAttributes(
@@ -90,6 +90,25 @@ export interface ViteProps<Bindings extends WorkerBindingProps = {}>
90
90
  * });
91
91
  * ```
92
92
  *
93
+ * @section Custom Worker Entry
94
+ * By default the deployed Worker entry is the server bundle the
95
+ * framework produces. When the Worker must export more than the
96
+ * framework's fetch handler — Durable Object classes, additional
97
+ * handlers — point `main` at your own module that wraps the framework
98
+ * handler and re-exports the extras. `main` takes precedence over any
99
+ * entry configured in the Vite config.
100
+ *
101
+ * @example Custom entry hosting Durable Objects
102
+ * ```typescript
103
+ * const app = yield* Cloudflare.Website.Vite("App", {
104
+ * main: "worker/index.ts",
105
+ * viteEnvironments: {
106
+ * entry: "rsc",
107
+ * children: ["ssr"],
108
+ * },
109
+ * });
110
+ * ```
111
+ *
93
112
  * @section Single-Page Applications
94
113
  * For SPAs (React, Vue, etc.), configure asset handling so all
95
114
  * routes fall back to `index.html`.
@@ -178,6 +197,7 @@ export const Vite: {
178
197
  ...props,
179
198
  main: undefined!,
180
199
  vite: {
200
+ main: props?.main,
181
201
  rootDir: props?.rootDir,
182
202
  memo: props?.memo,
183
203
  viteEnvironments: props?.viteEnvironments,
@@ -3,10 +3,53 @@ import type { WorkerProps } from "./Worker.ts";
3
3
  // TODO: figure out why the later one from workerd breaks
4
4
  const DEFAULT_COMPATIBILITY_DATE = "2026-03-17";
5
5
 
6
- export const getCompatibility = (props: WorkerProps) => ({
7
- date: props.compatibility?.date ?? DEFAULT_COMPATIBILITY_DATE,
8
- flags: [
9
- ...(props.compatibility?.flags ?? []),
10
- ...(props.isExternal ? [] : ["nodejs_compat"]),
11
- ].filter((value, index, self) => self.indexOf(value) === index),
12
- });
6
+ /**
7
+ * The Effect worker bridge builds its layer stack once per isolate and shares
8
+ * the in-flight build promise across concurrent events. Awaiting a promise
9
+ * created under another event's request context is only sound with workerd's
10
+ * corrected cross-request promise semantics (default-on since compatibility
11
+ * date 2024-10-14): continuations are scheduled back into the promise's
12
+ * origin context instead of running in whichever request happens to resolve
13
+ * them. A user pinning an older compatibility date must not silently revert
14
+ * the bridge to the broken semantics, so the flag is forced for
15
+ * alchemy-bundled workers — and explicitly disabling it is a deploy-time
16
+ * error.
17
+ */
18
+ const CROSS_REQUEST_PROMISE_RESOLUTION =
19
+ "handle_cross_request_promise_resolution";
20
+
21
+ // The date the flag became default-on. Cloudflare rejects a script that
22
+ // specifies a flag its compatibility date already defaults on ("does not
23
+ // need to be specified anymore"), so it is only appended for older dates.
24
+ const CROSS_REQUEST_PROMISE_RESOLUTION_DEFAULT_ON = "2024-10-14";
25
+
26
+ export const getCompatibility = (props: WorkerProps) => {
27
+ const userFlags = props.compatibility?.flags ?? [];
28
+ if (
29
+ !props.isExternal &&
30
+ userFlags.includes(`no_${CROSS_REQUEST_PROMISE_RESOLUTION}`)
31
+ ) {
32
+ throw new Error(
33
+ `The "no_${CROSS_REQUEST_PROMISE_RESOLUTION}" compatibility flag is not supported: ` +
34
+ "the alchemy Worker runtime shares its layer build across concurrent " +
35
+ "requests, which requires workerd's corrected cross-request promise " +
36
+ "semantics. Remove the flag from `compatibility.flags`.",
37
+ );
38
+ }
39
+ const date = props.compatibility?.date ?? DEFAULT_COMPATIBILITY_DATE;
40
+ return {
41
+ date,
42
+ flags: [
43
+ ...userFlags,
44
+ ...(props.isExternal
45
+ ? []
46
+ : [
47
+ "nodejs_compat",
48
+ // ISO dates compare lexically.
49
+ ...(date < CROSS_REQUEST_PROMISE_RESOLUTION_DEFAULT_ON
50
+ ? [CROSS_REQUEST_PROMISE_RESOLUTION]
51
+ : []),
52
+ ]),
53
+ ].filter((value, index, self) => self.indexOf(value) === index),
54
+ };
55
+ };
@@ -203,14 +203,15 @@ export const cron = <Req = never>(
203
203
  process: (
204
204
  controller: cf.ScheduledController,
205
205
  ) => Effect.Effect<void, unknown, Req>,
206
- ) => CronEventSource.use((source) => source(expression, process));
206
+ ): Effect.Effect<void, never, CronEventSource | Exclude<Req, RuntimeContext>> =>
207
+ CronEventSource.use((source) => source(expression, process));
207
208
 
208
209
  export type CronEventSourceService = <Req = never>(
209
210
  expression: string,
210
211
  process: (
211
212
  controller: cf.ScheduledController,
212
213
  ) => Effect.Effect<void, unknown, Req>,
213
- ) => Effect.Effect<void, never, never>;
214
+ ) => Effect.Effect<void, never, Exclude<Req, RuntimeContext>>;
214
215
 
215
216
  export class CronEventSource extends Context.Service<
216
217
  CronEventSource,
@@ -42,43 +42,44 @@ export const makeDurableObjectBridge =
42
42
  };
43
43
  },
44
44
  ) =>
45
- (className: string) =>
46
- class DurableObjectBridge extends DurableObject {
45
+ (className: string) => {
46
+ // One isolate-lifetime layer build shared by every activation of this DO
47
+ // class: `build` memoizes the built context, so re-activations (including
48
+ // hibernatable WebSocket wakes, which re-run the constructor) reuse it
49
+ // instead of rebuilding the layer stack.
50
+ const { build } = getWorkerExport<DurableObjectExport>({
51
+ entrypoint,
52
+ stack,
53
+ exportName: className,
54
+ });
55
+
56
+ return class DurableObjectBridge extends DurableObject {
47
57
  #state;
48
- #globalContext;
49
- #exported;
50
58
  #instance;
51
59
  constructor(state: cf.DurableObjectState, env: any) {
52
60
  super(state as any, env);
53
61
  this.#state = state;
54
62
 
55
- const { globalContext, exported } =
56
- getWorkerExport<DurableObjectExport>({
57
- entrypoint,
58
- stack,
59
- exportName: className,
60
- });
61
-
62
- this.#globalContext = globalContext;
63
- this.#exported = exported;
64
-
65
63
  this.#instance = state.blockConcurrencyWhile(() =>
66
- this.#exported.pipe(
67
- Effect.flatMap(({ constructor, services }) => {
68
- const context = Layer.succeed(
64
+ build((promise) => void (state as any).waitUntil?.(promise)).then(
65
+ ({ context, export: exported }) => {
66
+ const { constructor, services } = exported;
67
+ const doContext = Layer.succeed(
69
68
  DurableObjectState,
70
69
  fromDurableObjectState(this.#state),
71
- ).pipe(Layer.provideMerge(Layer.succeedContext(services)));
70
+ ).pipe(
71
+ Layer.provideMerge(Layer.succeedContext(services)),
72
+ Layer.provideMerge(Layer.succeedContext(context)),
73
+ );
72
74
  return constructor.pipe(
73
- Effect.provide(context),
75
+ Effect.provide(doContext),
74
76
  Effect.flatMap((instance) =>
75
- instance.pipe(Effect.provide(context)),
77
+ instance.pipe(Effect.provide(doContext)),
76
78
  ),
77
- Effect.map((instance) => ({ instance, services })),
79
+ Effect.map((instance) => ({ instance, services, context })),
80
+ Effect.runPromise,
78
81
  );
79
- }),
80
- Effect.provide(this.#globalContext),
81
- Effect.runPromise,
82
+ },
82
83
  ),
83
84
  );
84
85
 
@@ -116,11 +117,14 @@ export const makeDurableObjectBridge =
116
117
 
117
118
  async #execute(
118
119
  fn: (instance: DurableObjectShape) => Effect.Effect<any, any, any>,
119
- onExit?: (exit: Exit.Exit<any, any>) => Promise<any>,
120
+ onExit?: (
121
+ exit: Exit.Exit<any, any>,
122
+ scope: Scope.Closeable,
123
+ ) => Promise<any>,
120
124
  ) {
121
125
  const scope = Scope.makeUnsafe();
122
126
 
123
- const { instance, services } = await this.#instance;
127
+ const { instance, services, context } = await this.#instance;
124
128
 
125
129
  return fn(instance)
126
130
  .pipe(
@@ -131,17 +135,17 @@ export const makeDurableObjectBridge =
131
135
  ).pipe(
132
136
  Layer.provideMerge(Layer.succeed(Scope.Scope, scope)),
133
137
  Layer.provideMerge(Layer.succeedContext(services)),
134
- Layer.provideMerge(this.#globalContext),
138
+ Layer.provideMerge(Layer.succeedContext(context)),
135
139
  ),
136
140
  ),
137
141
  Effect.runPromiseExit,
138
142
  )
139
- .then(
140
- onExit ??
141
- ((exit) =>
142
- exit._tag === "Success"
143
- ? Promise.resolve(exit.value)
144
- : Promise.reject(Cause.squash(exit.cause))),
143
+ .then((exit) =>
144
+ onExit
145
+ ? onExit(exit, scope)
146
+ : exit._tag === "Success"
147
+ ? Promise.resolve(exit.value)
148
+ : Promise.reject(Cause.squash(exit.cause)),
145
149
  )
146
150
  .finally(() =>
147
151
  isScopeEjected(scope)
@@ -194,3 +198,4 @@ export const makeDurableObjectBridge =
194
198
  );
195
199
  }
196
200
  } as any;
201
+ };
@@ -3,7 +3,6 @@ import * as Deferred from "effect/Deferred";
3
3
  import * as Effect from "effect/Effect";
4
4
  import * as Layer from "effect/Layer";
5
5
  import * as Option from "effect/Option";
6
- import * as Scope from "effect/Scope";
7
6
  import * as EffectHttp from "effect/unstable/http/HttpEffect";
8
7
  import * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";
9
8
  import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
@@ -74,6 +73,4 @@ const toHandledWebResponse = <Req>(
74
73
  return yield* Deferred.await(webResponse);
75
74
  });
76
75
 
77
- const scopeEjected = Symbol.for("effect/http/HttpEffect/scopeEjected");
78
-
79
- export const isScopeEjected = (scope: Scope.Scope) => scopeEjected in scope;
76
+ export { isScopeEjected } from "../../Http.ts";