@clerk/astro 3.0.0-canary.v20251218160032 → 3.0.0-canary.v20251218195700

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.
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-canary.v20251218160032";
6
+ var version = "3.0.0-canary.v20251218195700";
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-canary.v20251218160032\",\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-canary.v20251218195700\",\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":[]}
@@ -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-canary.v20251218160032"}`,
112
+ userAgent: `${"@clerk/astro"}@${"3.0.0-canary.v20251218195700"}`,
113
113
  sdkMetadata: {
114
114
  name: "@clerk/astro",
115
- version: "3.0.0-canary.v20251218160032",
115
+ version: "3.0.0-canary.v20251218195700",
116
116
  // eslint-disable-next-line turbo/no-undeclared-env-vars
117
117
  environment: import.meta.env.MODE
118
118
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/astro",
3
- "version": "3.0.0-canary.v20251218160032",
3
+ "version": "3.0.0-canary.v20251218195700",
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-canary.v20251218160032",
82
- "@clerk/shared": "4.0.0-canary.v20251218160032"
81
+ "@clerk/shared": "4.0.0-canary.v20251218195700",
82
+ "@clerk/backend": "3.0.0-canary.v20251218195700"
83
83
  },
84
84
  "devDependencies": {
85
85
  "astro": "^5.15.3",
86
- "@clerk/ui": "1.0.0-canary.v20251218160032"
86
+ "@clerk/ui": "1.0.0-canary.v20251218195700"
87
87
  },
88
88
  "peerDependencies": {
89
89
  "astro": "^4.15.0 || ^5.0.0"