@clerk/shared 3.46.0 → 3.47.0

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 (97) hide show
  1. package/dist/runtime/alternativePhoneCode.d.mts +1 -1
  2. package/dist/runtime/alternativePhoneCode.d.ts +1 -1
  3. package/dist/runtime/{apiUrlFromPublishableKey-BK2JHLjb.d.ts → apiUrlFromPublishableKey-DOAlYzda.d.ts} +2 -2
  4. package/dist/runtime/apiUrlFromPublishableKey-DOAlYzda.d.ts.map +1 -0
  5. package/dist/runtime/apiUrlFromPublishableKey.d.ts +1 -1
  6. package/dist/runtime/authorization-errors.d.mts +1 -1
  7. package/dist/runtime/authorization-errors.d.ts +1 -1
  8. package/dist/runtime/authorization.d.mts +1 -1
  9. package/dist/runtime/authorization.d.ts +1 -1
  10. package/dist/runtime/authorization.d.ts.map +1 -1
  11. package/dist/runtime/clerkEventBus.d.mts +1 -1
  12. package/dist/runtime/clerkEventBus.d.ts +1 -1
  13. package/dist/runtime/{color-5EK-w4Pa.d.mts → color-C15hom0R.d.mts} +2 -2
  14. package/dist/runtime/{color-5EK-w4Pa.d.mts.map → color-C15hom0R.d.mts.map} +1 -1
  15. package/dist/runtime/{color-C7B_w9Xs.d.ts → color-DCsQU1oj.d.ts} +2 -2
  16. package/dist/runtime/{color-C7B_w9Xs.d.ts.map → color-DCsQU1oj.d.ts.map} +1 -1
  17. package/dist/runtime/color.d.mts +2 -2
  18. package/dist/runtime/color.d.ts +2 -2
  19. package/dist/runtime/date-DIGfFkoy.d.mts.map +1 -1
  20. package/dist/runtime/{deriveState-l1EE4w-l.d.mts → deriveState-XzgLyM0C.d.mts} +2 -2
  21. package/dist/runtime/{deriveState-l1EE4w-l.d.mts.map → deriveState-XzgLyM0C.d.mts.map} +1 -1
  22. package/dist/runtime/{deriveState-0XMAcFTN.d.ts → deriveState-jC5dgsdd.d.ts} +2 -2
  23. package/dist/runtime/{deriveState-0XMAcFTN.d.ts.map → deriveState-jC5dgsdd.d.ts.map} +1 -1
  24. package/dist/runtime/deriveState.d.mts +2 -2
  25. package/dist/runtime/deriveState.d.ts +2 -2
  26. package/dist/runtime/{error-Dyvw0cBN.d.mts → error-CxSDsUm7.d.mts} +2 -2
  27. package/dist/runtime/{error-Dyvw0cBN.d.mts.map → error-CxSDsUm7.d.mts.map} +1 -1
  28. package/dist/runtime/{error-BF6UbvEX.d.ts → error-D9Hn5Vi4.d.ts} +2 -2
  29. package/dist/runtime/{error-BF6UbvEX.d.ts.map → error-D9Hn5Vi4.d.ts.map} +1 -1
  30. package/dist/runtime/error.d.mts +2 -2
  31. package/dist/runtime/error.d.ts +2 -2
  32. package/dist/runtime/globs.d.mts.map +1 -1
  33. package/dist/runtime/{index-BX6sndeu.d.ts → index-B7NHYKeV.d.ts} +6 -1
  34. package/dist/runtime/index-B7NHYKeV.d.ts.map +1 -0
  35. package/dist/runtime/{index-DRoX574n.d.mts → index-X6_DF-iN.d.mts} +6 -1
  36. package/dist/runtime/index-X6_DF-iN.d.mts.map +1 -0
  37. package/dist/runtime/index.d.mts +7 -7
  38. package/dist/runtime/index.d.ts +8 -8
  39. package/dist/runtime/index.js +2 -2
  40. package/dist/runtime/index.mjs +2 -2
  41. package/dist/runtime/jwtPayloadParser.d.mts +1 -1
  42. package/dist/runtime/jwtPayloadParser.d.ts +1 -1
  43. package/dist/runtime/{keys-YrWvb2ed.d.ts → keys-AEakrudB.d.ts} +2 -2
  44. package/dist/runtime/{keys-YrWvb2ed.d.ts.map → keys-AEakrudB.d.ts.map} +1 -1
  45. package/dist/runtime/{keys-83lzlaAG.d.mts → keys-DMgwDjVR.d.mts} +2 -2
  46. package/dist/runtime/{keys-83lzlaAG.d.mts.map → keys-DMgwDjVR.d.mts.map} +1 -1
  47. package/dist/runtime/keys.d.mts +2 -2
  48. package/dist/runtime/keys.d.ts +2 -2
  49. package/dist/runtime/{loadClerkJsScript-ClRfibaX.js → loadClerkJsScript-B1ZljyES.js} +2 -2
  50. package/dist/runtime/{loadClerkJsScript-ClRfibaX.js.map → loadClerkJsScript-B1ZljyES.js.map} +1 -1
  51. package/dist/runtime/{loadClerkJsScript-DDvGauc8.mjs → loadClerkJsScript-CYK4QCrm.mjs} +2 -2
  52. package/dist/runtime/{loadClerkJsScript-DDvGauc8.mjs.map → loadClerkJsScript-CYK4QCrm.mjs.map} +1 -1
  53. package/dist/runtime/{loadClerkJsScript-B6IzADUE.d.ts → loadClerkJsScript-DG9xy9eD.d.ts} +2 -2
  54. package/dist/runtime/{loadClerkJsScript-B6IzADUE.d.ts.map → loadClerkJsScript-DG9xy9eD.d.ts.map} +1 -1
  55. package/dist/runtime/{loadClerkJsScript-BMs9X5iH.d.mts → loadClerkJsScript-DVi-KSjp.d.mts} +2 -2
  56. package/dist/runtime/{loadClerkJsScript-BMs9X5iH.d.mts.map → loadClerkJsScript-DVi-KSjp.d.mts.map} +1 -1
  57. package/dist/runtime/loadClerkJsScript.d.mts +2 -2
  58. package/dist/runtime/loadClerkJsScript.d.ts +2 -2
  59. package/dist/runtime/loadClerkJsScript.js +2 -2
  60. package/dist/runtime/loadClerkJsScript.mjs +2 -2
  61. package/dist/runtime/oauth.d.mts +1 -1
  62. package/dist/runtime/oauth.d.ts +1 -1
  63. package/dist/runtime/organization.d.mts +1 -1
  64. package/dist/runtime/organization.d.ts +1 -1
  65. package/dist/runtime/{pathMatcher--IdAeviC.d.mts → pathMatcher-CKGBNIPN.d.mts} +2 -2
  66. package/dist/runtime/{pathMatcher--IdAeviC.d.mts.map → pathMatcher-CKGBNIPN.d.mts.map} +1 -1
  67. package/dist/runtime/{pathMatcher-BUvD02EZ.d.ts → pathMatcher-D8inYLXE.d.ts} +2 -2
  68. package/dist/runtime/{pathMatcher-BUvD02EZ.d.ts.map → pathMatcher-D8inYLXE.d.ts.map} +1 -1
  69. package/dist/runtime/pathMatcher.d.mts +2 -2
  70. package/dist/runtime/pathMatcher.d.ts +2 -2
  71. package/dist/runtime/react/index.d.mts +8 -8
  72. package/dist/runtime/react/index.d.ts +9 -9
  73. package/dist/runtime/router.d.mts +1 -1
  74. package/dist/runtime/router.d.ts +1 -1
  75. package/dist/runtime/saml.d.mts +1 -1
  76. package/dist/runtime/saml.d.ts +1 -1
  77. package/dist/runtime/telemetry.d.mts +1 -1
  78. package/dist/runtime/telemetry.d.ts +1 -1
  79. package/dist/runtime/types/index.d.mts +1 -1
  80. package/dist/runtime/types/index.d.ts +1 -1
  81. package/dist/runtime/url-Ms4rigVZ.d.ts.map +1 -1
  82. package/dist/runtime/{versionSelector-BTaEe_fh.mjs → versionSelector-Cq3vk5iP.mjs} +3 -3
  83. package/dist/runtime/{versionSelector-BTaEe_fh.mjs.map → versionSelector-Cq3vk5iP.mjs.map} +1 -1
  84. package/dist/runtime/{versionSelector-CPS7KdGH.js → versionSelector-EbyslmUF.js} +3 -3
  85. package/dist/runtime/{versionSelector-CPS7KdGH.js.map → versionSelector-EbyslmUF.js.map} +1 -1
  86. package/dist/runtime/versionSelector.js +1 -1
  87. package/dist/runtime/versionSelector.mjs +1 -1
  88. package/dist/runtime/web3.d.mts +1 -1
  89. package/dist/runtime/web3.d.ts +1 -1
  90. package/dist/types/index.d.mts +5 -0
  91. package/dist/types/index.d.mts.map +1 -1
  92. package/dist/types/index.d.ts +5 -0
  93. package/dist/types/index.d.ts.map +1 -1
  94. package/package.json +1 -1
  95. package/dist/runtime/apiUrlFromPublishableKey-BK2JHLjb.d.ts.map +0 -1
  96. package/dist/runtime/index-BX6sndeu.d.ts.map +0 -1
  97. package/dist/runtime/index-DRoX574n.d.mts.map +0 -1
@@ -1,4 +1,4 @@
1
- import { JwtPayload, SharedSignedInAuthObjectProperties } from "./index-BX6sndeu.js";
1
+ import { JwtPayload, SharedSignedInAuthObjectProperties } from "./index-B7NHYKeV.js";
2
2
 
3
3
  //#region src/jwtPayloadParser.d.ts
4
4
  declare const parsePermissions: ({
@@ -1,4 +1,4 @@
1
- import { PublishableKey } from "./index-BX6sndeu.js";
1
+ import { PublishableKey } from "./index-B7NHYKeV.js";
2
2
 
3
3
  //#region src/keys.d.ts
4
4
 
@@ -100,4 +100,4 @@ declare function getCookieSuffix(publishableKey: string, subtle?: SubtleCrypto):
100
100
  declare const getSuffixedCookieName: (cookieName: string, cookieSuffix: string) => string;
101
101
  //#endregion
102
102
  export { buildPublishableKey, createDevOrStagingUrlCache, getCookieSuffix, getSuffixedCookieName, isDevelopmentFromPublishableKey, isDevelopmentFromSecretKey, isProductionFromPublishableKey, isProductionFromSecretKey, isPublishableKey, parsePublishableKey };
103
- //# sourceMappingURL=keys-YrWvb2ed.d.ts.map
103
+ //# sourceMappingURL=keys-AEakrudB.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys-YrWvb2ed.d.ts","names":[],"sources":["../../src/keys.ts"],"sourcesContent":[],"mappings":";;;;;;AAG8C;AAkC9C,KA7BK,0BAAA,GA6B8B;EA4BnB;EAIA,KAAA,CAAA,EAAA,OAAA;EA0EA;EA+BA,MAAA,CAAA,EAAA,MAAA;EAiCA;EAWA,QAAA,CAAA,EAAA,MAAA;EAWA;EAWA,WAAA,CAAA,EAAA,OAAA;AAYhB,CAAA;AAmBA;;;;;;iBA1OgB,mBAAA;iBA4BA,mBAAA,mCAEL;;IACR;iBACa,mBAAA,oCAEJ,6BACT;;;;;;;iBAuEa,gBAAA;;;;;;;iBA+BA,0BAAA,CAAA;;;;;;;oCAUsB;;;;;;;;;iBAuBtB,+BAAA;;;;;;;;iBAWA,8BAAA;;;;;;;;iBAWA,0BAAA;;;;;;;;iBAWA,yBAAA;;;;;;;;;iBAYM,eAAA,kCAEZ,eACP;;;;;;;;;cAgBU"}
1
+ {"version":3,"file":"keys-AEakrudB.d.ts","names":[],"sources":["../../src/keys.ts"],"sourcesContent":[],"mappings":";;;;;;AAG8C;AAkC9C,KA7BK,0BAAA,GA6B8B;EA4BnB;EAIA,KAAA,CAAA,EAAA,OAAA;EA0EA;EA+BA,MAAA,CAAA,EAAA,MAAA;EAiCA;EAWA,QAAA,CAAA,EAAA,MAAA;EAWA;EAWA,WAAA,CAAA,EAAA,OAAA;AAYhB,CAAA;AAmBA;;;;;;iBA1OgB,mBAAA;iBA4BA,mBAAA,mCAEL;;IACR;iBACa,mBAAA,oCAEJ,6BACT;;;;;;;iBAuEa,gBAAA;;;;;;;iBA+BA,0BAAA,CAAA;;;;;;;oCAUsB;;;;;;;;;iBAuBtB,+BAAA;;;;;;;;iBAWA,8BAAA;;;;;;;;iBAWA,0BAAA;;;;;;;;iBAWA,yBAAA;;;;;;;;;iBAYM,eAAA,kCAEZ,eACP;;;;;;;;;cAgBU"}
@@ -1,4 +1,4 @@
1
- import { PublishableKey } from "./index-DRoX574n.mjs";
1
+ import { PublishableKey } from "./index-X6_DF-iN.mjs";
2
2
 
3
3
  //#region src/keys.d.ts
4
4
 
@@ -100,4 +100,4 @@ declare function getCookieSuffix(publishableKey: string, subtle?: SubtleCrypto):
100
100
  declare const getSuffixedCookieName: (cookieName: string, cookieSuffix: string) => string;
101
101
  //#endregion
102
102
  export { buildPublishableKey, createDevOrStagingUrlCache, getCookieSuffix, getSuffixedCookieName, isDevelopmentFromPublishableKey, isDevelopmentFromSecretKey, isProductionFromPublishableKey, isProductionFromSecretKey, isPublishableKey, parsePublishableKey };
103
- //# sourceMappingURL=keys-83lzlaAG.d.mts.map
103
+ //# sourceMappingURL=keys-DMgwDjVR.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys-83lzlaAG.d.mts","names":[],"sources":["../../src/keys.ts"],"sourcesContent":[],"mappings":";;;;;;AAG8C;AAkC9C,KA7BK,0BAAA,GA6B8B;EA4BnB;EAIA,KAAA,CAAA,EAAA,OAAA;EA0EA;EA+BA,MAAA,CAAA,EAAA,MAAA;EAiCA;EAWA,QAAA,CAAA,EAAA,MAAA;EAWA;EAWA,WAAA,CAAA,EAAA,OAAA;AAYhB,CAAA;AAmBA;;;;;;iBA1OgB,mBAAA;iBA4BA,mBAAA,mCAEL;;IACR;iBACa,mBAAA,oCAEJ,6BACT;;;;;;;iBAuEa,gBAAA;;;;;;;iBA+BA,0BAAA,CAAA;;;;;;;oCAUsB;;;;;;;;;iBAuBtB,+BAAA;;;;;;;;iBAWA,8BAAA;;;;;;;;iBAWA,0BAAA;;;;;;;;iBAWA,yBAAA;;;;;;;;;iBAYM,eAAA,kCAEZ,eACP;;;;;;;;;cAgBU"}
1
+ {"version":3,"file":"keys-DMgwDjVR.d.mts","names":[],"sources":["../../src/keys.ts"],"sourcesContent":[],"mappings":";;;;;;AAG8C;AAkC9C,KA7BK,0BAAA,GA6B8B;EA4BnB;EAIA,KAAA,CAAA,EAAA,OAAA;EA0EA;EA+BA,MAAA,CAAA,EAAA,MAAA;EAiCA;EAWA,QAAA,CAAA,EAAA,MAAA;EAWA;EAWA,WAAA,CAAA,EAAA,OAAA;AAYhB,CAAA;AAmBA;;;;;;iBA1OgB,mBAAA;iBA4BA,mBAAA,mCAEL;;IACR;iBACa,mBAAA,oCAEJ,6BACT;;;;;;;iBAuEa,gBAAA;;;;;;;iBA+BA,0BAAA,CAAA;;;;;;;oCAUsB;;;;;;;;;iBAuBtB,+BAAA;;;;;;;;iBAWA,8BAAA;;;;;;;;iBAWA,0BAAA;;;;;;;;iBAWA,yBAAA;;;;;;;;;iBAYM,eAAA,kCAEZ,eACP;;;;;;;;;cAgBU"}
@@ -1,3 +1,3 @@
1
- import "./index-DRoX574n.mjs";
2
- import { buildPublishableKey, createDevOrStagingUrlCache, getCookieSuffix, getSuffixedCookieName, isDevelopmentFromPublishableKey, isDevelopmentFromSecretKey, isProductionFromPublishableKey, isProductionFromSecretKey, isPublishableKey, parsePublishableKey } from "./keys-83lzlaAG.mjs";
1
+ import "./index-X6_DF-iN.mjs";
2
+ import { buildPublishableKey, createDevOrStagingUrlCache, getCookieSuffix, getSuffixedCookieName, isDevelopmentFromPublishableKey, isDevelopmentFromSecretKey, isProductionFromPublishableKey, isProductionFromSecretKey, isPublishableKey, parsePublishableKey } from "./keys-DMgwDjVR.mjs";
3
3
  export { buildPublishableKey, createDevOrStagingUrlCache, getCookieSuffix, getSuffixedCookieName, isDevelopmentFromPublishableKey, isDevelopmentFromSecretKey, isProductionFromPublishableKey, isProductionFromSecretKey, isPublishableKey, parsePublishableKey };
@@ -1,3 +1,3 @@
1
- import "./index-BX6sndeu.js";
2
- import { buildPublishableKey, createDevOrStagingUrlCache, getCookieSuffix, getSuffixedCookieName, isDevelopmentFromPublishableKey, isDevelopmentFromSecretKey, isProductionFromPublishableKey, isProductionFromSecretKey, isPublishableKey, parsePublishableKey } from "./keys-YrWvb2ed.js";
1
+ import "./index-B7NHYKeV.js";
2
+ import { buildPublishableKey, createDevOrStagingUrlCache, getCookieSuffix, getSuffixedCookieName, isDevelopmentFromPublishableKey, isDevelopmentFromSecretKey, isProductionFromPublishableKey, isProductionFromSecretKey, isPublishableKey, parsePublishableKey } from "./keys-AEakrudB.js";
3
3
  export { buildPublishableKey, createDevOrStagingUrlCache, getCookieSuffix, getSuffixedCookieName, isDevelopmentFromPublishableKey, isDevelopmentFromSecretKey, isProductionFromPublishableKey, isProductionFromSecretKey, isPublishableKey, parsePublishableKey };
@@ -3,7 +3,7 @@ const require_error = require('./error-DIeXY7Ki.js');
3
3
  const require_loadScript = require('./loadScript-D8zceEj8.js');
4
4
  const require_proxy = require('./proxy-B_Yui2Mf.js');
5
5
  const require_url = require('./url-Clb-n8zC.js');
6
- const require_versionSelector = require('./versionSelector-CPS7KdGH.js');
6
+ const require_versionSelector = require('./versionSelector-EbyslmUF.js');
7
7
 
8
8
  //#region src/loadClerkJsScript.ts
9
9
  const ERROR_CODE = "failed_to_load_clerk_js";
@@ -226,4 +226,4 @@ Object.defineProperty(exports, 'setClerkJsLoadingErrorPackageName', {
226
226
  return setClerkJsLoadingErrorPackageName;
227
227
  }
228
228
  });
229
- //# sourceMappingURL=loadClerkJsScript-ClRfibaX.js.map
229
+ //# sourceMappingURL=loadClerkJsScript-B1ZljyES.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadClerkJsScript-ClRfibaX.js","names":["createDevOrStagingUrlCache","buildErrorThrower","timeoutId","pollInterval","ClerkRuntimeError","isValidProxyUrl","proxyUrlToAbsoluteURL","parsePublishableKey","addClerkPrefix","versionSelector","obj: Record<string, string>"],"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 { ClerkOptions, SDKMetadata, Without } from './types';\nimport { addClerkPrefix } from './url';\nimport { versionSelector } from './versionSelector';\n\nconst ERROR_CODE = 'failed_to_load_clerk_js';\nconst ERROR_CODE_TIMEOUT = 'failed_to_load_clerk_js_timeout';\nconst FAILED_TO_LOAD_ERROR = 'Failed to load Clerk';\n\nconst { isDevOrStagingUrl } = createDevOrStagingUrlCache();\n\nconst errorThrower = buildErrorThrower({ packageName: '@clerk/shared' });\n\n/**\n * Sets the package name for error messages during ClerkJS script loading.\n *\n * @param packageName - The name of the package to use in error messages (e.g., '@clerk/clerk-react').\n * @example\n * ```typescript\n * setClerkJsLoadingErrorPackageName('@clerk/clerk-react');\n * ```\n */\nexport function setClerkJsLoadingErrorPackageName(packageName: string) {\n errorThrower.setPackageName({ packageName });\n}\n\ntype LoadClerkJsScriptOptions = Without<ClerkOptions, 'isSatellite'> & {\n publishableKey: string;\n clerkJSUrl?: string;\n clerkJSVariant?: 'headless' | '';\n 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 * 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 isClerkProperlyLoaded(): boolean {\n if (typeof window === 'undefined' || !(window as any).Clerk) {\n return false;\n }\n\n // Basic validation that window.Clerk has the expected structure\n const clerk = (window as any).Clerk;\n return typeof clerk === 'object' && typeof clerk.load === 'function';\n}\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 * Waits for Clerk to be properly loaded with a timeout mechanism.\n * Uses polling to check if Clerk becomes available within the specified timeout.\n *\n * @param timeoutMs - Maximum time to wait in milliseconds.\n * @param existingScript - The existing script element to wait for. Optional, for existing scripts.\n * @returns Promise that resolves with null if Clerk loads successfully, or rejects with an error if timeout is reached.\n */\nfunction waitForClerkWithTimeout(\n timeoutMs: number,\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(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE }));\n });\n\n const checkAndResolve = () => {\n if (resolved) {\n return;\n }\n\n if (isClerkProperlyLoaded()) {\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 (!isClerkProperlyLoaded()) {\n reject(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE_TIMEOUT }));\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\n/**\n * Hotloads the Clerk JS script with robust failure detection and retry logic.\n *\n * For existing scripts:\n * - If no request error detected: waits for timeout, then retries with loadScript if timeout expires\n * - If request error detected: immediately retries with loadScript.\n *\n * For new scripts: uses loadScript which has built-in retry logic via the retry utility.\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 */\nconst loadClerkJsScript = async (opts?: LoadClerkJsScriptOptions): Promise<HTMLScriptElement | null> => {\n const timeout = opts?.scriptLoadTimeout ?? 15000;\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 waitForClerkWithTimeout(timeout, existingScript);\n return null;\n } catch {\n existingScript.remove();\n }\n }\n }\n\n const loadPromise = waitForClerkWithTimeout(timeout);\n\n loadScript(scriptUrl, {\n async: true,\n crossOrigin: 'anonymous',\n nonce: opts.nonce,\n beforeLoad: applyClerkJsScriptAttributes(opts),\n }).catch(error => {\n throw new ClerkRuntimeError(FAILED_TO_LOAD_ERROR + (error.message ? `, ${error.message}` : ''), {\n code: ERROR_CODE,\n cause: error,\n });\n });\n\n return loadPromise;\n};\n\n/**\n * Generates a Clerk JS script URL based on the provided options.\n *\n * @param opts - The options to use when building the Clerk JS script URL.\n * @returns The complete URL to the Clerk JS script.\n *\n * @example\n * ```typescript\n * const url = clerkJsScriptUrl({ publishableKey: 'pk_test_...' });\n * // Returns: \"https://example.clerk.accounts.dev/npm/@clerk/clerk-js@5/dist/clerk.browser.js\"\n * ```\n */\nconst clerkJsScriptUrl = (opts: LoadClerkJsScriptOptions) => {\n const { clerkJSUrl, clerkJSVariant, clerkJSVersion, proxyUrl, domain, publishableKey } = opts;\n\n if (clerkJSUrl) {\n return clerkJSUrl;\n }\n\n let scriptHost = '';\n if (!!proxyUrl && isValidProxyUrl(proxyUrl)) {\n scriptHost = proxyUrlToAbsoluteURL(proxyUrl).replace(/http(s)?:\\/\\//, '');\n } else if (domain && !isDevOrStagingUrl(parsePublishableKey(publishableKey)?.frontendApi || '')) {\n scriptHost = addClerkPrefix(domain);\n } else {\n scriptHost = parsePublishableKey(publishableKey)?.frontendApi || '';\n }\n\n const variant = clerkJSVariant ? `${clerkJSVariant.replace(/\\.+$/, '')}.` : '';\n const version = versionSelector(clerkJSVersion);\n return `https://${scriptHost}/npm/@clerk/clerk-js@${version}/dist/clerk.${variant}browser.js`;\n};\n\n/**\n * Builds an object of Clerk JS script attributes based on the provided options.\n *\n * @param options - The options containing the values for script attributes.\n * @returns An object containing data attributes to be applied to the script element.\n */\nconst 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\n/**\n * Returns a function that applies Clerk JS script attributes to a script element.\n *\n * @param options - The options containing the values for script attributes.\n * @returns A function that accepts a script element and applies the attributes to it.\n */\nconst applyClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => (script: HTMLScriptElement) => {\n const attributes = buildClerkJsScriptAttributes(options);\n for (const attribute in attributes) {\n script.setAttribute(attribute, attributes[attribute]);\n }\n};\n\nexport { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript };\nexport type { LoadClerkJsScriptOptions };\n"],"mappings":"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"}
1
+ {"version":3,"file":"loadClerkJsScript-B1ZljyES.js","names":["createDevOrStagingUrlCache","buildErrorThrower","timeoutId","pollInterval","ClerkRuntimeError","isValidProxyUrl","proxyUrlToAbsoluteURL","parsePublishableKey","addClerkPrefix","versionSelector","obj: Record<string, string>"],"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 { ClerkOptions, SDKMetadata, Without } from './types';\nimport { addClerkPrefix } from './url';\nimport { versionSelector } from './versionSelector';\n\nconst ERROR_CODE = 'failed_to_load_clerk_js';\nconst ERROR_CODE_TIMEOUT = 'failed_to_load_clerk_js_timeout';\nconst FAILED_TO_LOAD_ERROR = 'Failed to load Clerk';\n\nconst { isDevOrStagingUrl } = createDevOrStagingUrlCache();\n\nconst errorThrower = buildErrorThrower({ packageName: '@clerk/shared' });\n\n/**\n * Sets the package name for error messages during ClerkJS script loading.\n *\n * @param packageName - The name of the package to use in error messages (e.g., '@clerk/clerk-react').\n * @example\n * ```typescript\n * setClerkJsLoadingErrorPackageName('@clerk/clerk-react');\n * ```\n */\nexport function setClerkJsLoadingErrorPackageName(packageName: string) {\n errorThrower.setPackageName({ packageName });\n}\n\ntype LoadClerkJsScriptOptions = Without<ClerkOptions, 'isSatellite'> & {\n publishableKey: string;\n clerkJSUrl?: string;\n clerkJSVariant?: 'headless' | '';\n 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 * 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 isClerkProperlyLoaded(): boolean {\n if (typeof window === 'undefined' || !(window as any).Clerk) {\n return false;\n }\n\n // Basic validation that window.Clerk has the expected structure\n const clerk = (window as any).Clerk;\n return typeof clerk === 'object' && typeof clerk.load === 'function';\n}\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 * Waits for Clerk to be properly loaded with a timeout mechanism.\n * Uses polling to check if Clerk becomes available within the specified timeout.\n *\n * @param timeoutMs - Maximum time to wait in milliseconds.\n * @param existingScript - The existing script element to wait for. Optional, for existing scripts.\n * @returns Promise that resolves with null if Clerk loads successfully, or rejects with an error if timeout is reached.\n */\nfunction waitForClerkWithTimeout(\n timeoutMs: number,\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(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE }));\n });\n\n const checkAndResolve = () => {\n if (resolved) {\n return;\n }\n\n if (isClerkProperlyLoaded()) {\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 (!isClerkProperlyLoaded()) {\n reject(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE_TIMEOUT }));\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\n/**\n * Hotloads the Clerk JS script with robust failure detection and retry logic.\n *\n * For existing scripts:\n * - If no request error detected: waits for timeout, then retries with loadScript if timeout expires\n * - If request error detected: immediately retries with loadScript.\n *\n * For new scripts: uses loadScript which has built-in retry logic via the retry utility.\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 */\nconst loadClerkJsScript = async (opts?: LoadClerkJsScriptOptions): Promise<HTMLScriptElement | null> => {\n const timeout = opts?.scriptLoadTimeout ?? 15000;\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 waitForClerkWithTimeout(timeout, existingScript);\n return null;\n } catch {\n existingScript.remove();\n }\n }\n }\n\n const loadPromise = waitForClerkWithTimeout(timeout);\n\n loadScript(scriptUrl, {\n async: true,\n crossOrigin: 'anonymous',\n nonce: opts.nonce,\n beforeLoad: applyClerkJsScriptAttributes(opts),\n }).catch(error => {\n throw new ClerkRuntimeError(FAILED_TO_LOAD_ERROR + (error.message ? `, ${error.message}` : ''), {\n code: ERROR_CODE,\n cause: error,\n });\n });\n\n return loadPromise;\n};\n\n/**\n * Generates a Clerk JS script URL based on the provided options.\n *\n * @param opts - The options to use when building the Clerk JS script URL.\n * @returns The complete URL to the Clerk JS script.\n *\n * @example\n * ```typescript\n * const url = clerkJsScriptUrl({ publishableKey: 'pk_test_...' });\n * // Returns: \"https://example.clerk.accounts.dev/npm/@clerk/clerk-js@5/dist/clerk.browser.js\"\n * ```\n */\nconst clerkJsScriptUrl = (opts: LoadClerkJsScriptOptions) => {\n const { clerkJSUrl, clerkJSVariant, clerkJSVersion, proxyUrl, domain, publishableKey } = opts;\n\n if (clerkJSUrl) {\n return clerkJSUrl;\n }\n\n let scriptHost = '';\n if (!!proxyUrl && isValidProxyUrl(proxyUrl)) {\n scriptHost = proxyUrlToAbsoluteURL(proxyUrl).replace(/http(s)?:\\/\\//, '');\n } else if (domain && !isDevOrStagingUrl(parsePublishableKey(publishableKey)?.frontendApi || '')) {\n scriptHost = addClerkPrefix(domain);\n } else {\n scriptHost = parsePublishableKey(publishableKey)?.frontendApi || '';\n }\n\n const variant = clerkJSVariant ? `${clerkJSVariant.replace(/\\.+$/, '')}.` : '';\n const version = versionSelector(clerkJSVersion);\n return `https://${scriptHost}/npm/@clerk/clerk-js@${version}/dist/clerk.${variant}browser.js`;\n};\n\n/**\n * Builds an object of Clerk JS script attributes based on the provided options.\n *\n * @param options - The options containing the values for script attributes.\n * @returns An object containing data attributes to be applied to the script element.\n */\nconst 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\n/**\n * Returns a function that applies Clerk JS script attributes to a script element.\n *\n * @param options - The options containing the values for script attributes.\n * @returns A function that accepts a script element and applies the attributes to it.\n */\nconst applyClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => (script: HTMLScriptElement) => {\n const attributes = buildClerkJsScriptAttributes(options);\n for (const attribute in attributes) {\n script.setAttribute(attribute, attributes[attribute]);\n }\n};\n\nexport { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript };\nexport type { LoadClerkJsScriptOptions };\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { ClerkRuntimeError, buildErrorThrower } from "./error-Dl9xmUf3.mjs";
3
3
  import { loadScript } from "./loadScript-t1vaIfy5.mjs";
4
4
  import { isValidProxyUrl, proxyUrlToAbsoluteURL } from "./proxy-Bq8EHApG.mjs";
5
5
  import { addClerkPrefix } from "./url-Cdy8w8vK.mjs";
6
- import { versionSelector } from "./versionSelector-BTaEe_fh.mjs";
6
+ import { versionSelector } from "./versionSelector-Cq3vk5iP.mjs";
7
7
 
8
8
  //#region src/loadClerkJsScript.ts
9
9
  const ERROR_CODE = "failed_to_load_clerk_js";
@@ -203,4 +203,4 @@ const applyClerkJsScriptAttributes = (options) => (script) => {
203
203
 
204
204
  //#endregion
205
205
  export { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName };
206
- //# sourceMappingURL=loadClerkJsScript-DDvGauc8.mjs.map
206
+ //# sourceMappingURL=loadClerkJsScript-CYK4QCrm.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadClerkJsScript-DDvGauc8.mjs","names":["timeoutId","pollInterval","obj: Record<string, string>"],"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 { ClerkOptions, SDKMetadata, Without } from './types';\nimport { addClerkPrefix } from './url';\nimport { versionSelector } from './versionSelector';\n\nconst ERROR_CODE = 'failed_to_load_clerk_js';\nconst ERROR_CODE_TIMEOUT = 'failed_to_load_clerk_js_timeout';\nconst FAILED_TO_LOAD_ERROR = 'Failed to load Clerk';\n\nconst { isDevOrStagingUrl } = createDevOrStagingUrlCache();\n\nconst errorThrower = buildErrorThrower({ packageName: '@clerk/shared' });\n\n/**\n * Sets the package name for error messages during ClerkJS script loading.\n *\n * @param packageName - The name of the package to use in error messages (e.g., '@clerk/clerk-react').\n * @example\n * ```typescript\n * setClerkJsLoadingErrorPackageName('@clerk/clerk-react');\n * ```\n */\nexport function setClerkJsLoadingErrorPackageName(packageName: string) {\n errorThrower.setPackageName({ packageName });\n}\n\ntype LoadClerkJsScriptOptions = Without<ClerkOptions, 'isSatellite'> & {\n publishableKey: string;\n clerkJSUrl?: string;\n clerkJSVariant?: 'headless' | '';\n 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 * 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 isClerkProperlyLoaded(): boolean {\n if (typeof window === 'undefined' || !(window as any).Clerk) {\n return false;\n }\n\n // Basic validation that window.Clerk has the expected structure\n const clerk = (window as any).Clerk;\n return typeof clerk === 'object' && typeof clerk.load === 'function';\n}\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 * Waits for Clerk to be properly loaded with a timeout mechanism.\n * Uses polling to check if Clerk becomes available within the specified timeout.\n *\n * @param timeoutMs - Maximum time to wait in milliseconds.\n * @param existingScript - The existing script element to wait for. Optional, for existing scripts.\n * @returns Promise that resolves with null if Clerk loads successfully, or rejects with an error if timeout is reached.\n */\nfunction waitForClerkWithTimeout(\n timeoutMs: number,\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(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE }));\n });\n\n const checkAndResolve = () => {\n if (resolved) {\n return;\n }\n\n if (isClerkProperlyLoaded()) {\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 (!isClerkProperlyLoaded()) {\n reject(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE_TIMEOUT }));\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\n/**\n * Hotloads the Clerk JS script with robust failure detection and retry logic.\n *\n * For existing scripts:\n * - If no request error detected: waits for timeout, then retries with loadScript if timeout expires\n * - If request error detected: immediately retries with loadScript.\n *\n * For new scripts: uses loadScript which has built-in retry logic via the retry utility.\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 */\nconst loadClerkJsScript = async (opts?: LoadClerkJsScriptOptions): Promise<HTMLScriptElement | null> => {\n const timeout = opts?.scriptLoadTimeout ?? 15000;\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 waitForClerkWithTimeout(timeout, existingScript);\n return null;\n } catch {\n existingScript.remove();\n }\n }\n }\n\n const loadPromise = waitForClerkWithTimeout(timeout);\n\n loadScript(scriptUrl, {\n async: true,\n crossOrigin: 'anonymous',\n nonce: opts.nonce,\n beforeLoad: applyClerkJsScriptAttributes(opts),\n }).catch(error => {\n throw new ClerkRuntimeError(FAILED_TO_LOAD_ERROR + (error.message ? `, ${error.message}` : ''), {\n code: ERROR_CODE,\n cause: error,\n });\n });\n\n return loadPromise;\n};\n\n/**\n * Generates a Clerk JS script URL based on the provided options.\n *\n * @param opts - The options to use when building the Clerk JS script URL.\n * @returns The complete URL to the Clerk JS script.\n *\n * @example\n * ```typescript\n * const url = clerkJsScriptUrl({ publishableKey: 'pk_test_...' });\n * // Returns: \"https://example.clerk.accounts.dev/npm/@clerk/clerk-js@5/dist/clerk.browser.js\"\n * ```\n */\nconst clerkJsScriptUrl = (opts: LoadClerkJsScriptOptions) => {\n const { clerkJSUrl, clerkJSVariant, clerkJSVersion, proxyUrl, domain, publishableKey } = opts;\n\n if (clerkJSUrl) {\n return clerkJSUrl;\n }\n\n let scriptHost = '';\n if (!!proxyUrl && isValidProxyUrl(proxyUrl)) {\n scriptHost = proxyUrlToAbsoluteURL(proxyUrl).replace(/http(s)?:\\/\\//, '');\n } else if (domain && !isDevOrStagingUrl(parsePublishableKey(publishableKey)?.frontendApi || '')) {\n scriptHost = addClerkPrefix(domain);\n } else {\n scriptHost = parsePublishableKey(publishableKey)?.frontendApi || '';\n }\n\n const variant = clerkJSVariant ? `${clerkJSVariant.replace(/\\.+$/, '')}.` : '';\n const version = versionSelector(clerkJSVersion);\n return `https://${scriptHost}/npm/@clerk/clerk-js@${version}/dist/clerk.${variant}browser.js`;\n};\n\n/**\n * Builds an object of Clerk JS script attributes based on the provided options.\n *\n * @param options - The options containing the values for script attributes.\n * @returns An object containing data attributes to be applied to the script element.\n */\nconst 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\n/**\n * Returns a function that applies Clerk JS script attributes to a script element.\n *\n * @param options - The options containing the values for script attributes.\n * @returns A function that accepts a script element and applies the attributes to it.\n */\nconst applyClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => (script: HTMLScriptElement) => {\n const attributes = buildClerkJsScriptAttributes(options);\n for (const attribute in attributes) {\n script.setAttribute(attribute, attributes[attribute]);\n }\n};\n\nexport { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript };\nexport type { LoadClerkJsScriptOptions };\n"],"mappings":"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"}
1
+ {"version":3,"file":"loadClerkJsScript-CYK4QCrm.mjs","names":["timeoutId","pollInterval","obj: Record<string, string>"],"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 { ClerkOptions, SDKMetadata, Without } from './types';\nimport { addClerkPrefix } from './url';\nimport { versionSelector } from './versionSelector';\n\nconst ERROR_CODE = 'failed_to_load_clerk_js';\nconst ERROR_CODE_TIMEOUT = 'failed_to_load_clerk_js_timeout';\nconst FAILED_TO_LOAD_ERROR = 'Failed to load Clerk';\n\nconst { isDevOrStagingUrl } = createDevOrStagingUrlCache();\n\nconst errorThrower = buildErrorThrower({ packageName: '@clerk/shared' });\n\n/**\n * Sets the package name for error messages during ClerkJS script loading.\n *\n * @param packageName - The name of the package to use in error messages (e.g., '@clerk/clerk-react').\n * @example\n * ```typescript\n * setClerkJsLoadingErrorPackageName('@clerk/clerk-react');\n * ```\n */\nexport function setClerkJsLoadingErrorPackageName(packageName: string) {\n errorThrower.setPackageName({ packageName });\n}\n\ntype LoadClerkJsScriptOptions = Without<ClerkOptions, 'isSatellite'> & {\n publishableKey: string;\n clerkJSUrl?: string;\n clerkJSVariant?: 'headless' | '';\n 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 * 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 isClerkProperlyLoaded(): boolean {\n if (typeof window === 'undefined' || !(window as any).Clerk) {\n return false;\n }\n\n // Basic validation that window.Clerk has the expected structure\n const clerk = (window as any).Clerk;\n return typeof clerk === 'object' && typeof clerk.load === 'function';\n}\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 * Waits for Clerk to be properly loaded with a timeout mechanism.\n * Uses polling to check if Clerk becomes available within the specified timeout.\n *\n * @param timeoutMs - Maximum time to wait in milliseconds.\n * @param existingScript - The existing script element to wait for. Optional, for existing scripts.\n * @returns Promise that resolves with null if Clerk loads successfully, or rejects with an error if timeout is reached.\n */\nfunction waitForClerkWithTimeout(\n timeoutMs: number,\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(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE }));\n });\n\n const checkAndResolve = () => {\n if (resolved) {\n return;\n }\n\n if (isClerkProperlyLoaded()) {\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 (!isClerkProperlyLoaded()) {\n reject(new ClerkRuntimeError(FAILED_TO_LOAD_ERROR, { code: ERROR_CODE_TIMEOUT }));\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\n/**\n * Hotloads the Clerk JS script with robust failure detection and retry logic.\n *\n * For existing scripts:\n * - If no request error detected: waits for timeout, then retries with loadScript if timeout expires\n * - If request error detected: immediately retries with loadScript.\n *\n * For new scripts: uses loadScript which has built-in retry logic via the retry utility.\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 */\nconst loadClerkJsScript = async (opts?: LoadClerkJsScriptOptions): Promise<HTMLScriptElement | null> => {\n const timeout = opts?.scriptLoadTimeout ?? 15000;\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 waitForClerkWithTimeout(timeout, existingScript);\n return null;\n } catch {\n existingScript.remove();\n }\n }\n }\n\n const loadPromise = waitForClerkWithTimeout(timeout);\n\n loadScript(scriptUrl, {\n async: true,\n crossOrigin: 'anonymous',\n nonce: opts.nonce,\n beforeLoad: applyClerkJsScriptAttributes(opts),\n }).catch(error => {\n throw new ClerkRuntimeError(FAILED_TO_LOAD_ERROR + (error.message ? `, ${error.message}` : ''), {\n code: ERROR_CODE,\n cause: error,\n });\n });\n\n return loadPromise;\n};\n\n/**\n * Generates a Clerk JS script URL based on the provided options.\n *\n * @param opts - The options to use when building the Clerk JS script URL.\n * @returns The complete URL to the Clerk JS script.\n *\n * @example\n * ```typescript\n * const url = clerkJsScriptUrl({ publishableKey: 'pk_test_...' });\n * // Returns: \"https://example.clerk.accounts.dev/npm/@clerk/clerk-js@5/dist/clerk.browser.js\"\n * ```\n */\nconst clerkJsScriptUrl = (opts: LoadClerkJsScriptOptions) => {\n const { clerkJSUrl, clerkJSVariant, clerkJSVersion, proxyUrl, domain, publishableKey } = opts;\n\n if (clerkJSUrl) {\n return clerkJSUrl;\n }\n\n let scriptHost = '';\n if (!!proxyUrl && isValidProxyUrl(proxyUrl)) {\n scriptHost = proxyUrlToAbsoluteURL(proxyUrl).replace(/http(s)?:\\/\\//, '');\n } else if (domain && !isDevOrStagingUrl(parsePublishableKey(publishableKey)?.frontendApi || '')) {\n scriptHost = addClerkPrefix(domain);\n } else {\n scriptHost = parsePublishableKey(publishableKey)?.frontendApi || '';\n }\n\n const variant = clerkJSVariant ? `${clerkJSVariant.replace(/\\.+$/, '')}.` : '';\n const version = versionSelector(clerkJSVersion);\n return `https://${scriptHost}/npm/@clerk/clerk-js@${version}/dist/clerk.${variant}browser.js`;\n};\n\n/**\n * Builds an object of Clerk JS script attributes based on the provided options.\n *\n * @param options - The options containing the values for script attributes.\n * @returns An object containing data attributes to be applied to the script element.\n */\nconst 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\n/**\n * Returns a function that applies Clerk JS script attributes to a script element.\n *\n * @param options - The options containing the values for script attributes.\n * @returns A function that accepts a script element and applies the attributes to it.\n */\nconst applyClerkJsScriptAttributes = (options: LoadClerkJsScriptOptions) => (script: HTMLScriptElement) => {\n const attributes = buildClerkJsScriptAttributes(options);\n for (const attribute in attributes) {\n script.setAttribute(attribute, attributes[attribute]);\n }\n};\n\nexport { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript };\nexport type { LoadClerkJsScriptOptions };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ClerkOptions, SDKMetadata, Without } from "./index-BX6sndeu.js";
1
+ import { ClerkOptions, SDKMetadata, Without } from "./index-B7NHYKeV.js";
2
2
 
3
3
  //#region src/loadClerkJsScript.d.ts
4
4
 
@@ -74,4 +74,4 @@ declare const clerkJsScriptUrl: (opts: LoadClerkJsScriptOptions) => string;
74
74
  declare const buildClerkJsScriptAttributes: (options: LoadClerkJsScriptOptions) => Record<string, string>;
75
75
  //#endregion
76
76
  export { type LoadClerkJsScriptOptions, buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName };
77
- //# sourceMappingURL=loadClerkJsScript-B6IzADUE.d.ts.map
77
+ //# sourceMappingURL=loadClerkJsScript-DG9xy9eD.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadClerkJsScript-B6IzADUE.d.ts","names":[],"sources":["../../src/loadClerkJsScript.ts"],"sourcesContent":[],"mappings":";;;;;;AAyBA;AAEC;;;;;AAO0B;AAmKa,iBA5KxB,iCAAA,CA4KwB,WAAA,EAAA,MAAA,CAAA,EAAA,IAAA;KAxKnC,wBAAA,GAA2B,OAwK2C,CAxKnC,YAwKmC,EAAA,aAAA,CAAA,GAAA;EAAR,cAAA,EAAA,MAAA;EAAO,UAAA,CAAA,EAAA,MAAA;EAyDpE,cAAA,CAAA,EAAA,UAmBL,GAAA,EAnB+B;EA2B1B,cAAA,CAAA,EAAA,MAAA;gBAvPU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmKV,2BAAkC,6BAA2B,QAAQ;;;;;;;;;;;;;cAyDrE,yBAA0B;;;;;;;cA2B1B,wCAAyC,6BAAwB"}
1
+ {"version":3,"file":"loadClerkJsScript-DG9xy9eD.d.ts","names":[],"sources":["../../src/loadClerkJsScript.ts"],"sourcesContent":[],"mappings":";;;;;;AAyBA;AAEC;;;;;AAO0B;AAmKa,iBA5KxB,iCAAA,CA4KwB,WAAA,EAAA,MAAA,CAAA,EAAA,IAAA;KAxKnC,wBAAA,GAA2B,OAwK2C,CAxKnC,YAwKmC,EAAA,aAAA,CAAA,GAAA;EAAR,cAAA,EAAA,MAAA;EAAO,UAAA,CAAA,EAAA,MAAA;EAyDpE,cAAA,CAAA,EAAA,UAmBL,GAAA,EAnB+B;EA2B1B,cAAA,CAAA,EAAA,MAAA;gBAvPU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmKV,2BAAkC,6BAA2B,QAAQ;;;;;;;;;;;;;cAyDrE,yBAA0B;;;;;;;cA2B1B,wCAAyC,6BAAwB"}
@@ -1,4 +1,4 @@
1
- import { ClerkOptions, SDKMetadata, Without } from "./index-DRoX574n.mjs";
1
+ import { ClerkOptions, SDKMetadata, Without } from "./index-X6_DF-iN.mjs";
2
2
 
3
3
  //#region src/loadClerkJsScript.d.ts
4
4
 
@@ -74,4 +74,4 @@ declare const clerkJsScriptUrl: (opts: LoadClerkJsScriptOptions) => string;
74
74
  declare const buildClerkJsScriptAttributes: (options: LoadClerkJsScriptOptions) => Record<string, string>;
75
75
  //#endregion
76
76
  export { type LoadClerkJsScriptOptions, buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName };
77
- //# sourceMappingURL=loadClerkJsScript-BMs9X5iH.d.mts.map
77
+ //# sourceMappingURL=loadClerkJsScript-DVi-KSjp.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadClerkJsScript-BMs9X5iH.d.mts","names":[],"sources":["../../src/loadClerkJsScript.ts"],"sourcesContent":[],"mappings":";;;;;;AAyBA;AAEC;;;;;AAO0B;AAmKa,iBA5KxB,iCAAA,CA4KwB,WAAA,EAAA,MAAA,CAAA,EAAA,IAAA;KAxKnC,wBAAA,GAA2B,OAwK2C,CAxKnC,YAwKmC,EAAA,aAAA,CAAA,GAAA;EAAR,cAAA,EAAA,MAAA;EAAO,UAAA,CAAA,EAAA,MAAA;EAyDpE,cAAA,CAAA,EAAA,UAmBL,GAAA,EAnB+B;EA2B1B,cAAA,CAAA,EAAA,MAAA;gBAvPU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmKV,2BAAkC,6BAA2B,QAAQ;;;;;;;;;;;;;cAyDrE,yBAA0B;;;;;;;cA2B1B,wCAAyC,6BAAwB"}
1
+ {"version":3,"file":"loadClerkJsScript-DVi-KSjp.d.mts","names":[],"sources":["../../src/loadClerkJsScript.ts"],"sourcesContent":[],"mappings":";;;;;;AAyBA;AAEC;;;;;AAO0B;AAmKa,iBA5KxB,iCAAA,CA4KwB,WAAA,EAAA,MAAA,CAAA,EAAA,IAAA;KAxKnC,wBAAA,GAA2B,OAwK2C,CAxKnC,YAwKmC,EAAA,aAAA,CAAA,GAAA;EAAR,cAAA,EAAA,MAAA;EAAO,UAAA,CAAA,EAAA,MAAA;EAyDpE,cAAA,CAAA,EAAA,UAmBL,GAAA,EAnB+B;EA2B1B,cAAA,CAAA,EAAA,MAAA;gBAvPU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmKV,2BAAkC,6BAA2B,QAAQ;;;;;;;;;;;;;cAyDrE,yBAA0B;;;;;;;cA2B1B,wCAAyC,6BAAwB"}
@@ -1,3 +1,3 @@
1
- import "./index-DRoX574n.mjs";
2
- import { LoadClerkJsScriptOptions, buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName } from "./loadClerkJsScript-BMs9X5iH.mjs";
1
+ import "./index-X6_DF-iN.mjs";
2
+ import { LoadClerkJsScriptOptions, buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName } from "./loadClerkJsScript-DVi-KSjp.mjs";
3
3
  export { LoadClerkJsScriptOptions, buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName };
@@ -1,3 +1,3 @@
1
- import "./index-BX6sndeu.js";
2
- import { LoadClerkJsScriptOptions, buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName } from "./loadClerkJsScript-B6IzADUE.js";
1
+ import "./index-B7NHYKeV.js";
2
+ import { LoadClerkJsScriptOptions, buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName } from "./loadClerkJsScript-DG9xy9eD.js";
3
3
  export { LoadClerkJsScriptOptions, buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName };
@@ -8,8 +8,8 @@ require('./retry-rhkPbMCS.js');
8
8
  require('./loadScript-D8zceEj8.js');
9
9
  require('./proxy-B_Yui2Mf.js');
10
10
  require('./url-Clb-n8zC.js');
11
- require('./versionSelector-CPS7KdGH.js');
12
- const require_loadClerkJsScript = require('./loadClerkJsScript-ClRfibaX.js');
11
+ require('./versionSelector-EbyslmUF.js');
12
+ const require_loadClerkJsScript = require('./loadClerkJsScript-B1ZljyES.js');
13
13
 
14
14
  exports.buildClerkJsScriptAttributes = require_loadClerkJsScript.buildClerkJsScriptAttributes;
15
15
  exports.clerkJsScriptUrl = require_loadClerkJsScript.clerkJsScriptUrl;
@@ -8,7 +8,7 @@ import "./retry-DAlTROH9.mjs";
8
8
  import "./loadScript-t1vaIfy5.mjs";
9
9
  import "./proxy-Bq8EHApG.mjs";
10
10
  import "./url-Cdy8w8vK.mjs";
11
- import "./versionSelector-BTaEe_fh.mjs";
12
- import { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName } from "./loadClerkJsScript-DDvGauc8.mjs";
11
+ import "./versionSelector-Cq3vk5iP.mjs";
12
+ import { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName } from "./loadClerkJsScript-CYK4QCrm.mjs";
13
13
 
14
14
  export { buildClerkJsScriptAttributes, clerkJsScriptUrl, loadClerkJsScript, setClerkJsLoadingErrorPackageName };
@@ -1,4 +1,4 @@
1
- import { OAuthProvider, OAuthProviderData, OAuthStrategy } from "./index-DRoX574n.mjs";
1
+ import { OAuthProvider, OAuthProviderData, OAuthStrategy } from "./index-X6_DF-iN.mjs";
2
2
 
3
3
  //#region src/oauth.d.ts
4
4
  declare const OAUTH_PROVIDERS: OAuthProviderData[];
@@ -1,4 +1,4 @@
1
- import { OAuthProvider, OAuthProviderData, OAuthStrategy } from "./index-BX6sndeu.js";
1
+ import { OAuthProvider, OAuthProviderData, OAuthStrategy } from "./index-B7NHYKeV.js";
2
2
 
3
3
  //#region src/oauth.d.ts
4
4
  declare const OAUTH_PROVIDERS: OAuthProviderData[];
@@ -1,4 +1,4 @@
1
- import { OrganizationMembershipResource } from "./index-DRoX574n.mjs";
1
+ import { OrganizationMembershipResource } from "./index-X6_DF-iN.mjs";
2
2
 
3
3
  //#region src/organization.d.ts
4
4
 
@@ -1,4 +1,4 @@
1
- import { OrganizationMembershipResource } from "./index-BX6sndeu.js";
1
+ import { OrganizationMembershipResource } from "./index-B7NHYKeV.js";
2
2
 
3
3
  //#region src/organization.d.ts
4
4
 
@@ -1,4 +1,4 @@
1
- import { Autocomplete } from "./index-DRoX574n.mjs";
1
+ import { Autocomplete } from "./index-X6_DF-iN.mjs";
2
2
 
3
3
  //#region src/pathMatcher.d.ts
4
4
  type WithPathPatternWildcard<T = string> = `${T & string}(.*)`;
@@ -13,4 +13,4 @@ type PathMatcherParam = Array<RegExp | PathPattern> | RegExp | PathPattern;
13
13
  declare const createPathMatcher: (patterns: PathMatcherParam) => (pathname: string) => boolean;
14
14
  //#endregion
15
15
  export { PathMatcherParam, PathPattern, WithPathPatternWildcard, createPathMatcher };
16
- //# sourceMappingURL=pathMatcher--IdAeviC.d.mts.map
16
+ //# sourceMappingURL=pathMatcher-CKGBNIPN.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pathMatcher--IdAeviC.d.mts","names":[],"sources":["../../src/pathMatcher.ts"],"sourcesContent":[],"mappings":";;;KAGY,yCAAyC;KACzC,WAAA,GAAc,aAAa;AAD3B,KAEA,gBAAA,GAAmB,KAFI,CAEE,MAFF,GAEW,WAFQ,CAAA,GAEO,MAFP,GAEgB,WAFhB;AACtD;AACA;;;;;AAAsE,cAYzD,iBAZyD,EAAA,CAAA,QAAA,EAY1B,gBAZ0B,EAAA,GAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,OAAA"}
1
+ {"version":3,"file":"pathMatcher-CKGBNIPN.d.mts","names":[],"sources":["../../src/pathMatcher.ts"],"sourcesContent":[],"mappings":";;;KAGY,yCAAyC;KACzC,WAAA,GAAc,aAAa;AAD3B,KAEA,gBAAA,GAAmB,KAFI,CAEE,MAFF,GAEW,WAFQ,CAAA,GAEO,MAFP,GAEgB,WAFhB;AACtD;AACA;;;;;AAAsE,cAYzD,iBAZyD,EAAA,CAAA,QAAA,EAY1B,gBAZ0B,EAAA,GAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,OAAA"}
@@ -1,4 +1,4 @@
1
- import { Autocomplete } from "./index-BX6sndeu.js";
1
+ import { Autocomplete } from "./index-B7NHYKeV.js";
2
2
 
3
3
  //#region src/pathMatcher.d.ts
4
4
  type WithPathPatternWildcard<T = string> = `${T & string}(.*)`;
@@ -13,4 +13,4 @@ type PathMatcherParam = Array<RegExp | PathPattern> | RegExp | PathPattern;
13
13
  declare const createPathMatcher: (patterns: PathMatcherParam) => (pathname: string) => boolean;
14
14
  //#endregion
15
15
  export { PathMatcherParam, PathPattern, WithPathPatternWildcard, createPathMatcher };
16
- //# sourceMappingURL=pathMatcher-BUvD02EZ.d.ts.map
16
+ //# sourceMappingURL=pathMatcher-D8inYLXE.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pathMatcher-BUvD02EZ.d.ts","names":[],"sources":["../../src/pathMatcher.ts"],"sourcesContent":[],"mappings":";;;KAGY,yCAAyC;KACzC,WAAA,GAAc,aAAa;AAD3B,KAEA,gBAAA,GAAmB,KAFI,CAEE,MAFF,GAEW,WAFQ,CAAA,GAEO,MAFP,GAEgB,WAFhB;AACtD;AACA;;;;;AAAsE,cAYzD,iBAZyD,EAAA,CAAA,QAAA,EAY1B,gBAZ0B,EAAA,GAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,OAAA"}
1
+ {"version":3,"file":"pathMatcher-D8inYLXE.d.ts","names":[],"sources":["../../src/pathMatcher.ts"],"sourcesContent":[],"mappings":";;;KAGY,yCAAyC;KACzC,WAAA,GAAc,aAAa;AAD3B,KAEA,gBAAA,GAAmB,KAFI,CAEE,MAFF,GAEW,WAFQ,CAAA,GAEO,MAFP,GAEgB,WAFhB;AACtD;AACA;;;;;AAAsE,cAYzD,iBAZyD,EAAA,CAAA,QAAA,EAY1B,gBAZ0B,EAAA,GAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,OAAA"}
@@ -1,3 +1,3 @@
1
- import "./index-DRoX574n.mjs";
2
- import { PathMatcherParam, PathPattern, WithPathPatternWildcard, createPathMatcher } from "./pathMatcher--IdAeviC.mjs";
1
+ import "./index-X6_DF-iN.mjs";
2
+ import { PathMatcherParam, PathPattern, WithPathPatternWildcard, createPathMatcher } from "./pathMatcher-CKGBNIPN.mjs";
3
3
  export { PathMatcherParam, PathPattern, WithPathPatternWildcard, createPathMatcher };
@@ -1,3 +1,3 @@
1
- import "./index-BX6sndeu.js";
2
- import { PathMatcherParam, PathPattern, WithPathPatternWildcard, createPathMatcher } from "./pathMatcher-BUvD02EZ.js";
1
+ import "./index-B7NHYKeV.js";
2
+ import { PathMatcherParam, PathPattern, WithPathPatternWildcard, createPathMatcher } from "./pathMatcher-D8inYLXE.js";
3
3
  export { PathMatcherParam, PathPattern, WithPathPatternWildcard, createPathMatcher };
@@ -1,21 +1,21 @@
1
- import { APIKeyResource, BillingCheckoutResource, BillingPaymentMethodResource, BillingPaymentResource, BillingPlanResource, BillingStatementResource, BillingSubscriptionPlanPeriod, BillingSubscriptionResource, ClerkAPIResponseError, ClerkAPIResponseError$1, ClerkOptions, ClerkPaginatedResponse, ClientResource, CreateOrganizationParams, ForPayerType, GetAPIKeysParams, GetDomainsParams, GetInvitationsParams, GetMembersParams, GetMembershipRequestParams, GetUserOrganizationInvitationsParams, GetUserOrganizationMembershipParams, GetUserOrganizationSuggestionsParams, LoadedClerk, OrganizationCreationDefaultsResource, OrganizationDomainResource, OrganizationInvitationResource, OrganizationMembershipRequestResource, OrganizationMembershipResource, OrganizationResource, OrganizationSuggestionResource, SessionVerificationLevel, SetActive, SetActiveNavigate, SignedInSessionResource, UseSessionListReturn, UseSessionReturn, UseUserReturn, UserOrganizationInvitationResource, UserResource, __experimental_CheckoutCacheState, __experimental_CheckoutInstance } from "../index-DRoX574n.mjs";
1
+ import { APIKeyResource, BillingCheckoutResource, BillingPaymentMethodResource, BillingPaymentResource, BillingPlanResource, BillingStatementResource, BillingSubscriptionPlanPeriod, BillingSubscriptionResource, ClerkAPIResponseError, ClerkAPIResponseError$1, ClerkOptions, ClerkPaginatedResponse, ClientResource, CreateOrganizationParams, ForPayerType, GetAPIKeysParams, GetDomainsParams, GetInvitationsParams, GetMembersParams, GetMembershipRequestParams, GetUserOrganizationInvitationsParams, GetUserOrganizationMembershipParams, GetUserOrganizationSuggestionsParams, LoadedClerk, OrganizationCreationDefaultsResource, OrganizationDomainResource, OrganizationInvitationResource, OrganizationMembershipRequestResource, OrganizationMembershipResource, OrganizationResource, OrganizationSuggestionResource, SessionVerificationLevel, SetActive, SetActiveNavigate, SignedInSessionResource, UseSessionListReturn, UseSessionReturn, UseUserReturn, UserOrganizationInvitationResource, UserResource, __experimental_CheckoutCacheState, __experimental_CheckoutInstance } from "../index-X6_DF-iN.mjs";
2
2
  import "../apiUrlFromPublishableKey-BMA_oB1l.mjs";
3
3
  import "../browser-CwBluoYn.mjs";
4
- import "../color-5EK-w4Pa.mjs";
4
+ import "../color-C15hom0R.mjs";
5
5
  import "../constants-UOcJjdve.mjs";
6
6
  import "../date-DIGfFkoy.mjs";
7
7
  import "../deprecated-BRApxWmG.mjs";
8
- import "../deriveState-l1EE4w-l.mjs";
8
+ import "../deriveState-XzgLyM0C.mjs";
9
9
  import "../devBrowser-DGNGESpp.mjs";
10
- import "../error-Dyvw0cBN.mjs";
10
+ import "../error-CxSDsUm7.mjs";
11
11
  import "../file-BgHDMp4o.mjs";
12
12
  import "../getEnvVariable-58tQPflG.mjs";
13
13
  import "../handleValueOrFn-2pqr_dC8.mjs";
14
14
  import "../index-Dd9r-3AL.mjs";
15
15
  import "../isomorphicAtob-DqIxJQZE.mjs";
16
16
  import "../isomorphicBtoa-Cu4s1rFu.mjs";
17
- import "../keys-83lzlaAG.mjs";
18
- import "../loadClerkJsScript-BMs9X5iH.mjs";
17
+ import "../keys-DMgwDjVR.mjs";
18
+ import "../loadClerkJsScript-DVi-KSjp.mjs";
19
19
  import "../loadScript-C6SUcPSp.mjs";
20
20
  import "../localStorageBroadcastChannel-CNmeXxpW.mjs";
21
21
  import "../poller-I92Dozmd.mjs";
@@ -26,7 +26,7 @@ import "../versionSelector-Btv3m_NV.mjs";
26
26
  import "../object-CgEEf_DM.mjs";
27
27
  import "../logger-CFsSyN6O.mjs";
28
28
  import "../index-D_rS0fDT.mjs";
29
- import "../pathMatcher--IdAeviC.mjs";
29
+ import "../pathMatcher-CKGBNIPN.mjs";
30
30
  import "../netlifyCacheHandler-DaSimV39.mjs";
31
31
  import "../index-CoUVmp_Q.mjs";
32
32
  import React, { PropsWithChildren, ReactNode } from "react";
@@ -735,7 +735,7 @@ declare function useAttemptToEnableOrganizations(caller: 'useOrganization' | 'us
735
735
  /**
736
736
  * @internal
737
737
  */
738
- declare const useSafeLayoutEffect: typeof React.useEffect;
738
+ declare const useSafeLayoutEffect: typeof React.useLayoutEffect;
739
739
  //#endregion
740
740
  //#region src/react/hooks/useSession.d.ts
741
741
  type UseSession = () => UseSessionReturn;
@@ -1,21 +1,21 @@
1
- import { APIKeyResource, BillingCheckoutResource, BillingPaymentMethodResource, BillingPaymentResource, BillingPlanResource, BillingStatementResource, BillingSubscriptionPlanPeriod, BillingSubscriptionResource, ClerkAPIResponseError, ClerkAPIResponseError$1, ClerkOptions, ClerkPaginatedResponse, ClientResource, CreateOrganizationParams, ForPayerType, GetAPIKeysParams, GetDomainsParams, GetInvitationsParams, GetMembersParams, GetMembershipRequestParams, GetUserOrganizationInvitationsParams, GetUserOrganizationMembershipParams, GetUserOrganizationSuggestionsParams, LoadedClerk, OrganizationCreationDefaultsResource, OrganizationDomainResource, OrganizationInvitationResource, OrganizationMembershipRequestResource, OrganizationMembershipResource, OrganizationResource, OrganizationSuggestionResource, SessionVerificationLevel, SetActive, SetActiveNavigate, SignedInSessionResource, UseSessionListReturn, UseSessionReturn, UseUserReturn, UserOrganizationInvitationResource, UserResource, __experimental_CheckoutCacheState, __experimental_CheckoutInstance } from "../index-BX6sndeu.js";
2
- import "../apiUrlFromPublishableKey-BK2JHLjb.js";
1
+ import { APIKeyResource, BillingCheckoutResource, BillingPaymentMethodResource, BillingPaymentResource, BillingPlanResource, BillingStatementResource, BillingSubscriptionPlanPeriod, BillingSubscriptionResource, ClerkAPIResponseError, ClerkAPIResponseError$1, ClerkOptions, ClerkPaginatedResponse, ClientResource, CreateOrganizationParams, ForPayerType, GetAPIKeysParams, GetDomainsParams, GetInvitationsParams, GetMembersParams, GetMembershipRequestParams, GetUserOrganizationInvitationsParams, GetUserOrganizationMembershipParams, GetUserOrganizationSuggestionsParams, LoadedClerk, OrganizationCreationDefaultsResource, OrganizationDomainResource, OrganizationInvitationResource, OrganizationMembershipRequestResource, OrganizationMembershipResource, OrganizationResource, OrganizationSuggestionResource, SessionVerificationLevel, SetActive, SetActiveNavigate, SignedInSessionResource, UseSessionListReturn, UseSessionReturn, UseUserReturn, UserOrganizationInvitationResource, UserResource, __experimental_CheckoutCacheState, __experimental_CheckoutInstance } from "../index-B7NHYKeV.js";
2
+ import "../apiUrlFromPublishableKey-DOAlYzda.js";
3
3
  import "../browser-CT1g0w-N.js";
4
- import "../color-C7B_w9Xs.js";
4
+ import "../color-DCsQU1oj.js";
5
5
  import "../constants-DP5-fAPw.js";
6
6
  import "../date-DDNRUU0r.js";
7
7
  import "../deprecated-BnVl0yxv.js";
8
- import "../deriveState-0XMAcFTN.js";
8
+ import "../deriveState-jC5dgsdd.js";
9
9
  import "../devBrowser-ezvLE7uo.js";
10
- import "../error-BF6UbvEX.js";
10
+ import "../error-D9Hn5Vi4.js";
11
11
  import "../file-B_f0oD8h.js";
12
12
  import "../getEnvVariable-BcT_PqmA.js";
13
13
  import "../handleValueOrFn-BpIDq7Ek.js";
14
14
  import "../index-DcfXAwQx.js";
15
15
  import "../isomorphicAtob-D61jyCi3.js";
16
16
  import "../isomorphicBtoa-DZZ0MKdz.js";
17
- import "../keys-YrWvb2ed.js";
18
- import "../loadClerkJsScript-B6IzADUE.js";
17
+ import "../keys-AEakrudB.js";
18
+ import "../loadClerkJsScript-DG9xy9eD.js";
19
19
  import "../loadScript-BPX0RAWu.js";
20
20
  import "../localStorageBroadcastChannel-BSisnDfR.js";
21
21
  import "../poller-CIrx6NwR.js";
@@ -26,7 +26,7 @@ import "../versionSelector-CP0JpoAM.js";
26
26
  import "../object-5d8ACLdH.js";
27
27
  import "../logger-CWWjPZMR.js";
28
28
  import "../index-z_SguuaJ.js";
29
- import "../pathMatcher-BUvD02EZ.js";
29
+ import "../pathMatcher-D8inYLXE.js";
30
30
  import "../netlifyCacheHandler-Di70sUEE.js";
31
31
  import "../index-B5F3AfVc.js";
32
32
  import React, { PropsWithChildren, ReactNode } from "react";
@@ -735,7 +735,7 @@ declare function useAttemptToEnableOrganizations(caller: 'useOrganization' | 'us
735
735
  /**
736
736
  * @internal
737
737
  */
738
- declare const useSafeLayoutEffect: typeof React.useEffect;
738
+ declare const useSafeLayoutEffect: typeof React.useLayoutEffect;
739
739
  //#endregion
740
740
  //#region src/react/hooks/useSession.d.ts
741
741
  type UseSession = () => UseSessionReturn;
@@ -1,4 +1,4 @@
1
- import { ClerkHostRouter, RoutingMode } from "./index-DRoX574n.mjs";
1
+ import { ClerkHostRouter, RoutingMode } from "./index-X6_DF-iN.mjs";
2
2
  import React from "react";
3
3
 
4
4
  //#region src/router/router.d.ts
@@ -1,4 +1,4 @@
1
- import { ClerkHostRouter, RoutingMode } from "./index-BX6sndeu.js";
1
+ import { ClerkHostRouter, RoutingMode } from "./index-B7NHYKeV.js";
2
2
  import React from "react";
3
3
 
4
4
  //#region src/router/router.d.ts
@@ -1,4 +1,4 @@
1
- import { SamlIdpMap } from "./index-DRoX574n.mjs";
1
+ import { SamlIdpMap } from "./index-X6_DF-iN.mjs";
2
2
 
3
3
  //#region src/saml.d.ts
4
4
  declare const SAML_IDPS: SamlIdpMap;
@@ -1,4 +1,4 @@
1
- import { SamlIdpMap } from "./index-BX6sndeu.js";
1
+ import { SamlIdpMap } from "./index-B7NHYKeV.js";
2
2
 
3
3
  //#region src/saml.d.ts
4
4
  declare const SAML_IDPS: SamlIdpMap;
@@ -1,4 +1,4 @@
1
- import { Appearance, TelemetryCollector as TelemetryCollector$1, TelemetryEventRaw, TelemetryLogEntry } from "./index-DRoX574n.mjs";
1
+ import { Appearance, TelemetryCollector as TelemetryCollector$1, TelemetryEventRaw, TelemetryLogEntry } from "./index-X6_DF-iN.mjs";
2
2
 
3
3
  //#region src/telemetry/types.d.ts
4
4
  type TelemetryCollectorOptions = {
@@ -1,4 +1,4 @@
1
- import { Appearance, TelemetryCollector as TelemetryCollector$1, TelemetryEventRaw, TelemetryLogEntry } from "./index-BX6sndeu.js";
1
+ import { Appearance, TelemetryCollector as TelemetryCollector$1, TelemetryEventRaw, TelemetryLogEntry } from "./index-B7NHYKeV.js";
2
2
 
3
3
  //#region src/telemetry/types.d.ts
4
4
  type TelemetryCollectorOptions = {