Merge branch 'main' of github.com:nuxt/nuxt into tests/allow-dev-overrides

This commit is contained in:
Harlan Wilton 2023-03-06 11:56:32 +11:00
commit 84030919a5
45 changed files with 620 additions and 274 deletions

View File

@ -24,6 +24,16 @@
"jsdoc/require-returns": "off", "jsdoc/require-returns": "off",
"jsdoc/require-param-type": "off", "jsdoc/require-param-type": "off",
"no-redeclare": "off", "no-redeclare": "off",
"import/order": [
"error", {
"pathGroups": [
{
"pattern": "@nuxt/test-utils",
"group": "external"
}
]
}
],
"import/no-restricted-paths": [ "import/no-restricted-paths": [
"error", "error",
{ {

View File

@ -17,6 +17,7 @@ Please carefully read the contribution docs before creating a pull request
- [ ] 🐞 Bug fix (a non-breaking change that fixes an issue) - [ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
- [ ] 👌 Enhancement (improving an existing functionality like performance) - [ ] 👌 Enhancement (improving an existing functionality like performance)
- [ ] ✨ New feature (a non-breaking change that adds functionality) - [ ] ✨ New feature (a non-breaking change that adds functionality)
- [ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
- [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to change) - [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to change)
### 📚 Description ### 📚 Description
@ -33,4 +34,3 @@ Please carefully read the contribution docs before creating a pull request
- [ ] I have linked an issue or discussion. - [ ] I have linked an issue or discussion.
- [ ] I have updated the documentation accordingly. - [ ] I have updated the documentation accordingly.

View File

@ -172,6 +172,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with:
fetch-depth: 0
- run: corepack enable - run: corepack enable
- uses: actions/setup-node@v3 - uses: actions/setup-node@v3
with: with:

View File

@ -112,7 +112,7 @@ useServerSeoMeta({
</script> </script>
``` ```
::ReadMore{link="https://unhead.harlanzw.com/guide/guides/useseometa"} ::ReadMore{link="https://unhead.harlanzw.com/guide/composables/use-seo-meta"}
:: ::
## Components ## Components

View File

@ -0,0 +1,61 @@
---
navigation.icon: IconDirectory
title: 'modules'
head.title: 'modules/'
description: Use the modules/ directory to automatically register local modules within your application.
---
# Modules Directory
::StabilityEdge
Nuxt scans the `modules/` directory and loads them before starting. It is a good place to place any local modules you develop while building your application.
The auto-registered files patterns are:
- `modules/*/index.ts`
- `modules/*.ts`
You don't need to add those local modules to your [`nuxt.config.ts`](/docs/guide/directory-structure/nuxt.config) separately.
::code-group
```ts [modules/hello/index.ts]
// `nuxt/kit` is a helper subpath import you can use when defining local modules
// that means you do not need to add `@nuxt/kit` to your project's dependencies
import { createResolver, defineNuxtModule, addServerHandler } from 'nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'hello'
},
setup () {
const { resolve } = createResolver(import.meta.url)
// Add an API route
addServerHandler({
route: '/api/hello',
handler: resolve('./runtime/api-route')
})
}
})
```
```ts [modules/hello/runtime/api-route.ts]
export default defineEventHandler(() => {
return { hello: 'world' }
}
```
::
When starting Nuxt, the `hello` module will be registered and the `/api/hello` route will be available.
The local modules are registered by alphabetical order. You can change the order by prefixing with a number if front of each directory:
`ˋ`md
modules/
1.first-module/
index.ts
2.second-module.ts
ˋ`ˋ
:ReadMore{link="/docs/guide/going-further/modules"}
::

View File

@ -70,6 +70,8 @@ const nuxtApp = {
} }
``` ```
:StabilityEdge{title="nuxtApp.versions"}
For more details, check out [the source code](https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/nuxt.ts). For more details, check out [the source code](https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/nuxt.ts).
## Runtime Context vs. Build Context ## Runtime Context vs. Build Context

View File

@ -38,7 +38,7 @@ Hook | Arguments | Description
`kit:compatibility` | `compatibility, issues` | Allows extending compatibility checks. `kit:compatibility` | `compatibility, issues` | Allows extending compatibility checks.
`ready` | `nuxt` | Called after Nuxt initialization, when the Nuxt instance is ready to work. `ready` | `nuxt` | Called after Nuxt initialization, when the Nuxt instance is ready to work.
`close` | `nuxt` | Called when Nuxt instance is gracefully closing. `close` | `nuxt` | Called when Nuxt instance is gracefully closing.
`restart` | - | Called to restart the current Nuxt instance. **This hook is currently only available on the [Edge Channel](/docs/guide/going-further/edge-channel/).** <!-- stabilityedge --> `restart` | `{ hard?: boolean }` | To be called to restart the current Nuxt instance. **This hook is currently only available on the [Edge Channel](/docs/guide/going-further/edge-channel/).** <!-- stabilityedge -->
`modules:before` | - | Called during Nuxt initialization, before installing user modules. `modules:before` | - | Called during Nuxt initialization, before installing user modules.
`modules:done` | - | Called during Nuxt initialization, after installing user modules. `modules:done` | - | Called during Nuxt initialization, after installing user modules.
`app:resolve` | `app` | Called after resolving the `app` instance. `app:resolve` | `app` | Called after resolving the `app` instance.

View File

@ -1,3 +1,7 @@
---
navigation: false
---
# Nuxt Docs # Nuxt Docs
This repository contains the documentation of Nuxt hosted on nuxt.com. This repository contains the documentation of Nuxt hosted on nuxt.com.

View File

@ -49,15 +49,15 @@
"@nuxt/webpack-builder": "workspace:*", "@nuxt/webpack-builder": "workspace:*",
"@nuxtjs/eslint-config-typescript": "^12.0.0", "@nuxtjs/eslint-config-typescript": "^12.0.0",
"@types/crawler": "^1.2.2", "@types/crawler": "^1.2.2",
"@types/node": "^18.14.4", "@types/node": "^18.14.6",
"@types/rimraf": "^3", "@types/rimraf": "^3",
"@types/semver": "^7.3.13", "@types/semver": "^7.3.13",
"@unocss/reset": "^0.50.3", "@unocss/reset": "^0.50.3",
"case-police": "^0.5.13", "case-police": "^0.5.13",
"changelogen": "^0.4.1", "changelogen": "^0.5.1",
"crawler": "^1.4.0", "crawler": "^1.4.0",
"eslint": "^8.35.0", "eslint": "^8.35.0",
"eslint-plugin-jsdoc": "^40.0.0", "eslint-plugin-jsdoc": "^40.0.1",
"execa": "^7.0.0", "execa": "^7.0.0",
"expect-type": "^0.15.0", "expect-type": "^0.15.0",
"globby": "^13.1.3", "globby": "^13.1.3",
@ -67,7 +67,7 @@
"nuxt": "workspace:*", "nuxt": "workspace:*",
"ofetch": "^1.0.1", "ofetch": "^1.0.1",
"pathe": "^1.1.0", "pathe": "^1.1.0",
"rimraf": "^4.1.3", "rimraf": "^4.3.0",
"semver": "^7.3.8", "semver": "^7.3.8",
"std-env": "^3.3.2", "std-env": "^3.3.2",
"typescript": "^4.9.5", "typescript": "^4.9.5",

View File

@ -12,7 +12,7 @@ export async function checkNuxtCompatibility (constraints: NuxtCompatibility, nu
if (constraints.nuxt) { if (constraints.nuxt) {
const nuxtVersion = getNuxtVersion(nuxt) const nuxtVersion = getNuxtVersion(nuxt)
const nuxtSemanticVersion = nuxtVersion const nuxtSemanticVersion = nuxtVersion
.replace(/-[0-9]+\.[0-9a-f]{7,8}/, '') // Remove edge prefix .replace(/-[0-9]+\.[0-9a-f]+/, '') // Remove edge prefix
if (!satisfies(nuxtSemanticVersion, constraints.nuxt, { includePrerelease: true })) { if (!satisfies(nuxtSemanticVersion, constraints.nuxt, { includePrerelease: true })) {
issues.push({ issues.push({
name: 'nuxt', name: 'nuxt',

View File

@ -1,3 +1,2 @@
#!/usr/bin/env node #!/usr/bin/env node
process._startTime = Date.now() import('../dist/cli-wrapper.mjs')
import('../dist/cli.mjs').then(r => (r.default || r).main())

View File

@ -10,6 +10,8 @@ export default defineBuildConfig({
}, },
entries: [ entries: [
'src/cli', 'src/cli',
'src/cli-run',
'src/cli-wrapper',
'src/index' 'src/index'
], ],
externals: [ externals: [

View File

@ -0,0 +1,5 @@
// @ts-ignore
process._startTime = Date.now()
// @ts-ignore
import('./cli').then(r => (r.default || r).main())

View File

@ -0,0 +1,39 @@
/**
* This file is used to wrap the CLI entrypoint in a restartable process.
*/
import { fileURLToPath } from 'node:url'
import { fork } from 'node:child_process'
import type { ChildProcess } from 'node:child_process'
const cliEntry = fileURLToPath(new URL('../dist/cli-run.mjs', import.meta.url))
// Only enable wrapper for nuxt dev command
if (process.argv[2] === 'dev') {
process.env.__CLI_ARGV__ = JSON.stringify(process.argv)
startSubprocess()
} else {
import(cliEntry)
}
function startSubprocess () {
let childProc: ChildProcess
process.on('exit', () => {
if (childProc) {
childProc.kill()
}
})
start()
function start () {
childProc = fork(cliEntry)
childProc.on('close', (code) => { if (code) { process.exit(code) } })
childProc.on('message', (message) => {
if ((message as { type: string })?.type === 'nuxt:restart') {
childProc.kill()
startSubprocess()
}
})
}
}

View File

@ -9,7 +9,7 @@ import { showHelp } from './utils/help'
import { showBanner } from './utils/banner' import { showBanner } from './utils/banner'
async function _main () { async function _main () {
const _argv = process.argv.slice(2) const _argv = (process.env.__CLI_ARGV__ ? JSON.parse(process.env.__CLI_ARGV__) : process.argv).slice(2)
const args = mri(_argv, { const args = mri(_argv, {
boolean: [ boolean: [
'no-clear' 'no-clear'

View File

@ -94,7 +94,18 @@ export default defineNuxtCommand({
} }
currentNuxt = await loadNuxt({ rootDir, dev: true, ready: false }) currentNuxt = await loadNuxt({ rootDir, dev: true, ready: false })
currentNuxt.hooks.hookOnce('restart', () => load(true))
currentNuxt.hooks.hookOnce('restart', async (options) => {
if (options?.hard && process.send) {
await listener.close().catch(() => {})
await currentNuxt.close().catch(() => {})
await watcher.close().catch(() => {})
await distWatcher.close().catch(() => {})
process.send({ type: 'nuxt:restart' })
} else {
await load(true)
}
})
if (!isRestart) { if (!isRestart) {
showURL() showURL()
@ -117,7 +128,7 @@ export default defineNuxtCommand({
await currentNuxt.ready() await currentNuxt.ready()
await currentNuxt.hooks.callHook('listen', listener.server, listener) await currentNuxt.hooks.callHook('listen', listener.server, listener)
const address = listener.server.address() as AddressInfo const address = (listener.server.address() || {}) as AddressInfo
currentNuxt.options.devServer.url = listener.url currentNuxt.options.devServer.url = listener.url
currentNuxt.options.devServer.port = address.port currentNuxt.options.devServer.port = address.port
currentNuxt.options.devServer.host = address.address currentNuxt.options.devServer.host = address.address

1
packages/nuxt/kit.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export * from '@nuxt/kit'

1
packages/nuxt/kit.mjs Normal file
View File

@ -0,0 +1 @@
export * from '@nuxt/kit'

View File

@ -21,6 +21,10 @@
"types": "./schema.d.ts", "types": "./schema.d.ts",
"import": "./schema.mjs" "import": "./schema.mjs"
}, },
"./kit": {
"types": "./kit.d.ts",
"import": "./kit.mjs"
},
"./app": "./dist/app/index.mjs", "./app": "./dist/app/index.mjs",
"./package.json": "./package.json" "./package.json": "./package.json"
}, },
@ -35,6 +39,7 @@
"types.d.ts", "types.d.ts",
"dist", "dist",
"config.*", "config.*",
"kit.*",
"schema.*" "schema.*"
], ],
"scripts": { "scripts": {
@ -47,10 +52,10 @@
"@nuxt/telemetry": "^2.1.10", "@nuxt/telemetry": "^2.1.10",
"@nuxt/ui-templates": "^1.1.1", "@nuxt/ui-templates": "^1.1.1",
"@nuxt/vite-builder": "3.2.3", "@nuxt/vite-builder": "3.2.3",
"@unhead/ssr": "^1.1.14", "@unhead/ssr": "^1.1.16",
"@vue/reactivity": "^3.2.47", "@vue/reactivity": "^3.2.47",
"@vue/shared": "^3.2.47", "@vue/shared": "^3.2.47",
"@vueuse/head": "^1.1.9", "@vueuse/head": "^1.1.15",
"chokidar": "^3.5.3", "chokidar": "^3.5.3",
"cookie-es": "^0.5.0", "cookie-es": "^0.5.0",
"defu": "^6.1.2", "defu": "^6.1.2",
@ -77,7 +82,7 @@
"ufo": "^1.1.1", "ufo": "^1.1.1",
"unctx": "^2.1.2", "unctx": "^2.1.2",
"unenv": "^1.2.1", "unenv": "^1.2.1",
"unhead": "^1.1.14", "unhead": "^1.1.16",
"unimport": "^3.0.2", "unimport": "^3.0.2",
"unplugin": "^1.1.0", "unplugin": "^1.1.0",
"untyped": "^1.2.2", "untyped": "^1.2.2",

View File

@ -142,7 +142,7 @@ export const setPageLayout = (layout: string) => {
useState('_layout').value = layout useState('_layout').value = layout
} }
const nuxtApp = useNuxtApp() const nuxtApp = useNuxtApp()
if (process.dev && nuxtApp.isHydrating && useState('_layout').value !== layout) { if (process.dev && nuxtApp.isHydrating && nuxtApp.payload.serverRendered && useState('_layout').value !== layout) {
console.warn('[warn] [nuxt] `setPageLayout` should not be called to change the layout during hydration as this will cause hydration errors.') console.warn('[warn] [nuxt] `setPageLayout` should not be called to change the layout during hydration as this will cause hydration errors.')
} }
const inMiddleware = isProcessingMiddleware() const inMiddleware = isProcessingMiddleware()

View File

@ -65,7 +65,7 @@ if (process.dev) {
// Vite // Vite
if (import.meta.hot) { if (import.meta.hot) {
import.meta.hot.accept((newModule) => { import.meta.hot.accept((newModule) => {
const newConfig = newModule._getAppConfig() const newConfig = newModule?._getAppConfig()
applyHMR(newConfig) applyHMR(newConfig)
}) })
} }

View File

@ -202,6 +202,7 @@ export default defineNuxtModule<ComponentsOptions>({
sourcemap: nuxt.options.sourcemap[mode], sourcemap: nuxt.options.sourcemap[mode],
getComponents, getComponents,
mode, mode,
transform: typeof nuxt.options.components === 'object' && !Array.isArray(nuxt.options.components) ? nuxt.options.components.transform : undefined,
experimentalComponentIslands: nuxt.options.experimental.componentIslands experimentalComponentIslands: nuxt.options.experimental.componentIslands
})) }))
}) })
@ -219,6 +220,7 @@ export default defineNuxtModule<ComponentsOptions>({
sourcemap: nuxt.options.sourcemap[mode], sourcemap: nuxt.options.sourcemap[mode],
getComponents, getComponents,
mode, mode,
transform: typeof nuxt.options.components === 'object' && !Array.isArray(nuxt.options.components) ? nuxt.options.components.transform : undefined,
experimentalComponentIslands: nuxt.options.experimental.componentIslands experimentalComponentIslands: nuxt.options.experimental.componentIslands
})) }))
}) })

View File

@ -1,7 +1,7 @@
import { join, normalize, resolve } from 'pathe' import { join, normalize, relative, resolve } from 'pathe'
import { createHooks, createDebugger } from 'hookable' import { createHooks, createDebugger } from 'hookable'
import type { LoadNuxtOptions } from '@nuxt/kit' import type { LoadNuxtOptions } from '@nuxt/kit'
import { loadNuxtConfig, nuxtCtx, installModule, addComponent, addVitePlugin, addWebpackPlugin, tryResolveModule, addPlugin } from '@nuxt/kit' import { resolvePath, resolveAlias, resolveFiles, loadNuxtConfig, nuxtCtx, installModule, addComponent, addVitePlugin, addWebpackPlugin, tryResolveModule, addPlugin } from '@nuxt/kit'
import escapeRE from 'escape-string-regexp' import escapeRE from 'escape-string-regexp'
import fse from 'fs-extra' import fse from 'fs-extra'
@ -122,10 +122,38 @@ async function initNuxt (nuxt: Nuxt) {
// Init user modules // Init user modules
await nuxt.callHook('modules:before') await nuxt.callHook('modules:before')
const modulesToInstall = [ const modulesToInstall = []
...nuxt.options.modules,
...nuxt.options._modules const watchedPaths = new Set<string>()
] const specifiedModules = new Set<string>()
for (const _mod of nuxt.options.modules) {
const mod = Array.isArray(_mod) ? _mod[0] : _mod
if (typeof mod !== 'string') { continue }
const modPath = await resolvePath(resolveAlias(mod))
specifiedModules.add(modPath)
}
// Automatically register user modules
for (const config of nuxt.options._layers.map(layer => layer.config).reverse()) {
const layerModules = await resolveFiles(config.srcDir, [
`${config.dir?.modules || 'modules'}/*{${nuxt.options.extensions.join(',')}}`,
`${config.dir?.modules || 'modules'}/*/index{${nuxt.options.extensions.join(',')}}`
])
for (const mod of layerModules) {
watchedPaths.add(relative(config.srcDir, mod))
if (specifiedModules.has(mod)) { continue }
specifiedModules.add(mod)
modulesToInstall.push(mod)
}
}
// Register user and then ad-hoc modules
modulesToInstall.push(...nuxt.options.modules, ...nuxt.options._modules)
nuxt.hooks.hookOnce('builder:watch', (event, path) => {
if (watchedPaths.has(path)) { nuxt.callHook('restart', { hard: true }) }
})
// Add <NuxtWelcome> // Add <NuxtWelcome>
addComponent({ addComponent({

View File

@ -1,5 +1,5 @@
import { existsSync } from 'node:fs' import { existsSync } from 'node:fs'
import { writeFile, mkdir, rm } from 'node:fs/promises' import { writeFile, mkdir } from 'node:fs/promises'
import { dirname, resolve } from 'pathe' import { dirname, resolve } from 'pathe'
import chokidar from 'chokidar' import chokidar from 'chokidar'
import { defu } from 'defu' import { defu } from 'defu'
@ -7,7 +7,6 @@ import { debounce } from 'perfect-debounce'
import { defineNuxtModule, createResolver } from '@nuxt/kit' import { defineNuxtModule, createResolver } from '@nuxt/kit'
import { import {
resolveSchema as resolveUntypedSchema, resolveSchema as resolveUntypedSchema,
generateMarkdown,
generateTypes generateTypes
} from 'untyped' } from 'untyped'
import type { Schema, SchemaDefinition } from 'untyped' import type { Schema, SchemaDefinition } from 'untyped'
@ -39,9 +38,14 @@ export default defineNuxtModule({
}) })
// Register module types // Register module types
nuxt.hook('prepare:types', (ctx) => { nuxt.hook('prepare:types', async (ctx) => {
ctx.references.push({ path: 'nuxt-config-schema' }) ctx.references.push({ path: 'nuxt-config-schema' })
ctx.references.push({ path: 'schema/nuxt.schema.d.ts' }) ctx.references.push({ path: 'schema/nuxt.schema.d.ts' })
if (nuxt.options._prepare) {
await nuxt.hooks.callHook('schema:beforeWrite', schema)
await writeSchema(schema)
await nuxt.hooks.callHook('schema:written')
}
}) })
// Resolve schema after all modules initialized // Resolve schema after all modules initialized
@ -122,13 +126,6 @@ export default defineNuxtModule({
} }
async function writeSchema (schema: Schema) { async function writeSchema (schema: Schema) {
// Avoid writing empty schema
const isEmptySchema = !schema.properties || Object.keys(schema.properties).length === 0
if (isEmptySchema) {
await rm(resolve(nuxt.options.buildDir, 'schema'), { recursive: true }).catch(() => { })
return
}
// Write it to build dir // Write it to build dir
await mkdir(resolve(nuxt.options.buildDir, 'schema'), { recursive: true }) await mkdir(resolve(nuxt.options.buildDir, 'schema'), { recursive: true })
await writeFile( await writeFile(
@ -136,12 +133,6 @@ export default defineNuxtModule({
JSON.stringify(schema, null, 2), JSON.stringify(schema, null, 2),
'utf8' 'utf8'
) )
const markdown = '# Nuxt Custom Config Schema' + generateMarkdown(schema)
await writeFile(
resolve(nuxt.options.buildDir, 'schema/nuxt.schema.md'),
markdown,
'utf8'
)
const _types = generateTypes(schema, { const _types = generateTypes(schema, {
addExport: true, addExport: true,
interfaceName: 'NuxtCustomSchema', interfaceName: 'NuxtCustomSchema',
@ -152,12 +143,18 @@ export default defineNuxtModule({
` `
export type CustomAppConfig = Exclude<NuxtCustomSchema['appConfig'], undefined> export type CustomAppConfig = Exclude<NuxtCustomSchema['appConfig'], undefined>
declare module '@nuxt/schema' {
interface NuxtConfig extends NuxtCustomSchema {}
interface NuxtOptions extends NuxtCustomSchema {}
interface CustomAppConfig extends CustomAppConfig {}
}
declare module 'nuxt/schema' { declare module 'nuxt/schema' {
interface NuxtConfig extends NuxtCustomSchema {} interface NuxtConfig extends NuxtCustomSchema {}
interface NuxtOptions extends NuxtCustomSchema {} interface NuxtOptions extends NuxtCustomSchema {}
interface AppConfigInput extends CustomAppConfig {} interface CustomAppConfig extends CustomAppConfig {}
interface AppConfig extends CustomAppConfig {} }
}` `
const typesPath = resolve( const typesPath = resolve(
nuxt.options.buildDir, nuxt.options.buildDir,
'schema/nuxt.schema.d.ts' 'schema/nuxt.schema.d.ts'

View File

@ -146,8 +146,10 @@ export default defineNuxtModule({
// Add router plugin // Add router plugin
addPlugin(resolve(runtimeDir, 'plugins/router')) addPlugin(resolve(runtimeDir, 'plugins/router'))
const getSources = (pages: NuxtPage[]): string[] => pages.flatMap(p => const getSources = (pages: NuxtPage[]): string[] => pages
[relative(nuxt.options.srcDir, p.file), ...getSources(p.children || [])] .filter(p => Boolean(p.file))
.flatMap(p =>
[relative(nuxt.options.srcDir, p.file as string), ...getSources(p.children || [])]
) )
// Do not prefetch page chunks // Do not prefetch page chunks

View File

@ -249,28 +249,40 @@ export function normalizeRoutes (routes: NuxtPage[], metaImports: Set<string> =
return { return {
imports: metaImports, imports: metaImports,
routes: genArrayFromRaw(routes.map((page) => { routes: genArrayFromRaw(routes.map((page) => {
const route = Object.fromEntries(
Object.entries(page)
.filter(([key, value]) => key !== 'file' && (Array.isArray(value) ? value.length : value))
.map(([key, value]) => [key, JSON.stringify(value)])
) as Record<Exclude<keyof NuxtPage, 'file'>, string> & { component?: string }
if (page.children?.length) {
route.children = normalizeRoutes(page.children, metaImports).routes
}
// Without a file, we can't use `definePageMeta` to extract route-level meta from the file
if (!page.file) {
for (const key of ['name', 'path', 'meta', 'alias', 'redirect'] as const) {
if (page[key]) { route[key] = JSON.stringify(page[key]) }
}
return route
}
const file = normalize(page.file) const file = normalize(page.file)
const metaImportName = genSafeVariableName(filename(file) + hash(file)) + 'Meta' const metaImportName = genSafeVariableName(filename(file) + hash(file)) + 'Meta'
metaImports.add(genImport(`${file}?macro=true`, [{ name: 'default', as: metaImportName }])) metaImports.add(genImport(`${file}?macro=true`, [{ name: 'default', as: metaImportName }]))
let aliasCode = `${metaImportName}?.alias || []` let aliasCode = `${metaImportName}?.alias || []`
if (Array.isArray(page.alias) && page.alias.length) { const alias = Array.isArray(page.alias) ? page.alias : [page.alias].filter(Boolean)
aliasCode = `${JSON.stringify(page.alias)}.concat(${aliasCode})` if (alias.length) {
aliasCode = `${JSON.stringify(alias)}.concat(${aliasCode})`
} }
const route = { route.name = `${metaImportName}?.name ?? ${page.name ? JSON.stringify(page.name) : 'undefined'}`
...Object.fromEntries(Object.entries(page).map(([key, value]) => [key, JSON.stringify(value)])), route.path = `${metaImportName}?.path ?? ${JSON.stringify(page.path)}`
file: undefined, route.meta = page.meta && Object.values(page.meta).filter(value => value !== undefined).length ? `{...(${metaImportName} || {}), ...${JSON.stringify(page.meta)}}` : `${metaImportName} || {}`
name: `${metaImportName}?.name ?? ${page.name ? JSON.stringify(page.name) : 'undefined'}`, route.alias = aliasCode
path: `${metaImportName}?.path ?? ${JSON.stringify(page.path)}`, route.redirect = page.redirect ? JSON.stringify(page.redirect) : `${metaImportName}?.redirect || undefined`
children: page.children ? normalizeRoutes(page.children, metaImports).routes : [], route.component = genDynamicImport(file, { interopDefault: true })
meta: page.meta ? `{...(${metaImportName} || {}), ...${JSON.stringify(page.meta)}}` : `${metaImportName} || {}`,
alias: aliasCode,
redirect: page.redirect ? JSON.stringify(page.redirect) : `${metaImportName}?.redirect || undefined`,
component: genDynamicImport(file, { interopDefault: true })
}
delete route.file
return route return route
})) }))

View File

@ -16,7 +16,7 @@
"devDependencies": { "devDependencies": {
"@types/lodash.template": "^4", "@types/lodash.template": "^4",
"@types/semver": "^7.3.13", "@types/semver": "^7.3.13",
"@unhead/schema": "^1.1.14", "@unhead/schema": "^1.1.16",
"@vitejs/plugin-vue": "^4.0.0", "@vitejs/plugin-vue": "^4.0.0",
"@vitejs/plugin-vue-jsx": "^3.0.0", "@vitejs/plugin-vue-jsx": "^3.0.0",
"nitropack": "^2.2.3", "nitropack": "^2.2.3",

View File

@ -219,6 +219,11 @@ export default defineUntypedSchema({
*/ */
middleware: 'middleware', middleware: 'middleware',
/**
* The modules directory, each file in which will be auto-registered as a Nuxt module.
*/
modules: 'modules',
/** /**
* The directory which will be processed to auto-generate your application page routes. * The directory which will be processed to auto-generate your application page routes.
*/ */

View File

@ -115,10 +115,10 @@ export default defineUntypedSchema({
componentIslands: false, componentIslands: false,
/** /**
* Enable experimental config schema support * Config schema support
* *
* @see https://github.com/nuxt/nuxt/issues/15592 * @see https://github.com/nuxt/nuxt/issues/15592
*/ */
configSchema: false configSchema: true
} }
}) })

View File

@ -22,7 +22,7 @@ export default defineUntypedSchema({
* *
* @experimental This is an experimental feature and API may change in the future. * @experimental This is an experimental feature and API may change in the future.
* *
* @see https://nitro.unjs.io/config/#routes * @see https://nitro.unjs.io/config/#routerules
* *
* @type {typeof import('nitropack')['NitroConfig']['routeRules']} * @type {typeof import('nitropack')['NitroConfig']['routeRules']}
*/ */

View File

@ -135,7 +135,10 @@ export interface RuntimeConfig extends RuntimeConfigNamespace {
} }
// -- App Config -- // -- App Config --
export interface AppConfigInput extends Record<string, any> {
export interface CustomAppConfig extends Record<string, any> { }
export interface AppConfigInput extends CustomAppConfig {
/** @deprecated reserved */ /** @deprecated reserved */
private?: never private?: never
/** @deprecated reserved */ /** @deprecated reserved */
@ -153,4 +156,4 @@ export interface NuxtAppConfig {
keepalive: boolean | KeepAliveProps keepalive: boolean | KeepAliveProps
} }
export interface AppConfig { } export interface AppConfig extends CustomAppConfig { }

View File

@ -1,35 +1,134 @@
/** /**
* Reference: https://github.com/vitejs/vite/blob/main/packages/vite/types/importMeta.d.ts * Reference: https://github.com/vitejs/vite/blob/main/packages/vite/types/importMeta.d.ts
*/ */
export type ModuleNamespace = Record<string, any> & {
[Symbol.toStringTag]: 'Module'
}
export interface ViteHot { export interface ViteHot {
readonly data: any readonly data: any
accept (): void accept (): void
accept (cb: (mod: any) => void): void accept (cb: (mod: ModuleNamespace | undefined) => void): void
accept (dep: string, cb: (mod: any) => void): void accept (dep: string, cb: (mod: ModuleNamespace | undefined) => void): void
accept (deps: readonly string[], cb: (mods: any[]) => void): void accept (deps: readonly string[], cb: (mods: Array<ModuleNamespace | undefined>) => void): void
acceptExports (exportNames: string | readonly string[], cb?: (mod: ModuleNamespace | undefined) => void): void
dispose (cb: (data: any) => void): void dispose (cb: (data: any) => void): void
decline (): void prune (cb: (data: any) => void): void
invalidate (): void invalidate (message?: string): void
on (event: any, cb: (payload: any) => void): void on (event: any, cb: (payload: any) => void): void
send (event: any, data?: any): void send (event: any, data?: any): void
} }
export interface ViteGlobOptions { export interface KnownAsTypeMap {
as?: string raw: string
eager?: boolean url: string
worker: Worker
}
export interface ImportGlobOptions<
Eager extends boolean,
AsType extends string
> {
/**
* Import type for the import url.
*/
as?: AsType
/**
* Import as static or dynamic
*
* @default false
*/
eager?: Eager
/**
* Import only the specific named export. Set to `default` to import the default export.
*/
import?: string import?: string
/**
* Custom queries
*/
query?: string | Record<string, string | number | boolean> query?: string | Record<string, string | number | boolean>
/**
* Search files also inside `node_modules/` and hidden directories (e.g. `.git/`). This might have impact on performance.
*
* @default false
*/
exhaustive?: boolean exhaustive?: boolean
} }
export interface ImportGlobFunction {
/**
* Import a list of files with a glob pattern.
*
* Overload 1: No generic provided, infer the type from `eager` and `as`
*/
<
Eager extends boolean,
As extends string,
T = As extends keyof KnownAsTypeMap ? KnownAsTypeMap[As] : unknown
>(
glob: string | string[],
options?: ImportGlobOptions<Eager, As>
): (Eager extends true
? true
: false) extends true
? Record<string, T>
: Record<string, () => Promise<T>>
/**
* Import a list of files with a glob pattern.
*
* Overload 2: Module generic provided, infer the type from `eager: false`
*/
<M>(
glob: string | string[],
options?: ImportGlobOptions<false, string>
): Record<string, () => Promise<M>>
/**
* Import a list of files with a glob pattern.
*
* Overload 3: Module generic provided, infer the type from `eager: true`
*/
<M>(
glob: string | string[],
options: ImportGlobOptions<true, string>
): Record<string, M>
}
export interface ImportGlobEagerFunction {
/**
* Eagerly import a list of files with a glob pattern.
*
* Overload 1: No generic provided, infer the type from `as`
*/
<
As extends string,
T = As extends keyof KnownAsTypeMap ? KnownAsTypeMap[As] : unknown
>(
glob: string | string[],
options?: Omit<ImportGlobOptions<boolean, As>, 'eager'>
): Record<string, T>
/**
* Eagerly import a list of files with a glob pattern.
*
* Overload 2: Module generic provided
*/
<M>(
glob: string | string[],
options?: Omit<ImportGlobOptions<boolean, string>, 'eager'>
): Record<string, M>
}
export interface ViteImportMeta { export interface ViteImportMeta {
/** Vite client HMR API - see https://vitejs.dev/guide/api-hmr.html */ /** Vite client HMR API - see https://vitejs.dev/guide/api-hmr.html */
readonly hot?: ViteHot readonly hot?: ViteHot
/** vite glob import utility - https://vitejs.dev/guide/features.html#glob-import */ /** vite glob import utility - https://vitejs.dev/guide/features.html#glob-import */
glob (glob: string | string[], options?: ViteGlobOptions): Record<string, () => Promise<Record<string, any>>> glob: ImportGlobFunction
/**
* @deprecated Use `import.meta.glob('*', { eager: true })` instead
*/
globEager: ImportGlobEagerFunction
} }

View File

@ -22,7 +22,7 @@ export type WatchEvent = 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir'
export type NuxtPage = { export type NuxtPage = {
name?: string name?: string
path: string path: string
file: string file?: string
meta?: Record<string, any> meta?: Record<string, any>
alias?: string[] | string alias?: string[] | string
redirect?: string redirect?: string
@ -77,7 +77,12 @@ export interface NuxtHooks {
* Called to restart the current Nuxt instance. * Called to restart the current Nuxt instance.
* @returns Promise * @returns Promise
*/ */
'restart': () => HookResult 'restart': (options?: {
/**
* Try to restart the whole process if supported
*/
hard?: boolean
}) => HookResult
/** /**
* Called during Nuxt initialization, before installing user modules. * Called during Nuxt initialization, before installing user modules.

View File

@ -24,7 +24,7 @@
"pathe": "^1.1.0" "pathe": "^1.1.0"
}, },
"devDependencies": { "devDependencies": {
"playwright": "^1.31.1", "playwright": "^1.31.2",
"unbuild": "latest", "unbuild": "latest",
"vitest": "^0.29.2" "vitest": "^0.29.2"
}, },

View File

@ -27,7 +27,7 @@
"chokidar": "^3.5.3", "chokidar": "^3.5.3",
"cssnano": "^5.1.15", "cssnano": "^5.1.15",
"defu": "^6.1.2", "defu": "^6.1.2",
"esbuild": "^0.17.10", "esbuild": "^0.17.11",
"escape-string-regexp": "^5.0.0", "escape-string-regexp": "^5.0.0",
"estree-walker": "^3.0.3", "estree-walker": "^3.0.3",
"externality": "^1.0.0", "externality": "^1.0.0",

View File

@ -64,6 +64,9 @@ export async function bundle (nuxt: Nuxt) {
copyPublicDir: false, copyPublicDir: false,
rollupOptions: { rollupOptions: {
output: { output: {
sourcemapIgnoreList: (relativeSourcePath) => {
return relativeSourcePath.includes('node_modules') || relativeSourcePath.includes(ctx.nuxt.options.buildDir)
},
sanitizeFileName: sanitizeFilePath, sanitizeFileName: sanitizeFilePath,
// https://github.com/vitejs/vite/tree/main/packages/vite/src/node/build.ts#L464-L478 // https://github.com/vitejs/vite/tree/main/packages/vite/src/node/build.ts#L464-L478
assetFileNames: nuxt.options.dev assetFileNames: nuxt.options.dev

View File

@ -26,15 +26,15 @@ importers:
'@nuxt/webpack-builder': workspace:* '@nuxt/webpack-builder': workspace:*
'@nuxtjs/eslint-config-typescript': ^12.0.0 '@nuxtjs/eslint-config-typescript': ^12.0.0
'@types/crawler': ^1.2.2 '@types/crawler': ^1.2.2
'@types/node': ^18.14.4 '@types/node': ^18.14.6
'@types/rimraf': ^3 '@types/rimraf': ^3
'@types/semver': ^7.3.13 '@types/semver': ^7.3.13
'@unocss/reset': ^0.50.3 '@unocss/reset': ^0.50.3
case-police: ^0.5.13 case-police: ^0.5.13
changelogen: ^0.4.1 changelogen: ^0.5.1
crawler: ^1.4.0 crawler: ^1.4.0
eslint: ^8.35.0 eslint: ^8.35.0
eslint-plugin-jsdoc: ^40.0.0 eslint-plugin-jsdoc: ^40.0.1
execa: ^7.0.0 execa: ^7.0.0
expect-type: ^0.15.0 expect-type: ^0.15.0
globby: ^13.1.3 globby: ^13.1.3
@ -44,7 +44,7 @@ importers:
nuxt: workspace:* nuxt: workspace:*
ofetch: ^1.0.1 ofetch: ^1.0.1
pathe: ^1.1.0 pathe: ^1.1.0
rimraf: ^4.1.3 rimraf: ^4.3.0
semver: ^7.3.8 semver: ^7.3.8
std-env: ^3.3.2 std-env: ^3.3.2
typescript: ^4.9.5 typescript: ^4.9.5
@ -62,15 +62,15 @@ importers:
'@nuxt/webpack-builder': link:packages/webpack '@nuxt/webpack-builder': link:packages/webpack
'@nuxtjs/eslint-config-typescript': 12.0.0_ycpbpc6yetojsgtrx3mwntkhsu '@nuxtjs/eslint-config-typescript': 12.0.0_ycpbpc6yetojsgtrx3mwntkhsu
'@types/crawler': 1.2.2 '@types/crawler': 1.2.2
'@types/node': 18.14.4 '@types/node': 18.14.6
'@types/rimraf': 3.0.2 '@types/rimraf': 3.0.2
'@types/semver': 7.3.13 '@types/semver': 7.3.13
'@unocss/reset': 0.50.3 '@unocss/reset': 0.50.3
case-police: 0.5.13 case-police: 0.5.13
changelogen: 0.4.1 changelogen: 0.5.1
crawler: 1.4.0 crawler: 1.4.0
eslint: 8.35.0 eslint: 8.35.0
eslint-plugin-jsdoc: 40.0.0_eslint@8.35.0 eslint-plugin-jsdoc: 40.0.1_eslint@8.35.0
execa: 7.0.0 execa: 7.0.0
expect-type: 0.15.0 expect-type: 0.15.0
globby: 13.1.3 globby: 13.1.3
@ -80,13 +80,13 @@ importers:
nuxt: link:packages/nuxt nuxt: link:packages/nuxt
ofetch: 1.0.1 ofetch: 1.0.1
pathe: 1.1.0 pathe: 1.1.0
rimraf: 4.1.3 rimraf: 4.3.0
semver: 7.3.8 semver: 7.3.8
std-env: 3.3.2 std-env: 3.3.2
typescript: 4.9.5 typescript: 4.9.5
ufo: 1.1.1 ufo: 1.1.1
unbuild: 1.1.2 unbuild: 1.1.2
vite: 4.1.4_@types+node@18.14.4 vite: 4.1.4_@types+node@18.14.6
vitest: 0.29.2 vitest: 0.29.2
vue-tsc: 1.2.0_typescript@4.9.5 vue-tsc: 1.2.0_typescript@4.9.5
@ -418,10 +418,10 @@ importers:
'@nuxt/vite-builder': workspace:* '@nuxt/vite-builder': workspace:*
'@types/fs-extra': ^11.0.1 '@types/fs-extra': ^11.0.1
'@types/hash-sum': ^1.0.0 '@types/hash-sum': ^1.0.0
'@unhead/ssr': ^1.1.14 '@unhead/ssr': ^1.1.16
'@vue/reactivity': ^3.2.47 '@vue/reactivity': ^3.2.47
'@vue/shared': ^3.2.47 '@vue/shared': ^3.2.47
'@vueuse/head': ^1.1.9 '@vueuse/head': ^1.1.15
chokidar: ^3.5.3 chokidar: ^3.5.3
cookie-es: ^0.5.0 cookie-es: ^0.5.0
defu: ^6.1.2 defu: ^6.1.2
@ -449,7 +449,7 @@ importers:
unbuild: ^1.1.2 unbuild: ^1.1.2
unctx: ^2.1.2 unctx: ^2.1.2
unenv: ^1.2.1 unenv: ^1.2.1
unhead: ^1.1.14 unhead: ^1.1.16
unimport: ^3.0.2 unimport: ^3.0.2
unplugin: ^1.1.0 unplugin: ^1.1.0
untyped: ^1.2.2 untyped: ^1.2.2
@ -464,10 +464,10 @@ importers:
'@nuxt/telemetry': 2.1.10 '@nuxt/telemetry': 2.1.10
'@nuxt/ui-templates': 1.1.1 '@nuxt/ui-templates': 1.1.1
'@nuxt/vite-builder': link:../vite '@nuxt/vite-builder': link:../vite
'@unhead/ssr': 1.1.14 '@unhead/ssr': 1.1.16
'@vue/reactivity': 3.2.47 '@vue/reactivity': 3.2.47
'@vue/shared': 3.2.47 '@vue/shared': 3.2.47
'@vueuse/head': 1.1.9_vue@3.2.47 '@vueuse/head': 1.1.15_vue@3.2.47
chokidar: 3.5.3 chokidar: 3.5.3
cookie-es: 0.5.0 cookie-es: 0.5.0
defu: 6.1.2 defu: 6.1.2
@ -494,7 +494,7 @@ importers:
ufo: 1.1.1 ufo: 1.1.1
unctx: 2.1.2 unctx: 2.1.2
unenv: 1.2.1 unenv: 1.2.1
unhead: 1.1.14 unhead: 1.1.16
unimport: 3.0.2 unimport: 3.0.2
unplugin: 1.1.0 unplugin: 1.1.0
untyped: 1.2.2 untyped: 1.2.2
@ -511,7 +511,7 @@ importers:
specifiers: specifiers:
'@types/lodash.template': ^4 '@types/lodash.template': ^4
'@types/semver': ^7.3.13 '@types/semver': ^7.3.13
'@unhead/schema': ^1.1.14 '@unhead/schema': ^1.1.16
'@vitejs/plugin-vue': ^4.0.0 '@vitejs/plugin-vue': ^4.0.0
'@vitejs/plugin-vue-jsx': ^3.0.0 '@vitejs/plugin-vue-jsx': ^3.0.0
c12: ^1.1.2 c12: ^1.1.2
@ -547,7 +547,7 @@ importers:
devDependencies: devDependencies:
'@types/lodash.template': 4.5.1 '@types/lodash.template': 4.5.1
'@types/semver': 7.3.13 '@types/semver': 7.3.13
'@unhead/schema': 1.1.14 '@unhead/schema': 1.1.16
'@vitejs/plugin-vue': 4.0.0_vite@4.1.4 '@vitejs/plugin-vue': 4.0.0_vite@4.1.4
'@vitejs/plugin-vue-jsx': 3.0.0_vite@4.1.4 '@vitejs/plugin-vue-jsx': 3.0.0_vite@4.1.4
nitropack: 2.2.3 nitropack: 2.2.3
@ -565,7 +565,7 @@ importers:
jiti: ^1.17.1 jiti: ^1.17.1
ofetch: ^1.0.1 ofetch: ^1.0.1
pathe: ^1.1.0 pathe: ^1.1.0
playwright: ^1.31.1 playwright: ^1.31.2
unbuild: ^1.1.2 unbuild: ^1.1.2
vitest: ^0.29.2 vitest: ^0.29.2
dependencies: dependencies:
@ -579,7 +579,7 @@ importers:
ofetch: 1.0.1 ofetch: 1.0.1
pathe: 1.1.0 pathe: 1.1.0
devDependencies: devDependencies:
playwright: 1.31.1 playwright: 1.31.2
unbuild: 1.1.2 unbuild: 1.1.2
vitest: 0.29.2 vitest: 0.29.2
@ -595,7 +595,7 @@ importers:
chokidar: ^3.5.3 chokidar: ^3.5.3
cssnano: ^5.1.15 cssnano: ^5.1.15
defu: ^6.1.2 defu: ^6.1.2
esbuild: ^0.17.10 esbuild: ^0.17.11
escape-string-regexp: ^5.0.0 escape-string-regexp: ^5.0.0
estree-walker: ^3.0.3 estree-walker: ^3.0.3
externality: ^1.0.0 externality: ^1.0.0
@ -632,7 +632,7 @@ importers:
chokidar: 3.5.3 chokidar: 3.5.3
cssnano: 5.1.15_postcss@8.4.21 cssnano: 5.1.15_postcss@8.4.21
defu: 6.1.2 defu: 6.1.2
esbuild: 0.17.10 esbuild: 0.17.11
escape-string-regexp: 5.0.0 escape-string-regexp: 5.0.0
estree-walker: 3.0.3 estree-walker: 3.0.3
externality: 1.0.0 externality: 1.0.0
@ -1103,8 +1103,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/android-arm/0.17.10: /@esbuild/android-arm/0.17.11:
resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==} resolution: {integrity: sha512-CdyX6sRVh1NzFCsf5vw3kULwlAhfy9wVt8SZlrhQ7eL2qBjGbFhRBWkkAzuZm9IIEOCKJw4DXA6R85g+qc8RDw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
@ -1119,8 +1119,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/android-arm64/0.17.10: /@esbuild/android-arm64/0.17.11:
resolution: {integrity: sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==} resolution: {integrity: sha512-QnK4d/zhVTuV4/pRM4HUjcsbl43POALU2zvBynmrrqZt9LPcLA3x1fTZPBg2RRguBQnJcnU059yKr+bydkntjg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@ -1135,8 +1135,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/android-x64/0.17.10: /@esbuild/android-x64/0.17.11:
resolution: {integrity: sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==} resolution: {integrity: sha512-3PL3HKtsDIXGQcSCKtWD/dy+mgc4p2Tvo2qKgKHj9Yf+eniwFnuoQ0OUhlSfAEpKAFzF9N21Nwgnap6zy3L3MQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
@ -1151,8 +1151,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/darwin-arm64/0.17.10: /@esbuild/darwin-arm64/0.17.11:
resolution: {integrity: sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==} resolution: {integrity: sha512-pJ950bNKgzhkGNO3Z9TeHzIFtEyC2GDQL3wxkMApDEghYx5Qers84UTNc1bAxWbRkuJOgmOha5V0WUeh8G+YGw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -1167,8 +1167,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/darwin-x64/0.17.10: /@esbuild/darwin-x64/0.17.11:
resolution: {integrity: sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==} resolution: {integrity: sha512-iB0dQkIHXyczK3BZtzw1tqegf0F0Ab5texX2TvMQjiJIWXAfM4FQl7D909YfXWnB92OQz4ivBYQ2RlxBJrMJOw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -1183,8 +1183,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/freebsd-arm64/0.17.10: /@esbuild/freebsd-arm64/0.17.11:
resolution: {integrity: sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==} resolution: {integrity: sha512-7EFzUADmI1jCHeDRGKgbnF5sDIceZsQGapoO6dmw7r/ZBEKX7CCDnIz8m9yEclzr7mFsd+DyasHzpjfJnmBB1Q==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
@ -1199,8 +1199,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/freebsd-x64/0.17.10: /@esbuild/freebsd-x64/0.17.11:
resolution: {integrity: sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==} resolution: {integrity: sha512-iPgenptC8i8pdvkHQvXJFzc1eVMR7W2lBPrTE6GbhR54sLcF42mk3zBOjKPOodezzuAz/KSu8CPyFSjcBMkE9g==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@ -1215,8 +1215,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-arm/0.17.10: /@esbuild/linux-arm/0.17.11:
resolution: {integrity: sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==} resolution: {integrity: sha512-M9iK/d4lgZH0U5M1R2p2gqhPV/7JPJcRz+8O8GBKVgqndTzydQ7B2XGDbxtbvFkvIs53uXTobOhv+RyaqhUiMg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@ -1231,8 +1231,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-arm64/0.17.10: /@esbuild/linux-arm64/0.17.11:
resolution: {integrity: sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==} resolution: {integrity: sha512-Qxth3gsWWGKz2/qG2d5DsW/57SeA2AmpSMhdg9TSB5Svn2KDob3qxfQSkdnWjSd42kqoxIPy3EJFs+6w1+6Qjg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -1247,8 +1247,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-ia32/0.17.10: /@esbuild/linux-ia32/0.17.11:
resolution: {integrity: sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==} resolution: {integrity: sha512-dB1nGaVWtUlb/rRDHmuDQhfqazWE0LMro/AIbT2lWM3CDMHJNpLckH+gCddQyhhcLac2OYw69ikUMO34JLt3wA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
@ -1263,8 +1263,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-loong64/0.17.10: /@esbuild/linux-loong64/0.17.11:
resolution: {integrity: sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==} resolution: {integrity: sha512-aCWlq70Q7Nc9WDnormntGS1ar6ZFvUpqr8gXtO+HRejRYPweAFQN615PcgaSJkZjhHp61+MNLhzyVALSF2/Q0g==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
@ -1279,8 +1279,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-mips64el/0.17.10: /@esbuild/linux-mips64el/0.17.11:
resolution: {integrity: sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==} resolution: {integrity: sha512-cGeGNdQxqY8qJwlYH1BP6rjIIiEcrM05H7k3tR7WxOLmD1ZxRMd6/QIOWMb8mD2s2YJFNRuNQ+wjMhgEL2oCEw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
@ -1295,8 +1295,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-ppc64/0.17.10: /@esbuild/linux-ppc64/0.17.11:
resolution: {integrity: sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==} resolution: {integrity: sha512-BdlziJQPW/bNe0E8eYsHB40mYOluS+jULPCjlWiHzDgr+ZBRXPtgMV1nkLEGdpjrwgmtkZHEGEPaKdS/8faLDA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
@ -1311,8 +1311,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-riscv64/0.17.10: /@esbuild/linux-riscv64/0.17.11:
resolution: {integrity: sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==} resolution: {integrity: sha512-MDLwQbtF+83oJCI1Cixn68Et/ME6gelmhssPebC40RdJaect+IM+l7o/CuG0ZlDs6tZTEIoxUe53H3GmMn8oMA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
@ -1327,8 +1327,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-s390x/0.17.10: /@esbuild/linux-s390x/0.17.11:
resolution: {integrity: sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==} resolution: {integrity: sha512-4N5EMESvws0Ozr2J94VoUD8HIRi7X0uvUv4c0wpTHZyZY9qpaaN7THjosdiW56irQ4qnJ6Lsc+i+5zGWnyqWqQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
@ -1343,8 +1343,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/linux-x64/0.17.10: /@esbuild/linux-x64/0.17.11:
resolution: {integrity: sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==} resolution: {integrity: sha512-rM/v8UlluxpytFSmVdbCe1yyKQd/e+FmIJE2oPJvbBo+D0XVWi1y/NQ4iTNx+436WmDHQBjVLrbnAQLQ6U7wlw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -1359,8 +1359,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/netbsd-x64/0.17.10: /@esbuild/netbsd-x64/0.17.11:
resolution: {integrity: sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==} resolution: {integrity: sha512-4WaAhuz5f91h3/g43VBGdto1Q+X7VEZfpcWGtOFXnggEuLvjV+cP6DyLRU15IjiU9fKLLk41OoJfBFN5DhPvag==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
@ -1375,8 +1375,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/openbsd-x64/0.17.10: /@esbuild/openbsd-x64/0.17.11:
resolution: {integrity: sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==} resolution: {integrity: sha512-UBj135Nx4FpnvtE+C8TWGp98oUgBcmNmdYgl5ToKc0mBHxVVqVE7FUS5/ELMImOp205qDAittL6Ezhasc2Ev/w==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
@ -1391,8 +1391,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/sunos-x64/0.17.10: /@esbuild/sunos-x64/0.17.11:
resolution: {integrity: sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==} resolution: {integrity: sha512-1/gxTifDC9aXbV2xOfCbOceh5AlIidUrPsMpivgzo8P8zUtczlq1ncFpeN1ZyQJ9lVs2hILy1PG5KPp+w8QPPg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
@ -1407,8 +1407,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/win32-arm64/0.17.10: /@esbuild/win32-arm64/0.17.11:
resolution: {integrity: sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==} resolution: {integrity: sha512-vtSfyx5yRdpiOW9yp6Ax0zyNOv9HjOAw8WaZg3dF5djEHKKm3UnoohftVvIJtRh0Ec7Hso0RIdTqZvPXJ7FdvQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -1423,8 +1423,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/win32-ia32/0.17.10: /@esbuild/win32-ia32/0.17.11:
resolution: {integrity: sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==} resolution: {integrity: sha512-GFPSLEGQr4wHFTiIUJQrnJKZhZjjq4Sphf+mM76nQR6WkQn73vm7IsacmBRPkALfpOCHsopSvLgqdd4iUW2mYw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@ -1439,8 +1439,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@esbuild/win32-x64/0.17.10: /@esbuild/win32-x64/0.17.11:
resolution: {integrity: sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==} resolution: {integrity: sha512-N9vXqLP3eRL8BqSy8yn4Y98cZI2pZ8fyuHx6lKjiG2WABpT2l01TXdzq5Ma2ZUBzfB7tx5dXVhge8X9u0S70ZQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -1529,7 +1529,7 @@ packages:
'@jest/schemas': 29.4.3 '@jest/schemas': 29.4.3
'@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1 '@types/istanbul-reports': 3.0.1
'@types/node': 18.14.4 '@types/node': 18.14.6
'@types/yargs': 17.0.22 '@types/yargs': 17.0.22
chalk: 4.1.2 chalk: 4.1.2
dev: false dev: false
@ -1752,7 +1752,7 @@ packages:
dependencies: dependencies:
cross-spawn: 7.0.3 cross-spawn: 7.0.3
is-glob: 4.0.3 is-glob: 4.0.3
open: 8.4.1 open: 8.4.2
picocolors: 1.0.0 picocolors: 1.0.0
tiny-glob: 0.2.9 tiny-glob: 0.2.9
tslib: 2.5.0 tslib: 2.5.0
@ -1932,7 +1932,7 @@ packages:
/@types/cheerio/0.22.31: /@types/cheerio/0.22.31:
resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==}
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
dev: true dev: true
/@types/clear/0.1.2: /@types/clear/0.1.2:
@ -1942,7 +1942,7 @@ packages:
/@types/connect/3.4.35: /@types/connect/3.4.35:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
dev: true dev: true
/@types/crawler/1.2.2: /@types/crawler/1.2.2:
@ -1986,14 +1986,14 @@ packages:
resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==}
dependencies: dependencies:
'@types/jsonfile': 6.1.1 '@types/jsonfile': 6.1.1
'@types/node': 18.14.4 '@types/node': 18.14.6
dev: true dev: true
/@types/glob/8.0.1: /@types/glob/8.0.1:
resolution: {integrity: sha512-8bVUjXZvJacUFkJXHdyZ9iH1Eaj5V7I8c4NdH5sQJsdXkqT4CA5Dhb4yb4VE/3asyx4L9ayZr1NIhTsWHczmMw==} resolution: {integrity: sha512-8bVUjXZvJacUFkJXHdyZ9iH1Eaj5V7I8c4NdH5sQJsdXkqT4CA5Dhb4yb4VE/3asyx4L9ayZr1NIhTsWHczmMw==}
dependencies: dependencies:
'@types/minimatch': 5.1.2 '@types/minimatch': 5.1.2
'@types/node': 18.14.4 '@types/node': 18.14.6
dev: true dev: true
/@types/hash-sum/1.0.0: /@types/hash-sum/1.0.0:
@ -2026,7 +2026,7 @@ packages:
/@types/jsonfile/6.1.1: /@types/jsonfile/6.1.1:
resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==}
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
dev: true dev: true
/@types/lodash-es/4.17.6: /@types/lodash-es/4.17.6:
@ -2053,8 +2053,8 @@ packages:
resolution: {integrity: sha512-nJOuiTlsvmClSr3+a/trTSx4DTuY/VURsWGKSf/eeavh0LRMqdsK60ti0TlwM5iHiGOK3/Ibkxsbr7i9rzGreA==} resolution: {integrity: sha512-nJOuiTlsvmClSr3+a/trTSx4DTuY/VURsWGKSf/eeavh0LRMqdsK60ti0TlwM5iHiGOK3/Ibkxsbr7i9rzGreA==}
dev: true dev: true
/@types/node/18.14.4: /@types/node/18.14.6:
resolution: {integrity: sha512-VhCw7I7qO2X49+jaKcAUwi3rR+hbxT5VcYF493+Z5kMLI0DL568b7JI4IDJaxWFH0D/xwmGJNoXisyX+w7GH/g==} resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==}
/@types/normalize-package-data/2.4.1: /@types/normalize-package-data/2.4.1:
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
@ -2075,7 +2075,7 @@ packages:
resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==} resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==}
dependencies: dependencies:
'@types/glob': 8.0.1 '@types/glob': 8.0.1
'@types/node': 18.14.4 '@types/node': 18.14.6
dev: true dev: true
/@types/semver/7.3.13: /@types/semver/7.3.13:
@ -2103,7 +2103,7 @@ packages:
/@types/webpack-bundle-analyzer/4.6.0: /@types/webpack-bundle-analyzer/4.6.0:
resolution: {integrity: sha512-XeQmQCCXdZdap+A/60UKmxW5Mz31Vp9uieGlHB3T4z/o2OLVLtTI3bvTuS6A2OWd/rbAAQiGGWIEFQACu16szA==} resolution: {integrity: sha512-XeQmQCCXdZdap+A/60UKmxW5Mz31Vp9uieGlHB3T4z/o2OLVLtTI3bvTuS6A2OWd/rbAAQiGGWIEFQACu16szA==}
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
tapable: 2.2.1 tapable: 2.2.1
webpack: 5.75.0 webpack: 5.75.0
transitivePeerDependencies: transitivePeerDependencies:
@ -2138,7 +2138,7 @@ packages:
/@types/webpack-sources/3.2.0: /@types/webpack-sources/3.2.0:
resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==}
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
'@types/source-list-map': 0.1.2 '@types/source-list-map': 0.1.2
source-map: 0.7.4 source-map: 0.7.4
dev: true dev: true
@ -2152,7 +2152,7 @@ packages:
/@types/webpack/4.41.33: /@types/webpack/4.41.33:
resolution: {integrity: sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==} resolution: {integrity: sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==}
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
'@types/tapable': 1.0.8 '@types/tapable': 1.0.8
'@types/uglify-js': 3.17.1 '@types/uglify-js': 3.17.1
'@types/webpack-sources': 3.2.0 '@types/webpack-sources': 3.2.0
@ -2300,41 +2300,41 @@ packages:
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
dev: true dev: true
/@unhead/dom/1.1.14: /@unhead/dom/1.1.16:
resolution: {integrity: sha512-a1sc1m+MknBdhecYbH3ubYRgNly5mIi+u35OJ6wo0jKclsdO0TsQ1uNwfEqxZZTs2RUH0p67w6fvjk2QSSjv4A==} resolution: {integrity: sha512-4JlwF4pNVynZsxT5687ntvS2yafGtWg7Y76IAPmLSOVrZ6fpYqF/vUn5+eCbMb0Og4C9ECrkbD9NSIqAiQ/0/Q==}
dependencies: dependencies:
'@unhead/schema': 1.1.14 '@unhead/schema': 1.1.16
'@unhead/shared': 1.1.14 '@unhead/shared': 1.1.16
dev: false dev: false
/@unhead/schema/1.1.14: /@unhead/schema/1.1.16:
resolution: {integrity: sha512-oxC9JyMJGjhFpRJRzD78sJutdVzkPnmxAse+9s2GCBmYiLuBbkzaTUozutjor6Y7/DkoD3MsqPGEIOo+H/UsUw==} resolution: {integrity: sha512-I9xIM9A5q4MBkHM0GTleed47WztJKpA8tJ0HSM74dVl887R3H5qwH9h3RMOo6y9xVhqgFt1MGL6wxTDAjqRczg==}
dependencies: dependencies:
hookable: 5.4.2 hookable: 5.4.2
zhead: 2.0.4 zhead: 2.0.4
/@unhead/shared/1.1.14: /@unhead/shared/1.1.16:
resolution: {integrity: sha512-V230FvL39gkMqDHocI7cDg1oFSyn/bQa8xbKVNOrDVRVDc9QKoMccLMyE0T7cwXWcA4tAwJF2NlLRZbowpwFcw==} resolution: {integrity: sha512-Fien3han5vZ4sIaH89Tk9o7eensIDEdRynbwnik+WNo0PTfmaN/LCa3EYsacOdNYeZ3eMjjYpmQt6r+FJCqzSA==}
dependencies: dependencies:
'@unhead/schema': 1.1.14 '@unhead/schema': 1.1.16
dev: false dev: false
/@unhead/ssr/1.1.14: /@unhead/ssr/1.1.16:
resolution: {integrity: sha512-t7TBISnDj9xgqBPlSxahx7kzJs+eaDBjcINsv+2CY7Q7A7XpZ4bJiOSem86/rY1nBNV+Gx/WPdLs9D81y8DO+Q==} resolution: {integrity: sha512-SCay47uCx7jHL30iX/D0chxOLLY5m2/WCU5bepCQlzFO25OFC6cEEYtG6/BQOIRVnyN8a2KvOU38jgL9xQZN9A==}
dependencies: dependencies:
'@unhead/schema': 1.1.14 '@unhead/schema': 1.1.16
'@unhead/shared': 1.1.14 '@unhead/shared': 1.1.16
dev: false dev: false
/@unhead/vue/1.1.14_vue@3.2.47: /@unhead/vue/1.1.16_vue@3.2.47:
resolution: {integrity: sha512-CRb8YgfcKm8/FtbWip/kiZEkGfYD6iCYXigbIrPFOKJr/EsZoFWH3FeJiu4ZL4hkaSydTmFGMSQxCxkwTQ9e0w==} resolution: {integrity: sha512-EbE0kqJHDmebF+X6fL7HqGnbTa+b6h6SzIvE+D0i0/IwhD2lXRrPcBy0XyLV9CLBpAbLVG4OByxnBX+7Kk/vUA==}
peerDependencies: peerDependencies:
vue: '>=2.7 || >=3' vue: '>=2.7 || >=3'
dependencies: dependencies:
'@unhead/schema': 1.1.14 '@unhead/schema': 1.1.16
'@unhead/shared': 1.1.14 '@unhead/shared': 1.1.16
hookable: 5.4.2 hookable: 5.4.2
unhead: 1.1.14 unhead: 1.1.16
vue: 3.2.47 vue: 3.2.47
dev: false dev: false
@ -2790,15 +2790,15 @@ packages:
- vue - vue
dev: true dev: true
/@vueuse/head/1.1.9_vue@3.2.47: /@vueuse/head/1.1.15_vue@3.2.47:
resolution: {integrity: sha512-J6OT32x1MnFs6a90DdusFfxPZYupYGR1kItDTw06Lj6ZORJRG1Del1BEy5FFXI7mhuIM4/nGLXgW+FtLE6JJQQ==} resolution: {integrity: sha512-LJqvb7dpSqnsdn6YWUxv97vWCnn/s6IfBrE4ih5kRlh8XQXr/HjXJ8IyIxxp0X7QDr3FhOsjRDpJSiQbDYbBdQ==}
peerDependencies: peerDependencies:
vue: '>=2.7 || >=3' vue: '>=2.7 || >=3'
dependencies: dependencies:
'@unhead/dom': 1.1.14 '@unhead/dom': 1.1.16
'@unhead/schema': 1.1.14 '@unhead/schema': 1.1.16
'@unhead/ssr': 1.1.14 '@unhead/ssr': 1.1.16
'@unhead/vue': 1.1.14_vue@3.2.47 '@unhead/vue': 1.1.16_vue@3.2.47
vue: 3.2.47 vue: 3.2.47
dev: false dev: false
@ -3434,19 +3434,24 @@ packages:
resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
/changelogen/0.4.1: /changelogen/0.5.1:
resolution: {integrity: sha512-p1dJO1Z995odIxdypzAykHIaUu+XnEvwYPSTyKJsbpL82o99sxN1G24tbecoMxTsV4PI+ZId82GJXRL2hhOeJA==} resolution: {integrity: sha512-vBaHKtnjsQHSQMVgVlDTTShRdIdYfadFVGaPhik2OR0VI+NeZuQNKcNfnruG7Ap37ecsZSKXhp5j9GVmtEGguQ==}
hasBin: true hasBin: true
dependencies: dependencies:
c12: 1.1.2 c12: 1.1.2
colorette: 2.0.19
consola: 2.15.3 consola: 2.15.3
convert-gitmoji: 0.1.3 convert-gitmoji: 0.1.3
execa: 6.1.0 execa: 7.0.0
mri: 1.2.0 mri: 1.2.0
node-fetch-native: 1.0.2 node-fetch-native: 1.0.2
ofetch: 1.0.1
open: 8.4.2
pathe: 1.1.0
pkg-types: 1.0.2 pkg-types: 1.0.2
scule: 1.0.0 scule: 1.0.0
semver: 7.3.8 semver: 7.3.8
yaml: 2.2.1
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@ -4248,7 +4253,7 @@ packages:
peerDependencies: peerDependencies:
webpack: ^4.40.0 || ^5.0.0 webpack: ^4.40.0 || ^5.0.0
dependencies: dependencies:
esbuild: 0.17.10 esbuild: 0.17.11
get-tsconfig: 4.4.0 get-tsconfig: 4.4.0
loader-utils: 2.0.4 loader-utils: 2.0.4
webpack: 5.75.0 webpack: 5.75.0
@ -4284,34 +4289,34 @@ packages:
'@esbuild/win32-ia32': 0.16.17 '@esbuild/win32-ia32': 0.16.17
'@esbuild/win32-x64': 0.16.17 '@esbuild/win32-x64': 0.16.17
/esbuild/0.17.10: /esbuild/0.17.11:
resolution: {integrity: sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==} resolution: {integrity: sha512-pAMImyokbWDtnA/ufPxjQg0fYo2DDuzAlqwnDvbXqHLphe+m80eF++perYKVm8LeTuj2zUuFXC+xgSVxyoHUdg==}
engines: {node: '>=12'} engines: {node: '>=12'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@esbuild/android-arm': 0.17.10 '@esbuild/android-arm': 0.17.11
'@esbuild/android-arm64': 0.17.10 '@esbuild/android-arm64': 0.17.11
'@esbuild/android-x64': 0.17.10 '@esbuild/android-x64': 0.17.11
'@esbuild/darwin-arm64': 0.17.10 '@esbuild/darwin-arm64': 0.17.11
'@esbuild/darwin-x64': 0.17.10 '@esbuild/darwin-x64': 0.17.11
'@esbuild/freebsd-arm64': 0.17.10 '@esbuild/freebsd-arm64': 0.17.11
'@esbuild/freebsd-x64': 0.17.10 '@esbuild/freebsd-x64': 0.17.11
'@esbuild/linux-arm': 0.17.10 '@esbuild/linux-arm': 0.17.11
'@esbuild/linux-arm64': 0.17.10 '@esbuild/linux-arm64': 0.17.11
'@esbuild/linux-ia32': 0.17.10 '@esbuild/linux-ia32': 0.17.11
'@esbuild/linux-loong64': 0.17.10 '@esbuild/linux-loong64': 0.17.11
'@esbuild/linux-mips64el': 0.17.10 '@esbuild/linux-mips64el': 0.17.11
'@esbuild/linux-ppc64': 0.17.10 '@esbuild/linux-ppc64': 0.17.11
'@esbuild/linux-riscv64': 0.17.10 '@esbuild/linux-riscv64': 0.17.11
'@esbuild/linux-s390x': 0.17.10 '@esbuild/linux-s390x': 0.17.11
'@esbuild/linux-x64': 0.17.10 '@esbuild/linux-x64': 0.17.11
'@esbuild/netbsd-x64': 0.17.10 '@esbuild/netbsd-x64': 0.17.11
'@esbuild/openbsd-x64': 0.17.10 '@esbuild/openbsd-x64': 0.17.11
'@esbuild/sunos-x64': 0.17.10 '@esbuild/sunos-x64': 0.17.11
'@esbuild/win32-arm64': 0.17.10 '@esbuild/win32-arm64': 0.17.11
'@esbuild/win32-ia32': 0.17.10 '@esbuild/win32-ia32': 0.17.11
'@esbuild/win32-x64': 0.17.10 '@esbuild/win32-x64': 0.17.11
/escalade/3.1.1: /escalade/3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
@ -4462,8 +4467,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-plugin-jsdoc/40.0.0_eslint@8.35.0: /eslint-plugin-jsdoc/40.0.1_eslint@8.35.0:
resolution: {integrity: sha512-LOPyIu1vAVvGPkye3ci0moj0iNf3f8bmin6do2DYDj+77NRXWnkmhKRy8swWsatUs3mB5jYPWPUsFg9pyfEiyA==} resolution: {integrity: sha512-KkiRInury7YrjjV5aCHDxwsPy6XFt5p2b2CnpDMITnWs8patNPf5kj24+VXIWw45kP6z/B0GOKfrYczB56OjQQ==}
engines: {node: ^14 || ^16 || ^17 || ^18 || ^19} engines: {node: ^14 || ^16 || ^17 || ^18 || ^19}
peerDependencies: peerDependencies:
eslint: ^7.0.0 || ^8.0.0 eslint: ^7.0.0 || ^8.0.0
@ -4727,21 +4732,6 @@ packages:
signal-exit: 3.0.7 signal-exit: 3.0.7
strip-final-newline: 2.0.0 strip-final-newline: 2.0.0
/execa/6.1.0:
resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
cross-spawn: 7.0.3
get-stream: 6.0.1
human-signals: 3.0.1
is-stream: 3.0.0
merge-stream: 2.0.0
npm-run-path: 5.1.0
onetime: 6.0.0
signal-exit: 3.0.7
strip-final-newline: 3.0.0
dev: true
/execa/7.0.0: /execa/7.0.0:
resolution: {integrity: sha512-tQbH0pH/8LHTnwTrsKWideqi6rFB/QNUawEwrn+WHyz7PX1Tuz2u7wfTvbaNBdP5JD5LVWxNo8/A8CHNZ3bV6g==} resolution: {integrity: sha512-tQbH0pH/8LHTnwTrsKWideqi6rFB/QNUawEwrn+WHyz7PX1Tuz2u7wfTvbaNBdP5JD5LVWxNo8/A8CHNZ3bV6g==}
engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
@ -5160,6 +5150,16 @@ packages:
minimatch: 5.1.6 minimatch: 5.1.6
once: 1.4.0 once: 1.4.0
/glob/9.2.1:
resolution: {integrity: sha512-Pxxgq3W0HyA3XUvSXcFhRSs+43Jsx0ddxcFrbjxNGkL2Ak5BAUBxLqI5G6ADDeCHLfzzXFhe0b1yYcctGmytMA==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
fs.realpath: 1.0.0
minimatch: 7.4.2
minipass: 4.2.4
path-scurry: 1.6.1
dev: true
/globals/11.12.0: /globals/11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -5383,11 +5383,6 @@ packages:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'} engines: {node: '>=10.17.0'}
/human-signals/3.0.1:
resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
engines: {node: '>=12.20.0'}
dev: true
/human-signals/4.3.0: /human-signals/4.3.0:
resolution: {integrity: sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ==} resolution: {integrity: sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ==}
engines: {node: '>=14.18.0'} engines: {node: '>=14.18.0'}
@ -5716,7 +5711,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.4.3 '@jest/types': 29.4.3
'@types/node': 18.14.4 '@types/node': 18.14.6
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.8.0 ci-info: 3.8.0
graceful-fs: 4.2.10 graceful-fs: 4.2.10
@ -5727,7 +5722,7 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'} engines: {node: '>= 10.13.0'}
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 supports-color: 8.1.1
@ -5735,7 +5730,7 @@ packages:
resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
jest-util: 29.4.3 jest-util: 29.4.3
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 supports-color: 8.1.1
@ -6187,6 +6182,13 @@ packages:
brace-expansion: 2.0.1 brace-expansion: 2.0.1
dev: true dev: true
/minimatch/7.4.2:
resolution: {integrity: sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==}
engines: {node: '>=10'}
dependencies:
brace-expansion: 2.0.1
dev: true
/minimist/1.2.8: /minimist/1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true dev: true
@ -6197,8 +6199,8 @@ packages:
dependencies: dependencies:
yallist: 4.0.0 yallist: 4.0.0
/minipass/4.0.3: /minipass/4.2.4:
resolution: {integrity: sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==} resolution: {integrity: sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==}
engines: {node: '>=8'} engines: {node: '>=8'}
/minizlib/2.1.2: /minizlib/2.1.2:
@ -6230,7 +6232,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
defu: 6.1.2 defu: 6.1.2
esbuild: 0.17.10 esbuild: 0.17.11
fs-extra: 11.1.0 fs-extra: 11.1.0
globby: 13.1.3 globby: 13.1.3
jiti: 1.17.1 jiti: 1.17.1
@ -6320,7 +6322,7 @@ packages:
defu: 6.1.2 defu: 6.1.2
destr: 1.2.2 destr: 1.2.2
dot-prop: 7.2.0 dot-prop: 7.2.0
esbuild: 0.17.10 esbuild: 0.17.11
escape-string-regexp: 5.0.0 escape-string-regexp: 5.0.0
etag: 1.8.1 etag: 1.8.1
fs-extra: 11.1.0 fs-extra: 11.1.0
@ -6554,8 +6556,8 @@ packages:
dependencies: dependencies:
mimic-fn: 4.0.0 mimic-fn: 4.0.0
/open/8.4.1: /open/8.4.2:
resolution: {integrity: sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==} resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
dependencies: dependencies:
define-lazy-prop: 2.0.0 define-lazy-prop: 2.0.0
@ -6698,6 +6700,14 @@ packages:
/path-parse/1.0.7: /path-parse/1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
/path-scurry/1.6.1:
resolution: {integrity: sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==}
engines: {node: '>=14'}
dependencies:
lru-cache: 7.16.0
minipass: 4.2.4
dev: true
/path-type/4.0.0: /path-type/4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -6744,19 +6754,19 @@ packages:
mlly: 1.1.1 mlly: 1.1.1
pathe: 1.1.0 pathe: 1.1.0
/playwright-core/1.31.1: /playwright-core/1.31.2:
resolution: {integrity: sha512-JTyX4kV3/LXsvpHkLzL2I36aCdml4zeE35x+G5aPc4bkLsiRiQshU5lWeVpHFAuC8xAcbI6FDcw/8z3q2xtJSQ==} resolution: {integrity: sha512-a1dFgCNQw4vCsG7bnojZjDnPewZcw7tZUNFN0ZkcLYKj+mPmXvg4MpaaKZ5SgqPsOmqIf2YsVRkgqiRDxD+fDQ==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
dev: true dev: true
/playwright/1.31.1: /playwright/1.31.2:
resolution: {integrity: sha512-zKJabsIA2rvOwJ12lGTqWv4HVJzlfw2JtUvO4hAr7J8UXQZ1qEPpX20E1vcz/9fotnTkwgqp3CVdIBwptBN3Fg==} resolution: {integrity: sha512-jpC47n2PKQNtzB7clmBuWh6ftBRS/Bt5EGLigJ9k2QAKcNeYXZkEaDH5gmvb6+AbcE0DO6GnXdbl9ogG6Eh+og==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
dependencies: dependencies:
playwright-core: 1.31.1 playwright-core: 1.31.2
dev: true dev: true
/pluralize/8.0.0: /pluralize/8.0.0:
@ -7352,10 +7362,12 @@ packages:
dependencies: dependencies:
glob: 7.2.3 glob: 7.2.3
/rimraf/4.1.3: /rimraf/4.3.0:
resolution: {integrity: sha512-iyzalDLo3l5FZxxaIGUY7xI4Bf90Xt7pCipc1Mr7RsdU7H3538z+M0tlsUDrz0aHeGS9uNqiKHUJyTewwRP91Q==} resolution: {integrity: sha512-5qVDXPbByA1qSJEWMv1qAwKsoS22vVpsL2QyxCKBw4gf6XiFo1K3uRLY6uSOOBFDwnqAZtnbILqWKKlzh8bkGg==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
dependencies:
glob: 9.2.1
dev: true dev: true
/rollup-plugin-dts/5.2.0_fn2onl6nbsljlgjr3jlzr6w7we: /rollup-plugin-dts/5.2.0_fn2onl6nbsljlgjr3jlzr6w7we:
@ -7382,7 +7394,7 @@ packages:
rollup: rollup:
optional: true optional: true
dependencies: dependencies:
open: 8.4.1 open: 8.4.2
picomatch: 2.3.1 picomatch: 2.3.1
rollup: 3.18.0 rollup: 3.18.0
source-map: 0.7.4 source-map: 0.7.4
@ -7874,7 +7886,7 @@ packages:
dependencies: dependencies:
chownr: 2.0.0 chownr: 2.0.0
fs-minipass: 2.1.0 fs-minipass: 2.1.0
minipass: 4.0.3 minipass: 4.2.4
minizlib: 2.1.2 minizlib: 2.1.2
mkdirp: 1.0.4 mkdirp: 1.0.4
yallist: 4.0.0 yallist: 4.0.0
@ -8132,7 +8144,7 @@ packages:
chalk: 5.2.0 chalk: 5.2.0
consola: 2.15.3 consola: 2.15.3
defu: 6.1.2 defu: 6.1.2
esbuild: 0.17.10 esbuild: 0.17.11
globby: 13.1.3 globby: 13.1.3
hookable: 5.4.2 hookable: 5.4.2
jiti: 1.17.1 jiti: 1.17.1
@ -8188,12 +8200,12 @@ packages:
node-fetch-native: 1.0.2 node-fetch-native: 1.0.2
pathe: 1.1.0 pathe: 1.1.0
/unhead/1.1.14: /unhead/1.1.16:
resolution: {integrity: sha512-tFy0nLOyiKmIVzfz5HuSRzVi55XuRS1G8LslrWn42tezssuZw6JqiscUJZRI14rNdcwhtcQV2iTy4Uw7s1uZrA==} resolution: {integrity: sha512-m2cPqEkgwHnA/di9P17TRS21p4aAJw4QolwTyXM+gzrlnFPe8gqOYuwEVnLRMS/NgoNWH7iPDOGyf5bbbrnTaw==}
dependencies: dependencies:
'@unhead/dom': 1.1.14 '@unhead/dom': 1.1.16
'@unhead/schema': 1.1.14 '@unhead/schema': 1.1.16
'@unhead/shared': 1.1.14 '@unhead/shared': 1.1.16
hookable: 5.4.2 hookable: 5.4.2
dev: false dev: false
@ -8434,7 +8446,7 @@ packages:
- terser - terser
dev: false dev: false
/vite-node/0.29.2_@types+node@18.14.4: /vite-node/0.29.2_@types+node@18.14.6:
resolution: {integrity: sha512-5oe1z6wzI3gkvc4yOBbDBbgpiWiApvuN4P55E8OI131JGrSuo4X3SOZrNmZYo4R8Zkze/dhi572blX0zc+6SdA==} resolution: {integrity: sha512-5oe1z6wzI3gkvc4yOBbDBbgpiWiApvuN4P55E8OI131JGrSuo4X3SOZrNmZYo4R8Zkze/dhi572blX0zc+6SdA==}
engines: {node: '>=v14.16.0'} engines: {node: '>=v14.16.0'}
hasBin: true hasBin: true
@ -8444,7 +8456,7 @@ packages:
mlly: 1.1.1 mlly: 1.1.1
pathe: 1.1.0 pathe: 1.1.0
picocolors: 1.0.0 picocolors: 1.0.0
vite: 4.1.4_@types+node@18.14.4 vite: 4.1.4_@types+node@18.14.6
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
- less - less
@ -8537,7 +8549,7 @@ packages:
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2
/vite/4.1.4_@types+node@18.14.4: /vite/4.1.4_@types+node@18.14.6:
resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true hasBin: true
@ -8562,7 +8574,7 @@ packages:
terser: terser:
optional: true optional: true
dependencies: dependencies:
'@types/node': 18.14.4 '@types/node': 18.14.6
esbuild: 0.16.17 esbuild: 0.16.17
postcss: 8.4.21 postcss: 8.4.21
resolve: 1.22.1 resolve: 1.22.1
@ -8595,7 +8607,7 @@ packages:
dependencies: dependencies:
'@types/chai': 4.3.4 '@types/chai': 4.3.4
'@types/chai-subset': 1.3.3 '@types/chai-subset': 1.3.3
'@types/node': 18.14.4 '@types/node': 18.14.6
'@vitest/expect': 0.29.2 '@vitest/expect': 0.29.2
'@vitest/runner': 0.29.2 '@vitest/runner': 0.29.2
'@vitest/spy': 0.29.2 '@vitest/spy': 0.29.2
@ -8614,8 +8626,8 @@ packages:
tinybench: 2.3.1 tinybench: 2.3.1
tinypool: 0.3.1 tinypool: 0.3.1
tinyspy: 1.1.1 tinyspy: 1.1.1
vite: 4.1.4_@types+node@18.14.4 vite: 4.1.4_@types+node@18.14.6
vite-node: 0.29.2_@types+node@18.14.4 vite-node: 0.29.2_@types+node@18.14.6
why-is-node-running: 2.2.2 why-is-node-running: 2.2.2
transitivePeerDependencies: transitivePeerDependencies:
- less - less
@ -9018,6 +9030,11 @@ packages:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
/yaml/2.2.1:
resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==}
engines: {node: '>= 14'}
dev: true
/yargs-parser/21.1.1: /yargs-parser/21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'} engines: {node: '>=12'}

View File

@ -1,6 +1,8 @@
import { execSync } from 'node:child_process' import { execSync } from 'node:child_process'
import { $fetch } from 'ofetch' import { $fetch } from 'ofetch'
import { inc } from 'semver' import { inc } from 'semver'
import { getGitDiff, determineSemverChange, loadChangelogConfig, parseCommits } from 'changelogen'
import { execaSync } from 'execa'
import { loadWorkspace } from './_utils' import { loadWorkspace } from './_utils'
async function main () { async function main () {
@ -14,9 +16,15 @@ async function main () {
const latestNitro = nitroInfo['dist-tags'].latest const latestNitro = nitroInfo['dist-tags'].latest
nuxtPkg.data.dependencies.nitropack = `npm:nitropack-edge@^${latestNitro}` nuxtPkg.data.dependencies.nitropack = `npm:nitropack-edge@^${latestNitro}`
const config = await loadChangelogConfig(process.cwd())
const latestTag = execaSync('git', ['describe', '--tags', '--abbrev=0']).stdout
const commits = await getGitDiff(latestTag)
const bumpType = determineSemverChange(parseCommits(commits, config), config)
for (const pkg of workspace.packages.filter(p => !p.data.private)) { for (const pkg of workspace.packages.filter(p => !p.data.private)) {
// TODO: Set release type based on changelog after 3.0.0 const newVersion = inc(pkg.data.version, bumpType || 'prerelease')
const newVersion = inc(pkg.data.version, 'prerelease', 'rc')
workspace.setVersion(pkg.data.name, `${newVersion}-${date}.${commit}`) workspace.setVersion(pkg.data.name, `${newVersion}-${date}.${commit}`)
const newname = pkg.data.name === 'nuxt' ? 'nuxt3' : (pkg.data.name + '-edge') const newname = pkg.data.name === 'nuxt' ? 'nuxt3' : (pkg.data.name + '-edge')
workspace.rename(pkg.data.name, newname) workspace.rename(pkg.data.name, newname)

View File

@ -3,7 +3,6 @@ import { describe, expect, it } from 'vitest'
import { joinURL, withQuery } from 'ufo' import { joinURL, withQuery } from 'ufo'
import { isCI, isWindows } from 'std-env' import { isCI, isWindows } from 'std-env'
import { normalize } from 'pathe' import { normalize } from 'pathe'
// eslint-disable-next-line import/order
import { setup, fetch, $fetch, startServer, isDev, createPage, url } from '@nuxt/test-utils' import { setup, fetch, $fetch, startServer, isDev, createPage, url } from '@nuxt/test-utils'
import type { NuxtIslandResponse } from '../packages/nuxt/src/core/runtime/nitro/renderer' import type { NuxtIslandResponse } from '../packages/nuxt/src/core/runtime/nitro/renderer'
@ -47,6 +46,13 @@ describe('route rules', () => {
}) })
}) })
describe('modules', () => {
it('should auto-register modules in ~/modules', async () => {
const result = await $fetch('/auto-registered-module')
expect(result).toEqual('handler added by auto-registered module')
})
})
describe('pages', () => { describe('pages', () => {
it('render index', async () => { it('render index', async () => {
const html = await $fetch('/') const html = await $fetch('/')

View File

@ -0,0 +1,15 @@
import { createResolver, defineNuxtModule, addServerHandler } from 'nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'auto-registered-module'
},
setup () {
const resolver = createResolver(import.meta.url)
addServerHandler({
handler: resolver.resolve('./runtime/handler'),
route: '/auto-registered-module'
})
}
})

View File

@ -0,0 +1 @@
export default defineEventHandler(() => 'handler added by auto-registered module')

View File

@ -1,5 +1,4 @@
import { fileURLToPath } from 'node:url' import { defineNuxtModule, createResolver, addPlugin, useNuxt } from 'nuxt/kit'
import { defineNuxtModule, addPlugin, useNuxt } from '@nuxt/kit'
export default defineNuxtModule({ export default defineNuxtModule({
defaults: { defaults: {
@ -11,11 +10,13 @@ export default defineNuxtModule({
configKey: 'sampleModule' configKey: 'sampleModule'
}, },
setup () { setup () {
addPlugin(fileURLToPath(new URL('./runtime/plugin', import.meta.url))) const resolver = createResolver(import.meta.url)
addPlugin(resolver.resolve('./runtime/plugin'))
useNuxt().hook('app:resolve', (app) => { useNuxt().hook('app:resolve', (app) => {
app.middleware.push({ app.middleware.push({
name: 'unctx-test', name: 'unctx-test',
path: fileURLToPath(new URL('./runtime/middleware', import.meta.url)), path: resolver.resolve('./runtime/middleware'),
global: true global: true
}) })
}) })

View File

@ -11,6 +11,7 @@ declare module 'nitropack' {
} }
export default defineNuxtConfig({ export default defineNuxtConfig({
typescript: { strict: true },
app: { app: {
pageTransition: true, pageTransition: true,
layoutTransition: true, layoutTransition: true,
@ -161,8 +162,7 @@ export default defineNuxtConfig({
componentIslands: true, componentIslands: true,
reactivityTransform: true, reactivityTransform: true,
treeshakeClientOnly: true, treeshakeClientOnly: true,
payloadExtraction: true, payloadExtraction: true
configSchema: true
}, },
appConfig: { appConfig: {
fromNuxtConfig: true, fromNuxtConfig: true,

View File

@ -247,8 +247,9 @@ describe('app config', () => {
val: number val: number
}, },
userConfig: number userConfig: number
[key: string]: any
} }
expectTypeOf<AppConfig>().toMatchTypeOf<ExpectedMergedAppConfig>() expectTypeOf<AppConfig>().toEqualTypeOf<ExpectedMergedAppConfig>()
}) })
}) })

View File

@ -3,7 +3,6 @@ import { fileURLToPath } from 'node:url'
import { describe, expect, it } from 'vitest' import { describe, expect, it } from 'vitest'
import { isWindows } from 'std-env' import { isWindows } from 'std-env'
import { join } from 'pathe' import { join } from 'pathe'
// eslint-disable-next-line import/order
import { setup, $fetch } from '@nuxt/test-utils' import { setup, $fetch } from '@nuxt/test-utils'
import { expectWithPolling, renderPage } from './utils' import { expectWithPolling, renderPage } from './utils'