2023-05-18 12:33:46 +00:00
|
|
|
import { defineNuxtModule, addPlugin, addImports, createResolver, useLogger } from '@nuxt/kit'
|
2023-09-13 14:19:43 +00:00
|
|
|
import { defu } from 'defu'
|
2023-05-18 12:33:46 +00:00
|
|
|
import { fileURLToPath } from 'url'
|
2023-05-14 15:25:44 +00:00
|
|
|
|
2023-05-18 12:33:46 +00:00
|
|
|
const logger = useLogger('nuxt:wideangle')
|
|
|
|
|
|
|
|
export interface ModuleOptions {
|
|
|
|
siteId?: string
|
2023-09-13 14:19:43 +00:00
|
|
|
domain: string
|
|
|
|
fingerprint: boolean
|
|
|
|
supressDnt: boolean
|
|
|
|
includeParams: string[]
|
|
|
|
excludePaths: string[]
|
|
|
|
ignoreHash: boolean
|
2023-05-18 12:33:46 +00:00
|
|
|
}
|
2023-05-14 15:25:44 +00:00
|
|
|
|
|
|
|
export default defineNuxtModule<ModuleOptions>({
|
|
|
|
meta: {
|
|
|
|
name: 'wideangle',
|
2023-05-18 12:33:46 +00:00
|
|
|
configKey: 'wideangle',
|
|
|
|
compatibility: {
|
|
|
|
nuxt: '^3'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
defaults: {
|
|
|
|
domain: "stats.wideangle.co",
|
|
|
|
fingerprint: false,
|
|
|
|
supressDnt: false,
|
|
|
|
includeParams: [],
|
|
|
|
excludePaths: [],
|
|
|
|
ignoreHash: false
|
2023-05-14 15:25:44 +00:00
|
|
|
},
|
|
|
|
setup (options, nuxt) {
|
2023-05-18 12:33:46 +00:00
|
|
|
const runtimeDir = fileURLToPath(new URL('./runtime', import.meta.url))
|
2023-09-13 14:19:43 +00:00
|
|
|
|
|
|
|
nuxt.options.runtimeConfig.public.wideangle = defu(
|
|
|
|
nuxt.options.runtimeConfig.public.wideangle,
|
|
|
|
options,
|
|
|
|
)
|
|
|
|
|
2023-05-27 10:13:48 +00:00
|
|
|
nuxt.options.build.transpile.push(runtimeDir);
|
|
|
|
const resolver = createResolver(import.meta.url);
|
2023-05-14 15:25:44 +00:00
|
|
|
|
2023-05-18 12:33:46 +00:00
|
|
|
addImports({
|
|
|
|
name: "useWaaEvent",
|
|
|
|
as: "useWaaEvent",
|
|
|
|
from: resolver.resolve('./runtime/composables/useWaaEvent')
|
|
|
|
});
|
|
|
|
|
|
|
|
addPlugin({
|
|
|
|
src: resolver.resolve('./runtime/plugin.client')
|
|
|
|
});
|
|
|
|
|
2023-05-14 15:25:44 +00:00
|
|
|
}
|
|
|
|
})
|