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
@@ -5,13 +5,12 @@ import * as Stream from "effect/Stream";
5
5
  import { isResolved } from "../../Diff.ts";
6
6
  import { createPhysicalName } from "../../PhysicalName.ts";
7
7
  import * as Provider from "../../Provider.ts";
8
- import { Resource } from "../../Resource.ts";
8
+ import { isResourceOfType, Resource } from "../../Resource.ts";
9
9
  import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
10
10
  import type { Providers } from "../Providers.ts";
11
11
 
12
12
  export const isNamespace = (value: unknown): value is Namespace =>
13
- typeof value === "object" &&
14
- (value as any)?.Type === "Cloudflare.KV.Namespace";
13
+ isResourceOfType(value, "Cloudflare.KV.Namespace");
15
14
 
16
15
  export type NamespaceProps = {
17
16
  /**
@@ -68,7 +67,9 @@ export type Namespace = Resource<
68
67
  * / `Cloudflare.KV.WriteNamespace` for least-privilege read- or
69
68
  * write-only access.
70
69
  */
71
- export const Namespace = Resource<Namespace>("Cloudflare.KV.Namespace");
70
+ export const Namespace = Resource<Namespace>("Cloudflare.KV.Namespace", {
71
+ aliases: ["Cloudflare.KVNamespace"],
72
+ });
72
73
 
73
74
  export const NamespaceProvider = () =>
74
75
  Provider.succeed(Namespace, {
@@ -214,7 +214,9 @@ export type KeylessCertificate = Resource<
214
214
  *
215
215
  * @see https://developers.cloudflare.com/ssl/keyless-ssl/
216
216
  */
217
- export const KeylessCertificate = Resource<KeylessCertificate>(TypeId);
217
+ export const KeylessCertificate = Resource<KeylessCertificate>(TypeId, {
218
+ aliases: ["Cloudflare.KeylessCertificate"],
219
+ });
218
220
 
219
221
  /**
220
222
  * Returns true if the given value is a KeylessCertificate resource.
@@ -91,7 +91,9 @@ export type LeakedCredentialCheck = Resource<
91
91
  *
92
92
  * @see https://developers.cloudflare.com/waf/detections/leaked-credentials/
93
93
  */
94
- export const LeakedCredentialCheck = Resource<LeakedCredentialCheck>(TypeId);
94
+ export const LeakedCredentialCheck = Resource<LeakedCredentialCheck>(TypeId, {
95
+ aliases: ["Cloudflare.LeakedCredentialCheck"],
96
+ });
95
97
 
96
98
  /**
97
99
  * Returns true if the given value is a LeakedCredentialCheck resource.
@@ -239,7 +239,9 @@ export type LoadBalancer = Resource<
239
239
  *
240
240
  * @see https://developers.cloudflare.com/load-balancing/
241
241
  */
242
- export const LoadBalancer = Resource<LoadBalancer>(TypeId);
242
+ export const LoadBalancer = Resource<LoadBalancer>(TypeId, {
243
+ aliases: ["Cloudflare.LoadBalancer"],
244
+ });
243
245
 
244
246
  /**
245
247
  * Returns true if the given value is a LoadBalancer resource.
@@ -172,7 +172,9 @@ export type ManagedTransforms = Resource<
172
172
  *
173
173
  * @see https://developers.cloudflare.com/rules/transform/managed-transforms/
174
174
  */
175
- export const ManagedTransforms = Resource<ManagedTransforms>(TypeId);
175
+ export const ManagedTransforms = Resource<ManagedTransforms>(TypeId, {
176
+ aliases: ["Cloudflare.ManagedTransforms"],
177
+ });
176
178
 
177
179
  /**
178
180
  * Returns true if the given value is a ManagedTransforms resource.
@@ -167,7 +167,9 @@ export type MtlsCertificate = Resource<
167
167
  *
168
168
  * @see https://developers.cloudflare.com/ssl/client-certificates/
169
169
  */
170
- export const MtlsCertificate = Resource<MtlsCertificate>(TypeId);
170
+ export const MtlsCertificate = Resource<MtlsCertificate>(TypeId, {
171
+ aliases: ["Cloudflare.MtlsCertificate"],
172
+ });
171
173
 
172
174
  /**
173
175
  * Returns true if the given value is a MtlsCertificate resource.
@@ -183,7 +183,9 @@ export type Organization = Resource<
183
183
  *
184
184
  * @see https://developers.cloudflare.com/fundamentals/setup/manage-organizations/
185
185
  */
186
- export const Organization = Resource<Organization>(TypeId);
186
+ export const Organization = Resource<Organization>(TypeId, {
187
+ aliases: ["Cloudflare.Organization"],
188
+ });
187
189
 
188
190
  /**
189
191
  * Returns true if the given value is an Organization resource.
@@ -145,7 +145,9 @@ export type OriginCaCertificate = Resource<
145
145
  *
146
146
  * @see https://developers.cloudflare.com/ssl/origin-configuration/origin-ca/
147
147
  */
148
- export const OriginCaCertificate = Resource<OriginCaCertificate>(TypeId);
148
+ export const OriginCaCertificate = Resource<OriginCaCertificate>(TypeId, {
149
+ aliases: ["Cloudflare.OriginCaCertificate"],
150
+ });
149
151
 
150
152
  /**
151
153
  * Returns true if the given value is an OriginCaCertificate resource.
@@ -238,7 +240,10 @@ export const OriginCaCertificateProvider = () =>
238
240
  // adopt policy. Ambiguity (several live certs with the same
239
241
  // hostnames) means no identity at all — report missing and recreate
240
242
  // (certificates are free and revocation is harmless).
241
- if (!olds?.hostnames?.length) return undefined;
243
+ // Output-valued hostname elements don't survive a `creating`-state
244
+ // round-trip (they deserialize as null/undefined) — without a concrete
245
+ // hostname there is no identity to search by.
246
+ if (typeof olds?.hostnames?.[0] !== "string") return undefined;
242
247
  const matches = yield* findByHostnames(olds.hostnames);
243
248
  if (matches.length !== 1) return undefined;
244
249
  const observed = yield* getCertificate(matches[0].id!);
@@ -113,7 +113,9 @@ export type OriginPostQuantumEncryption = Resource<
113
113
  * @see https://developers.cloudflare.com/ssl/origin-configuration/pqc-to-origin/
114
114
  */
115
115
  export const OriginPostQuantumEncryption =
116
- Resource<OriginPostQuantumEncryption>(TypeId);
116
+ Resource<OriginPostQuantumEncryption>(TypeId, {
117
+ aliases: ["Cloudflare.OriginPostQuantumEncryption"],
118
+ });
117
119
 
118
120
  /**
119
121
  * Returns true if the given value is an OriginPostQuantumEncryption resource.
@@ -175,8 +175,12 @@ export const HostnameCertificateProvider = () =>
175
175
  ) {
176
176
  return { action: "replace" } as const;
177
177
  }
178
+ // Compare the certificate only when the old value is known — an
179
+ // Output-valued `certificate` doesn't survive a `creating`-state
180
+ // round-trip (it deserializes as `undefined`).
178
181
  if (
179
- normalizePem(olds.certificate) !== normalizePem(news.certificate) ||
182
+ (olds.certificate !== undefined &&
183
+ normalizePem(olds.certificate) !== normalizePem(news.certificate)) ||
180
184
  unwrap(olds.privateKey) !== unwrap(news.privateKey)
181
185
  ) {
182
186
  // There is no update API for hostname client certificates — every
@@ -170,7 +170,9 @@ export type PageRule = Resource<TypeId, Props, Attributes, never, Providers>;
170
170
  *
171
171
  * @see https://developers.cloudflare.com/rules/page-rules/
172
172
  */
173
- export const PageRule = Resource<PageRule>(TypeId);
173
+ export const PageRule = Resource<PageRule>(TypeId, {
174
+ aliases: ["Cloudflare.PageRule"],
175
+ });
174
176
 
175
177
  /**
176
178
  * Returns true if the given value is a PageRule resource.
@@ -684,31 +684,46 @@ export const providers = () =>
684
684
  ),
685
685
  Layer.provide(DockerLive),
686
686
  Layer.provideMerge(localRuntimeServices()),
687
- Layer.provideMerge(Credentials.fromAuthProvider()),
687
+ Layer.provideMerge(CloudflareApiLive()),
688
+ Layer.orDie,
689
+ );
690
+
691
+ /**
692
+ * The foundation every effect tree that talks to the Cloudflare API
693
+ * shares — credentials resolved through the Alchemy auth provider,
694
+ * account environment, Access, profile + credential store — plus a
695
+ * blanket retry policy applied to every Cloudflare API call.
696
+ *
697
+ * Used by {@link providers} and the Cloudflare state store
698
+ * ({@link ../Cloudflare/StateStore/State.ts state}) so that provider
699
+ * lifecycle operations and state-store init/bootstrap probes retry
700
+ * transient failures the same way; without it the state-store
701
+ * subdomain/script/secrets probes run on the SDK's shorter default
702
+ * policy and surface throttling ("Please wait and consider throttling
703
+ * your request speed") to users.
704
+ *
705
+ * The retry policy extends `Retry.makeDefault`'s transient detection
706
+ * (throttling / 5xx / network) with Cloudflare-specific
707
+ * misleadingly-tagged transient cases the SDK doesn't yet mark
708
+ * retryable — see `cloudflareRetryFactory` below. Deliberately
709
+ * narrow: we ONLY add cases where the message unambiguously indicates
710
+ * a transient infrastructure failure (not a real auth/permission
711
+ * failure). Auto-retrying ambiguous cases like `Unauthorized:
712
+ * Authentication error` would silently loop on genuinely invalid
713
+ * tokens.
714
+ *
715
+ * TODO(distilled): once
716
+ * https://github.com/alchemy-run/distilled/pull/233 lands, the retry
717
+ * wrapper can collapse back to `Retry.makeDefault`.
718
+ */
719
+ export const CloudflareApiLive = () =>
720
+ Credentials.fromAuthProvider().pipe(
688
721
  Layer.provideMerge(CloudflareEnvironment.fromProfile()),
689
722
  Layer.provideMerge(CloudflareAuth),
690
723
  Layer.provideMerge(Access.AccessLive),
691
724
  Layer.provideMerge(ProfileLive),
692
725
  Layer.provideMerge(CredentialsStoreLive),
693
- // Apply a blanket retry policy to every Cloudflare API call. Extends
694
- // `Retry.makeDefault`'s transient detection (throttling / 5xx /
695
- // network) with one Cloudflare-specific misleadingly-tagged
696
- // transient case the SDK doesn't yet mark retryable — see
697
- // `cloudflareRetryFactory` below. Without this, the matching brief
698
- // CF infrastructure blips surface as test failures and resource
699
- // leaks.
700
- //
701
- // Deliberately narrow: we ONLY add cases where the message
702
- // unambiguously indicates a transient infrastructure failure (not
703
- // a real auth/permission failure). Auto-retrying ambiguous cases
704
- // like `Unauthorized: Authentication error` would silently loop on
705
- // genuinely invalid tokens.
706
- //
707
- // TODO(distilled): once
708
- // https://github.com/alchemy-run/distilled/pull/233 lands, this
709
- // wrapper can collapse back to `Retry.makeDefault`.
710
726
  Layer.provideMerge(Layer.succeed(Retry.Retry, cloudflareRetryFactory)),
711
- Layer.orDie,
712
727
  );
713
728
 
714
729
  const cloudflareRetryFactory: Retry.Factory = (lastError) => {
@@ -115,7 +115,9 @@ export type Consumer = Resource<
115
115
  * });
116
116
  * ```
117
117
  */
118
- export const Consumer = Resource<Consumer>("Cloudflare.Queues.Consumer");
118
+ export const Consumer = Resource<Consumer>("Cloudflare.Queues.Consumer", {
119
+ aliases: ["Cloudflare.QueueConsumer"],
120
+ });
119
121
 
120
122
  // Cloudflare allows a single Worker consumer per queue, so the
121
123
  // first match in the paginated stream is the only one. Using
@@ -9,7 +9,7 @@ import * as ProviderLayer from "../../Local/ProviderLayer.ts";
9
9
  import * as RpcProvider from "../../Local/RpcProvider.ts";
10
10
  import { createPhysicalName } from "../../PhysicalName.ts";
11
11
  import * as Provider from "../../Provider.ts";
12
- import { Resource } from "../../Resource.ts";
12
+ import { isResourceOfType, Resource } from "../../Resource.ts";
13
13
  import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
14
14
  import {
15
15
  generateLocalId,
@@ -20,8 +20,7 @@ import {
20
20
  import type { Providers } from "../Providers.ts";
21
21
 
22
22
  export const isQueue = (value: unknown): value is Queue =>
23
- typeof value === "object" &&
24
- (value as any)?.Type === "Cloudflare.Queues.Queue";
23
+ isResourceOfType(value, "Cloudflare.Queues.Queue");
25
24
 
26
25
  export type QueueProps = {
27
26
  /**
@@ -104,7 +103,9 @@ export type Queue = Resource<
104
103
  * );
105
104
  * ```
106
105
  */
107
- export const Queue = Resource<Queue>("Cloudflare.Queues.Queue");
106
+ export const Queue = Resource<Queue>("Cloudflare.Queues.Queue", {
107
+ aliases: ["Cloudflare.Queue"],
108
+ });
108
109
 
109
110
  export const ProviderLive = () =>
110
111
  Provider.succeed(Queue, {
@@ -193,7 +193,9 @@ export type Subscription = Resource<
193
193
  *
194
194
  * @see https://developers.cloudflare.com/queues/event-subscriptions/
195
195
  */
196
- export const Subscription = Resource<Subscription>(TypeId);
196
+ export const Subscription = Resource<Subscription>(TypeId, {
197
+ aliases: ["Cloudflare.Queue.Subscription"],
198
+ });
197
199
 
198
200
  /**
199
201
  * Returns true if the given value is a Subscription resource.
@@ -6,13 +6,13 @@ import * as Stream from "effect/Stream";
6
6
  import { deepEqual, isResolved } from "../../Diff.ts";
7
7
  import { createPhysicalName } from "../../PhysicalName.ts";
8
8
  import * as Provider from "../../Provider.ts";
9
- import { Resource } from "../../Resource.ts";
9
+ import { isResourceOfType, Resource } from "../../Resource.ts";
10
10
  import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
11
11
  import type * as Cloudflare from "../Providers.ts";
12
12
  import * as Zone from "../Zone/index.ts";
13
13
 
14
14
  export const isBucket = (value: any): value is Bucket =>
15
- typeof value === "object" && (value as any)?.Type === "Cloudflare.R2.Bucket";
15
+ isResourceOfType(value, "Cloudflare.R2.Bucket");
16
16
 
17
17
  export type BucketName = string;
18
18
 
@@ -99,6 +99,39 @@ export type BucketLifecycleRule = {
99
99
  }[];
100
100
  };
101
101
 
102
+ export type BucketCorsRule = {
103
+ /**
104
+ * Optional label for this rule, shown in the Cloudflare dashboard. Not
105
+ * used to correlate rules across updates — the CORS configuration is
106
+ * always replaced as a whole.
107
+ */
108
+ id?: string;
109
+ /**
110
+ * HTTP methods browsers are allowed to use in cross-origin requests.
111
+ */
112
+ allowedMethods: ("GET" | "PUT" | "POST" | "DELETE" | "HEAD")[];
113
+ /**
114
+ * Origins allowed to make cross-origin requests, e.g.
115
+ * `"https://example.com"`. Use `"*"` to allow any origin.
116
+ */
117
+ allowedOrigins: string[];
118
+ /**
119
+ * Request headers browsers are allowed to send, e.g. `"range"` for
120
+ * range reads. If omitted, only simple headers are allowed.
121
+ */
122
+ allowedHeaders?: string[];
123
+ /**
124
+ * Response headers the browser is allowed to expose to the requesting
125
+ * JavaScript, e.g. `"etag"` or `"content-range"`.
126
+ */
127
+ exposeHeaders?: string[];
128
+ /**
129
+ * How long (in seconds) browsers may cache CORS preflight responses.
130
+ * Browsers may cap this at 2 hours or less, even if 86400 is specified.
131
+ */
132
+ maxAgeSeconds?: number;
133
+ };
134
+
102
135
  export type BucketProps = {
103
136
  /**
104
137
  * Name of the bucket. If omitted, a unique name will be generated.
@@ -130,6 +163,13 @@ export type BucketProps = {
130
163
  * supported transitions.
131
164
  */
132
165
  lifecycleRules?: BucketLifecycleRule[];
166
+ /**
167
+ * CORS rules applied to the bucket, controlling which cross-origin
168
+ * browser requests are allowed against the bucket's public or S3 API
169
+ * endpoints. Pass an empty array (or omit) to remove the CORS
170
+ * configuration.
171
+ */
172
+ cors?: BucketCorsRule[];
133
173
  };
134
174
 
135
175
  export type Bucket = Resource<
@@ -143,6 +183,7 @@ export type Bucket = Resource<
143
183
  accountId: string;
144
184
  domains: Bucket.CustomDomain[];
145
185
  lifecycleRules: Bucket.LifecycleRule[];
186
+ cors: Bucket.CorsRule[];
146
187
  },
147
188
  never,
148
189
  Cloudflare.Providers
@@ -298,8 +339,60 @@ export type Bucket = Resource<
298
339
  * ],
299
340
  * });
300
341
  * ```
342
+ *
343
+ * @section CORS
344
+ *
345
+ * Configure CORS rules so browsers can make cross-origin requests against
346
+ * the bucket's public (custom domain / r2.dev) or S3 API endpoints. Pass an
347
+ * empty array (or omit) to remove the CORS configuration. See the
348
+ * [Cloudflare R2 docs](https://developers.cloudflare.com/r2/buckets/cors/)
349
+ * for details.
350
+ *
351
+ * @example Allow cross-origin reads from any origin
352
+ * ```typescript
353
+ * const bucket = yield* Cloudflare.R2.Bucket("MyBucket", {
354
+ * cors: [
355
+ * {
356
+ * allowedMethods: ["GET", "HEAD"],
357
+ * allowedOrigins: ["*"],
358
+ * },
359
+ * ],
360
+ * });
361
+ * ```
362
+ *
363
+ * @example Browser range reads (e.g. PMTiles map tiles)
364
+ * ```typescript
365
+ * const bucket = yield* Cloudflare.R2.Bucket("MyBucket", {
366
+ * domains: [{ name: "tiles.example.com" }],
367
+ * cors: [
368
+ * {
369
+ * allowedMethods: ["GET", "HEAD"],
370
+ * allowedOrigins: ["https://map.example.com"],
371
+ * allowedHeaders: ["range", "if-match"],
372
+ * exposeHeaders: ["etag", "content-range"],
373
+ * maxAgeSeconds: 3600,
374
+ * },
375
+ * ],
376
+ * });
377
+ * ```
378
+ *
379
+ * @example Allow uploads from a web app
380
+ * ```typescript
381
+ * const bucket = yield* Cloudflare.R2.Bucket("MyBucket", {
382
+ * cors: [
383
+ * {
384
+ * allowedMethods: ["GET", "PUT", "POST"],
385
+ * allowedOrigins: ["https://app.example.com"],
386
+ * allowedHeaders: ["content-type"],
387
+ * exposeHeaders: ["etag"],
388
+ * },
389
+ * ],
390
+ * });
391
+ * ```
301
392
  */
302
- export const Bucket = Resource<Bucket>("Cloudflare.R2.Bucket");
393
+ export const Bucket = Resource<Bucket>("Cloudflare.R2.Bucket", {
394
+ aliases: ["Cloudflare.R2Bucket"],
395
+ });
303
396
 
304
397
  export declare namespace Bucket {
305
398
  export type StorageClass = "Standard" | "InfrequentAccess";
@@ -322,6 +415,14 @@ export declare namespace Bucket {
322
415
  }[]
323
416
  | undefined;
324
417
  };
418
+ export type CorsRule = {
419
+ id: string | undefined;
420
+ allowedMethods: ("GET" | "PUT" | "POST" | "DELETE" | "HEAD")[];
421
+ allowedOrigins: string[];
422
+ allowedHeaders: string[] | undefined;
423
+ exposeHeaders: string[] | undefined;
424
+ maxAgeSeconds: number | undefined;
425
+ };
325
426
  export type CustomDomain = {
326
427
  domain: string;
327
428
  zoneId: string | undefined;
@@ -657,6 +758,71 @@ export const BucketProvider = () =>
657
758
  return desiredRules;
658
759
  });
659
760
 
761
+ const reconcileCorsRules = (
762
+ bucketName: string,
763
+ jurisdiction: Bucket.Jurisdiction,
764
+ desired: BucketCorsRule[],
765
+ ) =>
766
+ Effect.gen(function* () {
767
+ const { accountId } = yield* yield* CloudflareEnvironment;
768
+ const observed = yield* r2
769
+ .getBucketCors({
770
+ accountId,
771
+ bucketName,
772
+ jurisdiction,
773
+ })
774
+ .pipe(
775
+ Effect.map((response) => (response.rules ?? []).map(toCorsRule)),
776
+ // A bucket with no CORS configuration is a typed error, not an
777
+ // empty rule list — normalize it to [] for the diff below.
778
+ Effect.catchTag("NoCorsConfiguration", () =>
779
+ Effect.succeed([] as Bucket.CorsRule[]),
780
+ ),
781
+ Effect.retry({
782
+ while: (e) => e._tag === "NoSuchBucket",
783
+ schedule: r2BucketEndpointConsistencySchedule,
784
+ }),
785
+ );
786
+
787
+ const desiredRules = desired.map(normalizeCorsRule);
788
+
789
+ if (deepEqual(observed, desiredRules)) {
790
+ return desiredRules;
791
+ }
792
+
793
+ if (desiredRules.length === 0) {
794
+ yield* r2
795
+ .deleteBucketCors({
796
+ accountId,
797
+ bucketName,
798
+ jurisdiction,
799
+ })
800
+ .pipe(
801
+ Effect.retry({
802
+ while: (e) => e._tag === "NoSuchBucket",
803
+ schedule: r2BucketEndpointConsistencySchedule,
804
+ }),
805
+ );
806
+ return desiredRules;
807
+ }
808
+
809
+ yield* r2
810
+ .putBucketCors({
811
+ accountId,
812
+ bucketName,
813
+ jurisdiction,
814
+ rules: desired.map(toCorsPutPayload),
815
+ })
816
+ .pipe(
817
+ Effect.retry({
818
+ while: (e) => e._tag === "NoSuchBucket",
819
+ schedule: r2BucketEndpointConsistencySchedule,
820
+ }),
821
+ );
822
+
823
+ return desiredRules;
824
+ });
825
+
660
826
  return {
661
827
  stables: ["bucketName", "accountId"],
662
828
  list: () =>
@@ -715,6 +881,21 @@ export const BucketProvider = () =>
715
881
  Effect.succeed([] as Bucket.LifecycleRule[]),
716
882
  ),
717
883
  );
884
+ const cors = yield* r2
885
+ .getBucketCors({
886
+ accountId,
887
+ bucketName: bucket.name,
888
+ jurisdiction: bucket.jurisdiction,
889
+ })
890
+ .pipe(
891
+ Effect.map((observed) =>
892
+ (observed.rules ?? []).map(toCorsRule),
893
+ ),
894
+ Effect.catchTag(
895
+ ["NoSuchBucket", "NoCorsConfiguration"],
896
+ () => Effect.succeed([] as Bucket.CorsRule[]),
897
+ ),
898
+ );
718
899
  return {
719
900
  bucketName: bucket.name,
720
901
  storageClass: bucket.storageClass,
@@ -723,6 +904,7 @@ export const BucketProvider = () =>
723
904
  accountId,
724
905
  domains,
725
906
  lifecycleRules,
907
+ cors,
726
908
  };
727
909
  }).pipe(
728
910
  // The custom-domain endpoint intermittently 500s ("Failed to
@@ -772,6 +954,9 @@ export const BucketProvider = () =>
772
954
  if (!deepEqual(olds.lifecycleRules, news.lifecycleRules)) {
773
955
  return { action: "update" } as const;
774
956
  }
957
+ if (!deepEqual(olds.cors, news.cors)) {
958
+ return { action: "update" } as const;
959
+ }
775
960
  }),
776
961
  reconcile: Effect.fn(function* ({ id, news = {}, output }) {
777
962
  const { accountId } = yield* yield* CloudflareEnvironment;
@@ -873,10 +1058,17 @@ export const BucketProvider = () =>
873
1058
  news.lifecycleRules ?? [],
874
1059
  );
875
1060
 
1061
+ const cors = yield* reconcileCorsRules(
1062
+ attrs.bucketName,
1063
+ attrs.jurisdiction,
1064
+ news.cors ?? [],
1065
+ );
1066
+
876
1067
  return {
877
1068
  ...attrs,
878
1069
  domains,
879
1070
  lifecycleRules,
1071
+ cors,
880
1072
  };
881
1073
  }),
882
1074
  delete: Effect.fn(function* ({ output }) {
@@ -931,6 +1123,7 @@ export const BucketProvider = () =>
931
1123
  accountId: acct,
932
1124
  domains: output?.domains ?? [],
933
1125
  lifecycleRules: output?.lifecycleRules ?? [],
1126
+ cors: output?.cors ?? [],
934
1127
  })),
935
1128
  Effect.catchTag("NoSuchBucket", () => Effect.succeed(undefined)),
936
1129
  );
@@ -1021,6 +1214,40 @@ const normalizeLifecycleRule = (
1021
1214
  storageClassTransitions: rule.storageClassTransitions,
1022
1215
  });
1023
1216
 
1217
+ type CorsRuleResponse = NonNullable<r2.GetBucketCorsResponse["rules"]>[number];
1218
+
1219
+ const toCorsRule = (rule: CorsRuleResponse): Bucket.CorsRule => ({
1220
+ id: rule.id ?? undefined,
1221
+ // Distilled widened generated string enums to open unions.
1222
+ allowedMethods: rule.allowed.methods as Bucket.CorsRule["allowedMethods"],
1223
+ allowedOrigins: rule.allowed.origins,
1224
+ allowedHeaders: rule.allowed.headers ?? undefined,
1225
+ exposeHeaders: rule.exposeHeaders ?? undefined,
1226
+ maxAgeSeconds: rule.maxAgeSeconds ?? undefined,
1227
+ });
1228
+
1229
+ const normalizeCorsRule = (rule: BucketCorsRule): Bucket.CorsRule => ({
1230
+ id: rule.id,
1231
+ allowedMethods: rule.allowedMethods,
1232
+ allowedOrigins: rule.allowedOrigins,
1233
+ allowedHeaders: rule.allowedHeaders,
1234
+ exposeHeaders: rule.exposeHeaders,
1235
+ maxAgeSeconds: rule.maxAgeSeconds,
1236
+ });
1237
+
1238
+ const toCorsPutPayload = (
1239
+ rule: BucketCorsRule,
1240
+ ): NonNullable<r2.PutBucketCorsRequest["rules"]>[number] => ({
1241
+ id: rule.id,
1242
+ allowed: {
1243
+ methods: rule.allowedMethods,
1244
+ origins: rule.allowedOrigins,
1245
+ headers: rule.allowedHeaders,
1246
+ },
1247
+ exposeHeaders: rule.exposeHeaders,
1248
+ maxAgeSeconds: rule.maxAgeSeconds,
1249
+ });
1250
+
1024
1251
  const toLifecyclePutPayload = (
1025
1252
  rule: BucketLifecycleRule,
1026
1253
  ): NonNullable<r2.PutBucketLifecycleRequest["rules"]>[number] => ({
@@ -95,7 +95,9 @@ export type RegionalHostname = Resource<
95
95
  *
96
96
  * @see https://developers.cloudflare.com/data-localization/regional-services/
97
97
  */
98
- export const RegionalHostname = Resource<RegionalHostname>(TypeId);
98
+ export const RegionalHostname = Resource<RegionalHostname>(TypeId, {
99
+ aliases: ["Cloudflare.RegionalHostname"],
100
+ });
99
101
 
100
102
  /**
101
103
  * Returns true if the given value is a RegionalHostname resource.
@@ -98,7 +98,9 @@ export type Ruleset = Resource<
98
98
  * });
99
99
  * ```
100
100
  */
101
- export const Ruleset = Resource<Ruleset>("Cloudflare.Ruleset.Ruleset")({});
101
+ export const Ruleset = Resource<Ruleset>("Cloudflare.Ruleset.Ruleset", {
102
+ aliases: ["Cloudflare.Ruleset"],
103
+ })({});
102
104
 
103
105
  export const RulesetProvider = () =>
104
106
  Provider.succeed(Ruleset, {
@@ -255,8 +257,11 @@ export const toRulesetAttributes = (
255
257
  // type statically exposes it as an `Output`. During `diff` (plan time) the
256
258
  // zone can still be unresolved — e.g. when it's being created in the same
257
259
  // deploy — in which case `zoneId` is not yet a string. Callers must treat a
258
- // non-string result as "not resolved yet".
259
- const zoneIdOf = (zone: Zone): string | undefined => {
260
- const zoneId = (zone as unknown as Partial<Attributes>).zoneId;
260
+ // non-string result as "not resolved yet". May also receive `undefined`:
261
+ // an Output-valued `zone` doesn't survive a `creating`-state round-trip
262
+ // (it deserializes as `undefined`), and recovery paths hand those props
263
+ // back as `olds`.
264
+ const zoneIdOf = (zone: Zone | undefined): string | undefined => {
265
+ const zoneId = (zone as unknown as Partial<Attributes> | undefined)?.zoneId;
261
266
  return typeof zoneId === "string" ? zoneId : undefined;
262
267
  };