@clerk/astro 3.0.0-snapshot.v20251215212157 → 3.0.0-snapshot.v20251217162523

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
  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_6lIp5q8s from '@clerk/shared/index-6lIp5q8s';
4
+ import * as _clerk_shared_index_Bb1t7kYz from '@clerk/shared/index-Bb1t7kYz';
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_6lIp5q8s.to | null | undefined;
26
+ user: _clerk_shared_index_Bb1t7kYz.to | null | undefined;
27
27
  sessionId: string | null | undefined;
28
- session: _clerk_shared_index_6lIp5q8s.Ha | null | undefined;
28
+ session: _clerk_shared_index_Bb1t7kYz.Ha | null | undefined;
29
29
  sessionStatus: "active" | "pending" | undefined;
30
- sessionClaims: _clerk_shared_index_6lIp5q8s.Ji | null | undefined;
31
- organization: _clerk_shared_index_6lIp5q8s.pa | null | undefined;
30
+ sessionClaims: _clerk_shared_index_Bb1t7kYz.Ji | null | undefined;
31
+ organization: _clerk_shared_index_Bb1t7kYz.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_6lIp5q8s.rf<_clerk_shared_index_6lIp5q8s.ta>[] | null | undefined;
36
- actor: _clerk_shared_index_6lIp5q8s.Gi | null | undefined;
35
+ orgPermissions: _clerk_shared_index_Bb1t7kYz.rf<_clerk_shared_index_Bb1t7kYz.ta>[] | null | undefined;
36
+ actor: _clerk_shared_index_Bb1t7kYz.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_6lIp5q8s.to | null | undefined>;
47
+ declare const $userStore: nanostores.ReadableAtom<_clerk_shared_index_Bb1t7kYz.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_6lIp5q8s.pa | null | undefined>;
65
+ declare const $organizationStore: nanostores.ReadableAtom<_clerk_shared_index_Bb1t7kYz.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`.
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.v20251215212157";
6
+ var version = "3.0.0-snapshot.v20251217162523";
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.v20251215212157\",\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.v20251217162523\",\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":[]}
@@ -3,7 +3,6 @@ import { LoadedClerk, __experimental_CheckoutButtonProps, __experimental_PlanDet
3
3
  export { SignInButtonProps, SignUpButtonProps, __experimental_CheckoutButtonProps, __experimental_PlanDetailsButtonProps, __experimental_SubscriptionDetailsButtonProps } from '@clerk/shared/types';
4
4
  import React, { PropsWithChildren } from 'react';
5
5
  import '../types-B8S8zxjF.js';
6
- export { UNSAFE_PortalProvider } from '@clerk/shared/react';
7
6
  import '@clerk/shared/ui';
8
7
  import '@clerk/ui/internal';
9
8
 
@@ -579,9 +579,6 @@ var AuthenticateWithRedirectCallback = withClerk(
579
579
  },
580
580
  "AuthenticateWithRedirectCallback"
581
581
  );
582
-
583
- // src/react/index.ts
584
- import { UNSAFE_PortalProvider } from "@clerk/shared/react";
585
582
  export {
586
583
  AuthenticateWithRedirectCallback,
587
584
  ClerkLoaded,
@@ -599,7 +596,6 @@ export {
599
596
  SignUpButton,
600
597
  SignedIn,
601
598
  SignedOut,
602
- UNSAFE_PortalProvider,
603
599
  UserButton,
604
600
  UserProfile,
605
601
  Waitlist,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/CheckoutButton.tsx","../../src/react/utils.tsx","../../src/react/PlanDetailsButton.tsx","../../src/react/SignInButton.tsx","../../src/react/SignOutButton.tsx","../../src/react/SignUpButton.tsx","../../src/react/SubscriptionDetailsButton.tsx","../../src/react/uiComponents.tsx","../../src/react/controlComponents.tsx","../../src/react/hooks.ts","../../src/react/index.ts"],"sourcesContent":["import type { __experimental_CheckoutButtonProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from './utils';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk } from './utils';\n\nexport type { __experimental_CheckoutButtonProps as CheckoutButtonProps };\n\nexport const CheckoutButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<__experimental_CheckoutButtonProps>>) => {\n const {\n planId,\n planPeriod,\n for: _for,\n onSubscriptionComplete,\n newSubscriptionRedirectUrl,\n checkoutProps,\n ...rest\n } = props;\n\n // Note: Auth checks are moved to runtime since Astro React components\n // don't have access to auth context at render time like Vue/React apps do\n\n children = normalizeWithDefaultValue(children, 'Checkout');\n const child = assertSingleChild(children)('CheckoutButton');\n\n const clickHandler = () => {\n if (!clerk) {\n return;\n }\n\n return clerk.__internal_openCheckout({\n planId,\n planPeriod,\n for: _for,\n onSubscriptionComplete,\n newSubscriptionRedirectUrl,\n ...checkoutProps,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = e => {\n if (child && typeof child === 'object' && 'props' in child) {\n void safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'CheckoutButton',\n);\n","import type { LoadedClerk } from '@clerk/shared/types';\nimport { computed, type Store, type StoreValue } from 'nanostores';\nimport React from 'react';\n\nimport { $clerk, $csrState } from '../stores/internal';\n\n/**\n * This implementation of `useStore` is an alternative solution to the hook exported by nanostores\n * Reference: https://github.com/nanostores/react/blob/main/index.js\n */\nfunction useStore<T extends Store, SV extends StoreValue<T>>(store: T): SV {\n const get = store.get.bind(store);\n return React.useSyncExternalStore(store.listen, get, get);\n}\n\nexport const withClerk = <P extends { clerk: LoadedClerk | undefined | null }>(\n Component: React.ComponentType<P>,\n displayName?: string,\n) => {\n displayName = displayName || Component.displayName || Component.name || 'Component';\n Component.displayName = displayName;\n const HOC = (props: Omit<P, 'clerk'>) => {\n const clerk = useStore(\n computed([$csrState, $clerk], (state, clerk) => {\n return state.isLoaded ? clerk : null;\n }),\n );\n\n return (\n <Component\n /**\n * Force the remount of the component if clerk is not loaded yet.\n * This is needed in order to avoid hydration errors in controlComponents.\n */\n key={clerk ? 'a' : 'b'}\n {...(props as P)}\n clerk={clerk}\n />\n );\n };\n HOC.displayName = `withClerk(${displayName})`;\n return HOC;\n};\n\nexport type WithClerkProp<T = unknown> = T & {\n clerk: LoadedClerk | undefined | null;\n};\n\n// TODO-SHARED: Duplicate from @clerk/react\nexport const assertSingleChild =\n (children: React.ReactNode) =>\n (\n name:\n | 'SignInButton'\n | 'SignUpButton'\n | 'SignOutButton'\n | 'SignInWithMetamaskButton'\n | 'SubscriptionDetailsButton'\n | 'CheckoutButton'\n | 'PlanDetailsButton',\n ) => {\n try {\n return React.Children.only(children);\n } catch {\n return `You've passed multiple children components to <${name}/>. You can only pass a single child component or text.`;\n }\n };\n\n// TODO-SHARED: Duplicate from @clerk/react\nexport const normalizeWithDefaultValue = (children: React.ReactNode | undefined, defaultText: string) => {\n if (!children) {\n children = defaultText;\n }\n if (typeof children === 'string') {\n children = <button type='button'>{children}</button>;\n }\n return children;\n};\n\n// TODO-SHARED: Duplicate from @clerk/react\nexport const safeExecute =\n (cb: unknown) =>\n (...args: any) => {\n if (cb && typeof cb === 'function') {\n return cb(...args);\n }\n };\n","import type { __experimental_PlanDetailsButtonProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from './utils';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk } from './utils';\n\nexport type { __experimental_PlanDetailsButtonProps as PlanDetailsButtonProps };\n\nexport const PlanDetailsButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<__experimental_PlanDetailsButtonProps>>) => {\n const { plan, planId, initialPlanPeriod, planDetailsProps, ...rest } = props;\n\n children = normalizeWithDefaultValue(children, 'Plan details');\n const child = assertSingleChild(children)('PlanDetailsButton');\n\n const clickHandler = () => {\n if (!clerk) {\n return;\n }\n\n return clerk.__internal_openPlanDetails({\n plan,\n planId,\n initialPlanPeriod,\n ...planDetailsProps,\n } as __experimental_PlanDetailsButtonProps);\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = e => {\n if (child && typeof child === 'object' && 'props' in child) {\n void safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'PlanDetailsButton',\n);\n","import type { SignInButtonProps, SignInProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk, type WithClerkProp } from './utils';\n\nexport type { SignInButtonProps };\n\nexport const SignInButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<SignInButtonProps>>) => {\n const { signUpFallbackRedirectUrl, forceRedirectUrl, fallbackRedirectUrl, signUpForceRedirectUrl, mode, ...rest } =\n props;\n children = normalizeWithDefaultValue(children, 'Sign in');\n const child = assertSingleChild(children)('SignInButton');\n\n const clickHandler = () => {\n const opts: SignInProps = {\n forceRedirectUrl,\n fallbackRedirectUrl,\n signUpFallbackRedirectUrl,\n signUpForceRedirectUrl,\n };\n\n if (!clerk) {\n return;\n }\n\n if (mode === 'modal') {\n return clerk.openSignIn({ ...opts, appearance: props.appearance });\n }\n return clerk.redirectToSignIn({\n ...opts,\n signInFallbackRedirectUrl: fallbackRedirectUrl,\n signInForceRedirectUrl: forceRedirectUrl,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n if (child && typeof child === 'object' && 'props' in child) {\n await safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'SignInButton',\n);\n","import type { SignOutOptions } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from './utils';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk } from './utils';\n\nexport type SignOutButtonProps = SignOutOptions & {\n children?: React.ReactNode;\n};\n\nexport const SignOutButton = withClerk(\n ({ clerk, children, ...props }: React.PropsWithChildren<WithClerkProp<SignOutButtonProps>>) => {\n const { redirectUrl = '/', sessionId, ...rest } = props;\n\n children = normalizeWithDefaultValue(children, 'Sign out');\n const child = assertSingleChild(children)('SignOutButton');\n\n const clickHandler = () => clerk?.signOut({ redirectUrl, sessionId });\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n if (child && typeof child === 'object' && 'props' in child) {\n await safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'SignOutButton',\n);\n","import type { SignUpButtonProps, SignUpProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk, type WithClerkProp } from './utils';\n\nexport type { SignUpButtonProps };\n\nexport const SignUpButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<SignUpButtonProps>>) => {\n const { fallbackRedirectUrl, forceRedirectUrl, signInFallbackRedirectUrl, signInForceRedirectUrl, mode, ...rest } =\n props;\n\n children = normalizeWithDefaultValue(children, 'Sign up');\n const child = assertSingleChild(children)('SignUpButton');\n\n const clickHandler = () => {\n const opts: SignUpProps = {\n fallbackRedirectUrl,\n forceRedirectUrl,\n signInFallbackRedirectUrl,\n signInForceRedirectUrl,\n };\n\n if (!clerk) {\n return;\n }\n\n if (mode === 'modal') {\n return clerk.openSignUp({\n ...opts,\n appearance: props.appearance,\n unsafeMetadata: props.unsafeMetadata,\n });\n }\n\n return clerk.redirectToSignUp({\n ...opts,\n signUpFallbackRedirectUrl: fallbackRedirectUrl,\n signUpForceRedirectUrl: forceRedirectUrl,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n if (child && typeof child === 'object' && 'props' in child) {\n await safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'SignUpButton',\n);\n","import type { __experimental_SubscriptionDetailsButtonProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from './utils';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk } from './utils';\n\nexport type { __experimental_SubscriptionDetailsButtonProps as SubscriptionDetailsButtonProps };\n\nexport const SubscriptionDetailsButton = withClerk(\n ({\n clerk,\n children,\n ...props\n }: WithClerkProp<React.PropsWithChildren<__experimental_SubscriptionDetailsButtonProps>>) => {\n const { for: _for, subscriptionDetailsProps, onSubscriptionCancel, ...rest } = props;\n children = normalizeWithDefaultValue(children, 'Subscription details');\n const child = assertSingleChild(children)('SubscriptionDetailsButton');\n\n // Note: Auth checks are moved to runtime since Astro React components\n // don't have access to auth context at render time like Vue/React apps do\n\n const clickHandler = () => {\n if (!clerk) {\n return;\n }\n\n return clerk.__internal_openSubscriptionDetails({\n for: _for,\n onSubscriptionCancel,\n ...subscriptionDetailsProps,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = e => {\n if (child && typeof child === 'object' && 'props' in child) {\n void safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'SubscriptionDetailsButton',\n);\n","import type {\n GoogleOneTapProps,\n OrganizationListProps,\n OrganizationProfileProps,\n OrganizationSwitcherProps,\n PricingTableProps,\n SignInProps,\n SignUpProps,\n UserButtonProps,\n UserProfileProps,\n WaitlistProps,\n} from '@clerk/shared/types';\nimport React from 'react';\n\nimport { withClerk, type WithClerkProp } from './utils';\n\nexport interface OpenProps {\n open: ((props: any) => void) | undefined;\n close: (() => void) | undefined;\n props?: any;\n}\n\nexport interface MountProps {\n mount: ((node: HTMLDivElement, props: any) => void) | undefined;\n unmount: ((node: HTMLDivElement) => void) | undefined;\n updateProps?: (props: any) => void;\n props?: any;\n // TODO: Support custom pages\n // customPagesPortals?: any[];\n}\n\nconst isMountProps = (props: any): props is MountProps => {\n return 'mount' in props;\n};\n\nconst isOpenProps = (props: any): props is OpenProps => {\n return 'open' in props;\n};\n\nclass Portal extends React.PureComponent<MountProps | OpenProps> {\n private portalRef = React.createRef<HTMLDivElement>();\n\n componentDidUpdate(prevProps: Readonly<MountProps>) {\n if (!isMountProps(prevProps) || !isMountProps(this.props)) {\n return;\n }\n if (\n prevProps.props.appearance !== this.props.props.appearance ||\n prevProps.props?.customPages?.length !== this.props.props?.customPages?.length\n ) {\n this.props.updateProps?.({\n node: this.portalRef.current,\n props: this.props.props,\n });\n }\n }\n\n componentDidMount() {\n if (this.portalRef.current) {\n if (isMountProps(this.props)) {\n this.props.mount?.(this.portalRef.current, this.props.props);\n }\n\n if (isOpenProps(this.props)) {\n this.props.open?.(this.props.props);\n }\n }\n }\n\n componentWillUnmount() {\n if (this.portalRef.current) {\n if (isMountProps(this.props)) {\n this.props.unmount?.(this.portalRef.current);\n }\n if (isOpenProps(this.props)) {\n this.props.close?.();\n }\n }\n }\n\n render() {\n return (\n <>\n <div ref={this.portalRef} />\n {/*TODO: Support custom pages*/}\n {/*{isMountProps(this.props) &&*/}\n {/* this.props?.customPagesPortals?.map((portal, index) => createElement(portal, { key: index }))}*/}\n </>\n );\n }\n}\n\nexport const SignIn = withClerk(({ clerk, ...props }: WithClerkProp<SignInProps>) => {\n return (\n <Portal\n mount={clerk?.mountSignIn}\n unmount={clerk?.unmountSignIn}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'SignIn');\n\nexport const SignUp = withClerk(({ clerk, ...props }: WithClerkProp<SignUpProps>) => {\n return (\n <Portal\n mount={clerk?.mountSignUp}\n unmount={clerk?.unmountSignUp}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'SignUp');\n\nexport const UserButton = withClerk(({ clerk, ...props }: WithClerkProp<UserButtonProps>) => {\n return (\n <Portal\n mount={clerk?.mountUserButton}\n unmount={clerk?.unmountUserButton}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'UserButton');\n\nexport const UserProfile = withClerk(({ clerk, ...props }: WithClerkProp<UserProfileProps>) => {\n return (\n <Portal\n mount={clerk?.mountUserProfile}\n unmount={clerk?.unmountUserProfile}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'UserProfile');\n\nexport const OrganizationProfile = withClerk(({ clerk, ...props }: WithClerkProp<OrganizationProfileProps>) => {\n return (\n <Portal\n mount={clerk?.mountOrganizationProfile}\n unmount={clerk?.unmountOrganizationProfile}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'OrganizationProfile');\n\nexport const OrganizationSwitcher = withClerk(({ clerk, ...props }: WithClerkProp<OrganizationSwitcherProps>) => {\n return (\n <Portal\n mount={clerk?.mountOrganizationSwitcher}\n unmount={clerk?.unmountOrganizationSwitcher}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'OrganizationSwitcher');\n\nexport const OrganizationList = withClerk(({ clerk, ...props }: WithClerkProp<OrganizationListProps>) => {\n return (\n <Portal\n mount={clerk?.mountOrganizationList}\n unmount={clerk?.unmountOrganizationList}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'OrganizationList');\n\nexport const GoogleOneTap = withClerk(({ clerk, ...props }: WithClerkProp<GoogleOneTapProps>) => {\n return (\n <Portal\n open={clerk?.openGoogleOneTap}\n close={clerk?.closeGoogleOneTap}\n props={props}\n />\n );\n}, 'GoogleOneTap');\n\nexport const Waitlist = withClerk(({ clerk, ...props }: WithClerkProp<WaitlistProps>) => {\n return (\n <Portal\n mount={clerk?.mountWaitlist}\n unmount={clerk?.unmountWaitlist}\n props={props}\n />\n );\n}, 'Waitlist');\n\nexport const PricingTable = withClerk(({ clerk, ...props }: WithClerkProp<PricingTableProps>) => {\n return (\n <Portal\n mount={clerk?.mountPricingTable}\n unmount={clerk?.unmountPricingTable}\n props={props}\n />\n );\n}, 'PricingTable');\n","import type { HandleOAuthCallbackParams, PendingSessionOptions } from '@clerk/shared/types';\nimport { computed } from 'nanostores';\nimport type { PropsWithChildren } from 'react';\nimport React, { useEffect, useState } from 'react';\n\nimport { $csrState } from '../stores/internal';\nimport type { ProtectProps as _ProtectProps } from '../types';\nimport { useAuth } from './hooks';\nimport type { WithClerkProp } from './utils';\nimport { withClerk } from './utils';\n\nexport function SignedOut({ children, treatPendingAsSignedOut }: PropsWithChildren<PendingSessionOptions>) {\n const { userId } = useAuth({ treatPendingAsSignedOut });\n\n if (userId) {\n return null;\n }\n return children;\n}\n\nexport function SignedIn({ children, treatPendingAsSignedOut }: PropsWithChildren<PendingSessionOptions>) {\n const { userId } = useAuth({ treatPendingAsSignedOut });\n if (!userId) {\n return null;\n }\n return children;\n}\n\nconst $isLoadingClerkStore = computed($csrState, state => state.isLoaded);\n\n/*\n * It is not guaranteed that hydration will occur before clerk-js has loaded. If Clerk is loaded by the time a React component hydrates,\n * then we **hydration error** will be thrown for any control component that renders conditionally.\n *\n * This hook ensures that `isLoaded` will always be false on the first render,\n * preventing potential hydration errors and race conditions.\n */\nconst useSafeIsLoaded = () => {\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n const unsub = $isLoadingClerkStore.subscribe(() => {\n setIsLoaded(true);\n });\n\n return () => unsub();\n }, []);\n\n return isLoaded;\n};\n\nexport const ClerkLoaded = ({ children }: React.PropsWithChildren): JSX.Element | null => {\n const isLoaded = useSafeIsLoaded();\n\n if (!isLoaded) {\n return null;\n }\n\n return <>{children}</>;\n};\n\nexport const ClerkLoading = ({ children }: React.PropsWithChildren): JSX.Element | null => {\n const isLoaded = useSafeIsLoaded();\n\n if (isLoaded) {\n return null;\n }\n\n return <>{children}</>;\n};\n\nexport type ProtectProps = React.PropsWithChildren<\n _ProtectProps & { fallback?: React.ReactNode } & PendingSessionOptions\n>;\n\n/**\n * Use `<Protect/>` in order to prevent unauthenticated or unauthorized users from accessing the children passed to the component.\n *\n * Examples:\n * ```\n * <Protect permission=\"a_permission_key\" />\n * <Protect role=\"a_role_key\" />\n * <Protect condition={(has) => has({permission:\"a_permission_key\"})} />\n * <Protect condition={(has) => has({role:\"a_role_key\"})} />\n * <Protect fallback={<p>Unauthorized</p>} />\n * ```\n */\nexport const Protect = ({ children, fallback, treatPendingAsSignedOut, ...restAuthorizedParams }: ProtectProps) => {\n const { isLoaded, has, userId } = useAuth({ treatPendingAsSignedOut });\n\n /**\n * Avoid flickering children or fallback while clerk is loading sessionId or userId\n */\n if (!isLoaded) {\n return null;\n }\n\n /**\n * Fallback to UI provided by user or `null` if authorization checks failed\n */\n const unauthorized = <>{fallback ?? null}</>;\n\n const authorized = <>{children}</>;\n\n if (!userId) {\n return unauthorized;\n }\n\n /**\n * Check against the results of `has` called inside the callback\n */\n if (typeof restAuthorizedParams.condition === 'function') {\n if (restAuthorizedParams.condition(has)) {\n return authorized;\n }\n return unauthorized;\n }\n\n if (\n restAuthorizedParams.role ||\n restAuthorizedParams.permission ||\n restAuthorizedParams.feature ||\n restAuthorizedParams.plan\n ) {\n if (has?.(restAuthorizedParams)) {\n return authorized;\n }\n return unauthorized;\n }\n\n /**\n * If neither of the authorization params are passed behave as the `<SignedIn/>`.\n * If fallback is present render that instead of rendering nothing.\n */\n return authorized;\n};\n\n/**\n * Use `<AuthenticateWithRedirectCallback/>` to complete a custom OAuth flow.\n */\nexport const AuthenticateWithRedirectCallback = withClerk(\n ({ clerk, ...handleRedirectCallbackParams }: WithClerkProp<HandleOAuthCallbackParams>) => {\n React.useEffect(() => {\n void clerk?.handleRedirectCallback(handleRedirectCallbackParams);\n }, []);\n\n return null;\n },\n 'AuthenticateWithRedirectCallback',\n);\n","import { createCheckAuthorization, resolveAuthState } from '@clerk/shared/authorization';\nimport { deriveState } from '@clerk/shared/deriveState';\nimport type {\n CheckAuthorizationWithCustomPermissions,\n Clerk,\n ClientResource,\n GetToken,\n JwtPayload,\n PendingSessionOptions,\n SignOut,\n UseAuthReturn,\n} from '@clerk/shared/types';\nimport type { Store, StoreValue } from 'nanostores';\nimport { useCallback, useSyncExternalStore } from 'react';\n\nimport { authAsyncStorage } from '#async-local-storage';\n\nimport { $authStore } from '../stores/external';\nimport { $clerk, $csrState } from '../stores/internal';\n\n/**\n * @internal\n */\nconst clerkLoaded = () => {\n return new Promise<Clerk>(resolve => {\n $csrState.subscribe(({ isLoaded }) => {\n if (isLoaded) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n resolve($clerk.get()!);\n }\n });\n });\n};\n\n/**\n * @internal\n */\nconst createGetToken = () => {\n return async (options: any) => {\n const clerk = await clerkLoaded();\n if (!clerk.session) {\n return null;\n }\n return clerk.session.getToken(options);\n };\n};\n\n/**\n * @internal\n */\nconst createSignOut = () => {\n return async (...args: any) => {\n const clerk = await clerkLoaded();\n return clerk.signOut(...args);\n };\n};\n\ntype UseAuth = (options?: PendingSessionOptions) => UseAuthReturn;\n\n/**\n * Returns the current auth state, the user and session ids and the `getToken`\n * that can be used to retrieve the given template or the default Clerk token.\n *\n * Until Clerk loads, `isLoaded` will be set to `false`.\n * Once Clerk loads, `isLoaded` will be set to `true`, and you can\n * safely access the `userId` and `sessionId` variables.\n *\n * For projects using a server, you can have immediate access to this data during SSR.\n *\n * @example\n * function Hello() {\n * const { isSignedIn, sessionId, userId } = useAuth();\n * if(isSignedIn) {\n * return null;\n * }\n * console.log(sessionId, userId)\n * return <div>...</div>\n * }\n *\n * This page will be fully rendered during SSR:\n * @example\n * export HelloPage = () => {\n * const { isSignedIn, sessionId, userId } = useAuth();\n * console.log(isSignedIn, sessionId, userId)\n * return <div>...</div>\n * }\n */\nexport const useAuth: UseAuth = ({ treatPendingAsSignedOut } = {}) => {\n const authContext = useAuthStore();\n\n const getToken: GetToken = useCallback(createGetToken(), []);\n const signOut: SignOut = useCallback(createSignOut(), []);\n\n const { userId, orgId, orgRole, orgPermissions, factorVerificationAge, sessionClaims } = authContext;\n\n const has = useCallback(\n (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => {\n return createCheckAuthorization({\n userId,\n orgId,\n orgRole,\n orgPermissions,\n factorVerificationAge,\n features: ((sessionClaims as JwtPayload | undefined)?.fea as string) || '',\n plans: ((sessionClaims as JwtPayload | undefined)?.pla as string) || '',\n })(params);\n },\n [userId, orgId, orgRole, orgPermissions, factorVerificationAge, sessionClaims],\n );\n\n const payload = resolveAuthState({\n authObject: {\n ...authContext,\n getToken,\n signOut,\n has,\n },\n options: {\n treatPendingAsSignedOut,\n },\n });\n\n if (!payload) {\n throw new Error('Invalid state. Feel free to submit a bug or reach out to support');\n }\n\n return payload;\n};\n\nfunction useStore<T extends Store, SV extends StoreValue<T>>(store: T, getServerSnapshot?: () => SV): SV {\n const get = store.get.bind(store);\n return useSyncExternalStore<SV>(store.listen, get, getServerSnapshot || get);\n}\n\n/**\n * This implementation of `useStore` is an alternative solution to the hook exported by nanostores\n * Reference: https://github.com/nanostores/react/blob/main/index.js\n */\nfunction useAuthStore() {\n const get = $authStore.get.bind($authStore);\n return useStore($authStore, () => {\n // Per react docs\n /**\n * optional getServerSnapshot:\n * A function that returns the initial snapshot of the data in the store.\n * It will be used only during server rendering and during hydration of server-rendered content on the client.\n * The server snapshot must be the same between the client and the server, and is usually serialized and passed from the server to the client.\n * If you omit this argument, rendering the component on the server will throw an error.\n */\n\n /**\n * When this runs on the server we want to grab the content from the async-local-storage.\n */\n if (typeof window === 'undefined') {\n return deriveState(\n false,\n {\n user: null,\n session: null,\n client: null as unknown as ClientResource,\n organization: null,\n },\n authAsyncStorage.getStore() as any,\n );\n }\n\n /**\n * When this runs on the client, during hydration, we want to grab the content the store.\n */\n return get();\n });\n}\n","import { CheckoutButton, type CheckoutButtonProps } from './CheckoutButton';\nimport { PlanDetailsButton, type PlanDetailsButtonProps } from './PlanDetailsButton';\nimport { SignInButton, type SignInButtonProps } from './SignInButton';\nimport { SignOutButton, type SignOutButtonProps } from './SignOutButton';\nimport { SignUpButton, type SignUpButtonProps } from './SignUpButton';\nimport { SubscriptionDetailsButton, type SubscriptionDetailsButtonProps } from './SubscriptionDetailsButton';\n\nexport * from './uiComponents';\nexport * from './controlComponents';\nexport * from './hooks';\nexport { UNSAFE_PortalProvider } from '@clerk/shared/react';\nexport { SignInButton, SignOutButton, SignUpButton };\nexport {\n SubscriptionDetailsButton as __experimental_SubscriptionDetailsButton,\n CheckoutButton as __experimental_CheckoutButton,\n PlanDetailsButton as __experimental_PlanDetailsButton,\n};\n\nexport type {\n SignInButtonProps,\n SignOutButtonProps,\n SignUpButtonProps,\n SubscriptionDetailsButtonProps as __experimental_SubscriptionDetailsButtonProps,\n CheckoutButtonProps as __experimental_CheckoutButtonProps,\n PlanDetailsButtonProps as __experimental_PlanDetailsButtonProps,\n};\n"],"mappings":"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","names":["React","clerk","React","React","React","React","React","React","React","React","React","React","React","React","jsx","React","computed","React","useStore","Fragment","jsx","computed","React"]}
1
+ {"version":3,"sources":["../../src/react/CheckoutButton.tsx","../../src/react/utils.tsx","../../src/react/PlanDetailsButton.tsx","../../src/react/SignInButton.tsx","../../src/react/SignOutButton.tsx","../../src/react/SignUpButton.tsx","../../src/react/SubscriptionDetailsButton.tsx","../../src/react/uiComponents.tsx","../../src/react/controlComponents.tsx","../../src/react/hooks.ts"],"sourcesContent":["import type { __experimental_CheckoutButtonProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from './utils';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk } from './utils';\n\nexport type { __experimental_CheckoutButtonProps as CheckoutButtonProps };\n\nexport const CheckoutButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<__experimental_CheckoutButtonProps>>) => {\n const {\n planId,\n planPeriod,\n for: _for,\n onSubscriptionComplete,\n newSubscriptionRedirectUrl,\n checkoutProps,\n ...rest\n } = props;\n\n // Note: Auth checks are moved to runtime since Astro React components\n // don't have access to auth context at render time like Vue/React apps do\n\n children = normalizeWithDefaultValue(children, 'Checkout');\n const child = assertSingleChild(children)('CheckoutButton');\n\n const clickHandler = () => {\n if (!clerk) {\n return;\n }\n\n return clerk.__internal_openCheckout({\n planId,\n planPeriod,\n for: _for,\n onSubscriptionComplete,\n newSubscriptionRedirectUrl,\n ...checkoutProps,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = e => {\n if (child && typeof child === 'object' && 'props' in child) {\n void safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'CheckoutButton',\n);\n","import type { LoadedClerk } from '@clerk/shared/types';\nimport { computed, type Store, type StoreValue } from 'nanostores';\nimport React from 'react';\n\nimport { $clerk, $csrState } from '../stores/internal';\n\n/**\n * This implementation of `useStore` is an alternative solution to the hook exported by nanostores\n * Reference: https://github.com/nanostores/react/blob/main/index.js\n */\nfunction useStore<T extends Store, SV extends StoreValue<T>>(store: T): SV {\n const get = store.get.bind(store);\n return React.useSyncExternalStore(store.listen, get, get);\n}\n\nexport const withClerk = <P extends { clerk: LoadedClerk | undefined | null }>(\n Component: React.ComponentType<P>,\n displayName?: string,\n) => {\n displayName = displayName || Component.displayName || Component.name || 'Component';\n Component.displayName = displayName;\n const HOC = (props: Omit<P, 'clerk'>) => {\n const clerk = useStore(\n computed([$csrState, $clerk], (state, clerk) => {\n return state.isLoaded ? clerk : null;\n }),\n );\n\n return (\n <Component\n /**\n * Force the remount of the component if clerk is not loaded yet.\n * This is needed in order to avoid hydration errors in controlComponents.\n */\n key={clerk ? 'a' : 'b'}\n {...(props as P)}\n clerk={clerk}\n />\n );\n };\n HOC.displayName = `withClerk(${displayName})`;\n return HOC;\n};\n\nexport type WithClerkProp<T = unknown> = T & {\n clerk: LoadedClerk | undefined | null;\n};\n\n// TODO-SHARED: Duplicate from @clerk/react\nexport const assertSingleChild =\n (children: React.ReactNode) =>\n (\n name:\n | 'SignInButton'\n | 'SignUpButton'\n | 'SignOutButton'\n | 'SignInWithMetamaskButton'\n | 'SubscriptionDetailsButton'\n | 'CheckoutButton'\n | 'PlanDetailsButton',\n ) => {\n try {\n return React.Children.only(children);\n } catch {\n return `You've passed multiple children components to <${name}/>. You can only pass a single child component or text.`;\n }\n };\n\n// TODO-SHARED: Duplicate from @clerk/react\nexport const normalizeWithDefaultValue = (children: React.ReactNode | undefined, defaultText: string) => {\n if (!children) {\n children = defaultText;\n }\n if (typeof children === 'string') {\n children = <button type='button'>{children}</button>;\n }\n return children;\n};\n\n// TODO-SHARED: Duplicate from @clerk/react\nexport const safeExecute =\n (cb: unknown) =>\n (...args: any) => {\n if (cb && typeof cb === 'function') {\n return cb(...args);\n }\n };\n","import type { __experimental_PlanDetailsButtonProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from './utils';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk } from './utils';\n\nexport type { __experimental_PlanDetailsButtonProps as PlanDetailsButtonProps };\n\nexport const PlanDetailsButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<__experimental_PlanDetailsButtonProps>>) => {\n const { plan, planId, initialPlanPeriod, planDetailsProps, ...rest } = props;\n\n children = normalizeWithDefaultValue(children, 'Plan details');\n const child = assertSingleChild(children)('PlanDetailsButton');\n\n const clickHandler = () => {\n if (!clerk) {\n return;\n }\n\n return clerk.__internal_openPlanDetails({\n plan,\n planId,\n initialPlanPeriod,\n ...planDetailsProps,\n } as __experimental_PlanDetailsButtonProps);\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = e => {\n if (child && typeof child === 'object' && 'props' in child) {\n void safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'PlanDetailsButton',\n);\n","import type { SignInButtonProps, SignInProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk, type WithClerkProp } from './utils';\n\nexport type { SignInButtonProps };\n\nexport const SignInButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<SignInButtonProps>>) => {\n const { signUpFallbackRedirectUrl, forceRedirectUrl, fallbackRedirectUrl, signUpForceRedirectUrl, mode, ...rest } =\n props;\n children = normalizeWithDefaultValue(children, 'Sign in');\n const child = assertSingleChild(children)('SignInButton');\n\n const clickHandler = () => {\n const opts: SignInProps = {\n forceRedirectUrl,\n fallbackRedirectUrl,\n signUpFallbackRedirectUrl,\n signUpForceRedirectUrl,\n };\n\n if (!clerk) {\n return;\n }\n\n if (mode === 'modal') {\n return clerk.openSignIn({ ...opts, appearance: props.appearance });\n }\n return clerk.redirectToSignIn({\n ...opts,\n signInFallbackRedirectUrl: fallbackRedirectUrl,\n signInForceRedirectUrl: forceRedirectUrl,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n if (child && typeof child === 'object' && 'props' in child) {\n await safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'SignInButton',\n);\n","import type { SignOutOptions } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from './utils';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk } from './utils';\n\nexport type SignOutButtonProps = SignOutOptions & {\n children?: React.ReactNode;\n};\n\nexport const SignOutButton = withClerk(\n ({ clerk, children, ...props }: React.PropsWithChildren<WithClerkProp<SignOutButtonProps>>) => {\n const { redirectUrl = '/', sessionId, ...rest } = props;\n\n children = normalizeWithDefaultValue(children, 'Sign out');\n const child = assertSingleChild(children)('SignOutButton');\n\n const clickHandler = () => clerk?.signOut({ redirectUrl, sessionId });\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n if (child && typeof child === 'object' && 'props' in child) {\n await safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'SignOutButton',\n);\n","import type { SignUpButtonProps, SignUpProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk, type WithClerkProp } from './utils';\n\nexport type { SignUpButtonProps };\n\nexport const SignUpButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<SignUpButtonProps>>) => {\n const { fallbackRedirectUrl, forceRedirectUrl, signInFallbackRedirectUrl, signInForceRedirectUrl, mode, ...rest } =\n props;\n\n children = normalizeWithDefaultValue(children, 'Sign up');\n const child = assertSingleChild(children)('SignUpButton');\n\n const clickHandler = () => {\n const opts: SignUpProps = {\n fallbackRedirectUrl,\n forceRedirectUrl,\n signInFallbackRedirectUrl,\n signInForceRedirectUrl,\n };\n\n if (!clerk) {\n return;\n }\n\n if (mode === 'modal') {\n return clerk.openSignUp({\n ...opts,\n appearance: props.appearance,\n unsafeMetadata: props.unsafeMetadata,\n });\n }\n\n return clerk.redirectToSignUp({\n ...opts,\n signUpFallbackRedirectUrl: fallbackRedirectUrl,\n signUpForceRedirectUrl: forceRedirectUrl,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n if (child && typeof child === 'object' && 'props' in child) {\n await safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'SignUpButton',\n);\n","import type { __experimental_SubscriptionDetailsButtonProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from './utils';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute, withClerk } from './utils';\n\nexport type { __experimental_SubscriptionDetailsButtonProps as SubscriptionDetailsButtonProps };\n\nexport const SubscriptionDetailsButton = withClerk(\n ({\n clerk,\n children,\n ...props\n }: WithClerkProp<React.PropsWithChildren<__experimental_SubscriptionDetailsButtonProps>>) => {\n const { for: _for, subscriptionDetailsProps, onSubscriptionCancel, ...rest } = props;\n children = normalizeWithDefaultValue(children, 'Subscription details');\n const child = assertSingleChild(children)('SubscriptionDetailsButton');\n\n // Note: Auth checks are moved to runtime since Astro React components\n // don't have access to auth context at render time like Vue/React apps do\n\n const clickHandler = () => {\n if (!clerk) {\n return;\n }\n\n return clerk.__internal_openSubscriptionDetails({\n for: _for,\n onSubscriptionCancel,\n ...subscriptionDetailsProps,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = e => {\n if (child && typeof child === 'object' && 'props' in child) {\n void safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n 'SubscriptionDetailsButton',\n);\n","import type {\n GoogleOneTapProps,\n OrganizationListProps,\n OrganizationProfileProps,\n OrganizationSwitcherProps,\n PricingTableProps,\n SignInProps,\n SignUpProps,\n UserButtonProps,\n UserProfileProps,\n WaitlistProps,\n} from '@clerk/shared/types';\nimport React from 'react';\n\nimport { withClerk, type WithClerkProp } from './utils';\n\nexport interface OpenProps {\n open: ((props: any) => void) | undefined;\n close: (() => void) | undefined;\n props?: any;\n}\n\nexport interface MountProps {\n mount: ((node: HTMLDivElement, props: any) => void) | undefined;\n unmount: ((node: HTMLDivElement) => void) | undefined;\n updateProps?: (props: any) => void;\n props?: any;\n // TODO: Support custom pages\n // customPagesPortals?: any[];\n}\n\nconst isMountProps = (props: any): props is MountProps => {\n return 'mount' in props;\n};\n\nconst isOpenProps = (props: any): props is OpenProps => {\n return 'open' in props;\n};\n\nclass Portal extends React.PureComponent<MountProps | OpenProps> {\n private portalRef = React.createRef<HTMLDivElement>();\n\n componentDidUpdate(prevProps: Readonly<MountProps>) {\n if (!isMountProps(prevProps) || !isMountProps(this.props)) {\n return;\n }\n if (\n prevProps.props.appearance !== this.props.props.appearance ||\n prevProps.props?.customPages?.length !== this.props.props?.customPages?.length\n ) {\n this.props.updateProps?.({\n node: this.portalRef.current,\n props: this.props.props,\n });\n }\n }\n\n componentDidMount() {\n if (this.portalRef.current) {\n if (isMountProps(this.props)) {\n this.props.mount?.(this.portalRef.current, this.props.props);\n }\n\n if (isOpenProps(this.props)) {\n this.props.open?.(this.props.props);\n }\n }\n }\n\n componentWillUnmount() {\n if (this.portalRef.current) {\n if (isMountProps(this.props)) {\n this.props.unmount?.(this.portalRef.current);\n }\n if (isOpenProps(this.props)) {\n this.props.close?.();\n }\n }\n }\n\n render() {\n return (\n <>\n <div ref={this.portalRef} />\n {/*TODO: Support custom pages*/}\n {/*{isMountProps(this.props) &&*/}\n {/* this.props?.customPagesPortals?.map((portal, index) => createElement(portal, { key: index }))}*/}\n </>\n );\n }\n}\n\nexport const SignIn = withClerk(({ clerk, ...props }: WithClerkProp<SignInProps>) => {\n return (\n <Portal\n mount={clerk?.mountSignIn}\n unmount={clerk?.unmountSignIn}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'SignIn');\n\nexport const SignUp = withClerk(({ clerk, ...props }: WithClerkProp<SignUpProps>) => {\n return (\n <Portal\n mount={clerk?.mountSignUp}\n unmount={clerk?.unmountSignUp}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'SignUp');\n\nexport const UserButton = withClerk(({ clerk, ...props }: WithClerkProp<UserButtonProps>) => {\n return (\n <Portal\n mount={clerk?.mountUserButton}\n unmount={clerk?.unmountUserButton}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'UserButton');\n\nexport const UserProfile = withClerk(({ clerk, ...props }: WithClerkProp<UserProfileProps>) => {\n return (\n <Portal\n mount={clerk?.mountUserProfile}\n unmount={clerk?.unmountUserProfile}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'UserProfile');\n\nexport const OrganizationProfile = withClerk(({ clerk, ...props }: WithClerkProp<OrganizationProfileProps>) => {\n return (\n <Portal\n mount={clerk?.mountOrganizationProfile}\n unmount={clerk?.unmountOrganizationProfile}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'OrganizationProfile');\n\nexport const OrganizationSwitcher = withClerk(({ clerk, ...props }: WithClerkProp<OrganizationSwitcherProps>) => {\n return (\n <Portal\n mount={clerk?.mountOrganizationSwitcher}\n unmount={clerk?.unmountOrganizationSwitcher}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'OrganizationSwitcher');\n\nexport const OrganizationList = withClerk(({ clerk, ...props }: WithClerkProp<OrganizationListProps>) => {\n return (\n <Portal\n mount={clerk?.mountOrganizationList}\n unmount={clerk?.unmountOrganizationList}\n updateProps={(clerk as any)?.__internal_updateProps}\n props={props}\n />\n );\n}, 'OrganizationList');\n\nexport const GoogleOneTap = withClerk(({ clerk, ...props }: WithClerkProp<GoogleOneTapProps>) => {\n return (\n <Portal\n open={clerk?.openGoogleOneTap}\n close={clerk?.closeGoogleOneTap}\n props={props}\n />\n );\n}, 'GoogleOneTap');\n\nexport const Waitlist = withClerk(({ clerk, ...props }: WithClerkProp<WaitlistProps>) => {\n return (\n <Portal\n mount={clerk?.mountWaitlist}\n unmount={clerk?.unmountWaitlist}\n props={props}\n />\n );\n}, 'Waitlist');\n\nexport const PricingTable = withClerk(({ clerk, ...props }: WithClerkProp<PricingTableProps>) => {\n return (\n <Portal\n mount={clerk?.mountPricingTable}\n unmount={clerk?.unmountPricingTable}\n props={props}\n />\n );\n}, 'PricingTable');\n","import type { HandleOAuthCallbackParams, PendingSessionOptions } from '@clerk/shared/types';\nimport { computed } from 'nanostores';\nimport type { PropsWithChildren } from 'react';\nimport React, { useEffect, useState } from 'react';\n\nimport { $csrState } from '../stores/internal';\nimport type { ProtectProps as _ProtectProps } from '../types';\nimport { useAuth } from './hooks';\nimport type { WithClerkProp } from './utils';\nimport { withClerk } from './utils';\n\nexport function SignedOut({ children, treatPendingAsSignedOut }: PropsWithChildren<PendingSessionOptions>) {\n const { userId } = useAuth({ treatPendingAsSignedOut });\n\n if (userId) {\n return null;\n }\n return children;\n}\n\nexport function SignedIn({ children, treatPendingAsSignedOut }: PropsWithChildren<PendingSessionOptions>) {\n const { userId } = useAuth({ treatPendingAsSignedOut });\n if (!userId) {\n return null;\n }\n return children;\n}\n\nconst $isLoadingClerkStore = computed($csrState, state => state.isLoaded);\n\n/*\n * It is not guaranteed that hydration will occur before clerk-js has loaded. If Clerk is loaded by the time a React component hydrates,\n * then we **hydration error** will be thrown for any control component that renders conditionally.\n *\n * This hook ensures that `isLoaded` will always be false on the first render,\n * preventing potential hydration errors and race conditions.\n */\nconst useSafeIsLoaded = () => {\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n const unsub = $isLoadingClerkStore.subscribe(() => {\n setIsLoaded(true);\n });\n\n return () => unsub();\n }, []);\n\n return isLoaded;\n};\n\nexport const ClerkLoaded = ({ children }: React.PropsWithChildren): JSX.Element | null => {\n const isLoaded = useSafeIsLoaded();\n\n if (!isLoaded) {\n return null;\n }\n\n return <>{children}</>;\n};\n\nexport const ClerkLoading = ({ children }: React.PropsWithChildren): JSX.Element | null => {\n const isLoaded = useSafeIsLoaded();\n\n if (isLoaded) {\n return null;\n }\n\n return <>{children}</>;\n};\n\nexport type ProtectProps = React.PropsWithChildren<\n _ProtectProps & { fallback?: React.ReactNode } & PendingSessionOptions\n>;\n\n/**\n * Use `<Protect/>` in order to prevent unauthenticated or unauthorized users from accessing the children passed to the component.\n *\n * Examples:\n * ```\n * <Protect permission=\"a_permission_key\" />\n * <Protect role=\"a_role_key\" />\n * <Protect condition={(has) => has({permission:\"a_permission_key\"})} />\n * <Protect condition={(has) => has({role:\"a_role_key\"})} />\n * <Protect fallback={<p>Unauthorized</p>} />\n * ```\n */\nexport const Protect = ({ children, fallback, treatPendingAsSignedOut, ...restAuthorizedParams }: ProtectProps) => {\n const { isLoaded, has, userId } = useAuth({ treatPendingAsSignedOut });\n\n /**\n * Avoid flickering children or fallback while clerk is loading sessionId or userId\n */\n if (!isLoaded) {\n return null;\n }\n\n /**\n * Fallback to UI provided by user or `null` if authorization checks failed\n */\n const unauthorized = <>{fallback ?? null}</>;\n\n const authorized = <>{children}</>;\n\n if (!userId) {\n return unauthorized;\n }\n\n /**\n * Check against the results of `has` called inside the callback\n */\n if (typeof restAuthorizedParams.condition === 'function') {\n if (restAuthorizedParams.condition(has)) {\n return authorized;\n }\n return unauthorized;\n }\n\n if (\n restAuthorizedParams.role ||\n restAuthorizedParams.permission ||\n restAuthorizedParams.feature ||\n restAuthorizedParams.plan\n ) {\n if (has?.(restAuthorizedParams)) {\n return authorized;\n }\n return unauthorized;\n }\n\n /**\n * If neither of the authorization params are passed behave as the `<SignedIn/>`.\n * If fallback is present render that instead of rendering nothing.\n */\n return authorized;\n};\n\n/**\n * Use `<AuthenticateWithRedirectCallback/>` to complete a custom OAuth flow.\n */\nexport const AuthenticateWithRedirectCallback = withClerk(\n ({ clerk, ...handleRedirectCallbackParams }: WithClerkProp<HandleOAuthCallbackParams>) => {\n React.useEffect(() => {\n void clerk?.handleRedirectCallback(handleRedirectCallbackParams);\n }, []);\n\n return null;\n },\n 'AuthenticateWithRedirectCallback',\n);\n","import { createCheckAuthorization, resolveAuthState } from '@clerk/shared/authorization';\nimport { deriveState } from '@clerk/shared/deriveState';\nimport type {\n CheckAuthorizationWithCustomPermissions,\n Clerk,\n ClientResource,\n GetToken,\n JwtPayload,\n PendingSessionOptions,\n SignOut,\n UseAuthReturn,\n} from '@clerk/shared/types';\nimport type { Store, StoreValue } from 'nanostores';\nimport { useCallback, useSyncExternalStore } from 'react';\n\nimport { authAsyncStorage } from '#async-local-storage';\n\nimport { $authStore } from '../stores/external';\nimport { $clerk, $csrState } from '../stores/internal';\n\n/**\n * @internal\n */\nconst clerkLoaded = () => {\n return new Promise<Clerk>(resolve => {\n $csrState.subscribe(({ isLoaded }) => {\n if (isLoaded) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n resolve($clerk.get()!);\n }\n });\n });\n};\n\n/**\n * @internal\n */\nconst createGetToken = () => {\n return async (options: any) => {\n const clerk = await clerkLoaded();\n if (!clerk.session) {\n return null;\n }\n return clerk.session.getToken(options);\n };\n};\n\n/**\n * @internal\n */\nconst createSignOut = () => {\n return async (...args: any) => {\n const clerk = await clerkLoaded();\n return clerk.signOut(...args);\n };\n};\n\ntype UseAuth = (options?: PendingSessionOptions) => UseAuthReturn;\n\n/**\n * Returns the current auth state, the user and session ids and the `getToken`\n * that can be used to retrieve the given template or the default Clerk token.\n *\n * Until Clerk loads, `isLoaded` will be set to `false`.\n * Once Clerk loads, `isLoaded` will be set to `true`, and you can\n * safely access the `userId` and `sessionId` variables.\n *\n * For projects using a server, you can have immediate access to this data during SSR.\n *\n * @example\n * function Hello() {\n * const { isSignedIn, sessionId, userId } = useAuth();\n * if(isSignedIn) {\n * return null;\n * }\n * console.log(sessionId, userId)\n * return <div>...</div>\n * }\n *\n * This page will be fully rendered during SSR:\n * @example\n * export HelloPage = () => {\n * const { isSignedIn, sessionId, userId } = useAuth();\n * console.log(isSignedIn, sessionId, userId)\n * return <div>...</div>\n * }\n */\nexport const useAuth: UseAuth = ({ treatPendingAsSignedOut } = {}) => {\n const authContext = useAuthStore();\n\n const getToken: GetToken = useCallback(createGetToken(), []);\n const signOut: SignOut = useCallback(createSignOut(), []);\n\n const { userId, orgId, orgRole, orgPermissions, factorVerificationAge, sessionClaims } = authContext;\n\n const has = useCallback(\n (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => {\n return createCheckAuthorization({\n userId,\n orgId,\n orgRole,\n orgPermissions,\n factorVerificationAge,\n features: ((sessionClaims as JwtPayload | undefined)?.fea as string) || '',\n plans: ((sessionClaims as JwtPayload | undefined)?.pla as string) || '',\n })(params);\n },\n [userId, orgId, orgRole, orgPermissions, factorVerificationAge, sessionClaims],\n );\n\n const payload = resolveAuthState({\n authObject: {\n ...authContext,\n getToken,\n signOut,\n has,\n },\n options: {\n treatPendingAsSignedOut,\n },\n });\n\n if (!payload) {\n throw new Error('Invalid state. Feel free to submit a bug or reach out to support');\n }\n\n return payload;\n};\n\nfunction useStore<T extends Store, SV extends StoreValue<T>>(store: T, getServerSnapshot?: () => SV): SV {\n const get = store.get.bind(store);\n return useSyncExternalStore<SV>(store.listen, get, getServerSnapshot || get);\n}\n\n/**\n * This implementation of `useStore` is an alternative solution to the hook exported by nanostores\n * Reference: https://github.com/nanostores/react/blob/main/index.js\n */\nfunction useAuthStore() {\n const get = $authStore.get.bind($authStore);\n return useStore($authStore, () => {\n // Per react docs\n /**\n * optional getServerSnapshot:\n * A function that returns the initial snapshot of the data in the store.\n * It will be used only during server rendering and during hydration of server-rendered content on the client.\n * The server snapshot must be the same between the client and the server, and is usually serialized and passed from the server to the client.\n * If you omit this argument, rendering the component on the server will throw an error.\n */\n\n /**\n * When this runs on the server we want to grab the content from the async-local-storage.\n */\n if (typeof window === 'undefined') {\n return deriveState(\n false,\n {\n user: null,\n session: null,\n client: null as unknown as ClientResource,\n organization: null,\n },\n authAsyncStorage.getStore() as any,\n );\n }\n\n /**\n * When this runs on the client, during hydration, we want to grab the content the store.\n */\n return get();\n });\n}\n"],"mappings":"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","names":["React","clerk","React","React","React","React","React","React","React","React","React","React","React","React","jsx","React","computed","React","useStore","Fragment","jsx","computed","React"]}
@@ -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.v20251215212157"}`,
112
+ userAgent: `${"@clerk/astro"}@${"3.0.0-snapshot.v20251217162523"}`,
113
113
  sdkMetadata: {
114
114
  name: "@clerk/astro",
115
- version: "3.0.0-snapshot.v20251215212157",
115
+ version: "3.0.0-snapshot.v20251217162523",
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":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,KAAK,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAE7G,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AACrD,OAAO,EACL,yBAAyB,IAAI,wCAAwC,EACrE,cAAc,IAAI,6BAA6B,EAC/C,iBAAiB,IAAI,gCAAgC,GACtD,CAAC;AAEF,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,8BAA8B,IAAI,6CAA6C,EAC/E,mBAAmB,IAAI,kCAAkC,EACzD,sBAAsB,IAAI,qCAAqC,GAChE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,KAAK,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAE7G,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AACrD,OAAO,EACL,yBAAyB,IAAI,wCAAwC,EACrE,cAAc,IAAI,6BAA6B,EAC/C,iBAAiB,IAAI,gCAAgC,GACtD,CAAC;AAEF,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,8BAA8B,IAAI,6CAA6C,EAC/E,mBAAmB,IAAI,kCAAkC,EACzD,sBAAsB,IAAI,qCAAqC,GAChE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/astro",
3
- "version": "3.0.0-snapshot.v20251215212157",
3
+ "version": "3.0.0-snapshot.v20251217162523",
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.v20251215212157",
82
- "@clerk/shared": "4.0.0-snapshot.v20251215212157"
81
+ "@clerk/backend": "3.0.0-snapshot.v20251217162523",
82
+ "@clerk/shared": "4.0.0-snapshot.v20251217162523"
83
83
  },
84
84
  "devDependencies": {
85
85
  "astro": "^5.15.3",
86
- "@clerk/ui": "1.0.0-snapshot.v20251215212157"
86
+ "@clerk/ui": "1.0.0-snapshot.v20251217162523"
87
87
  },
88
88
  "peerDependencies": {
89
89
  "astro": "^4.15.0 || ^5.0.0"