@clerk/shared 4.8.4-snapshot.v20260423043146 → 4.8.4

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.
Files changed (69) hide show
  1. package/dist/runtime/apiUrlFromPublishableKey.d.mts +1 -1
  2. package/dist/runtime/apiUrlFromPublishableKey.d.ts +1 -1
  3. package/dist/runtime/apiUrlFromPublishableKey.js +1 -1
  4. package/dist/runtime/apiUrlFromPublishableKey.mjs +1 -1
  5. package/dist/runtime/globs.d.mts.map +1 -1
  6. package/dist/runtime/globs.d.ts.map +1 -1
  7. package/dist/runtime/index-B4_BYgBX.d.mts.map +1 -1
  8. package/dist/runtime/internal/clerk-js/completeSignUpFlow.js +3 -3
  9. package/dist/runtime/internal/clerk-js/completeSignUpFlow.mjs +3 -3
  10. package/dist/runtime/internal/clerk-js/queryParams.js +3 -3
  11. package/dist/runtime/internal/clerk-js/queryParams.mjs +3 -3
  12. package/dist/runtime/internal/clerk-js/queryStateParams.js +3 -3
  13. package/dist/runtime/internal/clerk-js/queryStateParams.mjs +3 -3
  14. package/dist/runtime/internal/clerk-js/redirectUrls.js +2 -2
  15. package/dist/runtime/internal/clerk-js/redirectUrls.mjs +2 -2
  16. package/dist/runtime/internal/clerk-js/sessionTasks.js +4 -4
  17. package/dist/runtime/internal/clerk-js/sessionTasks.mjs +4 -4
  18. package/dist/runtime/internal/clerk-js/url.js +2 -2
  19. package/dist/runtime/internal/clerk-js/url.mjs +2 -2
  20. package/dist/runtime/{keys-DuxzP8MU.mjs → keys-BeVKH43u.mjs} +32 -2
  21. package/dist/runtime/keys-BeVKH43u.mjs.map +1 -0
  22. package/dist/runtime/{keys-BI9hmfja.js → keys-D5ahg2Gn.js} +37 -1
  23. package/dist/runtime/keys-D5ahg2Gn.js.map +1 -0
  24. package/dist/runtime/keys.d.mts +26 -1
  25. package/dist/runtime/keys.d.mts.map +1 -1
  26. package/dist/runtime/keys.d.ts +26 -1
  27. package/dist/runtime/keys.d.ts.map +1 -1
  28. package/dist/runtime/keys.js +3 -2
  29. package/dist/runtime/keys.mjs +2 -2
  30. package/dist/runtime/loadClerkJsScript.js +3 -3
  31. package/dist/runtime/loadClerkJsScript.js.map +1 -1
  32. package/dist/runtime/loadClerkJsScript.mjs +3 -3
  33. package/dist/runtime/loadClerkJsScript.mjs.map +1 -1
  34. package/dist/runtime/{netlifyCacheHandler-Dkdkho_6.mjs → netlifyCacheHandler-Cpx2hZ9E.mjs} +2 -2
  35. package/dist/runtime/{netlifyCacheHandler-Dkdkho_6.mjs.map → netlifyCacheHandler-Cpx2hZ9E.mjs.map} +1 -1
  36. package/dist/runtime/{netlifyCacheHandler-DFm5qdPh.js → netlifyCacheHandler-DMlEakyq.js} +2 -2
  37. package/dist/runtime/{netlifyCacheHandler-DFm5qdPh.js.map → netlifyCacheHandler-DMlEakyq.js.map} +1 -1
  38. package/dist/runtime/netlifyCacheHandler.js +2 -2
  39. package/dist/runtime/netlifyCacheHandler.mjs +2 -2
  40. package/dist/runtime/{queryParams-Dlt0oVDg.mjs → queryParams-Bad5kF87.mjs} +2 -2
  41. package/dist/runtime/{queryParams-Dlt0oVDg.mjs.map → queryParams-Bad5kF87.mjs.map} +1 -1
  42. package/dist/runtime/{queryParams-DSUymAGT.js → queryParams-DFhrd86C.js} +2 -2
  43. package/dist/runtime/{queryParams-DSUymAGT.js.map → queryParams-DFhrd86C.js.map} +1 -1
  44. package/dist/runtime/react/index.d.mts +1 -1
  45. package/dist/runtime/react/index.d.ts +1 -1
  46. package/dist/runtime/react/index.js +3 -3
  47. package/dist/runtime/react/index.js.map +1 -1
  48. package/dist/runtime/react/index.mjs +3 -3
  49. package/dist/runtime/react/index.mjs.map +1 -1
  50. package/dist/runtime/router.d.mts.map +1 -1
  51. package/dist/runtime/{telemetry-DE2JFEBf.mjs → telemetry-DJrefnDc.mjs} +2 -2
  52. package/dist/runtime/{telemetry-DE2JFEBf.mjs.map → telemetry-DJrefnDc.mjs.map} +1 -1
  53. package/dist/runtime/{telemetry--P0a0tSk.js → telemetry-DMGwYVSd.js} +2 -2
  54. package/dist/runtime/{telemetry--P0a0tSk.js.map → telemetry-DMGwYVSd.js.map} +1 -1
  55. package/dist/runtime/telemetry.js +2 -2
  56. package/dist/runtime/telemetry.mjs +2 -2
  57. package/dist/runtime/{url-CoXV4i87.js → url-Cw4Wpvh3.js} +2 -2
  58. package/dist/runtime/{url-CoXV4i87.js.map → url-Cw4Wpvh3.js.map} +1 -1
  59. package/dist/runtime/{url-DaPDWryr.mjs → url-cNLJYbcB.mjs} +2 -2
  60. package/dist/runtime/{url-DaPDWryr.mjs.map → url-cNLJYbcB.mjs.map} +1 -1
  61. package/dist/runtime/{versionSelector-DSmto5Fc.js → versionSelector-C1hK82gB.js} +2 -2
  62. package/dist/runtime/{versionSelector-DSmto5Fc.js.map → versionSelector-C1hK82gB.js.map} +1 -1
  63. package/dist/runtime/{versionSelector-Ey3EuPi-.mjs → versionSelector-CNF9SLY3.mjs} +2 -2
  64. package/dist/runtime/{versionSelector-Ey3EuPi-.mjs.map → versionSelector-CNF9SLY3.mjs.map} +1 -1
  65. package/dist/runtime/versionSelector.js +1 -1
  66. package/dist/runtime/versionSelector.mjs +1 -1
  67. package/package.json +1 -1
  68. package/dist/runtime/keys-BI9hmfja.js.map +0 -1
  69. package/dist/runtime/keys-DuxzP8MU.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import "./constants-Bta24VLk.mjs";
2
2
  import "./isomorphicAtob-CoF80qYz.mjs";
3
3
  import "./isomorphicBtoa-DWmLcIHi.mjs";
4
- import { n as createDevOrStagingUrlCache, u as parsePublishableKey } from "./keys-DuxzP8MU.mjs";
4
+ import { n as createDevOrStagingUrlCache, u as parsePublishableKey } from "./keys-BeVKH43u.mjs";
5
5
  import { t as ClerkRuntimeError } from "./clerkRuntimeError-DqAmLuLY.mjs";
6
6
  import { y as buildErrorThrower } from "./error-NXMTfCAv.mjs";
7
7
  import "./retry-DqRIhHV5.mjs";
@@ -9,7 +9,7 @@ import { t as loadScript } from "./loadScript-UG_epen4.mjs";
9
9
  import { i as proxyUrlToAbsoluteURL, r as isValidProxyUrl } from "./proxy-BcfViKjn.mjs";
10
10
  import "./instance-BmZr0cdE.mjs";
11
11
  import { t as addClerkPrefix } from "./url-C6gPMFx5.mjs";
12
- import { n as versionSelector } from "./versionSelector-Ey3EuPi-.mjs";
12
+ import { n as versionSelector } from "./versionSelector-CNF9SLY3.mjs";
13
13
 
14
14
  //#region src/loadClerkJsScript.ts
15
15
  const { isDevOrStagingUrl } = createDevOrStagingUrlCache();
@@ -146,7 +146,7 @@ const clerkUIScriptUrl = (opts) => {
146
146
  publishableKey,
147
147
  proxyUrl,
148
148
  domain
149
- })}/npm/@clerk/ui@${versionSelector(__internal_clerkUIVersion, "1.6.5-snapshot.v20260423043146")}/dist/ui.browser.js`;
149
+ })}/npm/@clerk/ui@${versionSelector(__internal_clerkUIVersion, "1.6.6")}/dist/ui.browser.js`;
150
150
  };
151
151
  const buildClerkJSScriptAttributes = (options) => {
152
152
  const obj = {};
@@ -1 +1 @@
1
- {"version":3,"file":"loadClerkJsScript.mjs","names":["obj: Record<string, string>","timeoutId","pollInterval"],"sources":["../../src/loadClerkJsScript.ts"],"sourcesContent":["import { buildErrorThrower, ClerkRuntimeError } from './error';\nimport { createDevOrStagingUrlCache, parsePublishableKey } from './keys';\nimport { loadScript } from './loadScript';\nimport { isValidProxyUrl, proxyUrlToAbsoluteURL } from './proxy';\nimport type { SDKMetadata } from './types';\nimport { addClerkPrefix } from './url';\nimport { versionSelector } from './versionSelector';\n\nconst { isDevOrStagingUrl } = createDevOrStagingUrlCache();\n\nconst errorThrower = buildErrorThrower({ packageName: '@clerk/shared' });\n\nexport type LoadClerkJSScriptOptions = {\n publishableKey: string;\n /** @internal */\n __internal_clerkJSUrl?: string;\n /** @internal */\n __internal_clerkJSVersion?: string;\n sdkMetadata?: SDKMetadata;\n proxyUrl?: string;\n domain?: string;\n nonce?: string;\n /**\n * Timeout in milliseconds to wait for clerk-js to load before considering it failed.\n *\n * @default 15000 (15 seconds)\n */\n scriptLoadTimeout?: number;\n};\n\n/**\n * @deprecated Use `LoadClerkJSScriptOptions` instead. This alias will be removed in a future major version.\n */\nexport type LoadClerkJsScriptOptions = LoadClerkJSScriptOptions;\n\nexport type LoadClerkUIScriptOptions = {\n publishableKey: string;\n /** @internal */\n __internal_clerkUIUrl?: string;\n /** @internal */\n __internal_clerkUIVersion?: string;\n proxyUrl?: string;\n domain?: string;\n nonce?: string;\n scriptLoadTimeout?: number;\n};\n\n/**\n * Validates that window.Clerk exists and is properly initialized.\n * This ensures we don't have false positives where the script loads but Clerk is malformed.\n *\n * @returns `true` if window.Clerk exists and has the expected structure with a load method.\n */\nfunction isClerkGlobalProperlyLoaded(prop: 'Clerk' | '__internal_ClerkUICtor'): boolean {\n if (typeof window === 'undefined' || !(window as any)[prop]) {\n return false;\n }\n\n // Basic validation that window.Clerk has the expected structure\n const val = (window as any)[prop];\n return !!val;\n}\nconst isClerkProperlyLoaded = () => isClerkGlobalProperlyLoaded('Clerk');\nconst isClerkUIProperlyLoaded = () => isClerkGlobalProperlyLoaded('__internal_ClerkUICtor');\n\n/**\n * Checks if an existing script has a request error using Performance API.\n *\n * @param scriptUrl - The URL of the script to check.\n * @returns True if the script has failed to load due to a network/HTTP error.\n */\nfunction hasScriptRequestError(scriptUrl: string): boolean {\n if (typeof window === 'undefined' || !window.performance) {\n return false;\n }\n\n const entries = performance.getEntriesByName(scriptUrl, 'resource') as PerformanceResourceTiming[];\n\n if (entries.length === 0) {\n return false;\n }\n\n const scriptEntry = entries[entries.length - 1];\n\n // transferSize === 0 with responseEnd === 0 indicates network failure\n // transferSize === 0 with responseEnd > 0 might be a 4xx/5xx error or blocked request\n if (scriptEntry.transferSize === 0 && scriptEntry.decodedBodySize === 0) {\n // If there was no response at all, it's definitely an error\n if (scriptEntry.responseEnd === 0) {\n return true;\n }\n // If we got a response but no content, likely an HTTP error (4xx/5xx)\n if (scriptEntry.responseEnd > 0 && scriptEntry.responseStart > 0) {\n return true;\n }\n\n if ('responseStatus' in scriptEntry) {\n const status = (scriptEntry as any).responseStatus;\n if (status >= 400) {\n return true;\n }\n if (scriptEntry.responseStatus === 0) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Hotloads the Clerk JS script with robust failure detection.\n *\n * Uses a timeout-based approach to ensure absolute certainty about load success/failure.\n * If the script fails to load within the timeout period, or loads but doesn't create\n * a proper Clerk instance, the promise rejects with an error.\n *\n * @param opts - The options used to build the Clerk JS script URL and load the script.\n * Must include a `publishableKey` if no existing script is found.\n * @returns Promise that resolves with null if Clerk loads successfully, or rejects with an error.\n *\n * @example\n * ```typescript\n * try {\n * await loadClerkJsScript({ publishableKey: 'pk_test_...' });\n * console.log('Clerk loaded successfully');\n * } catch (error) {\n * console.error('Failed to load Clerk:', error.message);\n * }\n * ```\n */\nexport const loadClerkJSScript = async (opts?: LoadClerkJSScriptOptions): Promise<HTMLScriptElement | null> => {\n const timeout = opts?.scriptLoadTimeout ?? 15000;\n const rejectWith = (error?: Error) =>\n new ClerkRuntimeError('Failed to load Clerk JS' + (error?.message ? `, ${error.message}` : ''), {\n code: 'failed_to_load_clerk_js',\n cause: error,\n });\n\n if (isClerkProperlyLoaded()) {\n return null;\n }\n\n if (!opts?.publishableKey) {\n errorThrower.throwMissingPublishableKeyError();\n return null;\n }\n\n const scriptUrl = clerkJSScriptUrl(opts);\n const existingScript = document.querySelector<HTMLScriptElement>('script[data-clerk-js-script]');\n\n if (existingScript) {\n if (hasScriptRequestError(scriptUrl)) {\n existingScript.remove();\n } else {\n try {\n await waitForPredicateWithTimeout(timeout, isClerkProperlyLoaded, rejectWith(), existingScript);\n return null;\n } catch {\n existingScript.remove();\n }\n }\n }\n\n const loadPromise = waitForPredicateWithTimeout(timeout, isClerkProperlyLoaded, rejectWith());\n\n loadScript(scriptUrl, {\n async: true,\n crossOrigin: 'anonymous',\n nonce: opts.nonce,\n beforeLoad: applyAttributesToScript(buildClerkJSScriptAttributes(opts)),\n }).catch(error => {\n throw rejectWith(error);\n });\n\n return loadPromise;\n};\n\nexport const loadClerkUIScript = async (opts?: LoadClerkUIScriptOptions): Promise<HTMLScriptElement | null> => {\n const timeout = opts?.scriptLoadTimeout ?? 15000;\n const rejectWith = (error?: Error) =>\n new ClerkRuntimeError('Failed to load Clerk UI' + (error?.message ? `, ${error.message}` : ''), {\n code: 'failed_to_load_clerk_ui',\n cause: error,\n });\n\n if (isClerkUIProperlyLoaded()) {\n return null;\n }\n\n if (!opts?.publishableKey) {\n errorThrower.throwMissingPublishableKeyError();\n return null;\n }\n\n const scriptUrl = clerkUIScriptUrl(opts);\n const existingScript = document.querySelector<HTMLScriptElement>('script[data-clerk-ui-script]');\n\n if (existingScript) {\n if (hasScriptRequestError(scriptUrl)) {\n existingScript.remove();\n } else {\n try {\n await waitForPredicateWithTimeout(timeout, isClerkUIProperlyLoaded, rejectWith(), existingScript);\n return null;\n } catch {\n existingScript.remove();\n }\n }\n }\n\n const loadPromise = waitForPredicateWithTimeout(timeout, isClerkUIProperlyLoaded, rejectWith());\n\n loadScript(scriptUrl, {\n async: true,\n crossOrigin: 'anonymous',\n nonce: opts.nonce,\n beforeLoad: applyAttributesToScript(buildClerkUIScriptAttributes(opts)),\n }).catch(error => {\n throw rejectWith(error);\n });\n\n return loadPromise;\n};\n\nexport const clerkJSScriptUrl = (opts: LoadClerkJSScriptOptions) => {\n const { __internal_clerkJSUrl, __internal_clerkJSVersion, proxyUrl, domain, publishableKey } = opts;\n\n if (__internal_clerkJSUrl) {\n return __internal_clerkJSUrl;\n }\n\n const scriptHost = buildScriptHost({ publishableKey, proxyUrl, domain });\n const version = versionSelector(__internal_clerkJSVersion);\n return `https://${scriptHost}/npm/@clerk/clerk-js@${version}/dist/clerk.browser.js`;\n};\n\nexport const clerkUIScriptUrl = (opts: LoadClerkUIScriptOptions) => {\n const { __internal_clerkUIUrl, __internal_clerkUIVersion, proxyUrl, domain, publishableKey } = opts;\n\n if (__internal_clerkUIUrl) {\n return __internal_clerkUIUrl;\n }\n\n const scriptHost = buildScriptHost({ publishableKey, proxyUrl, domain });\n const version = versionSelector(__internal_clerkUIVersion, UI_PACKAGE_VERSION);\n return `https://${scriptHost}/npm/@clerk/ui@${version}/dist/ui.browser.js`;\n};\n\nexport const buildClerkJSScriptAttributes = (options: LoadClerkJSScriptOptions) => {\n const obj: Record<string, string> = {};\n\n if (options.publishableKey) {\n obj['data-clerk-publishable-key'] = options.publishableKey;\n }\n\n if (options.proxyUrl) {\n obj['data-clerk-proxy-url'] = options.proxyUrl;\n }\n\n if (options.domain) {\n obj['data-clerk-domain'] = options.domain;\n }\n\n if (options.nonce) {\n obj.nonce = options.nonce;\n }\n\n return obj;\n};\n\nexport const buildClerkUIScriptAttributes = (options: LoadClerkUIScriptOptions) => {\n // TODO @nikos do we need this?\n return buildClerkJSScriptAttributes(options);\n};\n\nconst applyAttributesToScript = (attributes: Record<string, string>) => (script: HTMLScriptElement) => {\n for (const attribute in attributes) {\n script.setAttribute(attribute, attributes[attribute]);\n }\n};\n\nexport const buildScriptHost = (opts: { publishableKey: string; proxyUrl?: string; domain?: string }) => {\n const { proxyUrl, domain, publishableKey } = opts;\n\n if (!!proxyUrl && isValidProxyUrl(proxyUrl)) {\n return proxyUrlToAbsoluteURL(proxyUrl).replace(/http(s)?:\\/\\//, '');\n } else if (domain && !isDevOrStagingUrl(parsePublishableKey(publishableKey)?.frontendApi || '')) {\n return addClerkPrefix(domain);\n } else {\n return parsePublishableKey(publishableKey)?.frontendApi || '';\n }\n};\n\nfunction waitForPredicateWithTimeout(\n timeoutMs: number,\n predicate: () => boolean,\n rejectWith: Error,\n existingScript?: HTMLScriptElement,\n): Promise<HTMLScriptElement | null> {\n return new Promise((resolve, reject) => {\n let resolved = false;\n\n const cleanup = (timeoutId: ReturnType<typeof setTimeout>, pollInterval: ReturnType<typeof setInterval>) => {\n clearTimeout(timeoutId);\n clearInterval(pollInterval);\n };\n\n // Bail out early if the script fails to load, instead of waiting for the entire timeout\n existingScript?.addEventListener('error', () => {\n cleanup(timeoutId, pollInterval);\n reject(rejectWith);\n });\n\n const checkAndResolve = () => {\n if (resolved) {\n return;\n }\n\n if (predicate()) {\n resolved = true;\n cleanup(timeoutId, pollInterval);\n resolve(null);\n }\n };\n\n const handleTimeout = () => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n cleanup(timeoutId, pollInterval);\n\n if (!predicate()) {\n reject(rejectWith);\n } else {\n resolve(null);\n }\n };\n\n const timeoutId = setTimeout(handleTimeout, timeoutMs);\n\n checkAndResolve();\n\n const pollInterval = setInterval(() => {\n if (resolved) {\n clearInterval(pollInterval);\n return;\n }\n checkAndResolve();\n }, 100);\n });\n}\n\nexport function setClerkJSLoadingErrorPackageName(packageName: string) {\n errorThrower.setPackageName({ packageName });\n}\n\n/**\n * @deprecated Use `loadClerkJSScript` instead. This alias will be removed in a future major version.\n */\nexport const loadClerkJsScript = loadClerkJSScript;\n\n/**\n * @deprecated Use `clerkJSScriptUrl` instead. This alias will be removed in a future major version.\n */\nexport const clerkJsScriptUrl = clerkJSScriptUrl;\n\n/**\n * @deprecated Use `buildClerkJSScriptAttributes` instead. This alias will be removed in a future major version.\n */\nexport const buildClerkJsScriptAttributes = buildClerkJSScriptAttributes;\n\n/**\n * @deprecated Use `setClerkJSLoadingErrorPackageName` instead. This alias will be removed in a future major version.\n */\nexport const setClerkJsLoadingErrorPackageName = setClerkJSLoadingErrorPackageName;\n"],"mappings":"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"}
1
+ {"version":3,"file":"loadClerkJsScript.mjs","names":["obj: Record<string, string>","timeoutId","pollInterval"],"sources":["../../src/loadClerkJsScript.ts"],"sourcesContent":["import { buildErrorThrower, ClerkRuntimeError } from './error';\nimport { createDevOrStagingUrlCache, parsePublishableKey } from './keys';\nimport { loadScript } from './loadScript';\nimport { isValidProxyUrl, proxyUrlToAbsoluteURL } from './proxy';\nimport type { SDKMetadata } from './types';\nimport { addClerkPrefix } from './url';\nimport { versionSelector } from './versionSelector';\n\nconst { isDevOrStagingUrl } = createDevOrStagingUrlCache();\n\nconst errorThrower = buildErrorThrower({ packageName: '@clerk/shared' });\n\nexport type LoadClerkJSScriptOptions = {\n publishableKey: string;\n /** @internal */\n __internal_clerkJSUrl?: string;\n /** @internal */\n __internal_clerkJSVersion?: string;\n sdkMetadata?: SDKMetadata;\n proxyUrl?: string;\n domain?: string;\n nonce?: string;\n /**\n * Timeout in milliseconds to wait for clerk-js to load before considering it failed.\n *\n * @default 15000 (15 seconds)\n */\n scriptLoadTimeout?: number;\n};\n\n/**\n * @deprecated Use `LoadClerkJSScriptOptions` instead. This alias will be removed in a future major version.\n */\nexport type LoadClerkJsScriptOptions = LoadClerkJSScriptOptions;\n\nexport type LoadClerkUIScriptOptions = {\n publishableKey: string;\n /** @internal */\n __internal_clerkUIUrl?: string;\n /** @internal */\n __internal_clerkUIVersion?: string;\n proxyUrl?: string;\n domain?: string;\n nonce?: string;\n scriptLoadTimeout?: number;\n};\n\n/**\n * Validates that window.Clerk exists and is properly initialized.\n * This ensures we don't have false positives where the script loads but Clerk is malformed.\n *\n * @returns `true` if window.Clerk exists and has the expected structure with a load method.\n */\nfunction isClerkGlobalProperlyLoaded(prop: 'Clerk' | '__internal_ClerkUICtor'): boolean {\n if (typeof window === 'undefined' || !(window as any)[prop]) {\n return false;\n }\n\n // Basic validation that window.Clerk has the expected structure\n const val = (window as any)[prop];\n return !!val;\n}\nconst isClerkProperlyLoaded = () => isClerkGlobalProperlyLoaded('Clerk');\nconst isClerkUIProperlyLoaded = () => isClerkGlobalProperlyLoaded('__internal_ClerkUICtor');\n\n/**\n * Checks if an existing script has a request error using Performance API.\n *\n * @param scriptUrl - The URL of the script to check.\n * @returns True if the script has failed to load due to a network/HTTP error.\n */\nfunction hasScriptRequestError(scriptUrl: string): boolean {\n if (typeof window === 'undefined' || !window.performance) {\n return false;\n }\n\n const entries = performance.getEntriesByName(scriptUrl, 'resource') as PerformanceResourceTiming[];\n\n if (entries.length === 0) {\n return false;\n }\n\n const scriptEntry = entries[entries.length - 1];\n\n // transferSize === 0 with responseEnd === 0 indicates network failure\n // transferSize === 0 with responseEnd > 0 might be a 4xx/5xx error or blocked request\n if (scriptEntry.transferSize === 0 && scriptEntry.decodedBodySize === 0) {\n // If there was no response at all, it's definitely an error\n if (scriptEntry.responseEnd === 0) {\n return true;\n }\n // If we got a response but no content, likely an HTTP error (4xx/5xx)\n if (scriptEntry.responseEnd > 0 && scriptEntry.responseStart > 0) {\n return true;\n }\n\n if ('responseStatus' in scriptEntry) {\n const status = (scriptEntry as any).responseStatus;\n if (status >= 400) {\n return true;\n }\n if (scriptEntry.responseStatus === 0) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Hotloads the Clerk JS script with robust failure detection.\n *\n * Uses a timeout-based approach to ensure absolute certainty about load success/failure.\n * If the script fails to load within the timeout period, or loads but doesn't create\n * a proper Clerk instance, the promise rejects with an error.\n *\n * @param opts - The options used to build the Clerk JS script URL and load the script.\n * Must include a `publishableKey` if no existing script is found.\n * @returns Promise that resolves with null if Clerk loads successfully, or rejects with an error.\n *\n * @example\n * ```typescript\n * try {\n * await loadClerkJsScript({ publishableKey: 'pk_test_...' });\n * console.log('Clerk loaded successfully');\n * } catch (error) {\n * console.error('Failed to load Clerk:', error.message);\n * }\n * ```\n */\nexport const loadClerkJSScript = async (opts?: LoadClerkJSScriptOptions): Promise<HTMLScriptElement | null> => {\n const timeout = opts?.scriptLoadTimeout ?? 15000;\n const rejectWith = (error?: Error) =>\n new ClerkRuntimeError('Failed to load Clerk JS' + (error?.message ? `, ${error.message}` : ''), {\n code: 'failed_to_load_clerk_js',\n cause: error,\n });\n\n if (isClerkProperlyLoaded()) {\n return null;\n }\n\n if (!opts?.publishableKey) {\n errorThrower.throwMissingPublishableKeyError();\n return null;\n }\n\n const scriptUrl = clerkJSScriptUrl(opts);\n const existingScript = document.querySelector<HTMLScriptElement>('script[data-clerk-js-script]');\n\n if (existingScript) {\n if (hasScriptRequestError(scriptUrl)) {\n existingScript.remove();\n } else {\n try {\n await waitForPredicateWithTimeout(timeout, isClerkProperlyLoaded, rejectWith(), existingScript);\n return null;\n } catch {\n existingScript.remove();\n }\n }\n }\n\n const loadPromise = waitForPredicateWithTimeout(timeout, isClerkProperlyLoaded, rejectWith());\n\n loadScript(scriptUrl, {\n async: true,\n crossOrigin: 'anonymous',\n nonce: opts.nonce,\n beforeLoad: applyAttributesToScript(buildClerkJSScriptAttributes(opts)),\n }).catch(error => {\n throw rejectWith(error);\n });\n\n return loadPromise;\n};\n\nexport const loadClerkUIScript = async (opts?: LoadClerkUIScriptOptions): Promise<HTMLScriptElement | null> => {\n const timeout = opts?.scriptLoadTimeout ?? 15000;\n const rejectWith = (error?: Error) =>\n new ClerkRuntimeError('Failed to load Clerk UI' + (error?.message ? `, ${error.message}` : ''), {\n code: 'failed_to_load_clerk_ui',\n cause: error,\n });\n\n if (isClerkUIProperlyLoaded()) {\n return null;\n }\n\n if (!opts?.publishableKey) {\n errorThrower.throwMissingPublishableKeyError();\n return null;\n }\n\n const scriptUrl = clerkUIScriptUrl(opts);\n const existingScript = document.querySelector<HTMLScriptElement>('script[data-clerk-ui-script]');\n\n if (existingScript) {\n if (hasScriptRequestError(scriptUrl)) {\n existingScript.remove();\n } else {\n try {\n await waitForPredicateWithTimeout(timeout, isClerkUIProperlyLoaded, rejectWith(), existingScript);\n return null;\n } catch {\n existingScript.remove();\n }\n }\n }\n\n const loadPromise = waitForPredicateWithTimeout(timeout, isClerkUIProperlyLoaded, rejectWith());\n\n loadScript(scriptUrl, {\n async: true,\n crossOrigin: 'anonymous',\n nonce: opts.nonce,\n beforeLoad: applyAttributesToScript(buildClerkUIScriptAttributes(opts)),\n }).catch(error => {\n throw rejectWith(error);\n });\n\n return loadPromise;\n};\n\nexport const clerkJSScriptUrl = (opts: LoadClerkJSScriptOptions) => {\n const { __internal_clerkJSUrl, __internal_clerkJSVersion, proxyUrl, domain, publishableKey } = opts;\n\n if (__internal_clerkJSUrl) {\n return __internal_clerkJSUrl;\n }\n\n const scriptHost = buildScriptHost({ publishableKey, proxyUrl, domain });\n const version = versionSelector(__internal_clerkJSVersion);\n return `https://${scriptHost}/npm/@clerk/clerk-js@${version}/dist/clerk.browser.js`;\n};\n\nexport const clerkUIScriptUrl = (opts: LoadClerkUIScriptOptions) => {\n const { __internal_clerkUIUrl, __internal_clerkUIVersion, proxyUrl, domain, publishableKey } = opts;\n\n if (__internal_clerkUIUrl) {\n return __internal_clerkUIUrl;\n }\n\n const scriptHost = buildScriptHost({ publishableKey, proxyUrl, domain });\n const version = versionSelector(__internal_clerkUIVersion, UI_PACKAGE_VERSION);\n return `https://${scriptHost}/npm/@clerk/ui@${version}/dist/ui.browser.js`;\n};\n\nexport const buildClerkJSScriptAttributes = (options: LoadClerkJSScriptOptions) => {\n const obj: Record<string, string> = {};\n\n if (options.publishableKey) {\n obj['data-clerk-publishable-key'] = options.publishableKey;\n }\n\n if (options.proxyUrl) {\n obj['data-clerk-proxy-url'] = options.proxyUrl;\n }\n\n if (options.domain) {\n obj['data-clerk-domain'] = options.domain;\n }\n\n if (options.nonce) {\n obj.nonce = options.nonce;\n }\n\n return obj;\n};\n\nexport const buildClerkUIScriptAttributes = (options: LoadClerkUIScriptOptions) => {\n // TODO @nikos do we need this?\n return buildClerkJSScriptAttributes(options);\n};\n\nconst applyAttributesToScript = (attributes: Record<string, string>) => (script: HTMLScriptElement) => {\n for (const attribute in attributes) {\n script.setAttribute(attribute, attributes[attribute]);\n }\n};\n\nexport const buildScriptHost = (opts: { publishableKey: string; proxyUrl?: string; domain?: string }) => {\n const { proxyUrl, domain, publishableKey } = opts;\n\n if (!!proxyUrl && isValidProxyUrl(proxyUrl)) {\n return proxyUrlToAbsoluteURL(proxyUrl).replace(/http(s)?:\\/\\//, '');\n } else if (domain && !isDevOrStagingUrl(parsePublishableKey(publishableKey)?.frontendApi || '')) {\n return addClerkPrefix(domain);\n } else {\n return parsePublishableKey(publishableKey)?.frontendApi || '';\n }\n};\n\nfunction waitForPredicateWithTimeout(\n timeoutMs: number,\n predicate: () => boolean,\n rejectWith: Error,\n existingScript?: HTMLScriptElement,\n): Promise<HTMLScriptElement | null> {\n return new Promise((resolve, reject) => {\n let resolved = false;\n\n const cleanup = (timeoutId: ReturnType<typeof setTimeout>, pollInterval: ReturnType<typeof setInterval>) => {\n clearTimeout(timeoutId);\n clearInterval(pollInterval);\n };\n\n // Bail out early if the script fails to load, instead of waiting for the entire timeout\n existingScript?.addEventListener('error', () => {\n cleanup(timeoutId, pollInterval);\n reject(rejectWith);\n });\n\n const checkAndResolve = () => {\n if (resolved) {\n return;\n }\n\n if (predicate()) {\n resolved = true;\n cleanup(timeoutId, pollInterval);\n resolve(null);\n }\n };\n\n const handleTimeout = () => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n cleanup(timeoutId, pollInterval);\n\n if (!predicate()) {\n reject(rejectWith);\n } else {\n resolve(null);\n }\n };\n\n const timeoutId = setTimeout(handleTimeout, timeoutMs);\n\n checkAndResolve();\n\n const pollInterval = setInterval(() => {\n if (resolved) {\n clearInterval(pollInterval);\n return;\n }\n checkAndResolve();\n }, 100);\n });\n}\n\nexport function setClerkJSLoadingErrorPackageName(packageName: string) {\n errorThrower.setPackageName({ packageName });\n}\n\n/**\n * @deprecated Use `loadClerkJSScript` instead. This alias will be removed in a future major version.\n */\nexport const loadClerkJsScript = loadClerkJSScript;\n\n/**\n * @deprecated Use `clerkJSScriptUrl` instead. This alias will be removed in a future major version.\n */\nexport const clerkJsScriptUrl = clerkJSScriptUrl;\n\n/**\n * @deprecated Use `buildClerkJSScriptAttributes` instead. This alias will be removed in a future major version.\n */\nexport const buildClerkJsScriptAttributes = buildClerkJSScriptAttributes;\n\n/**\n * @deprecated Use `setClerkJSLoadingErrorPackageName` instead. This alias will be removed in a future major version.\n */\nexport const setClerkJsLoadingErrorPackageName = setClerkJSLoadingErrorPackageName;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { a as isDevelopmentFromPublishableKey } from "./keys-DuxzP8MU.mjs";
1
+ import { a as isDevelopmentFromPublishableKey } from "./keys-BeVKH43u.mjs";
2
2
 
3
3
  //#region src/netlifyCacheHandler.ts
4
4
  /**
@@ -45,4 +45,4 @@ function handleNetlifyCacheInDevInstance({ locationHeader, requestStateHeaders,
45
45
 
46
46
  //#endregion
47
47
  export { handleNetlifyCacheInDevInstance as n, CLERK_NETLIFY_CACHE_BUST_PARAM as t };
48
- //# sourceMappingURL=netlifyCacheHandler-Dkdkho_6.mjs.map
48
+ //# sourceMappingURL=netlifyCacheHandler-Cpx2hZ9E.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"netlifyCacheHandler-Dkdkho_6.mjs","names":[],"sources":["../../src/netlifyCacheHandler.ts"],"sourcesContent":["/* eslint-disable turbo/no-undeclared-env-vars */\nimport { isDevelopmentFromPublishableKey } from './keys';\n\n/**\n * Cache busting parameter for Netlify to prevent cached responses\n * during handshake flows with Clerk development instances.\n *\n * Note: This query parameter will be removed in the \"@clerk/clerk-js\" package.\n *\n * @internal\n */\nexport const CLERK_NETLIFY_CACHE_BUST_PARAM = '__clerk_netlify_cache_bust';\n\n/**\n * Returns true if running in a Netlify environment.\n * Checks for Netlify-specific environment variables in process.env.\n * Safe for browser and non-Node environments.\n */\nfunction isNetlifyRuntime(): boolean {\n if (typeof process === 'undefined' || !process.env) {\n return false;\n }\n\n return (\n Boolean(process.env.NETLIFY) ||\n Boolean(process.env.NETLIFY_FUNCTIONS_TOKEN) ||\n (typeof process.env.URL === 'string' && process.env.URL.endsWith('netlify.app'))\n );\n}\n\n/**\n * Prevents infinite redirects in Netlify's functions by adding a cache bust parameter\n * to the original redirect URL. This ensures that Netlify doesn't serve a cached response\n * during the handshake flow.\n *\n * The issue happens only on Clerk development instances running on Netlify. This is\n * a workaround until we find a better solution.\n *\n * See https://answers.netlify.com/t/cache-handling-recommendation-for-authentication-handshake-redirects/143969/1.\n *\n * @internal\n */\nexport function handleNetlifyCacheInDevInstance({\n locationHeader,\n requestStateHeaders,\n publishableKey,\n}: {\n locationHeader: string;\n requestStateHeaders: Headers;\n publishableKey: string;\n}) {\n const isOnNetlify = isNetlifyRuntime();\n const isDevelopmentInstance = isDevelopmentFromPublishableKey(publishableKey);\n\n if (isOnNetlify && isDevelopmentInstance) {\n const hasHandshakeQueryParam = locationHeader.includes('__clerk_handshake');\n // If location header is the original URL before the handshake flow, add cache bust param\n // The param should be removed in clerk-js\n if (!hasHandshakeQueryParam) {\n const url = new URL(locationHeader);\n url.searchParams.append(CLERK_NETLIFY_CACHE_BUST_PARAM, Date.now().toString());\n requestStateHeaders.set('Location', url.toString());\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,iCAAiC;;;;;;AAO9C,SAAS,mBAA4B;AACnC,KAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,IAC7C,QAAO;AAGT,QACE,QAAQ,QAAQ,IAAI,QAAQ,IAC5B,QAAQ,QAAQ,IAAI,wBAAwB,IAC3C,OAAO,QAAQ,IAAI,QAAQ,YAAY,QAAQ,IAAI,IAAI,SAAS,cAAc;;;;;;;;;;;;;;AAgBnF,SAAgB,gCAAgC,EAC9C,gBACA,qBACA,kBAKC;CACD,MAAM,cAAc,kBAAkB;CACtC,MAAM,wBAAwB,gCAAgC,eAAe;AAE7E,KAAI,eAAe,uBAIjB;MAAI,CAH2B,eAAe,SAAS,oBAAoB,EAG9C;GAC3B,MAAM,MAAM,IAAI,IAAI,eAAe;AACnC,OAAI,aAAa,OAAO,gCAAgC,KAAK,KAAK,CAAC,UAAU,CAAC;AAC9E,uBAAoB,IAAI,YAAY,IAAI,UAAU,CAAC"}
1
+ {"version":3,"file":"netlifyCacheHandler-Cpx2hZ9E.mjs","names":[],"sources":["../../src/netlifyCacheHandler.ts"],"sourcesContent":["/* eslint-disable turbo/no-undeclared-env-vars */\nimport { isDevelopmentFromPublishableKey } from './keys';\n\n/**\n * Cache busting parameter for Netlify to prevent cached responses\n * during handshake flows with Clerk development instances.\n *\n * Note: This query parameter will be removed in the \"@clerk/clerk-js\" package.\n *\n * @internal\n */\nexport const CLERK_NETLIFY_CACHE_BUST_PARAM = '__clerk_netlify_cache_bust';\n\n/**\n * Returns true if running in a Netlify environment.\n * Checks for Netlify-specific environment variables in process.env.\n * Safe for browser and non-Node environments.\n */\nfunction isNetlifyRuntime(): boolean {\n if (typeof process === 'undefined' || !process.env) {\n return false;\n }\n\n return (\n Boolean(process.env.NETLIFY) ||\n Boolean(process.env.NETLIFY_FUNCTIONS_TOKEN) ||\n (typeof process.env.URL === 'string' && process.env.URL.endsWith('netlify.app'))\n );\n}\n\n/**\n * Prevents infinite redirects in Netlify's functions by adding a cache bust parameter\n * to the original redirect URL. This ensures that Netlify doesn't serve a cached response\n * during the handshake flow.\n *\n * The issue happens only on Clerk development instances running on Netlify. This is\n * a workaround until we find a better solution.\n *\n * See https://answers.netlify.com/t/cache-handling-recommendation-for-authentication-handshake-redirects/143969/1.\n *\n * @internal\n */\nexport function handleNetlifyCacheInDevInstance({\n locationHeader,\n requestStateHeaders,\n publishableKey,\n}: {\n locationHeader: string;\n requestStateHeaders: Headers;\n publishableKey: string;\n}) {\n const isOnNetlify = isNetlifyRuntime();\n const isDevelopmentInstance = isDevelopmentFromPublishableKey(publishableKey);\n\n if (isOnNetlify && isDevelopmentInstance) {\n const hasHandshakeQueryParam = locationHeader.includes('__clerk_handshake');\n // If location header is the original URL before the handshake flow, add cache bust param\n // The param should be removed in clerk-js\n if (!hasHandshakeQueryParam) {\n const url = new URL(locationHeader);\n url.searchParams.append(CLERK_NETLIFY_CACHE_BUST_PARAM, Date.now().toString());\n requestStateHeaders.set('Location', url.toString());\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,iCAAiC;;;;;;AAO9C,SAAS,mBAA4B;AACnC,KAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,IAC7C,QAAO;AAGT,QACE,QAAQ,QAAQ,IAAI,QAAQ,IAC5B,QAAQ,QAAQ,IAAI,wBAAwB,IAC3C,OAAO,QAAQ,IAAI,QAAQ,YAAY,QAAQ,IAAI,IAAI,SAAS,cAAc;;;;;;;;;;;;;;AAgBnF,SAAgB,gCAAgC,EAC9C,gBACA,qBACA,kBAKC;CACD,MAAM,cAAc,kBAAkB;CACtC,MAAM,wBAAwB,gCAAgC,eAAe;AAE7E,KAAI,eAAe,uBAIjB;MAAI,CAH2B,eAAe,SAAS,oBAAoB,EAG9C;GAC3B,MAAM,MAAM,IAAI,IAAI,eAAe;AACnC,OAAI,aAAa,OAAO,gCAAgC,KAAK,KAAK,CAAC,UAAU,CAAC;AAC9E,uBAAoB,IAAI,YAAY,IAAI,UAAU,CAAC"}
@@ -1,4 +1,4 @@
1
- const require_keys = require('./keys-BI9hmfja.js');
1
+ const require_keys = require('./keys-D5ahg2Gn.js');
2
2
 
3
3
  //#region src/netlifyCacheHandler.ts
4
4
  /**
@@ -56,4 +56,4 @@ Object.defineProperty(exports, 'handleNetlifyCacheInDevInstance', {
56
56
  return handleNetlifyCacheInDevInstance;
57
57
  }
58
58
  });
59
- //# sourceMappingURL=netlifyCacheHandler-DFm5qdPh.js.map
59
+ //# sourceMappingURL=netlifyCacheHandler-DMlEakyq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"netlifyCacheHandler-DFm5qdPh.js","names":["isDevelopmentFromPublishableKey"],"sources":["../../src/netlifyCacheHandler.ts"],"sourcesContent":["/* eslint-disable turbo/no-undeclared-env-vars */\nimport { isDevelopmentFromPublishableKey } from './keys';\n\n/**\n * Cache busting parameter for Netlify to prevent cached responses\n * during handshake flows with Clerk development instances.\n *\n * Note: This query parameter will be removed in the \"@clerk/clerk-js\" package.\n *\n * @internal\n */\nexport const CLERK_NETLIFY_CACHE_BUST_PARAM = '__clerk_netlify_cache_bust';\n\n/**\n * Returns true if running in a Netlify environment.\n * Checks for Netlify-specific environment variables in process.env.\n * Safe for browser and non-Node environments.\n */\nfunction isNetlifyRuntime(): boolean {\n if (typeof process === 'undefined' || !process.env) {\n return false;\n }\n\n return (\n Boolean(process.env.NETLIFY) ||\n Boolean(process.env.NETLIFY_FUNCTIONS_TOKEN) ||\n (typeof process.env.URL === 'string' && process.env.URL.endsWith('netlify.app'))\n );\n}\n\n/**\n * Prevents infinite redirects in Netlify's functions by adding a cache bust parameter\n * to the original redirect URL. This ensures that Netlify doesn't serve a cached response\n * during the handshake flow.\n *\n * The issue happens only on Clerk development instances running on Netlify. This is\n * a workaround until we find a better solution.\n *\n * See https://answers.netlify.com/t/cache-handling-recommendation-for-authentication-handshake-redirects/143969/1.\n *\n * @internal\n */\nexport function handleNetlifyCacheInDevInstance({\n locationHeader,\n requestStateHeaders,\n publishableKey,\n}: {\n locationHeader: string;\n requestStateHeaders: Headers;\n publishableKey: string;\n}) {\n const isOnNetlify = isNetlifyRuntime();\n const isDevelopmentInstance = isDevelopmentFromPublishableKey(publishableKey);\n\n if (isOnNetlify && isDevelopmentInstance) {\n const hasHandshakeQueryParam = locationHeader.includes('__clerk_handshake');\n // If location header is the original URL before the handshake flow, add cache bust param\n // The param should be removed in clerk-js\n if (!hasHandshakeQueryParam) {\n const url = new URL(locationHeader);\n url.searchParams.append(CLERK_NETLIFY_CACHE_BUST_PARAM, Date.now().toString());\n requestStateHeaders.set('Location', url.toString());\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,iCAAiC;;;;;;AAO9C,SAAS,mBAA4B;AACnC,KAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,IAC7C,QAAO;AAGT,QACE,QAAQ,QAAQ,IAAI,QAAQ,IAC5B,QAAQ,QAAQ,IAAI,wBAAwB,IAC3C,OAAO,QAAQ,IAAI,QAAQ,YAAY,QAAQ,IAAI,IAAI,SAAS,cAAc;;;;;;;;;;;;;;AAgBnF,SAAgB,gCAAgC,EAC9C,gBACA,qBACA,kBAKC;CACD,MAAM,cAAc,kBAAkB;CACtC,MAAM,wBAAwBA,6CAAgC,eAAe;AAE7E,KAAI,eAAe,uBAIjB;MAAI,CAH2B,eAAe,SAAS,oBAAoB,EAG9C;GAC3B,MAAM,MAAM,IAAI,IAAI,eAAe;AACnC,OAAI,aAAa,OAAO,gCAAgC,KAAK,KAAK,CAAC,UAAU,CAAC;AAC9E,uBAAoB,IAAI,YAAY,IAAI,UAAU,CAAC"}
1
+ {"version":3,"file":"netlifyCacheHandler-DMlEakyq.js","names":["isDevelopmentFromPublishableKey"],"sources":["../../src/netlifyCacheHandler.ts"],"sourcesContent":["/* eslint-disable turbo/no-undeclared-env-vars */\nimport { isDevelopmentFromPublishableKey } from './keys';\n\n/**\n * Cache busting parameter for Netlify to prevent cached responses\n * during handshake flows with Clerk development instances.\n *\n * Note: This query parameter will be removed in the \"@clerk/clerk-js\" package.\n *\n * @internal\n */\nexport const CLERK_NETLIFY_CACHE_BUST_PARAM = '__clerk_netlify_cache_bust';\n\n/**\n * Returns true if running in a Netlify environment.\n * Checks for Netlify-specific environment variables in process.env.\n * Safe for browser and non-Node environments.\n */\nfunction isNetlifyRuntime(): boolean {\n if (typeof process === 'undefined' || !process.env) {\n return false;\n }\n\n return (\n Boolean(process.env.NETLIFY) ||\n Boolean(process.env.NETLIFY_FUNCTIONS_TOKEN) ||\n (typeof process.env.URL === 'string' && process.env.URL.endsWith('netlify.app'))\n );\n}\n\n/**\n * Prevents infinite redirects in Netlify's functions by adding a cache bust parameter\n * to the original redirect URL. This ensures that Netlify doesn't serve a cached response\n * during the handshake flow.\n *\n * The issue happens only on Clerk development instances running on Netlify. This is\n * a workaround until we find a better solution.\n *\n * See https://answers.netlify.com/t/cache-handling-recommendation-for-authentication-handshake-redirects/143969/1.\n *\n * @internal\n */\nexport function handleNetlifyCacheInDevInstance({\n locationHeader,\n requestStateHeaders,\n publishableKey,\n}: {\n locationHeader: string;\n requestStateHeaders: Headers;\n publishableKey: string;\n}) {\n const isOnNetlify = isNetlifyRuntime();\n const isDevelopmentInstance = isDevelopmentFromPublishableKey(publishableKey);\n\n if (isOnNetlify && isDevelopmentInstance) {\n const hasHandshakeQueryParam = locationHeader.includes('__clerk_handshake');\n // If location header is the original URL before the handshake flow, add cache bust param\n // The param should be removed in clerk-js\n if (!hasHandshakeQueryParam) {\n const url = new URL(locationHeader);\n url.searchParams.append(CLERK_NETLIFY_CACHE_BUST_PARAM, Date.now().toString());\n requestStateHeaders.set('Location', url.toString());\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,iCAAiC;;;;;;AAO9C,SAAS,mBAA4B;AACnC,KAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,IAC7C,QAAO;AAGT,QACE,QAAQ,QAAQ,IAAI,QAAQ,IAC5B,QAAQ,QAAQ,IAAI,wBAAwB,IAC3C,OAAO,QAAQ,IAAI,QAAQ,YAAY,QAAQ,IAAI,IAAI,SAAS,cAAc;;;;;;;;;;;;;;AAgBnF,SAAgB,gCAAgC,EAC9C,gBACA,qBACA,kBAKC;CACD,MAAM,cAAc,kBAAkB;CACtC,MAAM,wBAAwBA,6CAAgC,eAAe;AAE7E,KAAI,eAAe,uBAIjB;MAAI,CAH2B,eAAe,SAAS,oBAAoB,EAG9C;GAC3B,MAAM,MAAM,IAAI,IAAI,eAAe;AACnC,OAAI,aAAa,OAAO,gCAAgC,KAAK,KAAK,CAAC,UAAU,CAAC;AAC9E,uBAAoB,IAAI,YAAY,IAAI,UAAU,CAAC"}
@@ -1,8 +1,8 @@
1
1
  require('./constants-WYhx_umW.js');
2
2
  require('./isomorphicAtob-Hkpnx2p8.js');
3
3
  require('./isomorphicBtoa-_pSA92Q9.js');
4
- require('./keys-BI9hmfja.js');
5
- const require_netlifyCacheHandler = require('./netlifyCacheHandler-DFm5qdPh.js');
4
+ require('./keys-D5ahg2Gn.js');
5
+ const require_netlifyCacheHandler = require('./netlifyCacheHandler-DMlEakyq.js');
6
6
 
7
7
  exports.CLERK_NETLIFY_CACHE_BUST_PARAM = require_netlifyCacheHandler.CLERK_NETLIFY_CACHE_BUST_PARAM;
8
8
  exports.handleNetlifyCacheInDevInstance = require_netlifyCacheHandler.handleNetlifyCacheInDevInstance;
@@ -1,7 +1,7 @@
1
1
  import "./constants-Bta24VLk.mjs";
2
2
  import "./isomorphicAtob-CoF80qYz.mjs";
3
3
  import "./isomorphicBtoa-DWmLcIHi.mjs";
4
- import "./keys-DuxzP8MU.mjs";
5
- import { n as handleNetlifyCacheInDevInstance, t as CLERK_NETLIFY_CACHE_BUST_PARAM } from "./netlifyCacheHandler-Dkdkho_6.mjs";
4
+ import "./keys-BeVKH43u.mjs";
5
+ import { n as handleNetlifyCacheInDevInstance, t as CLERK_NETLIFY_CACHE_BUST_PARAM } from "./netlifyCacheHandler-Cpx2hZ9E.mjs";
6
6
 
7
7
  export { CLERK_NETLIFY_CACHE_BUST_PARAM, handleNetlifyCacheInDevInstance };
@@ -1,4 +1,4 @@
1
- import { t as CLERK_NETLIFY_CACHE_BUST_PARAM } from "./netlifyCacheHandler-Dkdkho_6.mjs";
1
+ import { t as CLERK_NETLIFY_CACHE_BUST_PARAM } from "./netlifyCacheHandler-Cpx2hZ9E.mjs";
2
2
  import { a as CLERK_SUFFIXED_COOKIES, i as CLERK_SATELLITE_URL, o as CLERK_SYNCED } from "./constants-BulbbNR9.mjs";
3
3
 
4
4
  //#region src/internal/clerk-js/queryParams.ts
@@ -52,4 +52,4 @@ function forwardClerkQueryParams(params) {
52
52
 
53
53
  //#endregion
54
54
  export { getClerkQueryParam as n, removeClerkQueryParam as r, forwardClerkQueryParams as t };
55
- //# sourceMappingURL=queryParams-Dlt0oVDg.mjs.map
55
+ //# sourceMappingURL=queryParams-Bad5kF87.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryParams-Dlt0oVDg.mjs","names":[],"sources":["../../src/internal/clerk-js/queryParams.ts"],"sourcesContent":["import type { EmailLinkErrorCodeStatus } from '../../error';\nimport { CLERK_NETLIFY_CACHE_BUST_PARAM } from '../../netlifyCacheHandler';\nimport { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from './constants';\n\nconst _ClerkQueryParams = [\n '__clerk_status',\n '__clerk_created_session',\n '__clerk_invitation_token',\n '__clerk_ticket',\n '__clerk_modal_state',\n '__clerk_handshake',\n '__clerk_handshake_nonce',\n '__clerk_help',\n CLERK_NETLIFY_CACHE_BUST_PARAM,\n CLERK_SYNCED,\n CLERK_SATELLITE_URL,\n CLERK_SUFFIXED_COOKIES,\n] as const;\n\ntype ClerkQueryParam = (typeof _ClerkQueryParams)[number];\n\n/**\n * Used for email link verification\n */\nexport type VerifyTokenStatus = 'verified' | (typeof EmailLinkErrorCodeStatus)[keyof typeof EmailLinkErrorCodeStatus];\n\n/**\n * Used for instance invitations and organization invitations\n */\ntype TicketStatus = 'sign_in' | 'sign_up' | 'complete';\n\ntype ClerkQueryParamsToValuesMap = {\n __clerk_status: TicketStatus | VerifyTokenStatus;\n} & Record<(typeof _ClerkQueryParams)[number], string>;\n\n/**\n *\n */\nexport function getClerkQueryParam<T extends ClerkQueryParam>(param: T): ClerkQueryParamsToValuesMap[T] | null {\n const val = new URL(window.location.href).searchParams.get(param);\n return val ? (val as ClerkQueryParamsToValuesMap[T]) : null;\n}\n\n/**\n *\n */\nexport function removeClerkQueryParam<T extends ClerkQueryParam>(param: T) {\n const url = new URL(window.location.href);\n if (url.searchParams.has(param)) {\n url.searchParams.delete(param);\n window.history.replaceState(window.history.state, '', url);\n }\n return;\n}\n\n/**\n * Extracts and forwards Clerk query parameters from the current URL to a new URLSearchParams object.\n * This is useful when navigating between pages while preserving Clerk-specific query parameters.\n *\n * @param params - Optional URLSearchParams object to add the parameters to. If not provided, a new one will be created.\n * @returns A URLSearchParams object containing the forwarded Clerk parameters\n */\nexport function forwardClerkQueryParams(params?: URLSearchParams): URLSearchParams {\n const currentSearchParams = new URLSearchParams(window.location.search);\n const newParams = params || new URLSearchParams();\n\n for (const param of _ClerkQueryParams) {\n const value = currentSearchParams.get(param);\n if (value) {\n newParams.set(param, value);\n }\n }\n\n return newParams;\n}\n"],"mappings":";;;;AAIA,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;AAqBD,SAAgB,mBAA8C,OAAiD;CAC7G,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC,aAAa,IAAI,MAAM;AACjE,QAAO,MAAO,MAAyC;;;;;AAMzD,SAAgB,sBAAiD,OAAU;CACzE,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK;AACzC,KAAI,IAAI,aAAa,IAAI,MAAM,EAAE;AAC/B,MAAI,aAAa,OAAO,MAAM;AAC9B,SAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,IAAI;;;;;;;;;;AAY9D,SAAgB,wBAAwB,QAA2C;CACjF,MAAM,sBAAsB,IAAI,gBAAgB,OAAO,SAAS,OAAO;CACvE,MAAM,YAAY,UAAU,IAAI,iBAAiB;AAEjD,MAAK,MAAM,SAAS,mBAAmB;EACrC,MAAM,QAAQ,oBAAoB,IAAI,MAAM;AAC5C,MAAI,MACF,WAAU,IAAI,OAAO,MAAM;;AAI/B,QAAO"}
1
+ {"version":3,"file":"queryParams-Bad5kF87.mjs","names":[],"sources":["../../src/internal/clerk-js/queryParams.ts"],"sourcesContent":["import type { EmailLinkErrorCodeStatus } from '../../error';\nimport { CLERK_NETLIFY_CACHE_BUST_PARAM } from '../../netlifyCacheHandler';\nimport { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from './constants';\n\nconst _ClerkQueryParams = [\n '__clerk_status',\n '__clerk_created_session',\n '__clerk_invitation_token',\n '__clerk_ticket',\n '__clerk_modal_state',\n '__clerk_handshake',\n '__clerk_handshake_nonce',\n '__clerk_help',\n CLERK_NETLIFY_CACHE_BUST_PARAM,\n CLERK_SYNCED,\n CLERK_SATELLITE_URL,\n CLERK_SUFFIXED_COOKIES,\n] as const;\n\ntype ClerkQueryParam = (typeof _ClerkQueryParams)[number];\n\n/**\n * Used for email link verification\n */\nexport type VerifyTokenStatus = 'verified' | (typeof EmailLinkErrorCodeStatus)[keyof typeof EmailLinkErrorCodeStatus];\n\n/**\n * Used for instance invitations and organization invitations\n */\ntype TicketStatus = 'sign_in' | 'sign_up' | 'complete';\n\ntype ClerkQueryParamsToValuesMap = {\n __clerk_status: TicketStatus | VerifyTokenStatus;\n} & Record<(typeof _ClerkQueryParams)[number], string>;\n\n/**\n *\n */\nexport function getClerkQueryParam<T extends ClerkQueryParam>(param: T): ClerkQueryParamsToValuesMap[T] | null {\n const val = new URL(window.location.href).searchParams.get(param);\n return val ? (val as ClerkQueryParamsToValuesMap[T]) : null;\n}\n\n/**\n *\n */\nexport function removeClerkQueryParam<T extends ClerkQueryParam>(param: T) {\n const url = new URL(window.location.href);\n if (url.searchParams.has(param)) {\n url.searchParams.delete(param);\n window.history.replaceState(window.history.state, '', url);\n }\n return;\n}\n\n/**\n * Extracts and forwards Clerk query parameters from the current URL to a new URLSearchParams object.\n * This is useful when navigating between pages while preserving Clerk-specific query parameters.\n *\n * @param params - Optional URLSearchParams object to add the parameters to. If not provided, a new one will be created.\n * @returns A URLSearchParams object containing the forwarded Clerk parameters\n */\nexport function forwardClerkQueryParams(params?: URLSearchParams): URLSearchParams {\n const currentSearchParams = new URLSearchParams(window.location.search);\n const newParams = params || new URLSearchParams();\n\n for (const param of _ClerkQueryParams) {\n const value = currentSearchParams.get(param);\n if (value) {\n newParams.set(param, value);\n }\n }\n\n return newParams;\n}\n"],"mappings":";;;;AAIA,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;AAqBD,SAAgB,mBAA8C,OAAiD;CAC7G,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC,aAAa,IAAI,MAAM;AACjE,QAAO,MAAO,MAAyC;;;;;AAMzD,SAAgB,sBAAiD,OAAU;CACzE,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK;AACzC,KAAI,IAAI,aAAa,IAAI,MAAM,EAAE;AAC/B,MAAI,aAAa,OAAO,MAAM;AAC9B,SAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,IAAI;;;;;;;;;;AAY9D,SAAgB,wBAAwB,QAA2C;CACjF,MAAM,sBAAsB,IAAI,gBAAgB,OAAO,SAAS,OAAO;CACvE,MAAM,YAAY,UAAU,IAAI,iBAAiB;AAEjD,MAAK,MAAM,SAAS,mBAAmB;EACrC,MAAM,QAAQ,oBAAoB,IAAI,MAAM;AAC5C,MAAI,MACF,WAAU,IAAI,OAAO,MAAM;;AAI/B,QAAO"}
@@ -1,4 +1,4 @@
1
- const require_netlifyCacheHandler = require('./netlifyCacheHandler-DFm5qdPh.js');
1
+ const require_netlifyCacheHandler = require('./netlifyCacheHandler-DMlEakyq.js');
2
2
  const require_constants = require('./constants-BUzkV8jh.js');
3
3
 
4
4
  //#region src/internal/clerk-js/queryParams.ts
@@ -69,4 +69,4 @@ Object.defineProperty(exports, 'removeClerkQueryParam', {
69
69
  return removeClerkQueryParam;
70
70
  }
71
71
  });
72
- //# sourceMappingURL=queryParams-DSUymAGT.js.map
72
+ //# sourceMappingURL=queryParams-DFhrd86C.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryParams-DSUymAGT.js","names":["CLERK_NETLIFY_CACHE_BUST_PARAM","CLERK_SYNCED","CLERK_SATELLITE_URL","CLERK_SUFFIXED_COOKIES"],"sources":["../../src/internal/clerk-js/queryParams.ts"],"sourcesContent":["import type { EmailLinkErrorCodeStatus } from '../../error';\nimport { CLERK_NETLIFY_CACHE_BUST_PARAM } from '../../netlifyCacheHandler';\nimport { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from './constants';\n\nconst _ClerkQueryParams = [\n '__clerk_status',\n '__clerk_created_session',\n '__clerk_invitation_token',\n '__clerk_ticket',\n '__clerk_modal_state',\n '__clerk_handshake',\n '__clerk_handshake_nonce',\n '__clerk_help',\n CLERK_NETLIFY_CACHE_BUST_PARAM,\n CLERK_SYNCED,\n CLERK_SATELLITE_URL,\n CLERK_SUFFIXED_COOKIES,\n] as const;\n\ntype ClerkQueryParam = (typeof _ClerkQueryParams)[number];\n\n/**\n * Used for email link verification\n */\nexport type VerifyTokenStatus = 'verified' | (typeof EmailLinkErrorCodeStatus)[keyof typeof EmailLinkErrorCodeStatus];\n\n/**\n * Used for instance invitations and organization invitations\n */\ntype TicketStatus = 'sign_in' | 'sign_up' | 'complete';\n\ntype ClerkQueryParamsToValuesMap = {\n __clerk_status: TicketStatus | VerifyTokenStatus;\n} & Record<(typeof _ClerkQueryParams)[number], string>;\n\n/**\n *\n */\nexport function getClerkQueryParam<T extends ClerkQueryParam>(param: T): ClerkQueryParamsToValuesMap[T] | null {\n const val = new URL(window.location.href).searchParams.get(param);\n return val ? (val as ClerkQueryParamsToValuesMap[T]) : null;\n}\n\n/**\n *\n */\nexport function removeClerkQueryParam<T extends ClerkQueryParam>(param: T) {\n const url = new URL(window.location.href);\n if (url.searchParams.has(param)) {\n url.searchParams.delete(param);\n window.history.replaceState(window.history.state, '', url);\n }\n return;\n}\n\n/**\n * Extracts and forwards Clerk query parameters from the current URL to a new URLSearchParams object.\n * This is useful when navigating between pages while preserving Clerk-specific query parameters.\n *\n * @param params - Optional URLSearchParams object to add the parameters to. If not provided, a new one will be created.\n * @returns A URLSearchParams object containing the forwarded Clerk parameters\n */\nexport function forwardClerkQueryParams(params?: URLSearchParams): URLSearchParams {\n const currentSearchParams = new URLSearchParams(window.location.search);\n const newParams = params || new URLSearchParams();\n\n for (const param of _ClerkQueryParams) {\n const value = currentSearchParams.get(param);\n if (value) {\n newParams.set(param, value);\n }\n }\n\n return newParams;\n}\n"],"mappings":";;;;AAIA,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACAA;CACAC;CACAC;CACAC;CACD;;;;AAqBD,SAAgB,mBAA8C,OAAiD;CAC7G,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC,aAAa,IAAI,MAAM;AACjE,QAAO,MAAO,MAAyC;;;;;AAMzD,SAAgB,sBAAiD,OAAU;CACzE,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK;AACzC,KAAI,IAAI,aAAa,IAAI,MAAM,EAAE;AAC/B,MAAI,aAAa,OAAO,MAAM;AAC9B,SAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,IAAI;;;;;;;;;;AAY9D,SAAgB,wBAAwB,QAA2C;CACjF,MAAM,sBAAsB,IAAI,gBAAgB,OAAO,SAAS,OAAO;CACvE,MAAM,YAAY,UAAU,IAAI,iBAAiB;AAEjD,MAAK,MAAM,SAAS,mBAAmB;EACrC,MAAM,QAAQ,oBAAoB,IAAI,MAAM;AAC5C,MAAI,MACF,WAAU,IAAI,OAAO,MAAM;;AAI/B,QAAO"}
1
+ {"version":3,"file":"queryParams-DFhrd86C.js","names":["CLERK_NETLIFY_CACHE_BUST_PARAM","CLERK_SYNCED","CLERK_SATELLITE_URL","CLERK_SUFFIXED_COOKIES"],"sources":["../../src/internal/clerk-js/queryParams.ts"],"sourcesContent":["import type { EmailLinkErrorCodeStatus } from '../../error';\nimport { CLERK_NETLIFY_CACHE_BUST_PARAM } from '../../netlifyCacheHandler';\nimport { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from './constants';\n\nconst _ClerkQueryParams = [\n '__clerk_status',\n '__clerk_created_session',\n '__clerk_invitation_token',\n '__clerk_ticket',\n '__clerk_modal_state',\n '__clerk_handshake',\n '__clerk_handshake_nonce',\n '__clerk_help',\n CLERK_NETLIFY_CACHE_BUST_PARAM,\n CLERK_SYNCED,\n CLERK_SATELLITE_URL,\n CLERK_SUFFIXED_COOKIES,\n] as const;\n\ntype ClerkQueryParam = (typeof _ClerkQueryParams)[number];\n\n/**\n * Used for email link verification\n */\nexport type VerifyTokenStatus = 'verified' | (typeof EmailLinkErrorCodeStatus)[keyof typeof EmailLinkErrorCodeStatus];\n\n/**\n * Used for instance invitations and organization invitations\n */\ntype TicketStatus = 'sign_in' | 'sign_up' | 'complete';\n\ntype ClerkQueryParamsToValuesMap = {\n __clerk_status: TicketStatus | VerifyTokenStatus;\n} & Record<(typeof _ClerkQueryParams)[number], string>;\n\n/**\n *\n */\nexport function getClerkQueryParam<T extends ClerkQueryParam>(param: T): ClerkQueryParamsToValuesMap[T] | null {\n const val = new URL(window.location.href).searchParams.get(param);\n return val ? (val as ClerkQueryParamsToValuesMap[T]) : null;\n}\n\n/**\n *\n */\nexport function removeClerkQueryParam<T extends ClerkQueryParam>(param: T) {\n const url = new URL(window.location.href);\n if (url.searchParams.has(param)) {\n url.searchParams.delete(param);\n window.history.replaceState(window.history.state, '', url);\n }\n return;\n}\n\n/**\n * Extracts and forwards Clerk query parameters from the current URL to a new URLSearchParams object.\n * This is useful when navigating between pages while preserving Clerk-specific query parameters.\n *\n * @param params - Optional URLSearchParams object to add the parameters to. If not provided, a new one will be created.\n * @returns A URLSearchParams object containing the forwarded Clerk parameters\n */\nexport function forwardClerkQueryParams(params?: URLSearchParams): URLSearchParams {\n const currentSearchParams = new URLSearchParams(window.location.search);\n const newParams = params || new URLSearchParams();\n\n for (const param of _ClerkQueryParams) {\n const value = currentSearchParams.get(param);\n if (value) {\n newParams.set(param, value);\n }\n }\n\n return newParams;\n}\n"],"mappings":";;;;AAIA,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACAA;CACAC;CACAC;CACAC;CACD;;;;AAqBD,SAAgB,mBAA8C,OAAiD;CAC7G,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC,aAAa,IAAI,MAAM;AACjE,QAAO,MAAO,MAAyC;;;;;AAMzD,SAAgB,sBAAiD,OAAU;CACzE,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK;AACzC,KAAI,IAAI,aAAa,IAAI,MAAM,EAAE;AAC/B,MAAI,aAAa,OAAO,MAAM;AAC9B,SAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,IAAI;;;;;;;;;;AAY9D,SAAgB,wBAAwB,QAA2C;CACjF,MAAM,sBAAsB,IAAI,gBAAgB,OAAO,SAAS,OAAO;CACvE,MAAM,YAAY,UAAU,IAAI,iBAAiB;AAEjD,MAAK,MAAM,SAAS,mBAAmB;EACrC,MAAM,QAAQ,oBAAoB,IAAI,MAAM;AAC5C,MAAI,MACF,WAAU,IAAI,OAAO,MAAM;;AAI/B,QAAO"}
@@ -778,7 +778,7 @@ declare function useAttemptToEnableOrganizations(caller: 'useOrganization' | 'us
778
778
  /**
779
779
  * @internal
780
780
  */
781
- declare const useSafeLayoutEffect: typeof React.useEffect;
781
+ declare const useSafeLayoutEffect: typeof React.useLayoutEffect;
782
782
  //#endregion
783
783
  //#region src/react/hooks/useSession.d.ts
784
784
  type UseSession = () => UseSessionReturn;
@@ -778,7 +778,7 @@ declare function useAttemptToEnableOrganizations(caller: 'useOrganization' | 'us
778
778
  /**
779
779
  * @internal
780
780
  */
781
- declare const useSafeLayoutEffect: typeof React.useEffect;
781
+ declare const useSafeLayoutEffect: typeof React.useLayoutEffect;
782
782
  //#endregion
783
783
  //#region src/react/hooks/useSession.d.ts
784
784
  type UseSession = () => UseSessionReturn;
@@ -2,7 +2,7 @@ const require_chunk = require('../chunk-nOFOJqeH.js');
2
2
  require('../constants-WYhx_umW.js');
3
3
  require('../isomorphicAtob-Hkpnx2p8.js');
4
4
  require('../isomorphicBtoa-_pSA92Q9.js');
5
- require('../keys-BI9hmfja.js');
5
+ require('../keys-D5ahg2Gn.js');
6
6
  const require_authorization_errors = require('../authorization-errors-B7aH39AU.js');
7
7
  const require_authorization = require('../authorization-Dj1hHJtO.js');
8
8
  const require_deriveState = require('../deriveState-zgq99aY1.js');
@@ -11,7 +11,7 @@ const require_error = require('../error-BkPoOeMv.js');
11
11
  const require_organization = require('../organization-BzM6mhUv.js');
12
12
  require('../noop-CVg8oVJr.js');
13
13
  require('../underscore-BX6Ucmg5.js');
14
- const require_telemetry = require('../telemetry--P0a0tSk.js');
14
+ const require_telemetry = require('../telemetry-DMGwYVSd.js');
15
15
  const require_createDeferredPromise = require('../createDeferredPromise-Bq0Rf2GM.js');
16
16
  const require_errors = require('../errors-FAXDzRsM.js');
17
17
  let react = require("react");
@@ -280,7 +280,7 @@ function useBaseQuery(options, Observer) {
280
280
  if (!isQueryClientLoaded) return {
281
281
  data: void 0,
282
282
  error: null,
283
- isLoading: false,
283
+ isLoading: options.enabled !== false,
284
284
  isFetching: false,
285
285
  status: "pending"
286
286
  };