@@ -4,6 +4,7 @@ import { useScript as _useScript } from '@unhead/vue/scripts'
44import { reactive } from 'vue'
55import type { NuxtDevToolsScriptInstance , NuxtUseScriptOptions , UseFunctionType , UseScriptContext } from '../types'
66import { onNuxtReady , useNuxtApp , useRuntimeConfig , injectHead } from '#imports'
7+ import { logger } from '../logger'
78
89function useNuxtScriptRuntimeConfig ( ) {
910 return useRuntimeConfig ( ) . public [ 'nuxt-scripts' ] as {
@@ -36,7 +37,19 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol
3637 nuxtApp . $scripts = nuxtApp . $scripts ! || reactive ( { } )
3738 const exists = ! ! ( nuxtApp . $scripts as Record < string , any > ) ?. [ id ]
3839
39- if ( options . trigger === 'onNuxtReady' || options . trigger === 'client' ) {
40+ const err = options . _validate ?.( )
41+ if ( import . meta. dev && import . meta. client && err ) {
42+ // never resolves
43+ options . trigger = new Promise ( ( ) => { } )
44+ if ( ! exists ) {
45+ let out = `Skipping script \`${ id } \` due to invalid options:\n`
46+ for ( const e of err . issues ) {
47+ out += ( ` ${ e . message } \n` )
48+ }
49+ logger . info ( out )
50+ }
51+ }
52+ else if ( options . trigger === 'onNuxtReady' || options . trigger === 'client' ) {
4053 if ( ! options . warmupStrategy ) {
4154 options . warmupStrategy = 'preload'
4255 }
@@ -51,6 +64,12 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol
5164 nuxtApp . $scripts [ id ] = undefined
5265 return _remove ( )
5366 }
67+ instance . load = async ( ) => {
68+ if ( err ) {
69+ return Promise . reject ( err )
70+ }
71+ return instance . load ( )
72+ }
5473 nuxtApp . $scripts [ id ] = instance
5574 // used for devtools integration
5675 if ( import . meta. dev && import . meta. client ) {
@@ -97,7 +116,6 @@ export function useScript<T extends Record<symbol | string, any> = Record<symbol
97116 syncScripts ( )
98117 } )
99118 payload . $script = instance
100- const err = options . _validate ?.( )
101119 if ( err ) {
102120 payload . events . push ( {
103121 type : 'status' ,
0 commit comments