diff --git a/packages/kit/src/template.ts b/packages/kit/src/template.ts index 8ca9360773..f4fbf76e4e 100644 --- a/packages/kit/src/template.ts +++ b/packages/kit/src/template.ts @@ -119,9 +119,6 @@ export async function updateTemplates (options?: { filter?: (template: ResolvedN return await tryUseNuxt()?.hooks.callHook('builder:generateApp', options) } -const EXTENSION_RE = /\b\.\w+$/g -// Exclude bridge alias types to support Volar -const excludedAlias = [/^@vue\/.*$/, /^#internal\/nuxt/] export async function _generateTypes (nuxt: Nuxt) { const rootDirWithSlash = withTrailingSlash(nuxt.options.rootDir) const relativeRootDir = relativeWithDot(nuxt.options.buildDir, nuxt.options.rootDir) @@ -233,7 +230,9 @@ export async function _generateTypes (nuxt: Nuxt) { } satisfies TSConfig) const aliases: Record = nuxt.options.alias - + const EXTENSION_RE = /\b\.\w+$/g + // Exclude bridge alias types to support Volar + const excludedAlias = [/^@vue\/.*$/, /^#internal\/nuxt/] const basePath = tsConfig.compilerOptions!.baseUrl ? resolve(nuxt.options.buildDir, tsConfig.compilerOptions!.baseUrl) : nuxt.options.buildDir diff --git a/packages/nuxt/src/app/components/utils.ts b/packages/nuxt/src/app/components/utils.ts index 30157a6162..ac2cb3a289 100644 --- a/packages/nuxt/src/app/components/utils.ts +++ b/packages/nuxt/src/app/components/utils.ts @@ -3,6 +3,7 @@ import type { RendererNode, VNode } from 'vue' // eslint-disable-next-line import { isString, isPromise, isArray, isObject } from '@vue/shared' import type { RouteLocationNormalized } from 'vue-router' +import { ROUTE_KEY_NORMAL_RE, ROUTE_KEY_PARENTHESES_RE, ROUTE_KEY_SYMBOLS_RE } from '../../utils' // @ts-expect-error virtual file import { START_LOCATION } from '#build/pages' @@ -14,9 +15,6 @@ export const _wrapInTransition = (props: any, children: any) => { return { default: () => import.meta.client && props ? h(Transition, props === true ? {} : props, children) : children.default?.() } } -const ROUTE_KEY_PARENTHESES_RE = /(:\w+)\([^)]+\)/g -const ROUTE_KEY_SYMBOLS_RE = /(:\w+)[?+*]/g -const ROUTE_KEY_NORMAL_RE = /:\w+/g // TODO: consider refactoring into single utility // See https://github.com/nuxt/nuxt/tree/main/packages/nuxt/src/pages/runtime/utils.ts#L8-L19 function generateRouteKey (route: RouteLocationNormalized) { diff --git a/packages/nuxt/src/components/module.ts b/packages/nuxt/src/components/module.ts index ebaad05622..13f5c6e713 100644 --- a/packages/nuxt/src/components/module.ts +++ b/packages/nuxt/src/components/module.ts @@ -21,9 +21,6 @@ function compareDirByPathLength ({ path: pathA }: { path: string }, { path: path return pathB.split(SLASH_SEPARATOR_RE).filter(Boolean).length - pathA.split(SLASH_SEPARATOR_RE).filter(Boolean).length } -const DEFAULT_COMPONENTS_DIRS_RE = /\/components(?:\/(?:global|islands))?$/ -const STARTER_DOT_RE = /^\./g - export type getComponentsT = (mode?: 'client' | 'server' | 'all') => Component[] export default defineNuxtModule({ @@ -78,6 +75,8 @@ export default defineNuxtModule({ })) } + const DEFAULT_COMPONENTS_DIRS_RE = /\/components(?:\/(?:global|islands))?$/ + const STARTER_DOT_RE = /^\./g // Resolve dirs nuxt.hook('app:resolve', async () => { // components/ dirs from all layers diff --git a/packages/nuxt/src/components/plugins/islands-transform.ts b/packages/nuxt/src/components/plugins/islands-transform.ts index 5f2954b550..3efe225bca 100644 --- a/packages/nuxt/src/components/plugins/islands-transform.ts +++ b/packages/nuxt/src/components/plugins/islands-transform.ts @@ -23,20 +23,54 @@ interface ComponentChunkOptions { buildDir: string } -const SCRIPT_RE = /]*>/gi -const HAS_SLOT_OR_CLIENT_RE = /]*>|nuxt-client/ -const TEMPLATE_RE = /