22 addBuildPlugin ,
33 addComponentsDir ,
44 addImports ,
5- addPluginTemplate ,
5+ addPluginTemplate , addTypeTemplate ,
66 createResolver ,
77 defineNuxtModule ,
88 hasNuxtModule ,
@@ -13,7 +13,7 @@ import { setupDevToolsUI } from './devtools'
1313import { NuxtScriptBundleTransformer } from './plugins/transform'
1414import { setupPublicAssetStrategy } from './assets'
1515import { logger } from './logger'
16- import { extendTypes , installNuxtModule } from './kit'
16+ import { installNuxtModule } from './kit'
1717import { registry } from './registry'
1818import type {
1919 NuxtConfigScriptRegistry ,
@@ -24,6 +24,7 @@ import type {
2424} from './runtime/types'
2525import { NuxtScriptsCheckScripts } from './plugins/check-scripts'
2626import { templatePlugin } from './templates'
27+ import { relative , resolve } from 'pathe'
2728
2829export interface ModuleOptions {
2930 /**
@@ -171,9 +172,11 @@ export default defineNuxtModule<ModuleOptions>({
171172 const registryScriptsWithImport = registryScripts . filter ( i => ! ! i . import ?. name ) as Required < RegistryScript > [ ]
172173 const newScripts = registryScriptsWithImport . filter ( i => ! scripts . some ( r => r . import ?. name === i . import . name ) )
173174
174- // augment types to support the integrations registry
175- extendTypes ( name ! , async ( { typesPath } ) => {
176- let types = `
175+ addTypeTemplate ( {
176+ filename : 'module/nuxt-scripts.d.ts' ,
177+ getContents : ( data ) => {
178+ const typesPath = relative ( resolve ( data . nuxt ! . options . rootDir , data . nuxt ! . options . buildDir , 'module' ) , resolve ( 'runtime/types' ) )
179+ let types = `
177180declare module '#app' {
178181 interface NuxtApp {
179182 $scripts: Record<${ [ ...Object . keys ( config . globals || { } ) , ...Object . keys ( config . registry || { } ) ] . map ( k => `'${ k } '` ) . concat ( [ 'string' ] ) . join ( ' | ' ) } , (import('#nuxt-scripts/types').UseScriptContext<any>)>
@@ -184,8 +187,8 @@ declare module '#app' {
184187 }
185188}
186189`
187- if ( newScripts . length ) {
188- types = `${ types }
190+ if ( newScripts . length ) {
191+ types = `${ types }
189192declare module '#nuxt-scripts/types' {
190193 type NuxtUseScriptOptions = Omit<import('${ typesPath } ').NuxtUseScriptOptions, 'use' | 'beforeInit'>
191194 interface ScriptRegistry {
@@ -196,9 +199,13 @@ ${newScripts.map((i) => {
196199} ) . join ( '\n' ) }
197200 }
198201}`
199- return types
200- }
201- return types
202+ return types
203+ }
204+ return `${ types }
205+ export {}`
206+ } ,
207+ } , {
208+ nuxt : true ,
202209 } )
203210
204211 if ( Object . keys ( config . globals || { } ) . length || Object . keys ( config . registry || { } ) . length ) {
0 commit comments