@cloudflare/workers-auth 0.9.3 → 0.9.5

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.
@@ -1,6 +1,6 @@
1
- import { a as ConfigStorage, A as AuthConfigStorage, U as UserAuthConfig, f as OAuthFlowContext, g as ProfileStore } from '../file-format-Dlt3H3sW.mjs';
2
- import { C as CliDescriptor, A as AuthContext, a as CloudflareAuth, U as UserPreferences, K as KeyringPreferenceContext, S as SetKeyringPreferenceResult } from '../keyring-preference-B8dU564W.mjs';
3
- export { b as CloudflareLoginProps } from '../keyring-preference-B8dU564W.mjs';
1
+ import { a as ConfigStorage, A as AuthConfigStorage, U as UserAuthConfig, f as OAuthFlowContext, g as ProfileStore } from '../file-format-hS8cJZA7.mjs';
2
+ import { C as CliDescriptor, A as AuthContext, a as CloudflareAuth, U as UserPreferences, K as KeyringPreferenceContext, S as SetKeyringPreferenceResult } from '../keyring-preference-dD49DWOI.mjs';
3
+ export { b as CloudflareLoginProps } from '../keyring-preference-dD49DWOI.mjs';
4
4
  import '@cloudflare/workers-utils';
5
5
 
6
6
  /**
package/dist/cf/index.mjs CHANGED
@@ -1,9 +1,12 @@
1
- import { createAuthConfigFileHelpers, createPreferences, createKeyringPreference, createFileStorage, createCloudflareAuth, createCloudflareProfileStore } from '../chunk-V6MEAFHI.mjs';
2
- import '../chunk-WMSASLDV.mjs';
3
- import { __name } from '../chunk-O6YSETKJ.mjs';
1
+ import { createRequire } from 'node:module';
2
+ import { createAuthConfigFileHelpers, createPreferences, createKeyringPreference, createFileStorage, createCloudflareAuth, createCloudflareProfileStore } from '../chunk-VVLCNASF.mjs';
3
+ import '../chunk-FT2NMTJB.mjs';
4
+ import { __name } from '../chunk-VAZEJK55.mjs';
4
5
  import { getEnvironmentVariableFactory, getGlobalConfigPath, getCloudflareApiEnvironmentFromEnv } from '@cloudflare/workers-utils';
5
6
  import path from 'node:path';
6
7
 
8
+ createRequire(import.meta.url || (typeof __filename === "string" ? __filename : "/"));
9
+
7
10
  // src/cf/constants.ts
8
11
  var CF_KEYRING_SERVICE_NAME = "cloudflare";
9
12
  var CF_CLI_NAME = "cf";
@@ -1,4 +1,5 @@
1
- import { __name } from './chunk-O6YSETKJ.mjs';
1
+ import { createRequire } from 'node:module';
2
+ import { __name } from './chunk-VAZEJK55.mjs';
2
3
  import { getEnvironmentVariableFactory, getCloudflareApiEnvironmentFromEnv, getBooleanEnvironmentVariableFactory, UserError, readFileSync, isNonInteractiveOrCI, FatalError, getCloudflareApiBaseUrl, COMPLIANCE_REGION_CONFIG_PUBLIC, getCloudflareComplianceRegion, parseTOML } from '@cloudflare/workers-utils';
3
4
  import { spawn, spawnSync } from 'node:child_process';
4
5
  import { fetch } from 'undici';
@@ -9,7 +10,8 @@ import http from 'node:http';
9
10
  import url from 'node:url';
10
11
  import path4 from 'node:path';
11
12
  import { existsSync, mkdirSync, writeFileSync, chmodSync, rmSync } from 'node:fs';
12
- import { createRequire } from 'node:module';
13
+
14
+ createRequire(import.meta.url || (typeof __filename === "string" ? __filename : "/"));
13
15
 
14
16
  // src/state.ts
15
17
  var hasWarnedAboutDeprecatedV1ApiToken = false;
@@ -162,6 +164,14 @@ var getCloudflareAuthUseKeyringFromEnv = getBooleanEnvironmentVariableFactory({
162
164
  });
163
165
  var headersCache = {};
164
166
  var usesAccessCache = /* @__PURE__ */ new Map();
167
+ function buildProbeUrl(domain, previewToken) {
168
+ const url2 = new URL(`https://${domain}`);
169
+ if (previewToken) {
170
+ url2.searchParams.set("cf_workers_preview_token", previewToken);
171
+ }
172
+ return url2.toString();
173
+ }
174
+ __name(buildProbeUrl, "buildProbeUrl");
165
175
  function clearAccessCaches() {
166
176
  for (const key of Object.keys(headersCache)) {
167
177
  delete headersCache[key];
@@ -169,15 +179,16 @@ function clearAccessCaches() {
169
179
  usesAccessCache.clear();
170
180
  }
171
181
  __name(clearAccessCaches, "clearAccessCaches");
172
- async function domainUsesAccess(domain, logger) {
182
+ async function domainUsesAccess(domain, logger, previewToken) {
173
183
  logger.debug("Checking if domain has Access enabled:", domain);
174
- if (usesAccessCache.has(domain)) {
184
+ const cacheKey = JSON.stringify([domain, Boolean(previewToken)]);
185
+ if (usesAccessCache.has(cacheKey)) {
175
186
  logger.debug(
176
187
  "Using cached Access switch for:",
177
188
  domain,
178
- usesAccessCache.get(domain)
189
+ usesAccessCache.get(cacheKey)
179
190
  );
180
- return usesAccessCache.get(domain) ?? false;
191
+ return usesAccessCache.get(cacheKey) ?? false;
181
192
  }
182
193
  logger.debug("Access switch not cached for:", domain);
183
194
  try {
@@ -185,17 +196,19 @@ async function domainUsesAccess(domain, logger) {
185
196
  const cancel = setTimeout(() => {
186
197
  controller.abort();
187
198
  }, 1e3);
188
- const output = await fetch(`https://${domain}`, {
199
+ const output = await fetch(buildProbeUrl(domain, previewToken), {
189
200
  redirect: "manual",
190
201
  signal: controller.signal
191
202
  });
192
203
  clearTimeout(cancel);
193
204
  const usesAccess = !!(output.status === 302 && output.headers.get("location")?.includes("cloudflareaccess.com"));
194
- logger.debug("Caching access switch for:", domain);
195
- usesAccessCache.set(domain, usesAccess);
205
+ if (usesAccess || !previewToken) {
206
+ logger.debug("Caching access switch for:", domain);
207
+ usesAccessCache.set(cacheKey, usesAccess);
208
+ }
196
209
  return usesAccess;
197
210
  } catch {
198
- usesAccessCache.set(domain, false);
211
+ logger.debug("Access probe failed for:", domain);
199
212
  return false;
200
213
  }
201
214
  }
@@ -216,7 +229,7 @@ async function getAccessHeaders(domain, options) {
216
229
  `Both CLOUDFLARE_ACCESS_CLIENT_ID and CLOUDFLARE_ACCESS_CLIENT_SECRET must be set to use Access Service Token authentication. Only ${clientId !== void 0 ? "CLOUDFLARE_ACCESS_CLIENT_ID" : "CLOUDFLARE_ACCESS_CLIENT_SECRET"} was found.`
217
230
  );
218
231
  }
219
- if (!await domainUsesAccess(domain, logger)) {
232
+ if (!await domainUsesAccess(domain, logger, options.previewToken)) {
220
233
  return {};
221
234
  }
222
235
  logger.debug("Getting Access headers for domain:", domain);
@@ -235,7 +248,10 @@ See https://developers.cloudflare.com/cloudflare-one/access-controls/service-cre
235
248
  );
236
249
  }
237
250
  logger.debug("Spawning cloudflared to get Access token for domain:");
238
- const output = await spawnCloudflaredAccessLogin(domain, options.signal);
251
+ const output = await spawnCloudflaredAccessLogin(
252
+ buildProbeUrl(domain, options.previewToken),
253
+ options.signal
254
+ );
239
255
  if (output.error) {
240
256
  throw new UserError(
241
257
  "To use Wrangler with Cloudflare Access, please install `cloudflared` from https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation",
@@ -254,9 +270,11 @@ See https://developers.cloudflare.com/cloudflare-one/access-controls/service-cre
254
270
  throw new Error("Failed to authenticate with Cloudflare Access");
255
271
  }
256
272
  __name(getAccessHeaders, "getAccessHeaders");
257
- function spawnCloudflaredAccessLogin(domain, signal) {
273
+ function spawnCloudflaredAccessLogin(loginTarget, signal) {
258
274
  return new Promise((resolve, reject) => {
259
- const child = spawn("cloudflared", ["access", "login", domain], { signal });
275
+ const child = spawn("cloudflared", ["access", "login", loginTarget], {
276
+ signal
277
+ });
260
278
  const stdoutChunks = [];
261
279
  child.stdout.on("data", (chunk) => stdoutChunks.push(chunk));
262
280
  child.stderr.resume();
@@ -732,6 +750,14 @@ var ErrorUnknown = class extends ErrorOAuth2 {
732
750
  return "ErrorUnknown";
733
751
  }
734
752
  };
753
+ var ErrorAuthServerUnreachable = class extends ErrorOAuth2 {
754
+ static {
755
+ __name(this, "ErrorAuthServerUnreachable");
756
+ }
757
+ toString() {
758
+ return "ErrorAuthServerUnreachable";
759
+ }
760
+ };
735
761
  var ErrorNoAuthCode = class extends ErrorOAuth2 {
736
762
  static {
737
763
  __name(this, "ErrorNoAuthCode");
@@ -1132,7 +1158,12 @@ async function fetchAuthToken(body, logger, isNonInteractiveOrCI2) {
1132
1158
  return response;
1133
1159
  } catch (e) {
1134
1160
  logger.debug("Failed to fetch auth token:", e);
1135
- throw e;
1161
+ const cause = e?.cause;
1162
+ const code = typeof cause?.code === "string" ? ` (${cause.code})` : "";
1163
+ throw new ErrorAuthServerUnreachable(
1164
+ `Could not reach the Cloudflare auth server at ${getTokenUrlFromEnv()}${code}.`,
1165
+ { cause: e, telemetryMessage: "user oauth token endpoint unreachable" }
1166
+ );
1136
1167
  }
1137
1168
  }
1138
1169
  __name(fetchAuthToken, "fetchAuthToken");
@@ -1778,12 +1809,12 @@ function createOAuthFlow(ctx) {
1778
1809
  refresh_token,
1779
1810
  scopes
1780
1811
  });
1781
- return true;
1812
+ return "refreshed";
1782
1813
  } catch (e) {
1783
1814
  ctx.logger.debug(
1784
1815
  `Token refresh failed: ${e instanceof Error ? e.message : String(e)}`
1785
1816
  );
1786
- return false;
1817
+ return e instanceof ErrorAuthServerUnreachable ? "unreachable" : "rejected";
1787
1818
  }
1788
1819
  }
1789
1820
  __name(refreshToken, "refreshToken");
@@ -1807,10 +1838,13 @@ function createOAuthFlow(ctx) {
1807
1838
  }
1808
1839
  return { loggedIn: false, reason: "no-credentials-login-failed" };
1809
1840
  } else if (isRefreshNeeded(props.profile)) {
1810
- const didRefresh = await refreshToken(props.profile);
1811
- if (didRefresh) {
1841
+ const refreshed = await refreshToken(props.profile);
1842
+ if (refreshed === "refreshed") {
1812
1843
  return { loggedIn: true };
1813
1844
  }
1845
+ if (refreshed === "unreachable") {
1846
+ return { loggedIn: false, reason: "token-refresh-unreachable" };
1847
+ }
1814
1848
  if (ctx.isNonInteractiveOrCI()) {
1815
1849
  return {
1816
1850
  loggedIn: false,
@@ -1868,8 +1902,7 @@ function createOAuthFlow(ctx) {
1868
1902
  }
1869
1903
  const expired = stored.accessToken && /* @__PURE__ */ new Date() >= new Date(stored.accessToken.expiry);
1870
1904
  if (expired) {
1871
- const didRefresh = await refreshToken();
1872
- if (!didRefresh) {
1905
+ if (await refreshToken() !== "refreshed") {
1873
1906
  return void 0;
1874
1907
  }
1875
1908
  stored = readStoredAuthState({
@@ -1,3 +1,6 @@
1
+ import { createRequire } from 'node:module';
2
+
3
+ createRequire(import.meta.url || (typeof __filename === "string" ? __filename : "/"));
1
4
  var __defProp = Object.defineProperty;
2
5
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
6
 
@@ -1,10 +1,12 @@
1
- import { stringifyFile, parseFile, dedent, createCredentialStorageContext, createOAuthFlow, getAuthFromEnv, createProfileStore, validateAccountId, getCloudflareAccountIdFromEnv, getAuthConfigFilePath, getEncryptedAuthConfigFilePath, scrubEncryptedCredentials, validateProfileName, getCloudflareAuthUseKeyringFromEnv } from './chunk-WMSASLDV.mjs';
2
- import { __name } from './chunk-O6YSETKJ.mjs';
1
+ import { createRequire } from 'node:module';
2
+ import { stringifyFile, parseFile, dedent, createCredentialStorageContext, createOAuthFlow, getAuthFromEnv, createProfileStore, validateAccountId, getCloudflareAccountIdFromEnv, getAuthConfigFilePath, getEncryptedAuthConfigFilePath, scrubEncryptedCredentials, validateProfileName, getCloudflareAuthUseKeyringFromEnv } from './chunk-FT2NMTJB.mjs';
3
+ import { __name } from './chunk-VAZEJK55.mjs';
3
4
  import { existsSync, rmSync, mkdirSync, writeFileSync, chmodSync, readFileSync as readFileSync$1, readdirSync } from 'node:fs';
4
5
  import path3 from 'node:path';
5
6
  import { URLSearchParams } from 'node:url';
6
7
  import { readFileSync, isNonInteractiveOrCI, createConfigCache, openInBrowser, fetchInternalBase, hasMorePages, throwFetchError, UserError, isCI, getCloudflareComplianceRegion } from '@cloudflare/workers-utils';
7
8
 
9
+ createRequire(import.meta.url || (typeof __filename === "string" ? __filename : "/"));
8
10
  function createPreferences(getConfigPath) {
9
11
  function getUserPreferencesPath() {
10
12
  return path3.resolve(getConfigPath(), "preferences.json");
@@ -763,7 +765,8 @@ function notLoggedInErrorBodies(loginCommand) {
763
765
  "no-credentials-non-interactive": `Could not authenticate because no credentials were found and the environment is non-interactive. Set a CLOUDFLARE_API_TOKEN environment variable or run \`${loginCommand}\` in an interactive terminal first.`,
764
766
  "no-credentials-login-failed": `No credentials were found and the login attempt was unsuccessful. Run \`${loginCommand}\` to try again.`,
765
767
  "token-expired-non-interactive": `Your auth token has expired and could not be refreshed, and the environment is non-interactive. Run \`${loginCommand}\` in an interactive terminal or set a CLOUDFLARE_API_TOKEN.`,
766
- "token-expired-login-failed": `Your auth token has expired and could not be refreshed, and the login attempt was unsuccessful. Run \`${loginCommand}\` to try again.`
768
+ "token-expired-login-failed": `Your auth token has expired and could not be refreshed, and the login attempt was unsuccessful. Run \`${loginCommand}\` to try again.`,
769
+ "token-refresh-unreachable": `Your auth token has expired and could not be refreshed because the Cloudflare auth server could not be reached. This is usually a network problem (connectivity, proxy, or IPv6), not an invalid login: your stored credentials were left unchanged. Check your connection and try again.`
767
770
  };
768
771
  }
769
772
  __name(notLoggedInErrorBodies, "notLoggedInErrorBodies");
@@ -1101,6 +1104,10 @@ ${accounts.map(
1101
1104
  `In a non-interactive environment, it's necessary to set a CLOUDFLARE_API_TOKEN environment variable for ${cliName} to work. Please go to https://developers.cloudflare.com/fundamentals/api/get-started/create-token/ for instructions on how to create an api token, and assign its value to CLOUDFLARE_API_TOKEN.`,
1102
1105
  { telemetryMessage: "user auth missing api token non interactive" }
1103
1106
  );
1107
+ } else if (result.reason === "token-refresh-unreachable") {
1108
+ throw new UserError(NOT_LOGGED_IN_ERROR_BODIES[result.reason], {
1109
+ telemetryMessage: "user auth token refresh unreachable"
1110
+ });
1104
1111
  } else {
1105
1112
  throw new UserError("Did not login, quitting...", {
1106
1113
  telemetryMessage: "user login cancelled"
@@ -248,7 +248,9 @@ type LoginOrRefreshFailureReason =
248
248
  /** the stored token has expired, refresh failed, and the environment is non-interactive so a browser login cannot be started. */
249
249
  | "token-expired-non-interactive"
250
250
  /** the stored token has expired, refresh failed, and the interactive login attempt was unsuccessful. */
251
- | "token-expired-login-failed";
251
+ | "token-expired-login-failed"
252
+ /** the stored token has expired and the auth server could not be reached to refresh it; the stored credentials were left untouched and no login was attempted. */
253
+ | "token-refresh-unreachable";
252
254
  /**
253
255
  * Discriminated union returned by {@link OAuthFlowAPI.loginOrRefreshIfRequired}.
254
256
  *
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as OAuthFlowLogger, U as UserAuthConfig, A as AuthConfigStorage, C as CredentialStore, F as FileFormat } from './file-format-Dlt3H3sW.mjs';
2
- export { a as ConfigStorage, D as DeactivateDirectoryResult, b as DirectoryBindingOperations, c as DirectoryBindingsStorage, L as LoginOrRefreshFailureReason, d as LoginOrRefreshResult, e as LoginProps, f as OAuthFlowContext, P as ProfileConfigOperations, g as ProfileStore, T as TemporaryAccountRequest, h as TemporaryPreviewAccount, i as createOAuthFlow, j as createProfileStore, k as generateAuthUrl, l as generateRandomState, v as validateProfileName } from './file-format-Dlt3H3sW.mjs';
1
+ import { O as OAuthFlowLogger, U as UserAuthConfig, A as AuthConfigStorage, C as CredentialStore, F as FileFormat } from './file-format-hS8cJZA7.mjs';
2
+ export { a as ConfigStorage, D as DeactivateDirectoryResult, b as DirectoryBindingOperations, c as DirectoryBindingsStorage, L as LoginOrRefreshFailureReason, d as LoginOrRefreshResult, e as LoginProps, f as OAuthFlowContext, P as ProfileConfigOperations, g as ProfileStore, T as TemporaryAccountRequest, h as TemporaryPreviewAccount, i as createOAuthFlow, j as createProfileStore, k as generateAuthUrl, l as generateRandomState, v as validateProfileName } from './file-format-hS8cJZA7.mjs';
3
3
  import { ApiCredentials } from '@cloudflare/workers-utils';
4
4
  import { SpawnSyncReturns } from 'node:child_process';
5
5
 
@@ -42,14 +42,23 @@ declare function clearAccessCaches(): void;
42
42
  * A 302 to `cloudflareaccess.com` is the canonical signal. Service-auth-only
43
43
  * Access applications return a hard 403 instead and are therefore not detected
44
44
  * here — see {@link getAccessHeaders} for how this is handled.
45
+ *
46
+ * When `previewToken` is supplied it is added as the `cf_workers_preview_token`
47
+ * query parameter so the probe activates an unpublished worker's edge-preview
48
+ * route (otherwise the anonymous probe 404s and Access is never triggered). The
49
+ * cache is keyed on whether a token was supplied so token-authenticated and
50
+ * anonymous probes of the same host don't poison each other.
45
51
  */
46
- declare function domainUsesAccess(domain: string, logger: OAuthFlowLogger): Promise<boolean>;
52
+ declare function domainUsesAccess(domain: string, logger: OAuthFlowLogger, previewToken?: string): Promise<boolean>;
47
53
  /**
48
54
  * Get the headers needed to authenticate with an Access-protected domain.
49
55
  *
50
56
  * @param domain The hostname of the Access-protected domain (e.g. `"example.com"`).
51
57
  * @param options logger + an `isNonInteractiveOrCI` predicate used to
52
- * produce an actionable error in CI; both default to no-op / `false`.
58
+ * produce an actionable error in CI (both default to no-op / `false`), plus an
59
+ * optional `previewToken` that is added as the `cf_workers_preview_token`
60
+ * query parameter when probing for Access and when invoking `cloudflared
61
+ * access login`, so detection works on unpublished `<name>.workers.dev` hosts.
53
62
  * @returns
54
63
  * - Service token headers (`CF-Access-Client-Id` + `CF-Access-Client-Secret`) if env vars are set
55
64
  * - A `Cookie: CF_Authorization=...` header if obtained via `cloudflared` (interactive only)
@@ -64,6 +73,12 @@ declare function getAccessHeaders(domain: string, options: {
64
73
  isNonInteractiveOrCI?: () => boolean;
65
74
  /** Aborts a pending `cloudflared` authorization and kills its process. */
66
75
  signal?: AbortSignal;
76
+ /**
77
+ * Workers preview token forwarded to the Access probe and to
78
+ * `cloudflared access login` so detection works on unpublished
79
+ * `<name>.workers.dev` hosts.
80
+ */
81
+ previewToken?: string;
67
82
  }): Promise<Record<string, string>>;
68
83
 
69
84
  /**
package/dist/index.mjs CHANGED
@@ -1,2 +1,5 @@
1
- export { EncryptedFileCredentialStore, FileCredentialStore, LinuxSecretToolKeyProvider, MacSecurityKeyProvider, NapiKeyringKeyProvider, PINNED_KEYRING_VERSION, PKCE_CHARSET, TEMPORARY_TERMS_NOTICE, TEMPORARY_TERMS_PROMPT, clearAccessCaches, clearCredentialStorageState, createCredentialStorageContext, createOAuthFlow, createProfileStore, decryptString, domainUsesAccess, encryptString, findKeyringBinding, generateAuthUrl, generateKey, generateRandomState, generateVerificationUrl, getAccessHeaders, getAuthConfigFilePath, getAuthFromEnv, getAuthUrlFromEnv, getCloudflareAPITokenFromEnv, getCloudflareAccountIdFromEnv, getCloudflareAuthUseKeyringFromEnv, getCloudflareGlobalAuthEmailFromEnv, getCloudflareGlobalAuthKeyFromEnv, getEncryptedAuthConfigFilePath, getKeyringAccountName, getKeyringInstallDir, installKeyringBindingSync, parseEncryptedEnvelope, probeSecretTool, readStoredAuthState, resetCredentialStorageState, resolveKeyProvider, scrubEncryptedCredentials, setKeyProviderFactoryForTesting, setKeyringEntryFactory, setLinuxSecretToolRunner, setMacSecurityCommandRunner, setNpmRunner, validateProfileName } from './chunk-WMSASLDV.mjs';
2
- import './chunk-O6YSETKJ.mjs';
1
+ import { createRequire } from 'node:module';
2
+ export { EncryptedFileCredentialStore, FileCredentialStore, LinuxSecretToolKeyProvider, MacSecurityKeyProvider, NapiKeyringKeyProvider, PINNED_KEYRING_VERSION, PKCE_CHARSET, TEMPORARY_TERMS_NOTICE, TEMPORARY_TERMS_PROMPT, clearAccessCaches, clearCredentialStorageState, createCredentialStorageContext, createOAuthFlow, createProfileStore, decryptString, domainUsesAccess, encryptString, findKeyringBinding, generateAuthUrl, generateKey, generateRandomState, generateVerificationUrl, getAccessHeaders, getAuthConfigFilePath, getAuthFromEnv, getAuthUrlFromEnv, getCloudflareAPITokenFromEnv, getCloudflareAccountIdFromEnv, getCloudflareAuthUseKeyringFromEnv, getCloudflareGlobalAuthEmailFromEnv, getCloudflareGlobalAuthKeyFromEnv, getEncryptedAuthConfigFilePath, getKeyringAccountName, getKeyringInstallDir, installKeyringBindingSync, parseEncryptedEnvelope, probeSecretTool, readStoredAuthState, resetCredentialStorageState, resolveKeyProvider, scrubEncryptedCredentials, setKeyProviderFactoryForTesting, setKeyringEntryFactory, setLinuxSecretToolRunner, setMacSecurityCommandRunner, setNpmRunner, validateProfileName } from './chunk-FT2NMTJB.mjs';
3
+ import './chunk-VAZEJK55.mjs';
4
+
5
+ createRequire(import.meta.url || (typeof __filename === "string" ? __filename : "/"));
@@ -1,4 +1,4 @@
1
- import { f as OAuthFlowContext, m as OAuthConsentPages, F as FileFormat, C as CredentialStore, T as TemporaryAccountRequest, d as LoginOrRefreshResult, U as UserAuthConfig } from './file-format-Dlt3H3sW.mjs';
1
+ import { f as OAuthFlowContext, m as OAuthConsentPages, F as FileFormat, C as CredentialStore, T as TemporaryAccountRequest, d as LoginOrRefreshResult, U as UserAuthConfig } from './file-format-hS8cJZA7.mjs';
2
2
  import { ApiCredentials, ComplianceConfig } from '@cloudflare/workers-utils';
3
3
 
4
4
  /** Minimal shape of the interactive `select` prompt's options for account selection. */