alchemy 2.0.0-beta.76 → 2.0.0-beta.77
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/README.md +1 -1
- package/THIRD_PARTY_LICENSES.md +11 -11
- package/bin/cli.js +88 -11
- package/bin/exec.js +11828 -5720
- package/bin/exec.js.map +1 -1
- package/bin/register-oxc.js +27 -0
- package/lib/AWS/AMP/Scraper.js +1 -1
- package/lib/AWS/AMP/Scraper.js.map +1 -1
- package/lib/AWS/AppRunner/Service.d.ts +11 -27
- package/lib/AWS/AppRunner/Service.d.ts.map +1 -1
- package/lib/AWS/AppRunner/Service.js +7 -21
- package/lib/AWS/AppRunner/Service.js.map +1 -1
- package/lib/AWS/Assets.d.ts +1 -1
- package/lib/AWS/Assets.js +2 -2
- package/lib/AWS/Assets.js.map +1 -1
- package/lib/AWS/AuthProvider.d.ts +40 -53
- package/lib/AWS/AuthProvider.d.ts.map +1 -1
- package/lib/AWS/AuthProvider.js +480 -215
- package/lib/AWS/AuthProvider.js.map +1 -1
- package/lib/AWS/Batch/JobDefinition.d.ts +11 -27
- package/lib/AWS/Batch/JobDefinition.d.ts.map +1 -1
- package/lib/AWS/Batch/JobDefinition.js +7 -21
- package/lib/AWS/Batch/JobDefinition.js.map +1 -1
- package/lib/AWS/EC2/GetAmi.d.ts +2 -0
- package/lib/AWS/EC2/GetAmi.d.ts.map +1 -1
- package/lib/AWS/EC2/Instance.d.ts +11 -27
- package/lib/AWS/EC2/Instance.d.ts.map +1 -1
- package/lib/AWS/EC2/Instance.js +7 -21
- package/lib/AWS/EC2/Instance.js.map +1 -1
- package/lib/AWS/EC2/hosted.d.ts +5 -6
- package/lib/AWS/EC2/hosted.d.ts.map +1 -1
- package/lib/AWS/EC2/hosted.js.map +1 -1
- package/lib/AWS/ECR/Image.d.ts +1 -1
- package/lib/AWS/ECR/ImageSource.d.ts +4 -5
- package/lib/AWS/ECR/ImageSource.d.ts.map +1 -1
- package/lib/AWS/ECR/ImageSource.js.map +1 -1
- package/lib/AWS/ECS/Service.d.ts +7 -21
- package/lib/AWS/ECS/Service.d.ts.map +1 -1
- package/lib/AWS/ECS/Service.js +7 -21
- package/lib/AWS/ECS/Service.js.map +1 -1
- package/lib/AWS/ECS/Task.d.ts +7 -21
- package/lib/AWS/ECS/Task.d.ts.map +1 -1
- package/lib/AWS/ECS/Task.js +7 -21
- package/lib/AWS/ECS/Task.js.map +1 -1
- package/lib/AWS/ElastiCache/CacheCluster.d.ts +60 -0
- package/lib/AWS/ElastiCache/CacheCluster.d.ts.map +1 -0
- package/lib/AWS/ElastiCache/CacheCluster.js +199 -0
- package/lib/AWS/ElastiCache/CacheCluster.js.map +1 -0
- package/lib/AWS/ElastiCache/ConnectCacheCluster.d.ts +46 -0
- package/lib/AWS/ElastiCache/ConnectCacheCluster.d.ts.map +1 -0
- package/lib/AWS/ElastiCache/ConnectCacheCluster.js +5 -0
- package/lib/AWS/ElastiCache/ConnectCacheCluster.js.map +1 -0
- package/lib/AWS/ElastiCache/ConnectCacheClusterHttp.d.ts +4 -0
- package/lib/AWS/ElastiCache/ConnectCacheClusterHttp.d.ts.map +1 -0
- package/lib/AWS/ElastiCache/ConnectCacheClusterHttp.js +52 -0
- package/lib/AWS/ElastiCache/ConnectCacheClusterHttp.js.map +1 -0
- package/lib/AWS/ElastiCache/ConnectReplicationGroup.d.ts +47 -0
- package/lib/AWS/ElastiCache/ConnectReplicationGroup.d.ts.map +1 -0
- package/lib/AWS/ElastiCache/ConnectReplicationGroup.js +5 -0
- package/lib/AWS/ElastiCache/ConnectReplicationGroup.js.map +1 -0
- package/lib/AWS/ElastiCache/ConnectReplicationGroupHttp.d.ts +4 -0
- package/lib/AWS/ElastiCache/ConnectReplicationGroupHttp.d.ts.map +1 -0
- package/lib/AWS/ElastiCache/ConnectReplicationGroupHttp.js +77 -0
- package/lib/AWS/ElastiCache/ConnectReplicationGroupHttp.js.map +1 -0
- package/lib/AWS/ElastiCache/ReplicationGroup.d.ts +95 -0
- package/lib/AWS/ElastiCache/ReplicationGroup.d.ts.map +1 -0
- package/lib/AWS/ElastiCache/ReplicationGroup.js +383 -0
- package/lib/AWS/ElastiCache/ReplicationGroup.js.map +1 -0
- package/lib/AWS/ElastiCache/SubnetGroup.d.ts +39 -0
- package/lib/AWS/ElastiCache/SubnetGroup.d.ts.map +1 -0
- package/lib/AWS/ElastiCache/SubnetGroup.js +136 -0
- package/lib/AWS/ElastiCache/SubnetGroup.js.map +1 -0
- package/lib/AWS/ElastiCache/index.d.ts +7 -0
- package/lib/AWS/ElastiCache/index.d.ts.map +1 -1
- package/lib/AWS/ElastiCache/index.js +7 -0
- package/lib/AWS/ElastiCache/index.js.map +1 -1
- package/lib/AWS/ElastiCache/internal.d.ts +13 -0
- package/lib/AWS/ElastiCache/internal.d.ts.map +1 -0
- package/lib/AWS/ElastiCache/internal.js +19 -0
- package/lib/AWS/ElastiCache/internal.js.map +1 -0
- package/lib/AWS/Environment.d.ts +2 -3
- package/lib/AWS/Environment.d.ts.map +1 -1
- package/lib/AWS/Environment.js +11 -41
- package/lib/AWS/Environment.js.map +1 -1
- package/lib/AWS/IAM/actions.generated.js +1 -1
- package/lib/AWS/IAM/actions.generated.js.map +1 -1
- package/lib/AWS/IdentityCenter/AccountAssignment.js +6 -0
- package/lib/AWS/IdentityCenter/AccountAssignment.js.map +1 -1
- package/lib/AWS/Lambda/Function.d.ts +14 -23
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +15 -20
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Lambda/MicrovmImage.d.ts +12 -28
- package/lib/AWS/Lambda/MicrovmImage.d.ts.map +1 -1
- package/lib/AWS/Lambda/MicrovmImage.js +8 -22
- package/lib/AWS/Lambda/MicrovmImage.js.map +1 -1
- package/lib/AWS/Local/DevWatchProvider.d.ts.map +1 -1
- package/lib/AWS/Local/DevWatchProvider.js +10 -1
- package/lib/AWS/Local/DevWatchProvider.js.map +1 -1
- package/lib/AWS/Organizations/Account.d.ts +2 -2
- package/lib/AWS/Organizations/Account.d.ts.map +1 -1
- package/lib/AWS/Organizations/Account.js +16 -8
- package/lib/AWS/Organizations/Account.js.map +1 -1
- package/lib/AWS/Organizations/DelegatedAdministrator.d.ts +2 -3
- package/lib/AWS/Organizations/DelegatedAdministrator.d.ts.map +1 -1
- package/lib/AWS/Organizations/DelegatedAdministrator.js +5 -5
- package/lib/AWS/Organizations/DelegatedAdministrator.js.map +1 -1
- package/lib/AWS/Organizations/Organization.d.ts +1 -1
- package/lib/AWS/Organizations/Organization.d.ts.map +1 -1
- package/lib/AWS/Organizations/Organization.js +2 -2
- package/lib/AWS/Organizations/Organization.js.map +1 -1
- package/lib/AWS/Organizations/common.d.ts +9 -0
- package/lib/AWS/Organizations/common.d.ts.map +1 -1
- package/lib/AWS/Organizations/common.js +13 -0
- package/lib/AWS/Organizations/common.js.map +1 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +4 -1
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/AWS/StateStore/State.d.ts +1 -1
- package/lib/AWS/StateStore/State.d.ts.map +1 -1
- package/lib/Alchemist/Errors.d.ts +31 -0
- package/lib/Alchemist/Errors.d.ts.map +1 -0
- package/lib/Alchemist/Errors.js +19 -0
- package/lib/Alchemist/Errors.js.map +1 -0
- package/lib/Alchemist/Progress.d.ts +16 -0
- package/lib/Alchemist/Progress.d.ts.map +1 -0
- package/lib/Alchemist/Progress.js +129 -0
- package/lib/Alchemist/Progress.js.map +1 -0
- package/lib/Alchemist/Runtime.d.ts +22 -0
- package/lib/Alchemist/Runtime.d.ts.map +1 -0
- package/lib/Alchemist/Runtime.js +28 -0
- package/lib/Alchemist/Runtime.js.map +1 -0
- package/lib/Alchemist/Session.d.ts +124 -0
- package/lib/Alchemist/Session.d.ts.map +1 -0
- package/lib/Alchemist/Session.js +223 -0
- package/lib/Alchemist/Session.js.map +1 -0
- package/lib/Alchemist/index.d.ts +15 -0
- package/lib/Alchemist/index.d.ts.map +1 -0
- package/lib/Alchemist/index.js +15 -0
- package/lib/Alchemist/index.js.map +1 -0
- package/lib/Alchemist/routes/aws.d.ts +21 -0
- package/lib/Alchemist/routes/aws.d.ts.map +1 -0
- package/lib/Alchemist/routes/aws.js +54 -0
- package/lib/Alchemist/routes/aws.js.map +1 -0
- package/lib/Alchemist/routes/cloudflare.d.ts +63 -0
- package/lib/Alchemist/routes/cloudflare.d.ts.map +1 -0
- package/lib/Alchemist/routes/cloudflare.js +113 -0
- package/lib/Alchemist/routes/cloudflare.js.map +1 -0
- package/lib/Alchemist/routes/cloudflareToken.d.ts +93 -0
- package/lib/Alchemist/routes/cloudflareToken.d.ts.map +1 -0
- package/lib/Alchemist/routes/cloudflareToken.js +111 -0
- package/lib/Alchemist/routes/cloudflareToken.js.map +1 -0
- package/lib/Alchemist/routes/drift.d.ts +55 -0
- package/lib/Alchemist/routes/drift.d.ts.map +1 -0
- package/lib/Alchemist/routes/drift.js +52 -0
- package/lib/Alchemist/routes/drift.js.map +1 -0
- package/lib/Alchemist/routes/logs.d.ts +41 -0
- package/lib/Alchemist/routes/logs.d.ts.map +1 -0
- package/lib/Alchemist/routes/logs.js +112 -0
- package/lib/Alchemist/routes/logs.js.map +1 -0
- package/lib/Alchemist/routes/nuke.d.ts +46 -0
- package/lib/Alchemist/routes/nuke.d.ts.map +1 -0
- package/lib/Alchemist/routes/nuke.js +80 -0
- package/lib/Alchemist/routes/nuke.js.map +1 -0
- package/lib/Alchemist/routes/profile.d.ts +133 -0
- package/lib/Alchemist/routes/profile.d.ts.map +1 -0
- package/lib/Alchemist/routes/profile.js +257 -0
- package/lib/Alchemist/routes/profile.js.map +1 -0
- package/lib/Alchemist/routes/provider.d.ts +33 -0
- package/lib/Alchemist/routes/provider.d.ts.map +1 -0
- package/lib/Alchemist/routes/provider.js +65 -0
- package/lib/Alchemist/routes/provider.js.map +1 -0
- package/lib/Alchemist/routes/stack.d.ts +78 -0
- package/lib/Alchemist/routes/stack.d.ts.map +1 -0
- package/lib/Alchemist/routes/stack.js +67 -0
- package/lib/Alchemist/routes/stack.js.map +1 -0
- package/lib/Alchemist/routes/state.d.ts +35 -0
- package/lib/Alchemist/routes/state.d.ts.map +1 -0
- package/lib/Alchemist/routes/state.js +42 -0
- package/lib/Alchemist/routes/state.js.map +1 -0
- package/lib/Apply.d.ts +8 -6
- package/lib/Apply.d.ts.map +1 -1
- package/lib/Apply.js +209 -103
- package/lib/Apply.js.map +1 -1
- package/lib/Auth/AuthProvider.d.ts +201 -25
- package/lib/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Auth/AuthProvider.js +180 -40
- package/lib/Auth/AuthProvider.js.map +1 -1
- package/lib/Auth/BrowserOAuth.d.ts +27 -0
- package/lib/Auth/BrowserOAuth.d.ts.map +1 -0
- package/lib/Auth/BrowserOAuth.js +41 -0
- package/lib/Auth/BrowserOAuth.js.map +1 -0
- package/lib/Auth/Credentials.d.ts +11 -6
- package/lib/Auth/Credentials.d.ts.map +1 -1
- package/lib/Auth/Credentials.js +62 -23
- package/lib/Auth/Credentials.js.map +1 -1
- package/lib/Auth/CredentialsCache.d.ts +15 -0
- package/lib/Auth/CredentialsCache.d.ts.map +1 -0
- package/lib/Auth/CredentialsCache.js +34 -0
- package/lib/Auth/CredentialsCache.js.map +1 -0
- package/lib/Auth/Demand.d.ts +59 -34
- package/lib/Auth/Demand.d.ts.map +1 -1
- package/lib/Auth/Demand.js +150 -60
- package/lib/Auth/Demand.js.map +1 -1
- package/lib/Auth/Env.d.ts +4 -4
- package/lib/Auth/Env.d.ts.map +1 -1
- package/lib/Auth/Env.js +18 -9
- package/lib/Auth/Env.js.map +1 -1
- package/lib/Auth/Inspect.d.ts +33 -0
- package/lib/Auth/Inspect.d.ts.map +1 -0
- package/lib/Auth/Inspect.js +67 -0
- package/lib/Auth/Inspect.js.map +1 -0
- package/lib/Auth/Lock.d.ts +6 -0
- package/lib/Auth/Lock.d.ts.map +1 -1
- package/lib/Auth/Lock.js +22 -11
- package/lib/Auth/Lock.js.map +1 -1
- package/lib/Auth/OAuthFlow.d.ts +119 -0
- package/lib/Auth/OAuthFlow.d.ts.map +1 -0
- package/lib/Auth/OAuthFlow.js +314 -0
- package/lib/Auth/OAuthFlow.js.map +1 -0
- package/lib/Auth/Paths.d.ts +18 -0
- package/lib/Auth/Paths.d.ts.map +1 -0
- package/lib/Auth/Paths.js +20 -0
- package/lib/Auth/Paths.js.map +1 -0
- package/lib/Auth/Profile.d.ts +91 -67
- package/lib/Auth/Profile.d.ts.map +1 -1
- package/lib/Auth/Profile.js +449 -92
- package/lib/Auth/Profile.js.map +1 -1
- package/lib/Auth/Resolve.d.ts +42 -0
- package/lib/Auth/Resolve.d.ts.map +1 -0
- package/lib/Auth/Resolve.js +90 -0
- package/lib/Auth/Resolve.js.map +1 -0
- package/lib/Auth/StoredAuthProvider.d.ts +84 -0
- package/lib/Auth/StoredAuthProvider.d.ts.map +1 -0
- package/lib/Auth/StoredAuthProvider.js +179 -0
- package/lib/Auth/StoredAuthProvider.js.map +1 -0
- package/lib/Auth/index.d.ts +1 -0
- package/lib/Auth/index.d.ts.map +1 -1
- package/lib/Auth/index.js +1 -0
- package/lib/Auth/index.js.map +1 -1
- package/lib/Axiom/AuthProvider.d.ts +17 -26
- package/lib/Axiom/AuthProvider.d.ts.map +1 -1
- package/lib/Axiom/AuthProvider.js +89 -172
- package/lib/Axiom/AuthProvider.js.map +1 -1
- package/lib/Axiom/Credentials.d.ts +2 -4
- package/lib/Axiom/Credentials.d.ts.map +1 -1
- package/lib/Axiom/Credentials.js +5 -10
- package/lib/Axiom/Credentials.js.map +1 -1
- package/lib/Axiom/Providers.d.ts +2 -2
- package/lib/Axiom/Providers.d.ts.map +1 -1
- package/lib/Axiom/Providers.js +3 -3
- package/lib/Axiom/Providers.js.map +1 -1
- package/lib/Bundle/Bundle.d.ts +3 -5
- package/lib/Bundle/Bundle.d.ts.map +1 -1
- package/lib/Bundle/Bundle.js.map +1 -1
- package/lib/Cli/CliKit/CliKit.d.ts +92 -0
- package/lib/Cli/CliKit/CliKit.d.ts.map +1 -0
- package/lib/Cli/CliKit/CliKit.js +27 -0
- package/lib/Cli/CliKit/CliKit.js.map +1 -0
- package/lib/Cli/CliKit/index.d.ts +9 -0
- package/lib/Cli/CliKit/index.d.ts.map +1 -0
- package/lib/Cli/CliKit/index.js +9 -0
- package/lib/Cli/CliKit/index.js.map +1 -0
- package/lib/Cli/CliKit/interaction.d.ts +13 -0
- package/lib/Cli/CliKit/interaction.d.ts.map +1 -0
- package/lib/Cli/CliKit/interaction.js +17 -0
- package/lib/Cli/CliKit/interaction.js.map +1 -0
- package/lib/Cli/CliKit/layer.d.ts +7 -0
- package/lib/Cli/CliKit/layer.d.ts.map +1 -0
- package/lib/Cli/CliKit/layer.js +34 -0
- package/lib/Cli/CliKit/layer.js.map +1 -0
- package/lib/Cli/DevOptions.d.ts +17 -0
- package/lib/Cli/DevOptions.d.ts.map +1 -0
- package/lib/Cli/DevOptions.js +16 -0
- package/lib/Cli/DevOptions.js.map +1 -0
- package/lib/Cli/Format.d.ts +5 -0
- package/lib/Cli/Format.d.ts.map +1 -0
- package/lib/Cli/Format.js +27 -0
- package/lib/Cli/Format.js.map +1 -0
- package/lib/Cli/GlobalLog.d.ts +41 -0
- package/lib/Cli/GlobalLog.d.ts.map +1 -0
- package/lib/Cli/GlobalLog.js +112 -0
- package/lib/Cli/GlobalLog.js.map +1 -0
- package/lib/Cli/LoggingCli.d.ts +4 -3
- package/lib/Cli/LoggingCli.d.ts.map +1 -1
- package/lib/Cli/LoggingCli.js +240 -100
- package/lib/Cli/LoggingCli.js.map +1 -1
- package/lib/Cli/ModeTag.d.ts +1 -1
- package/lib/Cli/ModeTag.js +1 -1
- package/lib/Cli/NamespaceTree.d.ts +18 -8
- package/lib/Cli/NamespaceTree.d.ts.map +1 -1
- package/lib/Cli/NamespaceTree.js +52 -11
- package/lib/Cli/NamespaceTree.js.map +1 -1
- package/lib/Cli/PlainCliFormatter.d.ts +11 -0
- package/lib/Cli/PlainCliFormatter.d.ts.map +1 -0
- package/lib/Cli/PlainCliFormatter.js +70 -0
- package/lib/Cli/PlainCliFormatter.js.map +1 -0
- package/lib/Cli/PropertyDiff.d.ts +37 -0
- package/lib/Cli/PropertyDiff.d.ts.map +1 -0
- package/lib/Cli/PropertyDiff.js +162 -0
- package/lib/Cli/PropertyDiff.js.map +1 -0
- package/lib/Cli/checkVersion.d.ts.map +1 -1
- package/lib/Cli/checkVersion.js +10 -6
- package/lib/Cli/checkVersion.js.map +1 -1
- package/lib/Cli/commands/aws.d.ts +2 -4
- package/lib/Cli/commands/aws.d.ts.map +1 -1
- package/lib/Cli/commands/aws.js +43 -55
- package/lib/Cli/commands/aws.js.map +1 -1
- package/lib/Cli/commands/cloudflare.d.ts +6 -7
- package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
- package/lib/Cli/commands/cloudflare.js +149 -307
- package/lib/Cli/commands/cloudflare.js.map +1 -1
- package/lib/Cli/commands/compat.d.ts +11 -0
- package/lib/Cli/commands/compat.d.ts.map +1 -0
- package/lib/Cli/commands/compat.js +19 -0
- package/lib/Cli/commands/compat.js.map +1 -0
- package/lib/Cli/commands/confirm.d.ts +33 -0
- package/lib/Cli/commands/confirm.d.ts.map +1 -0
- package/lib/Cli/commands/confirm.js +39 -0
- package/lib/Cli/commands/confirm.js.map +1 -0
- package/lib/Cli/commands/deploy.d.ts +20 -32
- package/lib/Cli/commands/deploy.d.ts.map +1 -1
- package/lib/Cli/commands/deploy.js +140 -140
- package/lib/Cli/commands/deploy.js.map +1 -1
- package/lib/Cli/commands/dev.d.ts +5 -4
- package/lib/Cli/commands/dev.d.ts.map +1 -1
- package/lib/Cli/commands/dev.js +52 -26
- package/lib/Cli/commands/dev.js.map +1 -1
- package/lib/Cli/commands/drift.d.ts +12 -0
- package/lib/Cli/commands/drift.d.ts.map +1 -0
- package/lib/Cli/commands/drift.js +68 -0
- package/lib/Cli/commands/drift.js.map +1 -0
- package/lib/Cli/commands/errors.d.ts +35 -0
- package/lib/Cli/commands/errors.d.ts.map +1 -0
- package/lib/Cli/commands/errors.js +106 -0
- package/lib/Cli/commands/errors.js.map +1 -0
- package/lib/Cli/commands/flags.d.ts +46 -0
- package/lib/Cli/commands/flags.d.ts.map +1 -0
- package/lib/Cli/commands/flags.js +98 -0
- package/lib/Cli/commands/flags.js.map +1 -0
- package/lib/Cli/commands/instrument.d.ts +3 -0
- package/lib/Cli/commands/instrument.d.ts.map +1 -0
- package/lib/Cli/commands/instrument.js +6 -0
- package/lib/Cli/commands/instrument.js.map +1 -0
- package/lib/Cli/commands/logs.d.ts +5 -4
- package/lib/Cli/commands/logs.d.ts.map +1 -1
- package/lib/Cli/commands/logs.js +63 -88
- package/lib/Cli/commands/logs.js.map +1 -1
- package/lib/Cli/commands/nuke.d.ts +3 -2
- package/lib/Cli/commands/nuke.d.ts.map +1 -1
- package/lib/Cli/commands/nuke.js +89 -588
- package/lib/Cli/commands/nuke.js.map +1 -1
- package/lib/Cli/commands/profile/commands.d.ts +9 -0
- package/lib/Cli/commands/profile/commands.d.ts.map +1 -0
- package/lib/Cli/commands/profile/commands.js +276 -0
- package/lib/Cli/commands/profile/commands.js.map +1 -0
- package/lib/Cli/commands/profile/flows.d.ts +36 -0
- package/lib/Cli/commands/profile/flows.d.ts.map +1 -0
- package/lib/Cli/commands/profile/flows.js +155 -0
- package/lib/Cli/commands/profile/flows.js.map +1 -0
- package/lib/Cli/commands/profile/hub.d.ts +8 -0
- package/lib/Cli/commands/profile/hub.d.ts.map +1 -0
- package/lib/Cli/commands/profile/hub.js +154 -0
- package/lib/Cli/commands/profile/hub.js.map +1 -0
- package/lib/Cli/commands/profile/index.d.ts +2 -0
- package/lib/Cli/commands/profile/index.d.ts.map +1 -0
- package/lib/Cli/commands/profile/index.js +2 -0
- package/lib/Cli/commands/profile/index.js.map +1 -0
- package/lib/Cli/commands/provider.d.ts +17 -0
- package/lib/Cli/commands/provider.d.ts.map +1 -0
- package/lib/Cli/commands/provider.js +44 -0
- package/lib/Cli/commands/provider.js.map +1 -0
- package/lib/Cli/commands/render.d.ts +12 -0
- package/lib/Cli/commands/render.d.ts.map +1 -0
- package/lib/Cli/commands/render.js +82 -0
- package/lib/Cli/commands/render.js.map +1 -0
- package/lib/Cli/commands/state.d.ts +8 -1
- package/lib/Cli/commands/state.d.ts.map +1 -1
- package/lib/Cli/commands/state.js +125 -248
- package/lib/Cli/commands/state.js.map +1 -1
- package/lib/Cli/components/types.d.ts +104 -0
- package/lib/Cli/components/types.d.ts.map +1 -0
- package/lib/Cli/components/types.js +4 -0
- package/lib/Cli/components/types.js.map +1 -0
- package/lib/Cli/components/ui/Data.d.ts +15 -0
- package/lib/Cli/components/ui/Data.d.ts.map +1 -0
- package/lib/Cli/components/ui/Data.js +8 -0
- package/lib/Cli/components/ui/Data.js.map +1 -0
- package/lib/Cli/components/ui/Environment.d.ts +45 -0
- package/lib/Cli/components/ui/Environment.d.ts.map +1 -0
- package/lib/Cli/components/ui/Environment.js +38 -0
- package/lib/Cli/components/ui/Environment.js.map +1 -0
- package/lib/Cli/components/ui/Feedback.d.ts +57 -0
- package/lib/Cli/components/ui/Feedback.d.ts.map +1 -0
- package/lib/Cli/components/ui/Feedback.js +83 -0
- package/lib/Cli/components/ui/Feedback.js.map +1 -0
- package/lib/Cli/components/ui/Interactive.d.ts +157 -0
- package/lib/Cli/components/ui/Interactive.d.ts.map +1 -0
- package/lib/Cli/components/ui/Interactive.js +527 -0
- package/lib/Cli/components/ui/Interactive.js.map +1 -0
- package/lib/Cli/components/ui/Layout.d.ts +74 -0
- package/lib/Cli/components/ui/Layout.d.ts.map +1 -0
- package/lib/Cli/components/ui/Layout.js +91 -0
- package/lib/Cli/components/ui/Layout.js.map +1 -0
- package/lib/Cli/components/ui/Live.d.ts +49 -0
- package/lib/Cli/components/ui/Live.d.ts.map +1 -0
- package/lib/Cli/components/ui/Live.js +43 -0
- package/lib/Cli/components/ui/Live.js.map +1 -0
- package/lib/Cli/components/ui/ProgressBar.d.ts +16 -0
- package/lib/Cli/components/ui/ProgressBar.d.ts.map +1 -0
- package/lib/Cli/components/ui/ProgressBar.js +17 -0
- package/lib/Cli/components/ui/ProgressBar.js.map +1 -0
- package/lib/Cli/components/ui/Transcript.d.ts +12 -0
- package/lib/Cli/components/ui/Transcript.d.ts.map +1 -0
- package/lib/Cli/components/ui/Transcript.js +14 -0
- package/lib/Cli/components/ui/Transcript.js.map +1 -0
- package/lib/Cli/components/ui/Typography.d.ts +17 -0
- package/lib/Cli/components/ui/Typography.d.ts.map +1 -0
- package/lib/Cli/components/ui/Typography.js +21 -0
- package/lib/Cli/components/ui/Typography.js.map +1 -0
- package/lib/Cli/components/ui/index.d.ts +16 -0
- package/lib/Cli/components/ui/index.d.ts.map +1 -0
- package/lib/Cli/components/ui/index.js +16 -0
- package/lib/Cli/components/ui/index.js.map +1 -0
- package/lib/Cli/components/view/ApprovePlan.d.ts +17 -0
- package/lib/Cli/components/view/ApprovePlan.d.ts.map +1 -0
- package/lib/Cli/components/view/ApprovePlan.js +59 -0
- package/lib/Cli/components/view/ApprovePlan.js.map +1 -0
- package/lib/Cli/components/view/Help.d.ts +4 -0
- package/lib/Cli/components/view/Help.d.ts.map +1 -0
- package/lib/Cli/components/view/Help.js +116 -0
- package/lib/Cli/components/view/Help.js.map +1 -0
- package/lib/Cli/components/view/Logo.d.ts +7 -0
- package/lib/Cli/components/view/Logo.d.ts.map +1 -0
- package/lib/Cli/components/view/Logo.js +118 -0
- package/lib/Cli/components/view/Logo.js.map +1 -0
- package/lib/Cli/components/view/Nuke.d.ts +36 -0
- package/lib/Cli/components/view/Nuke.d.ts.map +1 -0
- package/lib/Cli/components/view/Nuke.js +148 -0
- package/lib/Cli/components/view/Nuke.js.map +1 -0
- package/lib/Cli/components/view/PlanDecision.d.ts +15 -0
- package/lib/Cli/components/view/PlanDecision.d.ts.map +1 -0
- package/lib/Cli/components/view/PlanDecision.js +26 -0
- package/lib/Cli/components/view/PlanDecision.js.map +1 -0
- package/lib/Cli/components/view/PlanRow.d.ts +17 -0
- package/lib/Cli/components/view/PlanRow.d.ts.map +1 -0
- package/lib/Cli/components/view/PlanRow.js +14 -0
- package/lib/Cli/components/view/PlanRow.js.map +1 -0
- package/lib/Cli/components/view/PlanTree.d.ts +116 -0
- package/lib/Cli/components/view/PlanTree.d.ts.map +1 -0
- package/lib/Cli/components/view/PlanTree.js +207 -0
- package/lib/Cli/components/view/PlanTree.js.map +1 -0
- package/lib/Cli/components/view/PlanView.d.ts +42 -0
- package/lib/Cli/components/view/PlanView.d.ts.map +1 -0
- package/lib/Cli/components/view/PlanView.js +310 -0
- package/lib/Cli/components/view/PlanView.js.map +1 -0
- package/lib/Cli/components/view/Profile.d.ts +130 -0
- package/lib/Cli/components/view/Profile.d.ts.map +1 -0
- package/lib/Cli/components/view/Profile.js +147 -0
- package/lib/Cli/components/view/Profile.js.map +1 -0
- package/lib/Cli/components/view/ProfileDashboard.d.ts +152 -0
- package/lib/Cli/components/view/ProfileDashboard.d.ts.map +1 -0
- package/lib/Cli/components/view/ProfileDashboard.js +485 -0
- package/lib/Cli/components/view/ProfileDashboard.js.map +1 -0
- package/lib/Cli/components/view/Prompts.d.ts +10 -0
- package/lib/Cli/components/view/Prompts.d.ts.map +1 -0
- package/lib/Cli/components/view/Prompts.js +440 -0
- package/lib/Cli/components/view/Prompts.js.map +1 -0
- package/lib/Cli/components/view/Runtime.d.ts +8 -0
- package/lib/Cli/components/view/Runtime.d.ts.map +1 -0
- package/lib/Cli/components/view/Runtime.js +670 -0
- package/lib/Cli/components/view/Runtime.js.map +1 -0
- package/lib/Cli/components/view/SigilCli.d.ts +5 -0
- package/lib/Cli/components/view/SigilCli.d.ts.map +1 -0
- package/lib/Cli/components/view/SigilCli.js +134 -0
- package/lib/Cli/components/view/SigilCli.js.map +1 -0
- package/lib/Cli/components/view/StackOutputs.d.ts +10 -0
- package/lib/Cli/components/view/StackOutputs.d.ts.map +1 -0
- package/lib/Cli/components/view/StackOutputs.js +14 -0
- package/lib/Cli/components/view/StackOutputs.js.map +1 -0
- package/lib/Cli/components/view/StateExplorer.d.ts +118 -0
- package/lib/Cli/components/view/StateExplorer.d.ts.map +1 -0
- package/lib/Cli/components/view/StateExplorer.js +664 -0
- package/lib/Cli/components/view/StateExplorer.js.map +1 -0
- package/lib/Cli/components/view/statusStyle.d.ts +18 -0
- package/lib/Cli/components/view/statusStyle.d.ts.map +1 -0
- package/lib/Cli/components/view/statusStyle.js +69 -0
- package/lib/Cli/components/view/statusStyle.js.map +1 -0
- package/lib/Cli/components/view/usePlanPresentation.d.ts +25 -0
- package/lib/Cli/components/view/usePlanPresentation.d.ts.map +1 -0
- package/lib/Cli/components/view/usePlanPresentation.js +54 -0
- package/lib/Cli/components/view/usePlanPresentation.js.map +1 -0
- package/lib/Cli/components/view/usePlanViewport.d.ts +31 -0
- package/lib/Cli/components/view/usePlanViewport.d.ts.map +1 -0
- package/lib/Cli/components/view/usePlanViewport.js +113 -0
- package/lib/Cli/components/view/usePlanViewport.js.map +1 -0
- package/lib/Cli/exec.d.ts +5 -1
- package/lib/Cli/exec.d.ts.map +1 -1
- package/lib/Cli/exec.js +173 -19
- package/lib/Cli/exec.js.map +1 -1
- package/lib/Cli/main.d.ts +4 -1
- package/lib/Cli/main.d.ts.map +1 -1
- package/lib/Cli/main.js +129 -38
- package/lib/Cli/main.js.map +1 -1
- package/lib/Cli/selectCli.d.ts +5 -3
- package/lib/Cli/selectCli.d.ts.map +1 -1
- package/lib/Cli/selectCli.js +16 -9
- package/lib/Cli/selectCli.js.map +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.d.ts +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.js +1 -1
- package/lib/Cloudflare/Auth/AuthConfig.d.ts +60 -0
- package/lib/Cloudflare/Auth/AuthConfig.d.ts.map +1 -0
- package/lib/Cloudflare/Auth/AuthConfig.js +68 -0
- package/lib/Cloudflare/Auth/AuthConfig.js.map +1 -0
- package/lib/Cloudflare/Auth/AuthProvider.d.ts +2 -142
- package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Auth/AuthProvider.js +473 -327
- package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
- package/lib/Cloudflare/Auth/OAuthClient.d.ts +16 -48
- package/lib/Cloudflare/Auth/OAuthClient.d.ts.map +1 -1
- package/lib/Cloudflare/Auth/OAuthClient.js +25 -260
- package/lib/Cloudflare/Auth/OAuthClient.js.map +1 -1
- package/lib/Cloudflare/Auth/OAuthScopes.d.ts +88 -0
- package/lib/Cloudflare/Auth/OAuthScopes.d.ts.map +1 -0
- package/lib/Cloudflare/Auth/OAuthScopes.js +887 -0
- package/lib/Cloudflare/Auth/OAuthScopes.js.map +1 -0
- package/lib/Cloudflare/Auth/TokenPolicy.d.ts +34 -0
- package/lib/Cloudflare/Auth/TokenPolicy.d.ts.map +1 -0
- package/lib/Cloudflare/Auth/TokenPolicy.js +51 -0
- package/lib/Cloudflare/Auth/TokenPolicy.js.map +1 -0
- package/lib/Cloudflare/CloudflareEnvironment.d.ts +2 -3
- package/lib/Cloudflare/CloudflareEnvironment.d.ts.map +1 -1
- package/lib/Cloudflare/CloudflareEnvironment.js +7 -11
- package/lib/Cloudflare/CloudflareEnvironment.js.map +1 -1
- package/lib/Cloudflare/Containers/Container.d.ts +10 -25
- package/lib/Cloudflare/Containers/Container.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/Container.js +9 -23
- package/lib/Cloudflare/Containers/Container.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts +12 -27
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
- package/lib/Cloudflare/Containers/StartContainer.d.ts +1 -1
- package/lib/Cloudflare/Containers/StartContainer.d.ts.map +1 -1
- package/lib/Cloudflare/Credentials.d.ts +6 -20
- package/lib/Cloudflare/Credentials.d.ts.map +1 -1
- package/lib/Cloudflare/Credentials.js +12 -54
- package/lib/Cloudflare/Credentials.js.map +1 -1
- package/lib/Cloudflare/D1/ImportDatabase.d.ts +1 -1
- package/lib/Cloudflare/D1/ImportDatabase.d.ts.map +1 -1
- package/lib/Cloudflare/EdgeSession.d.ts +1 -1
- package/lib/Cloudflare/EdgeSession.d.ts.map +1 -1
- package/lib/Cloudflare/EdgeSession.js +1 -1
- package/lib/Cloudflare/EdgeSession.js.map +1 -1
- package/lib/Cloudflare/Logs.d.ts.map +1 -1
- package/lib/Cloudflare/Logs.js +10 -6
- package/lib/Cloudflare/Logs.js.map +1 -1
- package/lib/Cloudflare/Pages/Project.d.ts +1 -1
- package/lib/Cloudflare/Pages/Project.js +1 -1
- package/lib/Cloudflare/Providers.d.ts +2 -2
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +2 -2
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +3 -0
- package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/Api.js +2 -2
- package/lib/Cloudflare/StateStore/Api.js.map +1 -1
- package/lib/Cloudflare/StateStore/CredentialsFile.d.ts +10 -6
- package/lib/Cloudflare/StateStore/CredentialsFile.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/CredentialsFile.js +23 -1
- package/lib/Cloudflare/StateStore/CredentialsFile.js.map +1 -1
- package/lib/Cloudflare/StateStore/State.d.ts +9 -5
- package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
- package/lib/Cloudflare/StateStore/State.js +132 -99
- package/lib/Cloudflare/StateStore/State.js.map +1 -1
- package/lib/Cloudflare/Vectorize/SearchIndexHttpClient.js +1 -1
- package/lib/Cloudflare/Vectorize/SearchIndexHttpClient.js.map +1 -1
- package/lib/Cloudflare/Website/Nextjs.d.ts.map +1 -1
- package/lib/Cloudflare/Website/Nextjs.js +4 -12
- package/lib/Cloudflare/Website/Nextjs.js.map +1 -1
- package/lib/Cloudflare/Website/Vocs.d.ts +1 -1
- package/lib/Cloudflare/Website/Vocs.d.ts.map +1 -1
- package/lib/Cloudflare/Website/Vocs.js +3 -7
- package/lib/Cloudflare/Website/Vocs.js.map +1 -1
- package/lib/Cloudflare/Workers/Assets.d.ts +2 -2
- package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Assets.js +74 -26
- package/lib/Cloudflare/Workers/Assets.js.map +1 -1
- package/lib/Cloudflare/Workers/BrowserHttpClient.d.ts +2 -2
- package/lib/Cloudflare/Workers/BrowserHttpClient.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/BrowserHttpClient.js +10 -3
- package/lib/Cloudflare/Workers/BrowserHttpClient.js.map +1 -1
- package/lib/Cloudflare/Workers/CloudflareTracer.d.ts +9 -0
- package/lib/Cloudflare/Workers/CloudflareTracer.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/CloudflareTracer.js +87 -0
- package/lib/Cloudflare/Workers/CloudflareTracer.js.map +1 -0
- package/lib/Cloudflare/Workers/Compatibility.d.ts +13 -0
- package/lib/Cloudflare/Workers/Compatibility.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Compatibility.js +31 -6
- package/lib/Cloudflare/Workers/Compatibility.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.d.ts +50 -4
- package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.js +44 -3
- package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectBridge.js +4 -0
- package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectState.d.ts +25 -2
- package/lib/Cloudflare/Workers/DurableObjectState.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectState.js +7 -2
- package/lib/Cloudflare/Workers/DurableObjectState.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectStorage.d.ts +7 -1
- package/lib/Cloudflare/Workers/DurableObjectStorage.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectStorage.js +6 -1
- package/lib/Cloudflare/Workers/DurableObjectStorage.js.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +125 -58
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/RpcWorker.d.ts +12 -5
- package/lib/Cloudflare/Workers/RpcWorker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/RpcWorker.js +8 -2
- package/lib/Cloudflare/Workers/RpcWorker.js.map +1 -1
- package/lib/Cloudflare/Workers/Source.d.ts +3 -0
- package/lib/Cloudflare/Workers/Source.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Source.js +3 -1
- package/lib/Cloudflare/Workers/Source.js.map +1 -1
- package/lib/Cloudflare/Workers/Sources/Python.d.ts +2 -0
- package/lib/Cloudflare/Workers/Sources/Python.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Sources/Python.js +16 -12
- package/lib/Cloudflare/Workers/Sources/Python.js.map +1 -1
- package/lib/Cloudflare/Workers/Sources/Rolldown.js +1 -1
- package/lib/Cloudflare/Workers/Sources/Rolldown.js.map +1 -1
- package/lib/Cloudflare/Workers/Sources/Vite.d.ts +1 -1
- package/lib/Cloudflare/Workers/Sources/Vite.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Sources/Vite.js +6 -4
- package/lib/Cloudflare/Workers/Sources/Vite.js.map +1 -1
- package/lib/Cloudflare/Workers/Telemetry.d.ts +113 -0
- package/lib/Cloudflare/Workers/Telemetry.d.ts.map +1 -0
- package/lib/Cloudflare/Workers/Telemetry.js +129 -0
- package/lib/Cloudflare/Workers/Telemetry.js.map +1 -0
- package/lib/Cloudflare/Workers/ViteBuildChildRunner.js +6 -1
- package/lib/Cloudflare/Workers/ViteBuildChildRunner.js.map +1 -1
- package/lib/Cloudflare/Workers/ViteChild.d.ts +2 -2
- package/lib/Cloudflare/Workers/ViteChild.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/ViteChild.js +19 -17
- package/lib/Cloudflare/Workers/ViteChild.js.map +1 -1
- package/lib/Cloudflare/Workers/ViteChild.shared.d.ts +1 -0
- package/lib/Cloudflare/Workers/ViteChild.shared.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/ViteChild.shared.js.map +1 -1
- package/lib/Cloudflare/Workers/ViteChildRunner.js +2 -1
- package/lib/Cloudflare/Workers/ViteChildRunner.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +101 -52
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +91 -50
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +9 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +23 -0
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +6 -0
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerLoader.d.ts +30 -4
- package/lib/Cloudflare/Workers/WorkerLoader.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerLoader.js +36 -5
- 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 +52 -45
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/cloudflare_workers.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/cloudflare_workers.js +4 -1
- package/lib/Cloudflare/Workers/cloudflare_workers.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/Workflows/Workflow.d.ts +84 -0
- package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
- package/lib/Cloudflare/Workflows/Workflow.js +47 -0
- package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
- package/lib/Cloudflare/Workflows/WorkflowBridge.js +7 -4
- package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
- package/lib/Command/Command.d.ts +1 -1
- package/lib/Command/Command.d.ts.map +1 -1
- package/lib/Command/Command.js +2 -2
- package/lib/Command/Command.js.map +1 -1
- package/lib/Command/Dev.d.ts +5 -2
- package/lib/Command/Dev.d.ts.map +1 -1
- package/lib/Command/Dev.js +31 -7
- package/lib/Command/Dev.js.map +1 -1
- package/lib/Command/Providers.d.ts +1 -1
- package/lib/Command/Providers.d.ts.map +1 -1
- package/lib/Deploy.d.ts +1 -1
- package/lib/Deploy.d.ts.map +1 -1
- package/lib/Destroy.d.ts +1 -1
- package/lib/Destroy.d.ts.map +1 -1
- package/lib/Docker/BuildHash.d.ts +13 -0
- package/lib/Docker/BuildHash.d.ts.map +1 -1
- package/lib/Docker/BuildHash.js +53 -3
- package/lib/Docker/BuildHash.js.map +1 -1
- package/lib/Docker/Docker.d.ts +1 -1
- package/lib/Docker/Docker.d.ts.map +1 -1
- package/lib/Docker/Docker.js +1 -1
- package/lib/Docker/Docker.js.map +1 -1
- package/lib/Docker/Service.d.ts +7 -21
- package/lib/Docker/Service.d.ts.map +1 -1
- package/lib/Docker/Service.js +7 -21
- package/lib/Docker/Service.js.map +1 -1
- package/lib/Docker/ServiceImage.d.ts +4 -5
- package/lib/Docker/ServiceImage.d.ts.map +1 -1
- package/lib/Docker/ServiceImage.js.map +1 -1
- package/lib/Drift.d.ts +91 -0
- package/lib/Drift.d.ts.map +1 -0
- package/lib/{Sync.js → Drift.js} +98 -29
- package/lib/Drift.js.map +1 -0
- package/lib/Drizzle/Schema.d.ts.map +1 -1
- package/lib/Drizzle/Schema.js +5 -5
- package/lib/Drizzle/Schema.js.map +1 -1
- package/lib/Fly/App.d.ts +1 -1
- package/lib/Fly/App.d.ts.map +1 -1
- package/lib/Fly/AuthProvider.d.ts +6 -20
- package/lib/Fly/AuthProvider.d.ts.map +1 -1
- package/lib/Fly/AuthProvider.js +32 -124
- package/lib/Fly/AuthProvider.js.map +1 -1
- package/lib/Fly/Bucket.d.ts +1 -1
- package/lib/Fly/Bucket.d.ts.map +1 -1
- package/lib/Fly/Catalog.d.ts +1 -1
- package/lib/Fly/Catalog.d.ts.map +1 -1
- package/lib/Fly/CheckpointHttp.d.ts.map +1 -1
- package/lib/Fly/CheckpointHttp.js +2 -2
- package/lib/Fly/CheckpointHttp.js.map +1 -1
- package/lib/Fly/Credentials.d.ts +15 -6
- package/lib/Fly/Credentials.d.ts.map +1 -1
- package/lib/Fly/Credentials.js +25 -13
- package/lib/Fly/Credentials.js.map +1 -1
- package/lib/Fly/DecryptHttp.d.ts.map +1 -1
- package/lib/Fly/DecryptHttp.js +2 -2
- package/lib/Fly/DecryptHttp.js.map +1 -1
- package/lib/Fly/EncryptHttp.d.ts.map +1 -1
- package/lib/Fly/EncryptHttp.js +2 -2
- package/lib/Fly/EncryptHttp.js.map +1 -1
- package/lib/Fly/Environment.d.ts +1 -1
- package/lib/Fly/Environment.d.ts.map +1 -1
- package/lib/Fly/ExecHttp.d.ts.map +1 -1
- package/lib/Fly/ExecHttp.js +2 -2
- package/lib/Fly/ExecHttp.js.map +1 -1
- package/lib/Fly/GetSecretHttp.d.ts.map +1 -1
- package/lib/Fly/GetSecretHttp.js +2 -2
- package/lib/Fly/GetSecretHttp.js.map +1 -1
- package/lib/Fly/ListSecretsHttp.d.ts.map +1 -1
- package/lib/Fly/ListSecretsHttp.js +2 -2
- package/lib/Fly/ListSecretsHttp.js.map +1 -1
- package/lib/Fly/Machine.d.ts +65 -0
- package/lib/Fly/Machine.d.ts.map +1 -1
- package/lib/Fly/Machine.js +34 -19
- package/lib/Fly/Machine.js.map +1 -1
- package/lib/Fly/Postgres.d.ts +1 -1
- package/lib/Fly/Postgres.d.ts.map +1 -1
- package/lib/Fly/Providers.d.ts +1 -1
- package/lib/Fly/Providers.d.ts.map +1 -1
- package/lib/Fly/Providers.js +2 -2
- package/lib/Fly/Providers.js.map +1 -1
- package/lib/Fly/Redis.d.ts +1 -1
- package/lib/Fly/Redis.d.ts.map +1 -1
- package/lib/Fly/Service.d.ts +43 -0
- package/lib/Fly/Service.d.ts.map +1 -1
- package/lib/Fly/Service.js +44 -19
- package/lib/Fly/Service.js.map +1 -1
- package/lib/Fly/SignHttp.d.ts.map +1 -1
- package/lib/Fly/SignHttp.js +2 -2
- package/lib/Fly/SignHttp.js.map +1 -1
- package/lib/Fly/VerifyHttp.d.ts.map +1 -1
- package/lib/Fly/VerifyHttp.js +2 -2
- package/lib/Fly/VerifyHttp.js.map +1 -1
- package/lib/Fly/Volume.d.ts +8 -8
- package/lib/Fly/Volume.d.ts.map +1 -1
- package/lib/Fly/WriteSecretHttp.d.ts.map +1 -1
- package/lib/Fly/WriteSecretHttp.js +2 -2
- package/lib/Fly/WriteSecretHttp.js.map +1 -1
- package/lib/Fly/replicas.d.ts +12 -10
- package/lib/Fly/replicas.d.ts.map +1 -1
- package/lib/Fly/replicas.js +35 -0
- package/lib/Fly/replicas.js.map +1 -1
- package/lib/GitHub/AuthProvider.d.ts +20 -29
- package/lib/GitHub/AuthProvider.d.ts.map +1 -1
- package/lib/GitHub/AuthProvider.js +141 -75
- package/lib/GitHub/AuthProvider.js.map +1 -1
- package/lib/GitHub/Credentials.d.ts +2 -3
- package/lib/GitHub/Credentials.d.ts.map +1 -1
- package/lib/GitHub/Credentials.js +6 -10
- package/lib/GitHub/Credentials.js.map +1 -1
- package/lib/GitHub/Providers.d.ts +3 -3
- package/lib/GitHub/Providers.d.ts.map +1 -1
- package/lib/GitHub/Providers.js +4 -4
- package/lib/GitHub/Providers.js.map +1 -1
- package/lib/Hetzner/AuthProvider.d.ts +7 -20
- package/lib/Hetzner/AuthProvider.d.ts.map +1 -1
- package/lib/Hetzner/AuthProvider.js +42 -130
- package/lib/Hetzner/AuthProvider.js.map +1 -1
- package/lib/Hetzner/Catalog.d.ts +5 -5
- package/lib/Hetzner/Catalog.d.ts.map +1 -1
- package/lib/Hetzner/Credentials.d.ts +1 -3
- package/lib/Hetzner/Credentials.d.ts.map +1 -1
- package/lib/Hetzner/Credentials.js +4 -9
- package/lib/Hetzner/Credentials.js.map +1 -1
- package/lib/Hetzner/PlacementGroup.d.ts +1 -1
- package/lib/Hetzner/PlacementGroup.d.ts.map +1 -1
- package/lib/Hetzner/Providers.d.ts +1 -1
- package/lib/Hetzner/Providers.d.ts.map +1 -1
- package/lib/Hetzner/Providers.js +2 -2
- package/lib/Hetzner/Providers.js.map +1 -1
- package/lib/Hetzner/hosted.d.ts +1 -1
- package/lib/Interaction.d.ts +186 -0
- package/lib/Interaction.d.ts.map +1 -0
- package/lib/Interaction.js +149 -0
- package/lib/Interaction.js.map +1 -0
- package/lib/Kubernetes/ClusterAdapter.d.ts +4 -5
- package/lib/Kubernetes/ClusterAdapter.d.ts.map +1 -1
- package/lib/Kubernetes/ClusterAdapter.js.map +1 -1
- package/lib/Kubernetes/Deployment.d.ts +7 -21
- package/lib/Kubernetes/Deployment.d.ts.map +1 -1
- package/lib/Kubernetes/Deployment.js +7 -21
- package/lib/Kubernetes/Deployment.js.map +1 -1
- package/lib/Kubernetes/Job.d.ts +7 -21
- package/lib/Kubernetes/Job.d.ts.map +1 -1
- package/lib/Kubernetes/Job.js +7 -21
- package/lib/Kubernetes/Job.js.map +1 -1
- package/lib/Local/DevLog.d.ts +32 -0
- package/lib/Local/DevLog.d.ts.map +1 -0
- package/lib/Local/DevLog.js +114 -0
- package/lib/Local/DevLog.js.map +1 -0
- package/lib/Local/LocalProvider.d.ts +1 -1
- package/lib/Local/LocalProvider.d.ts.map +1 -1
- package/lib/Local/LocalProvider.js +2 -2
- package/lib/Local/LocalProvider.js.map +1 -1
- package/lib/Local/RpcServer.d.ts.map +1 -1
- package/lib/Local/RpcServer.js +10 -1
- package/lib/Local/RpcServer.js.map +1 -1
- package/lib/Local/RpcServerEnvironment.d.ts +2 -2
- package/lib/Local/RpcServerEnvironment.d.ts.map +1 -1
- package/lib/Local/RpcServerEnvironment.js +3 -2
- package/lib/Local/RpcServerEnvironment.js.map +1 -1
- package/lib/Local/RpcSpawner.d.ts +14 -5
- package/lib/Local/RpcSpawner.d.ts.map +1 -1
- package/lib/Local/RpcSpawner.js +105 -38
- package/lib/Local/RpcSpawner.js.map +1 -1
- package/lib/Neon/AuthProvider.d.ts +4 -13
- package/lib/Neon/AuthProvider.d.ts.map +1 -1
- package/lib/Neon/AuthProvider.js +24 -107
- package/lib/Neon/AuthProvider.js.map +1 -1
- package/lib/Neon/Credentials.d.ts +1 -3
- package/lib/Neon/Credentials.d.ts.map +1 -1
- package/lib/Neon/Credentials.js +4 -9
- package/lib/Neon/Credentials.js.map +1 -1
- package/lib/Neon/Providers.d.ts +1 -1
- package/lib/Neon/Providers.d.ts.map +1 -1
- package/lib/Neon/Providers.js +2 -2
- package/lib/Neon/Providers.js.map +1 -1
- package/lib/Nuke.d.ts +89 -0
- package/lib/Nuke.d.ts.map +1 -0
- package/lib/Nuke.js +265 -0
- package/lib/Nuke.js.map +1 -0
- package/lib/Plan.d.ts +27 -5
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +167 -21
- package/lib/Plan.js.map +1 -1
- package/lib/Planetscale/AuthProvider.d.ts +25 -37
- package/lib/Planetscale/AuthProvider.d.ts.map +1 -1
- package/lib/Planetscale/AuthProvider.js +267 -150
- package/lib/Planetscale/AuthProvider.js.map +1 -1
- package/lib/Planetscale/Credentials.d.ts +2 -3
- package/lib/Planetscale/Credentials.d.ts.map +1 -1
- package/lib/Planetscale/Credentials.js +16 -13
- package/lib/Planetscale/Credentials.js.map +1 -1
- package/lib/Planetscale/OAuthClient.d.ts +8 -52
- package/lib/Planetscale/OAuthClient.d.ts.map +1 -1
- package/lib/Planetscale/OAuthClient.js +18 -240
- package/lib/Planetscale/OAuthClient.js.map +1 -1
- package/lib/Planetscale/Providers.d.ts +1 -1
- package/lib/Planetscale/Providers.d.ts.map +1 -1
- package/lib/Planetscale/Providers.js +2 -2
- package/lib/Planetscale/Providers.js.map +1 -1
- package/lib/Planetscale/Util.d.ts +1 -1
- package/lib/Planetscale/Util.d.ts.map +1 -1
- package/lib/Prisma/AuthProvider.d.ts +7 -15
- package/lib/Prisma/AuthProvider.d.ts.map +1 -1
- package/lib/Prisma/AuthProvider.js +54 -121
- package/lib/Prisma/AuthProvider.js.map +1 -1
- package/lib/Prisma/Compute.d.ts +7 -21
- package/lib/Prisma/Compute.d.ts.map +1 -1
- package/lib/Prisma/Compute.js +7 -21
- package/lib/Prisma/Compute.js.map +1 -1
- package/lib/Prisma/PrismaEnvironment.d.ts +1 -2
- package/lib/Prisma/PrismaEnvironment.d.ts.map +1 -1
- package/lib/Prisma/PrismaEnvironment.js +3 -8
- package/lib/Prisma/PrismaEnvironment.js.map +1 -1
- package/lib/Prisma/Providers.d.ts +3 -3
- package/lib/Prisma/Providers.d.ts.map +1 -1
- package/lib/Prisma/Providers.js +7 -7
- package/lib/Prisma/Providers.js.map +1 -1
- package/lib/Provider.d.ts +10 -2
- package/lib/Provider.d.ts.map +1 -1
- package/lib/Provider.js +9 -10
- package/lib/Provider.js.map +1 -1
- package/lib/Railway/AuditLog.d.ts +2 -2
- package/lib/Railway/AuditLog.d.ts.map +1 -1
- package/lib/Railway/AuthProvider.d.ts +19 -19
- package/lib/Railway/AuthProvider.d.ts.map +1 -1
- package/lib/Railway/AuthProvider.js +193 -127
- package/lib/Railway/AuthProvider.js.map +1 -1
- package/lib/Railway/Bucket.js +2 -2
- package/lib/Railway/CloudAgent.js +2 -2
- package/lib/Railway/Credentials.d.ts +2 -5
- package/lib/Railway/Credentials.d.ts.map +1 -1
- package/lib/Railway/Credentials.js +5 -11
- package/lib/Railway/Credentials.js.map +1 -1
- package/lib/Railway/CustomDomain.js +3 -3
- package/lib/Railway/Function.js +6 -6
- package/lib/Railway/Group.js +2 -2
- package/lib/Railway/LoginSession.d.ts +3 -3
- package/lib/Railway/LoginSession.js +5 -5
- package/lib/Railway/Mongo.js +13 -13
- package/lib/Railway/MySQL.js +13 -13
- package/lib/Railway/Postgres.js +13 -13
- package/lib/Railway/PrivateNetwork.js +2 -2
- package/lib/Railway/Project.d.ts +3 -3
- package/lib/Railway/Project.d.ts.map +1 -1
- package/lib/Railway/Project.js +3 -3
- package/lib/Railway/ProjectEnvironment.js +3 -3
- package/lib/Railway/Providers.d.ts +1 -1
- package/lib/Railway/Providers.d.ts.map +1 -1
- package/lib/Railway/Providers.js +2 -2
- package/lib/Railway/Providers.js.map +1 -1
- package/lib/Railway/Redis.js +5 -5
- package/lib/Railway/Sandbox.d.ts +6 -6
- package/lib/Railway/Sandbox.js +5 -5
- package/lib/Railway/Service.d.ts +72 -1
- package/lib/Railway/Service.d.ts.map +1 -1
- package/lib/Railway/Service.js +42 -0
- package/lib/Railway/Service.js.map +1 -1
- package/lib/Railway/ServiceDomain.d.ts +28 -2
- package/lib/Railway/ServiceDomain.d.ts.map +1 -1
- package/lib/Railway/ServiceDomain.js +134 -17
- package/lib/Railway/ServiceDomain.js.map +1 -1
- package/lib/Railway/ServiceProvider.d.ts +2 -10
- package/lib/Railway/ServiceProvider.d.ts.map +1 -1
- package/lib/Railway/ServiceProvider.js +170 -64
- package/lib/Railway/ServiceProvider.js.map +1 -1
- package/lib/Railway/TcpProxy.js +2 -2
- package/lib/Railway/Template.js +2 -2
- package/lib/Railway/Usage.js +2 -2
- package/lib/Railway/Variable.js +2 -2
- package/lib/Railway/Volume.d.ts +1 -1
- package/lib/Railway/Volume.d.ts.map +1 -1
- package/lib/Railway/Volume.js +4 -4
- package/lib/Railway/VolumeBackup.d.ts +2 -2
- package/lib/Railway/VolumeBackup.js +8 -8
- package/lib/Railway/local-context.d.ts +125 -0
- package/lib/Railway/local-context.d.ts.map +1 -0
- package/lib/Railway/local-context.js +254 -0
- package/lib/Railway/local-context.js.map +1 -0
- package/lib/Report.d.ts +248 -0
- package/lib/Report.d.ts.map +1 -0
- package/lib/Report.js +18 -0
- package/lib/Report.js.map +1 -0
- package/lib/Stack.d.ts +7 -6
- package/lib/Stack.d.ts.map +1 -1
- package/lib/Stack.js +2 -4
- package/lib/Stack.js.map +1 -1
- package/lib/State/Export.d.ts +6 -4
- package/lib/State/Export.d.ts.map +1 -1
- package/lib/State/Export.js +13 -18
- package/lib/State/Export.js.map +1 -1
- package/lib/State/HttpStateStore.d.ts +1 -1
- package/lib/State/HttpStateStore.d.ts.map +1 -1
- package/lib/State/HttpStateStore.js +10 -6
- package/lib/State/HttpStateStore.js.map +1 -1
- package/lib/State/LocalState.d.ts.map +1 -1
- package/lib/State/LocalState.js +6 -13
- package/lib/State/LocalState.js.map +1 -1
- package/lib/State/Tree.d.ts +62 -0
- package/lib/State/Tree.d.ts.map +1 -0
- package/lib/State/Tree.js +166 -0
- package/lib/State/Tree.js.map +1 -0
- package/lib/State/index.d.ts +1 -0
- package/lib/State/index.d.ts.map +1 -1
- package/lib/State/index.js +1 -0
- package/lib/State/index.js.map +1 -1
- package/lib/Telemetry/Layer.d.ts +6 -0
- package/lib/Telemetry/Layer.d.ts.map +1 -1
- package/lib/Telemetry/Layer.js +16 -5
- package/lib/Telemetry/Layer.js.map +1 -1
- package/lib/Telemetry.d.ts +5 -0
- package/lib/Telemetry.d.ts.map +1 -1
- package/lib/Telemetry.js +6 -1
- package/lib/Telemetry.js.map +1 -1
- package/lib/Test/Core.d.ts +4 -3
- package/lib/Test/Core.d.ts.map +1 -1
- package/lib/Test/Core.js +5 -3
- package/lib/Test/Core.js.map +1 -1
- package/lib/UserFacingError.d.ts +26 -0
- package/lib/UserFacingError.d.ts.map +1 -0
- package/lib/UserFacingError.js +25 -0
- package/lib/UserFacingError.js.map +1 -0
- package/lib/Util/AtomicFile.d.ts +19 -0
- package/lib/Util/AtomicFile.d.ts.map +1 -0
- package/lib/Util/AtomicFile.js +22 -0
- package/lib/Util/AtomicFile.js.map +1 -0
- package/lib/Util/ConsoleSink.d.ts +4 -0
- package/lib/Util/ConsoleSink.d.ts.map +1 -0
- package/lib/Util/ConsoleSink.js +24 -0
- package/lib/Util/ConsoleSink.js.map +1 -0
- package/lib/Util/LineBuffer.d.ts +9 -0
- package/lib/Util/LineBuffer.d.ts.map +1 -0
- package/lib/Util/LineBuffer.js +23 -0
- package/lib/Util/LineBuffer.js.map +1 -0
- package/lib/Util/Memoize.d.ts +20 -0
- package/lib/Util/Memoize.d.ts.map +1 -0
- package/lib/Util/Memoize.js +38 -0
- package/lib/Util/Memoize.js.map +1 -0
- package/lib/Util/Node.d.ts +22 -5
- package/lib/Util/Node.d.ts.map +1 -1
- package/lib/Util/Node.js +30 -10
- package/lib/Util/Node.js.map +1 -1
- package/lib/Util/PlatformServices.d.ts +6 -2
- package/lib/Util/PlatformServices.d.ts.map +1 -1
- package/lib/Util/PlatformServices.js +6 -2
- package/lib/Util/PlatformServices.js.map +1 -1
- package/lib/Util/ResourceOutput.d.ts +30 -0
- package/lib/Util/ResourceOutput.d.ts.map +1 -0
- package/lib/Util/ResourceOutput.js +60 -0
- package/lib/Util/ResourceOutput.js.map +1 -0
- package/lib/Util/Terminal.d.ts +23 -0
- package/lib/Util/Terminal.d.ts.map +1 -0
- package/lib/Util/Terminal.js +57 -0
- package/lib/Util/Terminal.js.map +1 -0
- package/lib/Util/Theme.d.ts +123 -0
- package/lib/Util/Theme.d.ts.map +1 -0
- package/lib/Util/Theme.js +133 -0
- package/lib/Util/Theme.js.map +1 -0
- package/lib/Util/interactive.d.ts +17 -12
- package/lib/Util/interactive.d.ts.map +1 -1
- package/lib/Util/interactive.js +81 -13
- package/lib/Util/interactive.js.map +1 -1
- package/lib/Util/scc.d.ts +11 -3
- package/lib/Util/scc.d.ts.map +1 -1
- package/lib/Util/scc.js +35 -22
- package/lib/Util/scc.js.map +1 -1
- package/lib/Util/tarGzip.d.ts +3 -1
- package/lib/Util/tarGzip.d.ts.map +1 -1
- package/lib/Util/tarGzip.js +15 -5
- package/lib/Util/tarGzip.js.map +1 -1
- package/lib/index.d.ts +4 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/package.json +40 -38
- package/src/AWS/AGENTS.md +1 -1
- package/src/AWS/AMP/Scraper.ts +1 -1
- package/src/AWS/AppRunner/Service.ts +11 -27
- package/src/AWS/Assets.ts +2 -2
- package/src/AWS/AuthProvider.ts +748 -429
- package/src/AWS/Batch/JobDefinition.ts +11 -27
- package/src/AWS/EC2/Instance.ts +12 -28
- package/src/AWS/EC2/InternetGateway.ts +1 -1
- package/src/AWS/EC2/NatGateway.ts +1 -1
- package/src/AWS/EC2/NetworkInterface.ts +1 -1
- package/src/AWS/EC2/NetworkInterfaceAttachment.ts +1 -1
- package/src/AWS/EC2/RouteTable.ts +1 -1
- package/src/AWS/EC2/RouteTableAssociation.ts +1 -1
- package/src/AWS/EC2/Snapshot.ts +1 -1
- package/src/AWS/EC2/Subnet.ts +1 -1
- package/src/AWS/EC2/Volume.ts +1 -1
- package/src/AWS/EC2/VolumeAttachment.ts +1 -1
- package/src/AWS/EC2/Vpc.ts +1 -1
- package/src/AWS/EC2/VpcEndpoint.ts +1 -1
- package/src/AWS/EC2/hosted.ts +5 -6
- package/src/AWS/ECR/ImageSource.ts +4 -5
- package/src/AWS/ECS/Service.ts +7 -21
- package/src/AWS/ECS/Task.ts +7 -21
- package/src/AWS/ElastiCache/CacheCluster.ts +323 -0
- package/src/AWS/ElastiCache/ConnectCacheCluster.ts +58 -0
- package/src/AWS/ElastiCache/ConnectCacheClusterHttp.ts +77 -0
- package/src/AWS/ElastiCache/ConnectReplicationGroup.ts +62 -0
- package/src/AWS/ElastiCache/ConnectReplicationGroupHttp.ts +110 -0
- package/src/AWS/ElastiCache/ReplicationGroup.ts +594 -0
- package/src/AWS/ElastiCache/SubnetGroup.ts +208 -0
- package/src/AWS/ElastiCache/index.ts +7 -0
- package/src/AWS/ElastiCache/internal.ts +36 -0
- package/src/AWS/Environment.ts +15 -48
- package/src/AWS/IAM/actions.generated.ts +1 -1
- package/src/AWS/IdentityCenter/AccountAssignment.ts +7 -0
- package/src/AWS/Lambda/Function.ts +26 -28
- package/src/AWS/Lambda/MicrovmImage.ts +12 -28
- package/src/AWS/Lambda/MicrovmProvider.ts +1 -1
- package/src/AWS/Lambda/NetworkConnector.ts +1 -1
- package/src/AWS/Local/DevWatchProvider.ts +10 -1
- package/src/AWS/Organizations/Account.ts +18 -10
- package/src/AWS/Organizations/DelegatedAdministrator.ts +7 -7
- package/src/AWS/Organizations/Organization.ts +3 -5
- package/src/AWS/Organizations/common.ts +17 -0
- package/src/AWS/Providers.ts +12 -0
- package/src/AWS/S3/Bucket.ts +1 -1
- package/src/Alchemist/Errors.ts +36 -0
- package/src/Alchemist/Progress.ts +175 -0
- package/src/Alchemist/Runtime.ts +40 -0
- package/src/Alchemist/Session.ts +460 -0
- package/src/Alchemist/index.ts +24 -0
- package/src/Alchemist/routes/aws.ts +88 -0
- package/src/Alchemist/routes/cloudflare.ts +188 -0
- package/src/Alchemist/routes/cloudflareToken.ts +215 -0
- package/src/Alchemist/routes/drift.ts +94 -0
- package/src/Alchemist/routes/logs.ts +185 -0
- package/src/Alchemist/routes/nuke.ts +146 -0
- package/src/Alchemist/routes/profile.ts +427 -0
- package/src/Alchemist/routes/provider.ts +107 -0
- package/src/Alchemist/routes/stack.ts +137 -0
- package/src/Alchemist/routes/state.ts +77 -0
- package/src/Apply.ts +312 -173
- package/src/Auth/AuthProvider.ts +416 -158
- package/src/Auth/BrowserOAuth.ts +68 -0
- package/src/Auth/Credentials.ts +155 -46
- package/src/Auth/CredentialsCache.ts +57 -0
- package/src/Auth/Demand.ts +208 -83
- package/src/Auth/Env.ts +38 -14
- package/src/Auth/Inspect.ts +129 -0
- package/src/Auth/Lock.ts +26 -11
- package/src/Auth/OAuthFlow.ts +551 -0
- package/src/Auth/Paths.ts +30 -0
- package/src/Auth/Profile.ts +768 -164
- package/src/Auth/Resolve.ts +136 -0
- package/src/Auth/StoredAuthProvider.ts +291 -0
- package/src/Auth/index.ts +1 -0
- package/src/Axiom/AuthProvider.ts +112 -314
- package/src/Axiom/Credentials.ts +5 -13
- package/src/Axiom/Providers.ts +3 -3
- package/src/Bundle/Bundle.ts +3 -5
- package/src/Cli/CliKit/CliKit.ts +183 -0
- package/src/Cli/CliKit/index.ts +50 -0
- package/src/Cli/CliKit/interaction.ts +19 -0
- package/src/Cli/CliKit/layer.ts +50 -0
- package/src/Cli/DevOptions.ts +19 -0
- package/src/Cli/Format.ts +31 -0
- package/src/Cli/GlobalLog.ts +147 -0
- package/src/Cli/LoggingCli.ts +312 -108
- package/src/Cli/ModeTag.ts +1 -1
- package/src/Cli/NamespaceTree.ts +94 -21
- package/src/Cli/PlainCliFormatter.ts +75 -0
- package/src/Cli/PropertyDiff.ts +229 -0
- package/src/Cli/checkVersion.ts +19 -6
- package/src/Cli/commands/aws.ts +67 -100
- package/src/Cli/commands/cloudflare.ts +195 -435
- package/src/Cli/commands/compat.ts +25 -0
- package/src/Cli/commands/confirm.ts +46 -0
- package/src/Cli/commands/deploy.ts +225 -212
- package/src/Cli/commands/dev.ts +72 -34
- package/src/Cli/commands/drift.ts +107 -0
- package/src/Cli/commands/errors.ts +162 -0
- package/src/Cli/commands/flags.ts +199 -0
- package/src/Cli/commands/instrument.ts +18 -0
- package/src/Cli/commands/logs.ts +125 -143
- package/src/Cli/commands/nuke.ts +138 -811
- package/src/Cli/commands/profile/commands.ts +482 -0
- package/src/Cli/commands/profile/flows.ts +218 -0
- package/src/Cli/commands/profile/hub.ts +191 -0
- package/src/Cli/commands/profile/index.ts +1 -0
- package/src/Cli/commands/provider.ts +63 -0
- package/src/Cli/commands/render.ts +121 -0
- package/src/Cli/commands/state.ts +250 -387
- package/src/Cli/components/types.ts +141 -0
- package/src/Cli/components/ui/Data.tsx +44 -0
- package/src/Cli/components/ui/Environment.tsx +86 -0
- package/src/Cli/components/ui/Feedback.tsx +269 -0
- package/src/Cli/components/ui/Interactive.tsx +1062 -0
- package/src/Cli/components/ui/Layout.tsx +252 -0
- package/src/Cli/components/ui/Live.tsx +131 -0
- package/src/Cli/components/ui/ProgressBar.tsx +57 -0
- package/src/Cli/components/ui/Transcript.tsx +42 -0
- package/src/Cli/components/ui/Typography.tsx +83 -0
- package/src/Cli/components/ui/index.ts +68 -0
- package/src/Cli/components/view/ApprovePlan.tsx +101 -0
- package/src/Cli/components/view/Help.tsx +381 -0
- package/src/Cli/components/view/Logo.tsx +168 -0
- package/src/Cli/components/view/Nuke.tsx +258 -0
- package/src/Cli/components/view/PlanDecision.tsx +80 -0
- package/src/Cli/components/view/PlanRow.tsx +39 -0
- package/src/Cli/components/view/PlanTree.ts +354 -0
- package/src/Cli/components/view/PlanView.tsx +825 -0
- package/src/Cli/components/view/Profile.tsx +446 -0
- package/src/Cli/components/view/ProfileDashboard.tsx +929 -0
- package/src/Cli/components/view/Prompts.tsx +793 -0
- package/src/Cli/components/view/Runtime.tsx +975 -0
- package/src/Cli/components/view/SigilCli.tsx +186 -0
- package/src/Cli/components/view/StackOutputs.tsx +38 -0
- package/src/Cli/components/view/StateExplorer.tsx +1179 -0
- package/src/Cli/components/view/statusStyle.ts +97 -0
- package/src/Cli/components/view/usePlanPresentation.ts +82 -0
- package/src/Cli/components/view/usePlanViewport.ts +172 -0
- package/src/Cli/exec.ts +278 -32
- package/src/Cli/main.ts +189 -42
- package/src/Cli/selectCli.ts +30 -15
- package/src/Cloudflare/ApiToken/UserApiToken.ts +1 -1
- package/src/Cloudflare/Auth/AuthConfig.ts +117 -0
- package/src/Cloudflare/Auth/AuthProvider.ts +712 -608
- package/src/Cloudflare/Auth/OAuthClient.ts +40 -366
- package/src/Cloudflare/Auth/OAuthScopes.ts +921 -0
- package/src/Cloudflare/Auth/TokenPolicy.ts +79 -0
- package/src/Cloudflare/CloudflareEnvironment.ts +7 -17
- package/src/Cloudflare/Containers/Container.ts +12 -24
- package/src/Cloudflare/Containers/ContainerApplication.ts +12 -27
- package/src/Cloudflare/Credentials.ts +18 -72
- package/src/Cloudflare/EdgeSession.ts +2 -3
- package/src/Cloudflare/Logs.ts +16 -10
- package/src/Cloudflare/Pages/Project.ts +1 -1
- package/src/Cloudflare/Providers.ts +2 -2
- package/src/Cloudflare/StateStore/Api.ts +2 -2
- package/src/Cloudflare/StateStore/CredentialsFile.ts +11 -6
- package/src/Cloudflare/StateStore/State.ts +247 -194
- package/src/Cloudflare/Vectorize/SearchIndexHttpClient.ts +2 -2
- package/src/Cloudflare/Website/Nextjs.ts +4 -15
- package/src/Cloudflare/Website/Vocs.ts +3 -7
- package/src/Cloudflare/Workers/Assets.ts +106 -38
- package/src/Cloudflare/Workers/BrowserHttpClient.ts +10 -3
- package/src/Cloudflare/Workers/CloudflareTracer.ts +113 -0
- package/src/Cloudflare/Workers/Compatibility.ts +37 -7
- package/src/Cloudflare/Workers/DurableObject.ts +50 -4
- package/src/Cloudflare/Workers/DurableObjectBridge.ts +8 -0
- package/src/Cloudflare/Workers/DurableObjectState.ts +46 -9
- package/src/Cloudflare/Workers/DurableObjectStorage.ts +25 -12
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +172 -58
- package/src/Cloudflare/Workers/RpcWorker.ts +44 -18
- package/src/Cloudflare/Workers/Source.ts +9 -1
- package/src/Cloudflare/Workers/Sources/Python.ts +18 -12
- package/src/Cloudflare/Workers/Sources/Rolldown.ts +1 -1
- package/src/Cloudflare/Workers/Sources/Vite.ts +42 -34
- package/src/Cloudflare/Workers/Telemetry.ts +170 -0
- package/src/Cloudflare/Workers/ViteBuildChildRunner.ts +6 -1
- package/src/Cloudflare/Workers/ViteChild.shared.ts +1 -0
- package/src/Cloudflare/Workers/ViteChild.ts +21 -19
- package/src/Cloudflare/Workers/ViteChildRunner.ts +2 -1
- package/src/Cloudflare/Workers/Worker.ts +101 -50
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +29 -0
- package/src/Cloudflare/Workers/WorkerLoader.ts +40 -8
- package/src/Cloudflare/Workers/WorkerProvider.ts +64 -29
- package/src/Cloudflare/Workers/cloudflare_workers.ts +5 -1
- package/src/Cloudflare/Workers/index.ts +1 -0
- package/src/Cloudflare/Workflows/Workflow.ts +105 -0
- package/src/Cloudflare/Workflows/WorkflowBridge.ts +5 -3
- package/src/Command/Command.ts +11 -3
- package/src/Command/Dev.ts +33 -8
- package/src/Docker/BuildHash.ts +75 -8
- package/src/Docker/Docker.ts +7 -2
- package/src/Docker/Service.ts +7 -21
- package/src/Docker/ServiceImage.ts +4 -5
- package/src/{Sync.ts → Drift.ts} +161 -59
- package/src/Drizzle/Schema.ts +5 -7
- package/src/Fly/AuthProvider.ts +44 -232
- package/src/Fly/CheckpointHttp.ts +5 -2
- package/src/Fly/Credentials.ts +29 -16
- package/src/Fly/DecryptHttp.ts +5 -2
- package/src/Fly/EncryptHttp.ts +5 -2
- package/src/Fly/ExecHttp.ts +5 -2
- package/src/Fly/GetSecretHttp.ts +5 -2
- package/src/Fly/ListSecretsHttp.ts +5 -2
- package/src/Fly/Machine.ts +67 -20
- package/src/Fly/Providers.ts +2 -2
- package/src/Fly/Service.ts +44 -20
- package/src/Fly/SignHttp.ts +5 -2
- package/src/Fly/VerifyHttp.ts +5 -2
- package/src/Fly/WriteSecretHttp.ts +5 -2
- package/src/Fly/replicas.ts +47 -1
- package/src/GitHub/AuthProvider.ts +225 -143
- package/src/GitHub/Credentials.ts +6 -13
- package/src/GitHub/Providers.ts +4 -4
- package/src/Hetzner/AuthProvider.ts +50 -238
- package/src/Hetzner/Credentials.ts +4 -12
- package/src/Hetzner/Providers.ts +2 -2
- package/src/Interaction.ts +354 -0
- package/src/Kubernetes/ClusterAdapter.ts +4 -5
- package/src/Kubernetes/Deployment.ts +7 -21
- package/src/Kubernetes/Job.ts +7 -21
- package/src/Local/DevLog.ts +135 -0
- package/src/Local/LocalProvider.ts +3 -3
- package/src/Local/RpcServer.ts +11 -0
- package/src/Local/RpcServerEnvironment.ts +3 -2
- package/src/Local/RpcSpawner.ts +161 -78
- package/src/Neon/AuthProvider.ts +31 -203
- package/src/Neon/Credentials.ts +4 -12
- package/src/Neon/Providers.ts +2 -2
- package/src/Nuke.ts +463 -0
- package/src/Plan.ts +920 -708
- package/src/Planetscale/AuthProvider.ts +397 -324
- package/src/Planetscale/Credentials.ts +21 -19
- package/src/Planetscale/OAuthClient.ts +34 -328
- package/src/Planetscale/Providers.ts +2 -2
- package/src/Planetscale/Util.ts +1 -1
- package/src/Prisma/AuthProvider.ts +62 -240
- package/src/Prisma/Compute.ts +7 -21
- package/src/Prisma/PrismaEnvironment.ts +6 -14
- package/src/Prisma/Providers.ts +7 -7
- package/src/Provider.ts +12 -13
- package/src/Railway/AuthProvider.ts +291 -235
- package/src/Railway/Bucket.ts +6 -6
- package/src/Railway/CloudAgent.ts +4 -4
- package/src/Railway/Credentials.ts +5 -14
- package/src/Railway/CustomDomain.ts +5 -5
- package/src/Railway/Function.ts +10 -10
- package/src/Railway/Group.ts +2 -2
- package/src/Railway/LoginSession.ts +5 -5
- package/src/Railway/Mongo.ts +19 -19
- package/src/Railway/MySQL.ts +19 -19
- package/src/Railway/Postgres.ts +19 -19
- package/src/Railway/PrivateNetwork.ts +2 -2
- package/src/Railway/Project.ts +7 -7
- package/src/Railway/ProjectEnvironment.ts +7 -7
- package/src/Railway/Providers.ts +2 -2
- package/src/Railway/Redis.ts +9 -9
- package/src/Railway/Sandbox.ts +10 -10
- package/src/Railway/Service.ts +72 -1
- package/src/Railway/ServiceDomain.ts +253 -27
- package/src/Railway/ServiceProvider.ts +234 -87
- package/src/Railway/TcpProxy.ts +4 -4
- package/src/Railway/Template.ts +12 -12
- package/src/Railway/Usage.ts +2 -2
- package/src/Railway/Variable.ts +2 -2
- package/src/Railway/Volume.ts +4 -4
- package/src/Railway/VolumeBackup.ts +11 -11
- package/src/Railway/local-context.ts +333 -0
- package/src/Report.ts +365 -0
- package/src/Stack.ts +12 -8
- package/src/State/Export.ts +28 -47
- package/src/State/HttpStateStore.ts +15 -8
- package/src/State/LocalState.ts +6 -16
- package/src/State/Tree.ts +277 -0
- package/src/State/index.ts +1 -0
- package/src/Telemetry/Layer.ts +16 -5
- package/src/Telemetry.ts +6 -1
- package/src/Test/Core.ts +10 -4
- package/src/UserFacingError.ts +35 -0
- package/src/Util/AtomicFile.ts +36 -0
- package/src/Util/ConsoleSink.ts +23 -0
- package/src/Util/LineBuffer.ts +20 -0
- package/src/Util/Memoize.ts +48 -0
- package/src/Util/Node.ts +35 -14
- package/src/Util/PlatformServices.ts +11 -1
- package/src/Util/ResourceOutput.ts +77 -0
- package/src/Util/Terminal.ts +81 -0
- package/src/Util/Theme.ts +150 -0
- package/src/Util/interactive.ts +103 -16
- package/src/Util/scc.ts +43 -23
- package/src/Util/tarGzip.ts +33 -5
- package/src/index.ts +4 -2
- package/lib/Cli/Cli.d.ts +0 -21
- package/lib/Cli/Cli.d.ts.map +0 -1
- package/lib/Cli/Cli.js +0 -5
- package/lib/Cli/Cli.js.map +0 -1
- package/lib/Cli/Event.d.ts +0 -29
- package/lib/Cli/Event.d.ts.map +0 -1
- package/lib/Cli/Event.js +0 -1
- package/lib/Cli/Event.js.map +0 -1
- package/lib/Cli/commands/_shared.d.ts +0 -138
- package/lib/Cli/commands/_shared.d.ts.map +0 -1
- package/lib/Cli/commands/_shared.js +0 -298
- package/lib/Cli/commands/_shared.js.map +0 -1
- package/lib/Cli/commands/login.d.ts +0 -14
- package/lib/Cli/commands/login.d.ts.map +0 -1
- package/lib/Cli/commands/login.js +0 -115
- package/lib/Cli/commands/login.js.map +0 -1
- package/lib/Cli/commands/profile.d.ts +0 -25
- package/lib/Cli/commands/profile.d.ts.map +0 -1
- package/lib/Cli/commands/profile.js +0 -83
- package/lib/Cli/commands/profile.js.map +0 -1
- package/lib/Cli/commands/sync.d.ts +0 -22
- package/lib/Cli/commands/sync.d.ts.map +0 -1
- package/lib/Cli/commands/sync.js +0 -64
- package/lib/Cli/commands/sync.js.map +0 -1
- package/lib/Cli/commands/tail.d.ts +0 -9
- package/lib/Cli/commands/tail.d.ts.map +0 -1
- package/lib/Cli/commands/tail.js +0 -97
- package/lib/Cli/commands/tail.js.map +0 -1
- package/lib/Cli/tui/InkCLI.d.ts +0 -4
- package/lib/Cli/tui/InkCLI.d.ts.map +0 -1
- package/lib/Cli/tui/InkCLI.js +0 -53
- package/lib/Cli/tui/InkCLI.js.map +0 -1
- package/lib/Cli/tui/components/ApprovePlan.d.ts +0 -9
- package/lib/Cli/tui/components/ApprovePlan.d.ts.map +0 -1
- package/lib/Cli/tui/components/ApprovePlan.js +0 -21
- package/lib/Cli/tui/components/ApprovePlan.js.map +0 -1
- package/lib/Cli/tui/components/Nuke.d.ts +0 -36
- package/lib/Cli/tui/components/Nuke.d.ts.map +0 -1
- package/lib/Cli/tui/components/Nuke.js +0 -132
- package/lib/Cli/tui/components/Nuke.js.map +0 -1
- package/lib/Cli/tui/components/Plan.d.ts +0 -8
- package/lib/Cli/tui/components/Plan.d.ts.map +0 -1
- package/lib/Cli/tui/components/Plan.js +0 -87
- package/lib/Cli/tui/components/Plan.js.map +0 -1
- package/lib/Cli/tui/components/PlanProgress.d.ts +0 -55
- package/lib/Cli/tui/components/PlanProgress.d.ts.map +0 -1
- package/lib/Cli/tui/components/PlanProgress.js +0 -292
- package/lib/Cli/tui/components/PlanProgress.js.map +0 -1
- package/lib/Sync.d.ts +0 -109
- package/lib/Sync.d.ts.map +0 -1
- package/lib/Sync.js.map +0 -1
- package/lib/Util/Clank.d.ts +0 -45
- package/lib/Util/Clank.d.ts.map +0 -1
- package/lib/Util/Clank.js +0 -79
- package/lib/Util/Clank.js.map +0 -1
- package/src/Cli/Cli.ts +0 -23
- package/src/Cli/Event.ts +0 -51
- package/src/Cli/commands/_shared.ts +0 -498
- package/src/Cli/commands/login.ts +0 -169
- package/src/Cli/commands/profile.ts +0 -132
- package/src/Cli/commands/sync.ts +0 -123
- package/src/Cli/commands/tail.ts +0 -155
- package/src/Cli/tui/InkCLI.tsx +0 -69
- package/src/Cli/tui/components/ApprovePlan.tsx +0 -44
- package/src/Cli/tui/components/Nuke.tsx +0 -273
- package/src/Cli/tui/components/Plan.tsx +0 -211
- package/src/Cli/tui/components/PlanProgress.tsx +0 -455
- package/src/Util/Clank.ts +0 -103
|
@@ -1,203 +1,276 @@
|
|
|
1
1
|
import * as cfAccounts from "@distilled.cloud/cloudflare/accounts";
|
|
2
|
+
import * as cfMemberships from "@distilled.cloud/cloudflare/memberships";
|
|
2
3
|
import * as CfCredentialsModule from "@distilled.cloud/cloudflare/Credentials";
|
|
3
|
-
import * as
|
|
4
|
+
import * as Clock from "effect/Clock";
|
|
4
5
|
import * as Duration from "effect/Duration";
|
|
5
6
|
import * as Effect from "effect/Effect";
|
|
6
7
|
import * as Layer from "effect/Layer";
|
|
7
8
|
import * as Match from "effect/Match";
|
|
8
9
|
import * as Redacted from "effect/Redacted";
|
|
10
|
+
import * as Schema from "effect/Schema";
|
|
9
11
|
import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
|
|
10
12
|
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
11
|
-
import { AuthError, AuthProviderLayer, } from "../../Auth/AuthProvider.js";
|
|
13
|
+
import { AuthError, AuthProviderLayer, NeedsReauth, reconfigureHint, refreshHint, } from "../../Auth/AuthProvider.js";
|
|
14
|
+
import { storedSecret, storedValueText, validateFieldValues, } from "../../Auth/StoredAuthProvider.js";
|
|
12
15
|
import { CredentialsStore, displayRedacted } from "../../Auth/Credentials.js";
|
|
13
|
-
import {
|
|
14
|
-
import
|
|
16
|
+
import { withProfileCredentialsLock } from "../../Auth/Lock.js";
|
|
17
|
+
import { getEnvRedacted, getEnvRequired, mapPromptCancellation, } from "../../Auth/Env.js";
|
|
18
|
+
import { browserOAuth } from "../../Auth/BrowserOAuth.js";
|
|
19
|
+
import * as Interaction from "../../Interaction.js";
|
|
15
20
|
import { CREDENTIALS_FILE as STATE_STORE_CREDENTIALS_FILE } from "../StateStore/CredentialsFile.js";
|
|
16
21
|
import * as OAuthClient from "./OAuthClient.js";
|
|
22
|
+
import { CLOUDFLARE_AUTH_PROVIDER_NAME, CloudflareAuthConfigSchema, validateAccountId, validateAccountIdField, } from "./AuthConfig.js";
|
|
23
|
+
import { ALL_SCOPE_IDS, BASIC_SCOPES, customOAuthScopeDefaults, OAUTH_SCOPE_GROUPS, OAUTH_SCOPE_NAMES, partitionOAuthScopes, } from "./OAuthScopes.js";
|
|
17
24
|
const options = [
|
|
18
25
|
{
|
|
19
26
|
value: "oauth",
|
|
20
27
|
label: "OAuth",
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
value: "env",
|
|
25
|
-
label: "Environment Variables",
|
|
26
|
-
hint: "CLOUDFLARE_API_TOKEN or CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL",
|
|
28
|
+
description: "recommended — browser-based login with automatic token refresh",
|
|
27
29
|
},
|
|
28
30
|
{
|
|
29
31
|
value: "stored",
|
|
30
32
|
label: "API Token or API Key",
|
|
31
|
-
|
|
33
|
+
description: "use an API token or global API key",
|
|
32
34
|
},
|
|
33
35
|
];
|
|
34
|
-
export const CLOUDFLARE_AUTH_PROVIDER_NAME = "Cloudflare";
|
|
35
36
|
const withOAuthCredentials = (accessToken, effect) => Effect.provide(effect, Layer.mergeAll(CfCredentialsModule.fromOAuth({
|
|
36
37
|
load: Effect.succeed({ accessToken }),
|
|
37
38
|
refresh: () => Effect.die("refresh not expected during account selection"),
|
|
38
39
|
}), FetchHttpClient.layer));
|
|
40
|
+
/**
|
|
41
|
+
* Accounts visible to a user-scoped OAuth token. `GET /accounts` returns an
|
|
42
|
+
* EMPTY list for these tokens (it only lists accounts an account-scoped
|
|
43
|
+
* credential can read), so memberships are the authoritative account list —
|
|
44
|
+
* the same endpoint wrangler uses. `GET /accounts` remains as a fallback for
|
|
45
|
+
* tokens authorized without `memberships.read` (custom scope selections).
|
|
46
|
+
*/
|
|
47
|
+
const listVisibleAccounts = Effect.gen(function* () {
|
|
48
|
+
const listMemberships = yield* cfMemberships.listMemberships;
|
|
49
|
+
const membershipAccounts = yield* listMemberships({}).pipe(Effect.map((response) => response.result.flatMap((membership) => membership.account != null &&
|
|
50
|
+
(membership.status == null || membership.status === "accepted")
|
|
51
|
+
? [membership.account]
|
|
52
|
+
: [])), Effect.catch((error) => Effect.logDebug("Cloudflare: listing memberships failed", error).pipe(Effect.as([]))));
|
|
53
|
+
if (membershipAccounts.length > 0)
|
|
54
|
+
return membershipAccounts;
|
|
55
|
+
const listAccounts = yield* cfAccounts.listAccounts;
|
|
56
|
+
const response = yield* listAccounts({});
|
|
57
|
+
yield* Effect.logDebug(`Cloudflare: memberships listed 0 accounts; /accounts listed ${response.result.length}`);
|
|
58
|
+
return response.result;
|
|
59
|
+
});
|
|
39
60
|
const selectAccount = (accessToken) => Effect.gen(function* () {
|
|
40
|
-
const
|
|
41
|
-
const
|
|
42
|
-
const accounts = response.result;
|
|
61
|
+
const interaction = Interaction.accessors;
|
|
62
|
+
const accounts = yield* listVisibleAccounts;
|
|
43
63
|
if (accounts.length === 0) {
|
|
44
64
|
return yield* new AuthError({
|
|
45
|
-
message: "Cloudflare
|
|
65
|
+
message: "No Cloudflare accounts are visible to this credential. " +
|
|
66
|
+
"Ensure the authorized OAuth scopes include 'memberships.read'.",
|
|
46
67
|
});
|
|
47
68
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
yield*
|
|
69
|
+
const [account] = accounts;
|
|
70
|
+
if (accounts.length === 1 && account !== undefined) {
|
|
71
|
+
yield* interaction.output.info(`Using Cloudflare account ${account.name}.`);
|
|
51
72
|
return account.id;
|
|
52
73
|
}
|
|
53
|
-
return yield*
|
|
74
|
+
return yield* interaction.prompt
|
|
75
|
+
.select({
|
|
54
76
|
message: "Select a Cloudflare account",
|
|
77
|
+
searchable: true,
|
|
55
78
|
options: accounts.map((a) => ({
|
|
56
79
|
value: a.id,
|
|
57
80
|
label: a.name,
|
|
58
|
-
|
|
81
|
+
description: a.id,
|
|
59
82
|
})),
|
|
60
|
-
})
|
|
83
|
+
})
|
|
84
|
+
.pipe(mapPromptCancellation);
|
|
61
85
|
}).pipe((e) => withOAuthCredentials(accessToken, e));
|
|
86
|
+
const promptAccountId = () => Effect.gen(function* () {
|
|
87
|
+
const interaction = yield* Interaction.Interaction;
|
|
88
|
+
return yield* interaction.prompt
|
|
89
|
+
.text({
|
|
90
|
+
message: "Cloudflare Account ID",
|
|
91
|
+
validate: validateAccountIdField,
|
|
92
|
+
})
|
|
93
|
+
.pipe(mapPromptCancellation);
|
|
94
|
+
});
|
|
95
|
+
const accountIdField = {
|
|
96
|
+
name: "accountId",
|
|
97
|
+
label: "Cloudflare Account ID",
|
|
98
|
+
validate: validateAccountIdField,
|
|
99
|
+
};
|
|
62
100
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* /accounts/<value>/...` errors, so reject them up front with an
|
|
67
|
-
* actionable message instead.
|
|
101
|
+
* `--set` fields for `--method stored`. The persisted `credentialType` is
|
|
102
|
+
* inferred from which secret is supplied: `apiToken` alone, or `apiKey`
|
|
103
|
+
* together with `email`.
|
|
68
104
|
*/
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
105
|
+
const storedFields = [
|
|
106
|
+
{
|
|
107
|
+
name: "apiToken",
|
|
108
|
+
label: "Cloudflare API Token",
|
|
109
|
+
description: "Pass either apiToken, or apiKey together with email.",
|
|
110
|
+
secret: true,
|
|
111
|
+
optional: true,
|
|
112
|
+
},
|
|
113
|
+
{ name: "apiKey", label: "Cloudflare API Key", secret: true, optional: true },
|
|
114
|
+
{ name: "email", label: "Cloudflare Email", optional: true },
|
|
115
|
+
accountIdField,
|
|
116
|
+
];
|
|
117
|
+
/**
|
|
118
|
+
* Flag-driven configuration methods. OAuth is deliberately absent — it is
|
|
119
|
+
* interactive-only (browser grant).
|
|
120
|
+
*/
|
|
121
|
+
const configureMethods = [
|
|
122
|
+
{ method: "stored", fields: storedFields },
|
|
123
|
+
];
|
|
124
|
+
const promptOAuthScopes = (currentConfig) => Effect.gen(function* () {
|
|
125
|
+
const interaction = yield* Interaction.Interaction;
|
|
126
|
+
const mode = yield* interaction.prompt
|
|
127
|
+
.select({
|
|
128
|
+
message: "Cloudflare OAuth scopes",
|
|
129
|
+
initialValue: "all",
|
|
130
|
+
options: [
|
|
131
|
+
{
|
|
132
|
+
value: "all",
|
|
133
|
+
label: "All Scopes",
|
|
134
|
+
description: "authorize every available Cloudflare permission",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
value: "basic",
|
|
138
|
+
label: "Basic Scopes",
|
|
139
|
+
description: "covers typical Alchemy use cases",
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
value: "custom",
|
|
143
|
+
label: "Custom Scopes",
|
|
144
|
+
description: "choose individual permissions",
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
})
|
|
148
|
+
.pipe(mapPromptCancellation);
|
|
149
|
+
if (mode === "basic")
|
|
150
|
+
return [...BASIC_SCOPES];
|
|
151
|
+
if (mode === "all")
|
|
152
|
+
return [...ALL_SCOPE_IDS];
|
|
153
|
+
return yield* interaction.prompt
|
|
154
|
+
.multiSelect({
|
|
103
155
|
message: "Select OAuth scopes",
|
|
104
|
-
initialValues:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
156
|
+
initialValues: customOAuthScopeDefaults(currentConfig),
|
|
157
|
+
searchable: true,
|
|
158
|
+
descriptionPlacement: "inline",
|
|
159
|
+
options: OAUTH_SCOPE_GROUPS.flatMap((group) => group.scopes.map((value) => ({
|
|
160
|
+
value,
|
|
161
|
+
label: OAUTH_SCOPE_NAMES[value],
|
|
162
|
+
description: value,
|
|
163
|
+
group: group.label,
|
|
164
|
+
}))),
|
|
110
165
|
required: true,
|
|
111
|
-
})
|
|
112
|
-
|
|
166
|
+
})
|
|
167
|
+
.pipe(mapPromptCancellation);
|
|
168
|
+
});
|
|
113
169
|
/**
|
|
114
170
|
* Layer that registers the Cloudflare {@link AuthProvider} into the
|
|
115
171
|
* {@link AuthProviders} registry when built. Include this in the Cloudflare
|
|
116
|
-
* `providers()` layer so
|
|
172
|
+
* `providers()` layer so the alchemy CLI can discover it.
|
|
117
173
|
*/
|
|
118
174
|
export const CloudflareAuth = AuthProviderLayer()(CLOUDFLARE_AUTH_PROVIDER_NAME, Effect.gen(function* () {
|
|
175
|
+
const interaction = Interaction.accessors;
|
|
119
176
|
const store = yield* CredentialsStore;
|
|
120
|
-
const oauthLogin = (
|
|
121
|
-
const authorization = OAuthClient.authorize([
|
|
177
|
+
const oauthLogin = (_profileName, scopes) => Effect.gen(function* () {
|
|
178
|
+
const authorization = yield* OAuthClient.authorize([
|
|
122
179
|
...scopes,
|
|
123
180
|
"offline_access",
|
|
124
181
|
]);
|
|
125
|
-
yield*
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
validate: (value) => value.trim().length > 0 ? undefined : "Paste a code or URL",
|
|
133
|
-
}).pipe(Effect.flatMap((input) => OAuthClient.exchangeCallbackInput(input, authorization))));
|
|
134
|
-
yield* store.write(profileName, "cf-oauth", credentials);
|
|
135
|
-
yield* Clank.success("Cloudflare: OAuth credentials saved.");
|
|
182
|
+
const credentials = yield* browserOAuth({
|
|
183
|
+
provider: "Cloudflare",
|
|
184
|
+
url: authorization.url,
|
|
185
|
+
callback: OAuthClient.callback(authorization),
|
|
186
|
+
exchange: (input) => OAuthClient.exchangeCallbackInput(input, authorization),
|
|
187
|
+
});
|
|
188
|
+
yield* interaction.output.success("Connected to Cloudflare with OAuth.");
|
|
136
189
|
return credentials;
|
|
137
190
|
});
|
|
138
191
|
const loginStored = Effect.fn(function* (profileName) {
|
|
139
|
-
const credentialType = yield*
|
|
192
|
+
const credentialType = yield* interaction.prompt
|
|
193
|
+
.select({
|
|
140
194
|
message: "Cloudflare credential type",
|
|
141
195
|
options: [
|
|
142
196
|
{
|
|
143
197
|
value: "apiToken",
|
|
144
198
|
label: "API Token",
|
|
145
|
-
|
|
199
|
+
description: "recommended",
|
|
146
200
|
},
|
|
147
201
|
{ value: "apiKey", label: "API Key + Email" },
|
|
148
202
|
],
|
|
149
|
-
})
|
|
203
|
+
})
|
|
204
|
+
.pipe(mapPromptCancellation);
|
|
150
205
|
return yield* Match.value(credentialType).pipe(Match.when("apiToken", () => Effect.gen(function* () {
|
|
151
|
-
const apiToken = yield*
|
|
206
|
+
const apiToken = yield* interaction.prompt
|
|
207
|
+
.password({
|
|
152
208
|
message: "Cloudflare API Token",
|
|
153
209
|
validate: (v) => (v.length === 0 ? "Required" : undefined),
|
|
154
|
-
})
|
|
210
|
+
})
|
|
211
|
+
.pipe(mapPromptCancellation, Effect.map(Redacted.make));
|
|
155
212
|
const accountId = yield* promptAccountId();
|
|
156
|
-
yield*
|
|
157
|
-
yield* Clank.success("Cloudflare: credentials saved.");
|
|
213
|
+
yield* interaction.output.success("Cloudflare: credentials saved.");
|
|
158
214
|
return {
|
|
159
215
|
method: "stored",
|
|
160
216
|
credentialType: "apiToken",
|
|
217
|
+
apiToken: Redacted.value(apiToken),
|
|
218
|
+
accountId,
|
|
161
219
|
};
|
|
162
220
|
})), Match.when("apiKey", () => Effect.gen(function* () {
|
|
163
|
-
const apiKey = yield*
|
|
221
|
+
const apiKey = yield* interaction.prompt
|
|
222
|
+
.password({
|
|
164
223
|
message: "Cloudflare API Key",
|
|
165
224
|
validate: (v) => (v.length === 0 ? "Required" : undefined),
|
|
166
|
-
})
|
|
167
|
-
|
|
225
|
+
})
|
|
226
|
+
.pipe(mapPromptCancellation, Effect.map(Redacted.make));
|
|
227
|
+
const email = yield* interaction.prompt
|
|
228
|
+
.text({
|
|
168
229
|
message: "Cloudflare Email",
|
|
169
230
|
validate: (v) => (v.length === 0 ? "Required" : undefined),
|
|
170
|
-
})
|
|
231
|
+
})
|
|
232
|
+
.pipe(mapPromptCancellation, Effect.map(Redacted.make));
|
|
171
233
|
const accountId = yield* promptAccountId();
|
|
172
|
-
yield*
|
|
173
|
-
yield* Clank.success("Cloudflare: credentials saved.");
|
|
234
|
+
yield* interaction.output.success("Cloudflare: credentials saved.");
|
|
174
235
|
return {
|
|
175
236
|
method: "stored",
|
|
176
237
|
credentialType: "apiKey",
|
|
238
|
+
apiKey: Redacted.value(apiKey),
|
|
239
|
+
email: Redacted.value(email),
|
|
240
|
+
accountId,
|
|
177
241
|
};
|
|
178
242
|
})), Match.exhaustive);
|
|
179
243
|
});
|
|
180
|
-
const configureOAuth = Effect.fn(function* (profileName) {
|
|
181
|
-
const scopes = yield* promptOAuthScopes();
|
|
182
|
-
const oauthCreds = yield* oauthLogin(profileName, scopes);
|
|
183
|
-
const accountId = yield* selectAccount(oauthCreds.access).pipe(
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
244
|
+
const configureOAuth = Effect.fn(function* (profileName, currentConfig) {
|
|
245
|
+
const scopes = yield* promptOAuthScopes(currentConfig);
|
|
246
|
+
const oauthCreds = yield* oauthLogin(profileName, [...scopes]);
|
|
247
|
+
const accountId = yield* selectAccount(Redacted.value(oauthCreds.access)).pipe(
|
|
248
|
+
// Keep AuthError messages intact — they carry the actionable
|
|
249
|
+
// diagnosis (e.g. "no accounts visible"); only wrap raw API errors.
|
|
250
|
+
Effect.mapError((e) => e instanceof AuthError
|
|
251
|
+
? e
|
|
252
|
+
: new AuthError({
|
|
253
|
+
message: "Cloudflare: could not list accounts",
|
|
254
|
+
cause: e,
|
|
255
|
+
})));
|
|
187
256
|
return {
|
|
188
257
|
method: "oauth",
|
|
189
|
-
scopes,
|
|
258
|
+
scopes: [...scopes],
|
|
190
259
|
accountId,
|
|
260
|
+
clientId: oauthCreds.clientId,
|
|
261
|
+
access: Redacted.value(oauthCreds.access),
|
|
262
|
+
refresh: Redacted.value(oauthCreds.refresh),
|
|
263
|
+
expires: oauthCreds.expires,
|
|
191
264
|
};
|
|
192
265
|
});
|
|
193
|
-
const configureInteractive = (profileName) =>
|
|
266
|
+
const configureInteractive = (profileName, currentConfig) => interaction.prompt
|
|
267
|
+
.select({
|
|
194
268
|
message: "Cloudflare authentication method",
|
|
195
269
|
options,
|
|
196
|
-
})
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
: yield* configureInteractive(profileName);
|
|
270
|
+
})
|
|
271
|
+
.pipe(Effect.flatMap((method) => Match.value(method).pipe(Match.when("oauth", () => configureOAuth(profileName, currentConfig)), Match.when("stored", () => loginStored(profileName)), Match.exhaustive)));
|
|
272
|
+
const configureCredentials = (profileName, currentConfig) => Effect.gen(function* () {
|
|
273
|
+
const config = yield* configureInteractive(profileName, currentConfig);
|
|
201
274
|
// Re-configuring auth may point this profile at a different
|
|
202
275
|
// Cloudflare account. The cached state-store credentials
|
|
203
276
|
// (`~/.alchemy/credentials/{profile}/cloudflare-state-store.json`)
|
|
@@ -207,12 +280,87 @@ export const CloudflareAuth = AuthProviderLayer()(CLOUDFLARE_AUTH_PROVIDER_NAME,
|
|
|
207
280
|
.delete(profileName, STATE_STORE_CREDENTIALS_FILE)
|
|
208
281
|
.pipe(Effect.ignore);
|
|
209
282
|
return config;
|
|
210
|
-
}).pipe(
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
283
|
+
}).pipe(
|
|
284
|
+
// AuthError messages are already user-facing; re-wrapping them in a
|
|
285
|
+
// generic banner is what hid "no accounts visible" behind
|
|
286
|
+
// "failed to configure credentials".
|
|
287
|
+
Effect.mapError((e) => e instanceof AuthError
|
|
288
|
+
? e
|
|
289
|
+
: new AuthError({
|
|
290
|
+
message: "failed to configure credentials",
|
|
291
|
+
cause: e,
|
|
292
|
+
})));
|
|
293
|
+
const resolveCredentials = (profileName, config, updateConfig) => Effect.gen(function* () {
|
|
294
|
+
const reauth = refreshHint(CLOUDFLARE_AUTH_PROVIDER_NAME, profileName);
|
|
295
|
+
return yield* Match.value(config).pipe(Match.when({ method: "stored", credentialType: "apiToken" }, (c) => validateAccountId(c.accountId, `stored for profile '${profileName}'`).pipe(Effect.map((accountId) => ({
|
|
296
|
+
type: "apiToken",
|
|
297
|
+
apiToken: Redacted.make(c.apiToken),
|
|
298
|
+
accountId,
|
|
299
|
+
source: { type: "stored" },
|
|
300
|
+
})))), Match.when({ method: "stored", credentialType: "apiKey" }, (c) => validateAccountId(c.accountId, `stored for profile '${profileName}'`).pipe(Effect.map((accountId) => ({
|
|
301
|
+
type: "apiKey",
|
|
302
|
+
apiKey: Redacted.make(c.apiKey),
|
|
303
|
+
email: Redacted.make(c.email),
|
|
304
|
+
accountId,
|
|
305
|
+
source: { type: "stored" },
|
|
306
|
+
})))), Match.when({ method: "oauth" }, (cfg) => Effect.gen(function* () {
|
|
307
|
+
if (!("scopes" in cfg)) {
|
|
308
|
+
return yield* Effect.fail(new NeedsReauth({
|
|
309
|
+
provider: CLOUDFLARE_AUTH_PROVIDER_NAME,
|
|
310
|
+
profile: profileName,
|
|
311
|
+
message: `Cloudflare OAuth scopes need to be selected. ${reauth}`,
|
|
312
|
+
}));
|
|
313
|
+
}
|
|
314
|
+
const accountId = yield* validateAccountId(cfg.accountId, `configured for profile '${profileName}'`);
|
|
315
|
+
const creds = {
|
|
316
|
+
type: "oauth",
|
|
317
|
+
clientId: cfg.clientId,
|
|
318
|
+
access: Redacted.make(cfg.access),
|
|
319
|
+
refresh: Redacted.make(cfg.refresh),
|
|
320
|
+
expires: cfg.expires,
|
|
321
|
+
scopes: cfg.scopes,
|
|
322
|
+
};
|
|
323
|
+
if (!OAuthClient.usesCurrentClient(creds)) {
|
|
324
|
+
return yield* Effect.fail(new NeedsReauth({
|
|
325
|
+
provider: CLOUDFLARE_AUTH_PROVIDER_NAME,
|
|
326
|
+
profile: profileName,
|
|
327
|
+
message: `Cloudflare OAuth credentials for profile '${profileName}' were issued to an incompatible OAuth client and have been removed. ${reauth}`,
|
|
328
|
+
}));
|
|
329
|
+
}
|
|
330
|
+
// Refresh proactively if the token has expired (or is within
|
|
331
|
+
// 10s of expiring). Persist the refreshed creds so subsequent
|
|
332
|
+
// resolves don't repeat the round-trip.
|
|
333
|
+
const now = yield* Clock.currentTimeMillis;
|
|
334
|
+
const fresh = creds.expires > now + 10_000
|
|
335
|
+
? creds
|
|
336
|
+
: yield* OAuthClient.refresh(creds).pipe(Effect.mapError((e) => new NeedsReauth({
|
|
337
|
+
provider: CLOUDFLARE_AUTH_PROVIDER_NAME,
|
|
338
|
+
profile: profileName,
|
|
339
|
+
message: `Cloudflare OAuth refresh failed. ${reauth}`,
|
|
340
|
+
cause: e,
|
|
341
|
+
})));
|
|
342
|
+
if (fresh !== creds) {
|
|
343
|
+
yield* (updateConfig?.({
|
|
344
|
+
method: "oauth",
|
|
345
|
+
accountId,
|
|
346
|
+
clientId: fresh.clientId,
|
|
347
|
+
access: Redacted.value(fresh.access),
|
|
348
|
+
refresh: Redacted.value(fresh.refresh),
|
|
349
|
+
expires: fresh.expires,
|
|
350
|
+
scopes: fresh.scopes,
|
|
351
|
+
}) ?? Effect.void);
|
|
352
|
+
}
|
|
353
|
+
return {
|
|
354
|
+
type: "oauth",
|
|
355
|
+
accessToken: fresh.access,
|
|
356
|
+
expires: fresh.expires,
|
|
357
|
+
accountId,
|
|
358
|
+
source: { type: "oauth" },
|
|
359
|
+
};
|
|
360
|
+
})), Match.exhaustive);
|
|
361
|
+
});
|
|
362
|
+
const readEnvironment = Effect.gen(function* () {
|
|
363
|
+
const accountId = yield* getEnvRequired("CLOUDFLARE_ACCOUNT_ID").pipe(Effect.flatMap((id) => validateAccountId(id, "from CLOUDFLARE_ACCOUNT_ID")));
|
|
216
364
|
const apiToken = yield* getEnvRedacted("CLOUDFLARE_API_TOKEN");
|
|
217
365
|
if (apiToken) {
|
|
218
366
|
return {
|
|
@@ -223,7 +371,8 @@ export const CloudflareAuth = AuthProviderLayer()(CLOUDFLARE_AUTH_PROVIDER_NAME,
|
|
|
223
371
|
};
|
|
224
372
|
}
|
|
225
373
|
const apiKey = yield* getEnvRedacted("CLOUDFLARE_API_KEY");
|
|
226
|
-
const email = yield* getEnvRedacted("CLOUDFLARE_EMAIL")
|
|
374
|
+
const email = (yield* getEnvRedacted("CLOUDFLARE_EMAIL")) ??
|
|
375
|
+
(yield* getEnvRedacted("CLOUDFLARE_ACCOUNT_EMAIL"));
|
|
227
376
|
if (apiKey && email) {
|
|
228
377
|
return {
|
|
229
378
|
type: "apiKey",
|
|
@@ -234,230 +383,227 @@ export const CloudflareAuth = AuthProviderLayer()(CLOUDFLARE_AUTH_PROVIDER_NAME,
|
|
|
234
383
|
};
|
|
235
384
|
}
|
|
236
385
|
return yield* new AuthError({
|
|
237
|
-
message: "Cloudflare
|
|
386
|
+
message: "Cloudflare CI credentials not found. Set CLOUDFLARE_API_TOKEN, or CLOUDFLARE_API_KEY with CLOUDFLARE_EMAIL/CLOUDFLARE_ACCOUNT_EMAIL.",
|
|
238
387
|
});
|
|
239
|
-
})
|
|
240
|
-
|
|
241
|
-
.pipe(
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
: Effect.gen(function* () {
|
|
246
|
-
// The account ID prompt is skippable, so stored
|
|
247
|
-
// credentials may carry an empty accountId; fall
|
|
248
|
-
// back to the env var before validating.
|
|
249
|
-
const envAccountId = yield* getEnv("CLOUDFLARE_ACCOUNT_ID");
|
|
250
|
-
const accountId = yield* validateAccountId(creds.accountId?.trim() || envAccountId, `stored for profile '${profileName}'`);
|
|
251
|
-
return Match.value(creds).pipe(Match.when({ type: "apiToken" }, (c) => ({
|
|
252
|
-
type: "apiToken",
|
|
253
|
-
apiToken: Redacted.make(c.apiToken),
|
|
254
|
-
accountId,
|
|
255
|
-
source: { type: "stored" },
|
|
256
|
-
})), Match.when({ type: "apiKey" }, (c) => ({
|
|
257
|
-
type: "apiKey",
|
|
258
|
-
apiKey: Redacted.make(c.apiKey),
|
|
259
|
-
email: Redacted.make(c.email),
|
|
260
|
-
accountId,
|
|
261
|
-
source: { type: "stored" },
|
|
262
|
-
})), Match.exhaustive);
|
|
263
|
-
})))), Match.when({ method: "oauth" }, (cfg) => Effect.gen(function* () {
|
|
264
|
-
const accountId = yield* validateAccountId(cfg.accountId, `configured for profile '${profileName}'`);
|
|
265
|
-
const creds = yield* store.read(profileName, "cf-oauth");
|
|
266
|
-
if (creds == null || creds.type !== "oauth") {
|
|
267
|
-
return yield* Effect.fail(new AuthError({
|
|
268
|
-
message: "Cloudflare OAuth credentials not found. Run: alchemy login",
|
|
269
|
-
}));
|
|
270
|
-
}
|
|
271
|
-
// Refresh proactively if the token has expired (or is within
|
|
272
|
-
// 10s of expiring). Persist the refreshed creds so subsequent
|
|
273
|
-
// resolves don't repeat the round-trip.
|
|
274
|
-
const fresh = creds.expires > Date.now() + 10_000
|
|
275
|
-
? creds
|
|
276
|
-
: yield* OAuthClient.refresh(creds).pipe(Effect.tap((refreshed) => store.write(profileName, "cf-oauth", refreshed)), Effect.mapError((e) => new AuthError({
|
|
277
|
-
message: "Cloudflare OAuth refresh failed. Run: alchemy login",
|
|
278
|
-
cause: e,
|
|
279
|
-
})));
|
|
280
|
-
return {
|
|
388
|
+
});
|
|
389
|
+
const logout = (profileName, config) => Match.value(config)
|
|
390
|
+
.pipe(Match.when({ method: "stored" }, () => Effect.void), Match.when({ method: "oauth" }, (config) => {
|
|
391
|
+
if (!("scopes" in config))
|
|
392
|
+
return Effect.void;
|
|
393
|
+
const credentials = {
|
|
281
394
|
type: "oauth",
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
395
|
+
clientId: config.clientId,
|
|
396
|
+
access: Redacted.make(config.access),
|
|
397
|
+
refresh: Redacted.make(config.refresh),
|
|
398
|
+
expires: config.expires,
|
|
399
|
+
scopes: config.scopes,
|
|
286
400
|
};
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
.pipe(Effect.andThen(Clank.success("Cloudflare: stored credentials removed")))), Match.when({ method: "oauth" }, () => store
|
|
292
|
-
.read(profileName, "cf-oauth")
|
|
293
|
-
.pipe(Effect.tap((creds) => creds?.type === "oauth"
|
|
294
|
-
? OAuthClient.revoke(creds).pipe(Effect.catchTag("OAuthError", (err) => Clank.warn(`Cloudflare: could not revoke OAuth token: ${err.errorDescription}`)))
|
|
295
|
-
: Effect.void), Effect.andThen(store.delete(profileName, "cf-oauth")), Effect.andThen(Clank.success("Cloudflare: OAuth credentials removed.")))), Match.exhaustive)
|
|
401
|
+
return OAuthClient.usesCurrentClient(credentials)
|
|
402
|
+
? OAuthClient.revoke(credentials).pipe(Effect.catchTag("OAuthError", (err) => interaction.output.warning(`Cloudflare: could not revoke OAuth token: ${err.errorDescription}`)))
|
|
403
|
+
: Effect.void;
|
|
404
|
+
}), Match.exhaustive)
|
|
296
405
|
// The cached state-store credentials are derived from the account we
|
|
297
406
|
// just logged out of, so drop them regardless of auth method.
|
|
298
407
|
.pipe(Effect.andThen(store
|
|
299
408
|
.delete(profileName, STATE_STORE_CREDENTIALS_FILE)
|
|
300
409
|
.pipe(Effect.ignore)));
|
|
301
|
-
const login = (profileName, config) => Match.value(config)
|
|
302
|
-
.pipe(Match.when({ method: "
|
|
303
|
-
.
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
.
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
410
|
+
const login = (profileName, config, updateConfig) => Match.value(config)
|
|
411
|
+
.pipe(Match.when({ method: "stored" }, (config) => Effect.succeed(config)), Match.when({ method: "oauth" }, (c) => "scopes" in c
|
|
412
|
+
? Effect.gen(function* () {
|
|
413
|
+
const creds = {
|
|
414
|
+
type: "oauth",
|
|
415
|
+
clientId: c.clientId,
|
|
416
|
+
access: Redacted.make(c.access),
|
|
417
|
+
refresh: Redacted.make(c.refresh),
|
|
418
|
+
expires: c.expires,
|
|
419
|
+
scopes: c.scopes,
|
|
420
|
+
};
|
|
421
|
+
const reconfigure = reconfigureHint(CLOUDFLARE_AUTH_PROVIDER_NAME, profileName);
|
|
422
|
+
// Any path that falls back to a full browser login rebuilds the
|
|
423
|
+
// authorize URL from the profile's stored scopes. Those scopes
|
|
424
|
+
// may predate the current OAuth client (or a catalog change), and
|
|
425
|
+
// one unknown scope makes the whole authorize URL invalid — so
|
|
426
|
+
// sanitize before generating a URL, never after it fails.
|
|
427
|
+
const fullLogin = Effect.gen(function* () {
|
|
428
|
+
const { valid, dropped } = partitionOAuthScopes(c.scopes);
|
|
429
|
+
if (valid.length === 0) {
|
|
430
|
+
return yield* Effect.fail(new AuthError({
|
|
431
|
+
message: `The OAuth scopes stored for profile '${profileName}' are no longer offered by Alchemy's Cloudflare OAuth client. ` +
|
|
432
|
+
`Scopes must be picked again. ${reconfigure}`,
|
|
433
|
+
}));
|
|
434
|
+
}
|
|
435
|
+
const refreshed = yield* (dropped.length === 0
|
|
436
|
+
? Effect.void
|
|
437
|
+
: interaction.output.warning(`Cloudflare: dropping ${dropped.length} stored scope${dropped.length === 1 ? "" : "s"} no longer offered by the current OAuth client (${dropped.join(", ")}). ` +
|
|
438
|
+
`Scopes must be picked again. ${reconfigure}`)).pipe(Effect.andThen(oauthLogin(profileName, valid)));
|
|
439
|
+
return {
|
|
440
|
+
...c,
|
|
441
|
+
scopes: valid,
|
|
442
|
+
clientId: refreshed.clientId,
|
|
443
|
+
access: Redacted.value(refreshed.access),
|
|
444
|
+
refresh: Redacted.value(refreshed.refresh),
|
|
445
|
+
expires: refreshed.expires,
|
|
446
|
+
};
|
|
447
|
+
});
|
|
448
|
+
// The silent refresh rotates a single-use refresh token, so
|
|
449
|
+
// its read-refresh-persist section runs under the profile
|
|
450
|
+
// lock — a concurrent `read` refreshing the same token would
|
|
451
|
+
// double-spend it. The lock is held only for this API
|
|
452
|
+
// round-trip, never across the browser wait below.
|
|
453
|
+
const outcome = creds.type === "oauth" &&
|
|
454
|
+
OAuthClient.usesCurrentClient(creds)
|
|
455
|
+
? yield* withProfileCredentialsLock(profileName, interaction.output
|
|
456
|
+
.info("Cloudflare: refreshing OAuth credentials...")
|
|
457
|
+
.pipe(Effect.andThen(OAuthClient.refresh(creds)), Effect.flatMap((credentials) => {
|
|
458
|
+
const config = {
|
|
459
|
+
...c,
|
|
460
|
+
clientId: credentials.clientId,
|
|
461
|
+
access: Redacted.value(credentials.access),
|
|
462
|
+
refresh: Redacted.value(credentials.refresh),
|
|
463
|
+
expires: credentials.expires,
|
|
464
|
+
scopes: credentials.scopes,
|
|
465
|
+
};
|
|
466
|
+
return (updateConfig?.(config) ?? Effect.void).pipe(Effect.as({
|
|
467
|
+
type: "refreshed",
|
|
468
|
+
config,
|
|
469
|
+
}));
|
|
470
|
+
}), Effect.tap(() => interaction.output.success("Cloudflare: OAuth credentials refreshed.")), Effect.catchTag("OAuthError", () => Effect.succeed({ type: "browser" }))))
|
|
471
|
+
: yield* Effect.gen(function* () {
|
|
472
|
+
if (creds.type === "oauth") {
|
|
473
|
+
yield* interaction.output.warning("Cloudflare: removed OAuth credentials issued to the previous client.");
|
|
474
|
+
}
|
|
475
|
+
return { type: "browser" };
|
|
476
|
+
});
|
|
477
|
+
if (outcome.type === "browser") {
|
|
478
|
+
return yield* fullLogin;
|
|
479
|
+
}
|
|
480
|
+
return outcome.config;
|
|
481
|
+
})
|
|
482
|
+
: configureOAuth(profileName, c)), Match.exhaustive)
|
|
483
|
+
.pipe(
|
|
484
|
+
// A blanket mapError must never swallow the NeedsReauth tag —
|
|
485
|
+
// the profile UI matches on it to render "needs re-login".
|
|
486
|
+
Effect.mapError((e) => e instanceof NeedsReauth
|
|
487
|
+
? e
|
|
488
|
+
: new AuthError({ message: "login failed", cause: e })));
|
|
489
|
+
const details = (profileName, config, updateConfig) => Effect.all([
|
|
490
|
+
resolveCredentials(profileName, config, updateConfig),
|
|
491
|
+
Clock.currentTimeMillis,
|
|
492
|
+
]).pipe(Effect.map(([creds, now]) => {
|
|
493
|
+
const source = {
|
|
494
|
+
key: "source",
|
|
495
|
+
value: "details" in creds.source && creds.source.details
|
|
496
|
+
? `${creds.source.type} - ${creds.source.details}`
|
|
497
|
+
: creds.source.type,
|
|
498
|
+
};
|
|
499
|
+
return {
|
|
500
|
+
lines: Match.value(creds).pipe(Match.when({ type: "apiToken" }, (c) => [
|
|
501
|
+
{ key: "apiToken", value: displayRedacted(c.apiToken, 9) },
|
|
502
|
+
{ key: "accountId", value: c.accountId },
|
|
503
|
+
source,
|
|
504
|
+
]), Match.when({ type: "apiKey" }, (c) => [
|
|
505
|
+
{ key: "apiKey", value: displayRedacted(c.apiKey) },
|
|
506
|
+
{ key: "email", value: displayRedacted(c.email) },
|
|
507
|
+
{ key: "accountId", value: c.accountId },
|
|
508
|
+
source,
|
|
509
|
+
]), Match.when({ type: "oauth" }, (c) => {
|
|
510
|
+
const remainingMs = c.expires - now;
|
|
511
|
+
const expiresAt = new Date(c.expires).toISOString();
|
|
512
|
+
const expiresStr = remainingMs <= 0
|
|
513
|
+
? `expired (${expiresAt})`
|
|
514
|
+
: `in ${Duration.format(Duration.millis(remainingMs))} (${expiresAt})`;
|
|
515
|
+
return [
|
|
516
|
+
{ key: "accessToken", value: displayRedacted(c.accessToken) },
|
|
517
|
+
{ key: "expires", value: expiresStr },
|
|
518
|
+
{ key: "accountId", value: c.accountId },
|
|
519
|
+
source,
|
|
520
|
+
];
|
|
521
|
+
}), Match.exhaustive),
|
|
522
|
+
};
|
|
342
523
|
}));
|
|
524
|
+
/**
|
|
525
|
+
* Persist flag-provided stored credentials (`--method stored`). Writes
|
|
526
|
+
* the same `cloudflare-stored` file the interactive stored path writes;
|
|
527
|
+
* OAuth is interactive-only and not accepted here.
|
|
528
|
+
*/
|
|
529
|
+
const configureWith = (profileName, input) => {
|
|
530
|
+
const persist = (config) => store
|
|
531
|
+
.delete(profileName, STATE_STORE_CREDENTIALS_FILE)
|
|
532
|
+
.pipe(Effect.ignore, Effect.as(config));
|
|
533
|
+
if (input.method !== "stored") {
|
|
534
|
+
return Effect.fail(new AuthError({
|
|
535
|
+
message: `Cloudflare: unknown method '${input.method}'. Valid methods: stored. (OAuth is interactive-only.)`,
|
|
536
|
+
}));
|
|
537
|
+
}
|
|
538
|
+
return validateFieldValues(CLOUDFLARE_AUTH_PROVIDER_NAME, storedFields, input.values).pipe(Effect.flatMap((values) => {
|
|
539
|
+
const accountId = (storedValueText(values.accountId) ?? "")
|
|
540
|
+
.trim()
|
|
541
|
+
.toLowerCase();
|
|
542
|
+
const apiToken = storedSecret(values.apiToken);
|
|
543
|
+
const apiKey = storedSecret(values.apiKey);
|
|
544
|
+
const email = storedValueText(values.email);
|
|
545
|
+
if (apiToken !== undefined &&
|
|
546
|
+
apiKey === undefined &&
|
|
547
|
+
email === undefined) {
|
|
548
|
+
return persist({
|
|
549
|
+
method: "stored",
|
|
550
|
+
credentialType: "apiToken",
|
|
551
|
+
apiToken: Redacted.value(apiToken),
|
|
552
|
+
accountId,
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
if (apiToken === undefined &&
|
|
556
|
+
apiKey !== undefined &&
|
|
557
|
+
email !== undefined) {
|
|
558
|
+
return persist({
|
|
559
|
+
method: "stored",
|
|
560
|
+
credentialType: "apiKey",
|
|
561
|
+
apiKey: Redacted.value(apiKey),
|
|
562
|
+
email,
|
|
563
|
+
accountId,
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
return Effect.fail(new AuthError({
|
|
567
|
+
message: "Cloudflare: pass either --set apiToken=<token>, or both --set apiKey=<key> and --set email=<email>.",
|
|
568
|
+
}));
|
|
569
|
+
}));
|
|
570
|
+
};
|
|
343
571
|
return {
|
|
572
|
+
configSchema: CloudflareAuthConfigSchema,
|
|
344
573
|
configure: configureCredentials,
|
|
574
|
+
configureWith,
|
|
575
|
+
configureMethods,
|
|
345
576
|
logout,
|
|
346
577
|
login,
|
|
347
|
-
|
|
578
|
+
details,
|
|
348
579
|
read: resolveCredentials,
|
|
580
|
+
readEnvironment,
|
|
581
|
+
environment: [
|
|
582
|
+
{
|
|
583
|
+
name: "CLOUDFLARE_ACCOUNT_ID",
|
|
584
|
+
required: true,
|
|
585
|
+
description: "Account the stack deploys into.",
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
name: "CLOUDFLARE_API_TOKEN",
|
|
589
|
+
required: true,
|
|
590
|
+
secret: true,
|
|
591
|
+
alternatives: ["CLOUDFLARE_API_KEY"],
|
|
592
|
+
description: "API token (preferred). Not consulted when unset and CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL are provided instead.",
|
|
593
|
+
},
|
|
594
|
+
{
|
|
595
|
+
name: "CLOUDFLARE_API_KEY",
|
|
596
|
+
required: false,
|
|
597
|
+
secret: true,
|
|
598
|
+
description: "Global API key; used with CLOUDFLARE_EMAIL when no API token is set.",
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
name: "CLOUDFLARE_EMAIL",
|
|
602
|
+
required: false,
|
|
603
|
+
alternatives: ["CLOUDFLARE_ACCOUNT_EMAIL"],
|
|
604
|
+
description: "Account email paired with CLOUDFLARE_API_KEY.",
|
|
605
|
+
},
|
|
606
|
+
],
|
|
349
607
|
};
|
|
350
608
|
}));
|
|
351
|
-
export const ALL_SCOPES = {
|
|
352
|
-
"access:read": "See Cloudflare Access data such as zones, applications, certificates, device postures, groups, identity providers, login counts, organizations, policies, service tokens, and users",
|
|
353
|
-
"access:write": "See and change Cloudflare Access data such as zones, applications, certificates, device postures, groups, identity providers, login counts, organizations, policies, service tokens, and users",
|
|
354
|
-
"account:read": "See your account info such as account details, analytics, and memberships",
|
|
355
|
-
"agw:read": "Grants read level access to Agents Gateway",
|
|
356
|
-
"agw:run": "Grants run level access to Agents Gateway",
|
|
357
|
-
"agw:write": "Grants read and write level access to Agents Gateway",
|
|
358
|
-
"ai:read": "Grants read level access to Workers AI",
|
|
359
|
-
"ai:write": "Grants write level access to Workers AI",
|
|
360
|
-
"aiaudit:read": "Grants read level access to AI Audit",
|
|
361
|
-
"aiaudit:write": "Grants write level access to AI Audit",
|
|
362
|
-
"aig:read": "Grants read level access to AI Gateway",
|
|
363
|
-
"aig:write": "Grants write level access to AI Gateway",
|
|
364
|
-
"auditlogs:read": "View Cloudflare Account Audit Logs",
|
|
365
|
-
"browser:read": "Grants read level access to Browser Rendering",
|
|
366
|
-
"browser:write": "Grants write level access to Browser Rendering",
|
|
367
|
-
"cfone:read": "Grants read level access to Cloudforce One data",
|
|
368
|
-
"cfone:write": "Grants write level access to Cloudforce One data",
|
|
369
|
-
"cloudchamber:write": "See and make changes to Cloudchamber",
|
|
370
|
-
"connectivity:admin": "See, change, and bind to Connectivity Directory services, including creating services targeting Cloudflare Tunnel",
|
|
371
|
-
"connectivity:bind": "read, list, and bind to Connectivity Directory services, as well as read and list Cloudflare Tunnels",
|
|
372
|
-
"connectivity:read": "See Connectivity Directory services and Cloudflare Tunnels",
|
|
373
|
-
"constellation:write": "Grants write access to Constellation configuration and models",
|
|
374
|
-
"containers:write": "See and make changes to Workers Containers",
|
|
375
|
-
"d1:write": "See and make changes to D1",
|
|
376
|
-
"dex:read": "Grants read level access to Cloudflare DEX",
|
|
377
|
-
"dex:write": "Grants write level access to Cloudflare DEX",
|
|
378
|
-
"dns_analytics:read": "Grants read level access to Cloudflare DNS Analytics",
|
|
379
|
-
"dns_records:edit": "Grants edit level access to dns records",
|
|
380
|
-
"dns_records:read": "Grants read level access to dns records",
|
|
381
|
-
"dns_settings:read": "Grants read level access to Cloudflare DNS Settings",
|
|
382
|
-
"firstpartytags:write": "Can see, edit and publish Google tag gateway configuration.",
|
|
383
|
-
"lb:edit": "Grants edit level access to lb and lb pools",
|
|
384
|
-
"lb:read": "Grants read level access to lb and lb pools",
|
|
385
|
-
"logpush:read": "See Cloudflare Logpush data",
|
|
386
|
-
"logpush:write": "See and change Cloudflare Logpush data",
|
|
387
|
-
"notification:read": "View Cloudflare Notifications",
|
|
388
|
-
"notification:write": "View and Modify Cloudflare Notifications",
|
|
389
|
-
"pages:read": "See Cloudflare Pages projects, settings and deployments",
|
|
390
|
-
"pages:write": "See and change Cloudflare Pages projects, settings and deployments",
|
|
391
|
-
"pipelines:read": "Grants read level access to Cloudflare Pipelines",
|
|
392
|
-
"pipelines:setup": "Grants permission to generate R2 tokens for Workers Pipelines",
|
|
393
|
-
"pipelines:write": "Grants write level access to Cloudflare Pipelines",
|
|
394
|
-
"query_cache:write": "See and make changes to Hyperdrive",
|
|
395
|
-
"queues:write": "See and change Cloudflare Queues settings and data",
|
|
396
|
-
"r2_catalog:write": "Grants write level access to R2 Data Catalog",
|
|
397
|
-
"radar:read": "Grants access to read Cloudflare Radar data",
|
|
398
|
-
"ai-search:read": "Grants read level access to AI Search",
|
|
399
|
-
"ai-search:write": "Grants write level access to AI Search",
|
|
400
|
-
"ai-search:run": "Grants run level access to AI Search",
|
|
401
|
-
"secrets_store:read": "Grants read level access to Secrets Store",
|
|
402
|
-
"secrets_store:write": "Grants write level access to Secrets Store",
|
|
403
|
-
"ssl_certs:write": "Grants read and write access to SSL MTLS certificates or Certificate Store",
|
|
404
|
-
"sso-connector:read": "See Cloudflare SSO connectors",
|
|
405
|
-
"sso-connector:write": "See Cloudflare SSO connectors to toggle activation and deactivation of SSO",
|
|
406
|
-
"teams:pii": "See personally identifiable Cloudflare Teams data",
|
|
407
|
-
"teams:read": "See Cloudflare Teams data such as zones, gateway, and argo tunnel details",
|
|
408
|
-
"teams:secure_location": "See all DNS Location data but can only change secure DNS Locations",
|
|
409
|
-
"teams:write": "See and change Cloudflare Teams data such as zones, gateway, and argo tunnel details",
|
|
410
|
-
"url_scanner:read": "Grants read level access to URL Scanner",
|
|
411
|
-
"url_scanner:write": "Grants write level access to URL Scanner",
|
|
412
|
-
"user:read": "See your user info such as name, email address, and account memberships",
|
|
413
|
-
"vectorize:write": "See and make changes to Vectorize",
|
|
414
|
-
"workers:read": "See Cloudflare Workers data such as zones, KV storage, R2 storage, scripts, and routes",
|
|
415
|
-
"workers:write": "See and change Cloudflare Workers data such as zones, KV storage, R2 storage, scripts, and routes",
|
|
416
|
-
"workers_builds:read": "See Cloudflare Workers Builds data such as builds, build configuration, and build logs",
|
|
417
|
-
"workers_builds:write": "See and change Cloudflare Workers Builds data such as builds, build configuration, and build logs",
|
|
418
|
-
"workers_kv:write": "See and change Cloudflare Workers KV Storage data such as keys and namespaces",
|
|
419
|
-
"workers_observability:read": "Grants read access to Cloudflare Workers Observability",
|
|
420
|
-
"workers_observability:write": "Grants read and write access to Cloudflare Workers Observability",
|
|
421
|
-
"workers_observability_telemetry:write": "Grants write access to Cloudflare Workers Observability Telemetry API",
|
|
422
|
-
"workers_routes:write": "See and change Cloudflare Workers data such as filters and routes",
|
|
423
|
-
"workers_scripts:write": "See and change Cloudflare Workers scripts, durable objects, subdomains, triggers, and tail data",
|
|
424
|
-
"workers_tail:read": "See Cloudflare Workers tail and script data",
|
|
425
|
-
"zone:read": "Grants read level access to account zone",
|
|
426
|
-
};
|
|
427
|
-
export const DEFAULT_SCOPES = [
|
|
428
|
-
"account:read",
|
|
429
|
-
"ai-search:write",
|
|
430
|
-
"ai-search:run",
|
|
431
|
-
"ai:write",
|
|
432
|
-
"aig:read",
|
|
433
|
-
"aig:write",
|
|
434
|
-
"cloudchamber:write",
|
|
435
|
-
"connectivity:admin",
|
|
436
|
-
"containers:write",
|
|
437
|
-
"d1:write",
|
|
438
|
-
"pages:write",
|
|
439
|
-
"pipelines:write",
|
|
440
|
-
"queues:write",
|
|
441
|
-
"secrets_store:write",
|
|
442
|
-
"ssl_certs:write",
|
|
443
|
-
"user:read",
|
|
444
|
-
"vectorize:write",
|
|
445
|
-
"workers_kv:write",
|
|
446
|
-
"workers_observability:read",
|
|
447
|
-
"workers_observability:write",
|
|
448
|
-
"workers_observability_telemetry:write",
|
|
449
|
-
"workers_routes:write",
|
|
450
|
-
"workers_scripts:write",
|
|
451
|
-
"workers_tail:read",
|
|
452
|
-
"workers:write",
|
|
453
|
-
"zone:read",
|
|
454
|
-
];
|
|
455
|
-
export const OAUTH_CLIENT_ID = "6d8c2255-0773-45f6-b376-2914632e6f91";
|
|
456
|
-
export const OAUTH_REDIRECT_URI = "https://alchemy.run/auth/callback";
|
|
457
|
-
export const OAUTH_LOCAL_CALLBACK_URI = "http://localhost:9976/auth/callback";
|
|
458
|
-
export const OAUTH_ENDPOINTS = {
|
|
459
|
-
authorize: "https://dash.cloudflare.com/oauth2/authorize",
|
|
460
|
-
token: "https://dash.cloudflare.com/oauth2/token",
|
|
461
|
-
revoke: "https://dash.cloudflare.com/oauth2/revoke",
|
|
462
|
-
};
|
|
463
609
|
//# sourceMappingURL=AuthProvider.js.map
|