Files
stats/packages/sdks/nuxt/src/module.ts
Carl-Gerhard Lindesvärd 684cba9c84 wip
2025-12-15 15:38:51 +01:00

57 lines
1.4 KiB
TypeScript

import {
addImports,
addPlugin,
addServerHandler,
createResolver,
defineNuxtModule,
} from '@nuxt/kit';
import type { ModuleOptions } from './types';
export type { ModuleOptions };
export default defineNuxtModule<ModuleOptions>({
meta: {
name: '@openpanel/nuxt',
configKey: 'openpanel',
},
defaults: {
trackScreenViews: true,
trackOutgoingLinks: true,
trackAttributes: true,
trackHashChanges: false,
disabled: false,
proxy: false, // Disabled by default
},
setup(options, nuxt) {
const resolver = createResolver(import.meta.url);
// If proxy is enabled, override apiUrl to use the proxy route
if (options.proxy) {
options.apiUrl = '/api/openpanel';
}
// Expose options to runtime config
nuxt.options.runtimeConfig.public.openpanel = options;
// Add client plugin (creates OpenPanel instance)
addPlugin({
src: resolver.resolve('./runtime/plugin.client'),
mode: 'client',
});
// Only register server proxy handler if proxy is enabled
if (options.proxy) {
addServerHandler({
route: '/api/openpanel/**',
handler: resolver.resolve('./runtime/server/api/[...openpanel]'),
});
}
// Auto-import the useOpenPanel composable
addImports({
name: 'useOpenPanel',
from: resolver.resolve('./runtime/composables/useOpenPanel'),
});
},
});