From 47aa6a12129e29a589194633735af4197a495bd1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 17:15:39 +0100 Subject: [PATCH 01/26] chore(deps): update all non-major dependencies (main) (#27551) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Daniel Roe --- packages/nuxt/package.json | 2 +- packages/nuxt/src/imports/presets.ts | 1 + packages/nuxt/test/auto-imports.test.ts | 3 + packages/ui-templates/package.json | 4 +- pnpm-lock.yaml | 396 ++++++++++++++++++++++-- 5 files changed, 373 insertions(+), 33 deletions(-) diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 6b788ebc0b..e08492f35d 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -118,7 +118,7 @@ "vue-router": "^4.3.3" }, "devDependencies": { - "@nuxt/scripts": "0.4.7", + "@nuxt/scripts": "0.5.1", "@nuxt/ui-templates": "1.3.4", "@parcel/watcher": "2.4.1", "@types/estree": "1.0.5", diff --git a/packages/nuxt/src/imports/presets.ts b/packages/nuxt/src/imports/presets.ts index 3b2e85534c..c5a6b52261 100644 --- a/packages/nuxt/src/imports/presets.ts +++ b/packages/nuxt/src/imports/presets.ts @@ -119,6 +119,7 @@ export const scriptsStubsPreset = { 'useScript', 'useScriptGoogleAnalytics', 'useScriptPlausibleAnalytics', + 'useScriptClarity', 'useScriptCloudflareWebAnalytics', 'useScriptFathomAnalytics', 'useScriptMatomoAnalytics', diff --git a/packages/nuxt/test/auto-imports.test.ts b/packages/nuxt/test/auto-imports.test.ts index f417369177..b25587f195 100644 --- a/packages/nuxt/test/auto-imports.test.ts +++ b/packages/nuxt/test/auto-imports.test.ts @@ -202,6 +202,9 @@ describe('imports:nuxt/scripts', () => { 'useAnalyticsPageEvent', 'useElementScriptTrigger', 'useConsentScriptTrigger', + // registered separately + 'useScriptGoogleTagManager', + 'useScriptGoogleAnalytics', ]) it.each(scriptsStubsPreset.imports)(`should register %s from @nuxt/scripts`, (name) => { if (globalScripts.has(name)) { return } diff --git a/packages/ui-templates/package.json b/packages/ui-templates/package.json index 4232030b42..0cb9fec044 100644 --- a/packages/ui-templates/package.json +++ b/packages/ui-templates/package.json @@ -21,7 +21,7 @@ "devDependencies": { "@types/html-minifier": "4.0.5", "@types/lodash-es": "4.17.12", - "@unocss/reset": "0.60.4", + "@unocss/reset": "0.61.0", "critters": "0.0.22", "execa": "9.2.0", "globby": "14.0.1", @@ -32,7 +32,7 @@ "pathe": "1.1.2", "prettier": "3.3.2", "scule": "1.3.0", - "unocss": "0.60.4", + "unocss": "0.61.0", "vite": "5.2.13" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 490d89d41c..bbd4dc3abd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -257,7 +257,7 @@ importers: version: 2.0.2 '@nuxt/devtools': specifier: ^1.3.3 - version: 1.3.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@nuxt/kit': specifier: workspace:* version: link:../kit @@ -428,8 +428,8 @@ importers: version: 4.3.3(vue@3.4.27(typescript@5.4.5)) devDependencies: '@nuxt/scripts': - specifier: 0.4.7 - version: 0.4.7(@nuxt/devtools@1.3.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) + specifier: 0.5.1 + version: 0.5.1(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) '@nuxt/ui-templates': specifier: workspace:* version: link:../ui-templates @@ -588,8 +588,8 @@ importers: specifier: 4.17.12 version: 4.17.12 '@unocss/reset': - specifier: 0.60.4 - version: 0.60.4 + specifier: 0.61.0 + version: 0.61.0 critters: specifier: 0.0.22 version: 0.0.22 @@ -621,8 +621,8 @@ importers: specifier: 1.3.0 version: 1.3.0 unocss: - specifier: 0.60.4 - version: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + specifier: 0.61.0 + version: 0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) vite: specifier: 5.2.13 version: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) @@ -2145,8 +2145,8 @@ packages: peerDependencies: webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - '@nuxt/scripts@0.4.7': - resolution: {integrity: sha512-zVP7tF3rmO2ZqQW5Hmmy0NQ4WYH+8ye1QBseSJZ0Ab1pDQEpWX+CI7tVak7Fw7IWVnrAcjIMh6TJFt0zQ/ARjg==} + '@nuxt/scripts@0.5.1': + resolution: {integrity: sha512-K3v/+Kej9F6Ul2ReTb4cNxB76JNeogDuNft76/4N/n3WUAPuhOqn2rFPTbvjidERsHxqmiLGxCPl7fKrhE0ZZg==} '@nuxt/telemetry@2.5.4': resolution: {integrity: sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==} @@ -2474,6 +2474,9 @@ packages: '@shikijs/core@1.6.3': resolution: {integrity: sha512-QnJKHFUW95GnlJLJGP6QLx4M69HM0KlXk+R2Y8lr/x4nAx1Yb/lsuxq4XwybuUjTxbJk+BT0g/kvn0bcsjGGHg==} + '@shikijs/core@1.6.4': + resolution: {integrity: sha512-WTU9rzZae1p2v6LOxMf6LhtmZOkIHYYW160IuahUyJy7YXPPjyWZLR1ag+SgD22ZMxZtz1gfU6Tccc8t0Il/XA==} + '@shikijs/transformers@1.1.2': resolution: {integrity: sha512-tldkUMW7RBkU2F6eXbiRMw3ja+hQer1EjwhD2NGOv6K0pgZdVp3JKjU8uisRtg65tyBqrVHq7zlLHVk7EKmUZA==} @@ -2820,24 +2823,50 @@ packages: vite: optional: true + '@unocss/astro@0.61.0': + resolution: {integrity: sha512-cbgztX/to5rMhAtEGCcR3ClMlK9F+lPxq21A72qsbWVQjiKa7W4O7qKBmUKPYsWRzJEJtdyN11A65H2037aKQw==} + peerDependencies: + vite: 5.2.13 + peerDependenciesMeta: + vite: + optional: true + '@unocss/cli@0.60.4': resolution: {integrity: sha512-RFt3BOgtp5ZI+cS6grKKo1DqvUJ/e8iRPwn843u6qSw18guIc4CEVTe5jcDAGuLcL4va9hg2wd4NReUEnMCZ/g==} engines: {node: '>=14'} hasBin: true + '@unocss/cli@0.61.0': + resolution: {integrity: sha512-NuwBFHpnI40PBu84/3c9JpyO02TBNoRPzZ+kJ0hmFa+dv8Ro7Sb1AMlLJ5t3ZjELhsh0zXQf6ucS9mpqu+785g==} + engines: {node: '>=14'} + hasBin: true + '@unocss/config@0.60.4': resolution: {integrity: sha512-ri9P2+YztD5JdPYSLiNjcLf6NgoBbwJDVutP/tQnfYYrE72DQ+j+4vepyxEBa1YaH/X4qsmLJCj+2tI/ufIiog==} engines: {node: '>=14'} + '@unocss/config@0.61.0': + resolution: {integrity: sha512-k8uV4n8eMti4S6BFeAkc9QBXJefDIlPyOWrdKykUMOHLIWVAIS53JixW9FJNgJRw0RVI6B7UR+rOznWwKpORPA==} + engines: {node: '>=14'} + '@unocss/core@0.60.4': resolution: {integrity: sha512-6tz8KTzC30oB0YikwRQoIpJ6Y6Dg+ZiK3NfCIsH+UX11bh2J2M53as2EL/5VQCqtiUn3YP0ZEzR2d1AWX78RCA==} + '@unocss/core@0.61.0': + resolution: {integrity: sha512-Y/Ly3LPIAzOBlWCdKBVzVzIaaWDsf+oWPIUZlaW7DL++WWypVBCghmxXIT5dyuMGXE560Hj92st4AkXfuVdxGQ==} + '@unocss/extractor-arbitrary-variants@0.60.4': resolution: {integrity: sha512-USuFGs5CLft9q7IGNdAEp1oliuUns+W7OO0Tx5qtx/oBh6pU/L93lcNNsuuGNrMU8BCmF3atx1/PEmGymgJ7VA==} + '@unocss/extractor-arbitrary-variants@0.61.0': + resolution: {integrity: sha512-9ru/UR4kZ1+jGXpMawV9T8kpL54FrJBmWKMuFlDTEDIwtzDyyfLbt/buoXdzKDLmil9hOXH3IH8+dah/OiiDoA==} + '@unocss/inspector@0.60.4': resolution: {integrity: sha512-PcnrEQ2H7osZho4Nh0+84O4IXzlkF7pvTUe/7FTJYF1HQGWHB/PfOSoyKn7/sF5sED8hMK9RlSJ9YGUH9ioY+g==} + '@unocss/inspector@0.61.0': + resolution: {integrity: sha512-gpL2RNw6Cp145kTxWN0BG/tWd4x3LVbgkZfyUlh5IAZHWKAq9MWA0jIifV2RU94h4rbSBNHxz50bodYtkzeM8A==} + '@unocss/nuxt@0.60.4': resolution: {integrity: sha512-2lv7tsVlAnGMqqImfZPLm05dtDo3Og0VDrHOAwFwL4XiVaTLXEXQfAf/bOBDRy4qpJ2nFDj9eltuoQYWto1jmA==} @@ -2847,60 +2876,120 @@ packages: peerDependencies: postcss: ^8.4.21 + '@unocss/postcss@0.61.0': + resolution: {integrity: sha512-0ZHUeLYu057xL1vXg2coV62ly6zaCgYdA/oHKCMaU9KT0TI49+DE73GouHypRNM5YXfuUPfXhPGGUuFWkAbI1A==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + '@unocss/preset-attributify@0.60.4': resolution: {integrity: sha512-J2GWUC0bcmZSXlBGLYUXwWQos/dNzKbq2CKweWVBAmAH9XyfM0mA5CTNBRv05PN1g6C/0z5st7ntUjV6KHJuTg==} + '@unocss/preset-attributify@0.61.0': + resolution: {integrity: sha512-E0oIfYAnnm8piSU7cbAnLIKKz0TwlHMOfAcg0Z0jv2N/MatCpq0BCJZHeE0fEw53OUc+oa6Dpd509rOEUXp/tA==} + '@unocss/preset-icons@0.60.4': resolution: {integrity: sha512-UN/dj+nhI3+S06YxCZQPLw3GZy780iaE71dysyhDMdh+Qq2KFVs3d94mr1427fjz/3Y8ZyXkgqyhCFr7UT0bMQ==} + '@unocss/preset-icons@0.61.0': + resolution: {integrity: sha512-xI7isKu1fQbyGee1lcJBLwvUlmubYbPN4ymepUamfprNPlWrzb5Gj2+SROERlzzrTaI8C0YdBxsYMGyOV94dXQ==} + '@unocss/preset-mini@0.60.4': resolution: {integrity: sha512-ZiHbP69vkyz0xmhqzC4B4PegwV+LPlZOBT7cRhsh0P8oPOQKYOyDRy4rAl+sJBJeIrggn1r1LgN+Z0Xvd8Ytcw==} + '@unocss/preset-mini@0.61.0': + resolution: {integrity: sha512-P+DdMtPtzAQ2aQ1/WWPoO3X/qvky+Fqq4eKXIvbqXOQ9c2oem7/dnsPeT08zzLIqxVJnuykymPwRT85EumS0gg==} + '@unocss/preset-tagify@0.60.4': resolution: {integrity: sha512-GxL/W3qkdWWDqXi43qyLbp/BpEj7gMw99KqkO7bmbVi3BVlFggreTFwmQu89pB6iatxGjxnAsc+TsQZqxKftZA==} + '@unocss/preset-tagify@0.61.0': + resolution: {integrity: sha512-Q3709A8/4fFZdQ4vfKfgDSugQYd21BoSO+TomJp/QMi9iyPjGsrERQilciMmkuRyAe8Q1rdLh+6ioGiJEU0XHQ==} + '@unocss/preset-typography@0.60.4': resolution: {integrity: sha512-6j8ySZYEAwMBy9a3Lw3EEfRlcAClti4zvaV0kBtkP4BDZCwlgX2eE1pmw2mTUy+E1yVlXm3NnRzKfDudQUzraA==} + '@unocss/preset-typography@0.61.0': + resolution: {integrity: sha512-chT2KvgeKsXoDFSedfP0BjhFLYgcDUBJCX0omJOXVVz9q7vB898abhZ5zA9Rcpmbkby4ovtbIjc2RqG9uIKLaQ==} + '@unocss/preset-uno@0.60.4': resolution: {integrity: sha512-AN8ZTtiKSaZNGKZZIqt/JAhMzSY2hHLwhGEOFDrXgjWFr85UlwZzODMDoT58PrU04VlbhN8+0N4lHfLmZCKpiQ==} + '@unocss/preset-uno@0.61.0': + resolution: {integrity: sha512-mkKOra3dQEc3uI7aPIqa3t8MJXlmpLSgGaPfEJK52xkFe991ex6CiUunYMMWbh6ZSzmdxkO31IwQIH9lcmj/Uw==} + '@unocss/preset-web-fonts@0.60.4': resolution: {integrity: sha512-COfxOQcREFgpsm6nw234pxrr1EV1zWUVYXBZjlH+vk7x8EhaS5BPAXqN6SneIVTTDvEE9U4opAaoEYz5A3XWaQ==} + '@unocss/preset-web-fonts@0.61.0': + resolution: {integrity: sha512-9bYvk2BSryLgguZ5qTDPVEhgD/olZiTAy/7JqHzrKKTh7xPURO1IcG2vbX354unfhTDR6GZIKiAkk64qJZUDPw==} + '@unocss/preset-wind@0.60.4': resolution: {integrity: sha512-dT/U+RkbL21lDTOP7/mlFZxlBbUAefUzQZINC0BX7vTKvO57G4HxRq62u9xvMGFv38lQ+qXXzKhABVsEPDNpUA==} + '@unocss/preset-wind@0.61.0': + resolution: {integrity: sha512-PooyLVAF4wH9KvW4OKfDxYFuM4qmnlU+Ci6O6RGgVsKyQMq76crRqqK76lbnehg7jOoZJVxmWfQ6k5gT3aQeXQ==} + '@unocss/reset@0.60.4': resolution: {integrity: sha512-MEngG4byIHnfb0osvxqU2gBdBkXPPE4z+G9HeEt3JUadWAp2gggm8ojC1/1PoJF5M31loxGEVVrB0FLSKACw3g==} + '@unocss/reset@0.61.0': + resolution: {integrity: sha512-VqemtmzH8Rgu5yNomtv50gIcy4KZ2x1aP+7WZCds9x5ZdTSEjbfCOgUDI9rDrrGSipJkCmJ1yOhUPMC7ND6Hfw==} + '@unocss/rule-utils@0.60.4': resolution: {integrity: sha512-7qUN33NM4T/IwWavm9VIOCZ2+4hLBc0YUGxcMNTDZSFQRQLkWe3N5dOlgwKXtMyMKatZfbIRUKVDUgvEefoCTA==} engines: {node: '>=14'} + '@unocss/rule-utils@0.61.0': + resolution: {integrity: sha512-MCdmfhE6Q9HSWjWqi2sx5/nnKyOEhfhoo+pVumHIqkHQICQ/LuKioFf7Y7e5ycqjFE/7dC2hKGZJ8WTMGIOMwA==} + engines: {node: '>=14'} + '@unocss/scope@0.60.4': resolution: {integrity: sha512-AOu/qvi4agy0XfGF3QEBbuxVHkVZHpmU0NMBYuxa0B869YZENT87sTM6DVwtvr75CZvACWxv/hcL3lR68uKBjw==} + '@unocss/scope@0.61.0': + resolution: {integrity: sha512-uDk84LX2meZHskSvy0Mad7jgF0Be6el16F9DKYYvxlUxlzu/mCj6PQpQrXi8uZ2+O3akneHFqAbO6ewYShKdQA==} + '@unocss/transformer-attributify-jsx-babel@0.60.4': resolution: {integrity: sha512-BL4g2gyLpbseu+fOhkAHKNxYcHcn7brQAjXj5k5Yyy6wpwm43lzHYPZtRPrbLVLniqqAN21FzEbtJXCPIHKlHA==} + '@unocss/transformer-attributify-jsx-babel@0.61.0': + resolution: {integrity: sha512-D9z28MQM4w8oowMZRiz7kxEVlor1/XUfaVBTujAS6Ks7Ly+0/91LuOLSHU9uC7vcKmMRI0Q2+Ww2hsVNf2z7ww==} + '@unocss/transformer-attributify-jsx@0.60.4': resolution: {integrity: sha512-tQwD1T8Juz5F4JHYxTgekCv5olEegAPRZwAgx75pP+X2+PkV670pdXv8zbK0t5q6bvyF53vEVBrgQ9q1xSH9yQ==} + '@unocss/transformer-attributify-jsx@0.61.0': + resolution: {integrity: sha512-mC0+O7KmxP5b0DlPyGVdu/3NM/33f9CgfXmwu+U+3NSsAfcCLjJ7nD1MOjl3vcFV5YpudTy1EVaqhcROQRSZIg==} + '@unocss/transformer-compile-class@0.60.4': resolution: {integrity: sha512-zIqKQ7javiCb9Q3fbMvx1QVln8OqvAzWwgCVHsPINzDrDi73KXa3eeCU6GNlsd46tzy0Y9ryRIvW73YS+9Oj1w==} + '@unocss/transformer-compile-class@0.61.0': + resolution: {integrity: sha512-iTQyWz+IbNZrQWCQaibHMY2+8+VoG4ZpizeyYKXHZe11/HaomSvorJwZdufEUTrdWmUzRhJgumGl1TW4FaJwpg==} + '@unocss/transformer-directives@0.60.4': resolution: {integrity: sha512-u3fQI8RszMhUevhJICtQ/bNpAfbh8MEXQf7YNnzUvLvbXGkkoieyU5mj0ray6fbToqxfxVceQtXYcFYIuf4aNg==} + '@unocss/transformer-directives@0.61.0': + resolution: {integrity: sha512-15nIynJPYFYnW/TUQu0NyZ5uxTDcrRyY8sB3axcYZOqqlu1hgPFotVukl6jqCZgGUR1AbfbnJwuDlcBQeT8xpA==} + '@unocss/transformer-variant-group@0.60.4': resolution: {integrity: sha512-R4d16G7s3fDXj9prUNFnJi8cZvH8/XZsqiKDzCBjXNKrbf9zp7YnWD2VaMFjUISgW5kSQjQNSWK84soVNWq3UQ==} + '@unocss/transformer-variant-group@0.61.0': + resolution: {integrity: sha512-5DHEram3iv+c9jPQW8p629aFyptyzdP5yNnRSMLBZcwyJ672VAKzPUZLYHh5UOUb69eaet3og1cU8uxpHhGKtQ==} + '@unocss/vite@0.60.4': resolution: {integrity: sha512-af9hhtW11geF56cotKUE16Fr+FirTdV/Al/usjKJ6P5hnCEQnqSHXQDFXL5Y6vXwcvLDmOhHYNrVR8duKgC8Mw==} peerDependencies: vite: 5.2.13 + '@unocss/vite@0.61.0': + resolution: {integrity: sha512-gjxLJrja1hqDwdd8z3QvzfMCcKppGqiL2+A6aHwG/AXfEmZMydA50U7VvJK7Wx8/Enm26G6JQrtGrpu+kK3QpQ==} + peerDependencies: + vite: 5.2.13 + '@unocss/webpack@0.60.4': resolution: {integrity: sha512-TcPuiAZZO+a+xiahrCm7eEHlP8o667n+CWv+kpz4bidY5V8Xyxs1MjzJAPVOk8Kwz86HvQZyf2CG+3powNTwKA==} peerDependencies: @@ -3066,6 +3155,9 @@ packages: '@vueuse/core@10.10.0': resolution: {integrity: sha512-vexJ/YXYs2S42B783rI95lMt3GzEwkxzC8Hb0Ndpd8rD+p+Lk/Za4bd797Ym7yq4jXqdSyj3JLChunF/vyYjUw==} + '@vueuse/core@10.10.1': + resolution: {integrity: sha512-8Vr8wxILdK+qfBjbngav8LVI+6UuM2TQCufRKMPz/GrpLHQ6dbY6kL5PLa9Eobq8JRrMaDyArPX9Jj18fMTPew==} + '@vueuse/core@10.9.0': resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} @@ -3113,6 +3205,9 @@ packages: '@vueuse/metadata@10.10.0': resolution: {integrity: sha512-UNAo2sTCAW5ge6OErPEHb5z7NEAg3XcO9Cj7OK45aZXfLLH1QkexDcZD77HBi5zvEiLOm1An+p/4b5K3Worpug==} + '@vueuse/metadata@10.10.1': + resolution: {integrity: sha512-dpEL5afVLUqbchwGiLrV6spkl4/6UOKJ3YgxFE+wWLj/LakyIZUC83bfeFgbHkRcNhsAqTQCGR74jImsLfK8pg==} + '@vueuse/metadata@10.9.0': resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} @@ -3124,6 +3219,9 @@ packages: '@vueuse/shared@10.10.0': resolution: {integrity: sha512-2aW33Ac0Uk0U+9yo3Ypg9s5KcR42cuehRWl7vnUHadQyFvCktseyxxEPBi1Eiq4D2yBGACOnqLZpx1eMc7g5Og==} + '@vueuse/shared@10.10.1': + resolution: {integrity: sha512-edqexI+RQpoeqDxTatqBZa+K87ganbrwpoP++Fd9828U3js5jzwcEDeyrYcUgkKZ5LLL8q7M5SOMvSpMrxBPxg==} + '@vueuse/shared@10.9.0': resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} @@ -6634,6 +6732,9 @@ packages: shiki@1.6.3: resolution: {integrity: sha512-lE1/YGlzFY0hQSyEfsZj18xGrTWxyhFQkaiILALqTBZPbJeYFWpbUhlmTGPOupYB/qC+H6sV4UznJzcEh3WMHQ==} + shiki@1.6.4: + resolution: {integrity: sha512-X88chM7w8jnadoZtjPTi5ahCJx9pc9f8GfEkZAEYUTlcUZIEw2D/RY86HI/LkkE7Nj8TQWkiBfaFTJ3VJT6ESg==} + side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -7124,6 +7225,18 @@ packages: vite: optional: true + unocss@0.61.0: + resolution: {integrity: sha512-7642v5tHpEpHO9dl9sqYbKT/Ri4X4lmGHhj/znE4uheEfXcptPPiZ1/hVmQVciHUSI8CnQBqDwkZuxNPDG3bTQ==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.61.0 + vite: 5.2.13 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + unplugin-vue-router@0.7.0: resolution: {integrity: sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw==} peerDependencies: @@ -7231,8 +7344,8 @@ packages: peerDependencies: '@vue/compiler-core': ^3.3 - valibot@0.30.0: - resolution: {integrity: sha512-5POBdbSkM+3nvJ6ZlyQHsggisfRtyT4tVTo1EIIShs6qCdXJnyWU5TJ68vr8iTg5zpOLjXLRiBqNx+9zwZz/rA==} + valibot@0.31.1: + resolution: {integrity: sha512-2YYIhPrnVSz/gfT2/iXVTrSj92HwchCt9Cga/6hX4B26iCz9zkIsGTS0HjDYTZfTi1Un0X6aRvhBi1cfqs/i0Q==} validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -7407,6 +7520,17 @@ packages: '@vue/composition-api': optional: true + vue-demi@0.14.8: + resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: 3.4.27 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue-devtools-stub@0.1.0: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} @@ -8615,13 +8739,13 @@ snapshots: nuxt: link:packages/nuxt vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - '@nuxt/devtools-ui-kit@1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': + '@nuxt/devtools-ui-kit@1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': dependencies: '@iconify-json/carbon': 1.1.35 '@iconify-json/logos': 1.1.43 '@iconify-json/ri': 1.1.20 '@iconify-json/tabler': 1.1.113 - '@nuxt/devtools': 1.3.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@nuxt/devtools': 1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@nuxt/kit': link:packages/kit '@nuxtjs/color-mode': 3.4.1 @@ -8631,13 +8755,13 @@ snapshots: '@unocss/preset-icons': 0.60.4 '@unocss/preset-mini': 0.60.4 '@unocss/reset': 0.60.4 - '@vueuse/core': 10.10.0(vue@3.4.27(typescript@5.4.5)) + '@vueuse/core': 10.10.1(vue@3.4.27(typescript@5.4.5)) '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.27(typescript@5.4.5)) '@vueuse/nuxt': 10.10.0(nuxt@packages+nuxt)(vue@3.4.27(typescript@5.4.5)) defu: 6.1.4 focus-trap: 7.5.4 splitpanes: 3.1.5 - unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) v-lazy-show: 0.2.4(@vue/compiler-core@3.4.27) transitivePeerDependencies: - '@unocss/webpack' @@ -8675,13 +8799,13 @@ snapshots: rc9: 2.1.2 semver: 7.6.2 - '@nuxt/devtools@1.3.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: '@antfu/utils': 0.7.8 '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@nuxt/devtools-wizard': 1.3.3 '@nuxt/kit': link:packages/kit - '@vue/devtools-applet': 7.1.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-applet': 7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-core': 7.1.3(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) birpc: 0.2.17 @@ -8781,17 +8905,17 @@ snapshots: string-width: 4.2.3 webpack: 5.92.0 - '@nuxt/scripts@0.4.7(@nuxt/devtools@1.3.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': + '@nuxt/scripts@0.5.1(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': dependencies: '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - '@nuxt/devtools-ui-kit': 1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) + '@nuxt/devtools-ui-kit': 1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) '@nuxt/kit': link:packages/kit '@types/google.maps': 3.55.9 '@types/stripe-v3': 3.1.33 '@types/vimeo__player': 2.18.3 '@types/youtube': 0.0.50 '@unhead/vue': 1.9.12(vue@3.4.27(typescript@5.4.5)) - '@vueuse/core': 10.10.0(vue@3.4.27(typescript@5.4.5)) + '@vueuse/core': 10.10.1(vue@3.4.27(typescript@5.4.5)) consola: 3.2.3 defu: 6.1.4 estree-walker: 3.0.3 @@ -8803,7 +8927,7 @@ snapshots: pathe: 1.1.2 pkg-types: 1.1.1 semver: 7.6.2 - shiki: 1.6.3 + shiki: 1.6.4 sirv: 2.0.4 std-env: 3.7.0 third-party-capital: 1.0.30 @@ -8811,7 +8935,7 @@ snapshots: unimport: 3.7.2(rollup@4.18.0) unplugin: 1.10.1 unstorage: 1.10.2(ioredis@5.3.2) - valibot: 0.30.0 + valibot: 0.31.1 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9158,6 +9282,8 @@ snapshots: '@shikijs/core@1.6.3': {} + '@shikijs/core@1.6.4': {} + '@shikijs/transformers@1.1.2': dependencies: shiki: 1.1.2 @@ -9612,6 +9738,16 @@ snapshots: transitivePeerDependencies: - rollup + '@unocss/astro@0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/reset': 0.61.0 + '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + optionalDependencies: + vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + transitivePeerDependencies: + - rollup + '@unocss/cli@0.60.4(rollup@4.18.0)': dependencies: '@ampproject/remapping': 2.3.0 @@ -9630,17 +9766,46 @@ snapshots: transitivePeerDependencies: - rollup + '@unocss/cli@0.61.0(rollup@4.18.0)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@unocss/config': 0.61.0 + '@unocss/core': 0.61.0 + '@unocss/preset-uno': 0.61.0 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.10 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + '@unocss/config@0.60.4': dependencies: '@unocss/core': 0.60.4 unconfig: 0.3.13 + '@unocss/config@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + unconfig: 0.3.13 + '@unocss/core@0.60.4': {} + '@unocss/core@0.61.0': {} + '@unocss/extractor-arbitrary-variants@0.60.4': dependencies: '@unocss/core': 0.60.4 + '@unocss/extractor-arbitrary-variants@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/inspector@0.60.4': dependencies: '@unocss/core': 0.60.4 @@ -9648,6 +9813,13 @@ snapshots: gzip-size: 6.0.0 sirv: 2.0.4 + '@unocss/inspector@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/rule-utils': 0.61.0 + gzip-size: 6.0.0 + sirv: 2.0.4 + '@unocss/nuxt@0.60.4(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.0(esbuild@0.21.5))': dependencies: '@nuxt/kit': link:packages/kit @@ -9663,7 +9835,7 @@ snapshots: '@unocss/reset': 0.60.4 '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)) - unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) transitivePeerDependencies: - postcss - rollup @@ -9681,10 +9853,24 @@ snapshots: magic-string: 0.30.10 postcss: 8.4.38 + '@unocss/postcss@0.61.0(postcss@8.4.38)': + dependencies: + '@unocss/config': 0.61.0 + '@unocss/core': 0.61.0 + '@unocss/rule-utils': 0.61.0 + css-tree: 2.3.1 + fast-glob: 3.3.2 + magic-string: 0.30.10 + postcss: 8.4.38 + '@unocss/preset-attributify@0.60.4': dependencies: '@unocss/core': 0.60.4 + '@unocss/preset-attributify@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/preset-icons@0.60.4': dependencies: '@iconify/utils': 2.1.24 @@ -9693,21 +9879,44 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/preset-icons@0.61.0': + dependencies: + '@iconify/utils': 2.1.24 + '@unocss/core': 0.61.0 + ofetch: 1.3.4 + transitivePeerDependencies: + - supports-color + '@unocss/preset-mini@0.60.4': dependencies: '@unocss/core': 0.60.4 '@unocss/extractor-arbitrary-variants': 0.60.4 '@unocss/rule-utils': 0.60.4 + '@unocss/preset-mini@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/extractor-arbitrary-variants': 0.61.0 + '@unocss/rule-utils': 0.61.0 + '@unocss/preset-tagify@0.60.4': dependencies: '@unocss/core': 0.60.4 + '@unocss/preset-tagify@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/preset-typography@0.60.4': dependencies: '@unocss/core': 0.60.4 '@unocss/preset-mini': 0.60.4 + '@unocss/preset-typography@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/preset-mini': 0.61.0 + '@unocss/preset-uno@0.60.4': dependencies: '@unocss/core': 0.60.4 @@ -9715,26 +9924,53 @@ snapshots: '@unocss/preset-wind': 0.60.4 '@unocss/rule-utils': 0.60.4 + '@unocss/preset-uno@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/preset-mini': 0.61.0 + '@unocss/preset-wind': 0.61.0 + '@unocss/rule-utils': 0.61.0 + '@unocss/preset-web-fonts@0.60.4': dependencies: '@unocss/core': 0.60.4 ofetch: 1.3.4 + '@unocss/preset-web-fonts@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + ofetch: 1.3.4 + '@unocss/preset-wind@0.60.4': dependencies: '@unocss/core': 0.60.4 '@unocss/preset-mini': 0.60.4 '@unocss/rule-utils': 0.60.4 + '@unocss/preset-wind@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/preset-mini': 0.61.0 + '@unocss/rule-utils': 0.61.0 + '@unocss/reset@0.60.4': {} + '@unocss/reset@0.61.0': {} + '@unocss/rule-utils@0.60.4': dependencies: '@unocss/core': 0.60.4 magic-string: 0.30.10 + '@unocss/rule-utils@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + magic-string: 0.30.10 + '@unocss/scope@0.60.4': {} + '@unocss/scope@0.61.0': {} + '@unocss/transformer-attributify-jsx-babel@0.60.4': dependencies: '@babel/core': 7.24.7 @@ -9744,24 +9980,51 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/transformer-attributify-jsx-babel@0.61.0': + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) + '@unocss/core': 0.61.0 + transitivePeerDependencies: + - supports-color + '@unocss/transformer-attributify-jsx@0.60.4': dependencies: '@unocss/core': 0.60.4 + '@unocss/transformer-attributify-jsx@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/transformer-compile-class@0.60.4': dependencies: '@unocss/core': 0.60.4 + '@unocss/transformer-compile-class@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/transformer-directives@0.60.4': dependencies: '@unocss/core': 0.60.4 '@unocss/rule-utils': 0.60.4 css-tree: 2.3.1 + '@unocss/transformer-directives@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/rule-utils': 0.61.0 + css-tree: 2.3.1 + '@unocss/transformer-variant-group@0.60.4': dependencies: '@unocss/core': 0.60.4 + '@unocss/transformer-variant-group@0.61.0': + dependencies: + '@unocss/core': 0.61.0 + '@unocss/vite@0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 @@ -9778,6 +10041,22 @@ snapshots: transitivePeerDependencies: - rollup + '@unocss/vite@0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@unocss/config': 0.61.0 + '@unocss/core': 0.61.0 + '@unocss/inspector': 0.61.0 + '@unocss/scope': 0.61.0 + '@unocss/transformer-directives': 0.61.0 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.10 + vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + transitivePeerDependencies: + - rollup + '@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5))': dependencies: '@ampproject/remapping': 2.3.0 @@ -9970,12 +10249,12 @@ snapshots: '@vue/devtools-api@6.6.3': {} - '@vue/devtools-applet@7.1.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-applet@7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: '@vue/devtools-core': 7.1.3(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-shared': 7.1.3 - '@vue/devtools-ui': 7.1.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-ui': 7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5)) lodash-es: 4.17.21 perfect-debounce: 1.0.0 shiki: 1.3.0 @@ -10025,9 +10304,9 @@ snapshots: dependencies: rfdc: 1.3.1 - '@vue/devtools-ui@7.1.3(@unocss/reset@0.60.4)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-ui@7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5))': dependencies: - '@unocss/reset': 0.60.4 + '@unocss/reset': 0.61.0 '@vue/devtools-shared': 7.1.3 '@vueuse/components': 10.9.0(vue@3.4.27(typescript@5.4.5)) '@vueuse/core': 10.10.0(vue@3.4.27(typescript@5.4.5)) @@ -10035,7 +10314,7 @@ snapshots: colord: 2.9.3 floating-vue: 5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)) focus-trap: 7.5.4 - unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + unocss: 0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) vue: 3.4.27(typescript@5.4.5) transitivePeerDependencies: - '@vue/composition-api' @@ -10124,6 +10403,16 @@ snapshots: - '@vue/composition-api' - vue + '@vueuse/core@10.10.1(vue@3.4.27(typescript@5.4.5))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.10.1 + '@vueuse/shared': 10.10.1(vue@3.4.27(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@vueuse/core@10.9.0(vue@3.4.27(typescript@5.4.5))': dependencies: '@types/web-bluetooth': 0.0.20 @@ -10147,6 +10436,8 @@ snapshots: '@vueuse/metadata@10.10.0': {} + '@vueuse/metadata@10.10.1': {} + '@vueuse/metadata@10.9.0': {} '@vueuse/nuxt@10.10.0(nuxt@packages+nuxt)(vue@3.4.27(typescript@5.4.5))': @@ -10168,6 +10459,13 @@ snapshots: - '@vue/composition-api' - vue + '@vueuse/shared@10.10.1(vue@3.4.27(typescript@5.4.5))': + dependencies: + vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@vueuse/shared@10.9.0(vue@3.4.27(typescript@5.4.5))': dependencies: vue-demi: 0.14.7(vue@3.4.27(typescript@5.4.5)) @@ -14332,6 +14630,10 @@ snapshots: dependencies: '@shikijs/core': 1.6.3 + shiki@1.6.4: + dependencies: + '@shikijs/core': 1.6.4 + side-channel@1.0.4: dependencies: call-bind: 1.0.7 @@ -14842,7 +15144,7 @@ snapshots: universalify@2.0.0: {} - unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): dependencies: '@unocss/astro': 0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@unocss/cli': 0.60.4(rollup@4.18.0) @@ -14872,6 +15174,36 @@ snapshots: - rollup - supports-color + unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + dependencies: + '@unocss/astro': 0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/cli': 0.61.0(rollup@4.18.0) + '@unocss/core': 0.61.0 + '@unocss/extractor-arbitrary-variants': 0.61.0 + '@unocss/postcss': 0.61.0(postcss@8.4.38) + '@unocss/preset-attributify': 0.61.0 + '@unocss/preset-icons': 0.61.0 + '@unocss/preset-mini': 0.61.0 + '@unocss/preset-tagify': 0.61.0 + '@unocss/preset-typography': 0.61.0 + '@unocss/preset-uno': 0.61.0 + '@unocss/preset-web-fonts': 0.61.0 + '@unocss/preset-wind': 0.61.0 + '@unocss/reset': 0.61.0 + '@unocss/transformer-attributify-jsx': 0.61.0 + '@unocss/transformer-attributify-jsx-babel': 0.61.0 + '@unocss/transformer-compile-class': 0.61.0 + '@unocss/transformer-directives': 0.61.0 + '@unocss/transformer-variant-group': 0.61.0 + '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + optionalDependencies: + '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)) + vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + unplugin-vue-router@0.7.0(rollup@4.18.0)(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)): dependencies: '@babel/types': 7.24.5 @@ -14977,7 +15309,7 @@ snapshots: dependencies: '@vue/compiler-core': 3.4.27 - valibot@0.30.0: {} + valibot@0.31.1: {} validate-npm-package-license@3.0.4: dependencies: @@ -15182,6 +15514,10 @@ snapshots: dependencies: vue: 3.4.27(typescript@5.4.5) + vue-demi@0.14.8(vue@3.4.27(typescript@5.4.5)): + dependencies: + vue: 3.4.27(typescript@5.4.5) + vue-devtools-stub@0.1.0: {} vue-eslint-parser@9.4.2(eslint@9.4.0): From fbb66c43be7dfd502e210cd582d7f80d43694f3a Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 12 Jun 2024 17:32:53 +0100 Subject: [PATCH 02/26] fix(nuxt): overwrite `#app/defaults` rather than augmenting (#27567) --- packages/nuxt/src/core/nuxt.ts | 1 + packages/nuxt/src/core/templates.ts | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index e319d53d7c..b64525af10 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -125,6 +125,7 @@ async function initNuxt (nuxt: Nuxt) { // Add nuxt types nuxt.hook('prepare:types', (opts) => { opts.references.push({ types: 'nuxt' }) + opts.references.push({ path: resolve(nuxt.options.buildDir, 'types/app-defaults.d.ts') }) opts.references.push({ path: resolve(nuxt.options.buildDir, 'types/plugins.d.ts') }) // Add vue shim if (nuxt.options.typescript.shim) { diff --git a/packages/nuxt/src/core/templates.ts b/packages/nuxt/src/core/templates.ts index 9e120da0ff..8c54e9e79d 100644 --- a/packages/nuxt/src/core/templates.ts +++ b/packages/nuxt/src/core/templates.ts @@ -7,7 +7,7 @@ import escapeRE from 'escape-string-regexp' import { hash } from 'ohash' import { camelCase } from 'scule' import { filename } from 'pathe/utils' -import type { NuxtTemplate } from 'nuxt/schema' +import type { NuxtTemplate, NuxtTypeTemplate } from 'nuxt/schema' import { annotatePlugins, checkForCircularDependencies } from './app' @@ -96,6 +96,20 @@ export const serverPluginTemplate: NuxtTemplate = { }, } +export const appDefaults: NuxtTypeTemplate = { + filename: 'types/app-defaults.d.ts', + getContents: (ctx) => { + const isV4 = ctx.nuxt.options.future.compatibilityVersion === 4 + return ` +declare module '#app/defaults' { + type DefaultAsyncDataErrorValue = ${isV4 ? 'undefined' : 'null'} + type DefaultAsyncDataValue = ${isV4 ? 'undefined' : 'null'} + type DefaultErrorValue = ${isV4 ? 'undefined' : 'null'} + type DedupeOption = ${isV4 ? '\'cancel\' | \'defer\'' : 'boolean | \'cancel\' | \'defer\''} +}` + }, +} + export const pluginsDeclaration: NuxtTemplate = { filename: 'types/plugins.d.ts', getContents: async (ctx) => { @@ -112,8 +126,6 @@ export const pluginsDeclaration: NuxtTemplate = { const pluginsName = (await annotatePlugins(ctx.nuxt, ctx.app.plugins)).filter(p => p.name).map(p => `'${p.name}'`) - const isV4 = ctx.nuxt.options.future.compatibilityVersion === 4 - return `// Generated by Nuxt' import type { Plugin } from '#app' @@ -132,13 +144,6 @@ declare module '#app' { } } -declare module '#app/defaults' { - type DefaultAsyncDataErrorValue = ${isV4 ? 'undefined' : 'null'} - type DefaultAsyncDataValue = ${isV4 ? 'undefined' : 'null'} - type DefaultErrorValue = ${isV4 ? 'undefined' : 'null'} - type DedupeOption = ${isV4 ? '\'cancel\' | \'defer\'' : 'boolean | \'cancel\' | \'defer\''} -} - declare module 'vue' { interface ComponentCustomProperties extends NuxtAppInjections { } } From 1321c56483e09b3eb255c1ef3900a13eedd68a28 Mon Sep 17 00:00:00 2001 From: Okuto Oyama <0910yama@gmail.com> Date: Thu, 13 Jun 2024 01:46:17 +0900 Subject: [PATCH 03/26] fix(nuxt): export `useRouteAnnouncer` (#27562) --- packages/nuxt/src/app/composables/index.ts | 1 + packages/nuxt/src/imports/presets.ts | 4 ++++ test/nuxt/composables.test.ts | 1 + 3 files changed, 6 insertions(+) diff --git a/packages/nuxt/src/app/composables/index.ts b/packages/nuxt/src/app/composables/index.ts index dbb5e96079..c0abdec2e4 100644 --- a/packages/nuxt/src/app/composables/index.ts +++ b/packages/nuxt/src/app/composables/index.ts @@ -37,3 +37,4 @@ export { reloadNuxtApp } from './chunk' export { useRequestURL } from './url' export { usePreviewMode } from './preview' export { useId } from './id' +export { useRouteAnnouncer } from './route-announcer' diff --git a/packages/nuxt/src/imports/presets.ts b/packages/nuxt/src/imports/presets.ts index c5a6b52261..068615cb91 100644 --- a/packages/nuxt/src/imports/presets.ts +++ b/packages/nuxt/src/imports/presets.ts @@ -109,6 +109,10 @@ const granularAppPresets: InlinePreset[] = [ imports: ['useId'], from: '#app/composables/id', }, + { + imports: ['useRouteAnnouncer'], + from: '#app/composables/route-announcer', + }, ] export const scriptsStubsPreset = { diff --git a/test/nuxt/composables.test.ts b/test/nuxt/composables.test.ts index d4bf1eaaa4..e22488309b 100644 --- a/test/nuxt/composables.test.ts +++ b/test/nuxt/composables.test.ts @@ -53,6 +53,7 @@ describe('app config', () => { describe('composables', () => { it('are all tested', () => { const testedComposables: string[] = [ + 'useRouteAnnouncer', 'clearNuxtData', 'refreshNuxtData', 'useAsyncData', From 803100e34ea19858e0c193056d3ce6975c2c3234 Mon Sep 17 00:00:00 2001 From: Valerii Strilets Date: Wed, 12 Jun 2024 21:51:09 +0300 Subject: [PATCH 04/26] fix(nuxt): remove backticks around runtimeConfig warning log (#27549) --- packages/nuxt/src/app/nuxt.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nuxt/src/app/nuxt.ts b/packages/nuxt/src/app/nuxt.ts index 8839005f3b..75ce824a47 100644 --- a/packages/nuxt/src/app/nuxt.ts +++ b/packages/nuxt/src/app/nuxt.ts @@ -568,7 +568,7 @@ function wrappedConfig (runtimeConfig: Record) { if (typeof p === 'string' && p !== 'public' && !(p in target) && !p.startsWith('__v') /* vue check for reactivity, e.g. `__v_isRef` */) { if (!loggedKeys.has(p)) { loggedKeys.add(p) - console.warn(`[nuxt] Could not access \`${p}\`. The only available runtime config keys on the client side are ${keys.join(', ')} and ${lastKey}. See \`https://nuxt.com/docs/guide/going-further/runtime-config\` for more information.`) + console.warn(`[nuxt] Could not access \`${p}\`. The only available runtime config keys on the client side are ${keys.join(', ')} and ${lastKey}. See https://nuxt.com/docs/guide/going-further/runtime-config for more information.`) } } return Reflect.get(target, p, receiver) From 6bca120d02cc974ee74fd0a12c73e21d512948d3 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 12 Jun 2024 20:55:24 +0100 Subject: [PATCH 05/26] fix(nuxt): close top-level watcher on nuxt 'close' (#27571) --- packages/nuxt/src/core/builder.ts | 1 + packages/nuxt/src/core/nuxt.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/core/builder.ts b/packages/nuxt/src/core/builder.ts index c66e33c198..ca1b41dfd7 100644 --- a/packages/nuxt/src/core/builder.ts +++ b/packages/nuxt/src/core/builder.ts @@ -136,6 +136,7 @@ function createGranularWatcher () { console.timeEnd('[nuxt] builder:chokidar:watch') } }) + nuxt.hook('close', () => watcher?.close()) } } diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index b64525af10..6d4d62524e 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -49,7 +49,10 @@ export function createNuxt (options: NuxtOptions): Nuxt { addHooks: hooks.addHooks, hook: hooks.hook, ready: () => initNuxt(nuxt), - close: () => Promise.resolve(hooks.callHook('close', nuxt)), + close: async () => { + await hooks.callHook('close', nuxt) + hooks.removeAllHooks() + }, vfs: {}, apps: {}, } From d443a24cff1a05eafe155e2db72f2022daef0719 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 20:55:40 +0100 Subject: [PATCH 06/26] chore(deps): update all non-major dependencies (main) (#27568) --- .github/workflows/ci.yml | 4 +- .github/workflows/scorecards.yml | 2 +- packages/kit/package.json | 2 +- packages/kit/src/loader/config.ts | 4 +- packages/nuxt/package.json | 2 +- packages/schema/package.json | 4 +- pnpm-lock.yaml | 97 ++++++++++++++++--------------- 7 files changed, 59 insertions(+), 56 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f98bf80f1..7ea1234165 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,7 +83,7 @@ jobs: run: pnpm install - name: Initialize CodeQL - uses: github/codeql-action/init@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/init@530d4feaa9c62aaab2d250371e2061eb7a172363 # v3.25.9 with: languages: javascript queries: +security-and-quality @@ -95,7 +95,7 @@ jobs: path: packages - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/analyze@530d4feaa9c62aaab2d250371e2061eb7a172363 # v3.25.9 with: category: "/language:javascript" diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 7a36b4a412..1f091275de 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -68,7 +68,7 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/upload-sarif@530d4feaa9c62aaab2d250371e2061eb7a172363 # v3.25.9 if: github.repository == 'nuxt/nuxt' && success() with: sarif_file: results.sarif diff --git a/packages/kit/package.json b/packages/kit/package.json index 3544978785..576702fa62 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@nuxt/schema": "workspace:*", - "c12": "^1.10.0", + "c12": "^1.11.1", "consola": "^3.2.3", "defu": "^6.1.4", "destr": "^2.0.3", diff --git a/packages/kit/src/loader/config.ts b/packages/kit/src/loader/config.ts index fab118bf6c..3c5894ea68 100644 --- a/packages/kit/src/loader/config.ts +++ b/packages/kit/src/loader/config.ts @@ -7,7 +7,9 @@ import { NuxtConfigSchema } from '@nuxt/schema' import { globby } from 'globby' import defu from 'defu' -export interface LoadNuxtConfigOptions extends LoadConfigOptions {} +export interface LoadNuxtConfigOptions extends Omit, 'overrides'> { + overrides?: Exclude['overrides'], Promise | Function> +} const layerSchemaKeys = ['future', 'srcDir', 'rootDir', 'dir'] const layerSchema = Object.fromEntries(Object.entries(NuxtConfigSchema).filter(([key]) => layerSchemaKeys.includes(key))) diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index e08492f35d..7f7182a30f 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -70,7 +70,7 @@ "@unhead/vue": "^1.9.12", "@vue/shared": "^3.4.27", "acorn": "8.11.3", - "c12": "^1.10.0", + "c12": "^1.11.1", "chokidar": "^3.6.0", "cookie-es": "^1.1.0", "defu": "^6.1.4", diff --git a/packages/schema/package.json b/packages/schema/package.json index eb43f7fd84..3d1c9b4594 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -45,7 +45,7 @@ "@vue/compiler-core": "3.4.27", "@vue/compiler-sfc": "3.4.27", "@vue/language-core": "2.0.21", - "c12": "1.10.0", + "c12": "1.11.1", "esbuild-loader": "4.1.0", "h3": "1.11.1", "ignore": "5.3.1", @@ -63,7 +63,7 @@ "webpack-dev-middleware": "7.2.1" }, "dependencies": { - "compatx": "^0.1.3", + "compatx": "^0.1.8", "consola": "^3.2.3", "defu": "^6.1.4", "hookable": "^5.5.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbd4dc3abd..1a2b693dd6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: version: link:packages/kit '@nuxt/test-utils': specifier: 3.13.1 - version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) '@nuxt/webpack-builder': specifier: workspace:* version: link:packages/webpack @@ -67,7 +67,7 @@ importers: version: 0.6.1 changelogen: specifier: 0.5.5 - version: 0.5.5 + version: 0.5.5(magicast@0.3.4) consola: specifier: 3.2.3 version: 3.2.3 @@ -109,7 +109,7 @@ importers: version: 0.41.0 nitropack: specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13) + version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) nuxi: specifier: 3.12.0 version: 3.12.0 @@ -148,7 +148,7 @@ importers: version: 1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) vitest-environment-nuxt: specifier: 1.0.0 - version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) vue: specifier: 3.4.27 version: 3.4.27(typescript@5.4.5) @@ -165,8 +165,8 @@ importers: specifier: workspace:* version: link:../schema c12: - specifier: ^1.10.0 - version: 1.10.0 + specifier: ^1.11.1 + version: 1.11.1(magicast@0.3.4) consola: specifier: ^3.2.3 version: 3.2.3 @@ -236,7 +236,7 @@ importers: version: 4.17.21 nitropack: specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13) + version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) unbuild: specifier: latest version: 2.0.0(sass@1.69.4)(typescript@5.4.5) @@ -289,8 +289,8 @@ importers: specifier: 8.11.3 version: 8.11.3 c12: - specifier: ^1.10.0 - version: 1.10.0 + specifier: ^1.11.1 + version: 1.11.1(magicast@0.3.4) chokidar: specifier: ^3.6.0 version: 3.6.0 @@ -347,7 +347,7 @@ importers: version: 1.7.1 nitropack: specifier: ^2.9.6 - version: 2.9.6(encoding@0.1.13) + version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) nuxi: specifier: ^3.12.0 version: 3.12.0 @@ -461,8 +461,8 @@ importers: packages/schema: dependencies: compatx: - specifier: ^0.1.3 - version: 0.1.3 + specifier: ^0.1.8 + version: 0.1.8 consola: specifier: ^3.2.3 version: 3.2.3 @@ -531,8 +531,8 @@ importers: specifier: 2.0.21 version: 2.0.21(typescript@5.4.5) c12: - specifier: 1.10.0 - version: 1.10.0 + specifier: 1.11.1 + version: 1.11.1(magicast@0.3.4) esbuild-loader: specifier: 4.1.0 version: 4.1.0(webpack@5.92.0) @@ -544,7 +544,7 @@ importers: version: 5.3.1 nitropack: specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13) + version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) ofetch: specifier: 1.3.4 version: 1.3.4 @@ -2471,9 +2471,6 @@ packages: '@shikijs/core@1.3.0': resolution: {integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==} - '@shikijs/core@1.6.3': - resolution: {integrity: sha512-QnJKHFUW95GnlJLJGP6QLx4M69HM0KlXk+R2Y8lr/x4nAx1Yb/lsuxq4XwybuUjTxbJk+BT0g/kvn0bcsjGGHg==} - '@shikijs/core@1.6.4': resolution: {integrity: sha512-WTU9rzZae1p2v6LOxMf6LhtmZOkIHYYW160IuahUyJy7YXPPjyWZLR1ag+SgD22ZMxZtz1gfU6Tccc8t0Il/XA==} @@ -3544,8 +3541,13 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - c12@1.10.0: - resolution: {integrity: sha512-0SsG7UDhoRWcuSvKWHaXmu5uNjDCDN3nkQLRL4Q42IlFy+ze58FcCoI3uPwINXinkz7ZinbhEgyzYFw9u9ZV8g==} + c12@1.11.1: + resolution: {integrity: sha512-KDU0TvSvVdaYcQKQ6iPHATGz/7p/KiVjPg4vQrB6Jg/wX9R0yl5RZxWm9IoZqaIHD2+6PZd81+KMGwRr/lRIUg==} + peerDependencies: + magicast: ^0.3.4 + peerDependenciesMeta: + magicast: + optional: true cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} @@ -3727,8 +3729,8 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compatx@0.1.3: - resolution: {integrity: sha512-MWspQwvBk5xeLZMetIfjOozTAtmAIICz1mtol6NbBpCSllXOO+HvWMO87B18rcFtqjfrZ0tIFOH9gNG63ep+mw==} + compatx@0.1.8: + resolution: {integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==} compress-commons@6.0.2: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} @@ -4576,8 +4578,8 @@ packages: get-tsconfig@4.7.3: resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} - giget@1.2.1: - resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==} + giget@1.2.3: + resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true git-config-path@2.0.0: @@ -6729,9 +6731,6 @@ packages: shiki@1.3.0: resolution: {integrity: sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww==} - shiki@1.6.3: - resolution: {integrity: sha512-lE1/YGlzFY0hQSyEfsZj18xGrTWxyhFQkaiILALqTBZPbJeYFWpbUhlmTGPOupYB/qC+H6sV4UznJzcEh3WMHQ==} - shiki@1.6.4: resolution: {integrity: sha512-X88chM7w8jnadoZtjPTi5ahCJx9pc9f8GfEkZAEYUTlcUZIEw2D/RY86HI/LkkE7Nj8TQWkiBfaFTJ3VJT6ESg==} @@ -8993,11 +8992,11 @@ snapshots: rc9: 2.1.2 std-env: 3.7.0 - '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5))': + '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema - c12: 1.10.0 + c12: 1.11.1(magicast@0.3.4) consola: 3.2.3 defu: 6.1.4 destr: 2.0.3 @@ -9008,7 +9007,7 @@ snapshots: h3: 1.11.1 local-pkg: 0.5.0 magic-string: 0.30.10 - nitropack: 2.9.6(encoding@0.1.13) + nitropack: 2.9.6(encoding@0.1.13)(magicast@0.3.4) node-fetch-native: 1.6.4 ofetch: 1.3.4 pathe: 1.1.2 @@ -9020,7 +9019,7 @@ snapshots: unenv: 1.9.0 unplugin: 1.10.1 vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) vue: 3.4.27(typescript@5.4.5) vue-router: 4.3.3(vue@3.4.27(typescript@5.4.5)) optionalDependencies: @@ -9029,6 +9028,8 @@ snapshots: happy-dom: 14.12.0 playwright-core: 1.44.1 vitest: 1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) + transitivePeerDependencies: + - magicast '@nuxtjs/color-mode@3.4.1': dependencies: @@ -9068,7 +9069,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 scule: 1.3.0 - shiki: 1.6.3 + shiki: 1.6.4 ufo: 1.5.3 unified: 11.0.4 unist-builder: 4.0.0 @@ -9280,8 +9281,6 @@ snapshots: '@shikijs/core@1.3.0': {} - '@shikijs/core@1.6.3': {} - '@shikijs/core@1.6.4': {} '@shikijs/transformers@1.1.2': @@ -10812,13 +10811,13 @@ snapshots: dependencies: run-applescript: 7.0.0 - c12@1.10.0: + c12@1.11.1(magicast@0.3.4): dependencies: chokidar: 3.6.0 confbox: 0.1.7 defu: 6.1.4 dotenv: 16.4.5 - giget: 1.2.1 + giget: 1.2.3 jiti: 1.21.6 mlly: 1.7.1 ohash: 1.1.3 @@ -10826,6 +10825,8 @@ snapshots: perfect-debounce: 1.0.0 pkg-types: 1.1.1 rc9: 2.1.2 + optionalDependencies: + magicast: 0.3.4 cac@6.7.14: {} @@ -10897,9 +10898,9 @@ snapshots: chalk@5.3.0: {} - changelogen@0.5.5: + changelogen@0.5.5(magicast@0.3.4): dependencies: - c12: 1.10.0 + c12: 1.11.1(magicast@0.3.4) colorette: 2.0.20 consola: 3.2.3 convert-gitmoji: 0.1.3 @@ -10914,6 +10915,8 @@ snapshots: semver: 7.6.2 std-env: 3.7.0 yaml: 2.3.4 + transitivePeerDependencies: + - magicast char-regex@1.0.2: {} @@ -11017,7 +11020,7 @@ snapshots: commondir@1.0.1: {} - compatx@0.1.3: {} + compatx@0.1.8: {} compress-commons@6.0.2: dependencies: @@ -12033,7 +12036,7 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - giget@1.2.1: + giget@1.2.3: dependencies: citty: 0.1.6 consola: 3.2.3 @@ -13377,7 +13380,7 @@ snapshots: neo-async@2.6.2: {} - nitropack@2.9.6(encoding@0.1.13): + nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4): dependencies: '@cloudflare/kv-asset-handler': 0.3.1 '@netlify/functions': 2.6.0 @@ -13392,7 +13395,7 @@ snapshots: '@types/http-proxy': 1.17.14 '@vercel/nft': 0.26.4(encoding@0.1.13) archiver: 7.0.1 - c12: 1.10.0 + c12: 1.11.1(magicast@0.3.4) chalk: 5.3.0 chokidar: 3.6.0 citty: 0.1.6 @@ -13463,6 +13466,7 @@ snapshots: - drizzle-orm - encoding - idb-keyval + - magicast - supports-color - uWebSockets.js @@ -14626,10 +14630,6 @@ snapshots: dependencies: '@shikijs/core': 1.3.0 - shiki@1.6.3: - dependencies: - '@shikijs/core': 1.6.3 - shiki@1.6.4: dependencies: '@shikijs/core': 1.6.4 @@ -15425,9 +15425,9 @@ snapshots: sass: 1.69.4 terser: 5.27.0 - vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)): + vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)): dependencies: - '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -15438,6 +15438,7 @@ snapshots: - h3 - happy-dom - jsdom + - magicast - nitropack - playwright-core - vite From c2f2627b990a5c4a99c6e96059c5b13fbd4a678e Mon Sep 17 00:00:00 2001 From: garthreckers Date: Thu, 13 Jun 2024 01:44:30 -0700 Subject: [PATCH 07/26] docs: add warning about bridge migration with `head` (#27575) --- docs/6.bridge/6.meta.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/6.bridge/6.meta.md b/docs/6.bridge/6.meta.md index 6903a774e6..e29ca7995f 100644 --- a/docs/6.bridge/6.meta.md +++ b/docs/6.bridge/6.meta.md @@ -98,6 +98,10 @@ export default defineNuxtComponent({ ``` +::warning +Possible breaking change: `head` receives the nuxt app but cannot access the component instance. If the code in your `head` tries to access the data object through `this` or `this.$data`, you will need to migrate to the `useHead` composable. +:: + ## Title Template If you want to use a function (for full control), then this cannot be set in your nuxt.config, and it is recommended instead to set it within your `/layouts` directory. From d195930aaeff5523721f68bd651f14c6fd5fb3ab Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Thu, 13 Jun 2024 12:51:00 +0100 Subject: [PATCH 08/26] perf(kit): deduplicate layers before resolving config (#27582) --- packages/kit/src/loader/config.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/kit/src/loader/config.ts b/packages/kit/src/loader/config.ts index 3c5894ea68..b2c4d1b883 100644 --- a/packages/kit/src/loader/config.ts +++ b/packages/kit/src/loader/config.ts @@ -42,10 +42,15 @@ export async function loadNuxtConfig (opts: LoadNuxtConfigOptions): Promise[] = [] + const processedLayers = new Set() for (const layer of layers) { // Resolve `rootDir` & `srcDir` of layers layer.config = layer.config || {} - layer.config.rootDir = layer.config.rootDir ?? layer.cwd + layer.config.rootDir = layer.config.rootDir ?? layer.cwd! + + // Only process/resolve layers once + if (processedLayers.has(layer.config.rootDir)) { continue } + processedLayers.add(layer.config.rootDir) // Normalise layer directories layer.config = await applyDefaults(layerSchema, layer.config as NuxtConfig & Record) as unknown as NuxtConfig From cae13aaa24477b0dfa2077f5b3aeb07351eb128e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Jun 2024 13:37:54 +0100 Subject: [PATCH 09/26] chore(deps): update all non-major dependencies (main) (#27573) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/autofix-docs.yml | 2 +- .github/workflows/autofix.yml | 2 +- .github/workflows/benchmark.yml | 2 +- .github/workflows/changelog.yml | 2 +- .github/workflows/check-links.yml | 2 +- .github/workflows/ci.yml | 18 ++-- .github/workflows/dependency-review.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/introspect.yml | 2 +- .github/workflows/release-pr.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/reproduire.yml | 2 +- .github/workflows/scorecards.yml | 2 +- package.json | 4 +- packages/nuxt/package.json | 6 +- packages/schema/package.json | 2 +- pnpm-lock.yaml | 112 ++++++++++++------------ 17 files changed, 83 insertions(+), 83 deletions(-) diff --git a/.github/workflows/autofix-docs.yml b/.github/workflows/autofix-docs.yml index edc59497ef..d90a8e2f9e 100644 --- a/.github/workflows/autofix-docs.yml +++ b/.github/workflows/autofix-docs.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 4af68cee5e..03d5a654f3 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index f3bc4aa393..83645d7c3e 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index b2e4b57ea5..492a0fb118 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - run: corepack enable diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml index 4a81648ec0..14a3db9075 100644 --- a/.github/workflows/check-links.yml +++ b/.github/workflows/check-links.yml @@ -25,7 +25,7 @@ jobs: restore-keys: cache-lychee- # check links with Lychee - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Lychee link checker uses: lycheeverse/lychee-action@25a231001d1723960a301b7d4c82884dc7ef857d # for v1.8.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ea1234165..2a1e733ab1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,7 @@ jobs: timeout-minutes: 10 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: @@ -72,7 +72,7 @@ jobs: - build steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: @@ -111,7 +111,7 @@ jobs: module: ["bundler", "node"] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: @@ -142,7 +142,7 @@ jobs: timeout-minutes: 10 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: @@ -166,7 +166,7 @@ jobs: needs: - build steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: @@ -218,7 +218,7 @@ jobs: timeout-minutes: 15 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: @@ -248,7 +248,7 @@ jobs: TEST_PAYLOAD: ${{ matrix.payload }} SKIP_BUNDLE_SIZE: ${{ github.event_name != 'push' || matrix.env == 'dev' || matrix.builder == 'webpack' || matrix.context == 'default' || matrix.payload == 'js' || runner.os == 'Windows' }} - - uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # v4.4.1 + - uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 if: github.event_name != 'push' && matrix.env == 'built' && matrix.builder == 'vite' && matrix.context == 'default' && matrix.os == 'ubuntu-latest' && matrix.manifest == 'manifest-on' with: token: ${{ secrets.CODECOV_TOKEN }} @@ -270,7 +270,7 @@ jobs: timeout-minutes: 20 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - run: corepack enable @@ -309,7 +309,7 @@ jobs: timeout-minutes: 20 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - run: corepack enable diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 7c6cfb6746..7d1ac0d64a 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -17,6 +17,6 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: 'Dependency Review' uses: actions/dependency-review-action@72eb03d02c7872a771aacd928f3123ac62ad6d3a # v4.3.3 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index f2bdb9b4f1..624cafa244 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/workflows/introspect.yml b/.github/workflows/introspect.yml index 06f7994104..6b7f4fd586 100644 --- a/.github/workflows/introspect.yml +++ b/.github/workflows/introspect.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 # From https://github.com/rhysd/actionlint/blob/main/docs/usage.md#use-actionlint-on-github-actions - name: Check workflow files run: | diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 5f128f7df6..7a45a29223 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -29,7 +29,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: ref: ${{ github.event.issue.pull_request.head.sha }} fetch-depth: 0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d975a363f3..727d0669ea 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - run: corepack enable diff --git a/.github/workflows/reproduire.yml b/.github/workflows/reproduire.yml index b001dd9fca..e38add83d7 100644 --- a/.github/workflows/reproduire.yml +++ b/.github/workflows/reproduire.yml @@ -10,7 +10,7 @@ jobs: reproduire: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: Hebilicious/reproduire@4b686ae9cbb72dad60f001d278b6e3b2ce40a9ac # v0.0.9-mp with: label: needs reproduction diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 1f091275de..9e97020891 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: persist-credentials: false diff --git a/package.json b/package.json index eec7837f9a..ed71c0d1ec 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@types/fs-extra": "11.0.4", "@types/node": "20.14.2", "@types/semver": "7.5.8", - "@unhead/schema": "1.9.12", + "@unhead/schema": "1.9.13", "@vitejs/plugin-vue": "5.0.4", "@vitest/coverage-v8": "1.6.0", "@vue/test-utils": "2.4.6", @@ -66,7 +66,7 @@ "devalue": "5.0.0", "eslint": "9.4.0", "eslint-plugin-no-only-tests": "3.1.0", - "eslint-plugin-perfectionist": "2.10.0", + "eslint-plugin-perfectionist": "2.11.0", "eslint-typegen": "0.2.4", "execa": "9.2.0", "fs-extra": "11.2.0", diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 7f7182a30f..86c3384be6 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -65,9 +65,9 @@ "@nuxt/schema": "workspace:*", "@nuxt/telemetry": "^2.5.4", "@nuxt/vite-builder": "workspace:*", - "@unhead/dom": "^1.9.12", - "@unhead/ssr": "^1.9.12", - "@unhead/vue": "^1.9.12", + "@unhead/dom": "^1.9.13", + "@unhead/ssr": "^1.9.13", + "@unhead/vue": "^1.9.13", "@vue/shared": "^3.4.27", "acorn": "8.11.3", "c12": "^1.11.1", diff --git a/packages/schema/package.json b/packages/schema/package.json index 3d1c9b4594..c68a38367e 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -39,7 +39,7 @@ "@types/file-loader": "5.0.4", "@types/pug": "2.0.10", "@types/sass-loader": "8.0.8", - "@unhead/schema": "1.9.12", + "@unhead/schema": "1.9.13", "@vitejs/plugin-vue": "5.0.4", "@vitejs/plugin-vue-jsx": "4.0.0", "@vue/compiler-core": "3.4.27", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a2b693dd6..1b94d1c395 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,8 +51,8 @@ importers: specifier: 7.5.8 version: 7.5.8 '@unhead/schema': - specifier: 1.9.12 - version: 1.9.12 + specifier: 1.9.13 + version: 1.9.13 '@vitejs/plugin-vue': specifier: 5.0.4 version: 5.0.4(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) @@ -81,8 +81,8 @@ importers: specifier: 3.1.0 version: 3.1.0 eslint-plugin-perfectionist: - specifier: 2.10.0 - version: 2.10.0(eslint@9.4.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.4.0)) + 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)) eslint-typegen: specifier: 0.2.4 version: 0.2.4(eslint@9.4.0) @@ -274,14 +274,14 @@ importers: specifier: ^14.18.0 || >=16.10.0 version: 20.14.2 '@unhead/dom': - specifier: ^1.9.12 - version: 1.9.12 + specifier: ^1.9.13 + version: 1.9.13 '@unhead/ssr': - specifier: ^1.9.12 - version: 1.9.12 + specifier: ^1.9.13 + version: 1.9.13 '@unhead/vue': - specifier: ^1.9.12 - version: 1.9.12(vue@3.4.27(typescript@5.4.5)) + specifier: ^1.9.13 + version: 1.9.13(vue@3.4.27(typescript@5.4.5)) '@vue/shared': specifier: ^3.4.27 version: 3.4.27 @@ -513,8 +513,8 @@ importers: specifier: 8.0.8 version: 8.0.8 '@unhead/schema': - specifier: 1.9.12 - version: 1.9.12 + specifier: 1.9.13 + version: 1.9.13 '@vitejs/plugin-vue': specifier: 5.0.4 version: 5.0.4(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) @@ -918,7 +918,7 @@ importers: dependencies: '@unhead/shared': specifier: latest - version: 1.9.12 + version: 1.9.13 '@vue/devtools-api': specifier: latest version: 6.6.3 @@ -930,7 +930,7 @@ importers: version: link:../packages/nuxt unhead: specifier: latest - version: 1.9.12 + version: 1.9.13 vue: specifier: 3.4.27 version: 3.4.27(typescript@5.4.5) @@ -946,10 +946,10 @@ importers: devDependencies: '@unhead/dom': specifier: latest - version: 1.9.12 + version: 1.9.13 '@unhead/shared': specifier: latest - version: 1.9.12 + version: 1.9.13 '@vue/devtools-api': specifier: latest version: 6.6.3 @@ -964,7 +964,7 @@ importers: version: 1.5.3 unhead: specifier: latest - version: 1.9.12 + version: 1.9.13 unplugin: specifier: latest version: 1.10.1 @@ -1020,7 +1020,7 @@ importers: devDependencies: '@unhead/shared': specifier: latest - version: 1.9.12 + version: 1.9.13 '@vue/devtools-api': specifier: latest version: 6.6.3 @@ -1029,7 +1029,7 @@ importers: version: 3.4.27 unhead: specifier: latest - version: 1.9.12 + version: 1.9.13 test/fixtures/suspense: dependencies: @@ -1042,7 +1042,7 @@ importers: devDependencies: '@unhead/shared': specifier: latest - version: 1.9.12 + version: 1.9.13 '@vue/devtools-api': specifier: latest version: 6.6.3 @@ -1054,7 +1054,7 @@ importers: version: 5.4.5 unhead: specifier: latest - version: 1.9.12 + version: 1.9.13 packages: @@ -2795,20 +2795,20 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@unhead/dom@1.9.12': - resolution: {integrity: sha512-3MY1TbZmEjGNZapi3wvJW0vWNS2CLKHt7/m57sScDHCNvNBe1mTwrIOhtZFDgAndhml2EVQ68RMa0Vhum/M+cw==} + '@unhead/dom@1.9.13': + resolution: {integrity: sha512-Fzc929W+5f88c90kn9aKs7EbgRBhphArMqBbifre134GWgrgDVR0odoadNa7i9eH4roPEDE1FIGcKVWuxOIHbg==} - '@unhead/schema@1.9.12': - resolution: {integrity: sha512-ue2FKyIZKsuZDpWJBMlBGwMm4s+vFeU3NUWsNt8Z+2JkOUIqO/VG43LxNgY1M595bOS71Gdxk+G9VtzfKJ5uEA==} + '@unhead/schema@1.9.13': + resolution: {integrity: sha512-keOfTXC/tI21fURcEszBHgGvIg2AszQVQEXBG5BYgC2TQph25Bmv7Fk8W2ogFmj+DdZmFiDnSJdz/NKv3bqnTQ==} - '@unhead/shared@1.9.12': - resolution: {integrity: sha512-72wlLXG3FP3sXUrwd42Uv8jYpHSg4R6IFJcsl+QisRjKM89JnjOFSw1DqWO4IOftW5xOxS4J5v7SQyJ4NJo7Bw==} + '@unhead/shared@1.9.13': + resolution: {integrity: sha512-zNlJ2i5WonQZu/UMHJJzYMyBLhlCCxj1JxHL6lEG+Z6XiERfJDFr8mEAsQY7M2KrGAHR+WRBxNVoLw03j/kfrA==} - '@unhead/ssr@1.9.12': - resolution: {integrity: sha512-EbUT55CzAYsXL/A1hjxpDoK0EitV3n1YZVWHfdE+I8Qe13EL/tnQwco2AYILjb1gtA4s70n3PjTNGeJ17cHPnw==} + '@unhead/ssr@1.9.13': + resolution: {integrity: sha512-YjYrZ3u9uNDzrMybWMVFE0bDcMWBV6Dyqba2Sjq6x84NBRBpZfcUrc7v58iwp5m4XBNfyPs1+r5tOSV0qCiGww==} - '@unhead/vue@1.9.12': - resolution: {integrity: sha512-keE4EuswgzCqVU7zmZprU+ToMvNWc3s8NoLreH5AtJd2u0FgBygD8sxRVyEnZw1KwFYOJ2C7yD2TChSKZioPGQ==} + '@unhead/vue@1.9.13': + resolution: {integrity: sha512-vIMNrB0kZ/3zalmE4j64eBLTkXkrcms78YbptXLvfnnQ9BLGiwsSuB3c0e+4S5Cn1dpMqUTfg5e/hCQYGDMhEA==} peerDependencies: vue: 3.4.27 @@ -4261,13 +4261,13 @@ packages: resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} engines: {node: '>=5.0.0'} - eslint-plugin-perfectionist@2.10.0: - resolution: {integrity: sha512-P+tdrkHeMWBc55+DZsoDOAftV1WCsEoHaKm6JC7zajFus/syfT4vUPBFb3atGFSuyaVnGQGHlcKpP9X3Q0gH/w==} + eslint-plugin-perfectionist@2.11.0: + resolution: {integrity: sha512-XrtBtiu5rbQv88gl+1e2RQud9te9luYNvKIgM9emttQ2zutHPzY/AQUucwxscDKV4qlTkvLTxjOFvxqeDpPorw==} peerDependencies: - astro-eslint-parser: ^0.16.0 + astro-eslint-parser: ^1.0.2 eslint: '>=8.0.0' svelte: '>=3.0.0' - svelte-eslint-parser: ^0.33.0 + svelte-eslint-parser: ^0.37.0 vue-eslint-parser: '>=9.0.0' peerDependenciesMeta: astro-eslint-parser: @@ -7165,8 +7165,8 @@ packages: unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} - unhead@1.9.12: - resolution: {integrity: sha512-s6VxcTV45hy8c/IioKQOonFnAO+kBOSpgDfqEHhnU0YVSQYaRPEp9pzW1qSPf0lx+bg9RKeOQyNNbSGGUP26aQ==} + unhead@1.9.13: + resolution: {integrity: sha512-r7O7s5nw1vUrolueEitawh1HnrzXoekHPM1gsYMF3Tu0A2SzochDJw/1F+Nhu3e073rJ9cUGZqobZY3+RZS4Ew==} unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} @@ -8913,7 +8913,7 @@ snapshots: '@types/stripe-v3': 3.1.33 '@types/vimeo__player': 2.18.3 '@types/youtube': 0.0.50 - '@unhead/vue': 1.9.12(vue@3.4.27(typescript@5.4.5)) + '@unhead/vue': 1.9.13(vue@3.4.27(typescript@5.4.5)) '@vueuse/core': 10.10.1(vue@3.4.27(typescript@5.4.5)) consola: 3.2.3 defu: 6.1.4 @@ -9700,31 +9700,31 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@unhead/dom@1.9.12': + '@unhead/dom@1.9.13': dependencies: - '@unhead/schema': 1.9.12 - '@unhead/shared': 1.9.12 + '@unhead/schema': 1.9.13 + '@unhead/shared': 1.9.13 - '@unhead/schema@1.9.12': + '@unhead/schema@1.9.13': dependencies: hookable: 5.5.3 zhead: 2.2.4 - '@unhead/shared@1.9.12': + '@unhead/shared@1.9.13': dependencies: - '@unhead/schema': 1.9.12 + '@unhead/schema': 1.9.13 - '@unhead/ssr@1.9.12': + '@unhead/ssr@1.9.13': dependencies: - '@unhead/schema': 1.9.12 - '@unhead/shared': 1.9.12 + '@unhead/schema': 1.9.13 + '@unhead/shared': 1.9.13 - '@unhead/vue@1.9.12(vue@3.4.27(typescript@5.4.5))': + '@unhead/vue@1.9.13(vue@3.4.27(typescript@5.4.5))': dependencies: - '@unhead/schema': 1.9.12 - '@unhead/shared': 1.9.12 + '@unhead/schema': 1.9.13 + '@unhead/shared': 1.9.13 hookable: 5.5.3 - unhead: 1.9.12 + unhead: 1.9.13 vue: 3.4.27(typescript@5.4.5) '@unocss/astro@0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': @@ -11625,7 +11625,7 @@ snapshots: eslint-plugin-no-only-tests@3.1.0: {} - eslint-plugin-perfectionist@2.10.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.4.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.4.0)): dependencies: '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5) eslint: 9.4.0 @@ -15068,11 +15068,11 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 - unhead@1.9.12: + unhead@1.9.13: dependencies: - '@unhead/dom': 1.9.12 - '@unhead/schema': 1.9.12 - '@unhead/shared': 1.9.12 + '@unhead/dom': 1.9.13 + '@unhead/schema': 1.9.13 + '@unhead/shared': 1.9.13 hookable: 5.5.3 unicode-emoji-modifier-base@1.0.0: {} From d202669611d3d1e8f8078e6d7f2e1f7552bae9ba Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Thu, 13 Jun 2024 13:54:49 +0100 Subject: [PATCH 10/26] ci: improve generated changelog --- scripts/update-changelog.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/update-changelog.ts b/scripts/update-changelog.ts index 65ccb9a2f1..9dab8a8b94 100644 --- a/scripts/update-changelog.ts +++ b/scripts/update-changelog.ts @@ -13,9 +13,9 @@ async function main () { const commits = await getLatestCommits().then(commits => commits.filter( c => config.types[c.type] && !(c.type === 'chore' && c.scope === 'deps' && !c.isBreaking), )) - const bumpType = await determineBumpType() + const bumpType = await determineBumpType() || 'patch' - const newVersion = inc(workspace.find('nuxt').data.version, bumpType || 'patch') + const newVersion = inc(workspace.find('nuxt').data.version, bumpType) const changelog = await generateMarkDown(commits, config) // Create and push a branch with bumped versions if it has not already been created @@ -44,7 +44,8 @@ async function main () { changelog .replace(/^## v.*\n/, '') .replace(`...${releaseBranch}`, `...v${newVersion}`) - .replace(/### ❤️ Contributors[\s\S]*$/, ''), + .replace(/### ❤️ Contributors[\s\S]*$/, '') + .replace(/[\n\r]+/g, '\n'), '### ❤️ Contributors', contributors.map(c => `- ${c.name} (@${c.username})`).join('\n'), ].join('\n') From ab887d90d71ea0d4e977574263d3b8a112f07cef Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Thu, 13 Jun 2024 14:44:08 +0100 Subject: [PATCH 11/26] fix(nuxt): handle tsx code when extracting pageMeta/routeRules (#27583) --- packages/nuxt/src/pages/route-rules.ts | 5 +++-- packages/nuxt/src/pages/utils.ts | 15 +++++++++------ test/fixtures/basic/pages/tsx-page-meta.vue | 9 +++++++++ 3 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/basic/pages/tsx-page-meta.vue diff --git a/packages/nuxt/src/pages/route-rules.ts b/packages/nuxt/src/pages/route-rules.ts index fef075e03e..24acf217b1 100644 --- a/packages/nuxt/src/pages/route-rules.ts +++ b/packages/nuxt/src/pages/route-rules.ts @@ -18,11 +18,12 @@ export async function extractRouteRules (code: string): Promise]*>([\s\S]*?)<\/script[^>]*>/i +const SFC_SCRIPT_RE = /[^>]*)>(?[\s\S]*?)<\/script[^>]*>/i export function extractScriptContent (html: string) { - const match = html.match(SFC_SCRIPT_RE) + const groups = html.match(SFC_SCRIPT_RE)?.groups || {} - if (match && match[1]) { - return match[1].trim() + if (groups.content) { + return { + loader: groups.attrs.includes('tsx') ? 'tsx' : 'ts', + code: groups.content.trim(), + } as const } return null @@ -185,12 +188,12 @@ async function getRouteMeta (contents: string, absolutePath: string): Promise + + + + From 452d43ab23243628b8a1c23aefb1f3d48bb191bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Jun 2024 15:19:05 +0100 Subject: [PATCH 12/26] chore(deps): update dependency vite to v5.3.0 (main) (#27586) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- packages/kit/package.json | 2 +- packages/nuxt/package.json | 2 +- packages/schema/package.json | 2 +- packages/ui-templates/package.json | 2 +- packages/vite/package.json | 2 +- pnpm-lock.yaml | 212 ++++++++++++++--------------- 7 files changed, 112 insertions(+), 112 deletions(-) diff --git a/package.json b/package.json index ed71c0d1ec..03e833fefe 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "magic-string": "^0.30.10", "nuxt": "workspace:*", "rollup": "^4.18.0", - "vite": "5.2.13", + "vite": "5.3.0", "vue": "3.4.27" }, "devDependencies": { diff --git a/packages/kit/package.json b/packages/kit/package.json index 576702fa62..310931589b 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -54,7 +54,7 @@ "lodash-es": "4.17.21", "nitropack": "2.9.6", "unbuild": "latest", - "vite": "5.2.13", + "vite": "5.3.0", "vitest": "1.6.0", "webpack": "5.92.0" }, diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 86c3384be6..bc9c2b3c14 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -126,7 +126,7 @@ "@vitejs/plugin-vue": "5.0.4", "@vue/compiler-sfc": "3.4.27", "unbuild": "latest", - "vite": "5.2.13", + "vite": "5.3.0", "vitest": "1.6.0" }, "peerDependencies": { diff --git a/packages/schema/package.json b/packages/schema/package.json index c68a38367e..d295d4e3df 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -54,7 +54,7 @@ "unbuild": "latest", "unctx": "2.3.1", "unenv": "1.9.0", - "vite": "5.2.13", + "vite": "5.3.0", "vue": "3.4.27", "vue-bundle-renderer": "2.1.0", "vue-loader": "17.4.2", diff --git a/packages/ui-templates/package.json b/packages/ui-templates/package.json index 0cb9fec044..efa7de45e7 100644 --- a/packages/ui-templates/package.json +++ b/packages/ui-templates/package.json @@ -33,6 +33,6 @@ "prettier": "3.3.2", "scule": "1.3.0", "unocss": "0.61.0", - "vite": "5.2.13" + "vite": "5.3.0" } } diff --git a/packages/vite/package.json b/packages/vite/package.json index 39dfbfe91f..d2b64f1169 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -62,7 +62,7 @@ "ufo": "^1.5.3", "unenv": "^1.9.0", "unplugin": "^1.10.1", - "vite": "^5.2.13", + "vite": "^5.3.0", "vite-node": "^1.6.0", "vite-plugin-checker": "^0.6.4", "vue-bundle-renderer": "^2.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b94d1c395..f38e4b444e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ overrides: magic-string: ^0.30.10 nuxt: workspace:* rollup: ^4.18.0 - vite: 5.2.13 + vite: 5.3.0 vue: 3.4.27 importers: @@ -31,7 +31,7 @@ importers: version: link:packages/kit '@nuxt/test-utils': specifier: 3.13.1 - version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) '@nuxt/webpack-builder': specifier: workspace:* version: link:packages/webpack @@ -55,7 +55,7 @@ importers: version: 1.9.13 '@vitejs/plugin-vue': specifier: 5.0.4 - version: 5.0.4(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 5.0.4(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vitest/coverage-v8': specifier: 1.6.0 version: 1.6.0(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0)) @@ -148,7 +148,7 @@ importers: version: 1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) vitest-environment-nuxt: specifier: 1.0.0 - version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) vue: specifier: 3.4.27 version: 3.4.27(typescript@5.4.5) @@ -241,8 +241,8 @@ importers: specifier: latest version: 2.0.0(sass@1.69.4)(typescript@5.4.5) vite: - specifier: 5.2.13 - version: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.0 + version: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vitest: specifier: 1.6.0 version: 1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) @@ -257,7 +257,7 @@ importers: version: 2.0.2 '@nuxt/devtools': specifier: ^1.3.3 - version: 1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@nuxt/kit': specifier: workspace:* version: link:../kit @@ -429,7 +429,7 @@ importers: devDependencies: '@nuxt/scripts': specifier: 0.5.1 - version: 0.5.1(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) + version: 0.5.1(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) '@nuxt/ui-templates': specifier: workspace:* version: link:../ui-templates @@ -444,7 +444,7 @@ importers: version: 11.0.4 '@vitejs/plugin-vue': specifier: 5.0.4 - version: 5.0.4(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 5.0.4(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/compiler-sfc': specifier: 3.4.27 version: 3.4.27 @@ -452,8 +452,8 @@ importers: specifier: latest version: 2.0.0(sass@1.69.4)(typescript@5.4.5) vite: - specifier: 5.2.13 - version: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.0 + version: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vitest: specifier: 1.6.0 version: 1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) @@ -517,10 +517,10 @@ importers: version: 1.9.13 '@vitejs/plugin-vue': specifier: 5.0.4 - version: 5.0.4(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 5.0.4(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vitejs/plugin-vue-jsx': specifier: 4.0.0 - version: 4.0.0(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 4.0.0(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/compiler-core': specifier: 3.4.27 version: 3.4.27 @@ -558,8 +558,8 @@ importers: specifier: 1.9.0 version: 1.9.0 vite: - specifier: 5.2.13 - version: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.0 + version: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vue: specifier: 3.4.27 version: 3.4.27(typescript@5.4.5) @@ -622,10 +622,10 @@ importers: version: 1.3.0 unocss: specifier: 0.61.0 - version: 0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + version: 0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) vite: - specifier: 5.2.13 - version: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.0 + version: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) packages/vite: dependencies: @@ -637,10 +637,10 @@ importers: version: 5.0.7(rollup@4.18.0) '@vitejs/plugin-vue': specifier: ^5.0.4 - version: 5.0.4(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 5.0.4(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vitejs/plugin-vue-jsx': specifier: ^4.0.0 - version: 4.0.0(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 4.0.0(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) @@ -720,14 +720,14 @@ importers: specifier: ^1.10.1 version: 1.10.1 vite: - specifier: 5.2.13 - version: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.0 + version: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vite-node: specifier: ^1.6.0 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.2.13(@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.4.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.0(@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 @@ -2111,7 +2111,7 @@ packages: resolution: {integrity: sha512-YkcuSirzVVi36gWjIl9sJ4lsuiuQiIStY3upLy829zMTIXXeF8yUEBexKL6zHD3UPqCigoF7IuovnfLw78BQ9g==} peerDependencies: nuxt: workspace:* - vite: 5.2.13 + vite: 5.3.0 '@nuxt/devtools-ui-kit@1.3.3': resolution: {integrity: sha512-vM9dcb/CLXf1big6SmhVL0mh/JzNtZaJwHMYDd3vqv7jAedGuNfURDSGGVYQRFlSFisA3Cn0TnjDDs+dPrGuAA==} @@ -2127,7 +2127,7 @@ packages: hasBin: true peerDependencies: nuxt: workspace:* - vite: 5.2.13 + vite: 5.3.0 '@nuxt/eslint-config@0.3.13': resolution: {integrity: sha512-xnMkcrz9vFjtIuKsfOPhNOKFVD51JZClj/16raciHVOK9eiqZuQjbxaf60b7ffk7cmD1EDhlQhbSxaLAJm/QYg==} @@ -2167,7 +2167,7 @@ packages: jsdom: ^22.0.0 || ^23.0.0 || ^24.0.0 nitropack: '*' playwright-core: ^1.43.1 - vite: 5.2.13 + vite: 5.3.0 vitest: ^0.34.6 || ^1.0.0 vue: 3.4.27 vue-router: ^4.0.0 @@ -2815,7 +2815,7 @@ packages: '@unocss/astro@0.60.4': resolution: {integrity: sha512-mfWiEVCUP00gxrMewwPfnTuw+ur5b6uIBRH2tIGkvfI21rLyZw8TIF08w7USz9C/47rvzsixBtCqq7v0g3Tw9w==} peerDependencies: - vite: 5.2.13 + vite: 5.3.0 peerDependenciesMeta: vite: optional: true @@ -2823,7 +2823,7 @@ packages: '@unocss/astro@0.61.0': resolution: {integrity: sha512-cbgztX/to5rMhAtEGCcR3ClMlK9F+lPxq21A72qsbWVQjiKa7W4O7qKBmUKPYsWRzJEJtdyN11A65H2037aKQw==} peerDependencies: - vite: 5.2.13 + vite: 5.3.0 peerDependenciesMeta: vite: optional: true @@ -2980,12 +2980,12 @@ packages: '@unocss/vite@0.60.4': resolution: {integrity: sha512-af9hhtW11geF56cotKUE16Fr+FirTdV/Al/usjKJ6P5hnCEQnqSHXQDFXL5Y6vXwcvLDmOhHYNrVR8duKgC8Mw==} peerDependencies: - vite: 5.2.13 + vite: 5.3.0 '@unocss/vite@0.61.0': resolution: {integrity: sha512-gjxLJrja1hqDwdd8z3QvzfMCcKppGqiL2+A6aHwG/AXfEmZMydA50U7VvJK7Wx8/Enm26G6JQrtGrpu+kK3QpQ==} peerDependencies: - vite: 5.2.13 + vite: 5.3.0 '@unocss/webpack@0.60.4': resolution: {integrity: sha512-TcPuiAZZO+a+xiahrCm7eEHlP8o667n+CWv+kpz4bidY5V8Xyxs1MjzJAPVOk8Kwz86HvQZyf2CG+3powNTwKA==} @@ -3001,14 +3001,14 @@ packages: resolution: {integrity: sha512-A+6wL2AdQhDsLsDnY+2v4rRDI1HLJGIMc97a8FURO9tqKsH5QvjWrzsa5DH3NlZsM742W2wODl2fF+bfcTWtXw==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: 5.2.13 + vite: 5.3.0 vue: 3.4.27 '@vitejs/plugin-vue@5.0.4': resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: 5.2.13 + vite: 5.3.0 vue: 3.4.27 '@vitest/coverage-v8@1.6.0': @@ -7217,7 +7217,7 @@ packages: engines: {node: '>=14'} peerDependencies: '@unocss/webpack': 0.60.4 - vite: 5.2.13 + vite: 5.3.0 peerDependenciesMeta: '@unocss/webpack': optional: true @@ -7229,7 +7229,7 @@ packages: engines: {node: '>=14'} peerDependencies: '@unocss/webpack': 0.61.0 - vite: 5.2.13 + vite: 5.3.0 peerDependenciesMeta: '@unocss/webpack': optional: true @@ -7365,7 +7365,7 @@ packages: vite-hot-client@0.2.3: resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==} peerDependencies: - vite: 5.2.13 + vite: 5.3.0 vite-node@1.6.0: resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} @@ -7381,7 +7381,7 @@ packages: optionator: ^0.9.1 stylelint: '>=13' typescript: '*' - vite: 5.2.13 + vite: 5.3.0 vls: '*' vti: '*' vue-tsc: '>=1.3.9' @@ -7408,7 +7408,7 @@ packages: engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' - vite: 5.2.13 + vite: 5.3.0 peerDependenciesMeta: '@nuxt/kit': optional: true @@ -7416,10 +7416,10 @@ packages: vite-plugin-vue-inspector@5.1.0: resolution: {integrity: sha512-yIw9dvBz9nQW7DPfbJtUVW6JTnt67hqTPRnTwT2CZWMqDvISyQHRjgKl32nlMh1DRH+92533Sv6t59pWMLUCWA==} peerDependencies: - vite: 5.2.13 + vite: 5.3.0 - vite@5.2.13: - resolution: {integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==} + vite@5.3.0: + resolution: {integrity: sha512-hA6vAVK977NyW1Qw+fLvqSo7xDPej7von7C3DwwqPRmnnnK36XEBC/J3j1V5lP8fbt7y0TgTKJbpNGSwM+Bdeg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -8730,26 +8730,26 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.3.3(nuxt@packages+nuxt)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@nuxt/devtools-kit@1.3.3(nuxt@packages+nuxt)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema execa: 7.2.0 nuxt: link:packages/nuxt - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - '@nuxt/devtools-ui-kit@1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': + '@nuxt/devtools-ui-kit@1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': dependencies: '@iconify-json/carbon': 1.1.35 '@iconify-json/logos': 1.1.43 '@iconify-json/ri': 1.1.20 '@iconify-json/tabler': 1.1.113 - '@nuxt/devtools': 1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) - '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools': 1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@nuxt/kit': link:packages/kit '@nuxtjs/color-mode': 3.4.1 '@unocss/core': 0.60.4 - '@unocss/nuxt': 0.60.4(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.0(esbuild@0.21.5)) + '@unocss/nuxt': 0.60.4(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.0(esbuild@0.21.5)) '@unocss/preset-attributify': 0.60.4 '@unocss/preset-icons': 0.60.4 '@unocss/preset-mini': 0.60.4 @@ -8760,7 +8760,7 @@ snapshots: defu: 6.1.4 focus-trap: 7.5.4 splitpanes: 3.1.5 - unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) v-lazy-show: 0.2.4(@vue/compiler-core@3.4.27) transitivePeerDependencies: - '@unocss/webpack' @@ -8798,14 +8798,14 @@ snapshots: rc9: 2.1.2 semver: 7.6.2 - '@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: '@antfu/utils': 0.7.8 - '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@nuxt/devtools-wizard': 1.3.3 '@nuxt/kit': link:packages/kit - '@vue/devtools-applet': 7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) - '@vue/devtools-core': 7.1.3(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-applet': 7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-core': 7.1.3(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) birpc: 0.2.17 consola: 3.2.3 @@ -8835,9 +8835,9 @@ snapshots: simple-git: 3.24.0 sirv: 2.0.4 unimport: 3.7.2(rollup@4.18.0) - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - vite-plugin-inspect: 0.8.4(@nuxt/kit@packages+kit)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - vite-plugin-vue-inspector: 5.1.0(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite-plugin-inspect: 0.8.4(@nuxt/kit@packages+kit)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + vite-plugin-vue-inspector: 5.1.0(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) which: 3.0.1 ws: 8.17.0 transitivePeerDependencies: @@ -8904,10 +8904,10 @@ snapshots: string-width: 4.2.3 webpack: 5.92.0 - '@nuxt/scripts@0.5.1(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': + '@nuxt/scripts@0.5.1(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': dependencies: - '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - '@nuxt/devtools-ui-kit': 1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) + '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-ui-kit': 1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.27)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) '@nuxt/kit': link:packages/kit '@types/google.maps': 3.55.9 '@types/stripe-v3': 3.1.33 @@ -8992,7 +8992,7 @@ snapshots: rc9: 2.1.2 std-env: 3.7.0 - '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5))': + '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema @@ -9018,8 +9018,8 @@ snapshots: ufo: 1.5.3 unenv: 1.9.0 unplugin: 1.10.1 - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) vue: 3.4.27(typescript@5.4.5) vue-router: 4.3.3(vue@3.4.27(typescript@5.4.5)) optionalDependencies: @@ -9727,23 +9727,23 @@ snapshots: unhead: 1.9.13 vue: 3.4.27(typescript@5.4.5) - '@unocss/astro@0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@unocss/astro@0.60.4(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@unocss/core': 0.60.4 '@unocss/reset': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - '@unocss/astro@0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@unocss/astro@0.61.0(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@unocss/core': 0.61.0 '@unocss/reset': 0.61.0 - '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup @@ -9819,7 +9819,7 @@ snapshots: gzip-size: 6.0.0 sirv: 2.0.4 - '@unocss/nuxt@0.60.4(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.0(esbuild@0.21.5))': + '@unocss/nuxt@0.60.4(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.0(esbuild@0.21.5))': dependencies: '@nuxt/kit': link:packages/kit '@unocss/config': 0.60.4 @@ -9832,9 +9832,9 @@ snapshots: '@unocss/preset-web-fonts': 0.60.4 '@unocss/preset-wind': 0.60.4 '@unocss/reset': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)) - unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) transitivePeerDependencies: - postcss - rollup @@ -10024,7 +10024,7 @@ snapshots: dependencies: '@unocss/core': 0.61.0 - '@unocss/vite@0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@unocss/vite@0.60.4(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -10036,11 +10036,11 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - '@unocss/vite@0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@unocss/vite@0.61.0(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -10052,7 +10052,7 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup @@ -10089,19 +10089,19 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@4.0.0(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vue: 3.4.27(typescript@5.4.5) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.4(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@vitejs/plugin-vue@5.0.4(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vue: 3.4.27(typescript@5.4.5) '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))': @@ -10248,12 +10248,12 @@ snapshots: '@vue/devtools-api@6.6.3': {} - '@vue/devtools-applet@7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-applet@7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: - '@vue/devtools-core': 7.1.3(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-core': 7.1.3(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-shared': 7.1.3 - '@vue/devtools-ui': 7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-ui': 7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5)) lodash-es: 4.17.21 perfect-debounce: 1.0.0 shiki: 1.3.0 @@ -10278,14 +10278,14 @@ snapshots: - unocss - vite - '@vue/devtools-core@7.1.3(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-core@7.1.3(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: '@vue/devtools-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-shared': 7.1.3 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + vite-hot-client: 0.2.3(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) transitivePeerDependencies: - vite - vue @@ -10303,7 +10303,7 @@ snapshots: dependencies: rfdc: 1.3.1 - '@vue/devtools-ui@7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-ui@7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5))': dependencies: '@unocss/reset': 0.61.0 '@vue/devtools-shared': 7.1.3 @@ -10313,7 +10313,7 @@ snapshots: colord: 2.9.3 floating-vue: 5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)) focus-trap: 7.5.4 - unocss: 0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + unocss: 0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) vue: 3.4.27(typescript@5.4.5) transitivePeerDependencies: - '@vue/composition-api' @@ -15144,9 +15144,9 @@ snapshots: universalify@2.0.0: {} - unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@unocss/astro': 0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/astro': 0.60.4(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@unocss/cli': 0.60.4(rollup@4.18.0) '@unocss/core': 0.60.4 '@unocss/extractor-arbitrary-variants': 0.60.4 @@ -15165,18 +15165,18 @@ snapshots: '@unocss/transformer-compile-class': 0.60.4 '@unocss/transformer-directives': 0.60.4 '@unocss/transformer-variant-group': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)) - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - postcss - rollup - supports-color - unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@unocss/astro': 0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/astro': 0.61.0(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) '@unocss/cli': 0.61.0(rollup@4.18.0) '@unocss/core': 0.61.0 '@unocss/extractor-arbitrary-variants': 0.61.0 @@ -15195,10 +15195,10 @@ snapshots: '@unocss/transformer-compile-class': 0.61.0 '@unocss/transformer-directives': 0.61.0 '@unocss/transformer-variant-group': 0.61.0 - '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)) - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - postcss - rollup @@ -15336,9 +15336,9 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + vite-hot-client@0.2.3(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): dependencies: - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vite-node@1.6.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0): dependencies: @@ -15346,7 +15346,7 @@ snapshots: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - less @@ -15357,7 +15357,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.2.13(@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.4.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.0(@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.2 ansi-escapes: 4.3.2 @@ -15370,7 +15370,7 @@ snapshots: semver: 7.6.2 strip-ansi: 6.0.1 tiny-invariant: 1.3.1 - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 @@ -15381,7 +15381,7 @@ snapshots: typescript: 5.4.5 vue-tsc: 2.0.21(typescript@5.4.5) - vite-plugin-inspect@0.8.4(@nuxt/kit@packages+kit)(rollup@4.18.0)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + vite-plugin-inspect@0.8.4(@nuxt/kit@packages+kit)(rollup@4.18.0)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): dependencies: '@antfu/utils': 0.7.8 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -15392,14 +15392,14 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.0.0 sirv: 2.0.4 - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) optionalDependencies: '@nuxt/kit': link:packages/kit transitivePeerDependencies: - rollup - supports-color - vite-plugin-vue-inspector@5.1.0(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + vite-plugin-vue-inspector@5.1.0(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): dependencies: '@babel/core': 7.24.7 '@babel/plugin-proposal-decorators': 7.23.2(@babel/core@7.24.7) @@ -15410,13 +15410,13 @@ snapshots: '@vue/compiler-dom': 3.4.27 kolorist: 1.8.0 magic-string: 0.30.10 - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - supports-color - vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0): + vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0): dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 postcss: 8.4.38 rollup: 4.18.0 optionalDependencies: @@ -15425,9 +15425,9 @@ snapshots: sass: 1.69.4 terser: 5.27.0 - vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)): + vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)): dependencies: - '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -15465,7 +15465,7 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.5.1 tinypool: 0.8.4 - vite: 5.2.13(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) vite-node: 1.6.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) why-is-node-running: 2.2.2 optionalDependencies: From 95458af9a195dd663e299c4fdb2516e0e5c25e9e Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Thu, 13 Jun 2024 16:39:37 +0100 Subject: [PATCH 13/26] fix(nuxt): handle more edge cases with external/custom links (#27487) --- packages/nuxt/src/app/components/nuxt-link.ts | 86 +++++++++++-------- packages/nuxt/test/nuxt-link.test.ts | 19 +++- test/basic.test.ts | 18 ++++ .../basic/pages/nuxt-link/custom-external.vue | 53 ++++++++++++ 4 files changed, 135 insertions(+), 41 deletions(-) create mode 100644 test/fixtures/basic/pages/nuxt-link/custom-external.vue diff --git a/packages/nuxt/src/app/components/nuxt-link.ts b/packages/nuxt/src/app/components/nuxt-link.ts index 16116ebcfd..e4fa62d8a4 100644 --- a/packages/nuxt/src/app/components/nuxt-link.ts +++ b/packages/nuxt/src/app/components/nuxt-link.ts @@ -8,7 +8,7 @@ import type { } from 'vue' import { computed, defineComponent, h, inject, onBeforeUnmount, onMounted, provide, ref, resolveComponent } from 'vue' import type { RouteLocation, RouteLocationRaw, Router, RouterLink, RouterLinkProps, useLink } from '#vue-router' -import { hasProtocol, joinURL, parseQuery, withTrailingSlash, withoutTrailingSlash } from 'ufo' +import { hasProtocol, joinURL, parseQuery, withQuery, withTrailingSlash, withoutTrailingSlash } from 'ufo' import { preloadRouteComponents } from '../composables/preload' import { onNuxtReady } from '../composables/ready' import { navigateTo, useRouter } from '../composables/router' @@ -70,8 +70,8 @@ export interface NuxtLinkProps extends Omit { * @see https://nuxt.com/docs/api/components/nuxt-link */ export interface NuxtLinkOptions extends - Pick, - Pick { + Partial>, + Partial> { /** * The name of the component. * @default "NuxtLink" @@ -124,34 +124,17 @@ export function defineNuxtLink (options: NuxtLinkOptions) { const router = useRouter() const config = useRuntimeConfig() - // Resolving `to` value from `to` and `href` props - const to: ComputedRef = computed(() => { - checkPropConflicts(props, 'to', 'href') - const path = props.to || props.href || '' // Defaults to empty string (won't render any `href` attribute) - return resolveTrailingSlashBehavior(path, router.resolve) - }) + const hasTarget = computed(() => !!props.target && props.target !== '_self') // Lazily check whether to.value has a protocol - const isAbsoluteUrl = computed(() => typeof to.value === 'string' && hasProtocol(to.value, { acceptRelative: true })) - - // Resolves `to` value if it's a route location object - const href = computed(() => (typeof to.value === 'object' - ? router.resolve(to.value)?.href ?? null - : (to.value && !props.external && !isAbsoluteUrl.value) - ? resolveTrailingSlashBehavior(joinURL(config.app.baseURL, to.value), router.resolve) as string - : to.value - )) + const isAbsoluteUrl = computed(() => { + const path = props.to || props.href || '' + return typeof path === 'string' && hasProtocol(path, { acceptRelative: true }) + }) const builtinRouterLink = resolveComponent('RouterLink') as string | typeof RouterLink const useBuiltinLink = builtinRouterLink && typeof builtinRouterLink !== 'string' ? builtinRouterLink.useLink : undefined - const link = useBuiltinLink?.({ - ...props, - to: to.value, - }) - - const hasTarget = computed(() => props.target && props.target !== '_self') - // Resolving link type const isExternal = computed(() => { // External prop is explicitly set @@ -159,17 +142,40 @@ export function defineNuxtLink (options: NuxtLinkOptions) { return true } - // When `target` prop is set, link is external - if (hasTarget.value) { - return true - } + const path = props.to || props.href || '' // When `to` is a route object then it's an internal link - if (typeof to.value === 'object') { + if (typeof path === 'object') { return false } - return to.value === '' || isAbsoluteUrl.value + return path === '' || isAbsoluteUrl.value + }) + + // Resolving `to` value from `to` and `href` props + const to: ComputedRef = computed(() => { + checkPropConflicts(props, 'to', 'href') + const path = props.to || props.href || '' // Defaults to empty string (won't render any `href` attribute) + if (isExternal.value) { return path } + return resolveTrailingSlashBehavior(path, router.resolve) + }) + + const link = isExternal.value ? undefined : useBuiltinLink?.({ ...props, to }) + + // Resolves `to` value if it's a route location object + const href = computed(() => { + if (!to.value || isAbsoluteUrl.value) { return to.value as string } + + if (isExternal.value) { + const path = typeof to.value === 'object' ? resolveRouteObject(to.value) : to.value + return resolveTrailingSlashBehavior(path, router.resolve /* will not be called */) as string + } + + if (typeof to.value === 'object') { + return router.resolve(to.value)?.href ?? null + } + + return resolveTrailingSlashBehavior(joinURL(config.app.baseURL, to.value), router.resolve /* will not be called */) }) return { @@ -183,10 +189,10 @@ export function defineNuxtLink (options: NuxtLinkOptions) { isExactActive: link?.isExactActive ?? computed(() => to.value === router.currentRoute.value.path), route: link?.route ?? computed(() => router.resolve(to.value)), async navigate () { - await navigateTo(href.value, { replace: props.replace, external: props.external }) + await navigateTo(href.value, { replace: props.replace, external: isExternal.value || hasTarget.value }) }, } satisfies ReturnType & { - to: ComputedRef + to: ComputedRef hasTarget: ComputedRef isAbsoluteUrl: ComputedRef isExternal: ComputedRef @@ -307,10 +313,12 @@ export function defineNuxtLink (options: NuxtLinkOptions) { unobserve?.() unobserve = null - const path = typeof to.value === 'string' ? to.value : router.resolve(to.value).fullPath + const path = typeof to.value === 'string' + ? to.value + : isExternal.value ? resolveRouteObject(to.value) : router.resolve(to.value).fullPath await Promise.all([ nuxtApp.hooks.callHook('link:prefetch', path).catch(() => {}), - !isExternal.value && preloadRouteComponents(to.value as string, router).catch(() => {}), + !isExternal.value && !hasTarget.value && preloadRouteComponents(to.value as string, router).catch(() => {}), ]) prefetched.value = true }) @@ -336,7 +344,7 @@ export function defineNuxtLink (options: NuxtLinkOptions) { } return () => { - if (!isExternal.value) { + if (!isExternal.value && !hasTarget.value) { const routerLinkProps: RouterLinkProps & VNodeProps & AllowedComponentProps & AnchorHTMLAttributes = { ref: elRef, to: to.value, @@ -408,7 +416,7 @@ export function defineNuxtLink (options: NuxtLinkOptions) { }, rel, target, - isExternal: isExternal.value, + isExternal: isExternal.value || hasTarget.value, isActive: false, isExactActive: false, }) @@ -487,3 +495,7 @@ function isSlowConnection () { if (cn && (cn.saveData || /2g/.test(cn.effectiveType))) { return true } return false } + +function resolveRouteObject (to: Exclude) { + return withQuery(to.path || '', to.query || {}) + (to.hash ? '#' + to.hash : '') +} diff --git a/packages/nuxt/test/nuxt-link.test.ts b/packages/nuxt/test/nuxt-link.test.ts index 1ee1490837..a712d0f267 100644 --- a/packages/nuxt/test/nuxt-link.test.ts +++ b/packages/nuxt/test/nuxt-link.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from 'vitest' -import type { RouteLocation, RouteLocationRaw } from 'vue-router' +import type { RouteLocation } from 'vue-router' import type { NuxtLinkOptions, NuxtLinkProps } from '../src/app/components/nuxt-link' import { defineNuxtLink } from '../src/app/components/nuxt-link' import { useRuntimeConfig } from '../src/app/nuxt' @@ -99,7 +99,11 @@ describe('nuxt-link:isExternal', () => { }) it('returns `false` when `to` is a route location object', () => { - expect(nuxtLink({ to: { to: '/to' } as RouteLocationRaw }).type).toBe(INTERNAL) + expect(nuxtLink({ to: { path: '/to' } }).type).toBe(INTERNAL) + }) + + it('returns `true` when `to` has a `target`', () => { + expect(nuxtLink({ to: { path: '/to' }, target: '_blank' }).type).toBe(EXTERNAL) }) it('honors `external` prop', () => { @@ -122,7 +126,12 @@ describe('nuxt-link:propsOrAttributes', () => { }) it('resolves route location object', () => { - expect(nuxtLink({ to: { to: '/to' } as RouteLocationRaw, external: true }).props.href).toBe('/to') + expect(nuxtLink({ to: { path: '/to' }, external: true }).props.href).toBe('/to') + }) + + it('applies trailing slash behaviour', () => { + expect(nuxtLink({ to: { path: '/to' }, external: true }, { trailingSlash: 'append' }).props.href).toBe('/to/') + expect(nuxtLink({ to: '/to', external: true }, { trailingSlash: 'append' }).props.href).toBe('/to/') }) }) @@ -167,6 +176,8 @@ describe('nuxt-link:propsOrAttributes', () => { }, () => { expect(nuxtLink({ to: 'http://nuxtjs.org/app/about', target: '_blank' }).props.href).toBe('http://nuxtjs.org/app/about') expect(nuxtLink({ to: '//nuxtjs.org/app/about', target: '_blank' }).props.href).toBe('//nuxtjs.org/app/about') + expect(nuxtLink({ to: { path: '/' }, external: true }).props.href).toBe('/') + expect(nuxtLink({ to: '/', external: true }).props.href).toBe('/') }) }) }) @@ -209,7 +220,7 @@ describe('nuxt-link:propsOrAttributes', () => { describe('to', () => { it('forwards `to` prop', () => { expect(nuxtLink({ to: '/to' }).props.to).toBe('/to') - expect(nuxtLink({ to: { to: '/to' } as RouteLocationRaw }).props.to).toEqual({ to: '/to' }) + expect(nuxtLink({ to: { path: '/to' } }).props.to).toEqual({ path: '/to' }) }) }) diff --git a/test/basic.test.ts b/test/basic.test.ts index 1e4db83c89..f86faf36d1 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -745,6 +745,24 @@ describe('nuxt links', () => { `) }) + it('respects external links in edge cases', async () => { + const html = await $fetch('/nuxt-link/custom-external') + const hrefs = html.match(/]*href="([^"]+)"/g) + expect(hrefs).toMatchInlineSnapshot(` + [ + " c.text.includes('No match found for location')) + expect(warnings).toMatchInlineSnapshot(`[]`) + await page.close() + }) + it('preserves route state', async () => { const { page } = await renderPage('/nuxt-link/trailing-slash') diff --git a/test/fixtures/basic/pages/nuxt-link/custom-external.vue b/test/fixtures/basic/pages/nuxt-link/custom-external.vue new file mode 100644 index 0000000000..4dff81fb0d --- /dev/null +++ b/test/fixtures/basic/pages/nuxt-link/custom-external.vue @@ -0,0 +1,53 @@ + + + From 220cc502a14f191445d62c4719120c7844c4c3f9 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Thu, 13 Jun 2024 17:59:24 +0100 Subject: [PATCH 14/26] fix(nuxt): preserve route metadata assigned outside page (#27587) --- packages/nuxt/src/pages/utils.ts | 121 +++++++------- .../pages-override-meta-enabled.test.ts.snap | 2 +- packages/nuxt/test/page-metadata.test.ts | 148 ++++++++++++++++++ test/basic.test.ts | 15 ++ test/fixtures/basic/nuxt.config.ts | 11 ++ test/fixtures/basic/pages/meta.vue | 36 +++++ 6 files changed, 274 insertions(+), 59 deletions(-) create mode 100644 packages/nuxt/test/page-metadata.test.ts create mode 100644 test/fixtures/basic/pages/meta.vue diff --git a/packages/nuxt/src/pages/utils.ts b/packages/nuxt/src/pages/utils.ts index 63bb9cacf9..1e713075dd 100644 --- a/packages/nuxt/src/pages/utils.ts +++ b/packages/nuxt/src/pages/utils.ts @@ -9,6 +9,7 @@ import { filename } from 'pathe/utils' import { hash } from 'ohash' import { transform } from 'esbuild' import { parse } from 'acorn' +import { walk } from 'estree-walker' import type { CallExpression, ExpressionStatement, ObjectExpression, Program, Property } from 'estree' import type { NuxtPage } from 'nuxt/schema' @@ -173,7 +174,7 @@ const DYNAMIC_META_KEY = '__nuxt_dynamic_meta_key' as const const pageContentsCache: Record = {} const metaCache: Record>> = {} -async function getRouteMeta (contents: string, absolutePath: string): Promise>> { +export async function getRouteMeta (contents: string, absolutePath: string): Promise>> { // set/update pageContentsCache, invalidate metaCache on cache mismatch if (!(absolutePath in pageContentsCache) || pageContentsCache[absolutePath] !== contents) { pageContentsCache[absolutePath] = contents @@ -199,70 +200,77 @@ async function getRouteMeta (contents: string, absolutePath: string): Promise node.type === 'ExpressionStatement' && node.expression.type === 'CallExpression' && node.expression.callee.type === 'Identifier' && node.expression.callee.name === 'definePageMeta') - if (!pageMetaAST) { - metaCache[absolutePath] = {} - return {} - } - const pageMetaArgument = ((pageMetaAST as ExpressionStatement).expression as CallExpression).arguments[0] as ObjectExpression const extractedMeta = {} as Partial> const extractionKeys = ['name', 'path', 'alias', 'redirect'] as const const dynamicProperties = new Set() - for (const key of extractionKeys) { - const property = pageMetaArgument.properties.find(property => property.type === 'Property' && property.key.type === 'Identifier' && property.key.name === key) as Property - if (!property) { continue } + let foundMeta = false - if (property.value.type === 'ObjectExpression') { - const valueString = js.code.slice(property.value.range![0], property.value.range![1]) - try { - extractedMeta[key] = JSON.parse(runInNewContext(`JSON.stringify(${valueString})`, {})) - } catch { - console.debug(`[nuxt] Skipping extraction of \`${key}\` metadata as it is not JSON-serializable (reading \`${absolutePath}\`).`) - dynamicProperties.add(key) - continue - } - } + walk(ast, { + enter (node) { + if (foundMeta) { return } - if (property.value.type === 'ArrayExpression') { - const values = [] - for (const element of property.value.elements) { - if (!element) { + if (node.type !== 'ExpressionStatement' || node.expression.type !== 'CallExpression' || node.expression.callee.type !== 'Identifier' || node.expression.callee.name !== 'definePageMeta') { return } + + foundMeta = true + const pageMetaArgument = ((node as ExpressionStatement).expression as CallExpression).arguments[0] as ObjectExpression + + for (const key of extractionKeys) { + const property = pageMetaArgument.properties.find(property => property.type === 'Property' && property.key.type === 'Identifier' && property.key.name === key) as Property + if (!property) { continue } + + if (property.value.type === 'ObjectExpression') { + const valueString = js.code.slice(property.value.range![0], property.value.range![1]) + try { + extractedMeta[key] = JSON.parse(runInNewContext(`JSON.stringify(${valueString})`, {})) + } catch { + console.debug(`[nuxt] Skipping extraction of \`${key}\` metadata as it is not JSON-serializable (reading \`${absolutePath}\`).`) + dynamicProperties.add(key) + continue + } + } + + if (property.value.type === 'ArrayExpression') { + const values = [] + for (const element of property.value.elements) { + if (!element) { + continue + } + if (element.type !== 'Literal' || typeof element.value !== 'string') { + console.debug(`[nuxt] Skipping extraction of \`${key}\` metadata as it is not an array of string literals (reading \`${absolutePath}\`).`) + dynamicProperties.add(key) + continue + } + values.push(element.value) + } + extractedMeta[key] = values continue } - if (element.type !== 'Literal' || typeof element.value !== 'string') { - console.debug(`[nuxt] Skipping extraction of \`${key}\` metadata as it is not an array of string literals (reading \`${absolutePath}\`).`) + + if (property.value.type !== 'Literal' || typeof property.value.value !== 'string') { + console.debug(`[nuxt] Skipping extraction of \`${key}\` metadata as it is not a string literal or array of string literals (reading \`${absolutePath}\`).`) dynamicProperties.add(key) continue } - values.push(element.value) + extractedMeta[key] = property.value.value } - extractedMeta[key] = values - continue - } - if (property.value.type !== 'Literal' || typeof property.value.value !== 'string') { - console.debug(`[nuxt] Skipping extraction of \`${key}\` metadata as it is not a string literal or array of string literals (reading \`${absolutePath}\`).`) - dynamicProperties.add(key) - continue - } - extractedMeta[key] = property.value.value - } + const extraneousMetaKeys = pageMetaArgument.properties + .filter(property => property.type === 'Property' && property.key.type === 'Identifier' && !(extractionKeys as unknown as string[]).includes(property.key.name)) + // @ts-expect-error inferred types have been filtered out + .map(property => property.key.name) - const extraneousMetaKeys = pageMetaArgument.properties - .filter(property => property.type === 'Property' && property.key.type === 'Identifier' && !(extractionKeys as unknown as string[]).includes(property.key.name)) - // @ts-expect-error inferred types have been filtered out - .map(property => property.key.name) + if (extraneousMetaKeys.length) { + dynamicProperties.add('meta') + } - if (extraneousMetaKeys.length) { - dynamicProperties.add('meta') - } - - if (dynamicProperties.size) { - extractedMeta.meta ??= {} - extractedMeta.meta[DYNAMIC_META_KEY] = dynamicProperties - } + if (dynamicProperties.size) { + extractedMeta.meta ??= {} + extractedMeta.meta[DYNAMIC_META_KEY] = dynamicProperties + } + }, + }) metaCache[absolutePath] = extractedMeta return extractedMeta @@ -505,19 +513,20 @@ async function createClientPage(loader) { }`) } - if (route.children != null) { + if (route.children) { metaRoute.children = route.children } - if (overrideMeta) { - metaRoute.name = `${metaImportName}?.name` - metaRoute.path = `${metaImportName}?.path ?? ''` + if (route.meta) { + metaRoute.meta = `{ ...(${metaImportName} || {}), ...${route.meta} }` + } + if (overrideMeta) { // skip and retain fallback if marked dynamic // set to extracted value or fallback if none extracted for (const key of ['name', 'path'] satisfies NormalizedRouteKeys) { if (markedDynamic.has(key)) { continue } - metaRoute[key] = route[key] ?? metaRoute[key] + metaRoute[key] = route[key] ?? `${metaImportName}?.${key}` } // set to extracted value or delete if none extracted @@ -532,10 +541,6 @@ async function createClientPage(loader) { metaRoute[key] = route[key] } } else { - if (route.meta != null) { - metaRoute.meta = `{ ...(${metaImportName} || {}), ...${route.meta} }` - } - if (route.alias != null) { metaRoute.alias = `${route.alias}.concat(${metaImportName}?.alias || [])` } diff --git a/packages/nuxt/test/__snapshots__/pages-override-meta-enabled.test.ts.snap b/packages/nuxt/test/__snapshots__/pages-override-meta-enabled.test.ts.snap index 88989345d1..9fb308e7c1 100644 --- a/packages/nuxt/test/__snapshots__/pages-override-meta-enabled.test.ts.snap +++ b/packages/nuxt/test/__snapshots__/pages-override-meta-enabled.test.ts.snap @@ -303,7 +303,7 @@ "alias": "mockMeta?.alias || []", "component": "() => import("pages/index.vue").then(m => m.default || m)", "meta": "mockMeta || {}", - "name": "mockMeta?.name", + "name": "mockMeta?.name ?? "index"", "path": ""/"", "redirect": "mockMeta?.redirect", }, diff --git a/packages/nuxt/test/page-metadata.test.ts b/packages/nuxt/test/page-metadata.test.ts new file mode 100644 index 0000000000..4431b80f2f --- /dev/null +++ b/packages/nuxt/test/page-metadata.test.ts @@ -0,0 +1,148 @@ +import { describe, expect, it } from 'vitest' +import { getRouteMeta, normalizeRoutes } from '../src/pages/utils' +import type { NuxtPage } from '../schema' + +const filePath = '/app/pages/index.vue' + +describe('page metadata', () => { + it('should not extract metadata from empty files', async () => { + expect(await getRouteMeta('', filePath)).toEqual({}) + expect(await getRouteMeta('', filePath)).toEqual({}) + }) + + it('should use and invalidate cache', async () => { + const fileContents = `` + const meta = await getRouteMeta(fileContents, filePath) + expect(meta === await getRouteMeta(fileContents, filePath)).toBeTruthy() + expect(meta === await getRouteMeta(fileContents, '/app/pages/other.vue')).toBeFalsy() + expect(meta === await getRouteMeta('' + fileContents, filePath)).toBeFalsy() + }) + + it('should extract serialisable metadata', async () => { + const meta = await getRouteMeta(` + + `, filePath) + + expect(meta).toMatchInlineSnapshot(` + { + "meta": { + "__nuxt_dynamic_meta_key": Set { + "meta", + }, + }, + "name": "some-custom-name", + "path": "/some-custom-path", + } + `) + }) + + it('should extract serialisable metadata in options api', async () => { + const meta = await getRouteMeta(` + + `, filePath) + + expect(meta).toMatchInlineSnapshot(` + { + "meta": { + "__nuxt_dynamic_meta_key": Set { + "meta", + }, + }, + "name": "some-custom-name", + "path": "/some-custom-path", + } + `) + }) +}) + +describe('normalizeRoutes', () => { + it('should produce valid route objects when used with extracted meta', async () => { + const page: NuxtPage = { path: '/', file: filePath } + Object.assign(page, await getRouteMeta(` + + `, filePath)) + + page.meta ||= {} + page.meta.layout = 'test' + page.meta.foo = 'bar' + + const { routes, imports } = normalizeRoutes([page], new Set(), true) + expect({ routes, imports }).toMatchInlineSnapshot(` + { + "imports": Set { + "import { default as indexN6pT4Un8hYMeta } from "/app/pages/index.vue?macro=true";", + }, + "routes": "[ + { + name: "some-custom-name", + path: indexN6pT4Un8hYMeta?.path ?? "/", + meta: { ...(indexN6pT4Un8hYMeta || {}), ...{"layout":"test","foo":"bar"} }, + redirect: "/", + component: () => import("/app/pages/index.vue").then(m => m.default || m) + } + ]", + } + `) + }) + + it('should produce valid route objects when used without extracted meta', () => { + const page: NuxtPage = { path: '/', file: filePath } + page.meta ||= {} + page.meta.layout = 'test' + page.meta.foo = 'bar' + + const { routes, imports } = normalizeRoutes([page], new Set()) + expect({ routes, imports }).toMatchInlineSnapshot(` + { + "imports": Set { + "import { default as indexN6pT4Un8hYMeta } from "/app/pages/index.vue?macro=true";", + }, + "routes": "[ + { + name: indexN6pT4Un8hYMeta?.name ?? undefined, + path: indexN6pT4Un8hYMeta?.path ?? "/", + meta: { ...(indexN6pT4Un8hYMeta || {}), ...{"layout":"test","foo":"bar"} }, + alias: indexN6pT4Un8hYMeta?.alias || [], + redirect: indexN6pT4Un8hYMeta?.redirect, + component: () => import("/app/pages/index.vue").then(m => m.default || m) + } + ]", + } + `) + }) +}) diff --git a/test/basic.test.ts b/test/basic.test.ts index f86faf36d1..864e48726e 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -166,6 +166,21 @@ describe('pages', () => { expect(res.headers.get('x-extend')).toEqual('added in pages:extend') }) + it('preserves page metadata added in pages:extend hook', async () => { + const html = await $fetch('/some-custom-path') + expect (html.match(/
([^<]*)<\/pre>/)?.[1]?.trim().replace(/"/g, '"').replace(/>/g, '>')).toMatchInlineSnapshot(`
+      "{
+        "name": "some-custom-name",
+        "path": "/some-custom-path",
+        "validate": "() => true",
+        "middleware": [
+          "() => true"
+        ],
+        "otherValue": "{\\"foo\\":\\"bar\\"}"
+      }"
+    `)
+  })
+
   it('validates routes', async () => {
     const { status, headers } = await fetch('/forbidden')
     expect(status).toEqual(404)
diff --git a/test/fixtures/basic/nuxt.config.ts b/test/fixtures/basic/nuxt.config.ts
index d312d55944..08f427b2a6 100644
--- a/test/fixtures/basic/nuxt.config.ts
+++ b/test/fixtures/basic/nuxt.config.ts
@@ -151,6 +151,17 @@ export default defineNuxtConfig({
         internalParent!.children = newPages
       })
     },
+    function (_options, nuxt) {
+      // to check that page metadata is preserved
+      nuxt.hook('pages:extend', (pages) => {
+        const customName = pages.find(page => page.name === 'some-custom-name')
+        if (!customName) { throw new Error('Page with custom name not found') }
+        if (customName.path !== '/some-custom-path') { throw new Error('Page path not extracted') }
+
+        customName.meta ||= {}
+        customName.meta.someProp = true
+      })
+    },
     // To test falsy module values
     undefined,
   ],
diff --git a/test/fixtures/basic/pages/meta.vue b/test/fixtures/basic/pages/meta.vue
new file mode 100644
index 0000000000..7983bde1ee
--- /dev/null
+++ b/test/fixtures/basic/pages/meta.vue
@@ -0,0 +1,36 @@
+
+
+

From fbf88f7b101c59bc4a10e28aafa6b79847e4b6e1 Mon Sep 17 00:00:00 2001
From: Daniel Roe 
Date: Thu, 13 Jun 2024 18:51:44 +0100
Subject: [PATCH 15/26] fix(nuxt): use portal to sync nitro/nuxt runtimeConfig
 + routeRules (#27596)

---
 packages/nuxt/src/core/nuxt.ts     | 48 ++++++++++++++++++++++++++++--
 test/fixtures/basic/nuxt.config.ts | 10 ++++++-
 2 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts
index 6d4d62524e..20d59295dc 100644
--- a/packages/nuxt/src/core/nuxt.ts
+++ b/packages/nuxt/src/core/nuxt.ts
@@ -4,7 +4,7 @@ import ignore from 'ignore'
 import type { LoadNuxtOptions } from '@nuxt/kit'
 import { addBuildPlugin, addComponent, addPlugin, addRouteMiddleware, addServerPlugin, addVitePlugin, addWebpackPlugin, installModule, loadNuxtConfig, logger, nuxtCtx, resolveAlias, resolveFiles, resolveIgnorePatterns, resolvePath, tryResolveModule, useNitro } from '@nuxt/kit'
 import { resolvePath as _resolvePath } from 'mlly'
-import type { Nuxt, NuxtHooks, NuxtModule, NuxtOptions, RuntimeConfig } from 'nuxt/schema'
+import type { Nuxt, NuxtHooks, NuxtModule, NuxtOptions } from 'nuxt/schema'
 import type { PackageJson } from 'pkg-types'
 import { readPackageJSON, resolvePackageJSON } from 'pkg-types'
 import { hash } from 'ohash'
@@ -645,8 +645,22 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise {
     options._modules.push('@nuxt/telemetry')
   }
 
-  // Ensure we share runtime config between Nuxt and Nitro
-  options.runtimeConfig = options.nitro.runtimeConfig as RuntimeConfig
+  // Ensure we share key config between Nuxt and Nitro
+  createPortalProperties(options.nitro.runtimeConfig, options, ['nitro.runtimeConfig', 'runtimeConfig'])
+  createPortalProperties(options.nitro.routeRules, options, ['nitro.routeRules', 'routeRules'])
+
+  // prevent replacement of options.nitro
+  const nitroOptions = options.nitro
+  Object.defineProperties(options, {
+    nitro: {
+      configurable: false,
+      enumerable: true,
+      get: () => nitroOptions,
+      set (value) {
+        Object.assign(nitroOptions, value)
+      },
+    },
+  })
 
   const nuxt = createNuxt(options)
 
@@ -695,3 +709,31 @@ function deduplicateArray (maybeArray: T): T {
   }
   return fresh as T
 }
+
+function createPortalProperties (sourceValue: any, options: NuxtOptions, paths: string[]) {
+  let sharedValue = sourceValue
+
+  for (const path of paths) {
+    const segments = path.split('.')
+    const key = segments.pop()!
+    let parent: Record = options
+
+    while (segments.length) {
+      const key = segments.shift()!
+      parent = parent[key] || (parent[key] = {})
+    }
+
+    delete parent[key]
+
+    Object.defineProperties(parent, {
+      [key]: {
+        configurable: false,
+        enumerable: true,
+        get: () => sharedValue,
+        set (value) {
+          sharedValue = value
+        },
+      },
+    })
+  }
+}
diff --git a/test/fixtures/basic/nuxt.config.ts b/test/fixtures/basic/nuxt.config.ts
index 08f427b2a6..320f957777 100644
--- a/test/fixtures/basic/nuxt.config.ts
+++ b/test/fixtures/basic/nuxt.config.ts
@@ -1,5 +1,6 @@
 import { addBuildPlugin, addComponent } from 'nuxt/kit'
 import type { NuxtPage } from 'nuxt/schema'
+import { defu } from 'defu'
 import { createUnplugin } from 'unplugin'
 import { withoutLeadingSlash } from 'ufo'
 
@@ -88,10 +89,17 @@ export default defineNuxtConfig({
   runtimeConfig: {
     public: {
       needsFallback: undefined,
-      testConfig: 123,
     },
   },
   modules: [
+    function (_options, nuxt) {
+      // ensure setting `runtimeConfig` also sets `nitro.runtimeConfig`
+      nuxt.options.runtimeConfig = defu(nuxt.options.runtimeConfig, {
+        public: {
+          testConfig: 123,
+        },
+      })
+    },
     function (_options, nuxt) {
       nuxt.hook('modules:done', () => {
         // @ts-expect-error not valid nuxt option

From 2c5102557ab0b0b815c42935c81d25443093bbc7 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 13 Jun 2024 19:33:15 +0100
Subject: [PATCH 16/26] chore(deps): update github/codeql-action action to
 v3.25.10 (main) (#27590)

---
 .github/workflows/ci.yml         | 4 ++--
 .github/workflows/scorecards.yml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2a1e733ab1..1c4c56cfc2 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -83,7 +83,7 @@ jobs:
         run: pnpm install
 
       - name: Initialize CodeQL
-        uses: github/codeql-action/init@530d4feaa9c62aaab2d250371e2061eb7a172363 # v3.25.9
+        uses: github/codeql-action/init@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
         with:
           languages: javascript
           queries: +security-and-quality
@@ -95,7 +95,7 @@ jobs:
           path: packages
 
       - name: Perform CodeQL Analysis
-        uses: github/codeql-action/analyze@530d4feaa9c62aaab2d250371e2061eb7a172363 # v3.25.9
+        uses: github/codeql-action/analyze@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
         with:
           category: "/language:javascript"
 
diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml
index 9e97020891..fb0b7dc233 100644
--- a/.github/workflows/scorecards.yml
+++ b/.github/workflows/scorecards.yml
@@ -68,7 +68,7 @@ jobs:
 
       # Upload the results to GitHub's code scanning dashboard.
       - name: "Upload to code-scanning"
-        uses: github/codeql-action/upload-sarif@530d4feaa9c62aaab2d250371e2061eb7a172363 # v3.25.9
+        uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
         if: github.repository == 'nuxt/nuxt' && success()
         with:
           sarif_file: results.sarif

From e4bfea642878ae742b1747e3e0d5142470000c39 Mon Sep 17 00:00:00 2001
From: Daniel Roe 
Date: Thu, 13 Jun 2024 21:00:11 +0100
Subject: [PATCH 17/26] fix(nuxt,schema): add types for `_installedModules`

---
 packages/kit/src/template.ts           | 2 +-
 packages/nuxt/src/core/nitro.ts        | 2 +-
 packages/schema/src/config/internal.ts | 5 ++++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/packages/kit/src/template.ts b/packages/kit/src/template.ts
index 194434f69f..1816ccf536 100644
--- a/packages/kit/src/template.ts
+++ b/packages/kit/src/template.ts
@@ -120,7 +120,7 @@ export async function _generateTypes (nuxt: Nuxt) {
   const modulePaths = await resolveNuxtModule(rootDirWithSlash,
     nuxt.options._installedModules
       .filter(m => m.entryPath)
-      .map(m => getDirectory(m.entryPath)),
+      .map(m => getDirectory(m.entryPath!)),
   )
 
   const isV4 = nuxt.options.future?.compatibilityVersion === 4
diff --git a/packages/nuxt/src/core/nitro.ts b/packages/nuxt/src/core/nitro.ts
index 84d6aec7dd..4c96a48666 100644
--- a/packages/nuxt/src/core/nitro.ts
+++ b/packages/nuxt/src/core/nitro.ts
@@ -43,7 +43,7 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) {
   const modules = await resolveNuxtModule(rootDirWithSlash,
     nuxt.options._installedModules
       .filter(m => m.entryPath)
-      .map(m => m.entryPath),
+      .map(m => m.entryPath!),
   )
 
   const nitroConfig: NitroConfig = defu(nuxt.options.nitro, {
diff --git a/packages/schema/src/config/internal.ts b/packages/schema/src/config/internal.ts
index 5f6545c469..346beff214 100644
--- a/packages/schema/src/config/internal.ts
+++ b/packages/schema/src/config/internal.ts
@@ -23,7 +23,10 @@ export default defineUntypedSchema({
   _nuxtConfigFiles: [],
   /** @private */
   appDir: '',
-  /** @private */
+  /**
+   * @private
+   * @type {Array<{ meta: ModuleMeta; timings?: Record; entryPath?: string }>}
+   */
   _installedModules: [],
   /** @private */
   _modules: [],

From d929cd4ef6bf10a12194ed9b2d2a6204e7c8e1be Mon Sep 17 00:00:00 2001
From: Michael Brevard 
Date: Thu, 13 Jun 2024 21:56:26 +0100
Subject: [PATCH 18/26] perf(webpack): decrease assets map iterations

---
 packages/webpack/src/plugins/vue/client.ts | 25 +++++++++-------------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/packages/webpack/src/plugins/vue/client.ts b/packages/webpack/src/plugins/vue/client.ts
index 14c0c184e3..10127fcace 100644
--- a/packages/webpack/src/plugins/vue/client.ts
+++ b/packages/webpack/src/plugins/vue/client.ts
@@ -43,24 +43,19 @@ export default class VueSSRClientPlugin {
 
       const allFiles = new Set()
       const asyncFiles = new Set()
-
-      for (const asset of stats.assets!) {
-        const file = asset.name
-        if (!isHotUpdate(file)) {
-          allFiles.add(file)
-          if (initialFiles.has(file)) { continue }
-          if (isJS(file) || isCSS(file)) {
-            asyncFiles.add(file)
-          }
-        }
-      }
-
       const assetsMapping: Record = {}
-      for (const { name, chunkNames = [] } of stats.assets!) {
-        if (isJS(name) && !isHotUpdate(name)) {
+
+      for (const { name: file, chunkNames = [] } of stats.assets!) {
+        if (isHotUpdate(file)) { continue }
+        allFiles.add(file)
+        const isFileJS = isJS(file)
+        if (!initialFiles.has(file) && (isFileJS || isCSS(file))) {
+          asyncFiles.add(file)
+        }
+        if (isFileJS) {
           const componentHash = hash(chunkNames.join('|'))
           const map = assetsMapping[componentHash] ||= []
-          map.push(name)
+          map.push(file)
         }
       }
 

From 7dfc85623bb145b91b2152482604be3cd33e9b2a Mon Sep 17 00:00:00 2001
From: Daniel Roe 
Date: Thu, 13 Jun 2024 22:52:57 +0100
Subject: [PATCH 19/26] perf(kit): various performance improvements (#27600)

Co-authored-by: Michael Brevard 
---
 packages/kit/src/internal/cjs.ts         |  4 +-
 packages/kit/src/internal/template.ts    |  5 +-
 packages/kit/src/loader/config.ts        |  7 +-
 packages/kit/src/module/compatibility.ts |  9 +--
 packages/kit/src/pages.ts                |  5 +-
 packages/kit/src/resolve.ts              | 14 +++-
 packages/kit/src/template.ts             | 97 +++++++++++++++---------
 packages/kit/test/generate-types.spec.ts |  2 +-
 8 files changed, 92 insertions(+), 51 deletions(-)

diff --git a/packages/kit/src/internal/cjs.ts b/packages/kit/src/internal/cjs.ts
index 7e30acfec7..b2c01e8c69 100644
--- a/packages/kit/src/internal/cjs.ts
+++ b/packages/kit/src/internal/cjs.ts
@@ -61,7 +61,7 @@ function getRequireCacheItem (id: string) {
   }
 }
 
-export function getModulePaths (paths?: string[] | string) {
+export function getNodeModulesPaths (paths?: string[] | string) {
   return ([] as Array).concat(
     global.__NUXT_PREPATHS__,
     paths || [],
@@ -73,7 +73,7 @@ export function getModulePaths (paths?: string[] | string) {
 /** @deprecated Do not use CJS utils */
 export function resolveModule (id: string, opts: ResolveModuleOptions = {}) {
   return normalize(_require.resolve(id, {
-    paths: getModulePaths(opts.paths),
+    paths: getNodeModulesPaths(opts.paths),
   }))
 }
 
diff --git a/packages/kit/src/internal/template.ts b/packages/kit/src/internal/template.ts
index 5b40a2a214..343393e5ec 100644
--- a/packages/kit/src/internal/template.ts
+++ b/packages/kit/src/internal/template.ts
@@ -32,10 +32,11 @@ const serialize = (data: any) => JSON.stringify(data, null, 2).replace(/"\{(.+)\
 /** @deprecated */
 const importSources = (sources: string | string[], { lazy = false } = {}) => {
   return toArray(sources).map((src) => {
+    const safeVariableName = genSafeVariableName(src)
     if (lazy) {
-      return `const ${genSafeVariableName(src)} = ${genDynamicImport(src, { comment: `webpackChunkName: ${JSON.stringify(src)}` })}`
+      return `const ${safeVariableName} = ${genDynamicImport(src, { comment: `webpackChunkName: ${JSON.stringify(src)}` })}`
     }
-    return genImport(src, genSafeVariableName(src))
+    return genImport(src, safeVariableName)
   }).join('\n')
 }
 
diff --git a/packages/kit/src/loader/config.ts b/packages/kit/src/loader/config.ts
index b2c4d1b883..8e2c1354a9 100644
--- a/packages/kit/src/loader/config.ts
+++ b/packages/kit/src/loader/config.ts
@@ -12,7 +12,12 @@ export interface LoadNuxtConfigOptions extends Omit layerSchemaKeys.includes(key)))
+const layerSchema = Object.create(null)
+for (const key of layerSchemaKeys) {
+  if (key in NuxtConfigSchema) {
+    layerSchema[key] = NuxtConfigSchema[key]
+  }
+}
 
 export async function loadNuxtConfig (opts: LoadNuxtConfigOptions): Promise {
   // Automatically detect and import layers from `~~/layers/` directory
diff --git a/packages/kit/src/module/compatibility.ts b/packages/kit/src/module/compatibility.ts
index 446e7e3fce..5bccbf8654 100644
--- a/packages/kit/src/module/compatibility.ts
+++ b/packages/kit/src/module/compatibility.ts
@@ -51,11 +51,10 @@ export async function getNuxtModuleVersion (module: string | NuxtModule, nuxt: N
   // need a name from here
   if (!moduleMeta.name) { return false }
   // maybe the version got attached within the installed module instance?
-  const version = nuxt.options._installedModules
-    // @ts-expect-error _installedModules is not typed
-    .filter(m => m.meta.name === moduleMeta.name).map(m => m.meta.version)?.[0]
-  if (version) {
-    return version
+  for (const m of nuxt.options._installedModules) {
+    if (m.meta.name === moduleMeta.name && m.meta.version) {
+      return m.meta.version
+    }
   }
   // it's possible that the module will be installed, it just hasn't been done yet, preemptively load the instance
   if (hasNuxtModule(moduleMeta.name)) {
diff --git a/packages/kit/src/pages.ts b/packages/kit/src/pages.ts
index a5f7fc1d3e..04c7592a55 100644
--- a/packages/kit/src/pages.ts
+++ b/packages/kit/src/pages.ts
@@ -51,11 +51,12 @@ export function addRouteMiddleware (input: NuxtMiddleware | NuxtMiddleware[], op
     for (const middleware of middlewares) {
       const find = app.middleware.findIndex(item => item.name === middleware.name)
       if (find >= 0) {
-        if (app.middleware[find].path === middleware.path) { continue }
+        const foundPath = app.middleware[find].path
+        if (foundPath === middleware.path) { continue }
         if (options.override === true) {
           app.middleware[find] = { ...middleware }
         } else {
-          logger.warn(`'${middleware.name}' middleware already exists at '${app.middleware[find].path}'. You can set \`override: true\` to replace it.`)
+          logger.warn(`'${middleware.name}' middleware already exists at '${foundPath}'. You can set \`override: true\` to replace it.`)
         }
       } else {
         app.middleware.push({ ...middleware })
diff --git a/packages/kit/src/resolve.ts b/packages/kit/src/resolve.ts
index 392dec86d8..b170210efe 100644
--- a/packages/kit/src/resolve.ts
+++ b/packages/kit/src/resolve.ts
@@ -168,8 +168,8 @@ export function createResolver (base: string | URL): Resolver {
   }
 }
 
-export async function resolveNuxtModule (base: string, paths: string[]) {
-  const resolved = []
+export async function resolveNuxtModule (base: string, paths: string[]): Promise {
+  const resolved: string[] = []
   const resolver = createResolver(base)
 
   for (const path of paths) {
@@ -209,6 +209,12 @@ function existsInVFS (path: string, nuxt = tryUseNuxt()) {
 }
 
 export async function resolveFiles (path: string, pattern: string | string[], opts: { followSymbolicLinks?: boolean } = {}) {
-  const files = await globby(pattern, { cwd: path, followSymbolicLinks: opts.followSymbolicLinks ?? true })
-  return files.map(p => resolve(path, p)).filter(p => !isIgnored(p)).sort()
+  const files: string[] = []
+  for (const file of await globby(pattern, { cwd: path, followSymbolicLinks: opts.followSymbolicLinks ?? true })) {
+    const p = resolve(path, file)
+    if (!isIgnored(p)) {
+      files.push(p)
+    }
+  }
+  return files.sort()
 }
diff --git a/packages/kit/src/template.ts b/packages/kit/src/template.ts
index 1816ccf536..8e729c2f20 100644
--- a/packages/kit/src/template.ts
+++ b/packages/kit/src/template.ts
@@ -11,7 +11,7 @@ import { readPackageJSON } from 'pkg-types'
 import { tryResolveModule } from './internal/esm'
 import { getDirectory } from './module/install'
 import { tryUseNuxt, useNuxt } from './context'
-import { getModulePaths } from './internal/cjs'
+import { getNodeModulesPaths } from './internal/cjs'
 import { resolveNuxtModule } from './resolve'
 
 /**
@@ -113,18 +113,55 @@ export async function updateTemplates (options?: { filter?: (template: ResolvedN
 }
 
 export async function _generateTypes (nuxt: Nuxt) {
-  const nodeModulePaths = getModulePaths(nuxt.options.modulesDir)
-
   const rootDirWithSlash = withTrailingSlash(nuxt.options.rootDir)
+  const relativeRootDir = relativeWithDot(nuxt.options.buildDir, nuxt.options.rootDir)
 
-  const modulePaths = await resolveNuxtModule(rootDirWithSlash,
-    nuxt.options._installedModules
-      .filter(m => m.entryPath)
-      .map(m => getDirectory(m.entryPath!)),
-  )
+  const include = new Set([
+    './nuxt.d.ts',
+    join(relativeRootDir, '.config/nuxt.*'),
+    join(relativeRootDir, '**/*'),
+  ])
+
+  if (nuxt.options.srcDir !== nuxt.options.rootDir) {
+    include.add(join(relative(nuxt.options.buildDir, nuxt.options.srcDir), '**/*'))
+  }
+
+  if (nuxt.options.typescript.includeWorkspace && nuxt.options.workspaceDir !== nuxt.options.rootDir) {
+    include.add(join(relative(nuxt.options.buildDir, nuxt.options.workspaceDir), '**/*'))
+  }
+
+  for (const layer of nuxt.options._layers) {
+    const srcOrCwd = layer.config.srcDir ?? layer.cwd
+    if (!srcOrCwd.startsWith(rootDirWithSlash) || srcOrCwd.includes('node_modules')) {
+      include.add(join(relative(nuxt.options.buildDir, srcOrCwd), '**/*'))
+    }
+  }
+
+  const exclude = new Set([
+    // nitro generate output: https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/core/nitro.ts#L186
+    relativeWithDot(nuxt.options.buildDir, resolve(nuxt.options.rootDir, 'dist')),
+  ])
+
+  for (const dir of nuxt.options.modulesDir) {
+    exclude.add(relativeWithDot(nuxt.options.buildDir, dir))
+  }
+
+  const moduleEntryPaths: string[] = []
+  for (const m of nuxt.options._installedModules) {
+    if (m.entryPath) {
+      moduleEntryPaths.push(getDirectory(m.entryPath))
+    }
+  }
+
+  const modulePaths = await resolveNuxtModule(rootDirWithSlash, moduleEntryPaths)
+
+  for (const path of modulePaths) {
+    const relative = relativeWithDot(nuxt.options.buildDir, path)
+    include.add(join(relative, 'runtime'))
+    exclude.add(join(relative, 'runtime/server'))
+  }
 
   const isV4 = nuxt.options.future?.compatibilityVersion === 4
-
   const hasTypescriptVersionWithModulePreserve = await readPackageJSON('typescript', { url: nuxt.options.modulesDir })
     .then(r => r?.version && gte(r.version, '5.4.0'))
     .catch(() => isV4)
@@ -168,23 +205,8 @@ export async function _generateTypes (nuxt: Nuxt) {
       noImplicitThis: true, /* enabled with `strict` */
       allowSyntheticDefaultImports: true,
     },
-    include: [
-      './nuxt.d.ts',
-      join(relativeWithDot(nuxt.options.buildDir, nuxt.options.rootDir), '.config/nuxt.*'),
-      join(relativeWithDot(nuxt.options.buildDir, nuxt.options.rootDir), '**/*'),
-      ...nuxt.options.srcDir !== nuxt.options.rootDir ? [join(relative(nuxt.options.buildDir, nuxt.options.srcDir), '**/*')] : [],
-      ...nuxt.options._layers.map(layer => layer.config.srcDir ?? layer.cwd)
-        .filter(srcOrCwd => !srcOrCwd.startsWith(rootDirWithSlash) || srcOrCwd.includes('node_modules'))
-        .map(srcOrCwd => join(relative(nuxt.options.buildDir, srcOrCwd), '**/*')),
-      ...nuxt.options.typescript.includeWorkspace && nuxt.options.workspaceDir !== nuxt.options.rootDir ? [join(relative(nuxt.options.buildDir, nuxt.options.workspaceDir), '**/*')] : [],
-      ...modulePaths.map(m => join(relativeWithDot(nuxt.options.buildDir, m), 'runtime')),
-    ],
-    exclude: [
-      ...nuxt.options.modulesDir.map(m => relativeWithDot(nuxt.options.buildDir, m)),
-      ...modulePaths.map(m => join(relativeWithDot(nuxt.options.buildDir, m), 'runtime/server')),
-      // nitro generate output: https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/core/nitro.ts#L186
-      relativeWithDot(nuxt.options.buildDir, resolve(nuxt.options.rootDir, 'dist')),
-    ],
+    include: [...include],
+    exclude: [...exclude],
   } satisfies TSConfig)
 
   const aliases: Record = {
@@ -195,7 +217,9 @@ export async function _generateTypes (nuxt: Nuxt) {
   // Exclude bridge alias types to support Volar
   const excludedAlias = [/^@vue\/.*$/]
 
-  const basePath = tsConfig.compilerOptions!.baseUrl ? resolve(nuxt.options.buildDir, tsConfig.compilerOptions!.baseUrl) : nuxt.options.buildDir
+  const basePath = tsConfig.compilerOptions!.baseUrl
+    ? resolve(nuxt.options.buildDir, tsConfig.compilerOptions!.baseUrl)
+    : nuxt.options.buildDir
 
   tsConfig.compilerOptions = tsConfig.compilerOptions || {}
   tsConfig.include = tsConfig.include || []
@@ -237,12 +261,13 @@ export async function _generateTypes (nuxt: Nuxt) {
     }
   }
 
-  const references: TSReference[] = await Promise.all([
-    ...nuxt.options.modules,
-    ...nuxt.options._modules,
-  ]
-    .filter(f => typeof f === 'string')
-    .map(async id => ({ types: (await readPackageJSON(id, { url: nodeModulePaths }).catch(() => null))?.name || id })))
+  const references: TSReference[] = []
+  await Promise.all([...nuxt.options.modules, ...nuxt.options._modules].map(async (id) => {
+    if (typeof id !== 'string') { return }
+
+    const pkg = await readPackageJSON(id, { url: getNodeModulesPaths(nuxt.options.modulesDir) }).catch(() => null)
+    references.push(({ types: pkg?.name || id }))
+  }))
 
   const declarations: string[] = []
 
@@ -302,7 +327,11 @@ export async function writeTypes (nuxt: Nuxt) {
 }
 
 function renderAttrs (obj: Record) {
-  return Object.entries(obj).map(e => renderAttr(e[0], e[1])).join(' ')
+  const attrs: string[] = []
+  for (const key in obj) {
+    attrs.push(renderAttr(key, obj[key]))
+  }
+  return attrs.join(' ')
 }
 
 function renderAttr (key: string, value: string) {
diff --git a/packages/kit/test/generate-types.spec.ts b/packages/kit/test/generate-types.spec.ts
index 7ac10ba8d1..b5bcc9a6bb 100644
--- a/packages/kit/test/generate-types.spec.ts
+++ b/packages/kit/test/generate-types.spec.ts
@@ -53,12 +53,12 @@ describe('tsConfig generation', () => {
     }))
     expect(tsConfig.exclude).toMatchInlineSnapshot(`
       [
+        "../dist",
         "../modules/test/node_modules",
         "../modules/node_modules",
         "../node_modules/@some/module/node_modules",
         "../node_modules",
         "../../node_modules",
-        "../dist",
       ]
     `)
   })

From 02945b9fa6d7323f63137e89422007bb5ebd7e4f Mon Sep 17 00:00:00 2001
From: Daniel Roe 
Date: Thu, 13 Jun 2024 22:47:24 +0100
Subject: [PATCH 20/26] chore: add extra types for empty array definitions

---
 packages/nuxt/src/app/components/nuxt-island.ts  | 6 +++---
 packages/nuxt/src/app/components/utils.ts        | 2 +-
 packages/nuxt/src/core/nuxt.ts                   | 2 +-
 packages/nuxt/src/core/runtime/nitro/renderer.ts | 2 +-
 packages/nuxt/src/pages/utils.ts                 | 2 +-
 5 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/packages/nuxt/src/app/components/nuxt-island.ts b/packages/nuxt/src/app/components/nuxt-island.ts
index 784132a752..93832a1eaf 100644
--- a/packages/nuxt/src/app/components/nuxt-island.ts
+++ b/packages/nuxt/src/app/components/nuxt-island.ts
@@ -1,4 +1,4 @@
-import type { Component, PropType } from 'vue'
+import type { Component, PropType, VNode } from 'vue'
 import { Fragment, Teleport, computed, createStaticVNode, createVNode, defineComponent, getCurrentInstance, h, nextTick, onMounted, ref, toRaw, watch, withMemo } from 'vue'
 import { debounce } from 'perfect-debounce'
 import { hash } from 'ohash'
@@ -29,7 +29,7 @@ const getId = import.meta.client ? () => (id++).toString() : randomUUID
 const components = import.meta.client ? new Map() : undefined
 
 async function loadComponents (source = appBaseURL, paths: NuxtIslandResponse['components']) {
-  const promises = []
+  const promises: Array> = []
 
   for (const component in paths) {
     if (!(components!.has(component))) {
@@ -259,7 +259,7 @@ export default defineComponent({
 
         // should away be triggered ONE tick after re-rendering the static node
         withMemo([teleportKey.value], () => {
-          const teleports = []
+          const teleports: Array = []
           // this is used to force trigger Teleport when vue makes the diff between old and new node
           const isKeyOdd = teleportKey.value === 0 || !!(teleportKey.value && !(teleportKey.value % 2))
 
diff --git a/packages/nuxt/src/app/components/utils.ts b/packages/nuxt/src/app/components/utils.ts
index a5e918a89d..3de363755d 100644
--- a/packages/nuxt/src/app/components/utils.ts
+++ b/packages/nuxt/src/app/components/utils.ts
@@ -86,7 +86,7 @@ export function vforToArray (source: any): any[] {
     if (import.meta.dev && !Number.isInteger(source)) {
       console.warn(`The v-for range expect an integer value but got ${source}.`)
     }
-    const array = []
+    const array: number[] = []
     for (let i = 0; i < source; i++) {
       array[i] = i
     }
diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts
index 20d59295dc..b054abb923 100644
--- a/packages/nuxt/src/core/nuxt.ts
+++ b/packages/nuxt/src/core/nuxt.ts
@@ -698,7 +698,7 @@ const RESTART_RE = /^(?:app|error|app\.config)\.(?:js|ts|mjs|jsx|tsx|vue)$/i
 function deduplicateArray (maybeArray: T): T {
   if (!Array.isArray(maybeArray)) { return maybeArray }
 
-  const fresh = []
+  const fresh: any[] = []
   const hashes = new Set()
   for (const item of maybeArray) {
     const _hash = hash(item)
diff --git a/packages/nuxt/src/core/runtime/nitro/renderer.ts b/packages/nuxt/src/core/runtime/nitro/renderer.ts
index f33a9774aa..4321a2387a 100644
--- a/packages/nuxt/src/core/runtime/nitro/renderer.ts
+++ b/packages/nuxt/src/core/runtime/nitro/renderer.ts
@@ -400,7 +400,7 @@ export default defineRenderHandler(async (event): Promise
Date: Thu, 13 Jun 2024 23:35:00 +0100
Subject: [PATCH 21/26] perf(vite): various performance improvements (#27601)

---
 packages/vite/package.json                   |  1 +
 packages/vite/src/client.ts                  | 13 +++++++++---
 packages/vite/src/css.ts                     | 17 +++++++++------
 packages/vite/src/dev-bundler.ts             |  8 ++++++-
 packages/vite/src/manifest.ts                | 13 +++++++-----
 packages/vite/src/plugins/analyze.ts         | 19 ++++++++++-------
 packages/vite/src/plugins/composable-keys.ts |  7 +++++--
 packages/vite/src/plugins/public-dirs.ts     |  2 +-
 packages/vite/src/plugins/ssr-styles.ts      |  6 +++---
 packages/vite/src/server.ts                  |  2 +-
 packages/vite/src/utils/transpile.ts         |  2 +-
 packages/vite/src/vite.ts                    | 22 +++++++++++++-------
 pnpm-lock.yaml                               |  3 +++
 13 files changed, 77 insertions(+), 38 deletions(-)

diff --git a/packages/vite/package.json b/packages/vite/package.json
index d2b64f1169..24c6384263 100644
--- a/packages/vite/package.json
+++ b/packages/vite/package.json
@@ -28,6 +28,7 @@
     "@types/clear": "0.1.4",
     "@types/estree": "1.0.5",
     "@types/fs-extra": "11.0.4",
+    "rollup": "^4.18.0",
     "unbuild": "latest",
     "vue": "3.4.27"
   },
diff --git a/packages/vite/src/client.ts b/packages/vite/src/client.ts
index 12d746c021..607666f933 100644
--- a/packages/vite/src/client.ts
+++ b/packages/vite/src/client.ts
@@ -163,10 +163,11 @@ export async function buildClient (ctx: ViteBuildContext) {
   }
 
   // We want to respect users' own rollup output options
+  const fileNames = withoutLeadingSlash(join(ctx.nuxt.options.app.buildAssetsDir, '[hash].js'))
   clientConfig.build!.rollupOptions = defu(clientConfig.build!.rollupOptions!, {
     output: {
-      chunkFileNames: ctx.nuxt.options.dev ? undefined : withoutLeadingSlash(join(ctx.nuxt.options.app.buildAssetsDir, '[hash].js')),
-      entryFileNames: ctx.nuxt.options.dev ? 'entry.js' : withoutLeadingSlash(join(ctx.nuxt.options.app.buildAssetsDir, '[hash].js')),
+      chunkFileNames: ctx.nuxt.options.dev ? undefined : fileNames,
+      entryFileNames: ctx.nuxt.options.dev ? 'entry.js' : fileNames,
     } satisfies NonNullable['output'],
   }) as any
 
@@ -228,7 +229,13 @@ export async function buildClient (ctx: ViteBuildContext) {
     })
 
     const viteMiddleware = defineEventHandler(async (event) => {
-      const viteRoutes = viteServer.middlewares.stack.map(m => m.route).filter(r => r.length > 1)
+      const viteRoutes: string[] = []
+      for (const viteRoute of viteServer.middlewares.stack) {
+        const m = viteRoute.route
+        if (m.length > 1) {
+          viteRoutes.push(m)
+        }
+      }
       if (!event.path.startsWith(clientConfig.base!) && !viteRoutes.some(route => event.path.startsWith(route))) {
         // @ts-expect-error _skip_transform is a private property
         event.node.req._skip_transform = true
diff --git a/packages/vite/src/css.ts b/packages/vite/src/css.ts
index 96413a3ce4..e99b323fa4 100644
--- a/packages/vite/src/css.ts
+++ b/packages/vite/src/css.ts
@@ -3,6 +3,8 @@ import type { Nuxt } from '@nuxt/schema'
 import type { InlineConfig as ViteConfig } from 'vite'
 import { distDir } from './dirs'
 
+const lastPlugins = ['autoprefixer', 'cssnano']
+
 export function resolveCSSOptions (nuxt: Nuxt): ViteConfig['css'] {
   const css: ViteConfig['css'] & { postcss: NonNullable['postcss'], string>> } = {
     postcss: {
@@ -10,19 +12,22 @@ export function resolveCSSOptions (nuxt: Nuxt): ViteConfig['css'] {
     },
   }
 
-  const lastPlugins = ['autoprefixer', 'cssnano']
-  css.postcss.plugins = Object.entries(nuxt.options.postcss.plugins)
+  css.postcss.plugins = []
+
+  const plugins = Object.entries(nuxt.options.postcss.plugins)
     .sort((a, b) => lastPlugins.indexOf(a[0]) - lastPlugins.indexOf(b[0]))
-    .filter(([, opts]) => opts)
-    .map(([name, opts]) => {
+
+  for (const [name, opts] of plugins) {
+    if (opts) {
       const plugin = requireModule(name, {
         paths: [
           ...nuxt.options.modulesDir,
           distDir,
         ],
       })
-      return plugin(opts)
-    })
+      css.postcss.plugins.push(plugin(opts))
+    }
+  }
 
   return css
 }
diff --git a/packages/vite/src/dev-bundler.ts b/packages/vite/src/dev-bundler.ts
index cf774c241d..e2d970b524 100644
--- a/packages/vite/src/dev-bundler.ts
+++ b/packages/vite/src/dev-bundler.ts
@@ -238,7 +238,13 @@ export async function initViteDevBundler (ctx: ViteBuildContext, onBuild: () =>
     const { code, ids } = await bundleRequest(options, ctx.entry)
     await fse.writeFile(resolve(ctx.nuxt.options.buildDir, 'dist/server/server.mjs'), code, 'utf-8')
     // Have CSS in the manifest to prevent FOUC on dev SSR
-    await writeManifest(ctx, ids.filter(isCSS).map(i => i.slice(1)))
+    const manifestIds: string[] = []
+    for (const i of ids) {
+      if (isCSS(i)) {
+        manifestIds.push(i.slice(1))
+      }
+    }
+    await writeManifest(ctx, manifestIds)
     const time = (Date.now() - start)
     logger.success(`Vite server built in ${time}ms`)
     await onBuild()
diff --git a/packages/vite/src/manifest.ts b/packages/vite/src/manifest.ts
index f5d3e7aa6a..54471633ec 100644
--- a/packages/vite/src/manifest.ts
+++ b/packages/vite/src/manifest.ts
@@ -50,11 +50,14 @@ export async function writeManifest (ctx: ViteBuildContext, css: string[] = [])
   await fse.mkdirp(serverDist)
 
   if (ctx.config.build?.cssCodeSplit === false) {
-    const entryCSS = Object.values(clientManifest as Record).find(val => (val).file?.endsWith('.css'))?.file
-    if (entryCSS) {
-      const key = relative(ctx.config.root!, ctx.entry)
-      clientManifest[key].css ||= []
-      clientManifest[key].css!.push(entryCSS)
+    for (const key in clientManifest as Record) {
+      const val = clientManifest[key]
+      if (val.file?.endsWith('.css')) {
+        const key = relative(ctx.config.root!, ctx.entry)
+        clientManifest[key].css ||= []
+        clientManifest[key].css!.push(val.file)
+        break
+      }
     }
   }
 
diff --git a/packages/vite/src/plugins/analyze.ts b/packages/vite/src/plugins/analyze.ts
index 3fa23b94b8..ddb923f244 100644
--- a/packages/vite/src/plugins/analyze.ts
+++ b/packages/vite/src/plugins/analyze.ts
@@ -3,6 +3,7 @@ import { transform } from 'esbuild'
 import { visualizer } from 'rollup-plugin-visualizer'
 import defu from 'defu'
 import type { NuxtOptions } from 'nuxt/schema'
+import type { RenderedModule } from 'rollup'
 import type { ViteBuildContext } from '../vite'
 
 export function analyzePlugin (ctx: ViteBuildContext): Plugin[] {
@@ -13,14 +14,18 @@ export function analyzePlugin (ctx: ViteBuildContext): Plugin[] {
     {
       name: 'nuxt:analyze-minify',
       async generateBundle (_opts, outputBundle) {
-        for (const [_bundleId, bundle] of Object.entries(outputBundle)) {
+        for (const _bundleId in outputBundle) {
+          const bundle = outputBundle[_bundleId]
           if (bundle.type !== 'chunk') { continue }
-          const originalEntries = Object.entries(bundle.modules)
-          const minifiedEntries = await Promise.all(originalEntries.map(async ([moduleId, module]) => {
-            const { code } = await transform(module.code || '', { minify: true })
-            return [moduleId, { ...module, code }]
-          }))
-          bundle.modules = Object.fromEntries(minifiedEntries)
+          const minifiedModuleEntryPromises: Array> = []
+          for (const moduleId in bundle.modules) {
+            const module = bundle.modules[moduleId]
+            minifiedModuleEntryPromises.push(
+              transform(module.code || '', { minify: true })
+                .then(result => [moduleId, { ...module, code: result.code }]),
+            )
+          }
+          bundle.modules = Object.fromEntries(await Promise.all(minifiedModuleEntryPromises))
         }
       },
     },
diff --git a/packages/vite/src/plugins/composable-keys.ts b/packages/vite/src/plugins/composable-keys.ts
index 4832d60e61..af967c9eb7 100644
--- a/packages/vite/src/plugins/composable-keys.ts
+++ b/packages/vite/src/plugins/composable-keys.ts
@@ -23,12 +23,15 @@ const SUPPORTED_EXT_RE = /\.(?:m?[jt]sx?|vue)/
 
 export const composableKeysPlugin = createUnplugin((options: ComposableKeysOptions) => {
   const composableMeta: Record = {}
+  const composableLengths = new Set()
+  const keyedFunctions = new Set()
   for (const { name, ...meta } of options.composables) {
     composableMeta[name] = meta
+    keyedFunctions.add(name)
+    composableLengths.add(meta.argumentLength)
   }
 
-  const maxLength = Math.max(...options.composables.map(({ argumentLength }) => argumentLength))
-  const keyedFunctions = new Set(options.composables.map(({ name }) => name))
+  const maxLength = Math.max(...composableLengths)
   const KEYED_FUNCTIONS_RE = new RegExp(`\\b(${[...keyedFunctions].map(f => escapeRE(f)).join('|')})\\b`)
 
   return {
diff --git a/packages/vite/src/plugins/public-dirs.ts b/packages/vite/src/plugins/public-dirs.ts
index 442b87e6e5..379d451819 100644
--- a/packages/vite/src/plugins/public-dirs.ts
+++ b/packages/vite/src/plugins/public-dirs.ts
@@ -25,7 +25,7 @@ export const VitePublicDirsPlugin = createUnplugin((options: { sourcemap?: boole
       resolveId: {
         enforce: 'post',
         handler (id) {
-          if (id === '/__skip_vite' || !id.startsWith('/') || id.startsWith('/@fs')) { return }
+          if (id === '/__skip_vite' || id[0] !== '/' || id.startsWith('/@fs')) { return }
 
           if (resolveFromPublicAssets(id)) {
             return PREFIX + encodeURIComponent(id)
diff --git a/packages/vite/src/plugins/ssr-styles.ts b/packages/vite/src/plugins/ssr-styles.ts
index 37fc7da1f7..b1e785c6e9 100644
--- a/packages/vite/src/plugins/ssr-styles.ts
+++ b/packages/vite/src/plugins/ssr-styles.ts
@@ -66,12 +66,12 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin {
         const { files, inBundle } = cssMap[file]
         // File has been tree-shaken out of build (or there are no styles to inline)
         if (!files.length || !inBundle) { continue }
-
+        const fileName = filename(file)
         const base = typeof outputOptions.assetFileNames === 'string'
           ? outputOptions.assetFileNames
           : outputOptions.assetFileNames({
             type: 'asset',
-            name: `${filename(file)}-styles.mjs`,
+            name: `${fileName}-styles.mjs`,
             source: '',
           })
 
@@ -79,7 +79,7 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin {
 
         emitted[file] = this.emitFile({
           type: 'asset',
-          name: `${filename(file)}-styles.mjs`,
+          name: `${fileName}-styles.mjs`,
           source: [
             ...files.map((css, i) => `import style_${i} from './${relative(baseDir, this.getFileName(css))}';`),
             `export default [${files.map((_, i) => `style_${i}`).join(', ')}]`,
diff --git a/packages/vite/src/server.ts b/packages/vite/src/server.ts
index 33965931a8..67919c8b2f 100644
--- a/packages/vite/src/server.ts
+++ b/packages/vite/src/server.ts
@@ -105,7 +105,7 @@ export async function buildServer (ctx: ViteBuildContext) {
 
   if (!ctx.nuxt.options.dev) {
     const nitroDependencies = await tryResolveModule('nitropack/package.json', ctx.nuxt.options.modulesDir)
-      .then(r => import(r!)).then(r => Object.keys(r.dependencies || {})).catch(() => [])
+      .then(r => import(r!)).then(r => r.dependencies ? Object.keys(r.dependencies) : []).catch(() => [])
     if (Array.isArray(serverConfig.ssr!.external)) {
       serverConfig.ssr!.external.push(
         // explicit dependencies we use in our ssr renderer - these can be inlined (if necessary) in the nitro build
diff --git a/packages/vite/src/utils/transpile.ts b/packages/vite/src/utils/transpile.ts
index 2484cc7034..8c60c1776a 100644
--- a/packages/vite/src/utils/transpile.ts
+++ b/packages/vite/src/utils/transpile.ts
@@ -10,7 +10,7 @@ interface Envs {
 
 export function transpile (envs: Envs): Array {
   const nuxt = useNuxt()
-  const transpile = []
+  const transpile: Array = []
 
   for (let pattern of nuxt.options.build.transpile) {
     if (typeof pattern === 'function') {
diff --git a/packages/vite/src/vite.ts b/packages/vite/src/vite.ts
index 1c6a9c82f4..b19b29ba0f 100644
--- a/packages/vite/src/vite.ts
+++ b/packages/vite/src/vite.ts
@@ -4,6 +4,7 @@ import { dirname, join, normalize, resolve } from 'pathe'
 import type { Nuxt, NuxtBuilder, ViteConfig } from '@nuxt/schema'
 import { addVitePlugin, isIgnored, logger, resolvePath } from '@nuxt/kit'
 import replace from '@rollup/plugin-replace'
+import type { RollupReplaceOptions } from '@rollup/plugin-replace'
 import { sanitizeFilePath } from 'mlly'
 import { withoutLeadingSlash } from 'ufo'
 import { filename } from 'pathe/utils'
@@ -102,10 +103,7 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => {
             rootDir: nuxt.options.rootDir,
             composables: nuxt.options.optimization.keyedComposables,
           }),
-          replace({
-            ...Object.fromEntries([';', '(', '{', '}', ' ', '\t', '\n'].map(d => [`${d}global.`, `${d}globalThis.`])),
-            preventAssignment: true,
-          }),
+          replace({ preventAssignment: true, ...globalThisReplacements }),
           virtual(nuxt.vfs),
         ],
         server: {
@@ -164,10 +162,16 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => {
   await nuxt.callHook('vite:extend', ctx)
 
   nuxt.hook('vite:extendConfig', (config) => {
-    config.plugins!.push(replace({
-      preventAssignment: true,
-      ...Object.fromEntries(Object.entries(config.define!).filter(([key]) => key.startsWith('import.meta.'))),
-    }))
+    const replaceOptions: RollupReplaceOptions = Object.create(null)
+    replaceOptions.preventAssignment = true
+
+    for (const key in config.define!) {
+      if (key.startsWith('import.meta.')) {
+        replaceOptions[key] = config.define![key]
+      }
+    }
+
+    config.plugins!.push(replace(replaceOptions))
   })
 
   if (!ctx.nuxt.options.dev) {
@@ -224,3 +228,5 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => {
   await buildClient(ctx)
   await buildServer(ctx)
 }
+
+const globalThisReplacements = Object.fromEntries([';', '(', '{', '}', ' ', '\t', '\n'].map(d => [`${d}global.`, `${d}globalThis.`]))
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f38e4b444e..73b476bb7e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -744,6 +744,9 @@ importers:
       '@types/fs-extra':
         specifier: 11.0.4
         version: 11.0.4
+      rollup:
+        specifier: ^4.18.0
+        version: 4.18.0
       unbuild:
         specifier: latest
         version: 2.0.0(sass@1.69.4)(typescript@5.4.5)

From 8af56b176182a63b93256dfbe66ac367af677334 Mon Sep 17 00:00:00 2001
From: Daniel Roe 
Date: Thu, 13 Jun 2024 23:35:57 +0100
Subject: [PATCH 22/26] fix(nuxt): include build-time pages in prerender routes
 (#27569)

---
 packages/nuxt/src/pages/module.ts | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/packages/nuxt/src/pages/module.ts b/packages/nuxt/src/pages/module.ts
index 3e5982ea3b..4121e0dd84 100644
--- a/packages/nuxt/src/pages/module.ts
+++ b/packages/nuxt/src/pages/module.ts
@@ -275,6 +275,20 @@ 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') },

From 51ab5de3e6c1c9451f8fc20a2ce15910452c5333 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 13 Jun 2024 23:36:38 +0100
Subject: [PATCH 23/26] chore(deps): pin devdependency rollup to 4.18.0 (main)
 (#27603)

---
 packages/vite/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/vite/package.json b/packages/vite/package.json
index 24c6384263..0960b6bf51 100644
--- a/packages/vite/package.json
+++ b/packages/vite/package.json
@@ -28,7 +28,7 @@
     "@types/clear": "0.1.4",
     "@types/estree": "1.0.5",
     "@types/fs-extra": "11.0.4",
-    "rollup": "^4.18.0",
+    "rollup": "4.18.0",
     "unbuild": "latest",
     "vue": "3.4.27"
   },

From 58dd7f3a684ff6e7f9e890edb3ec6cb1ba60c29b Mon Sep 17 00:00:00 2001
From: Daniel Roe 
Date: Fri, 14 Jun 2024 13:03:53 +0100
Subject: [PATCH 24/26] chore: remove stub types file for
 `webpack-virtual-modules`

---
 packages/webpack/package.json |  1 -
 pnpm-lock.yaml                | 11 -----------
 2 files changed, 12 deletions(-)

diff --git a/packages/webpack/package.json b/packages/webpack/package.json
index 3eb50c34e0..636293f8d1 100644
--- a/packages/webpack/package.json
+++ b/packages/webpack/package.json
@@ -77,7 +77,6 @@
     "@types/pify": "5.0.4",
     "@types/webpack-bundle-analyzer": "4.7.0",
     "@types/webpack-hot-middleware": "2.25.9",
-    "@types/webpack-virtual-modules": "0.4.2",
     "unbuild": "latest",
     "vue": "3.4.27"
   },
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 73b476bb7e..f771943c8e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -907,9 +907,6 @@ importers:
       '@types/webpack-hot-middleware':
         specifier: 2.25.9
         version: 2.25.9
-      '@types/webpack-virtual-modules':
-        specifier: 0.4.2
-        version: 0.4.2
       unbuild:
         specifier: latest
         version: 2.0.0(sass@1.69.4)(typescript@5.4.5)
@@ -2718,10 +2715,6 @@ packages:
   '@types/webpack-sources@3.2.1':
     resolution: {integrity: sha512-iLC3Fsx62ejm3ST3PQ8vBMC54Rb3EoCprZjeJGI5q+9QjfDLGt9jeg/k245qz1G9AQnORGk0vqPicJFPT1QODQ==}
 
-  '@types/webpack-virtual-modules@0.4.2':
-    resolution: {integrity: sha512-0ff/n3TXx1FysQV/kSpF8bxnCXUf7cw3Mp6WbXq0IfrgFK/MBIZqAQFN7VUkGwRzHZb+9DfLPZ3dOI+/L+m9ww==}
-    deprecated: This is a stub types definition. webpack-virtual-modules provides its own type definitions, so you do not need this installed.
-
   '@types/webpack@4.41.34':
     resolution: {integrity: sha512-CN2aOGrR3zbMc2v+cKqzaClYP1ldkpPOgtdNvgX+RmlWCSWxHxpzz6WSCVQZRkF8D60ROlkRzAoEpgjWQ+bd2g==}
 
@@ -9593,10 +9586,6 @@ snapshots:
       '@types/source-list-map': 0.1.4
       source-map: 0.7.4
 
-  '@types/webpack-virtual-modules@0.4.2':
-    dependencies:
-      webpack-virtual-modules: 0.6.2
-
   '@types/webpack@4.41.34':
     dependencies:
       '@types/node': 20.14.2

From 4b28d2628c5feff41898c7796e686aab3a91d8cf Mon Sep 17 00:00:00 2001
From: Daniel Roe 
Date: Fri, 14 Jun 2024 14:15:41 +0100
Subject: [PATCH 25/26] docs: update compatibility example

https://github.com/nuxt/nuxt/issues/27613
---
 docs/2.guide/3.going-further/3.modules.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/2.guide/3.going-further/3.modules.md b/docs/2.guide/3.going-further/3.modules.md
index 8c354e5e21..7582e90617 100644
--- a/docs/2.guide/3.going-further/3.modules.md
+++ b/docs/2.guide/3.going-further/3.modules.md
@@ -155,7 +155,7 @@ export default defineNuxtModule({
     // Compatibility constraints
     compatibility: {
       // Semver version of supported nuxt versions
-      nuxt: '^3.0.0'
+      nuxt: '>=3.0.0'
     }
   },
   // Default configuration options for your module, can also be a function returning those

From 18bc2c8bfcc006f3bcd7a2d1323b2d5fe1b5fc57 Mon Sep 17 00:00:00 2001
From: David Nahodyl 
Date: Fri, 14 Jun 2024 09:46:41 -0400
Subject: [PATCH 26/26] docs: document new `clear()` function added in 3.11
 (#27615)

---
 docs/3.api/2.composables/use-async-data.md | 5 +++--
 docs/3.api/2.composables/use-fetch.md      | 7 ++++---
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/docs/3.api/2.composables/use-async-data.md b/docs/3.api/2.composables/use-async-data.md
index 0885af2107..b839fb1d08 100644
--- a/docs/3.api/2.composables/use-async-data.md
+++ b/docs/3.api/2.composables/use-async-data.md
@@ -18,7 +18,7 @@ Within your pages, components, and plugins you can use useAsyncData to get acces
 
 ```vue [pages/index.vue]
 
 ```
 
 ::note
-`data`, `pending`, `status` and `error` are Vue refs and they should be accessed with `.value` when used within the `