alchemy 2.0.0-beta.60 → 2.0.0-beta.61

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 (607) hide show
  1. package/bin/cli.js +9 -1
  2. package/bin/exec.js +15 -5
  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 +9 -2
  6. package/lib/AWS/ACM/Certificate.js.map +1 -1
  7. package/lib/AWS/AutoScaling/AutoScalingGroup.d.ts.map +1 -1
  8. package/lib/AWS/AutoScaling/AutoScalingGroup.js +18 -11
  9. package/lib/AWS/AutoScaling/AutoScalingGroup.js.map +1 -1
  10. package/lib/AWS/AutoScaling/LaunchTemplate.js +6 -1
  11. package/lib/AWS/AutoScaling/LaunchTemplate.js.map +1 -1
  12. package/lib/AWS/AutoScaling/ScalingPolicy.d.ts.map +1 -1
  13. package/lib/AWS/AutoScaling/ScalingPolicy.js +28 -10
  14. package/lib/AWS/AutoScaling/ScalingPolicy.js.map +1 -1
  15. package/lib/AWS/CloudFront/PublicKey.d.ts.map +1 -1
  16. package/lib/AWS/CloudFront/PublicKey.js +5 -1
  17. package/lib/AWS/CloudFront/PublicKey.js.map +1 -1
  18. package/lib/AWS/DynamoDB/Table.js +1 -1
  19. package/lib/AWS/DynamoDB/Table.js.map +1 -1
  20. package/lib/AWS/ECS/Service.d.ts.map +1 -1
  21. package/lib/AWS/ECS/Service.js +29 -4
  22. package/lib/AWS/ECS/Service.js.map +1 -1
  23. package/lib/AWS/IAM/OpenIDConnectProvider.d.ts.map +1 -1
  24. package/lib/AWS/IAM/OpenIDConnectProvider.js +9 -1
  25. package/lib/AWS/IAM/OpenIDConnectProvider.js.map +1 -1
  26. package/lib/AWS/Lambda/Alias.d.ts +26 -0
  27. package/lib/AWS/Lambda/Alias.d.ts.map +1 -1
  28. package/lib/AWS/Lambda/Alias.js +31 -0
  29. package/lib/AWS/Lambda/Alias.js.map +1 -1
  30. package/lib/AWS/Lambda/EventInvokeConfig.d.ts +36 -0
  31. package/lib/AWS/Lambda/EventInvokeConfig.d.ts.map +1 -0
  32. package/lib/AWS/Lambda/EventInvokeConfig.js +76 -0
  33. package/lib/AWS/Lambda/EventInvokeConfig.js.map +1 -0
  34. package/lib/AWS/Lambda/Function.d.ts +27 -2
  35. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  36. package/lib/AWS/Lambda/Function.js +23 -2
  37. package/lib/AWS/Lambda/Function.js.map +1 -1
  38. package/lib/AWS/Lambda/index.d.ts +1 -0
  39. package/lib/AWS/Lambda/index.d.ts.map +1 -1
  40. package/lib/AWS/Lambda/index.js +1 -0
  41. package/lib/AWS/Lambda/index.js.map +1 -1
  42. package/lib/AWS/Organizations/DelegatedAdministrator.d.ts.map +1 -1
  43. package/lib/AWS/Organizations/DelegatedAdministrator.js +10 -2
  44. package/lib/AWS/Organizations/DelegatedAdministrator.js.map +1 -1
  45. package/lib/AWS/Organizations/PolicyAttachment.d.ts.map +1 -1
  46. package/lib/AWS/Organizations/PolicyAttachment.js +10 -4
  47. package/lib/AWS/Organizations/PolicyAttachment.js.map +1 -1
  48. package/lib/AWS/Organizations/RootPolicyType.d.ts.map +1 -1
  49. package/lib/AWS/Organizations/RootPolicyType.js +9 -4
  50. package/lib/AWS/Organizations/RootPolicyType.js.map +1 -1
  51. package/lib/AWS/Organizations/TrustedServiceAccess.d.ts.map +1 -1
  52. package/lib/AWS/Organizations/TrustedServiceAccess.js +8 -1
  53. package/lib/AWS/Organizations/TrustedServiceAccess.js.map +1 -1
  54. package/lib/AWS/Route53/HostedZone.d.ts.map +1 -1
  55. package/lib/AWS/Route53/HostedZone.js +20 -4
  56. package/lib/AWS/Route53/HostedZone.js.map +1 -1
  57. package/lib/AWS/Route53/Record.d.ts.map +1 -1
  58. package/lib/AWS/Route53/Record.js +32 -9
  59. package/lib/AWS/Route53/Record.js.map +1 -1
  60. package/lib/Apply.js +7 -1
  61. package/lib/Apply.js.map +1 -1
  62. package/lib/Auth/Lock.d.ts +17 -0
  63. package/lib/Auth/Lock.d.ts.map +1 -1
  64. package/lib/Auth/Lock.js +53 -18
  65. package/lib/Auth/Lock.js.map +1 -1
  66. package/lib/Bundle/PurePlugin.d.ts.map +1 -1
  67. package/lib/Bundle/PurePlugin.js +15 -2
  68. package/lib/Bundle/PurePlugin.js.map +1 -1
  69. package/lib/Cli/commands/sync.d.ts +22 -0
  70. package/lib/Cli/commands/sync.d.ts.map +1 -0
  71. package/lib/Cli/commands/sync.js +64 -0
  72. package/lib/Cli/commands/sync.js.map +1 -0
  73. package/lib/Cli/main.d.ts.map +1 -1
  74. package/lib/Cli/main.js +2 -0
  75. package/lib/Cli/main.js.map +1 -1
  76. package/lib/Cloudflare/AI/CustomTopics.d.ts.map +1 -1
  77. package/lib/Cloudflare/AI/CustomTopics.js +3 -1
  78. package/lib/Cloudflare/AI/CustomTopics.js.map +1 -1
  79. package/lib/Cloudflare/AI/Dataset.d.ts.map +1 -1
  80. package/lib/Cloudflare/AI/Dataset.js +3 -1
  81. package/lib/Cloudflare/AI/Dataset.js.map +1 -1
  82. package/lib/Cloudflare/AI/Evaluation.d.ts.map +1 -1
  83. package/lib/Cloudflare/AI/Evaluation.js +3 -1
  84. package/lib/Cloudflare/AI/Evaluation.js.map +1 -1
  85. package/lib/Cloudflare/AI/Gateway.d.ts.map +1 -1
  86. package/lib/Cloudflare/AI/Gateway.js +5 -6
  87. package/lib/Cloudflare/AI/Gateway.js.map +1 -1
  88. package/lib/Cloudflare/AI/GatewayDynamicRouting.d.ts.map +1 -1
  89. package/lib/Cloudflare/AI/GatewayDynamicRouting.js +3 -1
  90. package/lib/Cloudflare/AI/GatewayDynamicRouting.js.map +1 -1
  91. package/lib/Cloudflare/AI/GatewayProvider.d.ts +2 -1
  92. package/lib/Cloudflare/AI/GatewayProvider.d.ts.map +1 -1
  93. package/lib/Cloudflare/AI/GatewayProvider.js +5 -2
  94. package/lib/Cloudflare/AI/GatewayProvider.js.map +1 -1
  95. package/lib/Cloudflare/AI/ProviderKey.d.ts +135 -0
  96. package/lib/Cloudflare/AI/ProviderKey.d.ts.map +1 -0
  97. package/lib/Cloudflare/AI/ProviderKey.js +90 -0
  98. package/lib/Cloudflare/AI/ProviderKey.js.map +1 -0
  99. package/lib/Cloudflare/AI/SearchInstance.d.ts.map +1 -1
  100. package/lib/Cloudflare/AI/SearchInstance.js +5 -4
  101. package/lib/Cloudflare/AI/SearchInstance.js.map +1 -1
  102. package/lib/Cloudflare/AI/SearchNamespace.d.ts.map +1 -1
  103. package/lib/Cloudflare/AI/SearchNamespace.js +5 -4
  104. package/lib/Cloudflare/AI/SearchNamespace.js.map +1 -1
  105. package/lib/Cloudflare/AI/SearchToken.d.ts.map +1 -1
  106. package/lib/Cloudflare/AI/SearchToken.js +3 -1
  107. package/lib/Cloudflare/AI/SearchToken.js.map +1 -1
  108. package/lib/Cloudflare/AI/SecuritySettings.d.ts.map +1 -1
  109. package/lib/Cloudflare/AI/SecuritySettings.js +3 -1
  110. package/lib/Cloudflare/AI/SecuritySettings.js.map +1 -1
  111. package/lib/Cloudflare/AI/index.d.ts +1 -0
  112. package/lib/Cloudflare/AI/index.d.ts.map +1 -1
  113. package/lib/Cloudflare/AI/index.js +1 -0
  114. package/lib/Cloudflare/AI/index.js.map +1 -1
  115. package/lib/Cloudflare/Access/InfrastructureTarget.d.ts.map +1 -1
  116. package/lib/Cloudflare/Access/InfrastructureTarget.js +3 -1
  117. package/lib/Cloudflare/Access/InfrastructureTarget.js.map +1 -1
  118. package/lib/Cloudflare/Access/Organization.d.ts.map +1 -1
  119. package/lib/Cloudflare/Access/Organization.js +1 -1
  120. package/lib/Cloudflare/Access/Organization.js.map +1 -1
  121. package/lib/Cloudflare/Access/Policy.d.ts.map +1 -1
  122. package/lib/Cloudflare/Access/Policy.js +3 -1
  123. package/lib/Cloudflare/Access/Policy.js.map +1 -1
  124. package/lib/Cloudflare/Account/Account.d.ts.map +1 -1
  125. package/lib/Cloudflare/Account/Account.js +3 -1
  126. package/lib/Cloudflare/Account/Account.js.map +1 -1
  127. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
  128. package/lib/Cloudflare/ApiToken/AccountApiToken.js +1 -1
  129. package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
  130. package/lib/Cloudflare/ApiToken/UserApiToken.d.ts.map +1 -1
  131. package/lib/Cloudflare/ApiToken/UserApiToken.js +1 -1
  132. package/lib/Cloudflare/ApiToken/UserApiToken.js.map +1 -1
  133. package/lib/Cloudflare/Auth/AuthProvider.d.ts +3 -0
  134. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  135. package/lib/Cloudflare/Auth/AuthProvider.js +51 -14
  136. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  137. package/lib/Cloudflare/BotManagement/BotManagement.d.ts.map +1 -1
  138. package/lib/Cloudflare/BotManagement/BotManagement.js +3 -1
  139. package/lib/Cloudflare/BotManagement/BotManagement.js.map +1 -1
  140. package/lib/Cloudflare/Cache/Reserve.d.ts.map +1 -1
  141. package/lib/Cloudflare/Cache/Reserve.js +3 -1
  142. package/lib/Cloudflare/Cache/Reserve.js.map +1 -1
  143. package/lib/Cloudflare/ClientCertificate/ClientCertificate.d.ts.map +1 -1
  144. package/lib/Cloudflare/ClientCertificate/ClientCertificate.js +3 -1
  145. package/lib/Cloudflare/ClientCertificate/ClientCertificate.js.map +1 -1
  146. package/lib/Cloudflare/Containers/Container.d.ts +2 -2
  147. package/lib/Cloudflare/Containers/Container.js +2 -2
  148. package/lib/Cloudflare/ContentScanning/ContentScanning.d.ts.map +1 -1
  149. package/lib/Cloudflare/ContentScanning/ContentScanning.js +3 -1
  150. package/lib/Cloudflare/ContentScanning/ContentScanning.js.map +1 -1
  151. package/lib/Cloudflare/CustomCertificate/CustomCertificate.d.ts.map +1 -1
  152. package/lib/Cloudflare/CustomCertificate/CustomCertificate.js +3 -1
  153. package/lib/Cloudflare/CustomCertificate/CustomCertificate.js.map +1 -1
  154. package/lib/Cloudflare/CustomHostname/CustomHostname.d.ts.map +1 -1
  155. package/lib/Cloudflare/CustomHostname/CustomHostname.js +1 -1
  156. package/lib/Cloudflare/CustomHostname/CustomHostname.js.map +1 -1
  157. package/lib/Cloudflare/CustomHostname/FallbackOrigin.d.ts.map +1 -1
  158. package/lib/Cloudflare/CustomHostname/FallbackOrigin.js +1 -1
  159. package/lib/Cloudflare/CustomHostname/FallbackOrigin.js.map +1 -1
  160. package/lib/Cloudflare/CustomNameserver/CustomNameserver.d.ts.map +1 -1
  161. package/lib/Cloudflare/CustomNameserver/CustomNameserver.js +3 -1
  162. package/lib/Cloudflare/CustomNameserver/CustomNameserver.js.map +1 -1
  163. package/lib/Cloudflare/D1/Database.d.ts.map +1 -1
  164. package/lib/Cloudflare/D1/Database.js +2 -2
  165. package/lib/Cloudflare/D1/Database.js.map +1 -1
  166. package/lib/Cloudflare/DNS/AccountSettings.d.ts.map +1 -1
  167. package/lib/Cloudflare/DNS/AccountSettings.js +3 -1
  168. package/lib/Cloudflare/DNS/AccountSettings.js.map +1 -1
  169. package/lib/Cloudflare/DNS/Dnssec.d.ts.map +1 -1
  170. package/lib/Cloudflare/DNS/Dnssec.js +3 -1
  171. package/lib/Cloudflare/DNS/Dnssec.js.map +1 -1
  172. package/lib/Cloudflare/DNS/Firewall.d.ts.map +1 -1
  173. package/lib/Cloudflare/DNS/Firewall.js +3 -1
  174. package/lib/Cloudflare/DNS/Firewall.js.map +1 -1
  175. package/lib/Cloudflare/DNS/Record.d.ts.map +1 -1
  176. package/lib/Cloudflare/DNS/Record.js +3 -1
  177. package/lib/Cloudflare/DNS/Record.js.map +1 -1
  178. package/lib/Cloudflare/DNS/View.d.ts.map +1 -1
  179. package/lib/Cloudflare/DNS/View.js +3 -1
  180. package/lib/Cloudflare/DNS/View.js.map +1 -1
  181. package/lib/Cloudflare/DNS/ZoneSettings.d.ts.map +1 -1
  182. package/lib/Cloudflare/DNS/ZoneSettings.js +3 -1
  183. package/lib/Cloudflare/DNS/ZoneSettings.js.map +1 -1
  184. package/lib/Cloudflare/DNS/ZoneTransferAcl.d.ts.map +1 -1
  185. package/lib/Cloudflare/DNS/ZoneTransferAcl.js +3 -1
  186. package/lib/Cloudflare/DNS/ZoneTransferAcl.js.map +1 -1
  187. package/lib/Cloudflare/DNS/ZoneTransferIncoming.d.ts.map +1 -1
  188. package/lib/Cloudflare/DNS/ZoneTransferIncoming.js +3 -1
  189. package/lib/Cloudflare/DNS/ZoneTransferIncoming.js.map +1 -1
  190. package/lib/Cloudflare/DNS/ZoneTransferOutgoing.d.ts.map +1 -1
  191. package/lib/Cloudflare/DNS/ZoneTransferOutgoing.js +3 -1
  192. package/lib/Cloudflare/DNS/ZoneTransferOutgoing.js.map +1 -1
  193. package/lib/Cloudflare/DNS/ZoneTransferPeer.d.ts.map +1 -1
  194. package/lib/Cloudflare/DNS/ZoneTransferPeer.js +3 -1
  195. package/lib/Cloudflare/DNS/ZoneTransferPeer.js.map +1 -1
  196. package/lib/Cloudflare/DNS/ZoneTransferTsig.d.ts.map +1 -1
  197. package/lib/Cloudflare/DNS/ZoneTransferTsig.js +3 -1
  198. package/lib/Cloudflare/DNS/ZoneTransferTsig.js.map +1 -1
  199. package/lib/Cloudflare/Email/Address.d.ts.map +1 -1
  200. package/lib/Cloudflare/Email/Address.js +3 -1
  201. package/lib/Cloudflare/Email/Address.js.map +1 -1
  202. package/lib/Cloudflare/Email/AllowPolicy.d.ts.map +1 -1
  203. package/lib/Cloudflare/Email/AllowPolicy.js +1 -1
  204. package/lib/Cloudflare/Email/AllowPolicy.js.map +1 -1
  205. package/lib/Cloudflare/Email/BlockSender.d.ts.map +1 -1
  206. package/lib/Cloudflare/Email/BlockSender.js +1 -1
  207. package/lib/Cloudflare/Email/BlockSender.js.map +1 -1
  208. package/lib/Cloudflare/Email/CatchAll.d.ts.map +1 -1
  209. package/lib/Cloudflare/Email/CatchAll.js +8 -2
  210. package/lib/Cloudflare/Email/CatchAll.js.map +1 -1
  211. package/lib/Cloudflare/Email/Domain.d.ts.map +1 -1
  212. package/lib/Cloudflare/Email/Domain.js +3 -1
  213. package/lib/Cloudflare/Email/Domain.js.map +1 -1
  214. package/lib/Cloudflare/Email/ImpersonationRegistryEntry.d.ts.map +1 -1
  215. package/lib/Cloudflare/Email/ImpersonationRegistryEntry.js +1 -1
  216. package/lib/Cloudflare/Email/ImpersonationRegistryEntry.js.map +1 -1
  217. package/lib/Cloudflare/Email/Routing.d.ts.map +1 -1
  218. package/lib/Cloudflare/Email/Routing.js +3 -1
  219. package/lib/Cloudflare/Email/Routing.js.map +1 -1
  220. package/lib/Cloudflare/Email/Rule.d.ts.map +1 -1
  221. package/lib/Cloudflare/Email/Rule.js +3 -1
  222. package/lib/Cloudflare/Email/Rule.js.map +1 -1
  223. package/lib/Cloudflare/Email/SendingSubdomain.d.ts.map +1 -1
  224. package/lib/Cloudflare/Email/SendingSubdomain.js +1 -1
  225. package/lib/Cloudflare/Email/SendingSubdomain.js.map +1 -1
  226. package/lib/Cloudflare/Email/TrustedDomain.d.ts.map +1 -1
  227. package/lib/Cloudflare/Email/TrustedDomain.js +1 -1
  228. package/lib/Cloudflare/Email/TrustedDomain.js.map +1 -1
  229. package/lib/Cloudflare/Fetcher.d.ts.map +1 -1
  230. package/lib/Cloudflare/Fetcher.js +10 -3
  231. package/lib/Cloudflare/Fetcher.js.map +1 -1
  232. package/lib/Cloudflare/Flagship/App.d.ts.map +1 -1
  233. package/lib/Cloudflare/Flagship/App.js +2 -3
  234. package/lib/Cloudflare/Flagship/App.js.map +1 -1
  235. package/lib/Cloudflare/Fraud/DetectionSettings.d.ts.map +1 -1
  236. package/lib/Cloudflare/Fraud/DetectionSettings.js +3 -1
  237. package/lib/Cloudflare/Fraud/DetectionSettings.js.map +1 -1
  238. package/lib/Cloudflare/GoogleTagGateway/GoogleTagGateway.d.ts.map +1 -1
  239. package/lib/Cloudflare/GoogleTagGateway/GoogleTagGateway.js +8 -2
  240. package/lib/Cloudflare/GoogleTagGateway/GoogleTagGateway.js.map +1 -1
  241. package/lib/Cloudflare/Healthcheck/Healthcheck.d.ts.map +1 -1
  242. package/lib/Cloudflare/Healthcheck/Healthcheck.js +3 -1
  243. package/lib/Cloudflare/Healthcheck/Healthcheck.js.map +1 -1
  244. package/lib/Cloudflare/HostnameTlsSetting/HostnameTlsSetting.d.ts.map +1 -1
  245. package/lib/Cloudflare/HostnameTlsSetting/HostnameTlsSetting.js +3 -1
  246. package/lib/Cloudflare/HostnameTlsSetting/HostnameTlsSetting.js.map +1 -1
  247. package/lib/Cloudflare/Hyperdrive/Connection.d.ts.map +1 -1
  248. package/lib/Cloudflare/Hyperdrive/Connection.js +2 -4
  249. package/lib/Cloudflare/Hyperdrive/Connection.js.map +1 -1
  250. package/lib/Cloudflare/KV/Namespace.d.ts.map +1 -1
  251. package/lib/Cloudflare/KV/Namespace.js +5 -4
  252. package/lib/Cloudflare/KV/Namespace.js.map +1 -1
  253. package/lib/Cloudflare/KeylessCertificate/KeylessCertificate.d.ts.map +1 -1
  254. package/lib/Cloudflare/KeylessCertificate/KeylessCertificate.js +3 -1
  255. package/lib/Cloudflare/KeylessCertificate/KeylessCertificate.js.map +1 -1
  256. package/lib/Cloudflare/LeakedCredentialCheck/LeakedCredentialCheck.d.ts.map +1 -1
  257. package/lib/Cloudflare/LeakedCredentialCheck/LeakedCredentialCheck.js +3 -1
  258. package/lib/Cloudflare/LeakedCredentialCheck/LeakedCredentialCheck.js.map +1 -1
  259. package/lib/Cloudflare/LoadBalancer/LoadBalancer.d.ts.map +1 -1
  260. package/lib/Cloudflare/LoadBalancer/LoadBalancer.js +3 -1
  261. package/lib/Cloudflare/LoadBalancer/LoadBalancer.js.map +1 -1
  262. package/lib/Cloudflare/ManagedTransforms/ManagedTransforms.d.ts.map +1 -1
  263. package/lib/Cloudflare/ManagedTransforms/ManagedTransforms.js +3 -1
  264. package/lib/Cloudflare/ManagedTransforms/ManagedTransforms.js.map +1 -1
  265. package/lib/Cloudflare/MtlsCertificate/MtlsCertificate.d.ts.map +1 -1
  266. package/lib/Cloudflare/MtlsCertificate/MtlsCertificate.js +3 -1
  267. package/lib/Cloudflare/MtlsCertificate/MtlsCertificate.js.map +1 -1
  268. package/lib/Cloudflare/Organization/Organization.d.ts.map +1 -1
  269. package/lib/Cloudflare/Organization/Organization.js +3 -1
  270. package/lib/Cloudflare/Organization/Organization.js.map +1 -1
  271. package/lib/Cloudflare/OriginCaCertificate/OriginCaCertificate.d.ts.map +1 -1
  272. package/lib/Cloudflare/OriginCaCertificate/OriginCaCertificate.js +7 -2
  273. package/lib/Cloudflare/OriginCaCertificate/OriginCaCertificate.js.map +1 -1
  274. package/lib/Cloudflare/OriginPostQuantumEncryption/OriginPostQuantumEncryption.d.ts.map +1 -1
  275. package/lib/Cloudflare/OriginPostQuantumEncryption/OriginPostQuantumEncryption.js +3 -1
  276. package/lib/Cloudflare/OriginPostQuantumEncryption/OriginPostQuantumEncryption.js.map +1 -1
  277. package/lib/Cloudflare/OriginTlsClientAuth/HostnameCertificate.d.ts.map +1 -1
  278. package/lib/Cloudflare/OriginTlsClientAuth/HostnameCertificate.js +5 -1
  279. package/lib/Cloudflare/OriginTlsClientAuth/HostnameCertificate.js.map +1 -1
  280. package/lib/Cloudflare/PageRule/PageRule.d.ts.map +1 -1
  281. package/lib/Cloudflare/PageRule/PageRule.js +3 -1
  282. package/lib/Cloudflare/PageRule/PageRule.js.map +1 -1
  283. package/lib/Cloudflare/Providers.d.ts +29 -0
  284. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  285. package/lib/Cloudflare/Providers.js +30 -19
  286. package/lib/Cloudflare/Providers.js.map +1 -1
  287. package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
  288. package/lib/Cloudflare/Queues/Consumer.js +3 -1
  289. package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
  290. package/lib/Cloudflare/Queues/Queue.d.ts.map +1 -1
  291. package/lib/Cloudflare/Queues/Queue.js +5 -4
  292. package/lib/Cloudflare/Queues/Queue.js.map +1 -1
  293. package/lib/Cloudflare/Queues/Subscription.d.ts.map +1 -1
  294. package/lib/Cloudflare/Queues/Subscription.js +3 -1
  295. package/lib/Cloudflare/Queues/Subscription.js.map +1 -1
  296. package/lib/Cloudflare/R2/Bucket.d.ts +98 -0
  297. package/lib/Cloudflare/R2/Bucket.d.ts.map +1 -1
  298. package/lib/Cloudflare/R2/Bucket.js +141 -3
  299. package/lib/Cloudflare/R2/Bucket.js.map +1 -1
  300. package/lib/Cloudflare/RegionalHostname/RegionalHostname.d.ts.map +1 -1
  301. package/lib/Cloudflare/RegionalHostname/RegionalHostname.js +3 -1
  302. package/lib/Cloudflare/RegionalHostname/RegionalHostname.js.map +1 -1
  303. package/lib/Cloudflare/Ruleset/Ruleset.d.ts.map +1 -1
  304. package/lib/Cloudflare/Ruleset/Ruleset.js +8 -3
  305. package/lib/Cloudflare/Ruleset/Ruleset.js.map +1 -1
  306. package/lib/Cloudflare/SecretsStore/Secret.d.ts.map +1 -1
  307. package/lib/Cloudflare/SecretsStore/Secret.js +31 -5
  308. package/lib/Cloudflare/SecretsStore/Secret.js.map +1 -1
  309. package/lib/Cloudflare/SecurityTxt/SecurityTxt.d.ts.map +1 -1
  310. package/lib/Cloudflare/SecurityTxt/SecurityTxt.js +3 -1
  311. package/lib/Cloudflare/SecurityTxt/SecurityTxt.js.map +1 -1
  312. package/lib/Cloudflare/StateStore/Api.d.ts +15 -0
  313. package/lib/Cloudflare/StateStore/State.d.ts +30 -1
  314. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  315. package/lib/Cloudflare/StateStore/State.js +85 -16
  316. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  317. package/lib/Cloudflare/Tags/AccountResourceTags.d.ts.map +1 -1
  318. package/lib/Cloudflare/Tags/AccountResourceTags.js +8 -3
  319. package/lib/Cloudflare/Tags/AccountResourceTags.js.map +1 -1
  320. package/lib/Cloudflare/Tunnel/Route.d.ts.map +1 -1
  321. package/lib/Cloudflare/Tunnel/Route.js +3 -1
  322. package/lib/Cloudflare/Tunnel/Route.js.map +1 -1
  323. package/lib/Cloudflare/Tunnel/Tunnel.d.ts.map +1 -1
  324. package/lib/Cloudflare/Tunnel/Tunnel.js +3 -1
  325. package/lib/Cloudflare/Tunnel/Tunnel.js.map +1 -1
  326. package/lib/Cloudflare/UrlNormalization/UrlNormalization.d.ts.map +1 -1
  327. package/lib/Cloudflare/UrlNormalization/UrlNormalization.js +3 -1
  328. package/lib/Cloudflare/UrlNormalization/UrlNormalization.js.map +1 -1
  329. package/lib/Cloudflare/Vectorize/VectorizeIndex.d.ts.map +1 -1
  330. package/lib/Cloudflare/Vectorize/VectorizeIndex.js +2 -3
  331. package/lib/Cloudflare/Vectorize/VectorizeIndex.js.map +1 -1
  332. package/lib/Cloudflare/VpcService/VpcService.d.ts.map +1 -1
  333. package/lib/Cloudflare/VpcService/VpcService.js +1 -1
  334. package/lib/Cloudflare/VpcService/VpcService.js.map +1 -1
  335. package/lib/Cloudflare/WaitingRoom/WaitingRoom.d.ts.map +1 -1
  336. package/lib/Cloudflare/WaitingRoom/WaitingRoom.js +3 -1
  337. package/lib/Cloudflare/WaitingRoom/WaitingRoom.js.map +1 -1
  338. package/lib/Cloudflare/Web3/ContentList.d.ts.map +1 -1
  339. package/lib/Cloudflare/Web3/ContentList.js +3 -1
  340. package/lib/Cloudflare/Web3/ContentList.js.map +1 -1
  341. package/lib/Cloudflare/Web3/Hostname.d.ts.map +1 -1
  342. package/lib/Cloudflare/Web3/Hostname.js +3 -1
  343. package/lib/Cloudflare/Web3/Hostname.js.map +1 -1
  344. package/lib/Cloudflare/Workers/Cache.d.ts +71 -0
  345. package/lib/Cloudflare/Workers/Cache.d.ts.map +1 -0
  346. package/lib/Cloudflare/Workers/Cache.js +64 -0
  347. package/lib/Cloudflare/Workers/Cache.js.map +1 -0
  348. package/lib/Cloudflare/Workers/CronEventSource.d.ts +180 -6
  349. package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -1
  350. package/lib/Cloudflare/Workers/CronEventSource.js +180 -6
  351. package/lib/Cloudflare/Workers/CronEventSource.js.map +1 -1
  352. package/lib/Cloudflare/Workers/DurableObject.d.ts +36 -1
  353. package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
  354. package/lib/Cloudflare/Workers/DurableObject.js +36 -1
  355. package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
  356. package/lib/Cloudflare/Workers/DurableObjectState.d.ts +11 -0
  357. package/lib/Cloudflare/Workers/DurableObjectState.d.ts.map +1 -1
  358. package/lib/Cloudflare/Workers/DurableObjectState.js +7 -0
  359. package/lib/Cloudflare/Workers/DurableObjectState.js.map +1 -1
  360. package/lib/Cloudflare/Workers/Fetch.js +2 -2
  361. package/lib/Cloudflare/Workers/Fetch.js.map +1 -1
  362. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  363. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +3 -0
  364. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  365. package/lib/Cloudflare/Workers/Worker.d.ts +230 -4
  366. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  367. package/lib/Cloudflare/Workers/Worker.js +161 -7
  368. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  369. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +9 -0
  370. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  371. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +15 -0
  372. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  373. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +30 -0
  374. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  375. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  376. package/lib/Cloudflare/Workers/WorkerBridge.js +27 -5
  377. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  378. package/lib/Cloudflare/Workers/WorkerLoader.js +9 -1
  379. package/lib/Cloudflare/Workers/WorkerLoader.js.map +1 -1
  380. package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
  381. package/lib/Cloudflare/Workers/WorkerProvider.js +365 -18
  382. package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
  383. package/lib/Cloudflare/Workers/WorkerRuntimeContext.d.ts.map +1 -1
  384. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +20 -3
  385. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
  386. package/lib/Cloudflare/Workers/index.d.ts +1 -0
  387. package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
  388. package/lib/Cloudflare/Workers/index.js +1 -0
  389. package/lib/Cloudflare/Workers/index.js.map +1 -1
  390. package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.d.ts.map +1 -1
  391. package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.js +2 -3
  392. package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.js.map +1 -1
  393. package/lib/Cloudflare/Workflows/Workflow.d.ts +200 -24
  394. package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
  395. package/lib/Cloudflare/Workflows/Workflow.js +126 -28
  396. package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
  397. package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
  398. package/lib/Cloudflare/Workflows/WorkflowBridge.js +42 -3
  399. package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
  400. package/lib/Cloudflare/Zaraz/Config.d.ts +1 -0
  401. package/lib/Cloudflare/Zaraz/Config.d.ts.map +1 -1
  402. package/lib/Cloudflare/Zaraz/Config.js +8 -2
  403. package/lib/Cloudflare/Zaraz/Config.js.map +1 -1
  404. package/lib/Cloudflare/Zone/Zone.d.ts.map +1 -1
  405. package/lib/Cloudflare/Zone/Zone.js +1 -0
  406. package/lib/Cloudflare/Zone/Zone.js.map +1 -1
  407. package/lib/Docker/Container.d.ts.map +1 -1
  408. package/lib/Docker/Container.js +11 -1
  409. package/lib/Docker/Container.js.map +1 -1
  410. package/lib/Drizzle/Schema.d.ts.map +1 -1
  411. package/lib/Drizzle/Schema.js +12 -5
  412. package/lib/Drizzle/Schema.js.map +1 -1
  413. package/lib/Neon/Branch.d.ts.map +1 -1
  414. package/lib/Neon/Branch.js +15 -3
  415. package/lib/Neon/Branch.js.map +1 -1
  416. package/lib/Output.d.ts +13 -1
  417. package/lib/Output.d.ts.map +1 -1
  418. package/lib/Output.js +17 -3
  419. package/lib/Output.js.map +1 -1
  420. package/lib/Planetscale/Postgres/PostgresRole.js +2 -2
  421. package/lib/Planetscale/Postgres/PostgresRole.js.map +1 -1
  422. package/lib/Provider.d.ts +8 -0
  423. package/lib/Provider.d.ts.map +1 -1
  424. package/lib/Provider.js +38 -3
  425. package/lib/Provider.js.map +1 -1
  426. package/lib/Ref.d.ts +9 -1
  427. package/lib/Ref.d.ts.map +1 -1
  428. package/lib/Ref.js +2 -1
  429. package/lib/Ref.js.map +1 -1
  430. package/lib/Resource.d.ts +44 -0
  431. package/lib/Resource.d.ts.map +1 -1
  432. package/lib/Resource.js +22 -1
  433. package/lib/Resource.js.map +1 -1
  434. package/lib/Stack.js +1 -1
  435. package/lib/Stack.js.map +1 -1
  436. package/lib/State/HttpStateApi.d.ts +4 -4
  437. package/lib/State/HttpStateStore.d.ts +12 -0
  438. package/lib/State/HttpStateStore.d.ts.map +1 -1
  439. package/lib/State/HttpStateStore.js +46 -5
  440. package/lib/State/HttpStateStore.js.map +1 -1
  441. package/lib/Sync.d.ts +109 -0
  442. package/lib/Sync.d.ts.map +1 -0
  443. package/lib/Sync.js +312 -0
  444. package/lib/Sync.js.map +1 -0
  445. package/lib/Test/Bun.d.ts +1 -1
  446. package/lib/Test/Bun.d.ts.map +1 -1
  447. package/lib/Test/Bun.js +1 -1
  448. package/lib/Test/Bun.js.map +1 -1
  449. package/lib/Test/Http.d.ts +67 -0
  450. package/lib/Test/Http.d.ts.map +1 -1
  451. package/lib/Test/Http.js +69 -0
  452. package/lib/Test/Http.js.map +1 -1
  453. package/lib/Test/Vitest.d.ts +1 -1
  454. package/lib/Test/Vitest.d.ts.map +1 -1
  455. package/lib/Test/Vitest.js +1 -0
  456. package/lib/Test/Vitest.js.map +1 -1
  457. package/lib/Util/proxy-chain.js +14 -15
  458. package/lib/Util/proxy-chain.js.map +1 -1
  459. package/lib/index.d.ts +1 -0
  460. package/lib/index.d.ts.map +1 -1
  461. package/lib/index.js +1 -0
  462. package/lib/index.js.map +1 -1
  463. package/package.json +19 -19
  464. package/src/AWS/ACM/Certificate.ts +13 -2
  465. package/src/AWS/AutoScaling/AutoScalingGroup.ts +21 -15
  466. package/src/AWS/AutoScaling/LaunchTemplate.ts +6 -1
  467. package/src/AWS/AutoScaling/ScalingPolicy.ts +31 -17
  468. package/src/AWS/CloudFront/PublicKey.ts +4 -0
  469. package/src/AWS/DynamoDB/Table.ts +1 -1
  470. package/src/AWS/ECS/Service.ts +35 -6
  471. package/src/AWS/IAM/OpenIDConnectProvider.ts +9 -1
  472. package/src/AWS/Lambda/Alias.ts +42 -0
  473. package/src/AWS/Lambda/EventInvokeConfig.ts +150 -0
  474. package/src/AWS/Lambda/Function.ts +35 -2
  475. package/src/AWS/Lambda/index.ts +1 -0
  476. package/src/AWS/Organizations/DelegatedAdministrator.ts +11 -3
  477. package/src/AWS/Organizations/PolicyAttachment.ts +10 -4
  478. package/src/AWS/Organizations/RootPolicyType.ts +9 -4
  479. package/src/AWS/Organizations/TrustedServiceAccess.ts +9 -3
  480. package/src/AWS/Route53/HostedZone.ts +30 -13
  481. package/src/AWS/Route53/Record.ts +44 -22
  482. package/src/Apply.ts +7 -1
  483. package/src/Auth/Lock.ts +62 -18
  484. package/src/Bundle/PurePlugin.ts +15 -2
  485. package/src/Cli/commands/sync.ts +123 -0
  486. package/src/Cli/main.ts +2 -0
  487. package/src/Cloudflare/AI/CustomTopics.ts +3 -1
  488. package/src/Cloudflare/AI/Dataset.ts +3 -1
  489. package/src/Cloudflare/AI/Evaluation.ts +3 -1
  490. package/src/Cloudflare/AI/Gateway.ts +5 -6
  491. package/src/Cloudflare/AI/GatewayDynamicRouting.ts +3 -1
  492. package/src/Cloudflare/AI/GatewayProvider.ts +5 -2
  493. package/src/Cloudflare/AI/ProviderKey.ts +161 -0
  494. package/src/Cloudflare/AI/SearchInstance.ts +5 -4
  495. package/src/Cloudflare/AI/SearchNamespace.ts +5 -4
  496. package/src/Cloudflare/AI/SearchToken.ts +3 -1
  497. package/src/Cloudflare/AI/SecuritySettings.ts +3 -0
  498. package/src/Cloudflare/AI/index.ts +1 -0
  499. package/src/Cloudflare/Access/InfrastructureTarget.ts +4 -1
  500. package/src/Cloudflare/Access/Organization.ts +1 -0
  501. package/src/Cloudflare/Access/Policy.ts +3 -1
  502. package/src/Cloudflare/Account/Account.ts +3 -1
  503. package/src/Cloudflare/ApiToken/AccountApiToken.ts +1 -0
  504. package/src/Cloudflare/ApiToken/UserApiToken.ts +1 -0
  505. package/src/Cloudflare/Auth/AuthProvider.ts +69 -8
  506. package/src/Cloudflare/BotManagement/BotManagement.ts +3 -1
  507. package/src/Cloudflare/Cache/Reserve.ts +3 -1
  508. package/src/Cloudflare/ClientCertificate/ClientCertificate.ts +3 -1
  509. package/src/Cloudflare/Containers/Container.ts +2 -2
  510. package/src/Cloudflare/ContentScanning/ContentScanning.ts +3 -1
  511. package/src/Cloudflare/CustomCertificate/CustomCertificate.ts +3 -1
  512. package/src/Cloudflare/CustomHostname/CustomHostname.ts +1 -0
  513. package/src/Cloudflare/CustomHostname/FallbackOrigin.ts +1 -0
  514. package/src/Cloudflare/CustomNameserver/CustomNameserver.ts +3 -1
  515. package/src/Cloudflare/D1/Database.ts +2 -2
  516. package/src/Cloudflare/DNS/AccountSettings.ts +3 -1
  517. package/src/Cloudflare/DNS/Dnssec.ts +3 -1
  518. package/src/Cloudflare/DNS/Firewall.ts +3 -1
  519. package/src/Cloudflare/DNS/Record.ts +3 -1
  520. package/src/Cloudflare/DNS/View.ts +3 -1
  521. package/src/Cloudflare/DNS/ZoneSettings.ts +3 -1
  522. package/src/Cloudflare/DNS/ZoneTransferAcl.ts +3 -1
  523. package/src/Cloudflare/DNS/ZoneTransferIncoming.ts +3 -1
  524. package/src/Cloudflare/DNS/ZoneTransferOutgoing.ts +3 -1
  525. package/src/Cloudflare/DNS/ZoneTransferPeer.ts +3 -1
  526. package/src/Cloudflare/DNS/ZoneTransferTsig.ts +3 -1
  527. package/src/Cloudflare/Email/Address.ts +3 -1
  528. package/src/Cloudflare/Email/AllowPolicy.ts +1 -0
  529. package/src/Cloudflare/Email/BlockSender.ts +1 -0
  530. package/src/Cloudflare/Email/CatchAll.ts +7 -2
  531. package/src/Cloudflare/Email/Domain.ts +3 -1
  532. package/src/Cloudflare/Email/ImpersonationRegistryEntry.ts +1 -0
  533. package/src/Cloudflare/Email/Routing.ts +3 -1
  534. package/src/Cloudflare/Email/Rule.ts +3 -1
  535. package/src/Cloudflare/Email/SendingSubdomain.ts +1 -0
  536. package/src/Cloudflare/Email/TrustedDomain.ts +1 -0
  537. package/src/Cloudflare/Fetcher.ts +12 -5
  538. package/src/Cloudflare/Flagship/App.ts +2 -3
  539. package/src/Cloudflare/Fraud/DetectionSettings.ts +3 -1
  540. package/src/Cloudflare/GoogleTagGateway/GoogleTagGateway.ts +7 -2
  541. package/src/Cloudflare/Healthcheck/Healthcheck.ts +3 -1
  542. package/src/Cloudflare/HostnameTlsSetting/HostnameTlsSetting.ts +3 -1
  543. package/src/Cloudflare/Hyperdrive/Connection.ts +2 -4
  544. package/src/Cloudflare/KV/Namespace.ts +5 -4
  545. package/src/Cloudflare/KeylessCertificate/KeylessCertificate.ts +3 -1
  546. package/src/Cloudflare/LeakedCredentialCheck/LeakedCredentialCheck.ts +3 -1
  547. package/src/Cloudflare/LoadBalancer/LoadBalancer.ts +3 -1
  548. package/src/Cloudflare/ManagedTransforms/ManagedTransforms.ts +3 -1
  549. package/src/Cloudflare/MtlsCertificate/MtlsCertificate.ts +3 -1
  550. package/src/Cloudflare/Organization/Organization.ts +3 -1
  551. package/src/Cloudflare/OriginCaCertificate/OriginCaCertificate.ts +7 -2
  552. package/src/Cloudflare/OriginPostQuantumEncryption/OriginPostQuantumEncryption.ts +3 -1
  553. package/src/Cloudflare/OriginTlsClientAuth/HostnameCertificate.ts +5 -1
  554. package/src/Cloudflare/PageRule/PageRule.ts +3 -1
  555. package/src/Cloudflare/Providers.ts +34 -19
  556. package/src/Cloudflare/Queues/Consumer.ts +3 -1
  557. package/src/Cloudflare/Queues/Queue.ts +5 -4
  558. package/src/Cloudflare/Queues/Subscription.ts +3 -1
  559. package/src/Cloudflare/R2/Bucket.ts +230 -3
  560. package/src/Cloudflare/RegionalHostname/RegionalHostname.ts +3 -1
  561. package/src/Cloudflare/Ruleset/Ruleset.ts +9 -4
  562. package/src/Cloudflare/SecretsStore/Secret.ts +46 -5
  563. package/src/Cloudflare/SecurityTxt/SecurityTxt.ts +3 -1
  564. package/src/Cloudflare/StateStore/State.ts +89 -24
  565. package/src/Cloudflare/Tags/AccountResourceTags.ts +9 -5
  566. package/src/Cloudflare/Tunnel/Route.ts +3 -1
  567. package/src/Cloudflare/Tunnel/Tunnel.ts +3 -1
  568. package/src/Cloudflare/UrlNormalization/UrlNormalization.ts +3 -1
  569. package/src/Cloudflare/Vectorize/VectorizeIndex.ts +2 -3
  570. package/src/Cloudflare/VpcService/VpcService.ts +1 -0
  571. package/src/Cloudflare/WaitingRoom/WaitingRoom.ts +3 -1
  572. package/src/Cloudflare/Web3/ContentList.ts +3 -1
  573. package/src/Cloudflare/Web3/Hostname.ts +3 -1
  574. package/src/Cloudflare/Workers/Cache.ts +102 -0
  575. package/src/Cloudflare/Workers/CronEventSource.ts +180 -6
  576. package/src/Cloudflare/Workers/DurableObject.ts +36 -1
  577. package/src/Cloudflare/Workers/DurableObjectState.ts +25 -0
  578. package/src/Cloudflare/Workers/Fetch.ts +2 -2
  579. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +3 -0
  580. package/src/Cloudflare/Workers/Worker.ts +315 -9
  581. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +18 -0
  582. package/src/Cloudflare/Workers/WorkerBridge.ts +37 -10
  583. package/src/Cloudflare/Workers/WorkerLoader.ts +10 -1
  584. package/src/Cloudflare/Workers/WorkerProvider.ts +576 -40
  585. package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +23 -2
  586. package/src/Cloudflare/Workers/index.ts +1 -0
  587. package/src/Cloudflare/WorkersForPlatforms/DispatchNamespace.ts +2 -4
  588. package/src/Cloudflare/Workflows/Workflow.ts +296 -38
  589. package/src/Cloudflare/Workflows/WorkflowBridge.ts +62 -12
  590. package/src/Cloudflare/Zaraz/Config.ts +7 -2
  591. package/src/Cloudflare/Zone/Zone.ts +1 -0
  592. package/src/Docker/Container.ts +10 -1
  593. package/src/Drizzle/Schema.ts +12 -5
  594. package/src/Neon/Branch.ts +15 -3
  595. package/src/Output.ts +18 -2
  596. package/src/Planetscale/Postgres/PostgresRole.ts +2 -2
  597. package/src/Provider.ts +53 -3
  598. package/src/Ref.ts +10 -0
  599. package/src/Resource.ts +50 -1
  600. package/src/Stack.ts +1 -1
  601. package/src/State/HttpStateStore.ts +47 -5
  602. package/src/Sync.ts +494 -0
  603. package/src/Test/Bun.ts +4 -0
  604. package/src/Test/Http.ts +133 -0
  605. package/src/Test/Vitest.ts +11 -0
  606. package/src/Util/proxy-chain.ts +9 -12
  607. package/src/index.ts +1 -0
@@ -3,6 +3,7 @@ import * as workers from "@distilled.cloud/cloudflare/workers";
3
3
  import type * as Config from "effect/Config";
4
4
  import type { ConfigError } from "effect/Config";
5
5
  import * as Context from "effect/Context";
6
+ import * as Data from "effect/Data";
6
7
  import * as Effect from "effect/Effect";
7
8
  import type * as Layer from "effect/Layer";
8
9
  import * as Redacted from "effect/Redacted";
@@ -19,7 +20,11 @@ import {
19
20
  type PlatformProps,
20
21
  type PlatformServices,
21
22
  } from "../../Platform.ts";
22
- import { Resource, type ResourceClassLike } from "../../Resource.ts";
23
+ import {
24
+ isResourceOfType,
25
+ Resource,
26
+ type ResourceClassLike,
27
+ } from "../../Resource.ts";
23
28
  import type { Rpc } from "../../Rpc.ts";
24
29
  import type { RuntimeContext } from "../../RuntimeContext.ts";
25
30
  import type { Self } from "../../Self.ts";
@@ -30,6 +35,7 @@ import type { DevOrigin } from "../Hyperdrive/Connection.ts";
30
35
  import type { Providers } from "../Providers.ts";
31
36
  import type { DispatchNamespace } from "../WorkersForPlatforms/DispatchNamespace.ts";
32
37
  import type { WorkflowExport } from "../Workflows/Workflow.ts";
38
+ import type { Reference as ZoneReference } from "../Zone/lookup.ts";
33
39
  import { type Assets, type AssetsProps } from "./Assets.ts";
34
40
  import { type DurableObjectExport } from "./DurableObject.ts";
35
41
  import { Request } from "./Request.ts";
@@ -49,21 +55,141 @@ export const WorkerTypeId = "Cloudflare.Worker";
49
55
  export type WorkerTypeId = typeof WorkerTypeId;
50
56
 
51
57
  export const isWorker = <T>(value: T): value is T & Worker =>
52
- typeof value === "object" &&
53
- value !== null &&
54
- "Type" in value &&
55
- value.Type === WorkerTypeId;
58
+ isResourceOfType(value, WorkerTypeId);
56
59
 
57
60
  export class WorkerEnvironment extends Context.Service<
58
61
  WorkerEnvironment,
59
62
  Record<string, any>
60
63
  >()("Cloudflare.Workers.WorkerEnvironment") {}
61
64
 
65
+ export class CachePurgeError extends Data.TaggedError("CachePurgeError")<{
66
+ message: string;
67
+ cause?: unknown;
68
+ }> {}
69
+
70
+ /**
71
+ * Effect-native view of the Workers Cache runtime API on the execution
72
+ * context (`ctx.cache`). Only available when the Worker has Workers Cache
73
+ * enabled (the `cache` prop or `yield* Cloudflare.cache()`).
74
+ */
75
+ export interface WorkerExecutionContextCache {
76
+ /**
77
+ * Purge cached responses by `Cache-Tag`, path prefix, or everything.
78
+ */
79
+ purge(
80
+ options: cf.CachePurgeOptions,
81
+ ): Effect.Effect<cf.CachePurgeResult, CachePurgeError, RuntimeContext>;
82
+ }
83
+
62
84
  export class WorkerExecutionContext extends Context.Service<
63
85
  WorkerExecutionContext,
64
- cf.ExecutionContext
86
+ {
87
+ /**
88
+ * Run an Effect in the background without blocking the response, keeping
89
+ * the Worker alive until it settles. The Effect runs with the caller's
90
+ * full context (services, tracing), and the resulting promise is
91
+ * registered with workerd's `ctx.waitUntil`.
92
+ */
93
+ waitUntil<A, E, R>(
94
+ effect: Effect.Effect<A, E, R>,
95
+ ): Effect.Effect<void, never, R | RuntimeContext>;
96
+ /**
97
+ * Forward the request to the origin if the Worker throws an unhandled
98
+ * exception, instead of returning an error page.
99
+ */
100
+ passThroughOnException(): Effect.Effect<void, never, RuntimeContext>;
101
+ /**
102
+ * The Workers Cache runtime API (`ctx.cache`).
103
+ */
104
+ readonly cache: WorkerExecutionContextCache;
105
+ /**
106
+ * The raw workerd ExecutionContext, for interop with async APIs.
107
+ */
108
+ readonly raw: cf.ExecutionContext;
109
+ }
65
110
  >()("Cloudflare.Workers.WorkerExecutionContext") {}
66
111
 
112
+ export const fromExecutionContext = (
113
+ ctx: cf.ExecutionContext,
114
+ ): WorkerExecutionContext["Service"] => ({
115
+ raw: ctx,
116
+ waitUntil: <A, E, R>(effect: Effect.Effect<A, E, R>) =>
117
+ Effect.gen(function* () {
118
+ const context = yield* Effect.context<R>();
119
+ // Register the promise with workerd un-awaited — waitUntil extends the
120
+ // invocation's lifetime without blocking the response.
121
+ yield* Effect.sync(() =>
122
+ ctx.waitUntil(Effect.runPromise(effect.pipe(Effect.provide(context)))),
123
+ );
124
+ }),
125
+ passThroughOnException: () => Effect.sync(() => ctx.passThroughOnException()),
126
+ cache: {
127
+ purge: (options) =>
128
+ ctx.cache
129
+ ? Effect.tryPromise({
130
+ try: () => ctx.cache!.purge(options),
131
+ catch: (cause) =>
132
+ new CachePurgeError({
133
+ message:
134
+ cause instanceof Error
135
+ ? cause.message
136
+ : "Unknown cache purge error",
137
+ cause,
138
+ }),
139
+ })
140
+ : Effect.fail(
141
+ new CachePurgeError({
142
+ message:
143
+ "ctx.cache is not available — enable Workers Cache on this " +
144
+ "Worker (the `cache` prop or `yield* Cloudflare.cache()`) " +
145
+ "and note it is not supported in local dev.",
146
+ }),
147
+ ),
148
+ },
149
+ });
150
+
151
+ /**
152
+ * A {@link WorkerExecutionContext} whose methods resolve the live per-event
153
+ * context from the calling fiber at call time. Provided during the Worker's
154
+ * init phase (plan and runtime module init) so the service can be yielded
155
+ * and closed over in the top-level closure; every method is colored with
156
+ * `RuntimeContext`, so it can only be *run* inside a handler, where the
157
+ * bridge provides the real per-event context that these methods defer to.
158
+ */
159
+ export const deferredExecutionContext: WorkerExecutionContext["Service"] = {
160
+ get raw(): cf.ExecutionContext {
161
+ throw new Error(
162
+ "WorkerExecutionContext.raw is only available inside a request handler",
163
+ );
164
+ },
165
+ waitUntil: <A, E, R>(effect: Effect.Effect<A, E, R>) =>
166
+ liveExecutionContext.pipe(
167
+ Effect.flatMap((live) => live.waitUntil(effect)),
168
+ ) as Effect.Effect<void, never, R | RuntimeContext>,
169
+ passThroughOnException: () =>
170
+ liveExecutionContext.pipe(
171
+ Effect.flatMap((live) => live.passThroughOnException()),
172
+ ) as Effect.Effect<void, never, RuntimeContext>,
173
+ cache: {
174
+ purge: (options) =>
175
+ liveExecutionContext.pipe(
176
+ Effect.flatMap((live) => live.cache.purge(options)),
177
+ ) as Effect.Effect<cf.CachePurgeResult, CachePurgeError, RuntimeContext>,
178
+ },
179
+ };
180
+
181
+ const liveExecutionContext = WorkerExecutionContext.pipe(
182
+ Effect.flatMap((live) =>
183
+ live === deferredExecutionContext
184
+ ? Effect.die(
185
+ new Error(
186
+ "WorkerExecutionContext can only be used inside a request handler",
187
+ ),
188
+ )
189
+ : Effect.succeed(live),
190
+ ),
191
+ );
192
+
67
193
  export type WorkerEvent = Exclude<
68
194
  {
69
195
  [type in keyof cf.ExportedHandler]: {
@@ -103,6 +229,11 @@ export interface WorkerLimits extends Exclude<
103
229
  undefined
104
230
  > {}
105
231
 
232
+ export interface WorkerCache extends Exclude<
233
+ workers.PutScriptRequest["metadata"]["cache"],
234
+ undefined
235
+ > {}
236
+
106
237
  export type WorkerPlacement = Exclude<
107
238
  workers.PutScriptRequest["metadata"]["placement"],
108
239
  undefined
@@ -165,6 +296,28 @@ export type NormalizedBindings<
165
296
 
166
297
  export type WorkerAssetsConfig = string | AssetsProps | AssetsWithHash;
167
298
 
299
+ export interface WorkerRouteConfig {
300
+ /**
301
+ * URL pattern to match incoming requests against, e.g.
302
+ * `"subdomain.example.com/*"` or `"example.com/api/*"`.
303
+ */
304
+ pattern: string;
305
+ /**
306
+ * Cloudflare zone ID. Equivalent to Wrangler's `zone_id`.
307
+ */
308
+ zoneId?: string;
309
+ /**
310
+ * Cloudflare zone name, e.g. `"example.com"`. Equivalent to Wrangler's
311
+ * `zone_name`.
312
+ */
313
+ zoneName?: string;
314
+ /**
315
+ * Zone reference — a zone ID, zone name, or `{ zoneId, name? }` object.
316
+ * Alternative to `zoneId` / `zoneName`.
317
+ */
318
+ zone?: ZoneReference;
319
+ }
320
+
168
321
  export interface WorkerProps<
169
322
  Bindings extends WorkerBindingProps = any,
170
323
  Assets extends WorkerAssetsConfig | undefined =
@@ -226,6 +379,26 @@ export interface WorkerProps<
226
379
  * `traces: { enabled: true, ... }`.
227
380
  */
228
381
  observability?: WorkerObservability;
382
+ /**
383
+ * Workers Cache settings. When `enabled` is `true`, Cloudflare checks a
384
+ * regionally tiered cache in front of the Worker on every HTTP request —
385
+ * cache hits are served from the edge without invoking the Worker at all.
386
+ * The Worker controls what gets cached via standard response headers
387
+ * (`Cache-Control`, `Cache-Tag`, `Vary`), including
388
+ * `stale-while-revalidate`.
389
+ *
390
+ * Set `crossVersionCache: true` to share cached responses across Worker
391
+ * versions (by default the cache is scoped to a single version, so every
392
+ * deploy starts cold).
393
+ *
394
+ * If omitted, Workers Cache is disabled — unless the Worker's init phase
395
+ * enables it via `yield* Cloudflare.cache()`, which is the preferred way
396
+ * for Effect-native Workers (and also returns the runtime purge client).
397
+ * When both are set, this prop takes precedence.
398
+ *
399
+ * @see https://blog.cloudflare.com/workers-cache/
400
+ */
401
+ cache?: WorkerCache;
229
402
  tags?: string[];
230
403
  /**
231
404
  * Path to the Worker's entry module. Bundled with rolldown before
@@ -263,7 +436,7 @@ export interface WorkerProps<
263
436
  * `Config.number`, …) — resolved at deploy time and bound as
264
437
  * `secret_text` on Cloudflare regardless of the `Config`
265
438
  * constructor used. See
266
- * {@link https://v2.alchemy.run/concepts/secrets | Concepts › Secrets and Variables}.
439
+ * [Secrets & env](/cloudflare/security/secrets-env).
267
440
  * - Literal values — routed by shape: `Redacted<string>` →
268
441
  * `secret_text`, `string` → `plain_text`, anything else → `json`.
269
442
  *
@@ -275,6 +448,13 @@ export interface WorkerProps<
275
448
  /**
276
449
  * Cron expressions that trigger the Worker's scheduled handler.
277
450
  *
451
+ * This is how async (non-Effect) Workers configure Cron Triggers — the
452
+ * entry module exports its own `scheduled` handler and this prop attaches
453
+ * the schedules at deploy time. Effect-native Workers usually skip this
454
+ * prop and call `Cloudflare.Workers.cron(expression, handler)` in the Init
455
+ * phase instead, which attaches the expression and registers the runtime
456
+ * listener in one step.
457
+ *
278
458
  * Pass an empty array to remove all Cron Triggers.
279
459
  */
280
460
  crons?: string[];
@@ -284,6 +464,13 @@ export interface WorkerProps<
284
464
  * already exist in the account.
285
465
  */
286
466
  domain?: string | string[];
467
+ /**
468
+ * Zone routes that map URL patterns to this Worker. Equivalent to Wrangler's
469
+ * `routes` array — provide `zoneName` or `zoneId` (or `zone`) alongside each
470
+ * `pattern`. When the zone is omitted, it is inferred from the pattern's
471
+ * hostname.
472
+ */
473
+ routes?: WorkerRouteConfig[];
287
474
  /**
288
475
  * Extra bundler options applied on top of the standard rolldown input/output
289
476
  * options used to build this Worker. See {@link Bundle.BundleExtraOptions}.
@@ -422,15 +609,28 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<
422
609
  durableObjectNamespaces: Record<string, string>;
423
610
  accountId: string;
424
611
  domains: string[];
612
+ routes: { id: string; pattern: string; zoneId: string }[];
425
613
  crons: string[];
426
614
  hash?: {
427
615
  assets: string | undefined;
428
616
  bundle: string | undefined;
429
617
  input: string | undefined;
618
+ // Hash of the deploy-time metadata surface (compatibility, env,
619
+ // bindings, asset config, limits, observability, ...) so metadata-only
620
+ // edits trigger an update (#745). Optional: state written before this
621
+ // field existed has no `metadata`, which reads as a one-time update on
622
+ // the first diff after upgrading (the apply backfills it).
623
+ metadata?: string | undefined;
430
624
  };
431
625
  },
432
626
  {
433
627
  bindings?: WorkerBinding[];
628
+ /**
629
+ * Workers Cache settings contributed by `yield* Cloudflare.cache()`.
630
+ * Merged into the upload metadata's `cache_options`; an explicit
631
+ * `WorkerProps.cache` takes precedence.
632
+ */
633
+ cache?: WorkerCache;
434
634
  containers?: { className: string; dev: DevContainerImage | undefined }[];
435
635
  crons?: string[];
436
636
  hyperdrives?: Record<string, Required<DevOrigin>>;
@@ -463,7 +663,7 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<
463
663
  * ```
464
664
  *
465
665
  * There are three ways to define a Worker, from simplest to most
466
- * flexible. See the {@link https://alchemy.run/concepts/platform | Platform concept}
666
+ * flexible. See the [Functions & Servers](/infrastructure-as-effects/functions-and-servers)
467
667
  * page for the full explanation.
468
668
  *
469
669
  * - **Async** — plain `async fetch` handler, no Effect runtime in the bundle.
@@ -484,7 +684,7 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<
484
684
  * `Cloudflare.InferEnv` to extract a fully typed `env` object from
485
685
  * them.
486
686
  *
487
- * See the {@link https://alchemy.run/guides/async-worker | Async Workers Guide}
687
+ * See the [Workers guide](/cloudflare/compute/workers)
488
688
  * for a comprehensive walkthrough of all binding types (R2, D1,
489
689
  * Durable Objects, Assets, and more).
490
690
  *
@@ -627,6 +827,17 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<
627
827
  * }
628
828
  * ```
629
829
  *
830
+ * @example Zone routes
831
+ * ```typescript
832
+ * {
833
+ * main: import.meta.filename,
834
+ * routes: [
835
+ * { pattern: "api.example.com/*", zoneName: "example.com" },
836
+ * { pattern: "example.com/api/*", zoneId: "<YOUR_ZONE_ID>" },
837
+ * ],
838
+ * }
839
+ * ```
840
+ *
630
841
  * @example Deploying a prebuilt Worker without bundling
631
842
  * When `main` already points at a complete, runtime-ready ESM bundle
632
843
  * produced by an external tool (e.g. OpenNext), set `bundle: false` to
@@ -674,6 +885,101 @@ export type Worker<Bindings extends WorkerBindings = any> = Resource<
674
885
  * }
675
886
  * ```
676
887
  *
888
+ * @section Workers Cache
889
+ * Workers Cache puts a regionally tiered cache in front of the Worker —
890
+ * cache hits are served from the edge without invoking the Worker (and
891
+ * without billing CPU time). In an Effect-native Worker, enable it by
892
+ * yielding `Cloudflare.cache()` in the init phase, which also returns the
893
+ * runtime purge client; async Workers use the `cache` prop instead. Control
894
+ * what gets cached from your handlers via standard response headers:
895
+ * `Cache-Control` (including `stale-while-revalidate`), `Cache-Tag` for
896
+ * tag-based purging, and `Vary` for content negotiation.
897
+ *
898
+ * The cache is scoped to a single Worker version by default, so every
899
+ * deploy starts cold. Set `crossVersionCache: true` to share cached
900
+ * responses across versions.
901
+ *
902
+ * @example Enabling and purging the cache in an Effect Worker
903
+ * ```typescript
904
+ * Effect.gen(function* () {
905
+ * // init: enable Workers Cache on this Worker
906
+ * const { purge } = yield* Cloudflare.cache({ crossVersionCache: true });
907
+ *
908
+ * return {
909
+ * fetch: Effect.gen(function* () {
910
+ * const request = yield* HttpServerRequest;
911
+ * if (request.url.startsWith("/invalidate")) {
912
+ * yield* purge({ tags: ["products"] });
913
+ * return HttpServerResponse.text("purged");
914
+ * }
915
+ * return HttpServerResponse.text("hello", {
916
+ * headers: {
917
+ * "Cache-Control": "public, max-age=300, stale-while-revalidate=3600",
918
+ * "Cache-Tag": "products,product:123",
919
+ * },
920
+ * });
921
+ * }),
922
+ * };
923
+ * })
924
+ * ```
925
+ *
926
+ * @example Enabling Workers Cache on an async Worker
927
+ * ```typescript
928
+ * {
929
+ * main: "./src/worker.ts",
930
+ * cache: {
931
+ * enabled: true,
932
+ * crossVersionCache: true,
933
+ * },
934
+ * }
935
+ * ```
936
+ *
937
+ * @section Background Work & Scopes
938
+ * Each incoming event (fetch, RPC call, scheduled run) gets its own Effect
939
+ * `Scope`. When the handler finishes, the bridge closes that scope and
940
+ * registers the close promise with workerd's `ctx.waitUntil` — so
941
+ * finalizers added with `Effect.addFinalizer` inside a handler run *after*
942
+ * the response is sent, without blocking it, and the Worker stays alive
943
+ * until they settle. Streaming responses transfer the scope to the stream,
944
+ * so those finalizers run when the stream completes instead.
945
+ *
946
+ * For ad-hoc background work, `WorkerExecutionContext.waitUntil(effect)`
947
+ * forks an Effect with the caller's full context and keeps the invocation
948
+ * alive until it settles. The context can be yielded once in the init
949
+ * closure and used from any handler; its methods are `RuntimeContext`-
950
+ * colored, so they can only run inside a handler.
951
+ *
952
+ * The init closure itself is evaluated per event (its Layer is rebuilt for
953
+ * each event's runtime), so treat it as stateless setup: bind resources and
954
+ * build handlers there, but attach cleanup to handler scopes — a finalizer
955
+ * added in the init closure runs at the end of every event, not once per
956
+ * Worker.
957
+ *
958
+ * @example Post-response cleanup with a scope finalizer
959
+ * ```typescript
960
+ * return {
961
+ * fetch: Effect.gen(function* () {
962
+ * // runs after this response is sent, kept alive by waitUntil
963
+ * yield* Effect.addFinalizer(() => flushMetrics().pipe(Effect.ignore));
964
+ * return HttpServerResponse.text("ok");
965
+ * }),
966
+ * };
967
+ * ```
968
+ *
969
+ * @example Background work with waitUntil
970
+ * ```typescript
971
+ * // init
972
+ * const exec = yield* Cloudflare.WorkerExecutionContext;
973
+ *
974
+ * return {
975
+ * fetch: Effect.gen(function* () {
976
+ * // respond now; the audit write completes in the background
977
+ * yield* exec.waitUntil(writeAuditLog(event));
978
+ * return HttpServerResponse.text("accepted", { status: 202 });
979
+ * }),
980
+ * };
981
+ * ```
982
+ *
677
983
  * @section R2 Bucket
678
984
  * Bind an R2 bucket in the init phase with `Cloudflare.R2.ReadWriteBucket`.
679
985
  * The returned handle exposes `get`, `put`, `delete`, and `list`
@@ -284,3 +284,21 @@ const toBinding = (
284
284
  export const getCronBindings = (
285
285
  bindings: ReadonlyArray<ResourceBinding<Worker["Binding"]>>,
286
286
  ) => Array.from(new Set(bindings.flatMap((b) => b.data.crons ?? [])));
287
+
288
+ /**
289
+ * Merge the Workers Cache settings contributed by `yield* Cloudflare.cache()`
290
+ * bindings. Commutative: the cache is enabled (and cross-version) if any
291
+ * contributor asked for it.
292
+ */
293
+ export const getCacheBinding = (
294
+ bindings: ReadonlyArray<ResourceBinding<Worker["Binding"]>>,
295
+ ) => {
296
+ const configs = bindings.flatMap((b) => (b.data.cache ? [b.data.cache] : []));
297
+ if (configs.length === 0) {
298
+ return undefined;
299
+ }
300
+ return {
301
+ enabled: configs.some((c) => c.enabled),
302
+ crossVersionCache: configs.some((c) => c.crossVersionCache) || undefined,
303
+ };
304
+ };
@@ -32,6 +32,8 @@ import {
32
32
  Worker,
33
33
  WorkerEnvironment,
34
34
  WorkerExecutionContext,
35
+ deferredExecutionContext,
36
+ fromExecutionContext,
35
37
  } from "./Worker.ts";
36
38
  import type { WorkerRuntimeContext } from "./WorkerRuntimeContext.ts";
37
39
 
@@ -69,24 +71,31 @@ export const makeWorkerBridge = (
69
71
  return eff
70
72
  .pipe(
71
73
  Effect.flatMap(([eff, context]) =>
72
- Effect.provide(
73
- eff,
74
- pipe(
75
- Layer.succeedContext(context),
76
- Layer.provideMerge(Layer.succeedContext(context)),
77
- Layer.provideMerge(Layer.succeed(WorkerExecutionContext, ctx)),
78
- Layer.provideMerge(
74
+ eff.pipe(
75
+ // Per-event services take precedence over the captured init
76
+ // context: the init context carries the *deferred*
77
+ // WorkerExecutionContext (yieldable in the top-level closure)
78
+ // and the isolate-lifetime instance Scope, both of which must
79
+ // be shadowed by the real per-event ones here so that
80
+ // `Effect.addFinalizer` in a handler attaches to the request
81
+ // scope (closed into `ctx.waitUntil` below).
82
+ Effect.provide(
83
+ Layer.mergeAll(
84
+ Layer.succeed(
85
+ WorkerExecutionContext,
86
+ fromExecutionContext(ctx),
87
+ ),
79
88
  Layer.succeed(ExecutionContext, {
80
89
  scope,
81
90
  cache: {},
82
91
  }),
92
+ Layer.succeed(Scope.Scope, scope),
83
93
  ),
84
94
  ),
95
+ Effect.provide(Layer.succeedContext(context)),
85
96
  ),
86
97
  ),
87
- Effect.provide(
88
- Layer.provideMerge(globalContext, Layer.succeed(Scope.Scope, scope)),
89
- ),
98
+ Effect.provide(globalContext),
90
99
  Effect.runPromiseExit,
91
100
  )
92
101
  .finally(() =>
@@ -220,6 +229,16 @@ export const getWorkerExport = <Export = any>({
220
229
  Logger.layer([Logger.consolePretty()]),
221
230
  );
222
231
 
232
+ // Fallback Scope for init-phase code paths where the Layer machinery
233
+ // doesn't provide a build scope of its own. Never closed (workerd has no
234
+ // isolate-teardown hook). Note the entrypoint layer is rebuilt per event
235
+ // (each event runs in a fresh runtime with its own memo map), and a layer
236
+ // build provides its own scope to the init effect — so init-level
237
+ // finalizers actually attach to that build scope and fire at the end of
238
+ // each event, not here. Handlers get the request scope from
239
+ // `processEvent`, which closes into `ctx.waitUntil` after the response.
240
+ const instanceScope = Scope.makeUnsafe();
241
+
223
242
  const globalContext = Layer.unwrap(
224
243
  cloudflare_workers.pipe(
225
244
  Effect.map(({ env }) =>
@@ -244,6 +263,13 @@ export const getWorkerExport = <Export = any>({
244
263
  ),
245
264
  ),
246
265
  Layer.provideMerge(Layer.succeed(WorkerEnvironment, env)),
266
+ // Init-phase ExecutionContext: yieldable from the Worker's
267
+ // top-level closure (and Layers); its RuntimeContext-colored
268
+ // methods defer to the real per-event context provided by
269
+ // `processEvent`.
270
+ Layer.provideMerge(
271
+ Layer.succeed(WorkerExecutionContext, deferredExecutionContext),
272
+ ),
247
273
  Layer.provideMerge(
248
274
  Layer.succeed(
249
275
  CloudflareEnvironment,
@@ -260,6 +286,7 @@ export const getWorkerExport = <Export = any>({
260
286
  (env as any).DEBUG ? "Debug" : "Info",
261
287
  ),
262
288
  ),
289
+ Layer.provideMerge(Layer.succeed(Scope.Scope, instanceScope)),
263
290
  ),
264
291
  ),
265
292
  ),
@@ -304,9 +304,18 @@ export const WorkerLoader: WorkerLoaderClass = Object.assign(
304
304
  },
305
305
  ) as any;
306
306
 
307
+ /**
308
+ * Convert the Effect-level worker code into the shape the native
309
+ * `env.LOADER.get()` API expects, unwrapping wrapped `Fetcher`s to their raw
310
+ * Cloudflare fetchers. `globalOutbound: null` (disable network access for the
311
+ * dynamic worker) must survive as `null` — `?.raw` alone would coerce it to
312
+ * `undefined`, which the runtime treats as "default outbound", silently
313
+ * re-enabling network access for workers meant to be sandboxed (#746).
314
+ */
307
315
  const unwrapWorkerLoader = (loader: WorkerLoaderWorkerCode) => ({
308
316
  ...loader,
309
- globalOutbound: loader.globalOutbound?.raw,
317
+ globalOutbound:
318
+ loader.globalOutbound === null ? null : loader.globalOutbound?.raw,
310
319
  tails: loader.tails?.map((t) => t.raw),
311
320
  streamingTails: loader.streamingTails?.map((t) => t.raw),
312
321
  });