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
package/src/Docker/Container.ts
CHANGED
|
@@ -243,9 +243,14 @@ export const ContainerProvider = () =>
|
|
|
243
243
|
),
|
|
244
244
|
);
|
|
245
245
|
if (!info) return undefined;
|
|
246
|
+
// `olds.image` may be `undefined` when a `creating` row was
|
|
247
|
+
// persisted before upstream Outputs resolved — fall back to the
|
|
248
|
+
// live container's actual image.
|
|
246
249
|
const attrs = toContainerAttributes(
|
|
247
250
|
info,
|
|
248
|
-
|
|
251
|
+
olds.image !== undefined
|
|
252
|
+
? normalizeImageRef(olds.image)
|
|
253
|
+
: info.Config.Image,
|
|
249
254
|
);
|
|
250
255
|
if (output) return attrs;
|
|
251
256
|
// Without prior state, only adopt a container that carries our
|
|
@@ -258,6 +263,10 @@ export const ContainerProvider = () =>
|
|
|
258
263
|
}),
|
|
259
264
|
diff: Effect.fn(function* ({ id, instanceId, news, olds }) {
|
|
260
265
|
if (!isResolved(news)) return undefined;
|
|
266
|
+
// An Output-valued `image` doesn't survive a `creating`-state
|
|
267
|
+
// round-trip (it deserializes as `undefined`) — without comparable
|
|
268
|
+
// prior create args, let the engine apply its default update logic.
|
|
269
|
+
if (olds.image === undefined) return undefined;
|
|
261
270
|
const oldArgs = yield* makeCreateArgs(id, olds, instanceId);
|
|
262
271
|
const newArgs = yield* makeCreateArgs(id, news, instanceId);
|
|
263
272
|
if (!Equal.equals(oldArgs, newArgs)) {
|
package/src/Drizzle/Schema.ts
CHANGED
|
@@ -189,15 +189,18 @@ export const SchemaProvider = () =>
|
|
|
189
189
|
const nodeExecPath = yield* Effect.sync(() => process.execPath);
|
|
190
190
|
const nodeModulesPath = path.join(process.cwd(), "node_modules");
|
|
191
191
|
|
|
192
|
+
// drizzle-kit globs the --schema/--out values; Windows backslashes
|
|
193
|
+
// are treated as glob escapes and match nothing, so pass forward
|
|
194
|
+
// slashes.
|
|
192
195
|
const args = [
|
|
193
196
|
bin,
|
|
194
197
|
"generate",
|
|
195
198
|
"--dialect",
|
|
196
199
|
dialect === "postgres" ? "postgresql" : dialect,
|
|
197
200
|
"--schema",
|
|
198
|
-
schemaPath,
|
|
201
|
+
schemaPath.replaceAll("\\", "/"),
|
|
199
202
|
"--out",
|
|
200
|
-
out,
|
|
203
|
+
out.replaceAll("\\", "/"),
|
|
201
204
|
];
|
|
202
205
|
|
|
203
206
|
const commandOptions = {
|
|
@@ -433,9 +436,13 @@ export const SchemaProvider = () =>
|
|
|
433
436
|
? drift.changed
|
|
434
437
|
: drift.sqlStatements.length > 0;
|
|
435
438
|
// Originally `output.out` was an absolute path, which is not portable.
|
|
436
|
-
// So, we trigger an update to migrate existing resources
|
|
437
|
-
// This is safe because `regenerate`
|
|
438
|
-
|
|
439
|
+
// So, we trigger an update to migrate existing resources to the
|
|
440
|
+
// canonical (cwd-relative) form. This is safe because `regenerate`
|
|
441
|
+
// is idempotent. Compare against the canonical form rather than
|
|
442
|
+
// testing `isAbsolute`: on Windows a cross-drive `out` can never be
|
|
443
|
+
// relativized, so its canonical form IS absolute and an isAbsolute
|
|
444
|
+
// check would flag an update on every deploy.
|
|
445
|
+
return changed || output.out !== relativeOut(resolveOut(news))
|
|
439
446
|
? { action: "update" }
|
|
440
447
|
: undefined;
|
|
441
448
|
}),
|
package/src/Neon/Branch.ts
CHANGED
|
@@ -204,13 +204,20 @@ export const BranchProvider = () =>
|
|
|
204
204
|
// planning engine resolves `news.project` to a plain object carrying that stable id (even when the project is being
|
|
205
205
|
// updated in place). An unchanged project therefore resolves to the same string; a changed/replaced project resolves
|
|
206
206
|
// to either a different string or an unresolved output, so `oldProjectId !== newProjectId` evaluates correctly.
|
|
207
|
+
// An Output-valued `project` doesn't survive a `creating`-state
|
|
208
|
+
// round-trip (it deserializes as `undefined`) — when the old project is
|
|
209
|
+
// unknown, fall through to the create/update recovery path rather than
|
|
210
|
+
// force a replacement.
|
|
207
211
|
const oldProjectId =
|
|
208
|
-
output?.projectId ??
|
|
212
|
+
output?.projectId ??
|
|
213
|
+
(olds.project !== undefined
|
|
214
|
+
? maybeResolveProjectId(olds.project as BranchSource)
|
|
215
|
+
: undefined);
|
|
209
216
|
const newProjectId =
|
|
210
217
|
"project" in news
|
|
211
218
|
? maybeResolveProjectId(news.project as BranchSource)
|
|
212
219
|
: undefined;
|
|
213
|
-
if (oldProjectId !== newProjectId) {
|
|
220
|
+
if (oldProjectId !== undefined && oldProjectId !== newProjectId) {
|
|
214
221
|
return { action: "replace" } as const;
|
|
215
222
|
}
|
|
216
223
|
if (!isResolved(news)) return undefined;
|
|
@@ -283,7 +290,12 @@ export const BranchProvider = () =>
|
|
|
283
290
|
);
|
|
284
291
|
}
|
|
285
292
|
if (!olds?.project) return undefined;
|
|
286
|
-
const projectId =
|
|
293
|
+
const projectId = maybeResolveProjectId(olds.project as BranchSource);
|
|
294
|
+
if (projectId === undefined) {
|
|
295
|
+
// The project reference survived as an object but its Output-valued
|
|
296
|
+
// `projectId` did not — there is nothing to look the branch up in.
|
|
297
|
+
return undefined;
|
|
298
|
+
}
|
|
287
299
|
const name = yield* createBranchName(id, olds.name);
|
|
288
300
|
const matches = yield* findBranchByName(projectId, name);
|
|
289
301
|
const match = matches[0];
|
package/src/Output.ts
CHANGED
|
@@ -23,7 +23,15 @@ export const of = <R extends ResourceLike>(
|
|
|
23
23
|
: RefExpr<R["Attributes"]> => {
|
|
24
24
|
if (isRef(resource)) {
|
|
25
25
|
const metadata = getRefMetadata(resource);
|
|
26
|
-
return new RefExpr(
|
|
26
|
+
return new RefExpr(
|
|
27
|
+
metadata.stack,
|
|
28
|
+
metadata.stage,
|
|
29
|
+
metadata.id,
|
|
30
|
+
// Surface the target's resource type as a statically-known
|
|
31
|
+
// property so duck-typing classifiers (Worker env bindings)
|
|
32
|
+
// identify the ref exactly like a locally-declared resource.
|
|
33
|
+
metadata.type !== undefined ? { Type: metadata.type } : undefined,
|
|
34
|
+
) as any;
|
|
27
35
|
}
|
|
28
36
|
return new ResourceExpr(resource) as any;
|
|
29
37
|
};
|
|
@@ -377,6 +385,12 @@ export class RefExpr<A> extends BaseExpr<A, never> {
|
|
|
377
385
|
public readonly stack: string | undefined,
|
|
378
386
|
public readonly stage: string | undefined,
|
|
379
387
|
public readonly resourceId: string,
|
|
388
|
+
/**
|
|
389
|
+
* Statically-known properties of the ref's target (currently its
|
|
390
|
+
* resource `Type`), served as literals by the proxy instead of
|
|
391
|
+
* `PropExpr`s — mirrors {@link ResourceExpr}'s `stables`.
|
|
392
|
+
*/
|
|
393
|
+
readonly stables?: Record<string, any>,
|
|
380
394
|
) {
|
|
381
395
|
super();
|
|
382
396
|
return proxy(this);
|
|
@@ -502,7 +516,9 @@ function proxy(self: any): any {
|
|
|
502
516
|
? self
|
|
503
517
|
: prop === inspect
|
|
504
518
|
? target[inspect]
|
|
505
|
-
: isResourceExpr(self)
|
|
519
|
+
: (isResourceExpr(self) || isRefExpr(self)) &&
|
|
520
|
+
self.stables &&
|
|
521
|
+
prop in self.stables
|
|
506
522
|
? self.stables[prop as keyof typeof self.stables]
|
|
507
523
|
: prop in self
|
|
508
524
|
? typeof self[prop as keyof typeof self] === "function" &&
|
|
@@ -199,8 +199,8 @@ export const PostgresRoleProvider = () =>
|
|
|
199
199
|
if (newBranch !== oldBranch) {
|
|
200
200
|
return { action: "replace" } as const;
|
|
201
201
|
}
|
|
202
|
-
const newRoles = resolveInheritedRoles(news.inheritedRoles);
|
|
203
|
-
const oldRoles = output?.inheritedRoles ?? [];
|
|
202
|
+
const newRoles = [...resolveInheritedRoles(news.inheritedRoles)].sort();
|
|
203
|
+
const oldRoles = [...(output?.inheritedRoles ?? [])].sort();
|
|
204
204
|
if (!deepEqual(newRoles, oldRoles)) {
|
|
205
205
|
return { action: "replace" } as const;
|
|
206
206
|
}
|
package/src/Provider.ts
CHANGED
|
@@ -102,6 +102,14 @@ export interface ProviderService<
|
|
|
102
102
|
* @default 0
|
|
103
103
|
*/
|
|
104
104
|
version?: number;
|
|
105
|
+
/**
|
|
106
|
+
* Legacy type names this provider also answers to. Copied from the
|
|
107
|
+
* resource class's `aliases` option by {@link succeed}/{@link effect} so
|
|
108
|
+
* state persisted under a pre-rename type (e.g. `"Cloudflare.Queue"`
|
|
109
|
+
* before the `"Cloudflare.Queues.Queue"` rename) still resolves to this
|
|
110
|
+
* provider via {@link tryFindProviderByType}.
|
|
111
|
+
*/
|
|
112
|
+
aliases?: readonly string[];
|
|
105
113
|
/**
|
|
106
114
|
* Account-wide teardown (`alchemy unsafe nuke`) behaviour. Providers whose
|
|
107
115
|
* resources can't meaningfully be deleted opt out here so nuke doesn't
|
|
@@ -275,8 +283,14 @@ export const effect = <
|
|
|
275
283
|
LifecycleServices
|
|
276
284
|
>
|
|
277
285
|
> =>
|
|
278
|
-
|
|
279
|
-
|
|
286
|
+
Layer.effect(
|
|
287
|
+
// @ts-expect-error
|
|
288
|
+
Provider(cls.Type),
|
|
289
|
+
Effect.map(eff, (service) => ({
|
|
290
|
+
aliases: "Aliases" in cls ? cls.Aliases : undefined,
|
|
291
|
+
...service,
|
|
292
|
+
})),
|
|
293
|
+
) as any;
|
|
280
294
|
|
|
281
295
|
export const succeed = <
|
|
282
296
|
R extends ResourceLike,
|
|
@@ -310,7 +324,10 @@ export const succeed = <
|
|
|
310
324
|
>
|
|
311
325
|
> =>
|
|
312
326
|
// @ts-expect-error
|
|
313
|
-
Layer.succeed(Provider(cls.Type),
|
|
327
|
+
Layer.succeed(Provider(cls.Type), {
|
|
328
|
+
aliases: "Aliases" in cls ? cls.Aliases : undefined,
|
|
329
|
+
...service,
|
|
330
|
+
});
|
|
314
331
|
|
|
315
332
|
export interface ProviderCollectionLike {
|
|
316
333
|
kind: "ProviderCollection";
|
|
@@ -398,6 +415,20 @@ const isProviderCollectionService = (
|
|
|
398
415
|
);
|
|
399
416
|
};
|
|
400
417
|
|
|
418
|
+
/**
|
|
419
|
+
* Structural check for a {@link ProviderService} living in the Effect
|
|
420
|
+
* context. Providers are keyed by their canonical resource type; when
|
|
421
|
+
* searching for a legacy alias, the tag key won't match, so lookup has to
|
|
422
|
+
* recognize provider services by shape.
|
|
423
|
+
*/
|
|
424
|
+
const isProviderService = (value: unknown): value is ProviderService =>
|
|
425
|
+
typeof value === "object" &&
|
|
426
|
+
value !== null &&
|
|
427
|
+
"reconcile" in value &&
|
|
428
|
+
typeof (value as ProviderService).reconcile === "function" &&
|
|
429
|
+
"delete" in value &&
|
|
430
|
+
typeof (value as ProviderService).delete === "function";
|
|
431
|
+
|
|
401
432
|
export const findProviderByType: {
|
|
402
433
|
<R extends ResourceLike>(
|
|
403
434
|
resourceType: R["Type"],
|
|
@@ -448,5 +479,24 @@ export const tryFindProviderByType: {
|
|
|
448
479
|
}
|
|
449
480
|
}
|
|
450
481
|
}
|
|
482
|
+
|
|
483
|
+
// State persisted before a type rename carries the legacy name, so no
|
|
484
|
+
// provider is keyed under it. Fall back to a provider that declares the
|
|
485
|
+
// name in its `aliases` — scanning both bare Provider layers and the
|
|
486
|
+
// members of every ProviderCollection.
|
|
487
|
+
for (const value of context.mapUnsafe.values()) {
|
|
488
|
+
if (isProviderCollectionService(value)) {
|
|
489
|
+
for (const provider of Object.values(value.providers)) {
|
|
490
|
+
if (provider.aliases?.includes(resourceType)) {
|
|
491
|
+
return Option.some(provider);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
} else if (
|
|
495
|
+
isProviderService(value) &&
|
|
496
|
+
value.aliases?.includes(resourceType)
|
|
497
|
+
) {
|
|
498
|
+
return Option.some(value);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
451
501
|
return Option.none();
|
|
452
502
|
}) as any;
|
package/src/Ref.ts
CHANGED
|
@@ -20,6 +20,14 @@ export interface RefMetadata<R extends ResourceLike> {
|
|
|
20
20
|
id: R["LogicalId"];
|
|
21
21
|
stack?: string;
|
|
22
22
|
stage?: string;
|
|
23
|
+
/**
|
|
24
|
+
* The resource type of the ref's target (e.g.
|
|
25
|
+
* `"Cloudflare.KV.Namespace"`). Known statically — `MyResource.ref`
|
|
26
|
+
* carries its own type — so duck-typing classifiers (Worker env
|
|
27
|
+
* bindings, capability helpers) that read `.Type` can identify a ref
|
|
28
|
+
* exactly like a locally-declared resource.
|
|
29
|
+
*/
|
|
30
|
+
type?: string;
|
|
23
31
|
}
|
|
24
32
|
|
|
25
33
|
export const ref = <R extends ResourceLike>(
|
|
@@ -31,6 +39,7 @@ export const ref = <R extends ResourceLike>(
|
|
|
31
39
|
stack?: string;
|
|
32
40
|
stage?: string;
|
|
33
41
|
} = {},
|
|
42
|
+
type?: string,
|
|
34
43
|
): Ref<R> => {
|
|
35
44
|
const ref = new Proxy(
|
|
36
45
|
{},
|
|
@@ -41,6 +50,7 @@ export const ref = <R extends ResourceLike>(
|
|
|
41
50
|
stack,
|
|
42
51
|
stage,
|
|
43
52
|
id,
|
|
53
|
+
type,
|
|
44
54
|
} satisfies RefMetadata<R>;
|
|
45
55
|
}
|
|
46
56
|
return (Output.of(ref) as any)[prop];
|
package/src/Resource.ts
CHANGED
|
@@ -45,6 +45,13 @@ export interface ResourceClassLike<R extends ResourceLike> {
|
|
|
45
45
|
Props: R["Props"];
|
|
46
46
|
Self: Self<R>;
|
|
47
47
|
Provider: Provider<R>;
|
|
48
|
+
/**
|
|
49
|
+
* Legacy type names this resource was previously registered under
|
|
50
|
+
* (see {@link ResourceOptions.aliases}). Copied onto the
|
|
51
|
+
* `ProviderService` by `Provider.succeed`/`Provider.effect` so provider
|
|
52
|
+
* lookup can resolve state persisted under a pre-rename type.
|
|
53
|
+
*/
|
|
54
|
+
Aliases?: readonly string[];
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
export type ResourceClass<R extends ResourceLike> = ResourceConstructor<
|
|
@@ -54,6 +61,7 @@ export type ResourceClass<R extends ResourceLike> = ResourceConstructor<
|
|
|
54
61
|
Effect.Effect<ResourceConstructor<R>> & {
|
|
55
62
|
Self: Self<R>;
|
|
56
63
|
Provider: Provider<R>;
|
|
64
|
+
Aliases: readonly string[] | undefined;
|
|
57
65
|
ref(
|
|
58
66
|
id: string,
|
|
59
67
|
options?: { stage?: string; stack?: string },
|
|
@@ -70,6 +78,7 @@ export type ResourceClassWithMethods<
|
|
|
70
78
|
Effect.Effect<ResourceConstructor<R>> & {
|
|
71
79
|
Self: Self<R>;
|
|
72
80
|
Provider: Provider<R>;
|
|
81
|
+
Aliases: readonly string[] | undefined;
|
|
73
82
|
ref(
|
|
74
83
|
id: string,
|
|
75
84
|
options?: { stage?: string; stack?: string },
|
|
@@ -133,6 +142,28 @@ export const isResource = (value: any): value is ResourceLike => {
|
|
|
133
142
|
return typeof value === "object" && value !== null && "Type" in value;
|
|
134
143
|
};
|
|
135
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Does `value` reference an instance of the resource type `type` —
|
|
147
|
+
* either a locally-declared resource or a `Resource.ref(...)` to one?
|
|
148
|
+
*
|
|
149
|
+
* Two constraints that ad-hoc guards get wrong for refs, which resolve
|
|
150
|
+
* to Output-expression proxies:
|
|
151
|
+
*
|
|
152
|
+
* - Read `.Type` via property access (never `in`): the proxy answers
|
|
153
|
+
* property reads with statically-known values but deliberately does
|
|
154
|
+
* not report key existence (so {@link isResource} keeps routing refs
|
|
155
|
+
* through Output resolution instead of the upstream-node lookup).
|
|
156
|
+
* - Accept `typeof value === "function"`: the proxy's target is
|
|
157
|
+
* callable (it needs an `apply` trap), so refs are not `"object"`.
|
|
158
|
+
*
|
|
159
|
+
* Either mistake silently rejects refs — in a Worker `env` that
|
|
160
|
+
* degrades the binding to a plain JSON var.
|
|
161
|
+
*/
|
|
162
|
+
export const isResourceOfType = (value: unknown, type: string): boolean =>
|
|
163
|
+
(typeof value === "object" || typeof value === "function") &&
|
|
164
|
+
value !== null &&
|
|
165
|
+
(value as { Type?: unknown }).Type === type;
|
|
166
|
+
|
|
136
167
|
export type Resource<
|
|
137
168
|
Type extends string = any,
|
|
138
169
|
Props extends object | undefined = any,
|
|
@@ -162,6 +193,23 @@ export interface ResourceOptions {
|
|
|
162
193
|
* @default "destroy"
|
|
163
194
|
*/
|
|
164
195
|
defaultRemovalPolicy?: RemovalPolicy["Service"];
|
|
196
|
+
/**
|
|
197
|
+
* Legacy type names this resource was previously registered under.
|
|
198
|
+
*
|
|
199
|
+
* When a resource type is renamed (e.g. `"Cloudflare.Queue"` →
|
|
200
|
+
* `"Cloudflare.Queues.Queue"`), state persisted under the old name must
|
|
201
|
+
* still resolve to this resource's provider. Listing the old names here
|
|
202
|
+
* makes provider lookup fall back from the legacy name to this type, so
|
|
203
|
+
* existing stacks keep planning, updating, and deleting cleanly across
|
|
204
|
+
* the rename. The state row migrates to the new type on its next write.
|
|
205
|
+
*
|
|
206
|
+
* ```ts
|
|
207
|
+
* export const Queue = Resource<Queue>("Cloudflare.Queues.Queue", {
|
|
208
|
+
* aliases: ["Cloudflare.Queue"],
|
|
209
|
+
* });
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
aliases?: string[];
|
|
165
213
|
}
|
|
166
214
|
|
|
167
215
|
/**
|
|
@@ -312,11 +360,12 @@ export function Resource<R extends ResourceLike>(
|
|
|
312
360
|
id: string,
|
|
313
361
|
options?: { stage?: string; stack?: string },
|
|
314
362
|
): Effect.Effect<R> =>
|
|
315
|
-
Effect.succeed(Output.of(makeRef<R>(id, options)) as unknown as R),
|
|
363
|
+
Effect.succeed(Output.of(makeRef<R>(id, options, type)) as unknown as R),
|
|
316
364
|
|
|
317
365
|
Type: type,
|
|
318
366
|
Provider: ProviderTag,
|
|
319
367
|
Self: self,
|
|
368
|
+
Aliases: options?.aliases,
|
|
320
369
|
};
|
|
321
370
|
|
|
322
371
|
const ResourceClass = Object.assign(
|
package/src/Stack.ts
CHANGED
|
@@ -238,7 +238,7 @@ export const make =
|
|
|
238
238
|
` providers: Cloudflare.providers(),\n` +
|
|
239
239
|
` state: Cloudflare.state(), // <-- required\n` +
|
|
240
240
|
` }, ...)\n` +
|
|
241
|
-
`See https://v2.alchemy.run/
|
|
241
|
+
`See https://v2.alchemy.run/state-store for available state stores.`,
|
|
242
242
|
),
|
|
243
243
|
);
|
|
244
244
|
}
|
|
@@ -59,10 +59,15 @@ export const checkHttpStateStoreAuth = ({
|
|
|
59
59
|
Effect.retry({
|
|
60
60
|
while: (error) =>
|
|
61
61
|
error._tag === "HttpClientError" &&
|
|
62
|
-
|
|
63
|
-
//
|
|
64
|
-
(error.response
|
|
65
|
-
|
|
62
|
+
// transport-level failures (no response — DNS, TCP reset, TLS,
|
|
63
|
+
// "fetch failed") are as transient as the post-deploy 404s
|
|
64
|
+
(!error.response ||
|
|
65
|
+
// worker can 404 for a bit on first deploy
|
|
66
|
+
error.response.status === 404 ||
|
|
67
|
+
error.response.status >= 500),
|
|
68
|
+
// Bounded: a store that 404s/500s forever is a hard failure, not
|
|
69
|
+
// something to spin on until the process is killed.
|
|
70
|
+
schedule: Schedule.fixed(200).pipe(Schedule.both(Schedule.recurs(75))),
|
|
66
71
|
}),
|
|
67
72
|
);
|
|
68
73
|
});
|
|
@@ -226,6 +231,43 @@ const retryTransient = <A, Err, Req>(eff: Effect.Effect<A, Err, Req>) =>
|
|
|
226
231
|
),
|
|
227
232
|
});
|
|
228
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Human-readable description of a state-store client failure.
|
|
236
|
+
*
|
|
237
|
+
* Several of the errors the HTTP client can raise carry an empty
|
|
238
|
+
* `message` (e.g. the no-content `Unauthorized` the store returns on a
|
|
239
|
+
* bad bearer token), which used to surface as a blank
|
|
240
|
+
* `StateStoreError` with nothing to act on. Always produce a
|
|
241
|
+
* non-empty message: prefer the error's own message, fall back to its
|
|
242
|
+
* `_tag`/name, and append the HTTP status and any distinct `cause`
|
|
243
|
+
* message when available.
|
|
244
|
+
*/
|
|
245
|
+
export const describeStateStoreFailure = (e: unknown): string => {
|
|
246
|
+
if (!(e instanceof Error)) return String(e);
|
|
247
|
+
const tag = (e as { _tag?: unknown })._tag;
|
|
248
|
+
let message =
|
|
249
|
+
e.message.trim() ||
|
|
250
|
+
(typeof tag === "string" ? tag : undefined) ||
|
|
251
|
+
e.name ||
|
|
252
|
+
"Unknown error";
|
|
253
|
+
if (typeof tag === "string" && tag.startsWith("Unauthorized")) {
|
|
254
|
+
message =
|
|
255
|
+
"State store rejected the request as unauthorized. " +
|
|
256
|
+
"The stored state-store credentials may be stale — run 'alchemy login' to refresh them.";
|
|
257
|
+
}
|
|
258
|
+
const status = (e as { response?: { status?: unknown } }).response?.status;
|
|
259
|
+
if (typeof status === "number" && !message.includes(String(status))) {
|
|
260
|
+
message += ` (HTTP ${status})`;
|
|
261
|
+
}
|
|
262
|
+
if (e.cause instanceof Error) {
|
|
263
|
+
const causeMessage = e.cause.message.trim();
|
|
264
|
+
if (causeMessage && !message.includes(causeMessage)) {
|
|
265
|
+
message += ` — caused by: ${causeMessage}`;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return message;
|
|
269
|
+
};
|
|
270
|
+
|
|
229
271
|
/** Collapse any client failure into a {@link StateStoreError}. */
|
|
230
272
|
const mapStateStoreError = <A, E, R>(eff: Effect.Effect<A, E, R>) =>
|
|
231
273
|
eff.pipe(
|
|
@@ -234,7 +276,7 @@ const mapStateStoreError = <A, E, R>(eff: Effect.Effect<A, E, R>) =>
|
|
|
234
276
|
Effect.catch((e: E) =>
|
|
235
277
|
Effect.fail(
|
|
236
278
|
new StateStoreError({
|
|
237
|
-
message:
|
|
279
|
+
message: describeStateStoreFailure(e),
|
|
238
280
|
cause: e instanceof Error ? e : undefined,
|
|
239
281
|
}),
|
|
240
282
|
),
|