diff --git a/.changeset/cold-impalas-peel.md b/.changeset/cold-impalas-peel.md new file mode 100644 index 00000000000..40f6860a6c3 --- /dev/null +++ b/.changeset/cold-impalas-peel.md @@ -0,0 +1,6 @@ +--- +'@clerk/vue': patch +'@clerk/nuxt': patch +--- + +Set default SDK Metadata. diff --git a/integration/presets/index.ts b/integration/presets/index.ts index 24fc2d58cd9..08bb8abed3d 100644 --- a/integration/presets/index.ts +++ b/integration/presets/index.ts @@ -9,6 +9,7 @@ import { nuxt } from './nuxt'; import { react } from './react'; import { reactRouter } from './react-router'; import { tanstack } from './tanstack'; +import { vue } from './vue'; export const appConfigs = { envs, @@ -21,6 +22,7 @@ export const appConfigs = { astro, tanstack, nuxt, + vue, reactRouter, secrets: { instanceKeys, diff --git a/integration/presets/nuxt.ts b/integration/presets/nuxt.ts index 8fdc9716c65..b33ed961b65 100644 --- a/integration/presets/nuxt.ts +++ b/integration/presets/nuxt.ts @@ -1,3 +1,4 @@ +import { constants } from '../constants'; import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; import { linkPackage } from './utils'; @@ -11,7 +12,7 @@ const nuxtNode = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm preview') - .addDependency('@clerk/nuxt', linkPackage('nuxt')); + .addDependency('@clerk/nuxt', constants.E2E_CLERK_VERSION || linkPackage('nuxt')); export const nuxt = { node: nuxtNode, diff --git a/integration/presets/vue.ts b/integration/presets/vue.ts index 2d6c75a3911..b8d73168403 100644 --- a/integration/presets/vue.ts +++ b/integration/presets/vue.ts @@ -1,3 +1,4 @@ +import { constants } from '../constants'; import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; import { linkPackage } from './utils'; @@ -10,7 +11,7 @@ const vite = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm preview') - .addDependency('@clerk/vue', linkPackage('vue')) + .addDependency('@clerk/vue', constants.E2E_CLERK_VERSION || linkPackage('vue')) .addDependency('@clerk/localizations', linkPackage('localizations')); export const vue = { diff --git a/integration/templates/vue-vite/src/main.ts b/integration/templates/vue-vite/src/main.ts index e24fcf6ea22..375584714b4 100644 --- a/integration/templates/vue-vite/src/main.ts +++ b/integration/templates/vue-vite/src/main.ts @@ -7,6 +7,8 @@ import router from './router'; const app = createApp(App); app.use(clerkPlugin, { publishableKey: import.meta.env.VITE_CLERK_PUBLISHABLE_KEY, + clerkJSUrl: import.meta.env.VITE_CLERK_JS_URL, + clerkJSVersion: import.meta.env.VITE_CLERK_JS_VERSION, }); app.use(router); app.mount('#app'); diff --git a/packages/nuxt/src/runtime/plugin.ts b/packages/nuxt/src/runtime/plugin.ts index e11d2c41010..d1dba23c5ea 100644 --- a/packages/nuxt/src/runtime/plugin.ts +++ b/packages/nuxt/src/runtime/plugin.ts @@ -18,6 +18,11 @@ export default defineNuxtPlugin(nuxtApp => { const runtimeConfig = useRuntimeConfig(); nuxtApp.vueApp.use(clerkPlugin, { ...(runtimeConfig.public.clerk ?? {}), + sdkMetadata: { + name: PACKAGE_NAME, + version: PACKAGE_VERSION, + environment: process.env.NODE_ENV, + }, routerPush: (to: string) => navigateTo(to), routerReplace: (to: string) => navigateTo(to, { replace: true }), initialState: initialState.value, diff --git a/packages/vue/src/plugin.ts b/packages/vue/src/plugin.ts index 99c46379b98..01356647f0e 100644 --- a/packages/vue/src/plugin.ts +++ b/packages/vue/src/plugin.ts @@ -9,6 +9,12 @@ import { ClerkInjectionKey } from './keys'; export type PluginOptions = LoadClerkJsScriptOptions; +const SDK_METADATA = { + name: PACKAGE_NAME, + version: PACKAGE_VERSION, + environment: process.env.NODE_ENV, +}; + /** * Vue plugin for integrating Clerk. * @@ -28,9 +34,9 @@ export type PluginOptions = LoadClerkJsScriptOptions; * ``` */ export const clerkPlugin: Plugin<[PluginOptions]> = { - install(app, options) { + install(app, pluginOptions) { // @ts-expect-error: Internal property for SSR frameworks like Nuxt - const { initialState } = options; + const { initialState } = pluginOptions; const loaded = shallowRef(false); const clerk = shallowRef(null); @@ -42,6 +48,11 @@ export const clerkPlugin: Plugin<[PluginOptions]> = { organization: undefined, }); + const options: LoadClerkJsScriptOptions = { + ...pluginOptions, + sdkMetadata: pluginOptions.sdkMetadata || SDK_METADATA, + }; + // We need this check for SSR apps like Nuxt as it will try to run this code on the server // and loadClerkJsScript contains browser-specific code if (inBrowser()) {