diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 83645d7c3e..fd62da4e90 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -46,7 +46,7 @@ jobs: run: pnpm build - name: Run benchmarks - uses: CodSpeedHQ/action@0b631f8998f2389eb5144632b6f9f8fabd33a86e # v2.4.1 + uses: CodSpeedHQ/action@f11c406b8c87cda176ff341ed4925bc98086f6d1 # v2.4.2 with: run: pnpm vitest bench token: ${{ secrets.CODSPEED_TOKEN }} diff --git a/README.md b/README.md index 9570d902ed..a9df118209 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

Version Downloads - License + License Website Discord

@@ -120,4 +120,4 @@ If you expect to be using Nuxt 2 beyond the EOL (End of Life) date (June 30, 202 ## ⚖️ License -[MIT](./LICENSE) +[MIT](https://github.com/nuxt/nuxt/tree/main/LICENSE) diff --git a/docs/1.getting-started/10.deployment.md b/docs/1.getting-started/10.deployment.md index 91a4a71cc0..582a24d14a 100644 --- a/docs/1.getting-started/10.deployment.md +++ b/docs/1.getting-started/10.deployment.md @@ -117,10 +117,13 @@ In most cases, Nuxt can work with third-party content that is not generated or c Accordingly, you should make sure that the following options are unchecked / disabled in Cloudflare. Otherwise, unnecessary re-rendering or hydration errors could impact your production application. -1. Speed > Optimization > Auto Minify: Uncheck JavaScript, CSS and HTML -2. Speed > Optimization > Disable "Rocket Loader™" -3. Speed > Optimization > Disable "Mirage" +1. Speed > Optimization > Content Optimization > Auto Minify: Uncheck JavaScript, CSS and HTML +2. Speed > Optimization > Content Optimization > Disable "Rocket Loader™" +3. Speed > Optimization > Image Optimization > Disable "Mirage" 4. Scrape Shield > Disable "Email Address Obfuscation" -5. Scrape Shield > Disable "Server-side Excludes" With these settings, you can be sure that Cloudflare won't inject scripts into your Nuxt application that may cause unwanted side effects. + +::tip +Their location on the Cloudfalre dashboard sometimes changes so don't hesitate to look around. +:: diff --git a/docs/1.getting-started/8.error-handling.md b/docs/1.getting-started/8.error-handling.md index c4b44a438d..3c898508fc 100644 --- a/docs/1.getting-started/8.error-handling.md +++ b/docs/1.getting-started/8.error-handling.md @@ -150,10 +150,10 @@ Read more about `useError` composable. ### `createError` ```ts [TS Signature] -function createError (err: { cause, data, message, name, stack, statusCode, statusMessage, fatal }): Error +function createError (err: string | { cause, data, message, name, stack, statusCode, statusMessage, fatal }): Error ``` -Create an error object with additional metadata. It is usable in both the Vue and Server portions of your app, and is meant to be thrown. +Create an error object with additional metadata. You can pass a string to be set as the error `message` or an object containing error properties. It is usable in both the Vue and Server portions of your app, and is meant to be thrown. If you throw an error created with `createError`: - on server-side, it will trigger a full-screen error page which you can clear with [`clearError`](#clearerror). diff --git a/docs/3.api/3.utils/create-error.md b/docs/3.api/3.utils/create-error.md index ecdc7e7386..6d49a54410 100644 --- a/docs/3.api/3.utils/create-error.md +++ b/docs/3.api/3.utils/create-error.md @@ -12,7 +12,9 @@ You can use this function to create an error object with additional metadata. It ## Parameters -- `err`: `{ cause, data, message, name, stack, statusCode, statusMessage, fatal }` +- `err`: `string | { cause, data, message, name, stack, statusCode, statusMessage, fatal }` + +You can pass either a string or an object to the `createError` function. If you pass a string, it will be used as the error `message`, and the `statusCode` will default to `500`. If you pass an object, you can set multiple properties of the error, such as `statusCode`, `message`, and other error properties. ## In Vue App @@ -48,4 +50,6 @@ export default eventHandler(() => { }) ``` +In API routes, using `createError` by passing an object with a short `statusMessage` is recommended because it can be accessed on the client side. Otherwise, a `message` passed to `createError` on an API route will not propagate to the client. Alternatively, you can use the `data` property to pass data back to the client. In any case, always consider avoiding to put dynamic user input to the message to avoid potential security issues. + :read-more{to="/docs/getting-started/error-handling"} diff --git a/package.json b/package.json index 189b0f5217..606b99f51c 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "vue": "3.4.29" }, "devDependencies": { - "@eslint/js": "9.4.0", + "@eslint/js": "9.5.0", "@nuxt/eslint-config": "0.3.13", "@nuxt/kit": "workspace:*", "@nuxt/test-utils": "3.13.1", @@ -64,7 +64,7 @@ "changelogen": "0.5.5", "consola": "3.2.3", "devalue": "5.0.0", - "eslint": "9.4.0", + "eslint": "9.5.0", "eslint-plugin-no-only-tests": "3.1.0", "eslint-plugin-perfectionist": "2.11.0", "eslint-typegen": "0.2.4", diff --git a/packages/kit/package.json b/packages/kit/package.json index fe5ef01502..2253b46346 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@nuxt/kit", - "version": "3.12.1", + "version": "3.12.2", "repository": { "type": "git", "url": "git+https://github.com/nuxt/nuxt.git", diff --git a/packages/kit/src/plugin.ts b/packages/kit/src/plugin.ts index 8905c11274..aadcdbc718 100644 --- a/packages/kit/src/plugin.ts +++ b/packages/kit/src/plugin.ts @@ -43,8 +43,11 @@ export function normalizePlugin (plugin: NuxtPlugin | string): NuxtPlugin { * Note: By default plugin is prepended to the plugins array. You can use second argument to append (push) instead. * @example * ```js + * import { createResolver } from '@nuxt/kit' + * const resolver = createResolver(import.meta.url) + * * addPlugin({ - * src: path.resolve(__dirname, 'templates/foo.js'), + * src: resolver.resolve('templates/foo.js'), * filename: 'foo.server.js' // [optional] only include in server bundle * }) * ``` diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index f33ef226d7..ea9939edf9 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -1,6 +1,6 @@ { "name": "nuxt", - "version": "3.12.1", + "version": "3.12.2", "repository": { "type": "git", "url": "git+https://github.com/nuxt/nuxt.git", diff --git a/packages/nuxt/src/app/composables/script-stubs.ts b/packages/nuxt/src/app/composables/script-stubs.ts index 6fcaf114b2..469b1619ee 100644 --- a/packages/nuxt/src/app/composables/script-stubs.ts +++ b/packages/nuxt/src/app/composables/script-stubs.ts @@ -60,9 +60,15 @@ export function useScriptGoogleTagManager (...args: unknown[]) { export function useScriptSegment (...args: unknown[]) { renderStubMessage('useScriptSegment') } + // eslint-disable-next-line @typescript-eslint/no-unused-vars -export function useScriptFacebookPixel (...args: unknown[]) { - renderStubMessage('useScriptFacebookPixel') +export function useScriptClarity (...args: unknown[]) { + renderStubMessage('useScriptClarity') +} + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export function useScriptMetaPixel (...args: unknown[]) { + renderStubMessage('useScriptMetaPixel') } // eslint-disable-next-line @typescript-eslint/no-unused-vars export function useScriptXPixel (...args: unknown[]) { @@ -100,3 +106,13 @@ export function useScriptGoogleMaps (...args: unknown[]) { export function useScriptNpm (...args: unknown[]) { renderStubMessage('useScriptNpm') } + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export function useScriptGoogleAdsense (...args: unknown[]) { + renderStubMessage('useScriptGoogleAdsense') +} + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export function useScriptYouTubePlayer (...args: unknown[]) { + renderStubMessage('useScriptYouTubePlayer') +} diff --git a/packages/nuxt/src/core/builder.ts b/packages/nuxt/src/core/builder.ts index ca1b41dfd7..354829a28f 100644 --- a/packages/nuxt/src/core/builder.ts +++ b/packages/nuxt/src/core/builder.ts @@ -46,10 +46,12 @@ export async function build (nuxt: Nuxt) { if (!nuxt.options._prepare) { await Promise.all([checkForExternalConfigurationFiles(), bundle(nuxt)]) await nuxt.callHook('build:done') - } - if (!nuxt.options.dev) { - await nuxt.callHook('close', nuxt) + if (!nuxt.options.dev) { + await nuxt.callHook('close', nuxt) + } + } else { + nuxt.hook('prepare:types', () => nuxt.close()) } } diff --git a/packages/nuxt/src/core/nitro.ts b/packages/nuxt/src/core/nitro.ts index 4c96a48666..0628188db6 100644 --- a/packages/nuxt/src/core/nitro.ts +++ b/packages/nuxt/src/core/nitro.ts @@ -355,6 +355,7 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) { nitroConfig.rollupConfig!.plugins!.push( ImportProtectionPlugin.rollup({ rootDir: nuxt.options.rootDir, + modulesDir: nuxt.options.modulesDir, patterns: nuxtImportProtections(nuxt, { isNitro: true }), exclude: [/core[\\/]runtime[\\/]nitro[\\/]renderer/], }), @@ -497,7 +498,11 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) { for (const route of ['/200.html', '/404.html']) { routes.add(route) } - if (!nuxt.options.ssr) { + if (nuxt.options.ssr) { + if (nitro.options.prerender.crawlLinks) { + routes.add('/') + } + } else { routes.add('/index.html') } }) diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index b054abb923..3f85809d50 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -49,14 +49,13 @@ export function createNuxt (options: NuxtOptions): Nuxt { addHooks: hooks.addHooks, hook: hooks.hook, ready: () => initNuxt(nuxt), - close: async () => { - await hooks.callHook('close', nuxt) - hooks.removeAllHooks() - }, + close: () => hooks.callHook('close', nuxt), vfs: {}, apps: {}, } + hooks.hookOnce('close', () => { hooks.removeAllHooks() }) + return nuxt } @@ -168,6 +167,7 @@ async function initNuxt (nuxt: Nuxt) { // Exclude top-level resolutions by plugins exclude: [join(nuxt.options.srcDir, 'index.html')], patterns: nuxtImportProtections(nuxt), + modulesDir: nuxt.options.modulesDir, } addVitePlugin(() => ImportProtectionPlugin.vite(config)) addWebpackPlugin(() => ImportProtectionPlugin.webpack(config)) @@ -664,7 +664,9 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise { const nuxt = createNuxt(options) - await Promise.all(keyDependencies.map(dependency => checkDependencyVersion(dependency, nuxt._version))) + for (const dep of keyDependencies) { + checkDependencyVersion(dep, nuxt._version) + } // We register hooks layer-by-layer so any overrides need to be registered separately if (opts.overrides?.hooks) { diff --git a/packages/nuxt/src/core/plugins/import-protection.ts b/packages/nuxt/src/core/plugins/import-protection.ts index 56f0a579f4..c0940a6954 100644 --- a/packages/nuxt/src/core/plugins/import-protection.ts +++ b/packages/nuxt/src/core/plugins/import-protection.ts @@ -1,14 +1,13 @@ -import { createRequire } from 'node:module' import { createUnplugin } from 'unplugin' import { logger } from '@nuxt/kit' +import { resolvePath } from 'mlly' import { isAbsolute, join, relative, resolve } from 'pathe' import escapeRE from 'escape-string-regexp' import type { NuxtOptions } from 'nuxt/schema' -const _require = createRequire(import.meta.url) - interface ImportProtectionOptions { rootDir: string + modulesDir: string[] patterns: [importPattern: string | RegExp, warning?: string][] exclude?: Array } @@ -58,6 +57,7 @@ export const nuxtImportProtections = (nuxt: { options: NuxtOptions }, options: { export const ImportProtectionPlugin = createUnplugin(function (options: ImportProtectionOptions) { const cache: Record> = {} const importersToExclude = options?.exclude || [] + const proxy = resolvePath('unenv/runtime/mock/proxy', { url: options.modulesDir }) return { name: 'nuxt:import-protection', enforce: 'pre', @@ -85,7 +85,7 @@ export const ImportProtectionPlugin = createUnplugin(function (options: ImportPr matched = true } if (matched) { - return _require.resolve('unenv/runtime/mock/proxy') + return proxy } return null }, diff --git a/packages/nuxt/src/core/runtime/nitro/renderer.ts b/packages/nuxt/src/core/runtime/nitro/renderer.ts index 4321a2387a..8e43d58a7c 100644 --- a/packages/nuxt/src/core/runtime/nitro/renderer.ts +++ b/packages/nuxt/src/core/runtime/nitro/renderer.ts @@ -698,7 +698,7 @@ function replaceIslandTeleports (ssrContext: NuxtSSRContext, html: string) { if (matchClientComp) { const [, uid, clientId] = matchClientComp if (!uid || !clientId) { continue } - html = html.replace(new RegExp(` data-island-component="${clientId}"[^>]*>`), (full) => { + html = html.replace(new RegExp(` data-island-uid="${uid}" data-island-component="${clientId}"[^>]*>`), (full) => { return full + teleports[key] }) continue diff --git a/packages/nuxt/src/pages/module.ts b/packages/nuxt/src/pages/module.ts index 4121e0dd84..3e5982ea3b 100644 --- a/packages/nuxt/src/pages/module.ts +++ b/packages/nuxt/src/pages/module.ts @@ -275,20 +275,6 @@ export default defineNuxtModule({ } }) - // TODO: inject routes in `200.html` in next nitro upgrade (2.9.7+) via https://github.com/unjs/nitro/pull/2517 - if (!nuxt.options.dev && !nuxt.options._prepare) { - nuxt.hook('app:templatesGenerated', (app) => { - const nitro = useNitro() - if (nitro.options.prerender.crawlLinks) { - for (const page of app.pages!) { - if (page.path && !page.path.includes(':')) { - nitro.options.prerender.routes.push(page.path) - } - } - } - }) - } - nuxt.hook('imports:extend', (imports) => { imports.push( { name: 'definePageMeta', as: 'definePageMeta', from: resolve(runtimeDir, 'composables') }, diff --git a/packages/nuxt/test/auto-imports.test.ts b/packages/nuxt/test/auto-imports.test.ts index b25587f195..9517a78119 100644 --- a/packages/nuxt/test/auto-imports.test.ts +++ b/packages/nuxt/test/auto-imports.test.ts @@ -1,7 +1,7 @@ import { readFileSync } from 'node:fs' +import { fileURLToPath } from 'node:url' import { describe, expect, it } from 'vitest' -import { join } from 'pathe' -import { createCommonJS, findExports } from 'mlly' +import { findExports } from 'mlly' import * as VueFunctions from 'vue' import type { Import } from 'unimport' import { createUnimport } from 'unimport' @@ -59,8 +59,8 @@ const excludedNuxtHelpers = ['useHydration', 'useHead', 'useSeoMeta', 'useServer describe('imports:nuxt', () => { try { - const { __dirname } = createCommonJS(import.meta.url) - const entrypointContents = readFileSync(join(__dirname, '../src/app/composables/index.ts'), 'utf8') + const entrypointPath = fileURLToPath(new URL('../src/app/composables/index.ts', import.meta.url)) + const entrypointContents = readFileSync(entrypointPath, 'utf8') const names = findExports(entrypointContents).flatMap(i => i.names || i.name) for (let name of names) { diff --git a/packages/nuxt/test/import-protection.test.ts b/packages/nuxt/test/import-protection.test.ts index b716c733bd..d0ac2a0ccb 100644 --- a/packages/nuxt/test/import-protection.test.ts +++ b/packages/nuxt/test/import-protection.test.ts @@ -1,3 +1,4 @@ +import { fileURLToPath } from 'node:url' import { normalize } from 'pathe' import { describe, expect, it } from 'vitest' import { ImportProtectionPlugin, nuxtImportProtections } from '../src/core/plugins/import-protection' @@ -40,6 +41,7 @@ describe('import protection', () => { const transformWithImportProtection = (id: string, importer: string) => { const plugin = ImportProtectionPlugin.rollup({ rootDir: '/root', + modulesDir: [fileURLToPath(new URL('..', import.meta.url))], patterns: nuxtImportProtections({ options: { modules: ['some-nuxt-module'], diff --git a/packages/nuxt/test/scan-components.test.ts b/packages/nuxt/test/scan-components.test.ts index a4e8f172da..17d26f03dd 100644 --- a/packages/nuxt/test/scan-components.test.ts +++ b/packages/nuxt/test/scan-components.test.ts @@ -1,10 +1,11 @@ +import { fileURLToPath } from 'node:url' import { resolve } from 'pathe' import { expect, it, vi } from 'vitest' import type { ComponentsDir } from 'nuxt/schema' import { scanComponents } from '../src/components/scan' -const fixtureDir = resolve(__dirname, 'fixture') +const fixtureDir = fileURLToPath(new URL('fixture', import.meta.url)) const rFixture = (...p: string[]) => resolve(fixtureDir, ...p) vi.mock('@nuxt/kit', () => ({ diff --git a/packages/nuxt/test/utils.ts b/packages/nuxt/test/utils.ts index 9d295ac1ec..a8ea696f22 100644 --- a/packages/nuxt/test/utils.ts +++ b/packages/nuxt/test/utils.ts @@ -1,6 +1,6 @@ -import { resolve } from 'pathe' +import { fileURLToPath } from 'node:url' -export const fixtureDir = resolve(__dirname, 'fixture') +export const fixtureDir = fileURLToPath(new URL('fixture', import.meta.url)) export function normalizeLineEndings (str: string, normalized = '\n') { return str.replace(/\r?\n/g, normalized) diff --git a/packages/schema/package.json b/packages/schema/package.json index fcf1372d9d..110e97dfaf 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -1,6 +1,6 @@ { "name": "@nuxt/schema", - "version": "3.12.1", + "version": "3.12.2", "repository": { "type": "git", "url": "git+https://github.com/nuxt/nuxt.git", diff --git a/packages/schema/src/config/vite.ts b/packages/schema/src/config/vite.ts index 663f6d9b8b..a8da7e0cd4 100644 --- a/packages/schema/src/config/vite.ts +++ b/packages/schema/src/config/vite.ts @@ -1,4 +1,5 @@ import { consola } from 'consola' +import { resolve } from 'pathe' import { isTest } from 'std-env' import { withoutLeadingSlash } from 'ufo' import { defineUntypedSchema } from 'untyped' @@ -109,5 +110,8 @@ export default defineUntypedSchema({ }, }, }, + cacheDir: { + $resolve: async (val, get) => val ?? resolve(await get('rootDir') as string, 'node_modules/.cache/vite'), + }, }, }) diff --git a/packages/ui-templates/lib/dev.ts b/packages/ui-templates/lib/dev.ts index 00a307c2fc..75e431f66c 100644 --- a/packages/ui-templates/lib/dev.ts +++ b/packages/ui-templates/lib/dev.ts @@ -1,10 +1,13 @@ import { join, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' import { promises as fsp } from 'node:fs' import type { Plugin } from 'vite' import { template } from 'lodash-es' import genericMessages from '../templates/messages.json' -const r = (...path: string[]) => resolve(join(__dirname, '..', ...path)) +const templatesRoot = fileURLToPath(new URL('..', import.meta.url)) + +const r = (...path: string[]) => resolve(join(templatesRoot, ...path)) export const DevRenderingPlugin = () => { return { diff --git a/packages/ui-templates/lib/prerender.ts b/packages/ui-templates/lib/prerender.ts index 9aa79961ad..2d1c4660c5 100644 --- a/packages/ui-templates/lib/prerender.ts +++ b/packages/ui-templates/lib/prerender.ts @@ -1,8 +1,11 @@ import { join, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' import { promises as fsp } from 'node:fs' import { globby } from 'globby' -const r = (...path: string[]) => resolve(join(__dirname, '..', ...path)) +const templatesRoot = fileURLToPath(new URL('..', import.meta.url)) + +const r = (...path: string[]) => resolve(join(templatesRoot, ...path)) async function main () { const templates = await globby(r('dist/templates/*.js')) diff --git a/packages/ui-templates/vite.config.ts b/packages/ui-templates/vite.config.ts index c3d6435485..ce21c85df8 100644 --- a/packages/ui-templates/vite.config.ts +++ b/packages/ui-templates/vite.config.ts @@ -1,5 +1,5 @@ import { fileURLToPath } from 'node:url' -import { join } from 'node:path' +import { resolve } from 'node:path' import { readdirSync } from 'node:fs' import { defineConfig } from 'vite' @@ -8,7 +8,8 @@ import UnoCSS from 'unocss/vite' import { DevRenderingPlugin } from './lib/dev' import { RenderPlugin } from './lib/render' -const r = (...path: string[]) => fileURLToPath(new URL(join(...path), import.meta.url)) +const rootDir = fileURLToPath(new URL('.', import.meta.url)) +const r = (...path: string[]) => resolve(rootDir, ...path) export default defineConfig({ build: { @@ -32,7 +33,7 @@ export default defineConfig({ ], server: { fs: { - allow: ['./templates', __dirname], + allow: ['./templates', rootDir], }, }, }) diff --git a/packages/vite/package.json b/packages/vite/package.json index c4eb997071..8f29743898 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -1,6 +1,6 @@ { "name": "@nuxt/vite-builder", - "version": "3.12.1", + "version": "3.12.2", "repository": { "type": "git", "url": "git+https://github.com/nuxt/nuxt.git", diff --git a/packages/vite/src/client.ts b/packages/vite/src/client.ts index 607666f933..5ff1679549 100644 --- a/packages/vite/src/client.ts +++ b/packages/vite/src/client.ts @@ -118,7 +118,7 @@ export async function buildClient (ctx: ViteBuildContext) { 'vue', ], }, - cacheDir: resolve(ctx.nuxt.options.rootDir, 'node_modules/.cache/vite', 'client'), + cacheDir: resolve(ctx.nuxt.options.rootDir, ctx.config.cacheDir ?? 'node_modules/.cache/vite', 'client'), build: { sourcemap: ctx.nuxt.options.sourcemap.client ? ctx.config.build?.sourcemap ?? ctx.nuxt.options.sourcemap.client : false, manifest: 'manifest.json', diff --git a/packages/vite/src/css.ts b/packages/vite/src/css.ts index e99b323fa4..b5c4131140 100644 --- a/packages/vite/src/css.ts +++ b/packages/vite/src/css.ts @@ -19,6 +19,7 @@ export function resolveCSSOptions (nuxt: Nuxt): ViteConfig['css'] { for (const [name, opts] of plugins) { if (opts) { + // TODO: remove use of requireModule in favour of ESM import const plugin = requireModule(name, { paths: [ ...nuxt.options.modulesDir, diff --git a/packages/vite/src/server.ts b/packages/vite/src/server.ts index 67919c8b2f..af87239aa2 100644 --- a/packages/vite/src/server.ts +++ b/packages/vite/src/server.ts @@ -71,7 +71,7 @@ export async function buildServer (ctx: ViteBuildContext) { /(nuxt|nuxt3|nuxt-nightly)\/(dist|src|app)/, ], }, - cacheDir: resolve(ctx.nuxt.options.rootDir, 'node_modules/.cache/vite', 'server'), + cacheDir: resolve(ctx.nuxt.options.rootDir, ctx.config.cacheDir ?? 'node_modules/.cache/vite', 'server'), build: { // we'll display this in nitro build output reportCompressedSize: false, diff --git a/packages/webpack/package.json b/packages/webpack/package.json index 2421dc7c02..93b42e377e 100644 --- a/packages/webpack/package.json +++ b/packages/webpack/package.json @@ -1,6 +1,6 @@ { "name": "@nuxt/webpack-builder", - "version": "3.12.1", + "version": "3.12.2", "repository": { "type": "git", "url": "git+https://github.com/nuxt/nuxt.git", @@ -42,7 +42,7 @@ "hash-sum": "^2.0.0", "lodash-es": "4.17.21", "magic-string": "^0.30.10", - "memfs": "^4.9.2", + "memfs": "^4.9.3", "mini-css-extract-plugin": "^2.9.0", "mlly": "^1.7.1", "ohash": "^1.1.3", diff --git a/packages/webpack/src/utils/postcss.ts b/packages/webpack/src/utils/postcss.ts index 89d089f071..58af9f7c63 100644 --- a/packages/webpack/src/utils/postcss.ts +++ b/packages/webpack/src/utils/postcss.ts @@ -1,5 +1,5 @@ +import { fileURLToPath } from 'node:url' import createResolver from 'postcss-import-resolver' -import { createCommonJS } from 'mlly' import { requireModule } from '@nuxt/kit' import type { Nuxt } from '@nuxt/schema' import { defu } from 'defu' @@ -61,9 +61,10 @@ export const getPostcssConfig = (nuxt: Nuxt) => { // Keep the order of default plugins if (!Array.isArray(postcssOptions.plugins) && isPureObject(postcssOptions.plugins)) { // Map postcss plugins into instances on object mode once - const cjs = createCommonJS(import.meta.url) + const cwd = fileURLToPath(new URL('.', import.meta.url)) postcssOptions.plugins = sortPlugins(postcssOptions).map((pluginName: string) => { - const pluginFn = requireModule(pluginName, { paths: [cjs.__dirname] }) + // TODO: remove use of requireModule in favour of ESM import + const pluginFn = requireModule(pluginName, { paths: [cwd] }) const pluginOptions = postcssOptions.plugins[pluginName] if (!pluginOptions || typeof pluginFn !== 'function') { return null } return pluginFn(pluginOptions) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e46b7a6782..9563319de1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,11 +21,11 @@ importers: .: devDependencies: '@eslint/js': - specifier: 9.4.0 - version: 9.4.0 + specifier: 9.5.0 + version: 9.5.0 '@nuxt/eslint-config': specifier: 0.3.13 - version: 0.3.13(eslint@9.4.0)(typescript@5.4.5) + version: 0.3.13(eslint@9.5.0)(typescript@5.4.5) '@nuxt/kit': specifier: workspace:* version: link:packages/kit @@ -75,17 +75,17 @@ importers: specifier: 5.0.0 version: 5.0.0 eslint: - specifier: 9.4.0 - version: 9.4.0 + specifier: 9.5.0 + version: 9.5.0 eslint-plugin-no-only-tests: specifier: 3.1.0 version: 3.1.0 eslint-plugin-perfectionist: specifier: 2.11.0 - version: 2.11.0(eslint@9.4.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.4.0)) + version: 2.11.0(eslint@9.5.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.5.0)) eslint-typegen: specifier: 0.2.4 - version: 0.2.4(eslint@9.4.0) + version: 0.2.4(eslint@9.5.0) execa: specifier: 9.2.0 version: 9.2.0 @@ -727,7 +727,7 @@ importers: version: 1.6.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vite-plugin-checker: specifier: ^0.6.4 - version: 0.6.4(eslint@9.4.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5)) + version: 0.6.4(eslint@9.5.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5)) vue-bundle-renderer: specifier: ^2.1.0 version: 2.1.0 @@ -808,8 +808,8 @@ importers: specifier: ^0.30.10 version: 0.30.10 memfs: - specifier: ^4.9.2 - version: 4.9.2 + specifier: ^4.9.3 + version: 4.9.3 mini-css-extract-plugin: specifier: ^2.9.0 version: 2.9.0(webpack@5.92.0) @@ -1830,20 +1830,20 @@ packages: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.15.1': - resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==} + '@eslint/config-array@0.16.0': + resolution: {integrity: sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.4.0': - resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==} + '@eslint/js@9.5.0': + resolution: {integrity: sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.3': - resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==} + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/busboy@2.0.0': @@ -4210,8 +4210,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.4.0: - resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==} + eslint@9.5.0: + resolution: {integrity: sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -5306,6 +5306,10 @@ packages: resolution: {integrity: sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==} engines: {node: '>= 4.0.0'} + memfs@4.9.3: + resolution: {integrity: sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==} + engines: {node: '>= 4.0.0'} + memory-fs@0.5.0: resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} @@ -6922,6 +6926,12 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tree-dump@1.0.1: + resolution: {integrity: sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -8197,16 +8207,16 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.5.0)': dependencies: - eslint: 9.4.0 + eslint: 9.5.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} - '@eslint/config-array@0.15.1': + '@eslint/config-array@0.16.0': dependencies: - '@eslint/object-schema': 2.1.3 + '@eslint/object-schema': 2.1.4 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -8226,9 +8236,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.4.0': {} + '@eslint/js@9.5.0': {} - '@eslint/object-schema@2.1.3': {} + '@eslint/object-schema@2.1.4': {} '@fastify/busboy@2.0.0': {} @@ -8587,35 +8597,35 @@ snapshots: - utf-8-validate - vue - '@nuxt/eslint-config@0.3.13(eslint@9.4.0)(typescript@5.4.5)': + '@nuxt/eslint-config@0.3.13(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@eslint/js': 9.4.0 - '@nuxt/eslint-plugin': 0.3.13(eslint@9.4.0)(typescript@5.4.5) + '@eslint/js': 9.5.0 + '@nuxt/eslint-plugin': 0.3.13(eslint@9.5.0)(typescript@5.4.5) '@rushstack/eslint-patch': 1.10.3 - '@stylistic/eslint-plugin': 2.1.0(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/eslint-plugin': 7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.9.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@stylistic/eslint-plugin': 2.1.0(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.9.0(eslint@9.5.0)(typescript@5.4.5) + eslint: 9.5.0 eslint-config-flat-gitignore: 0.1.5 eslint-flat-config-utils: 0.2.5 - eslint-plugin-import-x: 0.5.0(eslint@9.4.0)(typescript@5.4.5) - eslint-plugin-jsdoc: 48.2.5(eslint@9.4.0) - eslint-plugin-regexp: 2.5.0(eslint@9.4.0) - eslint-plugin-unicorn: 53.0.0(eslint@9.4.0) - eslint-plugin-vue: 9.26.0(eslint@9.4.0) + eslint-plugin-import-x: 0.5.0(eslint@9.5.0)(typescript@5.4.5) + eslint-plugin-jsdoc: 48.2.5(eslint@9.5.0) + eslint-plugin-regexp: 2.5.0(eslint@9.5.0) + eslint-plugin-unicorn: 53.0.0(eslint@9.5.0) + eslint-plugin-vue: 9.26.0(eslint@9.5.0) globals: 15.2.0 pathe: 1.1.2 tslib: 2.6.2 - vue-eslint-parser: 9.4.2(eslint@9.4.0) + vue-eslint-parser: 9.4.2(eslint@9.5.0) transitivePeerDependencies: - supports-color - typescript - '@nuxt/eslint-plugin@0.3.13(eslint@9.4.0)(typescript@5.4.5)': + '@nuxt/eslint-plugin@0.3.13(eslint@9.5.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) + eslint: 9.5.0 transitivePeerDependencies: - supports-color - typescript @@ -9066,49 +9076,49 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@stylistic/eslint-plugin-js@2.1.0(eslint@9.4.0)': + '@stylistic/eslint-plugin-js@2.1.0(eslint@9.5.0)': dependencies: '@types/eslint': 8.56.10 acorn: 8.12.0 - eslint: 9.4.0 + eslint: 9.5.0 eslint-visitor-keys: 4.0.0 espree: 10.0.1 - '@stylistic/eslint-plugin-jsx@2.1.0(eslint@9.4.0)': + '@stylistic/eslint-plugin-jsx@2.1.0(eslint@9.5.0)': dependencies: - '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.4.0) + '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0) '@types/eslint': 8.56.10 - eslint: 9.4.0 + eslint: 9.5.0 estraverse: 5.3.0 picomatch: 4.0.2 - '@stylistic/eslint-plugin-plus@2.1.0(eslint@9.4.0)(typescript@5.4.5)': + '@stylistic/eslint-plugin-plus@2.1.0(eslint@9.5.0)(typescript@5.4.5)': dependencies: '@types/eslint': 8.56.10 - '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) + eslint: 9.5.0 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin-ts@2.1.0(eslint@9.4.0)(typescript@5.4.5)': + '@stylistic/eslint-plugin-ts@2.1.0(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.4.0) + '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0) '@types/eslint': 8.56.10 - '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) + eslint: 9.5.0 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@2.1.0(eslint@9.4.0)(typescript@5.4.5)': + '@stylistic/eslint-plugin@2.1.0(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.4.0) - '@stylistic/eslint-plugin-jsx': 2.1.0(eslint@9.4.0) - '@stylistic/eslint-plugin-plus': 2.1.0(eslint@9.4.0)(typescript@5.4.5) - '@stylistic/eslint-plugin-ts': 2.1.0(eslint@9.4.0)(typescript@5.4.5) + '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0) + '@stylistic/eslint-plugin-jsx': 2.1.0(eslint@9.5.0) + '@stylistic/eslint-plugin-plus': 2.1.0(eslint@9.5.0)(typescript@5.4.5) + '@stylistic/eslint-plugin-ts': 2.1.0(eslint@9.5.0)(typescript@5.4.5) '@types/eslint': 8.56.10 - eslint: 9.4.0 + eslint: 9.5.0 transitivePeerDependencies: - supports-color - typescript @@ -9320,15 +9330,15 @@ snapshots: '@types/youtube@0.0.50': {} - '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.9.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.9.0(eslint@9.5.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/type-utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.9.0 - eslint: 9.4.0 + eslint: 9.5.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -9338,14 +9348,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.9.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 7.9.0 '@typescript-eslint/types': 7.9.0 '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.9.0 debug: 4.3.4 - eslint: 9.4.0 + eslint: 9.5.0 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -9356,12 +9366,12 @@ snapshots: '@typescript-eslint/types': 7.9.0 '@typescript-eslint/visitor-keys': 7.9.0 - '@typescript-eslint/type-utils@7.9.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.9.0(eslint@9.5.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 9.4.0 + eslint: 9.5.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -9385,13 +9395,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.9.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.9.0(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@typescript-eslint/scope-manager': 7.9.0 '@typescript-eslint/types': 7.9.0 '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - eslint: 9.4.0 + eslint: 9.5.0 transitivePeerDependencies: - supports-color - typescript @@ -11294,12 +11304,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@0.5.0(eslint@9.4.0)(typescript@5.4.5): + eslint-plugin-import-x@0.5.0(eslint@9.5.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) debug: 4.3.4 doctrine: 3.0.0 - eslint: 9.4.0 + eslint: 9.5.0 eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.3 is-glob: 4.0.3 @@ -11309,14 +11319,14 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@48.2.5(eslint@9.4.0): + eslint-plugin-jsdoc@48.2.5(eslint@9.5.0): dependencies: '@es-joy/jsdoccomment': 0.43.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.4 escape-string-regexp: 4.0.0 - eslint: 9.4.0 + eslint: 9.5.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.6.2 @@ -11326,38 +11336,38 @@ snapshots: eslint-plugin-no-only-tests@3.1.0: {} - eslint-plugin-perfectionist@2.11.0(eslint@9.4.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.4.0)): + eslint-plugin-perfectionist@2.11.0(eslint@9.5.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.5.0)): dependencies: - '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) + eslint: 9.5.0 minimatch: 9.0.4 natural-compare-lite: 1.4.0 optionalDependencies: - vue-eslint-parser: 9.4.2(eslint@9.4.0) + vue-eslint-parser: 9.4.2(eslint@9.5.0) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-regexp@2.5.0(eslint@9.4.0): + eslint-plugin-regexp@2.5.0(eslint@9.5.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 - eslint: 9.4.0 + eslint: 9.5.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-unicorn@53.0.0(eslint@9.4.0): + eslint-plugin-unicorn@53.0.0(eslint@9.5.0): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@eslint/eslintrc': 3.1.0 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 - eslint: 9.4.0 + eslint: 9.5.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -11371,16 +11381,16 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-vue@9.26.0(eslint@9.4.0): + eslint-plugin-vue@9.26.0(eslint@9.5.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) - eslint: 9.4.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + eslint: 9.5.0 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.0 semver: 7.6.2 - vue-eslint-parser: 9.4.2(eslint@9.4.0) + vue-eslint-parser: 9.4.2(eslint@9.5.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -11400,10 +11410,10 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-typegen@0.2.4(eslint@9.4.0): + eslint-typegen@0.2.4(eslint@9.5.0): dependencies: '@types/eslint': 8.56.10 - eslint: 9.4.0 + eslint: 9.5.0 json-schema-to-typescript-lite: 14.0.1 ohash: 1.1.3 @@ -11411,13 +11421,13 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.4.0: + eslint@9.5.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/config-array': 0.15.1 + '@eslint/config-array': 0.16.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.4.0 + '@eslint/js': 9.5.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -12714,6 +12724,13 @@ snapshots: sonic-forest: 1.0.0(tslib@2.6.2) tslib: 2.6.2 + memfs@4.9.3: + dependencies: + '@jsonjoy.com/json-pack': 1.0.3(tslib@2.6.2) + '@jsonjoy.com/util': 1.1.2(tslib@2.6.2) + tree-dump: 1.0.1(tslib@2.6.2) + tslib: 2.6.2 + memory-fs@0.5.0: dependencies: errno: 0.1.8 @@ -14617,6 +14634,10 @@ snapshots: tr46@0.0.3: {} + tree-dump@1.0.1(tslib@2.6.2): + dependencies: + tslib: 2.6.2 + trim-lines@3.0.1: {} trough@2.2.0: {} @@ -15030,7 +15051,7 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.6.4(eslint@9.4.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5)): + vite-plugin-checker@0.6.4(eslint@9.5.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5)): dependencies: '@babel/code-frame': 7.24.7 ansi-escapes: 4.3.2 @@ -15049,7 +15070,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 optionalDependencies: - eslint: 9.4.0 + eslint: 9.5.0 optionator: 0.9.3 typescript: 5.4.5 vue-tsc: 2.0.21(typescript@5.4.5) @@ -15190,10 +15211,10 @@ snapshots: vue-devtools-stub@0.1.0: {} - vue-eslint-parser@9.4.2(eslint@9.4.0): + vue-eslint-parser@9.4.2(eslint@9.5.0): dependencies: debug: 4.3.4 - eslint: 9.4.0 + eslint: 9.5.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 diff --git a/scripts/release-edge.sh b/scripts/release-edge.sh index 0ce9491a61..eb04601bbc 100755 --- a/scripts/release-edge.sh +++ b/scripts/release-edge.sh @@ -18,6 +18,9 @@ if [[ ! -z ${NODE_AUTH_TOKEN} ]] ; then npm whoami fi +# use absolute urls for better rendering on npm +sed -i '' 's/\.\/\.github\/assets/https:\/\/github.com\/nuxt\/nuxt\/tree\/main\/\.github\/assets/g' README.md + # Release packages for p in packages/* ; do if [[ $p == "packages/nuxi" ]] ; then diff --git a/scripts/release-rc.sh b/scripts/release-rc.sh index f2623c1e61..88e04e5d30 100755 --- a/scripts/release-rc.sh +++ b/scripts/release-rc.sh @@ -8,6 +8,9 @@ git restore -s@ -SW -- packages examples # Build all once to ensure things are nice pnpm build +# use absolute urls for better rendering on npm +sed -i '' 's/\.\/\.github\/assets/https:\/\/github.com\/nuxt\/nuxt\/tree\/main\/\.github\/assets/g' README.md + # Release packages for PKG in packages/* ; do if [[ $PKG == "packages/nuxi" ]] ; then diff --git a/scripts/release.sh b/scripts/release.sh index f8fc5bd819..40c18c87cc 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -8,6 +8,9 @@ git restore -s@ -SW -- packages examples # Build all once to ensure things are nice pnpm build +# use absolute urls for better rendering on npm +sed -i '' 's/\.\/\.github\/assets/https:\/\/github.com\/nuxt\/nuxt\/tree\/main\/\.github\/assets/g' README.md + # Release packages for PKG in packages/* ; do if [[ $PKG == "packages/nuxi" ]] ; then