@clerk/astro 3.0.0-snapshot.v20251204143242 → 3.0.0-snapshot.v20251208202852

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,7 +1,7 @@
1
1
  ---
2
2
  import CustomProfilePageRenderer from '../CustomProfilePageRenderer.astro';
3
3
 
4
- const reorderItemsLabels = ['general', 'members'] as const;
4
+ const reorderItemsLabels = ['general', 'members', 'billing', 'apiKeys'] as const;
5
5
  type ReorderItemsLabels = (typeof reorderItemsLabels)[number];
6
6
 
7
7
  type Props<Label extends string> = {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  import CustomProfilePageRenderer from '../CustomProfilePageRenderer.astro';
3
3
 
4
- const reorderItemsLabels = ['general', 'members'] as const;
4
+ const reorderItemsLabels = ['general', 'members', 'billing', 'apiKeys'] as const;
5
5
  type ReorderItemsLabels = (typeof reorderItemsLabels)[number];
6
6
 
7
7
  type Props<Label extends string> = {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  import CustomProfilePageRenderer from '../CustomProfilePageRenderer.astro';
3
3
 
4
- const reorderItemsLabels = ['account', 'security'] as const;
4
+ const reorderItemsLabels = ['account', 'security', 'billing', 'apiKeys'] as const;
5
5
  type ReorderItemsLabels = (typeof reorderItemsLabels)[number];
6
6
 
7
7
  type Props<Label extends string> = {
@@ -89,22 +89,13 @@ function createNavigationHandler(windowNav) {
89
89
  }
90
90
  var createClerkInstance = runOnce(createClerkInstanceInternal);
91
91
  async function createClerkInstanceInternal(options) {
92
- let clerkJSInstance = window.Clerk;
93
- let clerkUiCtor;
94
- if (!clerkJSInstance) {
95
- const clerkPromise = loadClerkJsScript(options);
96
- clerkUiCtor = options?.clerkUiCtor ? Promise.resolve(options.clerkUiCtor) : loadClerkUiScript(options).then(() => {
97
- if (!window.__internal_ClerkUiCtor) {
98
- throw new Error("Failed to download latest Clerk UI. Contact support@clerk.com.");
99
- }
100
- return window.__internal_ClerkUiCtor;
101
- });
102
- await clerkPromise;
103
- if (!window.Clerk) {
104
- throw new Error("Failed to download latest ClerkJS. Contact support@clerk.com.");
105
- }
106
- clerkJSInstance = window.Clerk;
92
+ const clerkJsChunk = getClerkJsEntryChunk(options);
93
+ const clerkUiCtor = getClerkUiEntryChunk(options);
94
+ await clerkJsChunk;
95
+ if (!window.Clerk) {
96
+ throw new Error("Failed to download latest ClerkJS. Contact support@clerk.com.");
107
97
  }
98
+ const clerkJSInstance = window.Clerk;
108
99
  if (!$clerk.get()) {
109
100
  $clerk.set(clerkJSInstance);
110
101
  }
@@ -141,9 +132,22 @@ function updateClerkOptions(options) {
141
132
  };
142
133
  void clerk.__internal_updateProps(updateOptions);
143
134
  }
135
+ async function getClerkJsEntryChunk(options) {
136
+ await loadClerkJsScript(options);
137
+ }
138
+ async function getClerkUiEntryChunk(options) {
139
+ if (options?.clerkUiCtor) {
140
+ return options.clerkUiCtor;
141
+ }
142
+ await loadClerkUiScript(options);
143
+ if (!window.__internal_ClerkUiCtor) {
144
+ throw new Error("Failed to download latest Clerk UI. Contact support@clerk.com.");
145
+ }
146
+ return window.__internal_ClerkUiCtor;
147
+ }
144
148
 
145
149
  export {
146
150
  createClerkInstance,
147
151
  updateClerkOptions
148
152
  };
149
- //# sourceMappingURL=chunk-FGVEGDHA.js.map
153
+ //# sourceMappingURL=chunk-XOMRCXSL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/create-clerk-instance.ts","../src/internal/invoke-clerk-astro-js-functions.ts","../src/internal/mount-clerk-astro-js-components.ts","../src/internal/run-once.ts"],"sourcesContent":["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 } 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 clerkUiCtor = 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 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 clerkUiCtor,\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 */\nasync function getClerkUiEntryChunk<TUi extends Ui = Ui>(\n options?: AstroClerkCreateInstanceParams<TUi>,\n): Promise<ClerkUiConstructor> {\n if (options?.clerkUiCtor) {\n return options.clerkUiCtor;\n }\n\n await loadClerkUiScript(options);\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","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"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import { a as AstroClerkUpdateOptions } from '../types-B8S8zxjF.js';
2
2
  import { Ui } from '@clerk/ui/internal';
3
3
  import * as _clerk_shared_types from '@clerk/shared/types';
4
- import * as _clerk_shared_index_ChHWjn_I from '@clerk/shared/index-ChHWjn_I';
4
+ import * as _clerk_shared_index_CBjE4nAT from '@clerk/shared/index-CBjE4nAT';
5
5
  import * as nanostores from 'nanostores';
6
6
  import '@clerk/shared/ui';
7
7
 
@@ -23,17 +23,17 @@ declare const $isLoadedStore: nanostores.ReadableAtom<boolean>;
23
23
  */
24
24
  declare const $authStore: nanostores.ReadableAtom<{
25
25
  userId: string | null | undefined;
26
- user: _clerk_shared_index_ChHWjn_I.to | null | undefined;
26
+ user: _clerk_shared_index_CBjE4nAT.to | null | undefined;
27
27
  sessionId: string | null | undefined;
28
- session: _clerk_shared_index_ChHWjn_I.Ha | null | undefined;
28
+ session: _clerk_shared_index_CBjE4nAT.Ha | null | undefined;
29
29
  sessionStatus: "active" | "pending" | undefined;
30
- sessionClaims: _clerk_shared_index_ChHWjn_I.Ji | null | undefined;
31
- organization: _clerk_shared_index_ChHWjn_I.pa | null | undefined;
30
+ sessionClaims: _clerk_shared_index_CBjE4nAT.Ji | null | undefined;
31
+ organization: _clerk_shared_index_CBjE4nAT.pa | null | undefined;
32
32
  orgId: string | null | undefined;
33
33
  orgRole: string | null | undefined;
34
34
  orgSlug: string | null | undefined;
35
- orgPermissions: _clerk_shared_index_ChHWjn_I.rf<_clerk_shared_index_ChHWjn_I.ta>[] | null | undefined;
36
- actor: _clerk_shared_index_ChHWjn_I.Gi | null | undefined;
35
+ orgPermissions: _clerk_shared_index_CBjE4nAT.rf<_clerk_shared_index_CBjE4nAT.ta>[] | null | undefined;
36
+ actor: _clerk_shared_index_CBjE4nAT.Gi | null | undefined;
37
37
  factorVerificationAge: [number, number] | null;
38
38
  }>;
39
39
  /**
@@ -44,7 +44,7 @@ declare const $authStore: nanostores.ReadableAtom<{
44
44
  * @example
45
45
  * $userStore.subscribe((user) => console.log(user.id))
46
46
  */
47
- declare const $userStore: nanostores.ReadableAtom<_clerk_shared_index_ChHWjn_I.to | null | undefined>;
47
+ declare const $userStore: nanostores.ReadableAtom<_clerk_shared_index_CBjE4nAT.to | null | undefined>;
48
48
  /**
49
49
  * A client side store that is populated after clerk-js has loaded.
50
50
  * The store returns the session of the authenticated user or `null`.
@@ -62,7 +62,7 @@ declare const $sessionStore: nanostores.ReadableAtom<_clerk_shared_types.ActiveS
62
62
  * @example
63
63
  * $organizationStore.subscribe((org) => console.log(org.id))
64
64
  */
65
- declare const $organizationStore: nanostores.ReadableAtom<_clerk_shared_index_ChHWjn_I.pa | null | undefined>;
65
+ declare const $organizationStore: nanostores.ReadableAtom<_clerk_shared_index_CBjE4nAT.pa | null | undefined>;
66
66
  /**
67
67
  * A client side store that is populated after clerk-js has loaded.
68
68
  * The store returns the clerk client or `null`.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  updateClerkOptions
3
- } from "../chunk-FGVEGDHA.js";
3
+ } from "../chunk-XOMRCXSL.js";
4
4
  import {
5
5
  $authStore,
6
6
  $clerkStore,
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { envField } from "astro/config";
3
3
 
4
4
  // package.json
5
5
  var name = "@clerk/astro";
6
- var version = "3.0.0-snapshot.v20251204143242";
6
+ var version = "3.0.0-snapshot.v20251208202852";
7
7
 
8
8
  // src/integration/vite-plugin-astro-config.ts
9
9
  function vitePluginAstroConfig(astroConfig) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/integration/create-integration.ts","../package.json","../src/integration/vite-plugin-astro-config.ts","../src/index.ts"],"sourcesContent":["import type { ClerkOptions } from '@clerk/shared/types';\nimport type { AstroIntegration } from 'astro';\nimport { envField } from 'astro/config';\n\nimport { name as packageName, version as packageVersion } from '../../package.json';\nimport type { AstroClerkIntegrationParams } from '../types';\nimport { vitePluginAstroConfig } from './vite-plugin-astro-config';\n\nconst buildEnvVarFromOption = (valueToBeStored: unknown, envName: keyof InternalEnv) => {\n return valueToBeStored ? { [`import.meta.env.${envName}`]: JSON.stringify(valueToBeStored) } : {};\n};\n\ntype HotloadAstroClerkIntegrationParams = AstroClerkIntegrationParams & {\n enableEnvSchema?: boolean;\n};\n\nfunction createIntegration<Params extends HotloadAstroClerkIntegrationParams>() {\n return (params?: Params): AstroIntegration => {\n const { proxyUrl, isSatellite, domain, signInUrl, signUpUrl, enableEnvSchema = true } = params || {};\n\n // These are not provided when the \"bundled\" integration is used\n const clerkJSUrl = (params as any)?.clerkJSUrl as string | undefined;\n const clerkUiUrl = (params as any)?.clerkUiUrl as string | undefined;\n const clerkJSVariant = (params as any)?.clerkJSVariant as string | undefined;\n const clerkJSVersion = (params as any)?.clerkJSVersion as string | undefined;\n\n return {\n name: '@clerk/astro/integration',\n hooks: {\n 'astro:config:setup': ({ config, injectScript, updateConfig, logger, command }) => {\n if (['server', 'hybrid'].includes(config.output) && !config.adapter) {\n logger.error('Missing adapter, please update your Astro config to use one.');\n }\n\n if (typeof clerkJSVariant !== 'undefined' && clerkJSVariant !== 'headless' && clerkJSVariant !== '') {\n logger.error('Invalid value for clerkJSVariant. Acceptable values are `\"headless\"`, `\"\"`, and `undefined`');\n }\n\n const internalParams: ClerkOptions = {\n ...params,\n sdkMetadata: {\n version: packageVersion,\n name: packageName,\n environment: command === 'dev' ? 'development' : 'production',\n },\n };\n\n const buildImportPath = `${packageName}/internal`;\n\n // Set params as envs so backend code has access to them\n updateConfig({\n vite: {\n plugins: [vitePluginAstroConfig(config)],\n define: {\n /**\n * Convert the integration params to environment variable in order for it to be readable from the server\n */\n ...buildEnvVarFromOption(signInUrl, 'PUBLIC_CLERK_SIGN_IN_URL'),\n ...buildEnvVarFromOption(signUpUrl, 'PUBLIC_CLERK_SIGN_UP_URL'),\n ...buildEnvVarFromOption(isSatellite, 'PUBLIC_CLERK_IS_SATELLITE'),\n ...buildEnvVarFromOption(proxyUrl, 'PUBLIC_CLERK_PROXY_URL'),\n ...buildEnvVarFromOption(domain, 'PUBLIC_CLERK_DOMAIN'),\n ...buildEnvVarFromOption(clerkJSUrl, 'PUBLIC_CLERK_JS_URL'),\n ...buildEnvVarFromOption(clerkUiUrl, 'PUBLIC_CLERK_UI_URL'),\n ...buildEnvVarFromOption(clerkJSVariant, 'PUBLIC_CLERK_JS_VARIANT'),\n ...buildEnvVarFromOption(clerkJSVersion, 'PUBLIC_CLERK_JS_VERSION'),\n },\n\n ssr: {\n external: ['node:async_hooks'],\n },\n\n // We need this for top-level await\n optimizeDeps: {\n esbuildOptions: {\n target: 'es2022',\n },\n },\n build: {\n target: 'es2022',\n },\n },\n env: {\n schema: {\n ...(enableEnvSchema ? createClerkEnvSchema() : {}),\n },\n },\n });\n\n /**\n * ------------- Script Injection --------------------------\n * Below we are injecting the same script twice. `runInjectionScript` is build in such way in order to instanciate and load Clerk only once.\n * We need both scripts in order to support applications with or without UI frameworks.\n */\n\n /**\n * The above script will run before client frameworks like React hydrate.\n * This makes sure that we have initialized a Clerk instance and populated stores in order to avoid hydration issues.\n */\n injectScript(\n 'before-hydration',\n `\n ${command === 'dev' ? `console.log('${packageName}',\"Initialize Clerk: before-hydration\")` : ''}\n import { runInjectionScript } from \"${buildImportPath}\";\n await runInjectionScript(${JSON.stringify(internalParams)});`,\n );\n\n /**\n * The above script only executes if a client framework like React needs to hydrate.\n * We need to run the same script again for each page in order to initialize Clerk even if no UI framework is used in the client\n * If no UI framework is used in the client, the above script with `before-hydration` will never run\n */\n\n injectScript(\n 'page',\n `\n ${command === 'dev' ? `console.log(\"${packageName}\",\"Initialize Clerk: page\")` : ''}\n import { runInjectionScript, swapDocument } from \"${buildImportPath}\";\n\n // Taken from https://github.com/withastro/astro/blob/e10b03e88c22592fbb42d7245b65c4f486ab736d/packages/astro/src/transitions/router.ts#L39.\n // Importing it directly from astro:transitions/client breaks custom client-side routing\n // even when View Transitions is disabled.\n const transitionEnabledOnThisPage = () => {\n return !!document.querySelector('[name=\"astro-view-transitions-enabled\"]');\n }\n\n if (transitionEnabledOnThisPage()) {\n const { navigate, swapFunctions } = await import('astro:transitions/client');\n\n document.addEventListener('astro:before-swap', (e) => {\n const clerkComponents = document.querySelector('#clerk-components');\n // Keep the div element added by Clerk\n if (clerkComponents) {\n const clonedEl = clerkComponents.cloneNode(true);\n e.newDocument.body.appendChild(clonedEl);\n }\n\n e.swap = () => swapDocument(swapFunctions, e.newDocument);\n });\n\n document.addEventListener('astro:page-load', async (e) => {\n await runInjectionScript({\n ...${JSON.stringify(internalParams)},\n routerPush: navigate,\n routerReplace: (url) => navigate(url, { history: 'replace' }),\n });\n })\n } else {\n await runInjectionScript(${JSON.stringify(internalParams)});\n }`,\n );\n },\n 'astro:config:done': ({ injectTypes }) => {\n injectTypes({\n filename: 'types.d.ts',\n content: `/// <reference types=\"@clerk/astro/env\" />`,\n });\n },\n },\n };\n };\n}\n\nfunction createClerkEnvSchema() {\n return {\n PUBLIC_CLERK_PUBLISHABLE_KEY: envField.string({ context: 'client', access: 'public' }),\n PUBLIC_CLERK_SIGN_IN_URL: envField.string({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_SIGN_UP_URL: envField.string({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_IS_SATELLITE: envField.boolean({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_PROXY_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),\n PUBLIC_CLERK_DOMAIN: envField.string({ context: 'client', access: 'public', optional: true, url: true }),\n PUBLIC_CLERK_JS_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),\n PUBLIC_CLERK_UI_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),\n PUBLIC_CLERK_JS_VARIANT: envField.enum({\n context: 'client',\n access: 'public',\n optional: true,\n values: ['headless'],\n }),\n PUBLIC_CLERK_JS_VERSION: envField.string({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_TELEMETRY_DISABLED: envField.boolean({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_TELEMETRY_DEBUG: envField.boolean({ context: 'client', access: 'public', optional: true }),\n CLERK_SECRET_KEY: envField.string({ context: 'server', access: 'secret' }),\n CLERK_MACHINE_SECRET_KEY: envField.string({ context: 'server', access: 'secret', optional: true }),\n CLERK_JWT_KEY: envField.string({ context: 'server', access: 'secret', optional: true }),\n };\n}\n\nexport { createIntegration };\n","{\n \"name\": \"@clerk/astro\",\n \"version\": \"3.0.0-snapshot.v20251204143242\",\n \"description\": \"Clerk SDK for Astro\",\n \"keywords\": [\n \"auth\",\n \"authentication\",\n \"astro\",\n \"astro-integration\",\n \"clerk\",\n \"typescript\",\n \"passwordless\",\n \"astro-component\",\n \"withastro\"\n ],\n \"homepage\": \"https://clerk.com/\",\n \"bugs\": {\n \"url\": \"https://github.com/clerk/javascript/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/clerk/javascript.git\",\n \"directory\": \"packages/astro\"\n },\n \"license\": \"MIT\",\n \"author\": \"Clerk\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"imports\": {\n \"#async-local-storage\": {\n \"workerd\": \"./dist/async-local-storage.server.js\",\n \"browser\": \"./dist/async-local-storage.client.js\",\n \"node\": \"./dist/async-local-storage.server.js\",\n \"default\": \"./dist/async-local-storage.server.js\"\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"./react\": {\n \"types\": \"./dist/react/index.d.ts\",\n \"default\": \"./dist/react/index.js\"\n },\n \"./client\": {\n \"types\": \"./dist/client/index.d.ts\",\n \"default\": \"./dist/client/index.js\"\n },\n \"./internal\": {\n \"types\": \"./dist/internal/index.d.ts\",\n \"default\": \"./dist/internal/index.js\"\n },\n \"./server\": {\n \"types\": \"./dist/server/index.d.ts\",\n \"default\": \"./dist/server/index.js\"\n },\n \"./webhooks\": {\n \"types\": \"./dist/webhooks.d.ts\",\n \"default\": \"./dist/webhooks.js\"\n },\n \"./env\": \"./env.d.ts\",\n \"./components\": \"./components/index.ts\",\n \"./package.json\": \"./package.json\"\n },\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"client\",\n \"server\",\n \"internal\",\n \"components\",\n \"webhooks\",\n \"env.d.ts\",\n \"types.ts\"\n ],\n \"scripts\": {\n \"build\": \"tsup --onSuccess \\\"pnpm build:dts\\\" && pnpm copy:components\",\n \"build:dts\": \"tsc --emitDeclarationOnly --declaration\",\n \"copy:components\": \"rm -rf ./components && mkdir -p ./components/ && cp -r ./src/astro-components/* ./components/ && cp ./src/types.ts ./\",\n \"dev\": \"tsup --watch --onSuccess \\\"pnpm build:dts\\\"\",\n \"format\": \"node ../../scripts/format-package.mjs\",\n \"format:check\": \"node ../../scripts/format-package.mjs --check\",\n \"lint\": \"eslint src env.d.ts\",\n \"lint:attw\": \"attw --pack . --profile esm-only --ignore-rules internal-resolution-error\",\n \"lint:publint\": \"pnpm copy:components && publint\",\n \"publish:local\": \"pnpm yalc push --replace --sig\"\n },\n \"dependencies\": {\n \"@clerk/backend\": \"workspace:^\",\n \"@clerk/shared\": \"workspace:^\",\n \"nanoid\": \"5.1.6\",\n \"nanostores\": \"1.0.1\"\n },\n \"devDependencies\": {\n \"@clerk/ui\": \"workspace:^\",\n \"astro\": \"^5.15.3\"\n },\n \"peerDependencies\": {\n \"astro\": \"^4.15.0 || ^5.0.0\"\n },\n \"engines\": {\n \"node\": \">=20.9.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import type { AstroConfig } from 'astro';\n\ntype VitePlugin = Required<AstroConfig['vite']>['plugins'][number];\n\n/**\n * This Vite module exports a `isStaticOutput` function that is imported inside our control components\n * to determine which components to use depending on the Astro config output option.\n *\n * @param {AstroConfig} astroConfig - The Astro configuration object\n * @returns {VitePlugin} A Vite plugin\n */\nexport function vitePluginAstroConfig(astroConfig: AstroConfig): VitePlugin {\n const virtualModuleId = 'virtual:@clerk/astro/config';\n const resolvedVirtualModuleId = '\\0' + virtualModuleId;\n\n return {\n name: 'vite-plugin-astro-config',\n resolveId(id) {\n if (id === virtualModuleId) {\n return resolvedVirtualModuleId;\n }\n },\n config(config) {\n // While Astro processes <script> tags by default, our control components\n // which uses <script> tags and imports nanostores will not be processed by Astro.\n // This ensures @clerk/astro/client is properly processed and bundled,\n // resolving runtime import issues in these components.\n config.optimizeDeps?.include?.push('@clerk/astro/client');\n // Let astro vite plugin handle this.\n config.optimizeDeps?.exclude?.push('astro:transitions/client');\n },\n load(id) {\n if (id === resolvedVirtualModuleId) {\n return `\n const configOutput = '${astroConfig.output}';\n\n export function isStaticOutput(forceStatic) {\n if (configOutput === 'hybrid' && forceStatic === undefined) {\n // Default page is prerendered in hybrid mode\n return true;\n }\n\n if (forceStatic !== undefined) {\n return forceStatic;\n }\n\n return configOutput === 'static';\n }\n `;\n }\n },\n };\n}\n","import { createIntegration } from './integration/create-integration';\n\nexport default createIntegration();\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/integration/create-integration.ts","../package.json","../src/integration/vite-plugin-astro-config.ts","../src/index.ts"],"sourcesContent":["import type { ClerkOptions } from '@clerk/shared/types';\nimport type { AstroIntegration } from 'astro';\nimport { envField } from 'astro/config';\n\nimport { name as packageName, version as packageVersion } from '../../package.json';\nimport type { AstroClerkIntegrationParams } from '../types';\nimport { vitePluginAstroConfig } from './vite-plugin-astro-config';\n\nconst buildEnvVarFromOption = (valueToBeStored: unknown, envName: keyof InternalEnv) => {\n return valueToBeStored ? { [`import.meta.env.${envName}`]: JSON.stringify(valueToBeStored) } : {};\n};\n\ntype HotloadAstroClerkIntegrationParams = AstroClerkIntegrationParams & {\n enableEnvSchema?: boolean;\n};\n\nfunction createIntegration<Params extends HotloadAstroClerkIntegrationParams>() {\n return (params?: Params): AstroIntegration => {\n const { proxyUrl, isSatellite, domain, signInUrl, signUpUrl, enableEnvSchema = true } = params || {};\n\n // These are not provided when the \"bundled\" integration is used\n const clerkJSUrl = (params as any)?.clerkJSUrl as string | undefined;\n const clerkUiUrl = (params as any)?.clerkUiUrl as string | undefined;\n const clerkJSVariant = (params as any)?.clerkJSVariant as string | undefined;\n const clerkJSVersion = (params as any)?.clerkJSVersion as string | undefined;\n\n return {\n name: '@clerk/astro/integration',\n hooks: {\n 'astro:config:setup': ({ config, injectScript, updateConfig, logger, command }) => {\n if (['server', 'hybrid'].includes(config.output) && !config.adapter) {\n logger.error('Missing adapter, please update your Astro config to use one.');\n }\n\n if (typeof clerkJSVariant !== 'undefined' && clerkJSVariant !== 'headless' && clerkJSVariant !== '') {\n logger.error('Invalid value for clerkJSVariant. Acceptable values are `\"headless\"`, `\"\"`, and `undefined`');\n }\n\n const internalParams: ClerkOptions = {\n ...params,\n sdkMetadata: {\n version: packageVersion,\n name: packageName,\n environment: command === 'dev' ? 'development' : 'production',\n },\n };\n\n const buildImportPath = `${packageName}/internal`;\n\n // Set params as envs so backend code has access to them\n updateConfig({\n vite: {\n plugins: [vitePluginAstroConfig(config)],\n define: {\n /**\n * Convert the integration params to environment variable in order for it to be readable from the server\n */\n ...buildEnvVarFromOption(signInUrl, 'PUBLIC_CLERK_SIGN_IN_URL'),\n ...buildEnvVarFromOption(signUpUrl, 'PUBLIC_CLERK_SIGN_UP_URL'),\n ...buildEnvVarFromOption(isSatellite, 'PUBLIC_CLERK_IS_SATELLITE'),\n ...buildEnvVarFromOption(proxyUrl, 'PUBLIC_CLERK_PROXY_URL'),\n ...buildEnvVarFromOption(domain, 'PUBLIC_CLERK_DOMAIN'),\n ...buildEnvVarFromOption(clerkJSUrl, 'PUBLIC_CLERK_JS_URL'),\n ...buildEnvVarFromOption(clerkUiUrl, 'PUBLIC_CLERK_UI_URL'),\n ...buildEnvVarFromOption(clerkJSVariant, 'PUBLIC_CLERK_JS_VARIANT'),\n ...buildEnvVarFromOption(clerkJSVersion, 'PUBLIC_CLERK_JS_VERSION'),\n },\n\n ssr: {\n external: ['node:async_hooks'],\n },\n\n // We need this for top-level await\n optimizeDeps: {\n esbuildOptions: {\n target: 'es2022',\n },\n },\n build: {\n target: 'es2022',\n },\n },\n env: {\n schema: {\n ...(enableEnvSchema ? createClerkEnvSchema() : {}),\n },\n },\n });\n\n /**\n * ------------- Script Injection --------------------------\n * Below we are injecting the same script twice. `runInjectionScript` is build in such way in order to instanciate and load Clerk only once.\n * We need both scripts in order to support applications with or without UI frameworks.\n */\n\n /**\n * The above script will run before client frameworks like React hydrate.\n * This makes sure that we have initialized a Clerk instance and populated stores in order to avoid hydration issues.\n */\n injectScript(\n 'before-hydration',\n `\n ${command === 'dev' ? `console.log('${packageName}',\"Initialize Clerk: before-hydration\")` : ''}\n import { runInjectionScript } from \"${buildImportPath}\";\n await runInjectionScript(${JSON.stringify(internalParams)});`,\n );\n\n /**\n * The above script only executes if a client framework like React needs to hydrate.\n * We need to run the same script again for each page in order to initialize Clerk even if no UI framework is used in the client\n * If no UI framework is used in the client, the above script with `before-hydration` will never run\n */\n\n injectScript(\n 'page',\n `\n ${command === 'dev' ? `console.log(\"${packageName}\",\"Initialize Clerk: page\")` : ''}\n import { runInjectionScript, swapDocument } from \"${buildImportPath}\";\n\n // Taken from https://github.com/withastro/astro/blob/e10b03e88c22592fbb42d7245b65c4f486ab736d/packages/astro/src/transitions/router.ts#L39.\n // Importing it directly from astro:transitions/client breaks custom client-side routing\n // even when View Transitions is disabled.\n const transitionEnabledOnThisPage = () => {\n return !!document.querySelector('[name=\"astro-view-transitions-enabled\"]');\n }\n\n if (transitionEnabledOnThisPage()) {\n const { navigate, swapFunctions } = await import('astro:transitions/client');\n\n document.addEventListener('astro:before-swap', (e) => {\n const clerkComponents = document.querySelector('#clerk-components');\n // Keep the div element added by Clerk\n if (clerkComponents) {\n const clonedEl = clerkComponents.cloneNode(true);\n e.newDocument.body.appendChild(clonedEl);\n }\n\n e.swap = () => swapDocument(swapFunctions, e.newDocument);\n });\n\n document.addEventListener('astro:page-load', async (e) => {\n await runInjectionScript({\n ...${JSON.stringify(internalParams)},\n routerPush: navigate,\n routerReplace: (url) => navigate(url, { history: 'replace' }),\n });\n })\n } else {\n await runInjectionScript(${JSON.stringify(internalParams)});\n }`,\n );\n },\n 'astro:config:done': ({ injectTypes }) => {\n injectTypes({\n filename: 'types.d.ts',\n content: `/// <reference types=\"@clerk/astro/env\" />`,\n });\n },\n },\n };\n };\n}\n\nfunction createClerkEnvSchema() {\n return {\n PUBLIC_CLERK_PUBLISHABLE_KEY: envField.string({ context: 'client', access: 'public' }),\n PUBLIC_CLERK_SIGN_IN_URL: envField.string({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_SIGN_UP_URL: envField.string({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_IS_SATELLITE: envField.boolean({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_PROXY_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),\n PUBLIC_CLERK_DOMAIN: envField.string({ context: 'client', access: 'public', optional: true, url: true }),\n PUBLIC_CLERK_JS_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),\n PUBLIC_CLERK_UI_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),\n PUBLIC_CLERK_JS_VARIANT: envField.enum({\n context: 'client',\n access: 'public',\n optional: true,\n values: ['headless'],\n }),\n PUBLIC_CLERK_JS_VERSION: envField.string({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_TELEMETRY_DISABLED: envField.boolean({ context: 'client', access: 'public', optional: true }),\n PUBLIC_CLERK_TELEMETRY_DEBUG: envField.boolean({ context: 'client', access: 'public', optional: true }),\n CLERK_SECRET_KEY: envField.string({ context: 'server', access: 'secret' }),\n CLERK_MACHINE_SECRET_KEY: envField.string({ context: 'server', access: 'secret', optional: true }),\n CLERK_JWT_KEY: envField.string({ context: 'server', access: 'secret', optional: true }),\n };\n}\n\nexport { createIntegration };\n","{\n \"name\": \"@clerk/astro\",\n \"version\": \"3.0.0-snapshot.v20251208202852\",\n \"description\": \"Clerk SDK for Astro\",\n \"keywords\": [\n \"auth\",\n \"authentication\",\n \"astro\",\n \"astro-integration\",\n \"clerk\",\n \"typescript\",\n \"passwordless\",\n \"astro-component\",\n \"withastro\"\n ],\n \"homepage\": \"https://clerk.com/\",\n \"bugs\": {\n \"url\": \"https://github.com/clerk/javascript/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/clerk/javascript.git\",\n \"directory\": \"packages/astro\"\n },\n \"license\": \"MIT\",\n \"author\": \"Clerk\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"imports\": {\n \"#async-local-storage\": {\n \"workerd\": \"./dist/async-local-storage.server.js\",\n \"browser\": \"./dist/async-local-storage.client.js\",\n \"node\": \"./dist/async-local-storage.server.js\",\n \"default\": \"./dist/async-local-storage.server.js\"\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"./react\": {\n \"types\": \"./dist/react/index.d.ts\",\n \"default\": \"./dist/react/index.js\"\n },\n \"./client\": {\n \"types\": \"./dist/client/index.d.ts\",\n \"default\": \"./dist/client/index.js\"\n },\n \"./internal\": {\n \"types\": \"./dist/internal/index.d.ts\",\n \"default\": \"./dist/internal/index.js\"\n },\n \"./server\": {\n \"types\": \"./dist/server/index.d.ts\",\n \"default\": \"./dist/server/index.js\"\n },\n \"./webhooks\": {\n \"types\": \"./dist/webhooks.d.ts\",\n \"default\": \"./dist/webhooks.js\"\n },\n \"./env\": \"./env.d.ts\",\n \"./components\": \"./components/index.ts\",\n \"./package.json\": \"./package.json\"\n },\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"client\",\n \"server\",\n \"internal\",\n \"components\",\n \"webhooks\",\n \"env.d.ts\",\n \"types.ts\"\n ],\n \"scripts\": {\n \"build\": \"tsup --onSuccess \\\"pnpm build:dts\\\" && pnpm copy:components\",\n \"build:dts\": \"tsc --emitDeclarationOnly --declaration\",\n \"copy:components\": \"rm -rf ./components && mkdir -p ./components/ && cp -r ./src/astro-components/* ./components/ && cp ./src/types.ts ./\",\n \"dev\": \"tsup --watch --onSuccess \\\"pnpm build:dts\\\"\",\n \"format\": \"node ../../scripts/format-package.mjs\",\n \"format:check\": \"node ../../scripts/format-package.mjs --check\",\n \"lint\": \"eslint src env.d.ts\",\n \"lint:attw\": \"attw --pack . --profile esm-only --ignore-rules internal-resolution-error\",\n \"lint:publint\": \"pnpm copy:components && publint\",\n \"publish:local\": \"pnpm yalc push --replace --sig\"\n },\n \"dependencies\": {\n \"@clerk/backend\": \"workspace:^\",\n \"@clerk/shared\": \"workspace:^\",\n \"nanoid\": \"5.1.6\",\n \"nanostores\": \"1.0.1\"\n },\n \"devDependencies\": {\n \"@clerk/ui\": \"workspace:^\",\n \"astro\": \"^5.15.3\"\n },\n \"peerDependencies\": {\n \"astro\": \"^4.15.0 || ^5.0.0\"\n },\n \"engines\": {\n \"node\": \">=20.9.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import type { AstroConfig } from 'astro';\n\ntype VitePlugin = Required<AstroConfig['vite']>['plugins'][number];\n\n/**\n * This Vite module exports a `isStaticOutput` function that is imported inside our control components\n * to determine which components to use depending on the Astro config output option.\n *\n * @param {AstroConfig} astroConfig - The Astro configuration object\n * @returns {VitePlugin} A Vite plugin\n */\nexport function vitePluginAstroConfig(astroConfig: AstroConfig): VitePlugin {\n const virtualModuleId = 'virtual:@clerk/astro/config';\n const resolvedVirtualModuleId = '\\0' + virtualModuleId;\n\n return {\n name: 'vite-plugin-astro-config',\n resolveId(id) {\n if (id === virtualModuleId) {\n return resolvedVirtualModuleId;\n }\n },\n config(config) {\n // While Astro processes <script> tags by default, our control components\n // which uses <script> tags and imports nanostores will not be processed by Astro.\n // This ensures @clerk/astro/client is properly processed and bundled,\n // resolving runtime import issues in these components.\n config.optimizeDeps?.include?.push('@clerk/astro/client');\n // Let astro vite plugin handle this.\n config.optimizeDeps?.exclude?.push('astro:transitions/client');\n },\n load(id) {\n if (id === resolvedVirtualModuleId) {\n return `\n const configOutput = '${astroConfig.output}';\n\n export function isStaticOutput(forceStatic) {\n if (configOutput === 'hybrid' && forceStatic === undefined) {\n // Default page is prerendered in hybrid mode\n return true;\n }\n\n if (forceStatic !== undefined) {\n return forceStatic;\n }\n\n return configOutput === 'static';\n }\n `;\n }\n },\n };\n}\n","import { createIntegration } from './integration/create-integration';\n\nexport default createIntegration();\n"],"mappings":";AAEA,SAAS,gBAAgB;;;ACDvB,WAAQ;AACR,cAAW;;;ACSN,SAAS,sBAAsB,aAAsC;AAC1E,QAAM,kBAAkB;AACxB,QAAM,0BAA0B,OAAO;AAEvC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU,IAAI;AACZ,UAAI,OAAO,iBAAiB;AAC1B,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO,QAAQ;AAKb,aAAO,cAAc,SAAS,KAAK,qBAAqB;AAExD,aAAO,cAAc,SAAS,KAAK,0BAA0B;AAAA,IAC/D;AAAA,IACA,KAAK,IAAI;AACP,UAAI,OAAO,yBAAyB;AAClC,eAAO;AAAA,kCACmB,YAAY,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAe9C;AAAA,IACF;AAAA,EACF;AACF;;;AF5CA,IAAM,wBAAwB,CAAC,iBAA0B,YAA+B;AACtF,SAAO,kBAAkB,EAAE,CAAC,mBAAmB,OAAO,EAAE,GAAG,KAAK,UAAU,eAAe,EAAE,IAAI,CAAC;AAClG;AAMA,SAAS,oBAAuE;AAC9E,SAAO,CAAC,WAAsC;AAC5C,UAAM,EAAE,UAAU,aAAa,QAAQ,WAAW,WAAW,kBAAkB,KAAK,IAAI,UAAU,CAAC;AAGnG,UAAM,aAAc,QAAgB;AACpC,UAAM,aAAc,QAAgB;AACpC,UAAM,iBAAkB,QAAgB;AACxC,UAAM,iBAAkB,QAAgB;AAExC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,sBAAsB,CAAC,EAAE,QAAQ,cAAc,cAAc,QAAQ,QAAQ,MAAM;AACjF,cAAI,CAAC,UAAU,QAAQ,EAAE,SAAS,OAAO,MAAM,KAAK,CAAC,OAAO,SAAS;AACnE,mBAAO,MAAM,8DAA8D;AAAA,UAC7E;AAEA,cAAI,OAAO,mBAAmB,eAAe,mBAAmB,cAAc,mBAAmB,IAAI;AACnG,mBAAO,MAAM,6FAA6F;AAAA,UAC5G;AAEA,gBAAM,iBAA+B;AAAA,YACnC,GAAG;AAAA,YACH,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA,aAAa,YAAY,QAAQ,gBAAgB;AAAA,YACnD;AAAA,UACF;AAEA,gBAAM,kBAAkB,GAAG,IAAW;AAGtC,uBAAa;AAAA,YACX,MAAM;AAAA,cACJ,SAAS,CAAC,sBAAsB,MAAM,CAAC;AAAA,cACvC,QAAQ;AAAA;AAAA;AAAA;AAAA,gBAIN,GAAG,sBAAsB,WAAW,0BAA0B;AAAA,gBAC9D,GAAG,sBAAsB,WAAW,0BAA0B;AAAA,gBAC9D,GAAG,sBAAsB,aAAa,2BAA2B;AAAA,gBACjE,GAAG,sBAAsB,UAAU,wBAAwB;AAAA,gBAC3D,GAAG,sBAAsB,QAAQ,qBAAqB;AAAA,gBACtD,GAAG,sBAAsB,YAAY,qBAAqB;AAAA,gBAC1D,GAAG,sBAAsB,YAAY,qBAAqB;AAAA,gBAC1D,GAAG,sBAAsB,gBAAgB,yBAAyB;AAAA,gBAClE,GAAG,sBAAsB,gBAAgB,yBAAyB;AAAA,cACpE;AAAA,cAEA,KAAK;AAAA,gBACH,UAAU,CAAC,kBAAkB;AAAA,cAC/B;AAAA;AAAA,cAGA,cAAc;AAAA,gBACZ,gBAAgB;AAAA,kBACd,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,OAAO;AAAA,gBACL,QAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,KAAK;AAAA,cACH,QAAQ;AAAA,gBACN,GAAI,kBAAkB,qBAAqB,IAAI,CAAC;AAAA,cAClD;AAAA,YACF;AAAA,UACF,CAAC;AAYD;AAAA,YACE;AAAA,YACA;AAAA,cACE,YAAY,QAAQ,gBAAgB,IAAW,4CAA4C,EAAE;AAAA,kDACzD,eAAe;AAAA,uCAC1B,KAAK,UAAU,cAAc,CAAC;AAAA,UAC3D;AAQA;AAAA,YACE;AAAA,YACA;AAAA,cACE,YAAY,QAAQ,gBAAgB,IAAW,gCAAgC,EAAE;AAAA,gEAC/B,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAyBxD,KAAK,UAAU,cAAc,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yCAMZ,KAAK,UAAU,cAAc,CAAC;AAAA;AAAA,UAE7D;AAAA,QACF;AAAA,QACA,qBAAqB,CAAC,EAAE,YAAY,MAAM;AACxC,sBAAY;AAAA,YACV,UAAU;AAAA,YACV,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,uBAAuB;AAC9B,SAAO;AAAA,IACL,8BAA8B,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,SAAS,CAAC;AAAA,IACrF,0BAA0B,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,KAAK,CAAC;AAAA,IACjG,0BAA0B,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,KAAK,CAAC;AAAA,IACjG,2BAA2B,SAAS,QAAQ,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,KAAK,CAAC;AAAA,IACnG,wBAAwB,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,MAAM,KAAK,KAAK,CAAC;AAAA,IAC1G,qBAAqB,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,MAAM,KAAK,KAAK,CAAC;AAAA,IACvG,qBAAqB,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,MAAM,KAAK,KAAK,CAAC;AAAA,IACvG,qBAAqB,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,MAAM,KAAK,KAAK,CAAC;AAAA,IACvG,yBAAyB,SAAS,KAAK;AAAA,MACrC,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ,CAAC,UAAU;AAAA,IACrB,CAAC;AAAA,IACD,yBAAyB,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,KAAK,CAAC;AAAA,IAChG,iCAAiC,SAAS,QAAQ,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,KAAK,CAAC;AAAA,IACzG,8BAA8B,SAAS,QAAQ,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,KAAK,CAAC;AAAA,IACtG,kBAAkB,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,SAAS,CAAC;AAAA,IACzE,0BAA0B,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,KAAK,CAAC;AAAA,IACjG,eAAe,SAAS,OAAO,EAAE,SAAS,UAAU,QAAQ,UAAU,UAAU,KAAK,CAAC;AAAA,EACxF;AACF;;;AGxLA,IAAO,gBAAQ,kBAAkB;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createClerkInstance
3
- } from "../chunk-FGVEGDHA.js";
3
+ } from "../chunk-XOMRCXSL.js";
4
4
  import {
5
5
  $initialState
6
6
  } from "../chunk-RYZ6Q4H5.js";
@@ -109,10 +109,10 @@ var createClerkClientWithOptions = (context, options) => createClerkClient({
109
109
  proxyUrl: getSafeEnv(context).proxyUrl,
110
110
  domain: getSafeEnv(context).domain,
111
111
  isSatellite: getSafeEnv(context).isSatellite,
112
- userAgent: `${"@clerk/astro"}@${"3.0.0-snapshot.v20251204143242"}`,
112
+ userAgent: `${"@clerk/astro"}@${"3.0.0-snapshot.v20251208202852"}`,
113
113
  sdkMetadata: {
114
114
  name: "@clerk/astro",
115
- version: "3.0.0-snapshot.v20251204143242",
115
+ version: "3.0.0-snapshot.v20251208202852",
116
116
  // eslint-disable-next-line turbo/no-undeclared-env-vars
117
117
  environment: import.meta.env.MODE
118
118
  },
@@ -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,EAAE,MAAM,UAAU,CAAC;AAqBxF;;GAEG;AACH,QAAA,MAAM,mBAAmB,8FAAuC,CAAC;AAgEjE,iBAAS,kBAAkB,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,QAWrF;AAED,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,EAAE,MAAM,UAAU,CAAC;AAqBxF;;GAEG;AACH,QAAA,MAAM,mBAAmB,8FAAuC,CAAC;AAsDjE,iBAAS,kBAAkB,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,QAWrF;AA8BD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/astro",
3
- "version": "3.0.0-snapshot.v20251204143242",
3
+ "version": "3.0.0-snapshot.v20251208202852",
4
4
  "description": "Clerk SDK for Astro",
5
5
  "keywords": [
6
6
  "auth",
@@ -78,12 +78,12 @@
78
78
  "dependencies": {
79
79
  "nanoid": "5.1.6",
80
80
  "nanostores": "1.0.1",
81
- "@clerk/backend": "^3.0.0-snapshot.v20251204143242",
82
- "@clerk/shared": "^4.0.0-snapshot.v20251204143242"
81
+ "@clerk/backend": "^3.0.0-snapshot.v20251208202852",
82
+ "@clerk/shared": "^4.0.0-snapshot.v20251208202852"
83
83
  },
84
84
  "devDependencies": {
85
85
  "astro": "^5.15.3",
86
- "@clerk/ui": "^1.0.0-snapshot.v20251204143242"
86
+ "@clerk/ui": "^1.0.0-snapshot.v20251208202852"
87
87
  },
88
88
  "peerDependencies": {
89
89
  "astro": "^4.15.0 || ^5.0.0"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/create-clerk-instance.ts","../src/internal/invoke-clerk-astro-js-functions.ts","../src/internal/mount-clerk-astro-js-components.ts","../src/internal/run-once.ts"],"sourcesContent":["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 } 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 let clerkJSInstance = window.Clerk;\n let clerkUiCtor: Promise<ClerkUiConstructor> | undefined;\n\n if (!clerkJSInstance) {\n // Load both clerk-js and clerk-ui in parallel\n const clerkPromise = loadClerkJsScript(options);\n clerkUiCtor = options?.clerkUiCtor\n ? Promise.resolve(options.clerkUiCtor)\n : loadClerkUiScript(options).then(() => {\n if (!window.__internal_ClerkUiCtor) {\n throw new Error('Failed to download latest Clerk UI. Contact support@clerk.com.');\n }\n // After the check, TypeScript knows it's defined\n return window.__internal_ClerkUiCtor;\n });\n\n await clerkPromise;\n\n if (!window.Clerk) {\n throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.');\n }\n clerkJSInstance = window.Clerk;\n }\n\n if (!$clerk.get()) {\n $clerk.set(clerkJSInstance);\n }\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 clerkUiCtor,\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\nexport { createClerkInstance, updateClerkOptions };\n","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"],"mappings":"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","names":[]}