diff --git a/src/defaults.ts b/src/defaults.ts index 8deb7b8b..78bbbb87 100644 --- a/src/defaults.ts +++ b/src/defaults.ts @@ -14,7 +14,8 @@ export const getDefaultUiConfig = (colors?: string[], csp?: { nonce?: string }) }, [...(colors || []), 'neutral' as any]), icons, csp: csp || { - nonce: '' + nonce: '', + scriptNonce: '' } }) @@ -27,7 +28,8 @@ export const defaultOptions = { transitions: true }, csp: { - nonce: '' + nonce: '', + scriptNonce: '' } } diff --git a/src/module.ts b/src/module.ts index e49b5162..bcf718dd 100644 --- a/src/module.ts +++ b/src/module.ts @@ -39,6 +39,12 @@ export interface ModuleOptions { * @defaultValue `` */ nonce?: string + + /** + * Enable nonce for inline scripts. + * @defaultValue `` + */ + scriptNonce?: string } /** diff --git a/src/runtime/plugins/colors.ts b/src/runtime/plugins/colors.ts index 0de2b390..9a2297df 100644 --- a/src/runtime/plugins/colors.ts +++ b/src/runtime/plugins/colors.ts @@ -24,7 +24,7 @@ export default defineNuxtPlugin(() => { const nuxtApp = useNuxtApp() const nonce = computed(() => appConfig.ui?.csp?.nonce) - + const scriptNonce = computed(() => appConfig.ui?.csp?.scriptNonce) const root = computed(() => { const { neutral, ...colors } = appConfig.ui.colors @@ -65,7 +65,7 @@ export default defineNuxtPlugin(() => { headData.script = [{ innerHTML: 'document.head.removeChild(document.querySelector(\'[data-nuxt-ui-colors]\'))', - ...(nonce.value ? { nonce: nonce.value } : {}) + ...(scriptNonce.value ? { nonce: scriptNonce.value } : {}) }] } diff --git a/src/templates.ts b/src/templates.ts index c319ce76..111501ed 100644 --- a/src/templates.ts +++ b/src/templates.ts @@ -167,6 +167,7 @@ type AppConfigUI = { tv?: typeof defaultConfig csp?: { nonce?: string + scriptNonce?: string } } & TVConfig