From a0ea790b80848d6249fa227c23fff40ccae1c9b7 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 11 Sep 2024 11:02:22 +0100 Subject: [PATCH] fix(kit,nuxt,schema)!: remove other support for nuxt2/bridge (#28936) --- packages/kit/src/components.ts | 4 ---- packages/kit/src/imports.ts | 7 ------- packages/kit/src/layout.ts | 2 +- packages/kit/src/module/define.ts | 4 ++-- packages/kit/src/template.ts | 5 ----- .../nuxt/src/core/plugins/plugin-metadata.ts | 17 ----------------- packages/nuxt/test/plugin-metadata.test.ts | 1 - packages/schema/src/types/compatibility.ts | 10 +--------- test/fixtures/basic/plugins/invalid-plugin-2.ts | 3 --- 9 files changed, 4 insertions(+), 49 deletions(-) delete mode 100644 test/fixtures/basic/plugins/invalid-plugin-2.ts diff --git a/packages/kit/src/components.ts b/packages/kit/src/components.ts index 1257a6a68d..669d6ce410 100644 --- a/packages/kit/src/components.ts +++ b/packages/kit/src/components.ts @@ -6,8 +6,6 @@ import { logger } from './logger' /** * Register a directory to be scanned for components and imported only when used. - * - * Requires Nuxt 2.13+ */ export async function addComponentsDir (dir: ComponentsDir, opts: { prepend?: boolean } = {}) { const nuxt = useNuxt() @@ -23,8 +21,6 @@ export type AddComponentOptions = { name: string, filePath: string } & Partial { _imports.push(...toArray(imports)) }) } export function addImportsDir (dirs: string | string[], opts: { prepend?: boolean } = {}) { - assertNuxtCompatibility({ bridge: true }) - useNuxt().hook('imports:dirs', (_dirs: string[]) => { for (const dir of toArray(dirs)) { _dirs[opts.prepend ? 'unshift' : 'push'](dir) @@ -22,8 +17,6 @@ export function addImportsDir (dirs: string | string[], opts: { prepend?: boolea }) } export function addImportsSources (presets: ImportPresetWithDeprecation | ImportPresetWithDeprecation[]) { - assertNuxtCompatibility({ bridge: true }) - useNuxt().hook('imports:sources', (_presets: ImportPresetWithDeprecation[]) => { for (const preset of toArray(presets)) { _presets.push(preset) diff --git a/packages/kit/src/layout.ts b/packages/kit/src/layout.ts index 3116d421dd..65fd183163 100644 --- a/packages/kit/src/layout.ts +++ b/packages/kit/src/layout.ts @@ -5,7 +5,7 @@ import { useNuxt } from './context' import { logger } from './logger' import { addTemplate } from './template' -export function addLayout (this: any, template: NuxtTemplate | string, name?: string) { +export function addLayout (template: NuxtTemplate | string, name?: string) { const nuxt = useNuxt() const { filename, src } = addTemplate(template) const layoutName = kebabCase(name || parse(filename).name).replace(/["']/g, '') diff --git a/packages/kit/src/module/define.ts b/packages/kit/src/module/define.ts index 06435f6923..33ac6d015a 100644 --- a/packages/kit/src/module/define.ts +++ b/packages/kit/src/module/define.ts @@ -79,9 +79,9 @@ function _defineNuxtModule< } // Module format is always a simple function - async function normalizedModule (this: any, inlineOptions: Partial, nuxt: Nuxt): Promise { + async function normalizedModule (inlineOptions: Partial, nuxt = tryUseNuxt()!): Promise { if (!nuxt) { - nuxt = tryUseNuxt() || this.nuxt /* invoked by nuxt 2 */ + throw new TypeError('Cannot use module outside of Nuxt context') } // Avoid duplicate installs diff --git a/packages/kit/src/template.ts b/packages/kit/src/template.ts index 86da4d1a49..903308497f 100644 --- a/packages/kit/src/template.ts +++ b/packages/kit/src/template.ts @@ -320,11 +320,6 @@ export async function writeTypes (nuxt: Nuxt) { await fsp.writeFile(declarationPath, GeneratedBy + '\n' + declaration) } - // This is needed for Nuxt 2 which clears the build directory again before building - // https://github.com/nuxt/nuxt/blob/2.x/packages/builder/src/builder.js#L144 - // @ts-expect-error TODO: Nuxt 2 hook - nuxt.hook('builder:prepared', writeFile) - await writeFile() } diff --git a/packages/nuxt/src/core/plugins/plugin-metadata.ts b/packages/nuxt/src/core/plugins/plugin-metadata.ts index 331c5b8d9d..b59e2fa36d 100644 --- a/packages/nuxt/src/core/plugins/plugin-metadata.ts +++ b/packages/nuxt/src/core/plugins/plugin-metadata.ts @@ -149,29 +149,12 @@ export const RemovePluginMetadataPlugin = (nuxt: Nuxt) => createUnplugin(() => { if (_node.type === 'ImportSpecifier' && (_node.imported.name === 'defineNuxtPlugin' || _node.imported.name === 'definePayloadPlugin')) { wrapperNames.add(_node.local.name) } - if (_node.type === 'ExportDefaultDeclaration' && (_node.declaration.type === 'FunctionDeclaration' || _node.declaration.type === 'ArrowFunctionExpression')) { - if ('params' in _node.declaration && _node.declaration.params.length > 1) { - logger.warn(`Plugin \`${plugin.src}\` is in legacy Nuxt 2 format (context, inject) which is likely to be broken and will be ignored.`) - s.overwrite(0, code.length, 'export default () => {}') - wrapped = true // silence a duplicate error - return - } - } if (_node.type !== 'CallExpression' || (_node as CallExpression).callee.type !== 'Identifier') { return } const node = _node as CallExpression & { start: number, end: number } const name = 'name' in node.callee && node.callee.name if (!name || !wrapperNames.has(name)) { return } wrapped = true - if (node.arguments[0].type !== 'ObjectExpression') { - // TODO: Warn if legacy plugin format is detected - if ('params' in node.arguments[0] && node.arguments[0].params.length > 1) { - logger.warn(`Plugin \`${plugin.src}\` is in legacy Nuxt 2 format (context, inject) which is likely to be broken and will be ignored.`) - s.overwrite(0, code.length, 'export default () => {}') - return - } - } - // Remove metadata that already has been extracted if (!('order' in plugin) && !('name' in plugin)) { return } for (const [argIndex, _arg] of node.arguments.entries()) { diff --git a/packages/nuxt/test/plugin-metadata.test.ts b/packages/nuxt/test/plugin-metadata.test.ts index 62c905a3b4..355b621fc9 100644 --- a/packages/nuxt/test/plugin-metadata.test.ts +++ b/packages/nuxt/test/plugin-metadata.test.ts @@ -40,7 +40,6 @@ describe('plugin-metadata', () => { it('should overwrite invalid plugins', () => { const invalidPlugins = [ 'export const plugin = {}', - 'export default function (ctx, inject) {}', ] for (const plugin of invalidPlugins) { expect(transformPlugin.transform.call({ parse }, plugin, 'my-plugin.mjs').code).toBe('export default () => {}') diff --git a/packages/schema/src/types/compatibility.ts b/packages/schema/src/types/compatibility.ts index 51f4918bdd..562b187cb0 100644 --- a/packages/schema/src/types/compatibility.ts +++ b/packages/schema/src/types/compatibility.ts @@ -1,18 +1,10 @@ export interface NuxtCompatibility { /** * Required nuxt version in semver format. - * @example `^2.14.0` or `>=3.0.0-27219851.6e49637`. + * @example `^3.2.0` or `>=3.13.0`. */ nuxt?: string - /** - * Bridge constraint for Nuxt 2 support. - * - * - `true`: When using Nuxt 2, using bridge module is required. - * - `false`: When using Nuxt 2, using bridge module is not supported. - */ - bridge?: boolean - /** * Mark a builder as incompatible, or require a particular version. * diff --git a/test/fixtures/basic/plugins/invalid-plugin-2.ts b/test/fixtures/basic/plugins/invalid-plugin-2.ts deleted file mode 100644 index b5e18bd7ea..0000000000 --- a/test/fixtures/basic/plugins/invalid-plugin-2.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default function previousPlugin (one, inject) { - inject() -}