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
@@ -126,6 +126,43 @@ const selectAccount = (accessToken: string) =>
126
126
  }).pipe(retryOnce);
127
127
  }).pipe((e) => withOAuthCredentials(accessToken, e));
128
128
 
129
+ /**
130
+ * Cloudflare account IDs are 32 lowercase hex characters. Placeholder
131
+ * values ("", "-", "dummy", …) end up interpolated into API paths and
132
+ * surface as baffling `InvalidRoute: Could not route to
133
+ * /accounts/<value>/...` errors, so reject them up front with an
134
+ * actionable message instead.
135
+ */
136
+ const ACCOUNT_ID_PATTERN = /^[0-9a-f]{32}$/i;
137
+
138
+ export const validateAccountId = (
139
+ accountId: string | undefined,
140
+ source: string,
141
+ ): Effect.Effect<string, AuthError> => {
142
+ const trimmed = accountId?.trim() ?? "";
143
+ if (trimmed.length === 0) {
144
+ return Effect.fail(
145
+ new AuthError({
146
+ message:
147
+ `Cloudflare account ID is missing (${source}). ` +
148
+ "Set CLOUDFLARE_ACCOUNT_ID or re-run 'alchemy login' and provide your account ID " +
149
+ "(found in the Cloudflare dashboard under Workers & Pages → Account details).",
150
+ }),
151
+ );
152
+ }
153
+ if (!ACCOUNT_ID_PATTERN.test(trimmed)) {
154
+ return Effect.fail(
155
+ new AuthError({
156
+ message:
157
+ `'${trimmed}' is not a valid Cloudflare account ID (${source}) — expected 32 hex characters. ` +
158
+ "Copy the account ID from the Cloudflare dashboard (Workers & Pages → Account details) " +
159
+ "into CLOUDFLARE_ACCOUNT_ID or re-run 'alchemy login'.",
160
+ }),
161
+ );
162
+ }
163
+ return Effect.succeed(trimmed.toLowerCase());
164
+ };
165
+
129
166
  const promptAccountId = () =>
130
167
  getEnv("CLOUDFLARE_ACCOUNT_ID").pipe(
131
168
  Effect.flatMap((envAccountId) =>
@@ -133,6 +170,10 @@ const promptAccountId = () =>
133
170
  message: "Cloudflare Account ID (Enter to skip)",
134
171
  placeholder: envAccountId ?? "",
135
172
  defaultValue: envAccountId ?? "",
173
+ validate: (v) =>
174
+ v.trim().length === 0 || ACCOUNT_ID_PATTERN.test(v.trim())
175
+ ? undefined
176
+ : "Expected a 32-character hex account ID (Workers & Pages → Account details)",
136
177
  }).pipe(retryOnce),
137
178
  ),
138
179
  );
@@ -324,7 +365,13 @@ export const CloudflareAuth = AuthProviderLayer<
324
365
  Match.when(
325
366
  { method: "env" },
326
367
  Effect.fn(function* () {
327
- const accountId = yield* getEnvRequired("CLOUDFLARE_ACCOUNT_ID");
368
+ const accountId = yield* getEnvRequired(
369
+ "CLOUDFLARE_ACCOUNT_ID",
370
+ ).pipe(
371
+ Effect.flatMap((id) =>
372
+ validateAccountId(id, "from the CLOUDFLARE_ACCOUNT_ID env var"),
373
+ ),
374
+ );
328
375
  const apiToken = yield* getEnvRedacted("CLOUDFLARE_API_TOKEN");
329
376
  if (apiToken) {
330
377
  return {
@@ -363,29 +410,43 @@ export const CloudflareAuth = AuthProviderLayer<
363
410
  "Cloudflare stored credentials not found. Run: alchemy-effect login --configure",
364
411
  }),
365
412
  )
366
- : Effect.succeed(
367
- Match.value(creds).pipe(
413
+ : Effect.gen(function* () {
414
+ // The account ID prompt is skippable, so stored
415
+ // credentials may carry an empty accountId; fall
416
+ // back to the env var before validating.
417
+ const envAccountId = yield* getEnv(
418
+ "CLOUDFLARE_ACCOUNT_ID",
419
+ );
420
+ const accountId = yield* validateAccountId(
421
+ creds.accountId?.trim() || envAccountId,
422
+ `stored for profile '${profileName}'`,
423
+ );
424
+ return Match.value(creds).pipe(
368
425
  Match.when({ type: "apiToken" }, (c) => ({
369
426
  type: "apiToken" as const,
370
427
  apiToken: Redacted.make(c.apiToken),
371
- accountId: c.accountId,
428
+ accountId,
372
429
  source: { type: "stored" as const },
373
430
  })),
374
431
  Match.when({ type: "apiKey" }, (c) => ({
375
432
  type: "apiKey" as const,
376
433
  apiKey: Redacted.make(c.apiKey),
377
434
  email: Redacted.make(c.email),
378
- accountId: c.accountId,
435
+ accountId,
379
436
  source: { type: "stored" as const },
380
437
  })),
381
438
  Match.exhaustive,
382
- ),
383
- ),
439
+ );
440
+ }),
384
441
  ),
385
442
  ),
386
443
  ),
387
444
  Match.when({ method: "oauth" }, (cfg) =>
388
445
  Effect.gen(function* () {
446
+ const accountId = yield* validateAccountId(
447
+ cfg.accountId,
448
+ `configured for profile '${profileName}'`,
449
+ );
389
450
  const creds = yield* store.read<OAuthClient.OAuthCredentials>(
390
451
  profileName,
391
452
  "cf-oauth",
@@ -421,7 +482,7 @@ export const CloudflareAuth = AuthProviderLayer<
421
482
  type: "oauth" as const,
422
483
  accessToken: Redacted.make(fresh.access),
423
484
  expires: fresh.expires,
424
- accountId: cfg.accountId,
485
+ accountId,
425
486
  source: { type: "oauth" as const },
426
487
  };
427
488
  }),
@@ -222,7 +222,9 @@ export type BotManagement = Resource<
222
222
  *
223
223
  * @see https://developers.cloudflare.com/bots/
224
224
  */
225
- export const BotManagement = Resource<BotManagement>(TypeId);
225
+ export const BotManagement = Resource<BotManagement>(TypeId, {
226
+ aliases: ["Cloudflare.BotManagement"],
227
+ });
226
228
 
227
229
  /**
228
230
  * Returns true if the given value is a BotManagement resource.
@@ -111,7 +111,9 @@ export type Reserve = Resource<
111
111
  *
112
112
  * @see https://developers.cloudflare.com/cache/advanced-configuration/cache-reserve/
113
113
  */
114
- export const Reserve = Resource<Reserve>(TypeId);
114
+ export const Reserve = Resource<Reserve>(TypeId, {
115
+ aliases: ["Cloudflare.Cache.CacheReserve"],
116
+ });
115
117
 
116
118
  /**
117
119
  * Returns true if the given value is a Reserve resource.
@@ -162,7 +162,9 @@ export type ClientCertificate = Resource<
162
162
  *
163
163
  * @see https://developers.cloudflare.com/ssl/client-certificates/
164
164
  */
165
- export const ClientCertificate = Resource<ClientCertificate>(TypeId);
165
+ export const ClientCertificate = Resource<ClientCertificate>(TypeId, {
166
+ aliases: ["Cloudflare.ClientCertificate"],
167
+ });
166
168
 
167
169
  /**
168
170
  * Returns true if the given value is a ClientCertificate resource.
@@ -159,8 +159,8 @@ export type Container<Id extends string = string> = Named<Id> & {
159
159
  * runtime. Keeping them separate ensures the bundler only includes
160
160
  * the tiny class in the DO's output.
161
161
  *
162
- * See the {@link https://alchemy.run/concepts/platform | Platform
163
- * concept} page for how this fits into the async / effect / layer
162
+ * See the [Platform concept](/infrastructure-as-effects/functions-and-servers)
163
+ * page for how this fits into the async / effect / layer
164
164
  * progression.
165
165
  * @resource
166
166
  * @product Containers
@@ -107,7 +107,9 @@ export type ContentScanning = Resource<
107
107
  *
108
108
  * @see https://developers.cloudflare.com/waf/detections/malicious-uploads/
109
109
  */
110
- export const ContentScanning = Resource<ContentScanning>(TypeId);
110
+ export const ContentScanning = Resource<ContentScanning>(TypeId, {
111
+ aliases: ["Cloudflare.ContentScanning"],
112
+ });
111
113
 
112
114
  /**
113
115
  * Returns true if the given value is a ContentScanning resource.
@@ -244,7 +244,9 @@ export type CustomCertificate = Resource<
244
244
  *
245
245
  * @see https://developers.cloudflare.com/ssl/edge-certificates/custom-certificates/
246
246
  */
247
- export const CustomCertificate = Resource<CustomCertificate>(TypeId);
247
+ export const CustomCertificate = Resource<CustomCertificate>(TypeId, {
248
+ aliases: ["Cloudflare.CustomCertificate"],
249
+ });
248
250
 
249
251
  /**
250
252
  * Returns true if the given value is a CustomCertificate resource.
@@ -280,6 +280,7 @@ export type CustomHostname = Resource<
280
280
  */
281
281
  export const CustomHostname = Resource<CustomHostname>(
282
282
  "Cloudflare.CustomHostname.CustomHostname",
283
+ { aliases: ["Cloudflare.CustomHostname"] },
283
284
  );
284
285
 
285
286
  export const isCustomHostname = (value: unknown): value is CustomHostname =>
@@ -78,6 +78,7 @@ export type FallbackOrigin = Resource<
78
78
  */
79
79
  export const FallbackOrigin = Resource<FallbackOrigin>(
80
80
  "Cloudflare.CustomHostname.FallbackOrigin",
81
+ { aliases: ["Cloudflare.FallbackOrigin"] },
81
82
  );
82
83
 
83
84
  export const isFallbackOrigin = (value: unknown): value is FallbackOrigin =>
@@ -132,7 +132,9 @@ export type CustomNameserver = Resource<
132
132
  *
133
133
  * @see https://developers.cloudflare.com/dns/nameservers/custom-nameservers/account-custom-nameservers/
134
134
  */
135
- export const CustomNameserver = Resource<CustomNameserver>(TypeId);
135
+ export const CustomNameserver = Resource<CustomNameserver>(TypeId, {
136
+ aliases: ["Cloudflare.CustomNameserver"],
137
+ });
136
138
 
137
139
  /**
138
140
  * Returns true if the given value is a CustomNameserver resource.
@@ -6,7 +6,7 @@ import type { HttpClient } from "effect/unstable/http/HttpClient";
6
6
  import { 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 { listSqlFiles, readSqlFile } from "../../Sql/SqlFile.ts";
11
11
  import { recordsEqual } from "../../Util/equal.ts";
12
12
  import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
@@ -17,7 +17,7 @@ import { cloneDatabase } from "./CloneDatabase.ts";
17
17
  import { importD1Database } from "./ImportDatabase.ts";
18
18
 
19
19
  export const isDatabase = (value: unknown): value is Database =>
20
- typeof value === "object" && (value as any)?.Type === "Cloudflare.D1Database";
20
+ isResourceOfType(value, "Cloudflare.D1Database");
21
21
 
22
22
  export type Jurisdiction = "default" | "eu" | "fedramp";
23
23
  export type PrimaryLocationHint =
@@ -228,7 +228,9 @@ export type AccountDnsSettings = Resource<
228
228
  * });
229
229
  * ```
230
230
  */
231
- export const AccountDnsSettings = Resource<AccountDnsSettings>(TypeId);
231
+ export const AccountDnsSettings = Resource<AccountDnsSettings>(TypeId, {
232
+ aliases: ["Cloudflare.Dns.AccountSettings"],
233
+ });
232
234
 
233
235
  /**
234
236
  * Returns true if the given value is an AccountDnsSettings resource.
@@ -190,7 +190,9 @@ export type Dnssec = Resource<
190
190
  * });
191
191
  * ```
192
192
  */
193
- export const Dnssec = Resource<Dnssec>(TypeId);
193
+ export const Dnssec = Resource<Dnssec>(TypeId, {
194
+ aliases: ["Cloudflare.Dns.Dnssec"],
195
+ });
194
196
 
195
197
  /**
196
198
  * Returns true if the given value is a Dnssec resource.
@@ -238,7 +238,9 @@ export type Firewall = Resource<
238
238
  *
239
239
  * @see https://developers.cloudflare.com/dns/dns-firewall/
240
240
  */
241
- export const Firewall = Resource<Firewall>(TypeId);
241
+ export const Firewall = Resource<Firewall>(TypeId, {
242
+ aliases: ["Cloudflare.DnsFirewall"],
243
+ });
242
244
 
243
245
  /**
244
246
  * Returns true if the given value is a DnsFirewall resource.
@@ -163,7 +163,9 @@ export type Record = Resource<
163
163
  * });
164
164
  * ```
165
165
  */
166
- export const Record = Resource<Record>("Cloudflare.DNS.Record");
166
+ export const Record = Resource<Record>("Cloudflare.DNS.Record", {
167
+ aliases: ["Cloudflare.Dns.Record"],
168
+ });
167
169
 
168
170
  export const RecordProvider = () =>
169
171
  Provider.succeed(Record, {
@@ -83,7 +83,9 @@ export type View = Resource<
83
83
  *
84
84
  * @see https://developers.cloudflare.com/dns/internal-dns/
85
85
  */
86
- export const View = Resource<View>(DnsViewTypeId);
86
+ export const View = Resource<View>(DnsViewTypeId, {
87
+ aliases: ["Cloudflare.Dns.View"],
88
+ });
87
89
 
88
90
  /**
89
91
  * Returns true if the given value is a View resource.
@@ -252,7 +252,9 @@ export type ZoneDnsSettings = Resource<
252
252
  * });
253
253
  * ```
254
254
  */
255
- export const ZoneDnsSettings = Resource<ZoneDnsSettings>(TypeId);
255
+ export const ZoneDnsSettings = Resource<ZoneDnsSettings>(TypeId, {
256
+ aliases: ["Cloudflare.Dns.ZoneSettings"],
257
+ });
256
258
 
257
259
  /**
258
260
  * Returns true if the given value is a ZoneDnsSettings resource.
@@ -84,7 +84,9 @@ export type ZoneTransferAcl = Resource<
84
84
  *
85
85
  * @see https://developers.cloudflare.com/dns/zone-setups/zone-transfers/
86
86
  */
87
- export const ZoneTransferAcl = Resource<ZoneTransferAcl>(TypeId);
87
+ export const ZoneTransferAcl = Resource<ZoneTransferAcl>(TypeId, {
88
+ aliases: ["Cloudflare.Dns.ZoneTransferAcl"],
89
+ });
88
90
 
89
91
  /**
90
92
  * Returns true if the given value is a ZoneTransferAcl resource.
@@ -100,7 +100,9 @@ export type ZoneTransferIncoming = Resource<
100
100
  *
101
101
  * @see https://developers.cloudflare.com/dns/zone-setups/zone-transfers/setup/
102
102
  */
103
- export const ZoneTransferIncoming = Resource<ZoneTransferIncoming>(TypeId);
103
+ export const ZoneTransferIncoming = Resource<ZoneTransferIncoming>(TypeId, {
104
+ aliases: ["Cloudflare.Dns.ZoneTransferIncoming"],
105
+ });
104
106
 
105
107
  /**
106
108
  * Returns true if the given value is a ZoneTransferIncoming resource.
@@ -112,7 +112,9 @@ export type ZoneTransferOutgoing = Resource<
112
112
  *
113
113
  * @see https://developers.cloudflare.com/dns/zone-setups/zone-transfers/setup/
114
114
  */
115
- export const ZoneTransferOutgoing = Resource<ZoneTransferOutgoing>(TypeId);
115
+ export const ZoneTransferOutgoing = Resource<ZoneTransferOutgoing>(TypeId, {
116
+ aliases: ["Cloudflare.Dns.ZoneTransferOutgoing"],
117
+ });
116
118
 
117
119
  /**
118
120
  * Returns true if the given value is a ZoneTransferOutgoing resource.
@@ -119,7 +119,9 @@ export type ZoneTransferPeer = Resource<
119
119
  *
120
120
  * @see https://developers.cloudflare.com/dns/zone-setups/zone-transfers/
121
121
  */
122
- export const ZoneTransferPeer = Resource<ZoneTransferPeer>(TypeId);
122
+ export const ZoneTransferPeer = Resource<ZoneTransferPeer>(TypeId, {
123
+ aliases: ["Cloudflare.Dns.ZoneTransferPeer"],
124
+ });
123
125
 
124
126
  /**
125
127
  * Returns true if the given value is a ZoneTransferPeer resource.
@@ -91,7 +91,9 @@ export type ZoneTransferTsig = Resource<
91
91
  *
92
92
  * @see https://developers.cloudflare.com/dns/zone-setups/zone-transfers/
93
93
  */
94
- export const ZoneTransferTsig = Resource<ZoneTransferTsig>(TypeId);
94
+ export const ZoneTransferTsig = Resource<ZoneTransferTsig>(TypeId, {
95
+ aliases: ["Cloudflare.Dns.ZoneTransferTsig"],
96
+ });
95
97
 
96
98
  /**
97
99
  * Returns true if the given value is a ZoneTransferTsig resource.
@@ -55,7 +55,9 @@ export type Address = Resource<
55
55
  * Cloudflare sends a verification email when the address is first created.
56
56
  * The address must be verified before it can receive routed mail.
57
57
  */
58
- export const Address = Resource<Address>("Cloudflare.Email.Address");
58
+ export const Address = Resource<Address>("Cloudflare.Email.Address", {
59
+ aliases: ["Cloudflare.EmailAddress"],
60
+ });
59
61
 
60
62
  const toAttrs = (
61
63
  accountId: string,
@@ -144,6 +144,7 @@ export type AllowPolicy = Resource<
144
144
  */
145
145
  export const AllowPolicy = Resource<AllowPolicy>(
146
146
  EmailSecurityAllowPolicyTypeId,
147
+ { aliases: ["Cloudflare.EmailSecurity.AllowPolicy"] },
147
148
  );
148
149
 
149
150
  /**
@@ -104,6 +104,7 @@ export type BlockSender = Resource<
104
104
  */
105
105
  export const BlockSender = Resource<BlockSender>(
106
106
  EmailSecurityBlockSenderTypeId,
107
+ { aliases: ["Cloudflare.EmailSecurity.BlockSender"] },
107
108
  );
108
109
 
109
110
  /**
@@ -124,7 +124,9 @@ export type CatchAll = Resource<
124
124
  * });
125
125
  * ```
126
126
  */
127
- export const CatchAll = Resource<CatchAll>(CatchAllTypeId);
127
+ export const CatchAll = Resource<CatchAll>(CatchAllTypeId, {
128
+ aliases: ["Cloudflare.EmailCatchAll"],
129
+ });
128
130
 
129
131
  /**
130
132
  * Returns true if the given value is an CatchAll resource.
@@ -178,7 +180,10 @@ export const CatchAllProvider = () =>
178
180
 
179
181
  read: Effect.fn(function* ({ output, olds }) {
180
182
  const zoneId =
181
- output?.zoneId ?? (olds ? yield* resolve(olds.zone) : undefined);
183
+ // `olds.zone` may be `undefined` when a `creating` row was persisted
184
+ // before upstream Outputs resolved — report "not found" then.
185
+ output?.zoneId ??
186
+ (olds?.zone !== undefined ? yield* resolve(olds.zone) : undefined);
182
187
  if (!zoneId) return undefined;
183
188
  const observed = yield* emailRouting.getRuleCatchAll({ zoneId }).pipe(
184
189
  // Zone deleted out-of-band (or the token can no longer see it) —
@@ -170,7 +170,9 @@ export type Domain = Resource<
170
170
  *
171
171
  * @see https://developers.cloudflare.com/cloudflare-one/email-security/
172
172
  */
173
- export const Domain = Resource<Domain>(EmailSecurityDomainTypeId);
173
+ export const Domain = Resource<Domain>(EmailSecurityDomainTypeId, {
174
+ aliases: ["Cloudflare.EmailSecurity.Domain"],
175
+ });
174
176
 
175
177
  /**
176
178
  * Returns true if the given value is an Domain resource.
@@ -107,6 +107,7 @@ export type ImpersonationRegistryEntry = Resource<
107
107
  */
108
108
  export const ImpersonationRegistryEntry = Resource<ImpersonationRegistryEntry>(
109
109
  EmailSecurityImpersonationRegistryEntryTypeId,
110
+ { aliases: ["Cloudflare.EmailSecurity.ImpersonationRegistryEntry"] },
110
111
  );
111
112
 
112
113
  /**
@@ -71,7 +71,9 @@ export type Routing = Resource<
71
71
  * });
72
72
  * ```
73
73
  */
74
- export const Routing = Resource<Routing>("Cloudflare.Email.Routing");
74
+ export const Routing = Resource<Routing>("Cloudflare.Email.Routing", {
75
+ aliases: ["Cloudflare.EmailRouting"],
76
+ });
75
77
 
76
78
  const resolve = Effect.fn(function* (zone: Reference) {
77
79
  const { accountId } = yield* yield* CloudflareEnvironment;
@@ -84,7 +84,9 @@ export type Rule = Resource<
84
84
  * });
85
85
  * ```
86
86
  */
87
- export const Rule = Resource<Rule>("Cloudflare.Email.Rule");
87
+ export const Rule = Resource<Rule>("Cloudflare.Email.Rule", {
88
+ aliases: ["Cloudflare.EmailRule"],
89
+ });
88
90
 
89
91
  export const RuleProvider = () =>
90
92
  Provider.succeed(Rule, {
@@ -113,6 +113,7 @@ export type SendingSubdomain = Resource<
113
113
  */
114
114
  export const SendingSubdomain = Resource<SendingSubdomain>(
115
115
  SendingSubdomainTypeId,
116
+ { aliases: ["Cloudflare.EmailSendingSubdomain"] },
116
117
  );
117
118
 
118
119
  /**
@@ -106,6 +106,7 @@ export type TrustedDomain = Resource<
106
106
  */
107
107
  export const TrustedDomain = Resource<TrustedDomain>(
108
108
  EmailSecurityTrustedDomainTypeId,
109
+ { aliases: ["Cloudflare.EmailSecurity.TrustedDomain"] },
109
110
  );
110
111
 
111
112
  /**
@@ -70,11 +70,18 @@ export const fromCloudflareFetcher = (
70
70
  fetcher: cf.Fetcher | globalThis.Fetcher,
71
71
  ): Fetcher => {
72
72
  const fetch = (request: Request) =>
73
- Effect.promise((signal) =>
74
- (fetcher as globalThis.Fetcher).fetch(request, {
75
- signal: signal,
76
- }),
77
- ).pipe(
73
+ Effect.suspend(() => {
74
+ // Clone per attempt, keeping `request` pristine: the HandlerNotReady
75
+ // retry below re-runs this suspend, and replaying a Request whose body
76
+ // the failed attempt already consumed makes workerd reject with
77
+ // "TypeError: Cannot reconstruct a Request with a used body".
78
+ const attempt = request.clone() as Request;
79
+ return Effect.promise((signal) =>
80
+ (fetcher as globalThis.Fetcher).fetch(attempt, {
81
+ signal: signal,
82
+ }),
83
+ );
84
+ }).pipe(
78
85
  // The "Handler does not export a fetch()" window is a property of
79
86
  // invoking a freshly-deployed Cloudflare binding, so it is ridden out
80
87
  // HERE — the one adapter every binding flows through — rather than in any
@@ -1,10 +1,9 @@
1
1
  import * as flagship from "@distilled.cloud/cloudflare/flagship";
2
2
  import * as Effect from "effect/Effect";
3
- import * as Predicate from "effect/Predicate";
4
3
  import * as Stream from "effect/Stream";
5
4
  import { createPhysicalName } from "../../PhysicalName.ts";
6
5
  import * as Provider from "../../Provider.ts";
7
- import { Resource } from "../../Resource.ts";
6
+ import { isResourceOfType, Resource } from "../../Resource.ts";
8
7
  import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
9
8
  import type { Providers } from "../Providers.ts";
10
9
 
@@ -150,7 +149,7 @@ export const App = Resource<App>(TypeId);
150
149
  * Returns true if the given value is a Flagship App resource.
151
150
  */
152
151
  export const isApp = (value: unknown): value is App =>
153
- Predicate.hasProperty(value, "Type") && value.Type === TypeId;
152
+ isResourceOfType(value, TypeId);
154
153
 
155
154
  export const AppProvider = () =>
156
155
  Provider.succeed(App, {
@@ -157,7 +157,9 @@ export type DetectionSettings = Resource<
157
157
  *
158
158
  * @see https://developers.cloudflare.com/bots/additional-configurations/fraud-detection/
159
159
  */
160
- export const DetectionSettings = Resource<DetectionSettings>(TypeId);
160
+ export const DetectionSettings = Resource<DetectionSettings>(TypeId, {
161
+ aliases: ["Cloudflare.FraudDetectionSettings"],
162
+ });
161
163
 
162
164
  /**
163
165
  * Returns true if the given value is a DetectionSettings resource.
@@ -129,7 +129,9 @@ export type GoogleTagGateway = Resource<
129
129
  *
130
130
  * @see https://developers.cloudflare.com/google-tag-gateway/
131
131
  */
132
- export const GoogleTagGateway = Resource<GoogleTagGateway>(TypeId);
132
+ export const GoogleTagGateway = Resource<GoogleTagGateway>(TypeId, {
133
+ aliases: ["Cloudflare.GoogleTagGateway"],
134
+ });
133
135
 
134
136
  /**
135
137
  * Returns true if the given value is a GoogleTagGateway resource.
@@ -187,7 +189,10 @@ export const GoogleTagGatewayProvider = () =>
187
189
 
188
190
  read: Effect.fn(function* ({ output, olds }) {
189
191
  const zoneId =
190
- output?.zoneId ?? (olds ? yield* resolve(olds.zone) : undefined);
192
+ // `olds.zone` may be `undefined` when a `creating` row was persisted
193
+ // before upstream Outputs resolved — report "not found" then.
194
+ output?.zoneId ??
195
+ (olds?.zone !== undefined ? yield* resolve(olds.zone) : undefined);
191
196
  if (!zoneId) return undefined;
192
197
  const observed = yield* googleTagGateway.getConfig({ zoneId }).pipe(
193
198
  // Zone deleted out-of-band — the config is gone with it.
@@ -293,7 +293,9 @@ export type Healthcheck = Resource<TypeId, Props, Attributes, never, Providers>;
293
293
  *
294
294
  * @see https://developers.cloudflare.com/health-checks/
295
295
  */
296
- export const Healthcheck = Resource<Healthcheck>(TypeId);
296
+ export const Healthcheck = Resource<Healthcheck>(TypeId, {
297
+ aliases: ["Cloudflare.Healthcheck"],
298
+ });
297
299
 
298
300
  /**
299
301
  * Returns true if the given value is a Healthcheck resource.
@@ -150,7 +150,9 @@ export type HostnameTlsSetting = Resource<
150
150
  * @see https://developers.cloudflare.com/ssl/edge-certificates/additional-options/custom-metadata/
151
151
  * @see https://developers.cloudflare.com/api/resources/hostnames/subresources/settings/subresources/tls/
152
152
  */
153
- export const HostnameTlsSetting = Resource<HostnameTlsSetting>(TypeId);
153
+ export const HostnameTlsSetting = Resource<HostnameTlsSetting>(TypeId, {
154
+ aliases: ["Cloudflare.HostnameTlsSetting"],
155
+ });
154
156
 
155
157
  /**
156
158
  * Returns true if the given value is a HostnameTlsSetting resource.
@@ -1,6 +1,5 @@
1
1
  import * as hyperdrive from "@distilled.cloud/cloudflare/hyperdrive";
2
2
  import * as Effect from "effect/Effect";
3
- import * as Predicate from "effect/Predicate";
4
3
  import * as Redacted from "effect/Redacted";
5
4
  import * as Stream from "effect/Stream";
6
5
 
@@ -8,7 +7,7 @@ import { AlchemyContext } from "../../AlchemyContext.ts";
8
7
  import { isResolved } from "../../Diff.ts";
9
8
  import { createPhysicalName } from "../../PhysicalName.ts";
10
9
  import * as Provider from "../../Provider.ts";
11
- import { Resource } from "../../Resource.ts";
10
+ import { isResourceOfType, Resource } from "../../Resource.ts";
12
11
  import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
13
12
  import { generateLocalId, isLiveId } from "../LocalRuntime.ts";
14
13
  import type { Providers } from "../Providers.ts";
@@ -160,8 +159,7 @@ export type Connection = Resource<
160
159
  export const Connection = Resource<Connection>("Cloudflare.Hyperdrive");
161
160
 
162
161
  export const isHyperdriveConnection = (value: unknown): value is Connection =>
163
- Predicate.hasProperty(value, "Type") &&
164
- value.Type === "Cloudflare.Hyperdrive";
162
+ isResourceOfType(value, "Cloudflare.Hyperdrive");
165
163
 
166
164
  export const ConnectionProvider = () =>
167
165
  Provider.succeed(Connection, {