@clerk/astro 4.0.12-snapshot.v20260812183021 → 4.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/internal/create-clerk-instance.ts","../../src/stores/external.ts"],"mappings":";;;;;iBA+FS,kBAAA,aAA+B,EAAA,GAAK,EAAA,EAAI,OAAA,EAAS,uBAAA,CAAwB,GAAA;;;;;;;AA5DzD;;cCtBZ,cAAA,uBAAc,YAAA;;;;;;;;cASd,UAAA,uBAAU,YAAA;;;;WAYrB,uBAAA;;;;;;;;;;;AAZF;;;;;;;;AAAA,cAsBa,UAAA,uBAAU,YAAA,+BAAA,YAAA;;;;;;;;;cAUV,aAAA,uBAAa,YAAA,+BAAA,qBAAA,iCAAA,sBAAA;;;;;;;;;cAUb,kBAAA,uBAAkB,YAAA,+BAAA,oBAAA;AApB/B;;;;AAAuB;AAUvB;;;AAVA,cA8Ba,YAAA,uBAAY,YAAA,+BAAA,cAAA;;;;;AApBC;AAU1B;;;cAoBa,WAAA,uBAAW,YAAA,+BAAA,KAAA;AApBO;AAU/B;;;;AAAyB;AAUzB;;AApB+B,cA8BlB,iBAAA,uBAAiB,YAAA,+BAAA,eAAA;;AAVN;AAUxB;;;;AAA8B;AAU9B;cAAa,YAAA,uBAAY,YAAA,+BAAA,cAAA;;;AAAA;AAUzB;;;;AAAyB;cAAZ,YAAA,uBAAY,YAAA,+BAAA,cAAA;;;;AAUC;;;;;cAAb,aAAA,uBAAa,YAAA,+BAAA,gBAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/internal/create-clerk-instance.ts","../../src/stores/external.ts"],"mappings":";;;;;iBAiGS,kBAAA,aAA+B,EAAA,GAAK,EAAA,EAAI,OAAA,EAAS,uBAAA,CAAwB,GAAA;;;;;;;AA9DzD;;cCtBZ,cAAA,uBAAc,YAAA;;;;;;;;cASd,UAAA,uBAAU,YAAA;;;;WAYrB,uBAAA;;;;;;;;;;;AAZF;;;;;;;;AAAA,cAsBa,UAAA,uBAAU,YAAA,+BAAA,YAAA;;;;;;;;;cAUV,aAAA,uBAAa,YAAA,+BAAA,qBAAA,iCAAA,sBAAA;;;;;;;;;cAUb,kBAAA,uBAAkB,YAAA,+BAAA,oBAAA;AApB/B;;;;AAAuB;AAUvB;;;AAVA,cA8Ba,YAAA,uBAAY,YAAA,+BAAA,cAAA;;;;;AApBC;AAU1B;;;cAoBa,WAAA,uBAAW,YAAA,+BAAA,KAAA;AApBO;AAU/B;;;;AAAyB;AAUzB;;AApB+B,cA8BlB,iBAAA,uBAAiB,YAAA,+BAAA,eAAA;;AAVN;AAUxB;;;;AAA8B;AAU9B;cAAa,YAAA,uBAAY,YAAA,+BAAA,cAAA;;;AAAA;AAUzB;;;;AAAyB;cAAZ,YAAA,uBAAY,YAAA,+BAAA,cAAA;;;;AAUC;;;;;cAAb,aAAA,uBAAa,YAAA,+BAAA,gBAAA"}
@@ -1,5 +1,5 @@
1
1
  import { a as $isLoadedStore, c as $sessionStore, d as $userStore, i as $clientStore, l as $signInStore, n as $billingStore, o as $organizationStore, r as $clerkStore, s as $sessionListStore, t as $authStore, u as $signUpStore } from "../external-DHTxQaok.js";
2
- import { n as updateClerkOptions } from "../create-clerk-instance-EPB2eKxD.js";
2
+ import { n as updateClerkOptions } from "../create-clerk-instance-Btlj_svM.js";
3
3
  import { getToken } from "@clerk/shared/getToken";
4
4
 
5
5
  export { $authStore, $billingStore, $clerkStore, $clientStore, $isLoadedStore, $organizationStore, $sessionListStore, $sessionStore, $signInStore, $signUpStore, $userStore, getToken, updateClerkOptions };
@@ -120,7 +120,9 @@ async function createClerkInstanceInternal(options) {
120
120
  $csrState.setKey("session", payload.session);
121
121
  $csrState.setKey("organization", payload.organization);
122
122
  });
123
- }).catch(() => {});
123
+ }).catch((err) => {
124
+ console.error(err.stack || err.message || err);
125
+ });
124
126
  }
125
127
  function updateClerkOptions(options) {
126
128
  const clerk = $clerk.get();
@@ -162,4 +164,4 @@ async function loadClerkUIEntryChunk(options) {
162
164
 
163
165
  //#endregion
164
166
  export { updateClerkOptions as n, createClerkInstance as t };
165
- //# sourceMappingURL=create-clerk-instance-EPB2eKxD.js.map
167
+ //# sourceMappingURL=create-clerk-instance-Btlj_svM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-clerk-instance-EPB2eKxD.js","names":[],"sources":["../src/internal/invoke-clerk-astro-js-functions.ts","../src/internal/mount-clerk-astro-js-components.ts","../src/internal/run-once.ts","../src/internal/create-clerk-instance.ts"],"sourcesContent":["import { $clerk } from '../stores/internal';\n\n/**\n * Loop through any Astro component that has requested to invoke a function and invoke it with its respective props.\n */\nconst invokeClerkAstroJSFunctions = () => {\n const functionNames = ['handleRedirectCallback'] as const;\n\n functionNames.forEach(fnName => {\n const elementsOfCategory = document.querySelectorAll(`[data-clerk-function-id^=\"clerk-${fnName}\"]`);\n elementsOfCategory.forEach(el => {\n const id = el.getAttribute('data-clerk-function-id');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const props = window.__astro_clerk_function_props?.get(fnName)?.get(id!) ?? {};\n void $clerk.get()?.[fnName]?.(props);\n });\n });\n};\n\nexport { invokeClerkAstroJSFunctions };\n","import type { Clerk } from '@clerk/shared/types';\n\nimport { $clerk } from '../stores/internal';\nimport type { InternalUIComponentId } from '../types';\n\n/**\n * Loop through any Astro component that has requested to mount a UI component and mount it with its respective props.\n */\nconst mountAllClerkAstroJSComponents = () => {\n const mountFns = {\n 'create-organization': 'mountCreateOrganization',\n 'organization-list': 'mountOrganizationList',\n 'organization-profile': 'mountOrganizationProfile',\n 'organization-switcher': 'mountOrganizationSwitcher',\n 'user-avatar': 'mountUserAvatar',\n 'user-button': 'mountUserButton',\n 'user-profile': 'mountUserProfile',\n 'sign-in': 'mountSignIn',\n 'sign-up': 'mountSignUp',\n 'google-one-tap': 'openGoogleOneTap',\n waitlist: 'mountWaitlist',\n 'pricing-table': 'mountPricingTable',\n 'api-keys': 'mountAPIKeys',\n } as const satisfies Record<InternalUIComponentId, keyof Clerk>;\n\n Object.entries(mountFns).forEach(([category, mountFn]) => {\n const elementsOfCategory = document.querySelectorAll(`[data-clerk-id^=\"clerk-${category}\"]`);\n elementsOfCategory.forEach(el => {\n const clerkId = el.getAttribute('data-clerk-id') as string;\n const props = window.__astro_clerk_component_props?.get(category)?.get(clerkId);\n if (el) {\n $clerk.get()?.[mountFn](el as HTMLDivElement, props);\n }\n });\n });\n};\n\nexport { mountAllClerkAstroJSComponents };\n","import { invokeClerkAstroJSFunctions } from './invoke-clerk-astro-js-functions';\nimport { mountAllClerkAstroJSComponents } from './mount-clerk-astro-js-components';\nimport type { CreateClerkInstanceInternalFn } from './types';\n\n/**\n * Prevents mounting components multiple times when the `createClerkInstanceInternal` was been called twice without await first\n * This is useful as the \"integration\" may call the function twice at the same time.\n */\nconst runOnce = (onFirst: CreateClerkInstanceInternalFn) => {\n let hasRun = false;\n return (params: Parameters<CreateClerkInstanceInternalFn>[0]) => {\n if (hasRun) {\n const clerkJSInstance = window.Clerk;\n return new Promise(res => {\n if (!clerkJSInstance) {\n return res(false);\n }\n\n if (clerkJSInstance.loaded) {\n mountAllClerkAstroJSComponents();\n invokeClerkAstroJSFunctions();\n }\n return res(clerkJSInstance.loaded);\n });\n }\n /**\n * Probably html streaming has delayed the component from mounting immediately.\n * In Astro, js modules will start executing only after html streaming has ended.\n */\n hasRun = true;\n return onFirst(params);\n };\n};\n\nexport { runOnce };\n","import {\n loadClerkJSScript,\n loadClerkUIScript,\n setClerkJSLoadingErrorPackageName,\n} from '@clerk/shared/loadClerkJsScript';\nimport type { ClerkOptions } from '@clerk/shared/types';\nimport type { ClerkUIConstructor } from '@clerk/shared/ui';\nimport type { Ui } from '@clerk/ui/internal';\n\nimport { $clerkStore } from '../stores/external';\nimport { $clerk, $csrState } from '../stores/internal';\nimport type { AstroClerkCreateInstanceParams, AstroClerkUpdateOptions, InternalRuntimeOptions } from '../types';\nimport { invokeClerkAstroJSFunctions } from './invoke-clerk-astro-js-functions';\nimport { mountAllClerkAstroJSComponents } from './mount-clerk-astro-js-components';\nimport { runOnce } from './run-once';\n\nlet initOptions: ClerkOptions | undefined;\n\nsetClerkJSLoadingErrorPackageName(PACKAGE_NAME);\n\nfunction createNavigationHandler(\n windowNav: typeof window.history.pushState | typeof window.history.replaceState,\n): Exclude<ClerkOptions['routerPush'], undefined> | Exclude<ClerkOptions['routerReplace'], undefined> {\n return (to, opts) => {\n if (opts?.__internal_metadata?.navigationType === 'internal') {\n windowNav(history.state, '', to);\n } else {\n opts?.windowNavigate(to);\n }\n };\n}\n\n/**\n * Prevents firing clerk.load() multiple times\n */\nconst createClerkInstance = runOnce(createClerkInstanceInternal);\n\nasync function createClerkInstanceInternal<TUi extends Ui = Ui>(options?: AstroClerkCreateInstanceParams<TUi>) {\n // Load clerk-js and clerk-ui in parallel.\n // Both functions return early if the scripts are already loaded\n // (e.g., via middleware-injected script tags in the HTML head).\n const clerkJsChunk = getClerkJsEntryChunk(options);\n const ClerkUI = getClerkUIEntryChunk(options);\n\n await clerkJsChunk;\n\n if (!window.Clerk) {\n throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.');\n }\n\n const clerkJSInstance = window.Clerk;\n\n if (!$clerk.get()) {\n $clerk.set(clerkJSInstance);\n }\n\n const internalOptions = options as AstroClerkCreateInstanceParams<TUi> & InternalRuntimeOptions;\n const keylessClaimUrl = internalOptions.__internal_keylessClaimUrl;\n const keylessApiKeysUrl = internalOptions.__internal_keylessApiKeysUrl;\n\n const clerkOptions = {\n routerPush: createNavigationHandler(window.history.pushState.bind(window.history)),\n routerReplace: createNavigationHandler(window.history.replaceState.bind(window.history)),\n ...options,\n // Pass the clerk-ui constructor promise to clerk.load()\n ui: { ...options?.ui, ClerkUI },\n ...(keylessClaimUrl && { __internal_keyless_claimKeylessApplicationUrl: keylessClaimUrl }),\n ...(keylessApiKeysUrl && { __internal_keyless_copyInstanceKeysUrl: keylessApiKeysUrl }),\n } as unknown as ClerkOptions;\n\n initOptions = clerkOptions;\n\n return clerkJSInstance\n .load(clerkOptions)\n .then(() => {\n $csrState.setKey('isLoaded', true);\n // Notify subscribers that $clerkStore has been loaded.\n // We're doing this because nanostores uses `===` for equality\n // and just by setting the value to `window.Clerk` again won't trigger an update.\n // We notify only once as this store is for advanced users.\n $clerkStore.notify();\n\n mountAllClerkAstroJSComponents();\n invokeClerkAstroJSFunctions();\n\n clerkJSInstance.addListener(payload => {\n $csrState.setKey('client', payload.client);\n $csrState.setKey('user', payload.user);\n $csrState.setKey('session', payload.session);\n $csrState.setKey('organization', payload.organization);\n });\n })\n .catch(() => {});\n}\n\nfunction updateClerkOptions<TUi extends Ui = Ui>(options: AstroClerkUpdateOptions<TUi>) {\n const clerk = $clerk.get();\n if (!clerk) {\n throw new Error('Missing clerk instance');\n }\n const updateOptions = {\n options: { ...initOptions, ...options },\n appearance: { ...initOptions?.appearance, ...options.appearance },\n } as unknown as { options: ClerkOptions; appearance?: any };\n // `__internal_updateProps` is not exposed as public API from `@clerk/types`\n void (clerk as any).__internal_updateProps(updateOptions);\n}\n\n/**\n * Loads clerk-js script if not already loaded.\n * Returns early if window.Clerk already exists.\n */\nasync function getClerkJsEntryChunk<TUi extends Ui = Ui>(options?: AstroClerkCreateInstanceParams<TUi>): Promise<void> {\n await loadClerkJSScript(options);\n}\n\n/**\n * Gets the ClerkUI constructor, either from options or by loading the script.\n * Returns early if window.__internal_ClerkUICtor already exists.\n * Returns undefined when prefetchUI={false} (no UI needed).\n */\nfunction getClerkUIEntryChunk<TUi extends Ui = Ui>(\n options?: AstroClerkCreateInstanceParams<TUi>,\n): ClerkUIConstructor | Promise<ClerkUIConstructor> | undefined {\n // Support bundled UI via ui.ClerkUI prop\n if (options?.ui?.ClerkUI) {\n return options.ui.ClerkUI;\n }\n\n // Skip CDN prefetch when ui prop is passed (bundled UI) or prefetchUI is false\n if (options?.ui || options?.prefetchUI === false) {\n return undefined;\n }\n\n return loadClerkUIEntryChunk(options);\n}\n\nasync function loadClerkUIEntryChunk<TUi extends Ui = Ui>(\n options?: AstroClerkCreateInstanceParams<TUi>,\n): Promise<ClerkUIConstructor> {\n await loadClerkUIScript(options as any);\n\n if (!window.__internal_ClerkUICtor) {\n throw new Error('Failed to download latest Clerk UI. Contact support@clerk.com.');\n }\n\n return window.__internal_ClerkUICtor;\n}\n\nexport { createClerkInstance, updateClerkOptions };\n"],"mappings":";;;;;;;AAKA,MAAM,oCAAoC;CAGxC,CAFuB,wBAEX,CAAC,CAAC,SAAQ,WAAU;EAE9B,AAD2B,SAAS,iBAAiB,mCAAmC,OAAO,GAC9E,CAAC,CAAC,SAAQ,OAAM;GAC/B,MAAM,KAAK,GAAG,aAAa,wBAAwB;GAEnD,MAAM,QAAQ,OAAO,8BAA8B,IAAI,MAAM,CAAC,EAAE,IAAI,EAAG,KAAK,CAAC;GAC7E,AAAK,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,KAAK;EACrC,CAAC;CACH,CAAC;AACH;;;;;;;ACTA,MAAM,uCAAuC;CAiB3C,OAAO,QAAQ;EAfb,uBAAuB;EACvB,qBAAqB;EACrB,wBAAwB;EACxB,yBAAyB;EACzB,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,WAAW;EACX,WAAW;EACX,kBAAkB;EAClB,UAAU;EACV,iBAAiB;EACjB,YAAY;CAGQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,aAAa;EAExD,AAD2B,SAAS,iBAAiB,0BAA0B,SAAS,GACvE,CAAC,CAAC,SAAQ,OAAM;GAC/B,MAAM,UAAU,GAAG,aAAa,eAAe;GAC/C,MAAM,QAAQ,OAAO,+BAA+B,IAAI,QAAQ,CAAC,EAAE,IAAI,OAAO;GAC9E,IAAI,IACF,OAAO,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAsB,KAAK;EAEvD,CAAC;CACH,CAAC;AACH;;;;;;;;AC3BA,MAAM,WAAW,YAA2C;CAC1D,IAAI,SAAS;CACb,QAAQ,WAAyD;EAC/D,IAAI,QAAQ;GACV,MAAM,kBAAkB,OAAO;GAC/B,OAAO,IAAI,SAAQ,QAAO;IACxB,IAAI,CAAC,iBACH,OAAO,IAAI,KAAK;IAGlB,IAAI,gBAAgB,QAAQ;KAC1B,+BAA+B;KAC/B,4BAA4B;IAC9B;IACA,OAAO,IAAI,gBAAgB,MAAM;GACnC,CAAC;EACH;;;;;EAKA,SAAS;EACT,OAAO,QAAQ,MAAM;CACvB;AACF;;;;AChBA,IAAI;AAEJ,gDAA8C;AAE9C,SAAS,wBACP,WACoG;CACpG,QAAQ,IAAI,SAAS;EACnB,IAAI,MAAM,qBAAqB,mBAAmB,YAChD,UAAU,QAAQ,OAAO,IAAI,EAAE;OAE/B,MAAM,eAAe,EAAE;CAE3B;AACF;;;;AAKA,MAAM,sBAAsB,QAAQ,2BAA2B;AAE/D,eAAe,4BAAiD,SAA+C;CAI7G,MAAM,eAAe,qBAAqB,OAAO;CACjD,MAAM,UAAU,qBAAqB,OAAO;CAE5C,MAAM;CAEN,IAAI,CAAC,OAAO,OACV,MAAM,IAAI,MAAM,+DAA+D;CAGjF,MAAM,kBAAkB,OAAO;CAE/B,IAAI,CAAC,OAAO,IAAI,GACd,OAAO,IAAI,eAAe;CAG5B,MAAM,kBAAkB;CACxB,MAAM,kBAAkB,gBAAgB;CACxC,MAAM,oBAAoB,gBAAgB;CAE1C,MAAM,eAAe;EACnB,YAAY,wBAAwB,OAAO,QAAQ,UAAU,KAAK,OAAO,OAAO,CAAC;EACjF,eAAe,wBAAwB,OAAO,QAAQ,aAAa,KAAK,OAAO,OAAO,CAAC;EACvF,GAAG;EAEH,IAAI;GAAE,GAAG,SAAS;GAAI;EAAQ;EAC9B,GAAI,mBAAmB,EAAE,+CAA+C,gBAAgB;EACxF,GAAI,qBAAqB,EAAE,wCAAwC,kBAAkB;CACvF;CAEA,cAAc;CAEd,OAAO,gBACJ,KAAK,YAAY,CAAC,CAClB,WAAW;EACV,UAAU,OAAO,YAAY,IAAI;EAKjC,YAAY,OAAO;EAEnB,+BAA+B;EAC/B,4BAA4B;EAE5B,gBAAgB,aAAY,YAAW;GACrC,UAAU,OAAO,UAAU,QAAQ,MAAM;GACzC,UAAU,OAAO,QAAQ,QAAQ,IAAI;GACrC,UAAU,OAAO,WAAW,QAAQ,OAAO;GAC3C,UAAU,OAAO,gBAAgB,QAAQ,YAAY;EACvD,CAAC;CACH,CAAC,CAAC,CACD,YAAY,CAAC,CAAC;AACnB;AAEA,SAAS,mBAAwC,SAAuC;CACtF,MAAM,QAAQ,OAAO,IAAI;CACzB,IAAI,CAAC,OACH,MAAM,IAAI,MAAM,wBAAwB;CAE1C,MAAM,gBAAgB;EACpB,SAAS;GAAE,GAAG;GAAa,GAAG;EAAQ;EACtC,YAAY;GAAE,GAAG,aAAa;GAAY,GAAG,QAAQ;EAAW;CAClE;CAEA,AAAM,MAAc,uBAAuB,aAAa;AAC1D;;;;;AAMA,eAAe,qBAA0C,SAA8D;CACrH,MAAM,kBAAkB,OAAO;AACjC;;;;;;AAOA,SAAS,qBACP,SAC8D;CAE9D,IAAI,SAAS,IAAI,SACf,OAAO,QAAQ,GAAG;CAIpB,IAAI,SAAS,MAAM,SAAS,eAAe,OACzC;CAGF,OAAO,sBAAsB,OAAO;AACtC;AAEA,eAAe,sBACb,SAC6B;CAC7B,MAAM,kBAAkB,OAAc;CAEtC,IAAI,CAAC,OAAO,wBACV,MAAM,IAAI,MAAM,gEAAgE;CAGlF,OAAO,OAAO;AAChB"}
1
+ {"version":3,"file":"create-clerk-instance-Btlj_svM.js","names":[],"sources":["../src/internal/invoke-clerk-astro-js-functions.ts","../src/internal/mount-clerk-astro-js-components.ts","../src/internal/run-once.ts","../src/internal/create-clerk-instance.ts"],"sourcesContent":["import { $clerk } from '../stores/internal';\n\n/**\n * Loop through any Astro component that has requested to invoke a function and invoke it with its respective props.\n */\nconst invokeClerkAstroJSFunctions = () => {\n const functionNames = ['handleRedirectCallback'] as const;\n\n functionNames.forEach(fnName => {\n const elementsOfCategory = document.querySelectorAll(`[data-clerk-function-id^=\"clerk-${fnName}\"]`);\n elementsOfCategory.forEach(el => {\n const id = el.getAttribute('data-clerk-function-id');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const props = window.__astro_clerk_function_props?.get(fnName)?.get(id!) ?? {};\n void $clerk.get()?.[fnName]?.(props);\n });\n });\n};\n\nexport { invokeClerkAstroJSFunctions };\n","import type { Clerk } from '@clerk/shared/types';\n\nimport { $clerk } from '../stores/internal';\nimport type { InternalUIComponentId } from '../types';\n\n/**\n * Loop through any Astro component that has requested to mount a UI component and mount it with its respective props.\n */\nconst mountAllClerkAstroJSComponents = () => {\n const mountFns = {\n 'create-organization': 'mountCreateOrganization',\n 'organization-list': 'mountOrganizationList',\n 'organization-profile': 'mountOrganizationProfile',\n 'organization-switcher': 'mountOrganizationSwitcher',\n 'user-avatar': 'mountUserAvatar',\n 'user-button': 'mountUserButton',\n 'user-profile': 'mountUserProfile',\n 'sign-in': 'mountSignIn',\n 'sign-up': 'mountSignUp',\n 'google-one-tap': 'openGoogleOneTap',\n waitlist: 'mountWaitlist',\n 'pricing-table': 'mountPricingTable',\n 'api-keys': 'mountAPIKeys',\n } as const satisfies Record<InternalUIComponentId, keyof Clerk>;\n\n Object.entries(mountFns).forEach(([category, mountFn]) => {\n const elementsOfCategory = document.querySelectorAll(`[data-clerk-id^=\"clerk-${category}\"]`);\n elementsOfCategory.forEach(el => {\n const clerkId = el.getAttribute('data-clerk-id') as string;\n const props = window.__astro_clerk_component_props?.get(category)?.get(clerkId);\n if (el) {\n $clerk.get()?.[mountFn](el as HTMLDivElement, props);\n }\n });\n });\n};\n\nexport { mountAllClerkAstroJSComponents };\n","import { invokeClerkAstroJSFunctions } from './invoke-clerk-astro-js-functions';\nimport { mountAllClerkAstroJSComponents } from './mount-clerk-astro-js-components';\nimport type { CreateClerkInstanceInternalFn } from './types';\n\n/**\n * Prevents mounting components multiple times when the `createClerkInstanceInternal` was been called twice without await first\n * This is useful as the \"integration\" may call the function twice at the same time.\n */\nconst runOnce = (onFirst: CreateClerkInstanceInternalFn) => {\n let hasRun = false;\n return (params: Parameters<CreateClerkInstanceInternalFn>[0]) => {\n if (hasRun) {\n const clerkJSInstance = window.Clerk;\n return new Promise(res => {\n if (!clerkJSInstance) {\n return res(false);\n }\n\n if (clerkJSInstance.loaded) {\n mountAllClerkAstroJSComponents();\n invokeClerkAstroJSFunctions();\n }\n return res(clerkJSInstance.loaded);\n });\n }\n /**\n * Probably html streaming has delayed the component from mounting immediately.\n * In Astro, js modules will start executing only after html streaming has ended.\n */\n hasRun = true;\n return onFirst(params);\n };\n};\n\nexport { runOnce };\n","import {\n loadClerkJSScript,\n loadClerkUIScript,\n setClerkJSLoadingErrorPackageName,\n} from '@clerk/shared/loadClerkJsScript';\nimport type { ClerkOptions } from '@clerk/shared/types';\nimport type { ClerkUIConstructor } from '@clerk/shared/ui';\nimport type { Ui } from '@clerk/ui/internal';\n\nimport { $clerkStore } from '../stores/external';\nimport { $clerk, $csrState } from '../stores/internal';\nimport type { AstroClerkCreateInstanceParams, AstroClerkUpdateOptions, InternalRuntimeOptions } from '../types';\nimport { invokeClerkAstroJSFunctions } from './invoke-clerk-astro-js-functions';\nimport { mountAllClerkAstroJSComponents } from './mount-clerk-astro-js-components';\nimport { runOnce } from './run-once';\n\nlet initOptions: ClerkOptions | undefined;\n\nsetClerkJSLoadingErrorPackageName(PACKAGE_NAME);\n\nfunction createNavigationHandler(\n windowNav: typeof window.history.pushState | typeof window.history.replaceState,\n): Exclude<ClerkOptions['routerPush'], undefined> | Exclude<ClerkOptions['routerReplace'], undefined> {\n return (to, opts) => {\n if (opts?.__internal_metadata?.navigationType === 'internal') {\n windowNav(history.state, '', to);\n } else {\n opts?.windowNavigate(to);\n }\n };\n}\n\n/**\n * Prevents firing clerk.load() multiple times\n */\nconst createClerkInstance = runOnce(createClerkInstanceInternal);\n\nasync function createClerkInstanceInternal<TUi extends Ui = Ui>(options?: AstroClerkCreateInstanceParams<TUi>) {\n // Load clerk-js and clerk-ui in parallel.\n // Both functions return early if the scripts are already loaded\n // (e.g., via middleware-injected script tags in the HTML head).\n const clerkJsChunk = getClerkJsEntryChunk(options);\n const ClerkUI = getClerkUIEntryChunk(options);\n\n await clerkJsChunk;\n\n if (!window.Clerk) {\n throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.');\n }\n\n const clerkJSInstance = window.Clerk;\n\n if (!$clerk.get()) {\n $clerk.set(clerkJSInstance);\n }\n\n const internalOptions = options as AstroClerkCreateInstanceParams<TUi> & InternalRuntimeOptions;\n const keylessClaimUrl = internalOptions.__internal_keylessClaimUrl;\n const keylessApiKeysUrl = internalOptions.__internal_keylessApiKeysUrl;\n\n const clerkOptions = {\n routerPush: createNavigationHandler(window.history.pushState.bind(window.history)),\n routerReplace: createNavigationHandler(window.history.replaceState.bind(window.history)),\n ...options,\n // Pass the clerk-ui constructor promise to clerk.load()\n ui: { ...options?.ui, ClerkUI },\n ...(keylessClaimUrl && { __internal_keyless_claimKeylessApplicationUrl: keylessClaimUrl }),\n ...(keylessApiKeysUrl && { __internal_keyless_copyInstanceKeysUrl: keylessApiKeysUrl }),\n } as unknown as ClerkOptions;\n\n initOptions = clerkOptions;\n\n return clerkJSInstance\n .load(clerkOptions)\n .then(() => {\n $csrState.setKey('isLoaded', true);\n // Notify subscribers that $clerkStore has been loaded.\n // We're doing this because nanostores uses `===` for equality\n // and just by setting the value to `window.Clerk` again won't trigger an update.\n // We notify only once as this store is for advanced users.\n $clerkStore.notify();\n\n mountAllClerkAstroJSComponents();\n invokeClerkAstroJSFunctions();\n\n clerkJSInstance.addListener(payload => {\n $csrState.setKey('client', payload.client);\n $csrState.setKey('user', payload.user);\n $csrState.setKey('session', payload.session);\n $csrState.setKey('organization', payload.organization);\n });\n })\n .catch((err: Error) => {\n console.error(err.stack || err.message || err);\n });\n}\n\nfunction updateClerkOptions<TUi extends Ui = Ui>(options: AstroClerkUpdateOptions<TUi>) {\n const clerk = $clerk.get();\n if (!clerk) {\n throw new Error('Missing clerk instance');\n }\n const updateOptions = {\n options: { ...initOptions, ...options },\n appearance: { ...initOptions?.appearance, ...options.appearance },\n } as unknown as { options: ClerkOptions; appearance?: any };\n // `__internal_updateProps` is not exposed as public API from `@clerk/types`\n void (clerk as any).__internal_updateProps(updateOptions);\n}\n\n/**\n * Loads clerk-js script if not already loaded.\n * Returns early if window.Clerk already exists.\n */\nasync function getClerkJsEntryChunk<TUi extends Ui = Ui>(options?: AstroClerkCreateInstanceParams<TUi>): Promise<void> {\n await loadClerkJSScript(options);\n}\n\n/**\n * Gets the ClerkUI constructor, either from options or by loading the script.\n * Returns early if window.__internal_ClerkUICtor already exists.\n * Returns undefined when prefetchUI={false} (no UI needed).\n */\nfunction getClerkUIEntryChunk<TUi extends Ui = Ui>(\n options?: AstroClerkCreateInstanceParams<TUi>,\n): ClerkUIConstructor | Promise<ClerkUIConstructor> | undefined {\n // Support bundled UI via ui.ClerkUI prop\n if (options?.ui?.ClerkUI) {\n return options.ui.ClerkUI;\n }\n\n // Skip CDN prefetch when ui prop is passed (bundled UI) or prefetchUI is false\n if (options?.ui || options?.prefetchUI === false) {\n return undefined;\n }\n\n return loadClerkUIEntryChunk(options);\n}\n\nasync function loadClerkUIEntryChunk<TUi extends Ui = Ui>(\n options?: AstroClerkCreateInstanceParams<TUi>,\n): Promise<ClerkUIConstructor> {\n await loadClerkUIScript(options as any);\n\n if (!window.__internal_ClerkUICtor) {\n throw new Error('Failed to download latest Clerk UI. Contact support@clerk.com.');\n }\n\n return window.__internal_ClerkUICtor;\n}\n\nexport { createClerkInstance, updateClerkOptions };\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { envField } from "astro/config";
2
2
 
3
3
  //#region package.json
4
4
  var name = "@clerk/astro";
5
- var version = "4.0.12-snapshot.v20260812183021";
5
+ var version = "4.0.12";
6
6
 
7
7
  //#endregion
8
8
  //#region src/integration/snippets.ts
@@ -1,5 +1,5 @@
1
1
  import { m as $initialState } from "../external-DHTxQaok.js";
2
- import { t as createClerkInstance } from "../create-clerk-instance-EPB2eKxD.js";
2
+ import { t as createClerkInstance } from "../create-clerk-instance-Btlj_svM.js";
3
3
  import { isTruthy } from "@clerk/shared/underscore";
4
4
  import { customAlphabet, urlAlphabet } from "nanoid";
5
5
 
@@ -159,10 +159,10 @@ const createClerkClientWithOptions = (context, options) => createClerkClient$1({
159
159
  proxyUrl: getSafeEnv(context).proxyUrl,
160
160
  domain: getSafeEnv(context).domain,
161
161
  isSatellite: getSafeEnv(context).isSatellite,
162
- userAgent: `@clerk/astro@4.0.12-snapshot.v20260812183021`,
162
+ userAgent: `@clerk/astro@4.0.12`,
163
163
  sdkMetadata: {
164
164
  name: "@clerk/astro",
165
- version: "4.0.12-snapshot.v20260812183021",
165
+ version: "4.0.12",
166
166
  environment: import.meta.env.MODE
167
167
  },
168
168
  telemetry: {
@@ -1 +1 @@
1
- {"version":3,"file":"create-clerk-instance.d.ts","sourceRoot":"","sources":["../../../src/internal/create-clerk-instance.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,KAAK,EAAkC,uBAAuB,EAA0B,MAAM,UAAU,CAAC;AAqBhH;;GAEG;AACH,QAAA,MAAM,mBAAmB,8FAAuC,CAAC;AA4DjE,iBAAS,kBAAkB,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,QAWrF;AA2CD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"create-clerk-instance.d.ts","sourceRoot":"","sources":["../../../src/internal/create-clerk-instance.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,KAAK,EAAkC,uBAAuB,EAA0B,MAAM,UAAU,CAAC;AAqBhH;;GAEG;AACH,QAAA,MAAM,mBAAmB,8FAAuC,CAAC;AA8DjE,iBAAS,kBAAkB,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,QAWrF;AA2CD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/astro",
3
- "version": "4.0.12-snapshot.v20260812183021",
3
+ "version": "4.0.12",
4
4
  "description": "Clerk SDK for Astro",
5
5
  "keywords": [
6
6
  "auth",
@@ -59,7 +59,7 @@
59
59
  "types": "./dist/webhooks.d.ts",
60
60
  "default": "./dist/webhooks.js"
61
61
  },
62
- "./types": "./dist/types/index.d.ts",
62
+ "./types": "./dist/types/types/index.d.ts",
63
63
  "./env": "./env.d.ts",
64
64
  "./components": "./components/index.ts",
65
65
  "./package.json": "./package.json"
@@ -79,12 +79,12 @@
79
79
  "dependencies": {
80
80
  "nanoid": "5.1.6",
81
81
  "nanostores": "1.0.1",
82
- "@clerk/shared": "4.29.0-snapshot.v20260812183021",
83
- "@clerk/backend": "3.16.5-snapshot.v20260812183021"
82
+ "@clerk/backend": "^3.16.5",
83
+ "@clerk/shared": "^4.29.0"
84
84
  },
85
85
  "devDependencies": {
86
86
  "astro": "^6.4.8",
87
- "@clerk/ui": "1.31.0-snapshot.v20260812183021"
87
+ "@clerk/ui": "^1.30.2"
88
88
  },
89
89
  "peerDependencies": {
90
90
  "astro": "^5.0.0 || ^6.0.0 || ^7.0.0"