1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-11-08 23:25:51 +01:00

chore: migrate config package to vitest (#4760)

* chore: migrate config package to vitest

* Update pnpm-lock.yaml

* improve win32 test

* Create moody-mugs-pay.md
This commit is contained in:
Juan Picado 2024-08-03 09:52:18 +02:00 committed by GitHub
parent 8ef7a285e5
commit 8c10a3ec31
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
18 changed files with 408 additions and 326 deletions

@ -0,0 +1,5 @@
---
'@verdaccio/config': patch
---
chore: improve debug code and refactor code

@ -88,7 +88,7 @@
"@verdaccio/eslint-config": "workspace:*", "@verdaccio/eslint-config": "workspace:*",
"@verdaccio/types": "workspace:*", "@verdaccio/types": "workspace:*",
"@verdaccio/ui-theme": "workspace:*", "@verdaccio/ui-theme": "workspace:*",
"@vitest/coverage-v8": "0.34.6", "@vitest/coverage-v8": "2.0.5",
"aria-query": "5.1.3", "aria-query": "5.1.3",
"babel-core": "7.0.0-bridge.0", "babel-core": "7.0.0-bridge.0",
"babel-jest": "29.7.0", "babel-jest": "29.7.0",
@ -128,7 +128,7 @@
"verdaccio-auth-memory": "workspace:*", "verdaccio-auth-memory": "workspace:*",
"verdaccio-htpasswd": "workspace:*", "verdaccio-htpasswd": "workspace:*",
"verdaccio-memory": "workspace:*", "verdaccio-memory": "workspace:*",
"vitest": "1.6.0" "vitest": "2.0.4"
}, },
"scripts": { "scripts": {
"prepare": "husky install", "prepare": "husky install",

@ -26,11 +26,11 @@
"verdaccio" "verdaccio"
], ],
"engines": { "engines": {
"node": ">=12" "node": ">=14"
}, },
"scripts": { "scripts": {
"clean": "rimraf ./build", "clean": "rimraf ./build",
"test": "jest", "test": "vitest run",
"type-check": "tsc --noEmit -p tsconfig.build.json", "type-check": "tsc --noEmit -p tsconfig.build.json",
"build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
"build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps",

@ -1,16 +1,13 @@
import buildDebug from 'debug'; import buildDebug from 'debug';
import fs from 'fs'; import fs from 'fs';
import _ from 'lodash'; import _ from 'lodash';
import os from 'os';
import path from 'path'; import path from 'path';
import { CHARACTER_ENCODING } from '@verdaccio/core';
import { fileExists, folderExists } from './config-utils'; import { fileExists, folderExists } from './config-utils';
const CONFIG_FILE = 'config.yaml'; const CONFIG_FILE = 'config.yaml';
const XDG = 'xdg'; const XDG = 'xdg';
const WIN = 'win';
const WIN32 = 'win32';
// eslint-disable-next-line // eslint-disable-next-line
const pkgJSON = { const pkgJSON = {
name: 'verdaccio', name: 'verdaccio',
@ -18,23 +15,27 @@ const pkgJSON = {
export type SetupDirectory = { export type SetupDirectory = {
path: string; path: string;
type: string; type: 'xdg' | 'win' | 'win32' | 'def' | 'old';
}; };
const debug = buildDebug('verdaccio:config'); const debug = buildDebug('verdaccio:config:config-path');
/** /**
* Find and get the first config file that match. * Find and get the first config file that match.
* @return {String} the config file path * @return {String} the config file path
*/ */
function findConfigFile(configPath?: string): string { function findConfigFile(configPath?: string): string {
debug('searching for config file %o', configPath);
if (typeof configPath !== 'undefined') { if (typeof configPath !== 'undefined') {
return path.resolve(configPath); const configLocation = path.resolve(configPath);
debug('custom location %s', configLocation);
return configLocation;
} }
const configPaths: SetupDirectory[] = getConfigPaths(); const configPaths: SetupDirectory[] = getConfigPaths();
debug('%o posible locations found', configPaths.length); debug('%o posible locations found', configPaths.length);
if (_.isEmpty(configPaths)) { if (configPaths.length === 0) {
debug('no configuration files can be processed');
// this should never happens // this should never happens
throw new Error('no configuration files can be processed'); throw new Error('no configuration files can be processed');
} }
@ -45,12 +46,12 @@ function findConfigFile(configPath?: string): string {
); );
if (typeof primaryConf !== 'undefined') { if (typeof primaryConf !== 'undefined') {
debug('previous location exist already %s', primaryConf?.path); debug('at least one primary location detected at %s', primaryConf?.path);
return primaryConf.path; return primaryConf.path;
} }
debug('no previous location found, creating a new one');
// @ts-ignore debug('generating the first match path location %s', configPaths[0].path);
return createConfigFile(_.head(configPaths)).path; return createConfigFile(configPaths[0]).path;
} }
function createConfigFile(configLocation: SetupDirectory): SetupDirectory { function createConfigFile(configLocation: SetupDirectory): SetupDirectory {
@ -63,25 +64,37 @@ function createConfigFile(configLocation: SetupDirectory): SetupDirectory {
return configLocation; return configLocation;
} }
export function readDefaultConfig(): Buffer { export function readDefaultConfig(): string {
const pathDefaultConf: string = path.resolve(__dirname, 'conf/default.yaml'); const pathDefaultConf: string = path.resolve(__dirname, 'conf/default.yaml');
try { try {
debug('default configuration file %s', pathDefaultConf); debug('the path of default config used from %s', pathDefaultConf);
fs.accessSync(pathDefaultConf, fs.constants.R_OK); fs.accessSync(pathDefaultConf, fs.constants.R_OK);
debug('configuration file has enough permissions for reading');
} catch { } catch {
debug('configuration file does not have enough permissions for reading');
throw new TypeError('configuration file does not have enough permissions for reading'); throw new TypeError('configuration file does not have enough permissions for reading');
} }
// @ts-ignore
return fs.readFileSync(pathDefaultConf, CHARACTER_ENCODING.UTF8); return fs.readFileSync(pathDefaultConf, 'utf8');
} }
function createConfigFolder(configLocation): void { function createConfigFolder(configLocation): void {
fs.mkdirSync(path.dirname(configLocation.path), { recursive: true }); const folder = path.dirname(configLocation.path);
debug(`Creating default config file in %o`, configLocation?.path); debug(`creating default config file folder at %o`, folder);
fs.mkdirSync(folder, { recursive: true });
debug(`folder %o created`, folder);
} }
function updateStorageLinks(configLocation, defaultConfig): string { /**
* Update the storage links to the new location if it is necessary.
* @param configLocation
* @param defaultConfig
* @returns
*/
function updateStorageLinks(configLocation: SetupDirectory, defaultConfig: string): string {
debug('checking storage links for %s and type %s', configLocation.path, configLocation.type);
if (configLocation.type !== XDG) { if (configLocation.type !== XDG) {
debug(`skip storage override for %s`, configLocation.type);
return defaultConfig; return defaultConfig;
} }
@ -114,7 +127,11 @@ function getConfigPaths(): SetupDirectory[] {
return listPaths.reduce(function (acc, currentValue: SetupDirectory | void): SetupDirectory[] { return listPaths.reduce(function (acc, currentValue: SetupDirectory | void): SetupDirectory[] {
if (typeof currentValue !== 'undefined') { if (typeof currentValue !== 'undefined') {
debug('directory detected path %s for type %s', currentValue?.path, currentValue.type); debug(
'posible directory path generated %s for type %s',
currentValue?.path,
currentValue.type
);
acc.push(currentValue); acc.push(currentValue);
} }
return acc; return acc;
@ -123,11 +140,22 @@ function getConfigPaths(): SetupDirectory[] {
/** /**
* Get XDG_CONFIG_HOME or HOME location (usually unix) * Get XDG_CONFIG_HOME or HOME location (usually unix)
*
* The XDG_CONFIG_HOME environment variable is also part of the XDG Base Directory Specification,
* which aims to standardize the locations where applications store configuration files and other
* user-specific data on Unix-like operating systems.
*
*
*
* https://specifications.freedesktop.org/basedir-spec/latest/
*
*
* @returns * @returns
*/ */
const getXDGDirectory = (): SetupDirectory | void => { const getXDGDirectory = (): SetupDirectory | void => {
const xDGConfigPath = const xDGConfigPath =
process.env.XDG_CONFIG_HOME || (process.env.HOME && path.join(process.env.HOME, '.config')); process.env.XDG_CONFIG_HOME || (process.env.HOME && path.join(process.env.HOME, '.config'));
debug('XDGConfig folder path %s', xDGConfigPath);
if (xDGConfigPath && folderExists(xDGConfigPath)) { if (xDGConfigPath && folderExists(xDGConfigPath)) {
debug('XDGConfig folder path %s', xDGConfigPath); debug('XDGConfig folder path %s', xDGConfigPath);
return { return {
@ -143,11 +171,11 @@ const getXDGDirectory = (): SetupDirectory | void => {
* @returns * @returns
*/ */
const getWindowsDirectory = (): SetupDirectory | void => { const getWindowsDirectory = (): SetupDirectory | void => {
if (process.platform === WIN32 && process.env.APPDATA && folderExists(process.env.APPDATA)) { if (os.platform() === 'win32' && process.env.APPDATA && folderExists(process.env.APPDATA)) {
debug('is windows appdata: %s', process.env.APPDATA); debug('windows appdata folder path %s', process.env.APPDATA);
return { return {
path: path.resolve(path.join(process.env.APPDATA, pkgJSON.name, CONFIG_FILE)), path: path.resolve(path.join(process.env.APPDATA, pkgJSON.name, CONFIG_FILE)),
type: WIN, type: 'win',
}; };
} }
}; };
@ -158,8 +186,10 @@ const getWindowsDirectory = (): SetupDirectory | void => {
* @returns * @returns
*/ */
const getRelativeDefaultDirectory = (): SetupDirectory => { const getRelativeDefaultDirectory = (): SetupDirectory => {
const relativePath = path.resolve(path.join('.', pkgJSON.name, CONFIG_FILE));
debug('relative folder path %s', relativePath);
return { return {
path: path.resolve(path.join('.', pkgJSON.name, CONFIG_FILE)), path: relativePath,
type: 'def', type: 'def',
}; };
}; };
@ -169,8 +199,10 @@ const getRelativeDefaultDirectory = (): SetupDirectory => {
* @returns * @returns
*/ */
const getOldDirectory = (): SetupDirectory => { const getOldDirectory = (): SetupDirectory => {
const oldPath = path.resolve(path.join('.', CONFIG_FILE));
debug('old folder path %s', oldPath);
return { return {
path: path.resolve(path.join('.', CONFIG_FILE)), path: oldPath,
type: 'old', type: 'old',
}; };
}; };

@ -1,5 +1,8 @@
import buildDebug from 'debug';
import fs from 'fs'; import fs from 'fs';
const debug = buildDebug('verdaccio:config:config-utils');
/** /**
* Check whether the path already exist. * Check whether the path already exist.
* @param {String} path * @param {String} path
@ -7,9 +10,13 @@ import fs from 'fs';
*/ */
export function folderExists(path: string): boolean { export function folderExists(path: string): boolean {
try { try {
debug('check folder exist', path);
const stat = fs.statSync(path); const stat = fs.statSync(path);
return stat.isDirectory(); const isDirectory = stat.isDirectory();
debug('folder exist', isDirectory);
return isDirectory;
} catch (_: any) { } catch (_: any) {
debug('folder %s does not exist', path);
return false; return false;
} }
} }
@ -21,9 +28,13 @@ export function folderExists(path: string): boolean {
*/ */
export function fileExists(path: string): boolean { export function fileExists(path: string): boolean {
try { try {
debug('check file exist', path);
const stat = fs.statSync(path); const stat = fs.statSync(path);
return stat.isFile(); const isFile = stat.isFile();
debug('file exist', isFile);
return isFile;
} catch (_: any) { } catch (_: any) {
debug('file %s does not exist', path);
return false; return false;
} }
} }

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`Config builder should create a configuration file as yaml 1`] = ` exports[`Config builder > should create a configuration file as yaml 1`] = `
"uplinks: "uplinks:
upstream: upstream:
url: https://registry.verdaccio.org url: https://registry.verdaccio.org

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`parse fromJStoYAML basic conversion roundtrip 1`] = ` exports[`parse > fromJStoYAML > basic conversion roundtrip 1`] = `
"storage: ./storage_default_storage "storage: ./storage_default_storage
uplinks: uplinks:
npmjs: npmjs:

@ -1,3 +1,5 @@
import { describe, expect, test } from 'vitest';
import { getUserAgent } from '../src'; import { getUserAgent } from '../src';
describe('getUserAgent', () => { describe('getUserAgent', () => {

@ -1,3 +1,5 @@
import { describe, expect, test } from 'vitest';
import { ConfigBuilder } from '../src'; import { ConfigBuilder } from '../src';
describe('Config builder', () => { describe('Config builder', () => {

@ -1,5 +1,6 @@
import fs from 'fs'; import fs from 'fs';
import path from 'path'; import path from 'path';
import { describe, expect, test } from 'vitest';
import { fileUtils } from '@verdaccio/core'; import { fileUtils } from '@verdaccio/core';

@ -1,4 +1,5 @@
import path from 'path'; import path from 'path';
import { describe, expect, test } from 'vitest';
import { fileExists, folderExists } from '../src/config-utils'; import { fileExists, folderExists } from '../src/config-utils';

@ -1,106 +1,127 @@
import fs from 'fs';
import os from 'os'; import os from 'os';
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
import { findConfigFile } from '../src/config-path'; import { findConfigFile } from '../src/config-path';
const mockmkDir = jest.fn();
const mockaccessSync = jest.fn();
const mockwriteFile = jest.fn();
jest.mock('fs', () => {
const fsOri = jest.requireActual('fs');
return {
...fsOri,
statSync: (path) => ({
isDirectory: () => {
if (path.match(/fail/)) {
throw Error('file does not exist');
}
return true;
},
}),
accessSync: (a) => mockaccessSync(a),
mkdirSync: (a) => mockmkDir(a),
writeFileSync: (a) => mockwriteFile(a),
};
});
jest.mock('fs');
describe('config-path', () => { describe('config-path', () => {
let statSyncMock;
let mkdirSyncMock;
let writeFileSyncMock;
let platformMock;
let accessSyncMock;
let fakeStats = {
isDirectory: vi.fn().mockReturnValue(true),
};
beforeEach(() => { beforeEach(() => {
jest.clearAllMocks(); // Mock only statSync method
jest.resetAllMocks(); statSyncMock = vi.spyOn(fs, 'statSync');
mkdirSyncMock = vi.spyOn(fs, 'mkdirSync');
writeFileSyncMock = vi.spyOn(fs, 'writeFileSync');
accessSyncMock = vi.spyOn(fs, 'accessSync');
platformMock = vi.spyOn(os, 'platform');
platformMock.mockReturnValue('linux');
});
afterEach(() => {
// Restore the original implementation after each test
statSyncMock.mockRestore();
vi.unstubAllEnvs();
}); });
describe('findConfigFile', () => { describe('findConfigFile', () => {
if (os.platform() !== 'win32') { describe('using defiled location from arguments', () => {
describe('using defiled location from arguments', () => { test('with custom location', () => {
test('with custom location', () => { // mock
expect(findConfigFile('/home/user/custom/location/config.yaml')).toEqual( statSyncMock.mockReturnValue(fakeStats);
'/home/user/custom/location/config.yaml' mkdirSyncMock.mockReturnValue(true);
); writeFileSyncMock.mockReturnValue(undefined);
expect(mockwriteFile).not.toHaveBeenCalled(); expect(findConfigFile('/home/user/custom/location/config.yaml')).toEqual(
expect(mockmkDir).not.toHaveBeenCalled(); '/home/user/custom/location/config.yaml'
}); );
expect(writeFileSyncMock).not.toHaveBeenCalled();
expect(mkdirSyncMock).not.toHaveBeenCalled();
});
});
describe('whith env variables', () => {
test('the env XDG_CONFIG_HOME is defined and the directory exist but config file is missing', async () => {
// mock
statSyncMock.mockReturnValue(fakeStats);
mkdirSyncMock.mockReturnValue(true);
writeFileSyncMock.mockReturnValue(undefined);
// node env variable
vi.stubEnv('XDG_CONFIG_HOME', '/home/user');
expect(findConfigFile()).toEqual('/home/user/verdaccio/config.yaml');
expect(writeFileSyncMock).toHaveBeenCalledWith(
'/home/user/verdaccio/config.yaml',
expect.stringContaining('packages')
);
}); });
describe('whith env variables', () => { test('with HOME if directory exist but config file is missing', () => {
test('with XDG_CONFIG_HOME if directory exist but config file is missing', () => { // mock
process.env.XDG_CONFIG_HOME = '/home/user'; statSyncMock.mockReturnValue(fakeStats);
expect(findConfigFile()).toEqual('/home/user/verdaccio/config.yaml'); mkdirSyncMock.mockReturnValue(true);
expect(mockwriteFile).toHaveBeenCalledWith('/home/user/verdaccio/config.yaml'); writeFileSyncMock.mockReturnValue(undefined);
expect(mockmkDir).toHaveBeenCalledWith('/home/user/verdaccio'); vi.stubEnv('XDG_CONFIG_HOME', '');
}); vi.stubEnv('HOME', '/home/user');
expect(findConfigFile()).toEqual('/home/user/.config/verdaccio/config.yaml');
test('with HOME if directory exist but config file is missing', () => { expect(writeFileSyncMock).toHaveBeenCalledWith(
delete process.env.XDG_CONFIG_HOME; '/home/user/.config/verdaccio/config.yaml',
process.env.HOME = '/home/user'; expect.stringContaining('packages')
expect(findConfigFile()).toEqual('/home/user/.config/verdaccio/config.yaml'); );
expect(mockwriteFile).toHaveBeenCalledWith('/home/user/.config/verdaccio/config.yaml'); expect(mkdirSyncMock).toHaveBeenCalledWith(
expect(mockmkDir).toHaveBeenCalledWith('/home/user/.config/verdaccio'); '/home/user/.config/verdaccio',
}); expect.anything()
);
describe('error handling', () => {
test('XDG_CONFIG_HOME is not directory fallback to default', () => {
process.env.XDG_CONFIG_HOME = '/home/user/fail';
mockaccessSync.mockImplementation(() => {});
mockwriteFile.mockImplementation(() => {});
expect(findConfigFile()).toMatch('packages/config/verdaccio/config.yaml');
});
test('no permissions on read default config file', () => {
process.env.XDG_CONFIG_HOME = '/home/user';
mockaccessSync.mockImplementation(() => {
throw new Error('error on write file');
});
expect(function () {
findConfigFile();
}).toThrow(/configuration file does not have enough permissions for reading/);
});
});
}); });
describe('with no env variables', () => { describe('error handling', () => {
test('with relative location', () => { test('XDG_CONFIG_HOME is not directory fallback to default', () => {
mockaccessSync.mockImplementation(() => {}); // mock
delete process.env.XDG_CONFIG_HOME; statSyncMock.mockReturnValue({
delete process.env.HOME; isDirectory: vi.fn().mockReturnValue(false),
process.env.APPDATA = '/app/data/'; });
mkdirSyncMock.mockReturnValue(true);
writeFileSyncMock.mockReturnValue(undefined);
// node env variable
vi.stubEnv('XDG_CONFIG_HOME', '/home/user/fail');
expect(findConfigFile()).toMatch('packages/config/verdaccio/config.yaml'); expect(findConfigFile()).toMatch('packages/config/verdaccio/config.yaml');
expect(mockwriteFile).toHaveBeenCalled(); });
expect(mockmkDir).toHaveBeenCalled();
test('no permissions on read default config file', () => {
vi.stubEnv('XDG_CONFIG_HOME', '/home/user');
accessSyncMock.mockImplementation(() => {
throw new Error('error on write file');
});
expect(function () {
findConfigFile();
}).toThrow(/configuration file does not have enough permissions for reading/);
}); });
}); });
} else { });
test('with windows as directory exist but config file is missing', () => {
delete process.env.XDG_CONFIG_HOME; describe('with no env variables', () => {
delete process.env.HOME; test('with relative location', () => {
process.env.APPDATA = '/app/data/'; // mock
expect(findConfigFile()).toMatch('\\app\\data\\verdaccio\\config.yaml'); statSyncMock.mockReturnValue(fakeStats);
expect(mockwriteFile).toHaveBeenCalled(); mkdirSyncMock.mockReturnValue(true);
expect(mockmkDir).toHaveBeenCalled(); writeFileSyncMock.mockReturnValue(undefined);
accessSyncMock.mockImplementation(() => {});
platformMock.mockReturnValue('win32');
// delete process.env.XDG_CONFIG_HOME;
vi.stubEnv('XDG_CONFIG_HOME', '');
vi.stubEnv('HOME', '');
vi.stubEnv('APPDATA', '/app/data/');
expect(findConfigFile()).toMatch('/app/data/verdaccio/config.yaml');
expect(writeFileSyncMock).toHaveBeenCalled();
expect(mkdirSyncMock).toHaveBeenCalled();
}); });
} });
}); });
}); });

@ -1,5 +1,6 @@
import _ from 'lodash'; import _ from 'lodash';
import path from 'path'; import path from 'path';
import { describe, expect, test } from 'vitest';
import { import {
Config, Config,
@ -22,7 +23,7 @@ const resolveConf = (conf) => {
return path.join(__dirname, `../src/conf/${name}${ext.startsWith('.') ? ext : '.yaml'}`); return path.join(__dirname, `../src/conf/${name}${ext.startsWith('.') ? ext : '.yaml'}`);
}; };
const itif = (condition) => (condition ? it : it.skip); const itif = (condition) => (condition ? test : test.skip);
const checkDefaultUplink = (config) => { const checkDefaultUplink = (config) => {
expect(_.isObject(config.uplinks[DEFAULT_UPLINK])).toBeTruthy(); expect(_.isObject(config.uplinks[DEFAULT_UPLINK])).toBeTruthy();

@ -1,4 +1,5 @@
import _ from 'lodash'; import _ from 'lodash';
import { describe, expect, test } from 'vitest';
import { parseConfigFile } from '../src'; import { parseConfigFile } from '../src';
import { PACKAGE_ACCESS, normalisePackageAccess, normalizeUserList } from '../src/package-access'; import { PACKAGE_ACCESS, normalisePackageAccess, normalizeUserList } from '../src/package-access';

@ -1,3 +1,5 @@
import { expect, test } from 'vitest';
import { TOKEN_VALID_LENGTH, generateRandomSecretKey } from '../src/token'; import { TOKEN_VALID_LENGTH, generateRandomSecretKey } from '../src/token';
test('token test valid length', () => { test('token test valid length', () => {

@ -1,3 +1,5 @@
import { describe, expect, test } from 'vitest';
import { normalisePackageAccess, parseConfigFile } from '../src'; import { normalisePackageAccess, parseConfigFile } from '../src';
import { hasProxyTo, sanityCheckUplinksProps, uplinkSanityCheck } from '../src/uplinks'; import { hasProxyTo, sanityCheckUplinksProps, uplinkSanityCheck } from '../src/uplinks';
import { parseConfigurationFile } from './utils'; import { parseConfigurationFile } from './utils';

@ -1,3 +1,5 @@
import { describe, expect, test } from 'vitest';
import { ROLES, createAnonymousRemoteUser, createRemoteUser } from '../src'; import { ROLES, createAnonymousRemoteUser, createRemoteUser } from '../src';
describe('createRemoteUser and createAnonymousRemoteUser', () => { describe('createRemoteUser and createAnonymousRemoteUser', () => {

405
pnpm-lock.yaml generated

@ -228,8 +228,8 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:packages/plugins/ui-theme version: link:packages/plugins/ui-theme
'@vitest/coverage-v8': '@vitest/coverage-v8':
specifier: 0.34.6 specifier: 2.0.5
version: 0.34.6(vitest@1.6.0) version: 2.0.5(vitest@2.0.4)
aria-query: aria-query:
specifier: 5.1.3 specifier: 5.1.3
version: 5.1.3 version: 5.1.3
@ -348,8 +348,8 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:packages/plugins/memory version: link:packages/plugins/memory
vitest: vitest:
specifier: 1.6.0 specifier: 2.0.4
version: 1.6.0(@types/node@20.14.12) version: 2.0.4(@types/node@20.14.12)
e2e/cli/cli-commons: e2e/cli/cli-commons:
devDependencies: devDependencies:
@ -2512,12 +2512,12 @@ packages:
'@algolia/requester-common': 4.24.0 '@algolia/requester-common': 4.24.0
dev: false dev: false
/@ampproject/remapping@2.2.1: /@ampproject/remapping@2.3.0:
resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
dependencies: dependencies:
'@jridgewell/gen-mapping': 0.3.3 '@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.20 '@jridgewell/trace-mapping': 0.3.25
/@babel/cli@7.24.8(@babel/core@7.24.9): /@babel/cli@7.24.8(@babel/core@7.24.9):
resolution: {integrity: sha512-isdp+G6DpRyKc+3Gqxy2rjzgF7Zj9K0mzLNnxz+E/fgeag8qT3vVulX4gY9dGO1q0y+0lUv6V3a+uhUzMzrwXg==} resolution: {integrity: sha512-isdp+G6DpRyKc+3Gqxy2rjzgF7Zj9K0mzLNnxz+E/fgeag8qT3vVulX4gY9dGO1q0y+0lUv6V3a+uhUzMzrwXg==}
@ -2579,7 +2579,7 @@ packages:
'@babel/generator': 7.23.3 '@babel/generator': 7.23.3
'@babel/helper-module-transforms': 7.25.0(@babel/core@7.12.9) '@babel/helper-module-transforms': 7.25.0(@babel/core@7.12.9)
'@babel/helpers': 7.23.9 '@babel/helpers': 7.23.9
'@babel/parser': 7.23.9 '@babel/parser': 7.25.0
'@babel/template': 7.25.0 '@babel/template': 7.25.0
'@babel/traverse': 7.23.3 '@babel/traverse': 7.23.3
'@babel/types': 7.25.0 '@babel/types': 7.25.0
@ -2598,7 +2598,7 @@ packages:
resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@ampproject/remapping': 2.2.1 '@ampproject/remapping': 2.3.0
'@babel/code-frame': 7.24.7 '@babel/code-frame': 7.24.7
'@babel/generator': 7.24.10 '@babel/generator': 7.24.10
'@babel/helper-compilation-targets': 7.24.8 '@babel/helper-compilation-targets': 7.24.8
@ -2653,8 +2653,8 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/types': 7.23.9 '@babel/types': 7.23.9
'@jridgewell/gen-mapping': 0.3.3 '@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.20 '@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2 jsesc: 2.5.2
/@babel/generator@7.24.10: /@babel/generator@7.24.10:
@ -2871,7 +2871,7 @@ packages:
resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/types': 7.24.9 '@babel/types': 7.25.0
/@babel/helper-member-expression-to-functions@7.24.8: /@babel/helper-member-expression-to-functions@7.24.8:
resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==}
@ -4884,8 +4884,8 @@ packages:
'@babel/helper-function-name': 7.23.0 '@babel/helper-function-name': 7.23.0
'@babel/helper-hoist-variables': 7.22.5 '@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.9 '@babel/parser': 7.25.0
'@babel/types': 7.23.9 '@babel/types': 7.25.0
debug: 4.3.6(supports-color@5.5.0) debug: 4.3.6(supports-color@5.5.0)
globals: 11.12.0 globals: 11.12.0
transitivePeerDependencies: transitivePeerDependencies:
@ -7276,7 +7276,7 @@ packages:
resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jridgewell/trace-mapping': 0.3.20 '@jridgewell/trace-mapping': 0.3.25
callsites: 3.1.0 callsites: 3.1.0
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -7407,8 +7407,8 @@ packages:
/@jridgewell/source-map@0.3.5: /@jridgewell/source-map@0.3.5:
resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==}
dependencies: dependencies:
'@jridgewell/gen-mapping': 0.3.3 '@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.20 '@jridgewell/trace-mapping': 0.3.25
/@jridgewell/source-map@0.3.6: /@jridgewell/source-map@0.3.6:
resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
@ -9782,11 +9782,11 @@ packages:
dependencies: dependencies:
'@babel/core': 7.24.9 '@babel/core': 7.24.9
'@babel/generator': 7.23.6 '@babel/generator': 7.23.6
'@babel/parser': 7.23.9 '@babel/parser': 7.25.0
'@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.24.9) '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.24.9)
'@babel/preset-env': 7.25.0(@babel/core@7.24.9) '@babel/preset-env': 7.25.0(@babel/core@7.24.9)
'@babel/traverse': 7.23.9 '@babel/traverse': 7.23.9
'@babel/types': 7.23.9 '@babel/types': 7.25.0
'@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf': 0.0.2--canary.4566f4d.1
'@storybook/mdx1-csf': 0.0.1(@babel/core@7.24.9) '@storybook/mdx1-csf': 0.0.1(@babel/core@7.24.9)
core-js: 3.35.0 core-js: 3.35.0
@ -11609,64 +11609,77 @@ packages:
http-status-codes: 2.2.0 http-status-codes: 2.2.0
dev: true dev: true
/@vitest/coverage-v8@0.34.6(vitest@1.6.0): /@vitest/coverage-v8@2.0.5(vitest@2.0.4):
resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==} resolution: {integrity: sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==}
peerDependencies: peerDependencies:
vitest: '>=0.32.0 <1' vitest: 2.0.5
dependencies: dependencies:
'@ampproject/remapping': 2.2.1 '@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 0.2.3 '@bcoe/v8-coverage': 0.2.3
istanbul-lib-coverage: 3.2.0 debug: 4.3.6(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1 istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 4.0.1 istanbul-lib-source-maps: 5.0.6
istanbul-reports: 3.1.6 istanbul-reports: 3.1.7
magic-string: 0.30.4 magic-string: 0.30.10
picocolors: 1.0.0 magicast: 0.3.4
std-env: 3.4.3 std-env: 3.7.0
test-exclude: 6.0.0 test-exclude: 7.0.1
v8-to-istanbul: 9.1.3 tinyrainbow: 1.2.0
vitest: 1.6.0(@types/node@20.14.12) vitest: 2.0.4(@types/node@20.14.12)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
/@vitest/expect@1.6.0: /@vitest/expect@2.0.4:
resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} resolution: {integrity: sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==}
dependencies: dependencies:
'@vitest/spy': 1.6.0 '@vitest/spy': 2.0.4
'@vitest/utils': 1.6.0 '@vitest/utils': 2.0.4
chai: 4.3.10 chai: 5.1.1
tinyrainbow: 1.2.0
dev: true dev: true
/@vitest/runner@1.6.0: /@vitest/pretty-format@2.0.4:
resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} resolution: {integrity: sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==}
dependencies: dependencies:
'@vitest/utils': 1.6.0 tinyrainbow: 1.2.0
p-limit: 5.0.0
pathe: 1.1.1
dev: true dev: true
/@vitest/snapshot@1.6.0: /@vitest/pretty-format@2.0.5:
resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==}
dependencies: dependencies:
tinyrainbow: 1.2.0
dev: true
/@vitest/runner@2.0.4:
resolution: {integrity: sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==}
dependencies:
'@vitest/utils': 2.0.4
pathe: 1.1.2
dev: true
/@vitest/snapshot@2.0.4:
resolution: {integrity: sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==}
dependencies:
'@vitest/pretty-format': 2.0.4
magic-string: 0.30.10 magic-string: 0.30.10
pathe: 1.1.1 pathe: 1.1.2
pretty-format: 29.7.0
dev: true dev: true
/@vitest/spy@1.6.0: /@vitest/spy@2.0.4:
resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} resolution: {integrity: sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==}
dependencies: dependencies:
tinyspy: 2.2.1 tinyspy: 3.0.0
dev: true dev: true
/@vitest/utils@1.6.0: /@vitest/utils@2.0.4:
resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} resolution: {integrity: sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==}
dependencies: dependencies:
diff-sequences: 29.6.3 '@vitest/pretty-format': 2.0.4
estree-walker: 3.0.3 estree-walker: 3.0.3
loupe: 2.3.7 loupe: 3.1.1
pretty-format: 29.7.0 tinyrainbow: 1.2.0
dev: true dev: true
/@vue/compiler-core@3.4.34: /@vue/compiler-core@3.4.34:
@ -12183,12 +12196,6 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
hasBin: true hasBin: true
/acorn@8.12.0:
resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
/acorn@8.12.1: /acorn@8.12.1:
resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
@ -12727,8 +12734,9 @@ packages:
util: 0.10.3 util: 0.10.3
dev: true dev: true
/assertion-error@1.1.0: /assertion-error@2.0.1:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
dev: true dev: true
/assign-symbols@1.0.0: /assign-symbols@1.0.0:
@ -13836,17 +13844,15 @@ packages:
/ccount@2.0.1: /ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
/chai@4.3.10: /chai@5.1.1:
resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
engines: {node: '>=4'} engines: {node: '>=12'}
dependencies: dependencies:
assertion-error: 1.1.0 assertion-error: 2.0.1
check-error: 1.0.3 check-error: 2.1.1
deep-eql: 4.1.3 deep-eql: 5.0.2
get-func-name: 2.0.2 loupe: 3.1.1
loupe: 2.3.6 pathval: 2.0.0
pathval: 1.1.1
type-detect: 4.0.8
dev: true dev: true
/chalk@1.1.3: /chalk@1.1.3:
@ -13918,10 +13924,9 @@ packages:
/chardet@0.7.0: /chardet@0.7.0:
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
/check-error@1.0.3: /check-error@2.1.1:
resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
dependencies: engines: {node: '>= 16'}
get-func-name: 2.0.2
dev: true dev: true
/check-more-types@2.24.0: /check-more-types@2.24.0:
@ -14401,10 +14406,6 @@ packages:
yargs: 17.7.2 yargs: 17.7.2
dev: true dev: true
/confbox@0.1.7:
resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
dev: true
/configstore@5.0.1: /configstore@5.0.1:
resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -15798,11 +15799,9 @@ packages:
babel-plugin-macros: babel-plugin-macros:
optional: true optional: true
/deep-eql@4.1.3: /deep-eql@5.0.2:
resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'} engines: {node: '>=6'}
dependencies:
type-detect: 4.0.8
dev: true dev: true
/deep-equal@1.1.1: /deep-equal@1.1.1:
@ -18749,6 +18748,18 @@ packages:
minipass: 7.0.4 minipass: 7.0.4
path-scurry: 1.10.1 path-scurry: 1.10.1
/glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
dependencies:
foreground-child: 3.1.1
jackspeak: 3.4.3
minimatch: 9.0.5
minipass: 7.1.2
package-json-from-dist: 1.0.0
path-scurry: 1.11.1
dev: true
/glob@7.2.3: /glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported deprecated: Glob versions prior to v9 are no longer supported
@ -20460,6 +20471,10 @@ packages:
resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
engines: {node: '>=8'} engines: {node: '>=8'}
/istanbul-lib-coverage@3.2.2:
resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
engines: {node: '>=8'}
/istanbul-lib-instrument@5.2.1: /istanbul-lib-instrument@5.2.1:
resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -20488,7 +20503,7 @@ packages:
resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
engines: {node: '>=10'} engines: {node: '>=10'}
dependencies: dependencies:
istanbul-lib-coverage: 3.2.0 istanbul-lib-coverage: 3.2.2
make-dir: 4.0.0 make-dir: 4.0.0
supports-color: 7.2.0 supports-color: 7.2.0
@ -20502,6 +20517,17 @@ packages:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
/istanbul-lib-source-maps@5.0.6:
resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==}
engines: {node: '>=10'}
dependencies:
'@jridgewell/trace-mapping': 0.3.25
debug: 4.3.6(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
transitivePeerDependencies:
- supports-color
dev: true
/istanbul-reports@3.1.6: /istanbul-reports@3.1.6:
resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -20509,6 +20535,14 @@ packages:
html-escaper: 2.0.2 html-escaper: 2.0.2
istanbul-lib-report: 3.0.1 istanbul-lib-report: 3.0.1
/istanbul-reports@3.1.7:
resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
engines: {node: '>=8'}
dependencies:
html-escaper: 2.0.2
istanbul-lib-report: 3.0.1
dev: true
/iterate-iterator@1.0.2: /iterate-iterator@1.0.2:
resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==} resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==}
dev: true dev: true
@ -20548,6 +20582,14 @@ packages:
optionalDependencies: optionalDependencies:
'@pkgjs/parseargs': 0.11.0 '@pkgjs/parseargs': 0.11.0
/jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
dev: true
/jake@10.9.1: /jake@10.9.1:
resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -21114,10 +21156,6 @@ packages:
/js-tokens@4.0.0: /js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
/js-tokens@9.0.0:
resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
dev: true
/js-yaml@3.14.1: /js-yaml@3.14.1:
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
hasBin: true hasBin: true
@ -21664,14 +21702,6 @@ packages:
resolution: {integrity: sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==} resolution: {integrity: sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==}
dev: false dev: false
/local-pkg@0.5.0:
resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
engines: {node: '>=14'}
dependencies:
mlly: 1.7.1
pkg-types: 1.0.3
dev: true
/localstorage-memory@1.0.3: /localstorage-memory@1.0.3:
resolution: {integrity: sha512-t9P8WB6DcVttbw/W4PIE8HOqum8Qlvx5SjR6oInwR9Uia0EEmyUeBh7S+weKByW+l/f45Bj4L/dgZikGFDM6ng==} resolution: {integrity: sha512-t9P8WB6DcVttbw/W4PIE8HOqum8Qlvx5SjR6oInwR9Uia0EEmyUeBh7S+weKByW+l/f45Bj4L/dgZikGFDM6ng==}
@ -21813,15 +21843,8 @@ packages:
signal-exit: 3.0.7 signal-exit: 3.0.7
dev: true dev: true
/loupe@2.3.6: /loupe@3.1.1:
resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==}
deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5
dependencies:
get-func-name: 2.0.2
dev: true
/loupe@2.3.7:
resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
dependencies: dependencies:
get-func-name: 2.0.2 get-func-name: 2.0.2
dev: true dev: true
@ -21854,6 +21877,10 @@ packages:
resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==}
engines: {node: 14 || >=16.14} engines: {node: 14 || >=16.14}
/lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
dev: true
/lru-cache@4.1.5: /lru-cache@4.1.5:
resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
dependencies: dependencies:
@ -21890,11 +21917,12 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/sourcemap-codec': 1.4.15
dev: true dev: true
/magic-string@0.30.4: /magicast@0.3.4:
resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==}
engines: {node: '>=12'}
dependencies: dependencies:
'@jridgewell/sourcemap-codec': 1.4.15 '@babel/parser': 7.25.0
'@babel/types': 7.25.0
source-map-js: 1.2.0
dev: true dev: true
/make-dir@2.1.0: /make-dir@2.1.0:
@ -22777,6 +22805,11 @@ packages:
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
/minipass@7.1.2:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
dev: true
/minizlib@2.1.2: /minizlib@2.1.2:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
@ -22826,15 +22859,6 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
hasBin: true hasBin: true
/mlly@1.7.1:
resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==}
dependencies:
acorn: 8.12.0
pathe: 1.1.2
pkg-types: 1.1.1
ufo: 1.5.3
dev: true
/mockdate@3.0.5: /mockdate@3.0.5:
resolution: {integrity: sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==} resolution: {integrity: sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==}
dev: true dev: true
@ -24000,13 +24024,6 @@ packages:
yocto-queue: 1.1.1 yocto-queue: 1.1.1
dev: true dev: true
/p-limit@5.0.0:
resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
engines: {node: '>=18'}
dependencies:
yocto-queue: 1.0.0
dev: true
/p-locate@3.0.0: /p-locate@3.0.0:
resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -24088,6 +24105,10 @@ packages:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
/package-json-from-dist@1.0.0:
resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
dev: true
/package-json@6.5.0: /package-json@6.5.0:
resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -24344,6 +24365,14 @@ packages:
lru-cache: 10.1.0 lru-cache: 10.1.0
minipass: 7.0.4 minipass: 7.0.4
/path-scurry@1.11.1:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
dependencies:
lru-cache: 10.4.3
minipass: 7.1.2
dev: true
/path-to-regexp@0.1.7: /path-to-regexp@0.1.7:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
@ -24381,16 +24410,13 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'} engines: {node: '>=8'}
/pathe@1.1.1:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
dev: true
/pathe@1.1.2: /pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
dev: true dev: true
/pathval@1.1.1: /pathval@2.0.0:
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
engines: {node: '>= 14.16'}
dev: true dev: true
/pbkdf2@3.1.2: /pbkdf2@3.1.2:
@ -24545,22 +24571,6 @@ packages:
find-up: 6.3.0 find-up: 6.3.0
dev: true dev: true
/pkg-types@1.0.3:
resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
dependencies:
jsonc-parser: 3.2.0
mlly: 1.7.1
pathe: 1.1.1
dev: true
/pkg-types@1.1.1:
resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==}
dependencies:
confbox: 0.1.7
mlly: 1.7.1
pathe: 1.1.2
dev: true
/pkg-up@3.1.0: /pkg-up@3.1.0:
resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -25651,15 +25661,6 @@ packages:
picocolors: 1.0.0 picocolors: 1.0.0
source-map-js: 1.0.2 source-map-js: 1.0.2
/postcss@8.4.38:
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.2.0
dev: true
/postcss@8.4.40: /postcss@8.4.40:
resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
@ -28694,12 +28695,6 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'} engines: {node: '>=8'}
/strip-literal@2.1.0:
resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==}
dependencies:
js-tokens: 9.0.0
dev: true
/style-loader@1.3.0(webpack@4.47.0): /style-loader@1.3.0(webpack@4.47.0):
resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==} resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==}
engines: {node: '>= 8.9.0'} engines: {node: '>= 8.9.0'}
@ -29284,6 +29279,15 @@ packages:
glob: 7.2.3 glob: 7.2.3
minimatch: 3.1.2 minimatch: 3.1.2
/test-exclude@7.0.1:
resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
engines: {node: '>=18'}
dependencies:
'@istanbuljs/schema': 0.1.3
glob: 10.4.5
minimatch: 9.0.5
dev: true
/text-table@0.2.0: /text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
@ -29334,13 +29338,18 @@ packages:
resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==}
dev: true dev: true
/tinypool@0.8.4: /tinypool@1.0.0:
resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==}
engines: {node: ^18.0.0 || >=20.0.0}
dev: true
/tinyrainbow@1.2.0:
resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dev: true dev: true
/tinyspy@2.2.1: /tinyspy@3.0.0:
resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dev: true dev: true
@ -29866,10 +29875,6 @@ packages:
/ua-parser-js@0.7.35: /ua-parser-js@0.7.35:
resolution: {integrity: sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==} resolution: {integrity: sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==}
/ufo@1.5.3:
resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
dev: true
/uglify-js@3.19.0: /uglify-js@3.19.0:
resolution: {integrity: sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==} resolution: {integrity: sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==}
engines: {node: '>=0.8.0'} engines: {node: '>=0.8.0'}
@ -30461,7 +30466,7 @@ packages:
resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==}
engines: {node: '>=10.12.0'} engines: {node: '>=10.12.0'}
dependencies: dependencies:
'@jridgewell/trace-mapping': 0.3.20 '@jridgewell/trace-mapping': 0.3.25
'@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-lib-coverage': 2.0.4
convert-source-map: 2.0.0 convert-source-map: 2.0.0
@ -30558,15 +30563,15 @@ packages:
remove-trailing-separator: 1.1.0 remove-trailing-separator: 1.1.0
replace-ext: 1.0.1 replace-ext: 1.0.1
/vite-node@1.6.0(@types/node@20.14.12): /vite-node@2.0.4(@types/node@20.14.12):
resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} resolution: {integrity: sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true hasBin: true
dependencies: dependencies:
cac: 6.7.14 cac: 6.7.14
debug: 4.3.6(supports-color@5.5.0) debug: 4.3.6(supports-color@5.5.0)
pathe: 1.1.1 pathe: 1.1.2
picocolors: 1.0.0 tinyrainbow: 1.2.0
vite: 5.3.1(@types/node@20.14.12) vite: 5.3.1(@types/node@20.14.12)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
@ -30609,21 +30614,21 @@ packages:
dependencies: dependencies:
'@types/node': 20.14.12 '@types/node': 20.14.12
esbuild: 0.21.5 esbuild: 0.21.5
postcss: 8.4.38 postcss: 8.4.40
rollup: 4.18.0 rollup: 4.18.0
optionalDependencies: optionalDependencies:
fsevents: 2.3.3 fsevents: 2.3.3
dev: true dev: true
/vitest@1.6.0(@types/node@20.14.12): /vitest@2.0.4(@types/node@20.14.12):
resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} resolution: {integrity: sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@edge-runtime/vm': '*' '@edge-runtime/vm': '*'
'@types/node': ^18.0.0 || >=20.0.0 '@types/node': ^18.0.0 || >=20.0.0
'@vitest/browser': 1.6.0 '@vitest/browser': 2.0.4
'@vitest/ui': 1.6.0 '@vitest/ui': 2.0.4
happy-dom: '*' happy-dom: '*'
jsdom: '*' jsdom: '*'
peerDependenciesMeta: peerDependenciesMeta:
@ -30640,27 +30645,26 @@ packages:
jsdom: jsdom:
optional: true optional: true
dependencies: dependencies:
'@ampproject/remapping': 2.3.0
'@types/node': 20.14.12 '@types/node': 20.14.12
'@vitest/expect': 1.6.0 '@vitest/expect': 2.0.4
'@vitest/runner': 1.6.0 '@vitest/pretty-format': 2.0.5
'@vitest/snapshot': 1.6.0 '@vitest/runner': 2.0.4
'@vitest/spy': 1.6.0 '@vitest/snapshot': 2.0.4
'@vitest/utils': 1.6.0 '@vitest/spy': 2.0.4
acorn-walk: 8.3.3 '@vitest/utils': 2.0.4
chai: 4.3.10 chai: 5.1.1
debug: 4.3.6(supports-color@5.5.0) debug: 4.3.6(supports-color@5.5.0)
execa: 8.0.1 execa: 8.0.1
local-pkg: 0.5.0
magic-string: 0.30.10 magic-string: 0.30.10
pathe: 1.1.1 pathe: 1.1.2
picocolors: 1.0.0
std-env: 3.7.0 std-env: 3.7.0
strip-literal: 2.1.0
tinybench: 2.8.0 tinybench: 2.8.0
tinypool: 0.8.4 tinypool: 1.0.0
tinyrainbow: 1.2.0
vite: 5.3.1(@types/node@20.14.12) vite: 5.3.1(@types/node@20.14.12)
vite-node: 1.6.0(@types/node@20.14.12) vite-node: 2.0.4(@types/node@20.14.12)
why-is-node-running: 2.2.2 why-is-node-running: 2.3.0
transitivePeerDependencies: transitivePeerDependencies:
- less - less
- lightningcss - lightningcss
@ -31563,8 +31567,8 @@ packages:
dependencies: dependencies:
isexe: 2.0.0 isexe: 2.0.0
/why-is-node-running@2.2.2: /why-is-node-running@2.3.0:
resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'} engines: {node: '>=8'}
hasBin: true hasBin: true
dependencies: dependencies:
@ -31987,11 +31991,6 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'} engines: {node: '>=10'}
/yocto-queue@1.0.0:
resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
engines: {node: '>=12.20'}
dev: true
/yocto-queue@1.1.1: /yocto-queue@1.1.1:
resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
engines: {node: '>=12.20'} engines: {node: '>=12.20'}