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
|
@@ -6,19 +6,193 @@ import { Worker } from "./Worker.ts";
|
|
|
6
6
|
/**
|
|
7
7
|
* Subscribe to Cloudflare Cron Triggers with an Effect handler.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* A single call wires both pieces of a scheduled Worker:
|
|
10
|
+
*
|
|
11
|
+
* - **Deploy-time**: attaches the cron expression to the host Worker's
|
|
12
|
+
* Cron Triggers.
|
|
13
|
+
* - **Runtime**: registers a `scheduled` listener that runs your Effect on
|
|
14
|
+
* each fire. The handler receives Cloudflare's `ScheduledController`,
|
|
15
|
+
* which has three members:
|
|
16
|
+
* - `controller.scheduledTime` — the fire time in milliseconds since the
|
|
17
|
+
* Unix epoch.
|
|
18
|
+
* - `controller.cron` — the cron expression that fired.
|
|
19
|
+
* - `controller.noRetry()` — opts the invocation out of Cloudflare's
|
|
20
|
+
* retry-on-failure. Only meaningful when the scheduled invocation can
|
|
21
|
+
* actually fail — see the failure & retry section below.
|
|
22
|
+
*
|
|
23
|
+
* Each member has its own section below with an Effect example first and
|
|
24
|
+
* an async example second.
|
|
25
|
+
*
|
|
26
|
+
* Requires `CronEventSourceLive` provided on the Worker's Effect.
|
|
27
|
+
*
|
|
28
|
+
* **Failure & retry semantics**: a failing handler won't crash the Worker —
|
|
29
|
+
* the event source catches the failure and moves on. That also means
|
|
30
|
+
* Cloudflare never observes a failed invocation, so its platform-level
|
|
31
|
+
* retry (and `controller.noRetry()`) never comes into play here. Express
|
|
32
|
+
* retry declaratively with `Effect.retry` inside the handler, and log or
|
|
33
|
+
* report errors if you need visibility into failed runs. In async Workers
|
|
34
|
+
* the opposite holds: a `scheduled` handler that throws (or rejects) marks
|
|
35
|
+
* the invocation failed and Cloudflare may retry it — call
|
|
36
|
+
* `controller.noRetry()` before rethrowing to suppress that.
|
|
37
|
+
*
|
|
38
|
+
* Async (non-Effect) Workers don't use `cron` — they attach schedules with
|
|
39
|
+
* the Worker's `crons` prop and export their own `scheduled` handler from
|
|
40
|
+
* the entry module (each section below includes the async variant). Pass
|
|
41
|
+
* `crons: []` to remove all Cron Triggers from a Worker.
|
|
10
42
|
*
|
|
11
|
-
* - **Runtime**: registers a `scheduled` listener on the Worker.
|
|
12
|
-
* - **Deploy-time**: attaches the cron expression to the host Worker.
|
|
13
43
|
* @binding
|
|
14
44
|
* @product Workers
|
|
15
45
|
* @category Workers & Compute
|
|
16
|
-
*
|
|
46
|
+
*
|
|
47
|
+
* @section Declare a schedule
|
|
48
|
+
* @example Effect-native Worker (recommended)
|
|
49
|
+
* ```typescript
|
|
50
|
+
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
51
|
+
* import * as Effect from "effect/Effect";
|
|
52
|
+
* import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
53
|
+
*
|
|
54
|
+
* export default Cloudflare.Worker(
|
|
55
|
+
* "Worker",
|
|
56
|
+
* { main: import.meta.url },
|
|
57
|
+
* Effect.gen(function* () {
|
|
58
|
+
* yield* Cloudflare.Workers.cron("0 12 * * *", () =>
|
|
59
|
+
* Effect.log("cron fired"),
|
|
60
|
+
* );
|
|
61
|
+
*
|
|
62
|
+
* return {
|
|
63
|
+
* fetch: Effect.succeed(HttpServerResponse.text("ok")),
|
|
64
|
+
* };
|
|
65
|
+
* }).pipe(Effect.provide(Cloudflare.Workers.CronEventSourceLive)),
|
|
66
|
+
* );
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* @example Async Worker — `crons` prop + exported `scheduled` handler
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // alchemy.run.ts — attach the cron expressions at deploy time
|
|
72
|
+
* export const Worker = Cloudflare.Worker("Worker", {
|
|
73
|
+
* main: "./src/worker.ts",
|
|
74
|
+
* crons: ["0 12 * * *"],
|
|
75
|
+
* });
|
|
76
|
+
*
|
|
77
|
+
* // src/worker.ts — the entry module handles the fires itself
|
|
78
|
+
* export default {
|
|
79
|
+
* async scheduled(controller: ScheduledController) {
|
|
80
|
+
* console.log("cron fired");
|
|
81
|
+
* },
|
|
82
|
+
* };
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @section `controller.scheduledTime` — the fire time
|
|
86
|
+
* @example Effect: record each fire on a Durable Object
|
|
87
|
+
* ```typescript
|
|
88
|
+
* export default class Worker extends Cloudflare.Worker<Worker>()(
|
|
89
|
+
* "Worker",
|
|
90
|
+
* { main: import.meta.url },
|
|
91
|
+
* Effect.gen(function* () {
|
|
92
|
+
* const counters = yield* CronCounter;
|
|
93
|
+
*
|
|
94
|
+
* yield* Cloudflare.Workers.cron("0 * * * *", (controller) =>
|
|
95
|
+
* counters.getByName("default").record(controller.scheduledTime),
|
|
96
|
+
* );
|
|
97
|
+
*
|
|
98
|
+
* return {
|
|
99
|
+
* fetch: Effect.gen(function* () {
|
|
100
|
+
* const { times } = yield* counters.getByName("default").snapshot();
|
|
101
|
+
* return yield* HttpServerResponse.json({ times });
|
|
102
|
+
* }),
|
|
103
|
+
* };
|
|
104
|
+
* }).pipe(Effect.provide(Cloudflare.Workers.CronEventSourceLive)),
|
|
105
|
+
* ) {}
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @example Async: use the fire time as an idempotency key
|
|
109
|
+
* ```typescript
|
|
110
|
+
* // scheduledTime is the time the fire was *scheduled* for (not when it
|
|
111
|
+
* // ran), so it is stable across retries of the same fire — a natural
|
|
112
|
+
* // idempotency key for at-most-once side effects.
|
|
113
|
+
* export default {
|
|
114
|
+
* async scheduled(controller: ScheduledController, env: WorkerEnv) {
|
|
115
|
+
* const key = `run:${controller.scheduledTime}`;
|
|
116
|
+
* if (await env.RUNS.get(key)) return;
|
|
117
|
+
* await syncFeeds();
|
|
118
|
+
* await env.RUNS.put(key, "done");
|
|
119
|
+
* },
|
|
120
|
+
* };
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* @section `controller.cron` — dispatch multiple schedules
|
|
124
|
+
* @example Effect: one handler per expression
|
|
125
|
+
* ```typescript
|
|
126
|
+
* // Each handler only runs for fires of its own expression — the listener
|
|
127
|
+
* // checks controller.cron, so a midnight fire never runs the hourly handler.
|
|
128
|
+
* yield* Cloudflare.Workers.cron("0 * * * *", () => syncFeeds);
|
|
129
|
+
* yield* Cloudflare.Workers.cron("0 0 * * *", () => purgeExpired);
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @example Async: switch on `controller.cron`
|
|
17
133
|
* ```typescript
|
|
18
|
-
*
|
|
19
|
-
*
|
|
134
|
+
* export const Worker = Cloudflare.Worker("Worker", {
|
|
135
|
+
* main: "./src/worker.ts",
|
|
136
|
+
* crons: ["0 * * * *", "0 0 * * *"],
|
|
137
|
+
* });
|
|
138
|
+
*
|
|
139
|
+
* // src/worker.ts — one scheduled handler receives every fire
|
|
140
|
+
* export default {
|
|
141
|
+
* async scheduled(controller: ScheduledController) {
|
|
142
|
+
* switch (controller.cron) {
|
|
143
|
+
* case "0 * * * *":
|
|
144
|
+
* await syncFeeds();
|
|
145
|
+
* break;
|
|
146
|
+
* case "0 0 * * *":
|
|
147
|
+
* await purgeExpired();
|
|
148
|
+
* break;
|
|
149
|
+
* }
|
|
150
|
+
* },
|
|
151
|
+
* };
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @section `controller.noRetry()` — failure & retry control
|
|
155
|
+
* @example Effect: bound retries with `Effect.retry`
|
|
156
|
+
* ```typescript
|
|
157
|
+
* import * as Schedule from "effect/Schedule";
|
|
158
|
+
*
|
|
159
|
+
* // The event source reports the invocation as successful even when the
|
|
160
|
+
* // handler fails, so Cloudflare's platform retry rarely engages for Effect
|
|
161
|
+
* // handlers — Effect.retry is the primary retry control. Calling
|
|
162
|
+
* // controller.noRetry() once retries are exhausted defensively covers
|
|
163
|
+
* // anything that can still mark the invocation failed (e.g. a failing
|
|
164
|
+
* // waitUntil task).
|
|
165
|
+
* yield* Cloudflare.Workers.cron("0 * * * *", (controller) =>
|
|
166
|
+
* syncFeeds.pipe(
|
|
167
|
+
* Effect.retry({ schedule: Schedule.exponential("1 second"), times: 3 }),
|
|
168
|
+
* Effect.tapError((error) =>
|
|
169
|
+
* Effect.logError("syncFeeds failed permanently", error).pipe(
|
|
170
|
+
* Effect.andThen(Effect.sync(() => controller.noRetry())),
|
|
171
|
+
* ),
|
|
172
|
+
* ),
|
|
173
|
+
* ),
|
|
20
174
|
* );
|
|
21
175
|
* ```
|
|
176
|
+
*
|
|
177
|
+
* @example Async: suppress retry for permanent failures
|
|
178
|
+
* ```typescript
|
|
179
|
+
* // src/worker.ts — a thrown error marks the invocation failed and
|
|
180
|
+
* // Cloudflare may retry it; noRetry() opts this fire out of that.
|
|
181
|
+
* export default {
|
|
182
|
+
* async scheduled(controller: ScheduledController) {
|
|
183
|
+
* try {
|
|
184
|
+
* await syncFeeds();
|
|
185
|
+
* } catch (error) {
|
|
186
|
+
* if (isPermanentFailure(error)) {
|
|
187
|
+
* controller.noRetry();
|
|
188
|
+
* }
|
|
189
|
+
* throw error; // still recorded as a failed invocation
|
|
190
|
+
* }
|
|
191
|
+
* },
|
|
192
|
+
* };
|
|
193
|
+
* ```
|
|
194
|
+
*
|
|
195
|
+
* @see https://developers.cloudflare.com/workers/configuration/cron-triggers/
|
|
22
196
|
*/
|
|
23
197
|
export declare const cron: <Req = never>(expression: string, process: (controller: cf.ScheduledController) => Effect.Effect<void, unknown, Req>) => Effect.Effect<void, never, CronEventSource>;
|
|
24
198
|
export type CronEventSourceService = <Req = never>(expression: string, process: (controller: cf.ScheduledController) => Effect.Effect<void, unknown, Req>) => Effect.Effect<void, never, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CronEventSource.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/CronEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAiB,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"CronEventSource.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/CronEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAiB,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8LG;AACH,eAAO,MAAM,IAAI,GAAI,GAAG,GAAG,KAAK,cAClB,MAAM,WACT,CACP,UAAU,EAAE,EAAE,CAAC,mBAAmB,KAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,gDACyB,CAAC;AAElE,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,GAAG,KAAK,EAC/C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CACP,UAAU,EAAE,EAAE,CAAC,mBAAmB,KAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;;AAEvC,qBAAa,eAAgB,SAAQ,oBAGI;CAAG;AAE5C,eAAO,MAAM,mBAAmB,kDAkC/B,CAAC"}
|
|
@@ -7,19 +7,193 @@ import { isWorkerEvent, Worker } from "./Worker.js";
|
|
|
7
7
|
/**
|
|
8
8
|
* Subscribe to Cloudflare Cron Triggers with an Effect handler.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* A single call wires both pieces of a scheduled Worker:
|
|
11
|
+
*
|
|
12
|
+
* - **Deploy-time**: attaches the cron expression to the host Worker's
|
|
13
|
+
* Cron Triggers.
|
|
14
|
+
* - **Runtime**: registers a `scheduled` listener that runs your Effect on
|
|
15
|
+
* each fire. The handler receives Cloudflare's `ScheduledController`,
|
|
16
|
+
* which has three members:
|
|
17
|
+
* - `controller.scheduledTime` — the fire time in milliseconds since the
|
|
18
|
+
* Unix epoch.
|
|
19
|
+
* - `controller.cron` — the cron expression that fired.
|
|
20
|
+
* - `controller.noRetry()` — opts the invocation out of Cloudflare's
|
|
21
|
+
* retry-on-failure. Only meaningful when the scheduled invocation can
|
|
22
|
+
* actually fail — see the failure & retry section below.
|
|
23
|
+
*
|
|
24
|
+
* Each member has its own section below with an Effect example first and
|
|
25
|
+
* an async example second.
|
|
26
|
+
*
|
|
27
|
+
* Requires `CronEventSourceLive` provided on the Worker's Effect.
|
|
28
|
+
*
|
|
29
|
+
* **Failure & retry semantics**: a failing handler won't crash the Worker —
|
|
30
|
+
* the event source catches the failure and moves on. That also means
|
|
31
|
+
* Cloudflare never observes a failed invocation, so its platform-level
|
|
32
|
+
* retry (and `controller.noRetry()`) never comes into play here. Express
|
|
33
|
+
* retry declaratively with `Effect.retry` inside the handler, and log or
|
|
34
|
+
* report errors if you need visibility into failed runs. In async Workers
|
|
35
|
+
* the opposite holds: a `scheduled` handler that throws (or rejects) marks
|
|
36
|
+
* the invocation failed and Cloudflare may retry it — call
|
|
37
|
+
* `controller.noRetry()` before rethrowing to suppress that.
|
|
38
|
+
*
|
|
39
|
+
* Async (non-Effect) Workers don't use `cron` — they attach schedules with
|
|
40
|
+
* the Worker's `crons` prop and export their own `scheduled` handler from
|
|
41
|
+
* the entry module (each section below includes the async variant). Pass
|
|
42
|
+
* `crons: []` to remove all Cron Triggers from a Worker.
|
|
11
43
|
*
|
|
12
|
-
* - **Runtime**: registers a `scheduled` listener on the Worker.
|
|
13
|
-
* - **Deploy-time**: attaches the cron expression to the host Worker.
|
|
14
44
|
* @binding
|
|
15
45
|
* @product Workers
|
|
16
46
|
* @category Workers & Compute
|
|
17
|
-
*
|
|
47
|
+
*
|
|
48
|
+
* @section Declare a schedule
|
|
49
|
+
* @example Effect-native Worker (recommended)
|
|
50
|
+
* ```typescript
|
|
51
|
+
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
52
|
+
* import * as Effect from "effect/Effect";
|
|
53
|
+
* import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
54
|
+
*
|
|
55
|
+
* export default Cloudflare.Worker(
|
|
56
|
+
* "Worker",
|
|
57
|
+
* { main: import.meta.url },
|
|
58
|
+
* Effect.gen(function* () {
|
|
59
|
+
* yield* Cloudflare.Workers.cron("0 12 * * *", () =>
|
|
60
|
+
* Effect.log("cron fired"),
|
|
61
|
+
* );
|
|
62
|
+
*
|
|
63
|
+
* return {
|
|
64
|
+
* fetch: Effect.succeed(HttpServerResponse.text("ok")),
|
|
65
|
+
* };
|
|
66
|
+
* }).pipe(Effect.provide(Cloudflare.Workers.CronEventSourceLive)),
|
|
67
|
+
* );
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @example Async Worker — `crons` prop + exported `scheduled` handler
|
|
71
|
+
* ```typescript
|
|
72
|
+
* // alchemy.run.ts — attach the cron expressions at deploy time
|
|
73
|
+
* export const Worker = Cloudflare.Worker("Worker", {
|
|
74
|
+
* main: "./src/worker.ts",
|
|
75
|
+
* crons: ["0 12 * * *"],
|
|
76
|
+
* });
|
|
77
|
+
*
|
|
78
|
+
* // src/worker.ts — the entry module handles the fires itself
|
|
79
|
+
* export default {
|
|
80
|
+
* async scheduled(controller: ScheduledController) {
|
|
81
|
+
* console.log("cron fired");
|
|
82
|
+
* },
|
|
83
|
+
* };
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @section `controller.scheduledTime` — the fire time
|
|
87
|
+
* @example Effect: record each fire on a Durable Object
|
|
88
|
+
* ```typescript
|
|
89
|
+
* export default class Worker extends Cloudflare.Worker<Worker>()(
|
|
90
|
+
* "Worker",
|
|
91
|
+
* { main: import.meta.url },
|
|
92
|
+
* Effect.gen(function* () {
|
|
93
|
+
* const counters = yield* CronCounter;
|
|
94
|
+
*
|
|
95
|
+
* yield* Cloudflare.Workers.cron("0 * * * *", (controller) =>
|
|
96
|
+
* counters.getByName("default").record(controller.scheduledTime),
|
|
97
|
+
* );
|
|
98
|
+
*
|
|
99
|
+
* return {
|
|
100
|
+
* fetch: Effect.gen(function* () {
|
|
101
|
+
* const { times } = yield* counters.getByName("default").snapshot();
|
|
102
|
+
* return yield* HttpServerResponse.json({ times });
|
|
103
|
+
* }),
|
|
104
|
+
* };
|
|
105
|
+
* }).pipe(Effect.provide(Cloudflare.Workers.CronEventSourceLive)),
|
|
106
|
+
* ) {}
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* @example Async: use the fire time as an idempotency key
|
|
110
|
+
* ```typescript
|
|
111
|
+
* // scheduledTime is the time the fire was *scheduled* for (not when it
|
|
112
|
+
* // ran), so it is stable across retries of the same fire — a natural
|
|
113
|
+
* // idempotency key for at-most-once side effects.
|
|
114
|
+
* export default {
|
|
115
|
+
* async scheduled(controller: ScheduledController, env: WorkerEnv) {
|
|
116
|
+
* const key = `run:${controller.scheduledTime}`;
|
|
117
|
+
* if (await env.RUNS.get(key)) return;
|
|
118
|
+
* await syncFeeds();
|
|
119
|
+
* await env.RUNS.put(key, "done");
|
|
120
|
+
* },
|
|
121
|
+
* };
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @section `controller.cron` — dispatch multiple schedules
|
|
125
|
+
* @example Effect: one handler per expression
|
|
126
|
+
* ```typescript
|
|
127
|
+
* // Each handler only runs for fires of its own expression — the listener
|
|
128
|
+
* // checks controller.cron, so a midnight fire never runs the hourly handler.
|
|
129
|
+
* yield* Cloudflare.Workers.cron("0 * * * *", () => syncFeeds);
|
|
130
|
+
* yield* Cloudflare.Workers.cron("0 0 * * *", () => purgeExpired);
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* @example Async: switch on `controller.cron`
|
|
18
134
|
* ```typescript
|
|
19
|
-
*
|
|
20
|
-
*
|
|
135
|
+
* export const Worker = Cloudflare.Worker("Worker", {
|
|
136
|
+
* main: "./src/worker.ts",
|
|
137
|
+
* crons: ["0 * * * *", "0 0 * * *"],
|
|
138
|
+
* });
|
|
139
|
+
*
|
|
140
|
+
* // src/worker.ts — one scheduled handler receives every fire
|
|
141
|
+
* export default {
|
|
142
|
+
* async scheduled(controller: ScheduledController) {
|
|
143
|
+
* switch (controller.cron) {
|
|
144
|
+
* case "0 * * * *":
|
|
145
|
+
* await syncFeeds();
|
|
146
|
+
* break;
|
|
147
|
+
* case "0 0 * * *":
|
|
148
|
+
* await purgeExpired();
|
|
149
|
+
* break;
|
|
150
|
+
* }
|
|
151
|
+
* },
|
|
152
|
+
* };
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* @section `controller.noRetry()` — failure & retry control
|
|
156
|
+
* @example Effect: bound retries with `Effect.retry`
|
|
157
|
+
* ```typescript
|
|
158
|
+
* import * as Schedule from "effect/Schedule";
|
|
159
|
+
*
|
|
160
|
+
* // The event source reports the invocation as successful even when the
|
|
161
|
+
* // handler fails, so Cloudflare's platform retry rarely engages for Effect
|
|
162
|
+
* // handlers — Effect.retry is the primary retry control. Calling
|
|
163
|
+
* // controller.noRetry() once retries are exhausted defensively covers
|
|
164
|
+
* // anything that can still mark the invocation failed (e.g. a failing
|
|
165
|
+
* // waitUntil task).
|
|
166
|
+
* yield* Cloudflare.Workers.cron("0 * * * *", (controller) =>
|
|
167
|
+
* syncFeeds.pipe(
|
|
168
|
+
* Effect.retry({ schedule: Schedule.exponential("1 second"), times: 3 }),
|
|
169
|
+
* Effect.tapError((error) =>
|
|
170
|
+
* Effect.logError("syncFeeds failed permanently", error).pipe(
|
|
171
|
+
* Effect.andThen(Effect.sync(() => controller.noRetry())),
|
|
172
|
+
* ),
|
|
173
|
+
* ),
|
|
174
|
+
* ),
|
|
21
175
|
* );
|
|
22
176
|
* ```
|
|
177
|
+
*
|
|
178
|
+
* @example Async: suppress retry for permanent failures
|
|
179
|
+
* ```typescript
|
|
180
|
+
* // src/worker.ts — a thrown error marks the invocation failed and
|
|
181
|
+
* // Cloudflare may retry it; noRetry() opts this fire out of that.
|
|
182
|
+
* export default {
|
|
183
|
+
* async scheduled(controller: ScheduledController) {
|
|
184
|
+
* try {
|
|
185
|
+
* await syncFeeds();
|
|
186
|
+
* } catch (error) {
|
|
187
|
+
* if (isPermanentFailure(error)) {
|
|
188
|
+
* controller.noRetry();
|
|
189
|
+
* }
|
|
190
|
+
* throw error; // still recorded as a failed invocation
|
|
191
|
+
* }
|
|
192
|
+
* },
|
|
193
|
+
* };
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* @see https://developers.cloudflare.com/workers/configuration/cron-triggers/
|
|
23
197
|
*/
|
|
24
198
|
export const cron = (expression, process) => CronEventSource.use((source) => source(expression, process));
|
|
25
199
|
export class CronEventSource extends Context.Service()("Cloudflare.Workers.CronEventSource") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CronEventSource.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/CronEventSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"CronEventSource.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/CronEventSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8LG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,UAAkB,EAClB,OAEsC,EACtC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AASlE,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,OAAO,EAGjD,CAAC,oCAAoC,CAAC;CAAG;AAE5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,eAAe,EACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EACxB,UAAkB,EAClB,OAEsC;QAEtC,2EAA2E;QAC3E,wEAAwE;QACxE,sEAAsE;QACtE,0EAA0E;QAC1E,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;YACpC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CACnB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,IAAI,CAAC,QAAQ,UAAU,GAAG,EAAE;gBAC/B,KAAK,EAAE,CAAC,UAAU,CAAC;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,cAAc,CAA+B,CAAC;QAClE,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAY,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO;YAEhE,MAAM,UAAU,GAAG,KAAK,CAAC,KAA+B,CAAC;YACzD,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO;YAE3C,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAA2B,CAAC;AAC/B,CAAC,CAAC,CACH,CAAC"}
|
|
@@ -125,7 +125,7 @@ export declare class DurableObjectScope extends DurableObjectScope_base {
|
|
|
125
125
|
* ```
|
|
126
126
|
*
|
|
127
127
|
* There are two ways to define a Durable Object. See the
|
|
128
|
-
*
|
|
128
|
+
* [Functions & Servers](/infrastructure-as-effects/functions-and-servers) page
|
|
129
129
|
* for the full explanation.
|
|
130
130
|
*
|
|
131
131
|
* - **Inline** — Effect implementation passed directly, single file.
|
|
@@ -413,6 +413,41 @@ export declare class DurableObjectScope extends DurableObjectScope_base {
|
|
|
413
413
|
* const value = yield* state.storage.get("counter");
|
|
414
414
|
* ```
|
|
415
415
|
*
|
|
416
|
+
* @section Background Work & Scopes
|
|
417
|
+
* Every RPC call and fetch into a Durable Object gets its own Effect
|
|
418
|
+
* `Scope`. When the method finishes, the bridge closes that scope and
|
|
419
|
+
* registers the close promise with workerd's `state.waitUntil` — so
|
|
420
|
+
* finalizers added with `Effect.addFinalizer` inside a method run *after*
|
|
421
|
+
* the result is returned to the caller, without blocking it, and the
|
|
422
|
+
* object stays alive until they settle.
|
|
423
|
+
*
|
|
424
|
+
* For ad-hoc background work, `state.waitUntil(effect)` forks an Effect
|
|
425
|
+
* with the caller's full context and keeps the object alive until it
|
|
426
|
+
* settles.
|
|
427
|
+
*
|
|
428
|
+
* Attach cleanup to method scopes, not the constructor (init) closure —
|
|
429
|
+
* the constructor runs once per in-memory instance under
|
|
430
|
+
* `blockConcurrencyWhile`, and its scope is not tied to any call.
|
|
431
|
+
*
|
|
432
|
+
* @example Responding before finishing the work
|
|
433
|
+
* ```typescript
|
|
434
|
+
* return {
|
|
435
|
+
* record: Effect.fn(function* (entry: string) {
|
|
436
|
+
* // runs after `record` returns; the DO stays alive until it settles
|
|
437
|
+
* yield* Effect.addFinalizer(() =>
|
|
438
|
+
* state.storage.put(`audit:${entry}`, Date.now()).pipe(Effect.ignore),
|
|
439
|
+
* );
|
|
440
|
+
* return "accepted" as const;
|
|
441
|
+
* }),
|
|
442
|
+
*
|
|
443
|
+
* refresh: Effect.fn(function* () {
|
|
444
|
+
* // same idea, explicit form
|
|
445
|
+
* yield* state.waitUntil(recomputeExpensiveView());
|
|
446
|
+
* return "scheduled" as const;
|
|
447
|
+
* }),
|
|
448
|
+
* };
|
|
449
|
+
* ```
|
|
450
|
+
*
|
|
416
451
|
* @section WebSocket Hibernation
|
|
417
452
|
* Durable Objects support WebSocket hibernation — the runtime can
|
|
418
453
|
* evict the object from memory while keeping connections open. Use
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableObject.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,iBAAiB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,kBAAkB,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CACjC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,cAAc,CAAC,EACxD,KAAK,EACL,kBAAkB,CACnB,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,qBAAqB,UACzB,OAAO,KACb,KAAK,IAAI,mBAC2D,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC,eAAe,CAAC;AACjD,MAAM,MAAM,yBAAyB,GAAG,EAAE,CAAC,yBAAyB,CAAC;AACrE,MAAM,MAAM,oCAAoC,GAC9C,EAAE,CAAC,6CAA6C,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC,mBAAmB,CAAC;AAEzD,KAAK,MAAM,GAAG,0BAA0B,CAAC;AACzC,QAAA,MAAM,MAAM,6BAA6B,CAAC;AAE1C,eAAO,MAAM,mBAAmB,UACvB,OAAO,KACb,KAAK,IAAI,iBACkD,CAAC;AAE/D,MAAM,WAAW,iBAAiB,CAAC,KAAK,GAAG,GAAG;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,wBAAwB;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,aAAa,CAC5B,KAAK,GAAG,OAAO,CACf,SAAQ,iBAAiB,CAAC,KAAK,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtD,WAAW,EAAE,MAAM,eAAe,CAAC;IACnC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,CAAC;IAC9C,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,eAAe,CAAC;IAC9C,GAAG,EAAE,CACH,EAAE,EAAE,eAAe,EACnB,OAAO,CAAC,EAAE,oCAAoC,KAC3C,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9B,YAAY,EAAE,CACZ,YAAY,EAAE,yBAAyB,KACpC,aAAa,CAAC,KAAK,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,UAAU,CAAC,kBAAkB,GAAG,cAAc,CAAC,CAAC;IACxD,KAAK,CAAC,EAAE,CACN,SAAS,CAAC,EAAE,mBAAmB,KAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,GAAG,WAAW,KAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,KACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,qBAAqB,GAC7B,aAAa,GACb,kBAAkB,GAClB,cAAc,GACd,iBAAiB,GACjB,gBAAgB,CAAC;AAErB,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;CAIxC;AAED,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,CACvD,aAAa,EACb,KAAK,EACL,aAAa,CACd;IACC,CAAC,IAAI,EAAE,KAAK,KAAK;QACf,CAAC,IAAI,SAAS,MAAM,EAClB,IAAI,EAAE,IAAI,GACT,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;YAC5D,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG;gBACtB,gBAAgB;gBAChB,eAAe,EAAE,IAAI,CAAC;aACvB,CAAC;YACF,IAAI,CACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,GACxB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,GAAG,KAAK,EACd,MAAM,EACF,YAAY,CAAC,IAAI,CAAC,GAClB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAChD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,GAAG,KAAK,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,CACjB,MAAM,CAAC,MAAM,CACX,KAAK,EACL,KAAK,EACL,cAAc,GAAG,kBAAkB,GAAG,KAAK,CAC5C,EACD,KAAK,EACL,qBAAqB,GAAG,GAAG,CAC5B,GACA,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;SAC3C,CAAC;KACH,CAAC;IACF,CAAC,IAAI,KAAK;QACR,CACE,KAAK,SAAS,OAAO,CAAC,kBAAkB,CAAC,EACzC,GAAG,SAAS,qBAAqB,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,EAEtE,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,CACjB,MAAM,CAAC,MAAM,CACX,KAAK,EACL,KAAK,EACL,cAAc,GAAG,kBAAkB,GAAG,KAAK,CAC5C,EACD,KAAK,EACL,GAAG,CACJ,GACA,MAAM,CAAC,MAAM,CACd,aAAa,CAAC,IAAI,CAAC,EACnB,KAAK,EACL,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAClD,GAAG;YACF,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;SACvB,CAAC;KACH,CAAC;IACF,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,GACjE,MAAM,CAAC,MAAM,CACd,aAAa,CAAC,KAAK,CAAC,EACpB,KAAK,EACL,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CACjD,CAAC;CACH;;AAED,qBAAa,kBAAmB,SAAQ,uBAGT;CAAG;AAElC
|
|
1
|
+
{"version":3,"file":"DurableObject.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ export class DurableObjectScope extends Context.Service()("Cloudflare.DurableObj
|
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
50
|
* There are two ways to define a Durable Object. See the
|
|
51
|
-
*
|
|
51
|
+
* [Functions & Servers](/infrastructure-as-effects/functions-and-servers) page
|
|
52
52
|
* for the full explanation.
|
|
53
53
|
*
|
|
54
54
|
* - **Inline** — Effect implementation passed directly, single file.
|
|
@@ -336,6 +336,41 @@ export class DurableObjectScope extends Context.Service()("Cloudflare.DurableObj
|
|
|
336
336
|
* const value = yield* state.storage.get("counter");
|
|
337
337
|
* ```
|
|
338
338
|
*
|
|
339
|
+
* @section Background Work & Scopes
|
|
340
|
+
* Every RPC call and fetch into a Durable Object gets its own Effect
|
|
341
|
+
* `Scope`. When the method finishes, the bridge closes that scope and
|
|
342
|
+
* registers the close promise with workerd's `state.waitUntil` — so
|
|
343
|
+
* finalizers added with `Effect.addFinalizer` inside a method run *after*
|
|
344
|
+
* the result is returned to the caller, without blocking it, and the
|
|
345
|
+
* object stays alive until they settle.
|
|
346
|
+
*
|
|
347
|
+
* For ad-hoc background work, `state.waitUntil(effect)` forks an Effect
|
|
348
|
+
* with the caller's full context and keeps the object alive until it
|
|
349
|
+
* settles.
|
|
350
|
+
*
|
|
351
|
+
* Attach cleanup to method scopes, not the constructor (init) closure —
|
|
352
|
+
* the constructor runs once per in-memory instance under
|
|
353
|
+
* `blockConcurrencyWhile`, and its scope is not tied to any call.
|
|
354
|
+
*
|
|
355
|
+
* @example Responding before finishing the work
|
|
356
|
+
* ```typescript
|
|
357
|
+
* return {
|
|
358
|
+
* record: Effect.fn(function* (entry: string) {
|
|
359
|
+
* // runs after `record` returns; the DO stays alive until it settles
|
|
360
|
+
* yield* Effect.addFinalizer(() =>
|
|
361
|
+
* state.storage.put(`audit:${entry}`, Date.now()).pipe(Effect.ignore),
|
|
362
|
+
* );
|
|
363
|
+
* return "accepted" as const;
|
|
364
|
+
* }),
|
|
365
|
+
*
|
|
366
|
+
* refresh: Effect.fn(function* () {
|
|
367
|
+
* // same idea, explicit form
|
|
368
|
+
* yield* state.waitUntil(recomputeExpensiveView());
|
|
369
|
+
* return "scheduled" as const;
|
|
370
|
+
* }),
|
|
371
|
+
* };
|
|
372
|
+
* ```
|
|
373
|
+
*
|
|
339
374
|
* @section WebSocket Hibernation
|
|
340
375
|
* Durable Objects support WebSocket hibernation — the runtime can
|
|
341
376
|
* evict the object from memory while keeping connections open. Use
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableObject.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObject.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,iBAAiB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,kBAAkB,MAAM,yCAAyC,CAAC;AAI9E,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAkB,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAuB,MAAM,aAAa,CAAC;AAY7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAc,EACgB,EAAE,CAChC,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAa,EAAE,IAAI,KAAK,eAAe,CAAC;AAUxE,MAAM,MAAM,GAAG,0BAA0B,CAAC;AAE1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAAc,EACc,EAAE,CAC9B,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAa,EAAE,IAAI,KAAK,MAAM,CAAC;AA6I/D,MAAM,OAAO,kBAAmB,SAAQ,OAAO,CAAC,OAAO,EAGpD,CAAC,0BAA0B,CAAC;CAAG;AAElC
|
|
1
|
+
{"version":3,"file":"DurableObject.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,17 @@ declare const DurableObjectState_base: Context.ServiceClass<DurableObjectState,
|
|
|
8
8
|
readonly id: cf.DurableObjectId;
|
|
9
9
|
readonly storage: DurableObjectStorage;
|
|
10
10
|
container?: cf.Container;
|
|
11
|
+
/**
|
|
12
|
+
* Run an Effect in the background without blocking the current event,
|
|
13
|
+
* keeping the Durable Object alive until it settles. The Effect runs with
|
|
14
|
+
* the caller's full context (services, tracing), and the resulting
|
|
15
|
+
* promise is registered with workerd's `state.waitUntil`.
|
|
16
|
+
*/
|
|
17
|
+
waitUntil<A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<void, never, R | RuntimeContext>;
|
|
18
|
+
/**
|
|
19
|
+
* The raw workerd DurableObjectState, for interop with async APIs.
|
|
20
|
+
*/
|
|
21
|
+
readonly raw: cf.DurableObjectState;
|
|
11
22
|
blockConcurrencyWhile<T>(callback: () => Effect.Effect<T, never, RuntimeContext>): Effect.Effect<T, never, RuntimeContext>;
|
|
12
23
|
acceptWebSocket(ws: WebSocket, tags?: string[]): Effect.Effect<void, never, RuntimeContext>;
|
|
13
24
|
getWebSockets(tag?: string): Effect.Effect<WebSocket[], never, RuntimeContext>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableObjectState.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;;iBAK9C,EAAE,CAAC,eAAe;sBACb,oBAAoB;gBAC1B,EAAE,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"DurableObjectState.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;;iBAK9C,EAAE,CAAC,eAAe;sBACb,oBAAoB;gBAC1B,EAAE,CAAC,SAAS;IACxB;;;;;OAKG;cACO,CAAC,EAAE,CAAC,EAAE,CAAC,UACP,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC;IACjD;;OAEG;kBACW,EAAE,CAAC,kBAAkB;0BACb,CAAC,YACX,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,GACtD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC;wBAEpC,SAAS,SACN,MAAM,EAAE,GACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;wBAErC,MAAM,GACX,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC;4CAEnC,EAAE,CAAC,4BAA4B,GAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;gCACjB,MAAM,CAAC,MAAM,CACvC,EAAE,CAAC,4BAA4B,GAAG,IAAI,EACtC,KAAK,EACL,cAAc,CACf;0CAEK,EAAE,CAAC,SAAS,GACf,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;qDAEtC,MAAM,GACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;4CACL,MAAM,CAAC,MAAM,CACnD,MAAM,GAAG,IAAI,EACb,KAAK,EACL,cAAc,CACf;gBACW,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC;mBAC1D,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;;AAjDtE,qBAAa,kBAAmB,SAAQ,uBAmDJ;CAAG;AAEvC,eAAO,MAAM,sBAAsB,UAC1B,EAAE,CAAC,kBAAkB,KAC3B,kBAAkB,CAAC,SAAS,CAoC7B,CAAC"}
|
|
@@ -8,6 +8,13 @@ export const fromDurableObjectState = (state) => ({
|
|
|
8
8
|
id: state.id,
|
|
9
9
|
container: state.container,
|
|
10
10
|
storage: fromDurableObjectStorage(state.storage),
|
|
11
|
+
raw: state,
|
|
12
|
+
waitUntil: (effect) => Effect.gen(function* () {
|
|
13
|
+
const context = yield* Effect.context();
|
|
14
|
+
// Register the promise with workerd un-awaited — waitUntil extends the
|
|
15
|
+
// event's lifetime without blocking the caller.
|
|
16
|
+
yield* Effect.sync(() => state.waitUntil(Effect.runPromise(effect.pipe(Effect.provide(context)))));
|
|
17
|
+
}),
|
|
11
18
|
blockConcurrencyWhile: (callback) => Effect.tryPromise(() => state.blockConcurrencyWhile(() => Effect.runPromise(callback()))),
|
|
12
19
|
acceptWebSocket: (ws, tags) => Effect.sync(() => state.acceptWebSocket(ws.ws, tags)),
|
|
13
20
|
getWebSockets: (tag) => Effect.sync(() => state.getWebSockets(tag).map(fromWebSocket)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableObjectState.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EACL,wBAAwB,GAEzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAE/D,MAAM,OAAO,kBAAmB,SAAQ,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"DurableObjectState.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EACL,wBAAwB,GAEzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAE/D,MAAM,OAAO,kBAAmB,SAAQ,OAAO,CAAC,OAAO,EAmDpD,CAAC,+BAA+B,CAAC;CAAG;AAEvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAA4B,EACG,EAAE,CAAC,CAAC;IACnC,EAAE,EAAE,KAAK,CAAC,EAAE;IACZ,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1B,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAAC;IAChD,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,CAAU,MAA8B,EAAE,EAAE,CACrD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAK,CAAC;QAC3C,uEAAuE;QACvE,gDAAgD;QAChD,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CACtB,KAAK,CAAC,SAAS,CACb,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CACxD,CACF,CAAC;IACJ,CAAC,CAAC;IACJ,qBAAqB,EAAE,CAAI,QAAgC,EAAE,EAAE,CAC7D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CACrB,KAAK,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CACjE;IACH,eAAe,EAAE,CAAC,EAAa,EAAE,IAAe,EAAE,EAAE,CAClD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvD,aAAa,EAAE,CAAC,GAAY,EAAE,EAAE,CAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAChE,wBAAwB,EAAE,CAAC,YAA8C,EAAE,EAAE,CAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACjE,wBAAwB,EAAE,GAAG,EAAE,CAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;IACrD,iCAAiC,EAAE,CAAC,EAAgB,EAAE,EAAE,CACtD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;IAChE,oCAAoC,EAAE,CAAC,SAAkB,EAAE,EAAE,CAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,SAAS,CAAC,CAAC;IAC1E,oCAAoC,EAAE,GAAG,EAAE,CACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC;IACjE,OAAO,EAAE,CAAC,EAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnE,KAAK,EAAE,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CACnE,CAAC,CAAC"}
|
|
@@ -6,7 +6,7 @@ import * as Stream from "effect/Stream";
|
|
|
6
6
|
import * as HttpClientError from "effect/unstable/http/HttpClientError";
|
|
7
7
|
import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
|
|
8
8
|
import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
|
|
9
|
-
import * as
|
|
9
|
+
import * as Url from "effect/unstable/http/Url";
|
|
10
10
|
import * as Binding from "../../Binding.js";
|
|
11
11
|
import { isWorker, WorkerEnvironment } from "./Worker.js";
|
|
12
12
|
export const Fetch = Binding.Service("Cloudflare.Workers.Fetch");
|
|
@@ -32,7 +32,7 @@ export const FetchBinding = Layer.effect(Fetch, Effect.gen(function* () {
|
|
|
32
32
|
});
|
|
33
33
|
}));
|
|
34
34
|
const doFetch = (fetcher, request) => {
|
|
35
|
-
const urlResult =
|
|
35
|
+
const urlResult = Url.make(request.url, request.urlParams, request.hash.pipe(Option.getOrUndefined));
|
|
36
36
|
if (Result.isFailure(urlResult)) {
|
|
37
37
|
return Effect.fail(new HttpClientError.InvalidUrlError({
|
|
38
38
|
request,
|