fix(nuxt): add import protection for nuxt/* exports (#23357)

This commit is contained in:
Daniel Roe 2023-09-22 12:32:13 +02:00 committed by GitHub
parent 3b90f82f8d
commit e900190278
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 1 deletions

View File

@ -19,7 +19,7 @@ export const vueAppPatterns = (nuxt: Nuxt) => [
[/(^|node_modules\/)@vue\/composition-api/], [/(^|node_modules\/)@vue\/composition-api/],
...nuxt.options.modules.filter(m => typeof m === 'string').map((m: any) => ...nuxt.options.modules.filter(m => typeof m === 'string').map((m: any) =>
[new RegExp(`^${escapeRE(m as string)}$`), 'Importing directly from module entry points is not allowed.']), [new RegExp(`^${escapeRE(m as string)}$`), 'Importing directly from module entry points is not allowed.']),
...[/(^|node_modules\/)@nuxt\/kit/, /^nitropack/] ...[/(^|node_modules\/)@nuxt\/kit/, /(^|node_modules\/)nuxt\/(config|kit|schema)/, /^nitropack/]
.map(i => [i, 'This module cannot be imported in the Vue part of your app.']), .map(i => [i, 'This module cannot be imported in the Vue part of your app.']),
[new RegExp(escapeRE(join(nuxt.options.srcDir, (nuxt.options.dir as any).server || 'server')) + '\\/(api|routes|middleware|plugins)\\/'), 'Importing from server is not allowed in the Vue part of your app.'] [new RegExp(escapeRE(join(nuxt.options.srcDir, (nuxt.options.dir as any).server || 'server')) + '\\/(api|routes|middleware|plugins)\\/'), 'Importing from server is not allowed in the Vue part of your app.']
] as ImportProtectionOptions['patterns'] ] as ImportProtectionOptions['patterns']

View File

@ -14,6 +14,9 @@ const testsToTriggerOn = [
['/root/node_modules/@vue/composition-api', 'components/Component.vue', true], ['/root/node_modules/@vue/composition-api', 'components/Component.vue', true],
['@vue/composition-api', 'components/Component.vue', true], ['@vue/composition-api', 'components/Component.vue', true],
['@nuxt/kit', 'components/Component.vue', true], ['@nuxt/kit', 'components/Component.vue', true],
['nuxt/config', 'components/Component.vue', true],
['nuxt/kit', 'components/Component.vue', true],
['nuxt/schema', 'components/Component.vue', true],
['/root/node_modules/@nuxt/kit', 'components/Component.vue', true], ['/root/node_modules/@nuxt/kit', 'components/Component.vue', true],
['some-nuxt-module', 'components/Component.vue', true], ['some-nuxt-module', 'components/Component.vue', true],
['/root/src/server/api/test.ts', 'components/Component.vue', true], ['/root/src/server/api/test.ts', 'components/Component.vue', true],