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.
- package/bin/cli.js +9 -1
- package/bin/exec.js +15 -5
- package/bin/exec.js.map +1 -1
- package/lib/AWS/ACM/Certificate.d.ts.map +1 -1
- package/lib/AWS/ACM/Certificate.js +9 -2
- package/lib/AWS/ACM/Certificate.js.map +1 -1
- package/lib/AWS/AutoScaling/AutoScalingGroup.d.ts.map +1 -1
- package/lib/AWS/AutoScaling/AutoScalingGroup.js +18 -11
- package/lib/AWS/AutoScaling/AutoScalingGroup.js.map +1 -1
- package/lib/AWS/AutoScaling/LaunchTemplate.js +6 -1
- package/lib/AWS/AutoScaling/LaunchTemplate.js.map +1 -1
- package/lib/AWS/AutoScaling/ScalingPolicy.d.ts.map +1 -1
- package/lib/AWS/AutoScaling/ScalingPolicy.js +28 -10
- package/lib/AWS/AutoScaling/ScalingPolicy.js.map +1 -1
- package/lib/AWS/CloudFront/PublicKey.d.ts.map +1 -1
- package/lib/AWS/CloudFront/PublicKey.js +5 -1
- package/lib/AWS/CloudFront/PublicKey.js.map +1 -1
- package/lib/AWS/DynamoDB/Table.js +1 -1
- package/lib/AWS/DynamoDB/Table.js.map +1 -1
- package/lib/AWS/ECS/Service.d.ts.map +1 -1
- package/lib/AWS/ECS/Service.js +29 -4
- package/lib/AWS/ECS/Service.js.map +1 -1
- package/lib/AWS/IAM/OpenIDConnectProvider.d.ts.map +1 -1
- package/lib/AWS/IAM/OpenIDConnectProvider.js +9 -1
- package/lib/AWS/IAM/OpenIDConnectProvider.js.map +1 -1
- package/lib/AWS/Lambda/Alias.d.ts +26 -0
- package/lib/AWS/Lambda/Alias.d.ts.map +1 -1
- package/lib/AWS/Lambda/Alias.js +31 -0
- package/lib/AWS/Lambda/Alias.js.map +1 -1
- package/lib/AWS/Lambda/EventInvokeConfig.d.ts +36 -0
- package/lib/AWS/Lambda/EventInvokeConfig.d.ts.map +1 -0
- package/lib/AWS/Lambda/EventInvokeConfig.js +76 -0
- package/lib/AWS/Lambda/EventInvokeConfig.js.map +1 -0
- package/lib/AWS/Lambda/Function.d.ts +27 -2
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +23 -2
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Lambda/index.d.ts +1 -0
- package/lib/AWS/Lambda/index.d.ts.map +1 -1
- package/lib/AWS/Lambda/index.js +1 -0
- package/lib/AWS/Lambda/index.js.map +1 -1
- package/lib/AWS/Organizations/DelegatedAdministrator.d.ts.map +1 -1
- package/lib/AWS/Organizations/DelegatedAdministrator.js +10 -2
- package/lib/AWS/Organizations/DelegatedAdministrator.js.map +1 -1
- package/lib/AWS/Organizations/PolicyAttachment.d.ts.map +1 -1
- package/lib/AWS/Organizations/PolicyAttachment.js +10 -4
- package/lib/AWS/Organizations/PolicyAttachment.js.map +1 -1
- package/lib/AWS/Organizations/RootPolicyType.d.ts.map +1 -1
- package/lib/AWS/Organizations/RootPolicyType.js +9 -4
- package/lib/AWS/Organizations/RootPolicyType.js.map +1 -1
- package/lib/AWS/Organizations/TrustedServiceAccess.d.ts.map +1 -1
- package/lib/AWS/Organizations/TrustedServiceAccess.js +8 -1
- package/lib/AWS/Organizations/TrustedServiceAccess.js.map +1 -1
- package/lib/AWS/Route53/HostedZone.d.ts.map +1 -1
- package/lib/AWS/Route53/HostedZone.js +20 -4
- package/lib/AWS/Route53/HostedZone.js.map +1 -1
- package/lib/AWS/Route53/Record.d.ts.map +1 -1
- package/lib/AWS/Route53/Record.js +32 -9
- package/lib/AWS/Route53/Record.js.map +1 -1
- package/lib/Apply.js +7 -1
- package/lib/Apply.js.map +1 -1
- package/lib/Auth/Lock.d.ts +17 -0
- package/lib/Auth/Lock.d.ts.map +1 -1
- package/lib/Auth/Lock.js +53 -18
- package/lib/Auth/Lock.js.map +1 -1
- package/lib/Bundle/PurePlugin.d.ts.map +1 -1
- package/lib/Bundle/PurePlugin.js +15 -2
- package/lib/Bundle/PurePlugin.js.map +1 -1
- package/lib/Cli/commands/sync.d.ts +22 -0
- package/lib/Cli/commands/sync.d.ts.map +1 -0
- package/lib/Cli/commands/sync.js +64 -0
- package/lib/Cli/commands/sync.js.map +1 -0
- package/lib/Cli/main.d.ts.map +1 -1
- package/lib/Cli/main.js +2 -0
- package/lib/Cli/main.js.map +1 -1
- package/lib/Cloudflare/AI/CustomTopics.d.ts.map +1 -1
- package/lib/Cloudflare/AI/CustomTopics.js +3 -1
- package/lib/Cloudflare/AI/CustomTopics.js.map +1 -1
- package/lib/Cloudflare/AI/Dataset.d.ts.map +1 -1
- package/lib/Cloudflare/AI/Dataset.js +3 -1
- package/lib/Cloudflare/AI/Dataset.js.map +1 -1
- package/lib/Cloudflare/AI/Evaluation.d.ts.map +1 -1
- package/lib/Cloudflare/AI/Evaluation.js +3 -1
- package/lib/Cloudflare/AI/Evaluation.js.map +1 -1
- package/lib/Cloudflare/AI/Gateway.d.ts.map +1 -1
- package/lib/Cloudflare/AI/Gateway.js +5 -6
- package/lib/Cloudflare/AI/Gateway.js.map +1 -1
- package/lib/Cloudflare/AI/GatewayDynamicRouting.d.ts.map +1 -1
- package/lib/Cloudflare/AI/GatewayDynamicRouting.js +3 -1
- package/lib/Cloudflare/AI/GatewayDynamicRouting.js.map +1 -1
- package/lib/Cloudflare/AI/GatewayProvider.d.ts +2 -1
- package/lib/Cloudflare/AI/GatewayProvider.d.ts.map +1 -1
- package/lib/Cloudflare/AI/GatewayProvider.js +5 -2
- package/lib/Cloudflare/AI/GatewayProvider.js.map +1 -1
- package/lib/Cloudflare/AI/ProviderKey.d.ts +135 -0
- package/lib/Cloudflare/AI/ProviderKey.d.ts.map +1 -0
- package/lib/Cloudflare/AI/ProviderKey.js +90 -0
- package/lib/Cloudflare/AI/ProviderKey.js.map +1 -0
- package/lib/Cloudflare/AI/SearchInstance.d.ts.map +1 -1
- package/lib/Cloudflare/AI/SearchInstance.js +5 -4
- package/lib/Cloudflare/AI/SearchInstance.js.map +1 -1
- package/lib/Cloudflare/AI/SearchNamespace.d.ts.map +1 -1
- package/lib/Cloudflare/AI/SearchNamespace.js +5 -4
- package/lib/Cloudflare/AI/SearchNamespace.js.map +1 -1
- package/lib/Cloudflare/AI/SearchToken.d.ts.map +1 -1
- package/lib/Cloudflare/AI/SearchToken.js +3 -1
- package/lib/Cloudflare/AI/SearchToken.js.map +1 -1
- package/lib/Cloudflare/AI/SecuritySettings.d.ts.map +1 -1
- package/lib/Cloudflare/AI/SecuritySettings.js +3 -1
- package/lib/Cloudflare/AI/SecuritySettings.js.map +1 -1
- package/lib/Cloudflare/AI/index.d.ts +1 -0
- package/lib/Cloudflare/AI/index.d.ts.map +1 -1
- package/lib/Cloudflare/AI/index.js +1 -0
- package/lib/Cloudflare/AI/index.js.map +1 -1
- package/lib/Cloudflare/Access/InfrastructureTarget.d.ts.map +1 -1
- package/lib/Cloudflare/Access/InfrastructureTarget.js +3 -1
- package/lib/Cloudflare/Access/InfrastructureTarget.js.map +1 -1
- package/lib/Cloudflare/Access/Organization.d.ts.map +1 -1
- package/lib/Cloudflare/Access/Organization.js +1 -1
- package/lib/Cloudflare/Access/Organization.js.map +1 -1
- package/lib/Cloudflare/Access/Policy.d.ts.map +1 -1
- package/lib/Cloudflare/Access/Policy.js +3 -1
- package/lib/Cloudflare/Access/Policy.js.map +1 -1
- package/lib/Cloudflare/Account/Account.d.ts.map +1 -1
- package/lib/Cloudflare/Account/Account.js +3 -1
- package/lib/Cloudflare/Account/Account.js.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.js +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.js +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.js.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.d.ts +3 -0
- package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js +51 -14
- package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
- package/lib/Cloudflare/BotManagement/BotManagement.d.ts.map +1 -1
- package/lib/Cloudflare/BotManagement/BotManagement.js +3 -1
- package/lib/Cloudflare/BotManagement/BotManagement.js.map +1 -1
- package/lib/Cloudflare/Cache/Reserve.d.ts.map +1 -1
- package/lib/Cloudflare/Cache/Reserve.js +3 -1
- package/lib/Cloudflare/Cache/Reserve.js.map +1 -1
- package/lib/Cloudflare/ClientCertificate/ClientCertificate.d.ts.map +1 -1
- package/lib/Cloudflare/ClientCertificate/ClientCertificate.js +3 -1
- package/lib/Cloudflare/ClientCertificate/ClientCertificate.js.map +1 -1
- package/lib/Cloudflare/Containers/Container.d.ts +2 -2
- package/lib/Cloudflare/Containers/Container.js +2 -2
- package/lib/Cloudflare/ContentScanning/ContentScanning.d.ts.map +1 -1
- package/lib/Cloudflare/ContentScanning/ContentScanning.js +3 -1
- package/lib/Cloudflare/ContentScanning/ContentScanning.js.map +1 -1
- package/lib/Cloudflare/CustomCertificate/CustomCertificate.d.ts.map +1 -1
- package/lib/Cloudflare/CustomCertificate/CustomCertificate.js +3 -1
- package/lib/Cloudflare/CustomCertificate/CustomCertificate.js.map +1 -1
- package/lib/Cloudflare/CustomHostname/CustomHostname.d.ts.map +1 -1
- package/lib/Cloudflare/CustomHostname/CustomHostname.js +1 -1
- package/lib/Cloudflare/CustomHostname/CustomHostname.js.map +1 -1
- package/lib/Cloudflare/CustomHostname/FallbackOrigin.d.ts.map +1 -1
- package/lib/Cloudflare/CustomHostname/FallbackOrigin.js +1 -1
- package/lib/Cloudflare/CustomHostname/FallbackOrigin.js.map +1 -1
- package/lib/Cloudflare/CustomNameserver/CustomNameserver.d.ts.map +1 -1
- package/lib/Cloudflare/CustomNameserver/CustomNameserver.js +3 -1
- package/lib/Cloudflare/CustomNameserver/CustomNameserver.js.map +1 -1
- package/lib/Cloudflare/D1/Database.d.ts.map +1 -1
- package/lib/Cloudflare/D1/Database.js +2 -2
- package/lib/Cloudflare/D1/Database.js.map +1 -1
- package/lib/Cloudflare/DNS/AccountSettings.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/AccountSettings.js +3 -1
- package/lib/Cloudflare/DNS/AccountSettings.js.map +1 -1
- package/lib/Cloudflare/DNS/Dnssec.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/Dnssec.js +3 -1
- package/lib/Cloudflare/DNS/Dnssec.js.map +1 -1
- package/lib/Cloudflare/DNS/Firewall.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/Firewall.js +3 -1
- package/lib/Cloudflare/DNS/Firewall.js.map +1 -1
- package/lib/Cloudflare/DNS/Record.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/Record.js +3 -1
- package/lib/Cloudflare/DNS/Record.js.map +1 -1
- package/lib/Cloudflare/DNS/View.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/View.js +3 -1
- package/lib/Cloudflare/DNS/View.js.map +1 -1
- package/lib/Cloudflare/DNS/ZoneSettings.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/ZoneSettings.js +3 -1
- package/lib/Cloudflare/DNS/ZoneSettings.js.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferAcl.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferAcl.js +3 -1
- package/lib/Cloudflare/DNS/ZoneTransferAcl.js.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferIncoming.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferIncoming.js +3 -1
- package/lib/Cloudflare/DNS/ZoneTransferIncoming.js.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferOutgoing.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferOutgoing.js +3 -1
- package/lib/Cloudflare/DNS/ZoneTransferOutgoing.js.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferPeer.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferPeer.js +3 -1
- package/lib/Cloudflare/DNS/ZoneTransferPeer.js.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferTsig.d.ts.map +1 -1
- package/lib/Cloudflare/DNS/ZoneTransferTsig.js +3 -1
- package/lib/Cloudflare/DNS/ZoneTransferTsig.js.map +1 -1
- package/lib/Cloudflare/Email/Address.d.ts.map +1 -1
- package/lib/Cloudflare/Email/Address.js +3 -1
- package/lib/Cloudflare/Email/Address.js.map +1 -1
- package/lib/Cloudflare/Email/AllowPolicy.d.ts.map +1 -1
- package/lib/Cloudflare/Email/AllowPolicy.js +1 -1
- package/lib/Cloudflare/Email/AllowPolicy.js.map +1 -1
- package/lib/Cloudflare/Email/BlockSender.d.ts.map +1 -1
- package/lib/Cloudflare/Email/BlockSender.js +1 -1
- package/lib/Cloudflare/Email/BlockSender.js.map +1 -1
- package/lib/Cloudflare/Email/CatchAll.d.ts.map +1 -1
- package/lib/Cloudflare/Email/CatchAll.js +8 -2
- package/lib/Cloudflare/Email/CatchAll.js.map +1 -1
- package/lib/Cloudflare/Email/Domain.d.ts.map +1 -1
- package/lib/Cloudflare/Email/Domain.js +3 -1
- package/lib/Cloudflare/Email/Domain.js.map +1 -1
- package/lib/Cloudflare/Email/ImpersonationRegistryEntry.d.ts.map +1 -1
- package/lib/Cloudflare/Email/ImpersonationRegistryEntry.js +1 -1
- package/lib/Cloudflare/Email/ImpersonationRegistryEntry.js.map +1 -1
- package/lib/Cloudflare/Email/Routing.d.ts.map +1 -1
- package/lib/Cloudflare/Email/Routing.js +3 -1
- package/lib/Cloudflare/Email/Routing.js.map +1 -1
- package/lib/Cloudflare/Email/Rule.d.ts.map +1 -1
- package/lib/Cloudflare/Email/Rule.js +3 -1
- package/lib/Cloudflare/Email/Rule.js.map +1 -1
- package/lib/Cloudflare/Email/SendingSubdomain.d.ts.map +1 -1
- package/lib/Cloudflare/Email/SendingSubdomain.js +1 -1
- package/lib/Cloudflare/Email/SendingSubdomain.js.map +1 -1
- package/lib/Cloudflare/Email/TrustedDomain.d.ts.map +1 -1
- package/lib/Cloudflare/Email/TrustedDomain.js +1 -1
- package/lib/Cloudflare/Email/TrustedDomain.js.map +1 -1
- package/lib/Cloudflare/Fetcher.d.ts.map +1 -1
- package/lib/Cloudflare/Fetcher.js +10 -3
- package/lib/Cloudflare/Fetcher.js.map +1 -1
- package/lib/Cloudflare/Flagship/App.d.ts.map +1 -1
- package/lib/Cloudflare/Flagship/App.js +2 -3
- package/lib/Cloudflare/Flagship/App.js.map +1 -1
- package/lib/Cloudflare/Fraud/DetectionSettings.d.ts.map +1 -1
- package/lib/Cloudflare/Fraud/DetectionSettings.js +3 -1
- package/lib/Cloudflare/Fraud/DetectionSettings.js.map +1 -1
- package/lib/Cloudflare/GoogleTagGateway/GoogleTagGateway.d.ts.map +1 -1
- package/lib/Cloudflare/GoogleTagGateway/GoogleTagGateway.js +8 -2
- package/lib/Cloudflare/GoogleTagGateway/GoogleTagGateway.js.map +1 -1
- package/lib/Cloudflare/Healthcheck/Healthcheck.d.ts.map +1 -1
- package/lib/Cloudflare/Healthcheck/Healthcheck.js +3 -1
- package/lib/Cloudflare/Healthcheck/Healthcheck.js.map +1 -1
- package/lib/Cloudflare/HostnameTlsSetting/HostnameTlsSetting.d.ts.map +1 -1
- package/lib/Cloudflare/HostnameTlsSetting/HostnameTlsSetting.js +3 -1
- package/lib/Cloudflare/HostnameTlsSetting/HostnameTlsSetting.js.map +1 -1
- package/lib/Cloudflare/Hyperdrive/Connection.d.ts.map +1 -1
- package/lib/Cloudflare/Hyperdrive/Connection.js +2 -4
- package/lib/Cloudflare/Hyperdrive/Connection.js.map +1 -1
- package/lib/Cloudflare/KV/Namespace.d.ts.map +1 -1
- package/lib/Cloudflare/KV/Namespace.js +5 -4
- package/lib/Cloudflare/KV/Namespace.js.map +1 -1
- package/lib/Cloudflare/KeylessCertificate/KeylessCertificate.d.ts.map +1 -1
- package/lib/Cloudflare/KeylessCertificate/KeylessCertificate.js +3 -1
- package/lib/Cloudflare/KeylessCertificate/KeylessCertificate.js.map +1 -1
- package/lib/Cloudflare/LeakedCredentialCheck/LeakedCredentialCheck.d.ts.map +1 -1
- package/lib/Cloudflare/LeakedCredentialCheck/LeakedCredentialCheck.js +3 -1
- package/lib/Cloudflare/LeakedCredentialCheck/LeakedCredentialCheck.js.map +1 -1
- package/lib/Cloudflare/LoadBalancer/LoadBalancer.d.ts.map +1 -1
- package/lib/Cloudflare/LoadBalancer/LoadBalancer.js +3 -1
- package/lib/Cloudflare/LoadBalancer/LoadBalancer.js.map +1 -1
- package/lib/Cloudflare/ManagedTransforms/ManagedTransforms.d.ts.map +1 -1
- package/lib/Cloudflare/ManagedTransforms/ManagedTransforms.js +3 -1
- package/lib/Cloudflare/ManagedTransforms/ManagedTransforms.js.map +1 -1
- package/lib/Cloudflare/MtlsCertificate/MtlsCertificate.d.ts.map +1 -1
- package/lib/Cloudflare/MtlsCertificate/MtlsCertificate.js +3 -1
- package/lib/Cloudflare/MtlsCertificate/MtlsCertificate.js.map +1 -1
- package/lib/Cloudflare/Organization/Organization.d.ts.map +1 -1
- package/lib/Cloudflare/Organization/Organization.js +3 -1
- package/lib/Cloudflare/Organization/Organization.js.map +1 -1
- package/lib/Cloudflare/OriginCaCertificate/OriginCaCertificate.d.ts.map +1 -1
- package/lib/Cloudflare/OriginCaCertificate/OriginCaCertificate.js +7 -2
- package/lib/Cloudflare/OriginCaCertificate/OriginCaCertificate.js.map +1 -1
- package/lib/Cloudflare/OriginPostQuantumEncryption/OriginPostQuantumEncryption.d.ts.map +1 -1
- package/lib/Cloudflare/OriginPostQuantumEncryption/OriginPostQuantumEncryption.js +3 -1
- package/lib/Cloudflare/OriginPostQuantumEncryption/OriginPostQuantumEncryption.js.map +1 -1
- package/lib/Cloudflare/OriginTlsClientAuth/HostnameCertificate.d.ts.map +1 -1
- package/lib/Cloudflare/OriginTlsClientAuth/HostnameCertificate.js +5 -1
- package/lib/Cloudflare/OriginTlsClientAuth/HostnameCertificate.js.map +1 -1
- package/lib/Cloudflare/PageRule/PageRule.d.ts.map +1 -1
- package/lib/Cloudflare/PageRule/PageRule.js +3 -1
- package/lib/Cloudflare/PageRule/PageRule.js.map +1 -1
- package/lib/Cloudflare/Providers.d.ts +29 -0
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +30 -19
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/Consumer.js +3 -1
- package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
- package/lib/Cloudflare/Queues/Queue.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/Queue.js +5 -4
- package/lib/Cloudflare/Queues/Queue.js.map +1 -1
- package/lib/Cloudflare/Queues/Subscription.d.ts.map +1 -1
- package/lib/Cloudflare/Queues/Subscription.js +3 -1
- package/lib/Cloudflare/Queues/Subscription.js.map +1 -1
- package/lib/Cloudflare/R2/Bucket.d.ts +98 -0
- package/lib/Cloudflare/R2/Bucket.d.ts.map +1 -1
- package/lib/Cloudflare/R2/Bucket.js +141 -3
- package/lib/Cloudflare/R2/Bucket.js.map +1 -1
- package/lib/Cloudflare/RegionalHostname/RegionalHostname.d.ts.map +1 -1
- package/lib/Cloudflare/RegionalHostname/RegionalHostname.js +3 -1
- package/lib/Cloudflare/RegionalHostname/RegionalHostname.js.map +1 -1
- package/lib/Cloudflare/Ruleset/Ruleset.d.ts.map +1 -1
- package/lib/Cloudflare/Ruleset/Ruleset.js +8 -3
- package/lib/Cloudflare/Ruleset/Ruleset.js.map +1 -1
- package/lib/Cloudflare/SecretsStore/Secret.d.ts.map +1 -1
- package/lib/Cloudflare/SecretsStore/Secret.js +31 -5
- package/lib/Cloudflare/SecretsStore/Secret.js.map +1 -1
- package/lib/Cloudflare/SecurityTxt/SecurityTxt.d.ts.map +1 -1
- package/lib/Cloudflare/SecurityTxt/SecurityTxt.js +3 -1
- package/lib/Cloudflare/SecurityTxt/SecurityTxt.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +15 -0
- package/lib/Cloudflare/StateStore/State.d.ts +30 -1
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/State.js +85 -16
- package/lib/Cloudflare/StateStore/State.js.map +1 -1
- package/lib/Cloudflare/Tags/AccountResourceTags.d.ts.map +1 -1
- package/lib/Cloudflare/Tags/AccountResourceTags.js +8 -3
- package/lib/Cloudflare/Tags/AccountResourceTags.js.map +1 -1
- package/lib/Cloudflare/Tunnel/Route.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/Route.js +3 -1
- package/lib/Cloudflare/Tunnel/Route.js.map +1 -1
- package/lib/Cloudflare/Tunnel/Tunnel.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/Tunnel.js +3 -1
- package/lib/Cloudflare/Tunnel/Tunnel.js.map +1 -1
- package/lib/Cloudflare/UrlNormalization/UrlNormalization.d.ts.map +1 -1
- package/lib/Cloudflare/UrlNormalization/UrlNormalization.js +3 -1
- package/lib/Cloudflare/UrlNormalization/UrlNormalization.js.map +1 -1
- package/lib/Cloudflare/Vectorize/VectorizeIndex.d.ts.map +1 -1
- package/lib/Cloudflare/Vectorize/VectorizeIndex.js +2 -3
- package/lib/Cloudflare/Vectorize/VectorizeIndex.js.map +1 -1
- package/lib/Cloudflare/VpcService/VpcService.d.ts.map +1 -1
- package/lib/Cloudflare/VpcService/VpcService.js +1 -1
- package/lib/Cloudflare/VpcService/VpcService.js.map +1 -1
- package/lib/Cloudflare/WaitingRoom/WaitingRoom.d.ts.map +1 -1
- package/lib/Cloudflare/WaitingRoom/WaitingRoom.js +3 -1
- package/lib/Cloudflare/WaitingRoom/WaitingRoom.js.map +1 -1
- package/lib/Cloudflare/Web3/ContentList.d.ts.map +1 -1
- package/lib/Cloudflare/Web3/ContentList.js +3 -1
- package/lib/Cloudflare/Web3/ContentList.js.map +1 -1
- package/lib/Cloudflare/Web3/Hostname.d.ts.map +1 -1
- package/lib/Cloudflare/Web3/Hostname.js +3 -1
- package/lib/Cloudflare/Web3/Hostname.js.map +1 -1
- package/lib/Cloudflare/Workers/Cache.d.ts +71 -0
- package/lib/Cloudflare/Workers/Cache.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/Cache.js +64 -0
- package/lib/Cloudflare/Workers/Cache.js.map +1 -0
- package/lib/Cloudflare/Workers/CronEventSource.d.ts +180 -6
- package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/CronEventSource.js +180 -6
- package/lib/Cloudflare/Workers/CronEventSource.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.d.ts +36 -1
- package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.js +36 -1
- package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectState.d.ts +11 -0
- package/lib/Cloudflare/Workers/DurableObjectState.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectState.js +7 -0
- package/lib/Cloudflare/Workers/DurableObjectState.js.map +1 -1
- package/lib/Cloudflare/Workers/Fetch.js +2 -2
- package/lib/Cloudflare/Workers/Fetch.js.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +3 -0
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +230 -4
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +161 -7
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +9 -0
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +15 -0
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +30 -0
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBridge.js +27 -5
- package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerLoader.js +9 -1
- package/lib/Cloudflare/Workers/WorkerLoader.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.js +365 -18
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +20 -3
- package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
- package/lib/Cloudflare/Workers/index.d.ts +1 -0
- package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/index.js +1 -0
- package/lib/Cloudflare/Workers/index.js.map +1 -1
- package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.d.ts.map +1 -1
- package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.js +2 -3
- package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.js.map +1 -1
- package/lib/Cloudflare/Workflows/Workflow.d.ts +200 -24
- package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/Workflow.js +126 -28
- package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.js +42 -3
- package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
- package/lib/Cloudflare/Zaraz/Config.d.ts +1 -0
- package/lib/Cloudflare/Zaraz/Config.d.ts.map +1 -1
- package/lib/Cloudflare/Zaraz/Config.js +8 -2
- package/lib/Cloudflare/Zaraz/Config.js.map +1 -1
- package/lib/Cloudflare/Zone/Zone.d.ts.map +1 -1
- package/lib/Cloudflare/Zone/Zone.js +1 -0
- package/lib/Cloudflare/Zone/Zone.js.map +1 -1
- package/lib/Docker/Container.d.ts.map +1 -1
- package/lib/Docker/Container.js +11 -1
- package/lib/Docker/Container.js.map +1 -1
- package/lib/Drizzle/Schema.d.ts.map +1 -1
- package/lib/Drizzle/Schema.js +12 -5
- package/lib/Drizzle/Schema.js.map +1 -1
- package/lib/Neon/Branch.d.ts.map +1 -1
- package/lib/Neon/Branch.js +15 -3
- package/lib/Neon/Branch.js.map +1 -1
- package/lib/Output.d.ts +13 -1
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js +17 -3
- package/lib/Output.js.map +1 -1
- package/lib/Planetscale/Postgres/PostgresRole.js +2 -2
- package/lib/Planetscale/Postgres/PostgresRole.js.map +1 -1
- package/lib/Provider.d.ts +8 -0
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js +38 -3
- package/lib/Provider.js.map +1 -1
- package/lib/Ref.d.ts +9 -1
- package/lib/Ref.d.ts.map +1 -1
- package/lib/Ref.js +2 -1
- package/lib/Ref.js.map +1 -1
- package/lib/Resource.d.ts +44 -0
- package/lib/Resource.d.ts.map +1 -1
- package/lib/Resource.js +22 -1
- package/lib/Resource.js.map +1 -1
- package/lib/Stack.js +1 -1
- package/lib/Stack.js.map +1 -1
- package/lib/State/HttpStateApi.d.ts +4 -4
- package/lib/State/HttpStateStore.d.ts +12 -0
- package/lib/State/HttpStateStore.d.ts.map +1 -1
- package/lib/State/HttpStateStore.js +46 -5
- package/lib/State/HttpStateStore.js.map +1 -1
- package/lib/Sync.d.ts +109 -0
- package/lib/Sync.d.ts.map +1 -0
- package/lib/Sync.js +312 -0
- package/lib/Sync.js.map +1 -0
- package/lib/Test/Bun.d.ts +1 -1
- package/lib/Test/Bun.d.ts.map +1 -1
- package/lib/Test/Bun.js +1 -1
- package/lib/Test/Bun.js.map +1 -1
- package/lib/Test/Http.d.ts +67 -0
- package/lib/Test/Http.d.ts.map +1 -1
- package/lib/Test/Http.js +69 -0
- package/lib/Test/Http.js.map +1 -1
- package/lib/Test/Vitest.d.ts +1 -1
- package/lib/Test/Vitest.d.ts.map +1 -1
- package/lib/Test/Vitest.js +1 -0
- package/lib/Test/Vitest.js.map +1 -1
- package/lib/Util/proxy-chain.js +14 -15
- package/lib/Util/proxy-chain.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/package.json +19 -19
- package/src/AWS/ACM/Certificate.ts +13 -2
- package/src/AWS/AutoScaling/AutoScalingGroup.ts +21 -15
- package/src/AWS/AutoScaling/LaunchTemplate.ts +6 -1
- package/src/AWS/AutoScaling/ScalingPolicy.ts +31 -17
- package/src/AWS/CloudFront/PublicKey.ts +4 -0
- package/src/AWS/DynamoDB/Table.ts +1 -1
- package/src/AWS/ECS/Service.ts +35 -6
- package/src/AWS/IAM/OpenIDConnectProvider.ts +9 -1
- package/src/AWS/Lambda/Alias.ts +42 -0
- package/src/AWS/Lambda/EventInvokeConfig.ts +150 -0
- package/src/AWS/Lambda/Function.ts +35 -2
- package/src/AWS/Lambda/index.ts +1 -0
- package/src/AWS/Organizations/DelegatedAdministrator.ts +11 -3
- package/src/AWS/Organizations/PolicyAttachment.ts +10 -4
- package/src/AWS/Organizations/RootPolicyType.ts +9 -4
- package/src/AWS/Organizations/TrustedServiceAccess.ts +9 -3
- package/src/AWS/Route53/HostedZone.ts +30 -13
- package/src/AWS/Route53/Record.ts +44 -22
- package/src/Apply.ts +7 -1
- package/src/Auth/Lock.ts +62 -18
- package/src/Bundle/PurePlugin.ts +15 -2
- package/src/Cli/commands/sync.ts +123 -0
- package/src/Cli/main.ts +2 -0
- package/src/Cloudflare/AI/CustomTopics.ts +3 -1
- package/src/Cloudflare/AI/Dataset.ts +3 -1
- package/src/Cloudflare/AI/Evaluation.ts +3 -1
- package/src/Cloudflare/AI/Gateway.ts +5 -6
- package/src/Cloudflare/AI/GatewayDynamicRouting.ts +3 -1
- package/src/Cloudflare/AI/GatewayProvider.ts +5 -2
- package/src/Cloudflare/AI/ProviderKey.ts +161 -0
- package/src/Cloudflare/AI/SearchInstance.ts +5 -4
- package/src/Cloudflare/AI/SearchNamespace.ts +5 -4
- package/src/Cloudflare/AI/SearchToken.ts +3 -1
- package/src/Cloudflare/AI/SecuritySettings.ts +3 -0
- package/src/Cloudflare/AI/index.ts +1 -0
- package/src/Cloudflare/Access/InfrastructureTarget.ts +4 -1
- package/src/Cloudflare/Access/Organization.ts +1 -0
- package/src/Cloudflare/Access/Policy.ts +3 -1
- package/src/Cloudflare/Account/Account.ts +3 -1
- package/src/Cloudflare/ApiToken/AccountApiToken.ts +1 -0
- package/src/Cloudflare/ApiToken/UserApiToken.ts +1 -0
- package/src/Cloudflare/Auth/AuthProvider.ts +69 -8
- package/src/Cloudflare/BotManagement/BotManagement.ts +3 -1
- package/src/Cloudflare/Cache/Reserve.ts +3 -1
- package/src/Cloudflare/ClientCertificate/ClientCertificate.ts +3 -1
- package/src/Cloudflare/Containers/Container.ts +2 -2
- package/src/Cloudflare/ContentScanning/ContentScanning.ts +3 -1
- package/src/Cloudflare/CustomCertificate/CustomCertificate.ts +3 -1
- package/src/Cloudflare/CustomHostname/CustomHostname.ts +1 -0
- package/src/Cloudflare/CustomHostname/FallbackOrigin.ts +1 -0
- package/src/Cloudflare/CustomNameserver/CustomNameserver.ts +3 -1
- package/src/Cloudflare/D1/Database.ts +2 -2
- package/src/Cloudflare/DNS/AccountSettings.ts +3 -1
- package/src/Cloudflare/DNS/Dnssec.ts +3 -1
- package/src/Cloudflare/DNS/Firewall.ts +3 -1
- package/src/Cloudflare/DNS/Record.ts +3 -1
- package/src/Cloudflare/DNS/View.ts +3 -1
- package/src/Cloudflare/DNS/ZoneSettings.ts +3 -1
- package/src/Cloudflare/DNS/ZoneTransferAcl.ts +3 -1
- package/src/Cloudflare/DNS/ZoneTransferIncoming.ts +3 -1
- package/src/Cloudflare/DNS/ZoneTransferOutgoing.ts +3 -1
- package/src/Cloudflare/DNS/ZoneTransferPeer.ts +3 -1
- package/src/Cloudflare/DNS/ZoneTransferTsig.ts +3 -1
- package/src/Cloudflare/Email/Address.ts +3 -1
- package/src/Cloudflare/Email/AllowPolicy.ts +1 -0
- package/src/Cloudflare/Email/BlockSender.ts +1 -0
- package/src/Cloudflare/Email/CatchAll.ts +7 -2
- package/src/Cloudflare/Email/Domain.ts +3 -1
- package/src/Cloudflare/Email/ImpersonationRegistryEntry.ts +1 -0
- package/src/Cloudflare/Email/Routing.ts +3 -1
- package/src/Cloudflare/Email/Rule.ts +3 -1
- package/src/Cloudflare/Email/SendingSubdomain.ts +1 -0
- package/src/Cloudflare/Email/TrustedDomain.ts +1 -0
- package/src/Cloudflare/Fetcher.ts +12 -5
- package/src/Cloudflare/Flagship/App.ts +2 -3
- package/src/Cloudflare/Fraud/DetectionSettings.ts +3 -1
- package/src/Cloudflare/GoogleTagGateway/GoogleTagGateway.ts +7 -2
- package/src/Cloudflare/Healthcheck/Healthcheck.ts +3 -1
- package/src/Cloudflare/HostnameTlsSetting/HostnameTlsSetting.ts +3 -1
- package/src/Cloudflare/Hyperdrive/Connection.ts +2 -4
- package/src/Cloudflare/KV/Namespace.ts +5 -4
- package/src/Cloudflare/KeylessCertificate/KeylessCertificate.ts +3 -1
- package/src/Cloudflare/LeakedCredentialCheck/LeakedCredentialCheck.ts +3 -1
- package/src/Cloudflare/LoadBalancer/LoadBalancer.ts +3 -1
- package/src/Cloudflare/ManagedTransforms/ManagedTransforms.ts +3 -1
- package/src/Cloudflare/MtlsCertificate/MtlsCertificate.ts +3 -1
- package/src/Cloudflare/Organization/Organization.ts +3 -1
- package/src/Cloudflare/OriginCaCertificate/OriginCaCertificate.ts +7 -2
- package/src/Cloudflare/OriginPostQuantumEncryption/OriginPostQuantumEncryption.ts +3 -1
- package/src/Cloudflare/OriginTlsClientAuth/HostnameCertificate.ts +5 -1
- package/src/Cloudflare/PageRule/PageRule.ts +3 -1
- package/src/Cloudflare/Providers.ts +34 -19
- package/src/Cloudflare/Queues/Consumer.ts +3 -1
- package/src/Cloudflare/Queues/Queue.ts +5 -4
- package/src/Cloudflare/Queues/Subscription.ts +3 -1
- package/src/Cloudflare/R2/Bucket.ts +230 -3
- package/src/Cloudflare/RegionalHostname/RegionalHostname.ts +3 -1
- package/src/Cloudflare/Ruleset/Ruleset.ts +9 -4
- package/src/Cloudflare/SecretsStore/Secret.ts +46 -5
- package/src/Cloudflare/SecurityTxt/SecurityTxt.ts +3 -1
- package/src/Cloudflare/StateStore/State.ts +89 -24
- package/src/Cloudflare/Tags/AccountResourceTags.ts +9 -5
- package/src/Cloudflare/Tunnel/Route.ts +3 -1
- package/src/Cloudflare/Tunnel/Tunnel.ts +3 -1
- package/src/Cloudflare/UrlNormalization/UrlNormalization.ts +3 -1
- package/src/Cloudflare/Vectorize/VectorizeIndex.ts +2 -3
- package/src/Cloudflare/VpcService/VpcService.ts +1 -0
- package/src/Cloudflare/WaitingRoom/WaitingRoom.ts +3 -1
- package/src/Cloudflare/Web3/ContentList.ts +3 -1
- package/src/Cloudflare/Web3/Hostname.ts +3 -1
- package/src/Cloudflare/Workers/Cache.ts +102 -0
- package/src/Cloudflare/Workers/CronEventSource.ts +180 -6
- package/src/Cloudflare/Workers/DurableObject.ts +36 -1
- package/src/Cloudflare/Workers/DurableObjectState.ts +25 -0
- package/src/Cloudflare/Workers/Fetch.ts +2 -2
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +3 -0
- package/src/Cloudflare/Workers/Worker.ts +315 -9
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +18 -0
- package/src/Cloudflare/Workers/WorkerBridge.ts +37 -10
- package/src/Cloudflare/Workers/WorkerLoader.ts +10 -1
- package/src/Cloudflare/Workers/WorkerProvider.ts +576 -40
- package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +23 -2
- package/src/Cloudflare/Workers/index.ts +1 -0
- package/src/Cloudflare/WorkersForPlatforms/DispatchNamespace.ts +2 -4
- package/src/Cloudflare/Workflows/Workflow.ts +296 -38
- package/src/Cloudflare/Workflows/WorkflowBridge.ts +62 -12
- package/src/Cloudflare/Zaraz/Config.ts +7 -2
- package/src/Cloudflare/Zone/Zone.ts +1 -0
- package/src/Docker/Container.ts +10 -1
- package/src/Drizzle/Schema.ts +12 -5
- package/src/Neon/Branch.ts +15 -3
- package/src/Output.ts +18 -2
- package/src/Planetscale/Postgres/PostgresRole.ts +2 -2
- package/src/Provider.ts +53 -3
- package/src/Ref.ts +10 -0
- package/src/Resource.ts +50 -1
- package/src/Stack.ts +1 -1
- package/src/State/HttpStateStore.ts +47 -5
- package/src/Sync.ts +494 -0
- package/src/Test/Bun.ts +4 -0
- package/src/Test/Http.ts +133 -0
- package/src/Test/Vitest.ts +11 -0
- package/src/Util/proxy-chain.ts +9 -12
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
260
|
-
|
|
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
|
};
|