mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-24 06:35:10 +00:00
chore: extract @nuxt/test-utils
to separate repo (#24146)
This commit is contained in:
parent
d8674b9982
commit
75cf1914ba
31
.eslintrc
31
.eslintrc
@ -11,7 +11,10 @@
|
||||
"NodeJS": true,
|
||||
"$fetch": true
|
||||
},
|
||||
"plugins": ["jsdoc", "no-only-tests"],
|
||||
"plugins": [
|
||||
"jsdoc",
|
||||
"no-only-tests"
|
||||
],
|
||||
"extends": [
|
||||
"plugin:jsdoc/recommended",
|
||||
"@nuxtjs/eslint-config-typescript",
|
||||
@ -41,14 +44,6 @@
|
||||
"error",
|
||||
{
|
||||
"pathGroups": [
|
||||
{
|
||||
"pattern": "@nuxt/test-utils/experimental",
|
||||
"group": "external"
|
||||
},
|
||||
{
|
||||
"pattern": "@nuxt/test-utils",
|
||||
"group": "external"
|
||||
},
|
||||
{
|
||||
"pattern": "#vue-router",
|
||||
"group": "external"
|
||||
@ -108,26 +103,36 @@
|
||||
"jsdoc/check-tag-names": [
|
||||
"error",
|
||||
{
|
||||
"definedTags": ["__NO_SIDE_EFFECTS__"]
|
||||
"definedTags": [
|
||||
"__NO_SIDE_EFFECTS__"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["packages/schema/**"],
|
||||
"files": [
|
||||
"packages/schema/**"
|
||||
],
|
||||
"rules": {
|
||||
"jsdoc/no-undefined-types": "off",
|
||||
"jsdoc/valid-types": "off",
|
||||
"jsdoc/check-tag-names": [
|
||||
"error",
|
||||
{
|
||||
"definedTags": ["experimental"]
|
||||
"definedTags": [
|
||||
"experimental"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["packages/nuxt/src/app/**", "test/**", "**/runtime/**"],
|
||||
"files": [
|
||||
"packages/nuxt/src/app/**",
|
||||
"test/**",
|
||||
"**/runtime/**"
|
||||
],
|
||||
"rules": {
|
||||
"no-console": "off"
|
||||
}
|
||||
|
@ -3,7 +3,6 @@
|
||||
"overrides": {
|
||||
"@nuxt/kit": "./packages/kit",
|
||||
"@nuxt/schema": "./packages/schema",
|
||||
"@nuxt/test-utils": "./packages/test-utils",
|
||||
"@nuxt/vite": "./packages/vite",
|
||||
"@nuxt/webpack": "./packages/webpack",
|
||||
"nuxt": "./packages/nuxt"
|
||||
|
12
knip.json
12
knip.json
@ -12,18 +12,6 @@
|
||||
"src/runtime/**/*.ts"
|
||||
]
|
||||
},
|
||||
"packages/test-utils": {
|
||||
"entry": [
|
||||
"src/experimental.ts",
|
||||
"src/index.ts"
|
||||
]
|
||||
},
|
||||
"packages/nuxi": {
|
||||
"entry": [
|
||||
"src/index.ts",
|
||||
"src/commands/*.ts"
|
||||
]
|
||||
},
|
||||
"packages/nuxt": {
|
||||
"entry": [
|
||||
"src/app/**/*.ts",
|
||||
|
@ -29,7 +29,6 @@
|
||||
"resolutions": {
|
||||
"@nuxt/kit": "workspace:*",
|
||||
"@nuxt/schema": "workspace:*",
|
||||
"@nuxt/test-utils": "workspace:*",
|
||||
"@nuxt/vite-builder": "workspace:*",
|
||||
"@nuxt/webpack-builder": "workspace:*",
|
||||
"nuxt": "workspace:*",
|
||||
@ -38,7 +37,7 @@
|
||||
"magic-string": "^0.30.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nuxt/test-utils": "workspace:*",
|
||||
"@nuxt/test-utils": "3.8.1",
|
||||
"@nuxt/webpack-builder": "workspace:*",
|
||||
"@nuxtjs/eslint-config-typescript": "12.1.0",
|
||||
"@types/fs-extra": "11.0.3",
|
||||
|
5
packages/test-utils/README.md
Normal file
5
packages/test-utils/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Nuxt Test Utils
|
||||
|
||||
🧪 Test utilities for [Nuxt](https://nuxt.com).
|
||||
|
||||
- 👉 View on GitHub at https://github.com/nuxt/test-utils
|
@ -1,12 +0,0 @@
|
||||
import { defineBuildConfig } from 'unbuild'
|
||||
|
||||
export default defineBuildConfig({
|
||||
declaration: true,
|
||||
entries: [
|
||||
'src/index',
|
||||
'src/experimental',
|
||||
{ input: 'src/runtime/', outDir: 'dist/runtime', format: 'esm' }
|
||||
],
|
||||
externals: [
|
||||
]
|
||||
})
|
1
packages/test-utils/experimental.d.ts
vendored
1
packages/test-utils/experimental.d.ts
vendored
@ -1 +0,0 @@
|
||||
export * from './dist/experimental'
|
@ -1,62 +0,0 @@
|
||||
{
|
||||
"name": "@nuxt/test-utils",
|
||||
"version": "3.8.1",
|
||||
"repository": "nuxt/nuxt",
|
||||
"description": "Test utilities for Nuxt",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"types": "./dist/index.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"import": "./dist/index.mjs"
|
||||
},
|
||||
"./experimental": {
|
||||
"types": "./dist/experimental.d.ts",
|
||||
"import": "./dist/experimental.mjs"
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"scripts": {
|
||||
"prepack": "unbuild"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nuxt/kit": "workspace:*",
|
||||
"@nuxt/schema": "workspace:*",
|
||||
"consola": "^3.2.3",
|
||||
"defu": "^6.1.3",
|
||||
"execa": "^8.0.1",
|
||||
"get-port-please": "^3.1.1",
|
||||
"ofetch": "^1.3.3",
|
||||
"pathe": "^1.1.1",
|
||||
"ufo": "^1.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@jest/globals": "29.7.0",
|
||||
"playwright-core": "1.39.0",
|
||||
"unbuild": "latest",
|
||||
"vitest": "0.33.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@jest/globals": "^29.5.0",
|
||||
"playwright-core": "^1.34.3",
|
||||
"vitest": "^0.30.0 || ^0.31.0 || ^0.32.0 || ^0.33.0",
|
||||
"vue": "^3.3.4"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@jest/globals": {
|
||||
"optional": true
|
||||
},
|
||||
"playwright-core": {
|
||||
"optional": true
|
||||
},
|
||||
"vitest": {
|
||||
"optional": true
|
||||
}
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.18.0 || >=16.10.0"
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
import type { Browser, BrowserContextOptions } from 'playwright-core'
|
||||
import { useTestContext } from './context'
|
||||
import { url } from './server'
|
||||
|
||||
export async function createBrowser () {
|
||||
const ctx = useTestContext()
|
||||
|
||||
let playwright: typeof import('playwright-core')
|
||||
try {
|
||||
// Workaround for https://github.com/nuxt/nuxt/issues/13441
|
||||
// TODO: Remove when upstream issue resolved
|
||||
playwright = await import(String('playwright-core'))
|
||||
} catch {
|
||||
/* istanbul ignore next */
|
||||
throw new Error(`
|
||||
The dependency 'playwright-core' not found.
|
||||
Please run 'yarn add --dev playwright-core' or 'npm install --save-dev playwright-core'
|
||||
`)
|
||||
}
|
||||
|
||||
const { type, launch } = ctx.options.browserOptions
|
||||
if (!playwright[type]) {
|
||||
throw new Error(`Invalid browser '${type}'`)
|
||||
}
|
||||
|
||||
ctx.browser = await playwright[type].launch(launch)
|
||||
}
|
||||
|
||||
export async function getBrowser (): Promise<Browser> {
|
||||
const ctx = useTestContext()
|
||||
if (!ctx.browser) {
|
||||
await createBrowser()
|
||||
}
|
||||
return ctx.browser!
|
||||
}
|
||||
|
||||
export async function createPage (path?: string, options?: BrowserContextOptions) {
|
||||
const browser = await getBrowser()
|
||||
const page = await browser.newPage(options)
|
||||
|
||||
if (path) {
|
||||
await page.goto(url(path))
|
||||
}
|
||||
|
||||
return page
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
import { resolve } from 'node:path'
|
||||
import { defu } from 'defu'
|
||||
import type { TestContext, TestOptions, TestRunner } from './types'
|
||||
|
||||
let currentContext: TestContext | undefined
|
||||
|
||||
export function createTestContext (options: Partial<TestOptions>): TestContext {
|
||||
const _options: Partial<TestOptions> = defu(options, {
|
||||
testDir: resolve(process.cwd(), 'test'),
|
||||
fixture: 'fixture',
|
||||
configFile: 'nuxt.config',
|
||||
setupTimeout: 120 * 1000,
|
||||
dev: !!JSON.parse(process.env.NUXT_TEST_DEV || 'false'),
|
||||
logLevel: 1,
|
||||
server: true,
|
||||
build: (options.browser !== false) || (options.server !== false),
|
||||
nuxtConfig: {},
|
||||
// TODO: auto detect based on process.env
|
||||
runner: <TestRunner>'vitest',
|
||||
browserOptions: {
|
||||
type: 'chromium' as const
|
||||
}
|
||||
})
|
||||
|
||||
return setTestContext({
|
||||
options: _options as TestOptions
|
||||
})
|
||||
}
|
||||
|
||||
export function useTestContext (): TestContext {
|
||||
recoverContextFromEnv()
|
||||
if (!currentContext) {
|
||||
throw new Error('No context is available. (Forgot calling setup or createContext?)')
|
||||
}
|
||||
return currentContext
|
||||
}
|
||||
|
||||
export function setTestContext (context: TestContext): TestContext
|
||||
export function setTestContext (context?: TestContext): TestContext | undefined
|
||||
export function setTestContext (context?: TestContext): TestContext | undefined {
|
||||
currentContext = context
|
||||
return currentContext
|
||||
}
|
||||
|
||||
export function isDev () {
|
||||
const ctx = useTestContext()
|
||||
return ctx.options.dev
|
||||
}
|
||||
|
||||
export function recoverContextFromEnv () {
|
||||
if (!currentContext && process.env.NUXT_TEST_CONTEXT) {
|
||||
setTestContext(JSON.parse(process.env.NUXT_TEST_CONTEXT || '{}'))
|
||||
}
|
||||
}
|
||||
|
||||
export function exposeContextToEnv () {
|
||||
const { options, browser, url } = currentContext!
|
||||
process.env.NUXT_TEST_CONTEXT = JSON.stringify({ options, browser, url })
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import { dirname } from 'pathe'
|
||||
|
||||
export const distDir = dirname(fileURLToPath(import.meta.url))
|
@ -1,23 +0,0 @@
|
||||
import { $fetch as _$fetch, fetch as _fetch } from 'ofetch'
|
||||
import * as _kit from '@nuxt/kit'
|
||||
import { resolve } from 'pathe'
|
||||
import { stringifyQuery } from 'ufo'
|
||||
import { useTestContext } from './context'
|
||||
import { $fetch } from './server'
|
||||
|
||||
/**
|
||||
* This is a function to render a component directly with the Nuxt server.
|
||||
*/
|
||||
export function $fetchComponent (filepath: string, props?: Record<string, any>) {
|
||||
return $fetch(componentTestUrl(filepath, props))
|
||||
}
|
||||
|
||||
export function componentTestUrl (filepath: string, props?: Record<string, any>) {
|
||||
const ctx = useTestContext()
|
||||
filepath = resolve(ctx.options.rootDir, filepath)
|
||||
const path = stringifyQuery({
|
||||
path: filepath,
|
||||
props: JSON.stringify(props)
|
||||
})
|
||||
return `/__nuxt_component_test__/?${path}`
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
export * from './browser'
|
||||
export * from './context'
|
||||
export * from './mock'
|
||||
export * from './nuxt'
|
||||
export * from './server'
|
||||
export * from './setup'
|
||||
export * from './run'
|
||||
export * from './types'
|
@ -1,16 +0,0 @@
|
||||
import { consola } from 'consola'
|
||||
import { useTestContext } from './context'
|
||||
|
||||
export function mockFn () {
|
||||
const ctx = useTestContext()
|
||||
return ctx.mockFn
|
||||
}
|
||||
|
||||
export function mockLogger (): Record<string, Function> {
|
||||
const mocks: any = {}
|
||||
consola.mockTypes((type) => {
|
||||
mocks[type] = mockFn()
|
||||
return mocks[type]
|
||||
})
|
||||
return mocks
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
import { existsSync, promises as fsp } from 'node:fs'
|
||||
import { resolve } from 'node:path'
|
||||
import { defu } from 'defu'
|
||||
import * as _kit from '@nuxt/kit'
|
||||
import { useTestContext } from './context'
|
||||
|
||||
// @ts-expect-error type cast
|
||||
// eslint-disable-next-line
|
||||
const kit: typeof _kit = _kit.default || _kit
|
||||
|
||||
const isNuxtApp = (dir: string) => {
|
||||
return existsSync(dir) && (
|
||||
existsSync(resolve(dir, 'pages')) ||
|
||||
existsSync(resolve(dir, 'nuxt.config.js')) ||
|
||||
existsSync(resolve(dir, 'nuxt.config.mjs')) ||
|
||||
existsSync(resolve(dir, 'nuxt.config.cjs')) ||
|
||||
existsSync(resolve(dir, 'nuxt.config.ts'))
|
||||
)
|
||||
}
|
||||
|
||||
const resolveRootDir = () => {
|
||||
const { options } = useTestContext()
|
||||
|
||||
const dirs = [
|
||||
options.rootDir,
|
||||
resolve(options.testDir, options.fixture),
|
||||
process.cwd()
|
||||
]
|
||||
|
||||
for (const dir of dirs) {
|
||||
if (dir && isNuxtApp(dir)) {
|
||||
return dir
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error('Invalid nuxt app. (Please explicitly set `options.rootDir` pointing to a valid nuxt app)')
|
||||
}
|
||||
|
||||
export async function loadFixture () {
|
||||
const ctx = useTestContext()
|
||||
|
||||
ctx.options.rootDir = resolveRootDir()
|
||||
|
||||
if (!ctx.options.dev) {
|
||||
const randomId = Math.random().toString(36).slice(2, 8)
|
||||
const buildDir = resolve(ctx.options.rootDir, '.nuxt', randomId)
|
||||
ctx.options.nuxtConfig = defu(ctx.options.nuxtConfig, {
|
||||
buildDir,
|
||||
nitro: {
|
||||
output: {
|
||||
dir: resolve(buildDir, 'output')
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
ctx.nuxt = await kit.loadNuxt({
|
||||
cwd: ctx.options.rootDir,
|
||||
dev: ctx.options.dev,
|
||||
overrides: ctx.options.nuxtConfig,
|
||||
configFile: ctx.options.configFile
|
||||
})
|
||||
|
||||
await fsp.mkdir(ctx.nuxt.options.buildDir, { recursive: true })
|
||||
}
|
||||
|
||||
export async function buildFixture () {
|
||||
const ctx = useTestContext()
|
||||
// Hide build info for test
|
||||
const prevLevel = kit.logger.level
|
||||
kit.logger.level = ctx.options.logLevel
|
||||
await kit.buildNuxt(ctx.nuxt!)
|
||||
kit.logger.level = prevLevel
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
import { resolve } from 'pathe'
|
||||
import { distDir } from './dirs'
|
||||
|
||||
export interface RunTestOptions {
|
||||
rootDir: string,
|
||||
dev?: boolean,
|
||||
watch?: boolean
|
||||
runner?: 'vitest'
|
||||
globalSetup?: boolean
|
||||
}
|
||||
|
||||
const RunTestDefaults: Partial<RunTestOptions> = {
|
||||
runner: 'vitest',
|
||||
globalSetup: true
|
||||
}
|
||||
|
||||
export async function runTests (opts: RunTestOptions) {
|
||||
opts = { ...RunTestDefaults, ...opts }
|
||||
|
||||
if (opts.runner !== 'vitest') {
|
||||
throw new Error(`Unsupported runner: ${opts.runner}. Currently only vitest runner is supported.`)
|
||||
}
|
||||
|
||||
if (opts.dev) {
|
||||
// Set default dev option for @nuxt/test-utils
|
||||
process.env.NUXT_TEST_DEV = 'true'
|
||||
}
|
||||
|
||||
// Consumed by recoverContextFromEnv()
|
||||
process.env.NUXT_TEST_OPTIONS = JSON.stringify(opts)
|
||||
|
||||
const { startVitest } = await import('vitest/node')
|
||||
const succeeded = await startVitest(
|
||||
'test',
|
||||
[] /* argv */,
|
||||
// Vitest options
|
||||
{
|
||||
root: opts.rootDir,
|
||||
run: !opts.watch,
|
||||
deps: {
|
||||
inline: [/@nuxt\/test-utils/]
|
||||
}
|
||||
},
|
||||
// Vite options
|
||||
{
|
||||
esbuild: {
|
||||
tsconfigRaw: '{}'
|
||||
},
|
||||
test: {
|
||||
dir: opts.rootDir,
|
||||
deps: {
|
||||
inline: [
|
||||
distDir,
|
||||
'@nuxt/test-utils',
|
||||
'@nuxt/test-utils-edge'
|
||||
]
|
||||
},
|
||||
globals: true,
|
||||
globalSetup: [
|
||||
...opts.globalSetup ? [resolve(distDir, './runtime/global-setup')] : []
|
||||
]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
if (!succeeded) {
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
import * as _kit from '@nuxt/kit'
|
||||
import { createTest, exposeContextToEnv } from '@nuxt/test-utils'
|
||||
|
||||
// @ts-expect-error type cast
|
||||
// eslint-disable-next-line
|
||||
const kit: typeof _kit = _kit.default || _kit
|
||||
|
||||
const options = JSON.parse(process.env.NUXT_TEST_OPTIONS || '{}')
|
||||
const hooks = createTest(options)
|
||||
|
||||
export const setup = async () => {
|
||||
kit.logger.info('Building Nuxt app...')
|
||||
await hooks.setup()
|
||||
exposeContextToEnv()
|
||||
kit.logger.info('Running tests...')
|
||||
}
|
||||
|
||||
export const teardown = async () => {
|
||||
await hooks.afterAll()
|
||||
}
|
@ -1,87 +0,0 @@
|
||||
import { execa } from 'execa'
|
||||
import { getRandomPort, waitForPort } from 'get-port-please'
|
||||
import type { FetchOptions } from 'ofetch'
|
||||
import { $fetch as _$fetch, fetch as _fetch } from 'ofetch'
|
||||
import * as _kit from '@nuxt/kit'
|
||||
import { resolve } from 'pathe'
|
||||
import { useTestContext } from './context'
|
||||
|
||||
// @ts-expect-error type cast
|
||||
// eslint-disable-next-line
|
||||
const kit: typeof _kit = _kit.default || _kit
|
||||
|
||||
export async function startServer () {
|
||||
const ctx = useTestContext()
|
||||
await stopServer()
|
||||
const host = '127.0.0.1'
|
||||
const port = ctx.options.port || await getRandomPort(host)
|
||||
ctx.url = `http://${host}:${port}`
|
||||
if (ctx.options.dev) {
|
||||
const nuxiCLI = await kit.resolvePath('nuxi/cli')
|
||||
ctx.serverProcess = execa(nuxiCLI, ['_dev'], {
|
||||
cwd: ctx.nuxt!.options.rootDir,
|
||||
stdio: 'inherit',
|
||||
env: {
|
||||
...process.env,
|
||||
_PORT: String(port), // Used by internal _dev command
|
||||
PORT: String(port),
|
||||
HOST: host,
|
||||
NODE_ENV: 'development'
|
||||
}
|
||||
})
|
||||
await waitForPort(port, { retries: 32, host }).catch(() => {})
|
||||
let lastError
|
||||
for (let i = 0; i < 150; i++) {
|
||||
await new Promise(resolve => setTimeout(resolve, 100))
|
||||
try {
|
||||
const res = await $fetch(ctx.nuxt!.options.app.baseURL)
|
||||
if (!res.includes('__NUXT_LOADING__')) {
|
||||
return
|
||||
}
|
||||
} catch (e) {
|
||||
lastError = e
|
||||
}
|
||||
}
|
||||
ctx.serverProcess.kill()
|
||||
throw lastError || new Error('Timeout waiting for dev server!')
|
||||
} else {
|
||||
ctx.serverProcess = execa('node', [
|
||||
resolve(ctx.nuxt!.options.nitro.output!.dir!, 'server/index.mjs')
|
||||
], {
|
||||
stdio: 'inherit',
|
||||
env: {
|
||||
...process.env,
|
||||
PORT: String(port),
|
||||
HOST: host,
|
||||
NODE_ENV: 'test'
|
||||
}
|
||||
})
|
||||
await waitForPort(port, { retries: 20, host })
|
||||
}
|
||||
}
|
||||
|
||||
export async function stopServer () {
|
||||
const ctx = useTestContext()
|
||||
if (ctx.serverProcess) {
|
||||
await ctx.serverProcess.kill()
|
||||
}
|
||||
}
|
||||
|
||||
export function fetch (path: string, options?: any) {
|
||||
return _fetch(url(path), options)
|
||||
}
|
||||
|
||||
export function $fetch (path: string, options?: FetchOptions) {
|
||||
return _$fetch(url(path), options)
|
||||
}
|
||||
|
||||
export function url (path: string) {
|
||||
const ctx = useTestContext()
|
||||
if (!ctx.url) {
|
||||
throw new Error('url is not available (is server option enabled?)')
|
||||
}
|
||||
if (path.startsWith(ctx.url)) {
|
||||
return path
|
||||
}
|
||||
return ctx.url + path
|
||||
}
|
@ -1,76 +0,0 @@
|
||||
import { createTestContext, setTestContext } from '../context'
|
||||
import { buildFixture, loadFixture } from '../nuxt'
|
||||
import { startServer, stopServer } from '../server'
|
||||
import { createBrowser } from '../browser'
|
||||
import type { TestHooks, TestOptions } from '../types'
|
||||
import setupJest from './jest'
|
||||
import setupVitest from './vitest'
|
||||
|
||||
export const setupMaps = {
|
||||
jest: setupJest,
|
||||
vitest: setupVitest
|
||||
}
|
||||
|
||||
export function createTest (options: Partial<TestOptions>): TestHooks {
|
||||
const ctx = createTestContext(options)
|
||||
|
||||
const beforeEach = () => {
|
||||
setTestContext(ctx)
|
||||
}
|
||||
|
||||
const afterEach = () => {
|
||||
setTestContext(undefined)
|
||||
}
|
||||
|
||||
const afterAll = async () => {
|
||||
if (ctx.serverProcess) {
|
||||
setTestContext(ctx)
|
||||
await stopServer()
|
||||
setTestContext(undefined)
|
||||
}
|
||||
if (ctx.nuxt && ctx.nuxt.options.dev) {
|
||||
await ctx.nuxt.close()
|
||||
}
|
||||
if (ctx.browser) {
|
||||
await ctx.browser.close()
|
||||
}
|
||||
}
|
||||
|
||||
const setup = async () => {
|
||||
if (ctx.options.fixture) {
|
||||
await loadFixture()
|
||||
}
|
||||
|
||||
if (ctx.options.build) {
|
||||
await buildFixture()
|
||||
}
|
||||
|
||||
if (ctx.options.server) {
|
||||
await startServer()
|
||||
}
|
||||
|
||||
if (ctx.options.waitFor) {
|
||||
await (new Promise(resolve => setTimeout(resolve, ctx.options.waitFor)))
|
||||
}
|
||||
|
||||
if (ctx.options.browser) {
|
||||
await createBrowser()
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
beforeEach,
|
||||
afterEach,
|
||||
afterAll,
|
||||
setup,
|
||||
ctx
|
||||
}
|
||||
}
|
||||
|
||||
export async function setup (options: Partial<TestOptions> = {}) {
|
||||
const hooks = createTest(options)
|
||||
|
||||
const setupFn = setupMaps[hooks.ctx.options.runner]
|
||||
|
||||
await setupFn(hooks)
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
import type { TestHooks } from '../types'
|
||||
|
||||
export default async function setupJest (hooks: TestHooks) {
|
||||
const { jest, test, beforeEach, afterAll, afterEach } = await import('@jest/globals')
|
||||
|
||||
hooks.ctx.mockFn = jest.fn
|
||||
|
||||
test('setup', hooks.setup, hooks.ctx.options.setupTimeout)
|
||||
beforeEach(hooks.beforeEach)
|
||||
afterEach(hooks.afterEach)
|
||||
afterAll(hooks.afterAll)
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
import type { TestHooks } from '../types'
|
||||
|
||||
export default async function setupVitest (hooks: TestHooks) {
|
||||
const vitest = await import('vitest')
|
||||
|
||||
hooks.ctx.mockFn = vitest.vi.fn
|
||||
|
||||
vitest.beforeAll(hooks.setup, hooks.ctx.options.setupTimeout)
|
||||
vitest.beforeEach(hooks.beforeEach)
|
||||
vitest.afterEach(hooks.afterEach)
|
||||
vitest.afterAll(hooks.afterAll)
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
import type { Nuxt, NuxtConfig } from '@nuxt/schema'
|
||||
import type { ExecaChildProcess } from 'execa'
|
||||
import type { Browser, LaunchOptions } from 'playwright-core'
|
||||
|
||||
export type TestRunner = 'vitest' | 'jest'
|
||||
|
||||
export interface TestOptions {
|
||||
testDir: string
|
||||
fixture: string
|
||||
configFile: string
|
||||
rootDir: string
|
||||
buildDir: string
|
||||
nuxtConfig: NuxtConfig
|
||||
build: boolean
|
||||
dev: boolean
|
||||
setupTimeout: number
|
||||
waitFor: number
|
||||
browser: boolean
|
||||
runner: TestRunner
|
||||
logLevel: number
|
||||
browserOptions: {
|
||||
type: 'chromium' | 'firefox' | 'webkit'
|
||||
launch?: LaunchOptions
|
||||
}
|
||||
server: boolean
|
||||
port?: number
|
||||
}
|
||||
|
||||
export interface TestContext {
|
||||
options: TestOptions
|
||||
nuxt?: Nuxt
|
||||
browser?: Browser
|
||||
url?: string
|
||||
serverProcess?: ExecaChildProcess
|
||||
mockFn?: Function
|
||||
}
|
||||
|
||||
export interface TestHooks {
|
||||
beforeEach: () => void
|
||||
afterEach: () => void
|
||||
afterAll: () => void
|
||||
setup: () => void
|
||||
ctx: TestContext
|
||||
}
|
565
pnpm-lock.yaml
565
pnpm-lock.yaml
@ -7,7 +7,6 @@ settings:
|
||||
overrides:
|
||||
'@nuxt/kit': workspace:*
|
||||
'@nuxt/schema': workspace:*
|
||||
'@nuxt/test-utils': workspace:*
|
||||
'@nuxt/vite-builder': workspace:*
|
||||
'@nuxt/webpack-builder': workspace:*
|
||||
nuxt: workspace:*
|
||||
@ -20,8 +19,8 @@ importers:
|
||||
.:
|
||||
devDependencies:
|
||||
'@nuxt/test-utils':
|
||||
specifier: workspace:*
|
||||
version: link:packages/test-utils
|
||||
specifier: 3.8.1
|
||||
version: 3.8.1(playwright-core@1.39.0)(vitest@0.33.0)(vue@3.3.8)
|
||||
'@nuxt/webpack-builder':
|
||||
specifier: workspace:*
|
||||
version: link:packages/webpack
|
||||
@ -521,52 +520,6 @@ importers:
|
||||
specifier: 6.1.1
|
||||
version: 6.1.1(webpack@5.89.0)
|
||||
|
||||
packages/test-utils:
|
||||
dependencies:
|
||||
'@nuxt/kit':
|
||||
specifier: workspace:*
|
||||
version: link:../kit
|
||||
'@nuxt/schema':
|
||||
specifier: workspace:*
|
||||
version: link:../schema
|
||||
consola:
|
||||
specifier: ^3.2.3
|
||||
version: 3.2.3
|
||||
defu:
|
||||
specifier: ^6.1.3
|
||||
version: 6.1.3
|
||||
execa:
|
||||
specifier: ^8.0.1
|
||||
version: 8.0.1
|
||||
get-port-please:
|
||||
specifier: ^3.1.1
|
||||
version: 3.1.1
|
||||
ofetch:
|
||||
specifier: ^1.3.3
|
||||
version: 1.3.3
|
||||
pathe:
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1
|
||||
ufo:
|
||||
specifier: ^1.3.1
|
||||
version: 1.3.1
|
||||
vue:
|
||||
specifier: 3.3.8
|
||||
version: 3.3.8(typescript@5.2.2)
|
||||
devDependencies:
|
||||
'@jest/globals':
|
||||
specifier: 29.7.0
|
||||
version: 29.7.0
|
||||
playwright-core:
|
||||
specifier: 1.39.0
|
||||
version: 1.39.0
|
||||
unbuild:
|
||||
specifier: latest
|
||||
version: 2.0.0(typescript@5.2.2)
|
||||
vitest:
|
||||
specifier: 0.33.0
|
||||
version: 0.33.0(happy-dom@12.10.3)
|
||||
|
||||
packages/vite:
|
||||
dependencies:
|
||||
'@nuxt/kit':
|
||||
@ -1141,33 +1094,6 @@ packages:
|
||||
'@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.23.2)
|
||||
dev: false
|
||||
|
||||
/@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
@ -1195,15 +1121,7 @@ packages:
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
|
||||
/@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
dev: false
|
||||
|
||||
/@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==}
|
||||
@ -1214,70 +1132,6 @@ packages:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
|
||||
/@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
@ -1775,102 +1629,12 @@ packages:
|
||||
wrap-ansi: 8.1.0
|
||||
wrap-ansi-cjs: /wrap-ansi@7.0.0
|
||||
|
||||
/@istanbuljs/load-nyc-config@1.1.0:
|
||||
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
camelcase: 5.3.1
|
||||
find-up: 4.1.0
|
||||
get-package-type: 0.1.0
|
||||
js-yaml: 3.14.1
|
||||
resolve-from: 5.0.0
|
||||
dev: true
|
||||
|
||||
/@istanbuljs/schema@0.1.3:
|
||||
resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/@jest/environment@29.7.0:
|
||||
resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@jest/fake-timers': 29.7.0
|
||||
'@jest/types': 29.6.3
|
||||
'@types/node': 20.8.10
|
||||
jest-mock: 29.7.0
|
||||
dev: true
|
||||
|
||||
/@jest/expect-utils@29.7.0:
|
||||
resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
jest-get-type: 29.6.3
|
||||
dev: true
|
||||
|
||||
/@jest/expect@29.7.0:
|
||||
resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
expect: 29.7.0
|
||||
jest-snapshot: 29.7.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/fake-timers@29.7.0:
|
||||
resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@jest/types': 29.6.3
|
||||
'@sinonjs/fake-timers': 10.3.0
|
||||
'@types/node': 20.8.10
|
||||
jest-message-util: 29.7.0
|
||||
jest-mock: 29.7.0
|
||||
jest-util: 29.7.0
|
||||
dev: true
|
||||
|
||||
/@jest/globals@29.7.0:
|
||||
resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@jest/environment': 29.7.0
|
||||
'@jest/expect': 29.7.0
|
||||
'@jest/types': 29.6.3
|
||||
jest-mock: 29.7.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/schemas@29.6.3:
|
||||
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@sinclair/typebox': 0.27.8
|
||||
|
||||
/@jest/transform@29.7.0:
|
||||
resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@jest/types': 29.6.3
|
||||
'@jridgewell/trace-mapping': 0.3.20
|
||||
babel-plugin-istanbul: 6.1.1
|
||||
chalk: 4.1.2
|
||||
convert-source-map: 2.0.0
|
||||
fast-json-stable-stringify: 2.1.0
|
||||
graceful-fs: 4.2.11
|
||||
jest-haste-map: 29.7.0
|
||||
jest-regex-util: 29.6.3
|
||||
jest-util: 29.7.0
|
||||
micromatch: 4.0.5
|
||||
pirates: 4.0.6
|
||||
slash: 3.0.0
|
||||
write-file-atomic: 4.0.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/types@29.6.3:
|
||||
resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
@ -1881,6 +1645,7 @@ packages:
|
||||
'@types/node': 20.8.10
|
||||
'@types/yargs': 17.0.28
|
||||
chalk: 4.1.2
|
||||
dev: false
|
||||
|
||||
/@jridgewell/gen-mapping@0.3.3:
|
||||
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
|
||||
@ -2184,6 +1949,36 @@ packages:
|
||||
rc9: 2.1.1
|
||||
std-env: 3.4.3
|
||||
|
||||
/@nuxt/test-utils@3.8.1(playwright-core@1.39.0)(vitest@0.33.0)(vue@3.3.8):
|
||||
resolution: {integrity: sha512-8ZQ+OZ7z5Sc5KG2aCvk0piheYSpGb2UQJMCWr8ORwEyZIw4awrkkwGzUY06e344E4StvJB8zxN122MEcFNOkow==}
|
||||
engines: {node: ^14.18.0 || >=16.10.0}
|
||||
peerDependencies:
|
||||
'@jest/globals': ^29.5.0
|
||||
playwright-core: ^1.34.3
|
||||
vitest: ^0.30.0 || ^0.31.0 || ^0.32.0 || ^0.33.0
|
||||
vue: 3.3.8
|
||||
peerDependenciesMeta:
|
||||
'@jest/globals':
|
||||
optional: true
|
||||
playwright-core:
|
||||
optional: true
|
||||
vitest:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@nuxt/kit': link:packages/kit
|
||||
'@nuxt/schema': link:packages/schema
|
||||
consola: 3.2.3
|
||||
defu: 6.1.3
|
||||
execa: 8.0.1
|
||||
get-port-please: 3.1.1
|
||||
ofetch: 1.3.3
|
||||
pathe: 1.1.1
|
||||
playwright-core: 1.39.0
|
||||
ufo: 1.3.1
|
||||
vitest: 0.33.0(happy-dom@12.10.3)
|
||||
vue: 3.3.8(typescript@5.2.2)
|
||||
dev: true
|
||||
|
||||
/@nuxt/ui-templates@1.3.1:
|
||||
resolution: {integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==}
|
||||
dev: false
|
||||
@ -2537,18 +2332,6 @@ packages:
|
||||
/@sinclair/typebox@0.27.8:
|
||||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||
|
||||
/@sinonjs/commons@3.0.0:
|
||||
resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==}
|
||||
dependencies:
|
||||
type-detect: 4.0.8
|
||||
dev: true
|
||||
|
||||
/@sinonjs/fake-timers@10.3.0:
|
||||
resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
|
||||
dependencies:
|
||||
'@sinonjs/commons': 3.0.0
|
||||
dev: true
|
||||
|
||||
/@tootallnate/once@2.0.0:
|
||||
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
|
||||
engines: {node: '>= 10'}
|
||||
@ -2620,12 +2403,6 @@ packages:
|
||||
'@types/node': 20.8.10
|
||||
dev: true
|
||||
|
||||
/@types/graceful-fs@4.1.8:
|
||||
resolution: {integrity: sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==}
|
||||
dependencies:
|
||||
'@types/node': 20.8.10
|
||||
dev: true
|
||||
|
||||
/@types/hash-sum@1.0.1:
|
||||
resolution: {integrity: sha512-5JLywbPgWZVgxhAV//qTU6LPurKfQeiyw20GKZMi9V7AjHnAP4t1eNCJ1mC2L4TAicuS71MVoFYVcEM+EiR4lg==}
|
||||
dev: true
|
||||
@ -2637,16 +2414,19 @@ packages:
|
||||
|
||||
/@types/istanbul-lib-coverage@2.0.5:
|
||||
resolution: {integrity: sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==}
|
||||
dev: false
|
||||
|
||||
/@types/istanbul-lib-report@3.0.2:
|
||||
resolution: {integrity: sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==}
|
||||
dependencies:
|
||||
'@types/istanbul-lib-coverage': 2.0.5
|
||||
dev: false
|
||||
|
||||
/@types/istanbul-reports@3.0.3:
|
||||
resolution: {integrity: sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==}
|
||||
dependencies:
|
||||
'@types/istanbul-lib-report': 3.0.2
|
||||
dev: false
|
||||
|
||||
/@types/json-schema@7.0.14:
|
||||
resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==}
|
||||
@ -2714,10 +2494,6 @@ packages:
|
||||
resolution: {integrity: sha512-Kdfm7Sk5VX8dFW7Vbp18+fmAatBewzBILa1raHYxrGEFXT0jNl9x3LWfuW7bTbjEKFNey9Dfkj/UzT6z/NvRlg==}
|
||||
dev: true
|
||||
|
||||
/@types/stack-utils@2.0.2:
|
||||
resolution: {integrity: sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==}
|
||||
dev: true
|
||||
|
||||
/@types/tapable@1.0.10:
|
||||
resolution: {integrity: sha512-q8F20SdXG5fdVJQ5yxsVlH+f+oekP42QeHv4s5KlrxTMT0eopXn7ol1rhxMcksf8ph7XNv811iVDE2hOpUvEPg==}
|
||||
dev: true
|
||||
@ -2781,11 +2557,13 @@ packages:
|
||||
|
||||
/@types/yargs-parser@21.0.1:
|
||||
resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==}
|
||||
dev: false
|
||||
|
||||
/@types/yargs@17.0.28:
|
||||
resolution: {integrity: sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==}
|
||||
dependencies:
|
||||
'@types/yargs-parser': 21.0.1
|
||||
dev: false
|
||||
|
||||
/@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.53.0)(typescript@5.2.2):
|
||||
resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==}
|
||||
@ -3577,12 +3355,6 @@ packages:
|
||||
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
|
||||
dev: false
|
||||
|
||||
/argparse@1.0.10:
|
||||
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
|
||||
dependencies:
|
||||
sprintf-js: 1.0.3
|
||||
dev: true
|
||||
|
||||
/argparse@2.0.1:
|
||||
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
||||
|
||||
@ -3727,39 +3499,6 @@ packages:
|
||||
/b4a@1.6.4:
|
||||
resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==}
|
||||
|
||||
/babel-plugin-istanbul@6.1.1:
|
||||
resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@babel/helper-plugin-utils': 7.22.5
|
||||
'@istanbuljs/load-nyc-config': 1.1.0
|
||||
'@istanbuljs/schema': 0.1.3
|
||||
istanbul-lib-instrument: 5.2.1
|
||||
test-exclude: 6.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2):
|
||||
resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2)
|
||||
dev: true
|
||||
|
||||
/babel-walk@3.0.0-canary-5:
|
||||
resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
@ -3831,12 +3570,6 @@ packages:
|
||||
node-releases: 2.0.13
|
||||
update-browserslist-db: 1.0.13(browserslist@4.22.1)
|
||||
|
||||
/bser@2.1.1:
|
||||
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
|
||||
dependencies:
|
||||
node-int64: 0.4.0
|
||||
dev: true
|
||||
|
||||
/buffer-crc32@0.2.13:
|
||||
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
|
||||
|
||||
@ -3925,11 +3658,6 @@ packages:
|
||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
/camelcase@5.3.1:
|
||||
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/camelcase@6.3.0:
|
||||
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
|
||||
engines: {node: '>=10'}
|
||||
@ -4866,11 +4594,6 @@ packages:
|
||||
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
||||
engines: {node: '>=0.8.0'}
|
||||
|
||||
/escape-string-regexp@2.0.0:
|
||||
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/escape-string-regexp@4.0.0:
|
||||
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
|
||||
engines: {node: '>=10'}
|
||||
@ -5220,12 +4943,6 @@ packages:
|
||||
acorn-jsx: 5.3.2(acorn@8.11.2)
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
/esprima@4.0.1:
|
||||
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
|
||||
engines: {node: '>=4'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/esquery@1.5.0:
|
||||
resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
|
||||
engines: {node: '>=0.10'}
|
||||
@ -5308,17 +5025,6 @@ packages:
|
||||
signal-exit: 4.1.0
|
||||
strip-final-newline: 3.0.0
|
||||
|
||||
/expect@29.7.0:
|
||||
resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@jest/expect-utils': 29.7.0
|
||||
jest-get-type: 29.6.3
|
||||
jest-matcher-utils: 29.7.0
|
||||
jest-message-util: 29.7.0
|
||||
jest-util: 29.7.0
|
||||
dev: true
|
||||
|
||||
/exponential-backoff@3.1.1:
|
||||
resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==}
|
||||
dev: false
|
||||
@ -5369,12 +5075,6 @@ packages:
|
||||
dependencies:
|
||||
reusify: 1.0.4
|
||||
|
||||
/fb-watchman@2.0.2:
|
||||
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
|
||||
dependencies:
|
||||
bser: 2.1.1
|
||||
dev: true
|
||||
|
||||
/fflate@0.8.1:
|
||||
resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==}
|
||||
dev: true
|
||||
@ -5587,11 +5287,6 @@ packages:
|
||||
has-proto: 1.0.1
|
||||
has-symbols: 1.0.3
|
||||
|
||||
/get-package-type@0.1.0:
|
||||
resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
dev: true
|
||||
|
||||
/get-port-please@3.1.1:
|
||||
resolution: {integrity: sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==}
|
||||
|
||||
@ -6273,24 +5968,6 @@ packages:
|
||||
engines: {node: '>=16'}
|
||||
dev: false
|
||||
|
||||
/istanbul-lib-coverage@3.2.0:
|
||||
resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/istanbul-lib-instrument@5.2.1:
|
||||
resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/parser': 7.23.0
|
||||
'@istanbuljs/schema': 0.1.3
|
||||
istanbul-lib-coverage: 3.2.0
|
||||
semver: 6.3.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jackspeak@2.3.6:
|
||||
resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
|
||||
engines: {node: '>=14'}
|
||||
@ -6299,107 +5976,6 @@ packages:
|
||||
optionalDependencies:
|
||||
'@pkgjs/parseargs': 0.11.0
|
||||
|
||||
/jest-diff@29.7.0:
|
||||
resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
chalk: 4.1.2
|
||||
diff-sequences: 29.6.3
|
||||
jest-get-type: 29.6.3
|
||||
pretty-format: 29.7.0
|
||||
dev: true
|
||||
|
||||
/jest-get-type@29.6.3:
|
||||
resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dev: true
|
||||
|
||||
/jest-haste-map@29.7.0:
|
||||
resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@jest/types': 29.6.3
|
||||
'@types/graceful-fs': 4.1.8
|
||||
'@types/node': 20.8.10
|
||||
anymatch: 3.1.3
|
||||
fb-watchman: 2.0.2
|
||||
graceful-fs: 4.2.11
|
||||
jest-regex-util: 29.6.3
|
||||
jest-util: 29.7.0
|
||||
jest-worker: 29.7.0
|
||||
micromatch: 4.0.5
|
||||
walker: 1.0.8
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
dev: true
|
||||
|
||||
/jest-matcher-utils@29.7.0:
|
||||
resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
chalk: 4.1.2
|
||||
jest-diff: 29.7.0
|
||||
jest-get-type: 29.6.3
|
||||
pretty-format: 29.7.0
|
||||
dev: true
|
||||
|
||||
/jest-message-util@29.7.0:
|
||||
resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.22.13
|
||||
'@jest/types': 29.6.3
|
||||
'@types/stack-utils': 2.0.2
|
||||
chalk: 4.1.2
|
||||
graceful-fs: 4.2.11
|
||||
micromatch: 4.0.5
|
||||
pretty-format: 29.7.0
|
||||
slash: 3.0.0
|
||||
stack-utils: 2.0.6
|
||||
dev: true
|
||||
|
||||
/jest-mock@29.7.0:
|
||||
resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@jest/types': 29.6.3
|
||||
'@types/node': 20.8.10
|
||||
jest-util: 29.7.0
|
||||
dev: true
|
||||
|
||||
/jest-regex-util@29.6.3:
|
||||
resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dev: true
|
||||
|
||||
/jest-snapshot@29.7.0:
|
||||
resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@babel/core': 7.23.2
|
||||
'@babel/generator': 7.23.0
|
||||
'@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2)
|
||||
'@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2)
|
||||
'@babel/types': 7.23.0
|
||||
'@jest/expect-utils': 29.7.0
|
||||
'@jest/transform': 29.7.0
|
||||
'@jest/types': 29.6.3
|
||||
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2)
|
||||
chalk: 4.1.2
|
||||
expect: 29.7.0
|
||||
graceful-fs: 4.2.11
|
||||
jest-diff: 29.7.0
|
||||
jest-get-type: 29.6.3
|
||||
jest-matcher-utils: 29.7.0
|
||||
jest-message-util: 29.7.0
|
||||
jest-util: 29.7.0
|
||||
natural-compare: 1.4.0
|
||||
pretty-format: 29.7.0
|
||||
semver: 7.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-util@29.7.0:
|
||||
resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
@ -6410,6 +5986,7 @@ packages:
|
||||
ci-info: 3.9.0
|
||||
graceful-fs: 4.2.11
|
||||
picomatch: 2.3.1
|
||||
dev: false
|
||||
|
||||
/jest-worker@27.5.1:
|
||||
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
|
||||
@ -6427,6 +6004,7 @@ packages:
|
||||
jest-util: 29.7.0
|
||||
merge-stream: 2.0.0
|
||||
supports-color: 8.1.1
|
||||
dev: false
|
||||
|
||||
/jiti@1.21.0:
|
||||
resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
|
||||
@ -6451,14 +6029,6 @@ packages:
|
||||
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||
requiresBuild: true
|
||||
|
||||
/js-yaml@3.14.1:
|
||||
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
argparse: 1.0.10
|
||||
esprima: 4.0.1
|
||||
dev: true
|
||||
|
||||
/js-yaml@4.1.0:
|
||||
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
||||
hasBin: true
|
||||
@ -6820,12 +6390,6 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/makeerror@1.0.12:
|
||||
resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
|
||||
dependencies:
|
||||
tmpl: 1.0.5
|
||||
dev: true
|
||||
|
||||
/markdown-it@13.0.1:
|
||||
resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==}
|
||||
hasBin: true
|
||||
@ -7287,10 +6851,6 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/node-int64@0.4.0:
|
||||
resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
|
||||
dev: true
|
||||
|
||||
/node-releases@2.0.13:
|
||||
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
|
||||
|
||||
@ -7771,11 +7331,6 @@ packages:
|
||||
engines: {node: '>=14.16'}
|
||||
dev: false
|
||||
|
||||
/pirates@4.0.6:
|
||||
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
|
||||
engines: {node: '>= 6'}
|
||||
dev: true
|
||||
|
||||
/pkg-types@1.0.3:
|
||||
resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
|
||||
dependencies:
|
||||
@ -8909,10 +8464,6 @@ packages:
|
||||
/spdx-license-ids@3.0.16:
|
||||
resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
|
||||
|
||||
/sprintf-js@1.0.3:
|
||||
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
|
||||
dev: true
|
||||
|
||||
/ssri@10.0.5:
|
||||
resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==}
|
||||
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
|
||||
@ -8920,13 +8471,6 @@ packages:
|
||||
minipass: 7.0.4
|
||||
dev: false
|
||||
|
||||
/stack-utils@2.0.6:
|
||||
resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
escape-string-regexp: 2.0.0
|
||||
dev: true
|
||||
|
||||
/stackback@0.0.2:
|
||||
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
|
||||
dev: true
|
||||
@ -9156,15 +8700,6 @@ packages:
|
||||
commander: 2.20.3
|
||||
source-map-support: 0.5.21
|
||||
|
||||
/test-exclude@6.0.0:
|
||||
resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@istanbuljs/schema': 0.1.3
|
||||
glob: 7.2.3
|
||||
minimatch: 3.1.2
|
||||
dev: true
|
||||
|
||||
/text-table@0.2.0:
|
||||
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
|
||||
|
||||
@ -9207,10 +8742,6 @@ packages:
|
||||
resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
/tmpl@1.0.5:
|
||||
resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
|
||||
dev: true
|
||||
|
||||
/to-fast-properties@2.0.0:
|
||||
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
|
||||
engines: {node: '>=4'}
|
||||
@ -10057,12 +9588,6 @@ packages:
|
||||
'@vue/shared': 3.3.8
|
||||
typescript: 5.2.2
|
||||
|
||||
/walker@1.0.8:
|
||||
resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
|
||||
dependencies:
|
||||
makeerror: 1.0.12
|
||||
dev: true
|
||||
|
||||
/watchpack@2.4.0:
|
||||
resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
@ -10321,14 +9846,6 @@ packages:
|
||||
/wrappy@1.0.2:
|
||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||
|
||||
/write-file-atomic@4.0.2:
|
||||
resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
dependencies:
|
||||
imurmurhash: 0.1.4
|
||||
signal-exit: 3.0.7
|
||||
dev: true
|
||||
|
||||
/ws@7.5.9:
|
||||
resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==}
|
||||
engines: {node: '>=8.3.0'}
|
||||
|
@ -23,6 +23,9 @@ for p in packages/* ; do
|
||||
if [[ $p == "packages/nuxi" ]] ; then
|
||||
continue
|
||||
fi
|
||||
if [[ $p == "packages/test-utils" ]] ; then
|
||||
continue
|
||||
fi
|
||||
pushd $p
|
||||
echo "Publishing $p"
|
||||
cp ../../LICENSE .
|
||||
|
@ -13,6 +13,9 @@ for PKG in packages/* ; do
|
||||
if [[ $PKG == "packages/nuxi" ]] ; then
|
||||
continue
|
||||
fi
|
||||
if [[ $p == "packages/test-utils" ]] ; then
|
||||
continue
|
||||
fi
|
||||
pushd $PKG
|
||||
TAG="latest"
|
||||
if [ "$PKG" == "packages/nuxt" ]; then
|
||||
|
@ -13,6 +13,9 @@ for PKG in packages/* ; do
|
||||
if [[ $PKG == "packages/nuxi" ]] ; then
|
||||
continue
|
||||
fi
|
||||
if [[ $p == "packages/test-utils" ]] ; then
|
||||
continue
|
||||
fi
|
||||
pushd $PKG
|
||||
TAG="latest"
|
||||
echo "⚡ Publishing $PKG with tag $TAG"
|
||||
|
@ -5,6 +5,7 @@ import { joinURL, withQuery } from 'ufo'
|
||||
import { isCI, isWindows } from 'std-env'
|
||||
import { join, normalize } from 'pathe'
|
||||
import { $fetch, createPage, fetch, isDev, setup, startServer, url, useTestContext } from '@nuxt/test-utils'
|
||||
// @ts-expect-error subpath export needs to be fixed upstream
|
||||
import { $fetchComponent } from '@nuxt/test-utils/experimental'
|
||||
|
||||
import type { NuxtIslandResponse } from '../packages/nuxt/src/core/runtime/nitro/renderer'
|
||||
|
@ -7,9 +7,7 @@ export default defineConfig({
|
||||
resolve: {
|
||||
alias: {
|
||||
'#build/nuxt.config.mjs': resolve('./test/mocks/nuxt-config'),
|
||||
'#app': resolve('./packages/nuxt/dist/app/index'),
|
||||
'@nuxt/test-utils/experimental': resolve('./packages/test-utils/src/experimental.ts'),
|
||||
'@nuxt/test-utils': resolve('./packages/test-utils/src/index.ts')
|
||||
'#app': resolve('./packages/nuxt/dist/app/index')
|
||||
}
|
||||
},
|
||||
define: {
|
||||
|
Loading…
Reference in New Issue
Block a user