diff --git a/e2e/vite/src/vite.test.ts b/e2e/vite/src/vite.test.ts index f9451823ba..ab10b95c9d 100644 --- a/e2e/vite/src/vite.test.ts +++ b/e2e/vite/src/vite.test.ts @@ -240,21 +240,11 @@ export default App; import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; - + export default defineConfig({ root: __dirname, cacheDir: '../../node_modules/.vite/libs/${lib}', - server: { - port: 4200, - host: 'localhost', - }, - plugins: [ - react(), - nxViteTsPaths() - ], - build: { - outDir: '../../dist/libs/${lib}', - }, + plugins: [react(), nxViteTsPaths()], test: { globals: true, cache: { @@ -262,15 +252,18 @@ export default App; }, environment: 'jsdom', include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], coverage: { reportsDirectory: '../../coverage/libs/${lib}', - provider: "v8", + provider: 'v8', enabled: true, - lines: 100, - statements: 100, - functions: 100, - branches: 1000, - } + thresholds: { + lines: 100, + statements: 100, + functions: 100, + branches: 1000, + } + }, }, }); `; diff --git a/package.json b/package.json index 1a43274ee4..5afab7fc1c 100644 --- a/package.json +++ b/package.json @@ -60,10 +60,10 @@ "@nestjs/schematics": "^9.1.0", "@nestjs/swagger": "^6.0.0", "@nestjs/testing": "^9.0.0", - "@nuxt/kit": "^3.8.1", "@ngrx/effects": "17.0.1", "@ngrx/router-store": "17.0.1", "@ngrx/store": "17.0.1", + "@nuxt/kit": "^3.8.1", "@nuxt/schema": "^3.8.1", "@nx/angular": "17.2.0-rc.2", "@nx/cypress": "17.2.0-rc.2", @@ -287,7 +287,8 @@ "url-loader": "^4.1.1", "use-sync-external-store": "^1.2.0", "verdaccio": "^5.0.4", - "vite": "5.0.5", + "vite": "5.0.8", + "vitest": "^1.0.4", "webpack": "5.88.0", "webpack-dev-server": "^4.9.3", "webpack-merge": "^5.8.0", @@ -352,7 +353,6 @@ "tailwind-merge": "^1.8.1", "tailwindcss": "3.2.4", "tslib": "^2.3.0", - "vitest": "^0.34.6", "weak-napi": "^2.0.2" }, "resolutions": { @@ -371,4 +371,3 @@ ] } } - diff --git a/packages/nuxt/src/generators/application/application.spec.ts b/packages/nuxt/src/generators/application/application.spec.ts index f51d4513d6..42aeab7f48 100644 --- a/packages/nuxt/src/generators/application/application.spec.ts +++ b/packages/nuxt/src/generators/application/application.spec.ts @@ -40,7 +40,7 @@ describe('app', () => { ).toMatchSnapshot(); expect(tree.read('my-app/tsconfig.json', 'utf-8')).toMatchSnapshot(); const packageJson = readJson(tree, 'package.json'); - expect(packageJson.devDependencies['vitest']).toEqual('~0.34.6'); + expect(packageJson.devDependencies['vitest']).toEqual('^1.0.4'); }); it('should configure tsconfig and project.json correctly', () => { diff --git a/packages/remix/src/generators/application/__snapshots__/application.impl.spec.ts.snap b/packages/remix/src/generators/application/__snapshots__/application.impl.spec.ts.snap index 387aa40300..61a9a08111 100644 --- a/packages/remix/src/generators/application/__snapshots__/application.impl.spec.ts.snap +++ b/packages/remix/src/generators/application/__snapshots__/application.impl.spec.ts.snap @@ -348,7 +348,7 @@ export default defineConfig({ // }, test: { - setupFiles: ['./test-setup.ts'], + setupFiles: ['test-setup.ts'], globals: true, cache: { dir: '../node_modules/.vitest', @@ -810,7 +810,7 @@ export default defineConfig({ // }, test: { - setupFiles: ['./test-setup.ts'], + setupFiles: ['test-setup.ts'], globals: true, cache: { dir: '../../node_modules/.vitest', @@ -1118,7 +1118,7 @@ export default defineConfig({ // }, test: { - setupFiles: ['./test-setup.ts'], + setupFiles: ['test-setup.ts'], globals: true, cache: { dir: './node_modules/.vitest', diff --git a/packages/remix/src/generators/application/lib/update-unit-test-config.ts b/packages/remix/src/generators/application/lib/update-unit-test-config.ts index c14d53794f..80f27bd24e 100644 --- a/packages/remix/src/generators/application/lib/update-unit-test-config.ts +++ b/packages/remix/src/generators/application/lib/update-unit-test-config.ts @@ -43,7 +43,7 @@ export function updateUnitTestConfig( pathToViteConfig, './tests/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}' ); - updateViteTestSetup(tree, pathToViteConfig, './test-setup.ts'); + updateViteTestSetup(tree, pathToViteConfig, 'test-setup.ts'); } else if (unitTestRunner === 'jest') { const pathToJestConfig = joinPathFragments(pathToRoot, 'jest.config.ts'); tree.rename('jest.preset.js', 'jest.preset.cjs'); diff --git a/packages/vite/migrations.json b/packages/vite/migrations.json index bbca74289a..61d147093c 100644 --- a/packages/vite/migrations.json +++ b/packages/vite/migrations.json @@ -45,9 +45,35 @@ "version": "17.2.0-beta.10", "description": "Update vite config.", "implementation": "./src/migrations/update-17-2-0/update-vite-config" + }, + "vitest-coverage-threshold": { + "version": "17.3.0-beta.0", + "description": "Move the vitest coverage thresholds in their own object if exists.", + "implementation": "./src/migrations/update-17-3-0/vitest-coverage-threshold" } }, "packageJsonUpdates": { + "17.3.0": { + "version": "17.3.0-beta.0", + "packages": { + "vitest": { + "version": "^1.0.4", + "alwaysAddToPackageJson": false + }, + "@vitest/coverage-v8": { + "version": "^1.0.4", + "alwaysAddToPackageJson": false + }, + "@vitest/ui": { + "version": "^1.0.4", + "alwaysAddToPackageJson": false + }, + "@vitest/coverage-istanbul": { + "version": "^1.0.4", + "alwaysAddToPackageJson": false + } + } + }, "17.2.0": { "version": "17.2.0-beta.2", "packages": { diff --git a/packages/vite/package.json b/packages/vite/package.json index 02cd830b9d..aeb2f523e4 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -38,7 +38,7 @@ }, "peerDependencies": { "vite": "^5.0.0", - "vitest": ">=0.34.6" + "vitest": "^1.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/vite/src/generators/init/__snapshots__/init.spec.ts.snap b/packages/vite/src/generators/init/__snapshots__/init.spec.ts.snap index 22f934fdff..4cb1e68769 100644 --- a/packages/vite/src/generators/init/__snapshots__/init.spec.ts.snap +++ b/packages/vite/src/generators/init/__snapshots__/init.spec.ts.snap @@ -11,12 +11,12 @@ exports[`@nx/vite:init dependencies for package.json should add vite packages an "@swc-node/register": "~1.6.7", "@swc/core": "~1.3.85", "@vitejs/plugin-react": "^4.2.0", - "@vitest/ui": "~0.34.6", + "@vitest/ui": "^1.0.4", "existing": "1.0.0", "prettier": "^2.6.2", "typescript": "~5.2.2", "vite": "^5.0.0", - "vitest": "~0.34.6", + "vitest": "^1.0.4", }, "name": "@proj/source", } @@ -31,11 +31,11 @@ exports[`@nx/vite:init dependencies for package.json should support --testEnviro "@nx/vite": "0.0.1", "@swc-node/register": "~1.6.7", "@swc/core": "~1.3.85", - "@vitest/ui": "~0.34.6", + "@vitest/ui": "^1.0.4", "prettier": "^2.6.2", "typescript": "~5.2.2", "vite": "^5.0.0", - "vitest": "~0.34.6", + "vitest": "^1.0.4", }, "name": "@proj/source", } @@ -49,12 +49,12 @@ exports[`@nx/vite:init dependencies for package.json should support --testEnviro "@nx/vite": "0.0.1", "@swc-node/register": "~1.6.7", "@swc/core": "~1.3.85", - "@vitest/ui": "~0.34.6", + "@vitest/ui": "^1.0.4", "happy-dom": "~9.20.3", "prettier": "^2.6.2", "typescript": "~5.2.2", "vite": "^5.0.0", - "vitest": "~0.34.6", + "vitest": "^1.0.4", }, "name": "@proj/source", } @@ -68,12 +68,12 @@ exports[`@nx/vite:init dependencies for package.json should support --testEnviro "@nx/vite": "0.0.1", "@swc-node/register": "~1.6.7", "@swc/core": "~1.3.85", - "@vitest/ui": "~0.34.6", + "@vitest/ui": "^1.0.4", "jsdom": "~22.1.0", "prettier": "^2.6.2", "typescript": "~5.2.2", "vite": "^5.0.0", - "vitest": "~0.34.6", + "vitest": "^1.0.4", }, "name": "@proj/source", } diff --git a/packages/vite/src/migrations/update-17-3-0/__snapshots__/vitest-coverage-threshold.spec.ts.snap b/packages/vite/src/migrations/update-17-3-0/__snapshots__/vitest-coverage-threshold.spec.ts.snap new file mode 100644 index 0000000000..971479c7fc --- /dev/null +++ b/packages/vite/src/migrations/update-17-3-0/__snapshots__/vitest-coverage-threshold.spec.ts.snap @@ -0,0 +1,165 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`vitest-coverage-threshold migration should move thresholds in threshold object - has 1 1`] = ` +"/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/demo6', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + thresholds: { + branches: 75, + }, + reportsDirectory: '../coverage/demo6', + provider: 'v8', + }, + }, +}); +" +`; + +exports[`vitest-coverage-threshold migration should move thresholds in threshold object - has 2 1`] = ` +"/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/demo3', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + thresholds: { + lines: 100, + statements: 100, + }, + reportsDirectory: '../coverage/demo3', + provider: 'v8', + }, + }, +}); +" +`; + +exports[`vitest-coverage-threshold migration should move thresholds in threshold object - has 3 1`] = ` +"/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/demo4', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + thresholds: { + lines: 100, + statements: 100, + + branches: 75, + }, + reportsDirectory: '../coverage/demo4', + provider: 'v8', + }, + }, +}); +" +`; + +exports[`vitest-coverage-threshold migration should move thresholds in threshold object - has all 1`] = ` +"/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/demo5', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + thresholds: { + lines: 100, + statements: 100, + functions: 60, + branches: 75, + }, + reportsDirectory: '../coverage/demo5', + provider: 'v8', + }, + }, +}); +" +`; + +exports[`vitest-coverage-threshold migration should not do anything if coverage but no thresholds 1`] = ` +"/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/demo2', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../coverage/demo2', + provider: 'v8', + }, + }, +}); +" +`; + +exports[`vitest-coverage-threshold migration should not do anything if no coverage 1`] = ` +"/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/demo', + test: { + globals: true, + cache: { + dir: '../../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + }, +}); +" +`; diff --git a/packages/vite/src/migrations/update-17-3-0/lib/fix-coverage.ts b/packages/vite/src/migrations/update-17-3-0/lib/fix-coverage.ts new file mode 100644 index 0000000000..7f1d26accd --- /dev/null +++ b/packages/vite/src/migrations/update-17-3-0/lib/fix-coverage.ts @@ -0,0 +1,132 @@ +import { ChangeType, applyChangesToString } from '@nx/devkit'; +import { tsquery } from '@phenomnomnominal/tsquery'; +import ts = require('typescript'); + +export function fixCoverage(configContents: string): string | undefined { + const configNode = getConfigNode(configContents); + if (!configNode) { + return; + } + + const testHasCoverage = tsquery.query( + configNode, + `PropertyAssignment:has(Identifier[name="test"]):has(PropertyAssignment:has(Identifier[name="coverage"]))` + )?.[0]; + let changes = []; + + if (!testHasCoverage) { + return; + } + const testObjectLiteralExpressionNode = tsquery.query( + testHasCoverage, + `ObjectLiteralExpression:has(Identifier[name="coverage"])` + )?.[0]; + const coverageNode = findCoverageNode(testObjectLiteralExpressionNode); + console.log('coverage node', coverageNode?.getText()); + console.log('coverage node getStart', coverageNode?.getStart()); + + if (!coverageNode) { + return; + } + + const linesNode = tsquery.query( + coverageNode, + `PropertyAssignment:has(Identifier[name="lines"])` + )?.[0]; + + const statementsNode = tsquery.query( + coverageNode, + `PropertyAssignment:has(Identifier[name="statements"])` + )?.[0]; + + const functionsNode = tsquery.query( + coverageNode, + `PropertyAssignment:has(Identifier[name="functions"])` + )?.[0]; + + const branchesNode = tsquery.query( + coverageNode, + `PropertyAssignment:has(Identifier[name="branches"])` + )?.[0]; + + if (linesNode) { + changes.push({ + type: ChangeType.Delete, + start: linesNode.getStart(), + length: linesNode.getWidth() + 1, + }); + } + if (statementsNode) { + changes.push({ + type: ChangeType.Delete, + start: statementsNode.getStart(), + length: statementsNode.getWidth() + 1, + }); + } + + if (functionsNode) { + changes.push({ + type: ChangeType.Delete, + start: functionsNode.getStart(), + length: functionsNode.getWidth() + 1, + }); + } + + if (branchesNode) { + changes.push({ + type: ChangeType.Delete, + start: branchesNode.getStart(), + length: branchesNode.getWidth() + 1, + }); + } + + if (branchesNode || functionsNode || statementsNode || linesNode) { + changes.push({ + type: ChangeType.Insert, + index: coverageNode.getStart() + 1, + text: `thresholds: { + ${linesNode ? linesNode.getText() + ',' : ''} + ${statementsNode ? statementsNode.getText() + ',' : ''} + ${functionsNode ? functionsNode.getText() + ',' : ''} + ${branchesNode ? branchesNode.getText() + ',' : ''} + },`, + }); + } + + if (changes.length > 0) { + return applyChangesToString(configContents, changes); + } else { + return; + } +} + +export function getConfigNode(configFileContents: string): ts.Node | undefined { + if (!configFileContents) { + return; + } + let configNode = tsquery.query( + configFileContents, + `ObjectLiteralExpression` + )?.[0]; + + const arrowFunctionReturnStatement = tsquery.query( + configFileContents, + `ArrowFunction Block ReturnStatement ObjectLiteralExpression` + )?.[0]; + + if (arrowFunctionReturnStatement) { + configNode = arrowFunctionReturnStatement; + } + + return configNode; +} + +function findCoverageNode(testNode: ts.Node) { + let coverageNode: ts.Node | undefined; + testNode.forEachChild((child) => { + if (ts.isPropertyAssignment(child) && child.name.getText() === 'coverage') { + coverageNode = child.initializer; + } + }); + return coverageNode; +} diff --git a/packages/vite/src/migrations/update-17-3-0/vitest-coverage-threshold.spec.ts b/packages/vite/src/migrations/update-17-3-0/vitest-coverage-threshold.spec.ts new file mode 100644 index 0000000000..25f2b97369 --- /dev/null +++ b/packages/vite/src/migrations/update-17-3-0/vitest-coverage-threshold.spec.ts @@ -0,0 +1,291 @@ +import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; +import { Tree, addProjectConfiguration } from '@nx/devkit'; +import fixCoverageThreshold from './vitest-coverage-threshold'; + +describe('vitest-coverage-threshold migration', () => { + let tree: Tree; + + beforeEach(() => { + tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' }); + }); + + it('should not do anything if no coverage', async () => { + addProject1(tree, 'demo'); + await fixCoverageThreshold(tree); + expect(tree.read('apps/demo/vite.config.ts', 'utf-8')).toMatchSnapshot(); + }); + + it('should not do anything if coverage but no thresholds', async () => { + addProject2(tree, 'demo2'); + await fixCoverageThreshold(tree); + expect(tree.read('demo2/vite.config.ts', 'utf-8')).toMatchSnapshot(); + }); + + it('should move thresholds in threshold object - has 2', async () => { + addProject3(tree, 'demo3'); + await fixCoverageThreshold(tree); + expect(tree.read('demo3/vite.config.ts', 'utf-8')).toMatchSnapshot(); + }); + + it('should move thresholds in threshold object - has 3', async () => { + addProject4(tree, 'demo4'); + await fixCoverageThreshold(tree); + expect(tree.read('demo4/vite.config.ts', 'utf-8')).toMatchSnapshot(); + }); + it('should move thresholds in threshold object - has all', async () => { + addProject5(tree, 'demo5'); + await fixCoverageThreshold(tree); + expect(tree.read('demo5/vite.config.ts', 'utf-8')).toMatchSnapshot(); + }); + + it('should move thresholds in threshold object - has 1', async () => { + addProject6(tree, 'demo6'); + await fixCoverageThreshold(tree); + expect(tree.read('demo6/vite.config.ts', 'utf-8')).toMatchSnapshot(); + }); +}); + +function addProject1(tree: Tree, name: string) { + addProjectConfiguration(tree, name, { + root: `apps/${name}`, + sourceRoot: `apps/${name}/src`, + targets: { + test: { + executor: '@nx/vite:test', + options: {}, + }, + }, + }); + + tree.write( + `apps/${name}/vite.config.ts`, + ` +/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/${name}', + test: { + globals: true, + cache: { + dir: '../../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + }, +}); + +` + ); +} + +function addProject2(tree: Tree, name: string) { + addProjectConfiguration(tree, name, { + root: `${name}`, + sourceRoot: `${name}/src`, + targets: { + test: { + executor: '@nx/vite:test', + options: {}, + }, + }, + }); + + tree.write( + `${name}/vite.config.ts`, + ` +/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/${name}', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../coverage/${name}', + provider: 'v8', + }, + }, +}); +` + ); +} + +function addProject3(tree: Tree, name: string) { + addProjectConfiguration(tree, name, { + root: `${name}`, + sourceRoot: `${name}/src`, + targets: { + test: { + executor: '@nx/vite:test', + options: {}, + }, + }, + }); + + tree.write( + `${name}/vite.config.ts`, + ` +/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/${name}', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../coverage/${name}', + provider: 'v8', + lines: 100, + statements: 100, + }, + }, +}); +` + ); +} + +function addProject4(tree: Tree, name: string) { + addProjectConfiguration(tree, name, { + root: `${name}`, + sourceRoot: `${name}/src`, + targets: { + test: { + executor: '@nx/vite:test', + options: {}, + }, + }, + }); + + tree.write( + `${name}/vite.config.ts`, + ` +/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/${name}', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../coverage/${name}', + provider: 'v8', + lines: 100, + statements: 100, + branches: 75, + }, + }, +}); +` + ); +} + +function addProject5(tree: Tree, name: string) { + addProjectConfiguration(tree, name, { + root: `${name}`, + sourceRoot: `${name}/src`, + targets: { + test: { + executor: '@nx/vite:test', + options: {}, + }, + }, + }); + + tree.write( + `${name}/vite.config.ts`, + ` +/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/${name}', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../coverage/${name}', + provider: 'v8', + lines: 100, + statements: 100, + branches: 75, + functions: 60, + }, + }, +}); +` + ); +} +function addProject6(tree: Tree, name: string) { + addProjectConfiguration(tree, name, { + root: `${name}`, + sourceRoot: `${name}/src`, + targets: { + test: { + executor: '@nx/vite:test', + options: {}, + }, + }, + }); + + tree.write( + `${name}/vite.config.ts`, + ` +/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + cacheDir: '../../node_modules/.vite/${name}', + test: { + globals: true, + cache: { + dir: '../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../coverage/${name}', + provider: 'v8', + branches: 75, + }, + }, +}); +` + ); +} diff --git a/packages/vite/src/migrations/update-17-3-0/vitest-coverage-threshold.ts b/packages/vite/src/migrations/update-17-3-0/vitest-coverage-threshold.ts new file mode 100644 index 0000000000..824afb4bdf --- /dev/null +++ b/packages/vite/src/migrations/update-17-3-0/vitest-coverage-threshold.ts @@ -0,0 +1,45 @@ +import { + ProjectConfiguration, + Tree, + formatFiles, + getProjects, + joinPathFragments, +} from '@nx/devkit'; +import { forEachExecutorOptions } from '@nx/devkit/src/generators/executor-options-utils'; +import { fixCoverage } from './lib/fix-coverage'; + +export default async function fixCoverageThreshold(tree: Tree) { + const projects = getProjects(tree); + forEachExecutorOptions(tree, '@nx/vite:test', (_options, projectName) => { + const projectConfig: ProjectConfiguration = projects.get( + projectName + ) as ProjectConfiguration; + const configPath = findViteConfig(tree, projectConfig.root); + if (!configPath || !tree.exists(configPath)) { + return; + } + const configContents = tree.read(configPath, 'utf-8') as string; + + const updatedConfigContents = fixCoverage(configContents); + + if (updatedConfigContents) { + tree.write(configPath, updatedConfigContents); + } + }); + + await formatFiles(tree); +} + +function findViteConfig(tree: Tree, searchRoot: string) { + const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts']; + + for (const ext of allowsExt) { + if (tree.exists(joinPathFragments(searchRoot, `vite.config.${ext}`))) { + return joinPathFragments(searchRoot, `vite.config.${ext}`); + } else if ( + tree.exists(joinPathFragments(searchRoot, `vitest.config.${ext}`)) + ) { + return joinPathFragments(searchRoot, `vitest.config.${ext}`); + } + } +} diff --git a/packages/vite/src/utils/versions.ts b/packages/vite/src/utils/versions.ts index f838607fc3..c27c03d5c8 100644 --- a/packages/vite/src/utils/versions.ts +++ b/packages/vite/src/utils/versions.ts @@ -1,6 +1,6 @@ export const nxVersion = require('../../package.json').version; export const viteVersion = '^5.0.0'; -export const vitestVersion = '~0.34.6'; +export const vitestVersion = '^1.0.4'; export const vitePluginReactVersion = '^4.2.0'; export const vitePluginReactSwcVersion = '^3.5.0'; export const jsdomVersion = '~22.1.0'; @@ -9,5 +9,5 @@ export const happyDomVersion = '~9.20.3'; export const edgeRuntimeVmVersion = '~3.0.2'; // Coverage providers -export const vitestCoverageV8Version = '~0.34.6'; -export const vitestCoverageIstanbulVersion = '~0.34.6'; +export const vitestCoverageV8Version = '^1.0.4'; +export const vitestCoverageIstanbulVersion = '^1.0.4'; diff --git a/packages/vue/src/generators/library/__snapshots__/library.spec.ts.snap b/packages/vue/src/generators/library/__snapshots__/library.spec.ts.snap index baa706c8b3..d1e0b49bba 100644 --- a/packages/vue/src/generators/library/__snapshots__/library.spec.ts.snap +++ b/packages/vue/src/generators/library/__snapshots__/library.spec.ts.snap @@ -113,8 +113,8 @@ exports[`lib should add vue, vite and vitest to package.json 1`] = ` "@typescript-eslint/eslint-plugin": "^6.13.2", "@typescript-eslint/parser": "^6.13.2", "@vitejs/plugin-vue": "^4.5.0", - "@vitest/coverage-v8": "~0.34.6", - "@vitest/ui": "~0.34.6", + "@vitest/coverage-v8": "^1.0.4", + "@vitest/ui": "^1.0.4", "@vue/eslint-config-prettier": "7.1.0", "@vue/eslint-config-typescript": "^11.0.3", "@vue/test-utils": "^2.4.1", @@ -126,7 +126,7 @@ exports[`lib should add vue, vite and vitest to package.json 1`] = ` "prettier": "^2.6.2", "typescript": "~5.2.2", "vite": "^5.0.0", - "vitest": "~0.34.6", + "vitest": "^1.0.4", "vue-tsc": "^1.8.8", }, "name": "@proj/source", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d02185283..6a8a48c3cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,5 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - overrides: minimist: ^1.2.6 underscore: ^1.12.1 @@ -144,9 +140,6 @@ dependencies: tslib: specifier: ^2.3.0 version: 2.4.0 - vitest: - specifier: ^0.34.6 - version: 0.34.6(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) weak-napi: specifier: ^2.0.2 version: 2.0.2 @@ -250,7 +243,7 @@ devDependencies: version: 9.1.6(@nestjs/common@9.1.6)(@nestjs/core@9.1.6) '@nestjs/schematics': specifier: ^9.1.0 - version: 9.1.0(typescript@5.2.2) + version: 9.1.0(chokidar@3.5.3)(typescript@4.9.4) '@nestjs/swagger': specifier: ^6.0.0 version: 6.1.3(@nestjs/common@9.1.6)(@nestjs/core@9.1.6)(reflect-metadata@0.1.13) @@ -331,7 +324,7 @@ devDependencies: version: 1.9.0(react-redux@8.0.5)(react@18.2.0) '@remix-run/dev': specifier: ^2.3.0 - version: 2.3.0(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0)(ts-node@10.9.1)(typescript@5.2.2)(vite@5.0.5) + version: 2.3.0(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0)(ts-node@10.9.1)(typescript@5.2.2)(vite@5.0.8) '@remix-run/node': specifier: ^2.3.0 version: 2.3.0(typescript@5.2.2) @@ -586,7 +579,7 @@ devDependencies: version: 2.14.0(eslint@8.48.0) eslint-plugin-import: specifier: 2.26.0 - version: 2.26.0(@typescript-eslint/parser@6.13.2)(eslint@8.48.0) + version: 2.26.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.2)(eslint@8.48.0) eslint-plugin-jsx-a11y: specifier: 6.6.1 version: 6.6.1(eslint@8.48.0) @@ -936,8 +929,11 @@ devDependencies: specifier: ^5.0.4 version: 5.15.4(typanion@3.12.1) vite: - specifier: 5.0.5 - version: 5.0.5(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) + specifier: 5.0.8 + version: 5.0.8(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) + vitest: + specifier: ^1.0.4 + version: 1.0.4(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) webpack: specifier: 5.88.0 version: 5.88.0(@swc/core@1.3.86)(esbuild@0.19.5) @@ -988,6 +984,7 @@ packages: /@adobe/css-tools@4.3.1: resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} + dev: true /@algolia/autocomplete-core@1.7.2: resolution: {integrity: sha512-eclwUDC6qfApNnEfu1uWcL/rudQsn59tjEoUYZYE2JSXZrHLRjBUGMxiCoknobU2Pva8ejb0eRxpIYDtVVqdsw==} @@ -4795,6 +4792,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm@0.17.6: @@ -4821,6 +4819,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-x64@0.17.6: @@ -4847,6 +4846,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/darwin-arm64@0.17.6: @@ -4873,6 +4873,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-x64@0.17.6: @@ -4899,6 +4900,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-arm64@0.17.6: @@ -4925,6 +4927,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-x64@0.17.6: @@ -4951,6 +4954,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm64@0.17.6: @@ -4977,6 +4981,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm@0.17.6: @@ -5003,6 +5008,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ia32@0.17.6: @@ -5029,6 +5035,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.17.6: @@ -5055,6 +5062,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-mips64el@0.17.6: @@ -5081,6 +5089,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ppc64@0.17.6: @@ -5107,6 +5116,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-riscv64@0.17.6: @@ -5133,6 +5143,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-s390x@0.17.6: @@ -5159,6 +5170,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-x64@0.17.6: @@ -5185,6 +5197,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/netbsd-x64@0.17.6: @@ -5211,6 +5224,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true optional: true /@esbuild/openbsd-x64@0.17.6: @@ -5237,6 +5251,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true optional: true /@esbuild/sunos-x64@0.17.6: @@ -5263,6 +5278,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true optional: true /@esbuild/win32-arm64@0.17.6: @@ -5289,6 +5305,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-ia32@0.17.6: @@ -5315,6 +5332,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-x64@0.17.6: @@ -5341,6 +5359,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): @@ -5700,6 +5719,14 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.24 + 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 + dev: true /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} @@ -6199,20 +6226,6 @@ packages: - chokidar dev: true - /@nestjs/schematics@9.1.0(typescript@5.2.2): - resolution: {integrity: sha512-/7CyMTnPJSK9/xD9CkCqwuHPOlHVlLC2RDnbdCJ7mIO07SdbBbY14msTqtYW9VRQtsjZPLh1GTChf7ryJUImwA==} - peerDependencies: - typescript: '>=4.3.5' - dependencies: - '@angular-devkit/core': 15.2.4(chokidar@3.5.3) - '@angular-devkit/schematics': 15.2.4(chokidar@3.5.3) - jsonc-parser: 3.2.0 - pluralize: 8.0.0 - typescript: 5.2.2 - transitivePeerDependencies: - - chokidar - dev: true - /@nestjs/swagger@6.1.3(@nestjs/common@9.1.6)(@nestjs/core@9.1.6)(reflect-metadata@0.1.13): resolution: {integrity: sha512-H9C/yRgLFb5QrAt6iGrYmIX9X7Q0zXkgZaTNUATljUBra+RCWrEUbLHBcGjTAOtcIyGV/vmyCLv68YSVcZoE0Q==} peerDependencies: @@ -8719,7 +8732,7 @@ packages: reselect: 4.1.7 dev: true - /@remix-run/dev@2.3.0(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0)(ts-node@10.9.1)(typescript@5.2.2)(vite@5.0.5): + /@remix-run/dev@2.3.0(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0)(ts-node@10.9.1)(typescript@5.2.2)(vite@5.0.8): resolution: {integrity: sha512-Eno0XHyIKo5GyzN4OAwNkgkyl4H1mLWbqeVUA8T5HmVDj+8qJLIcYeayS2BmA1KYAHJBiy5ufAGi2MpaXMjKww==} engines: {node: '>=18.0.0'} hasBin: true @@ -8791,7 +8804,7 @@ packages: tsconfig-paths: 4.1.2 typescript: 5.2.2 undici: 5.27.2 - vite: 5.0.5(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) + vite: 5.0.8(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) ws: 7.5.9 transitivePeerDependencies: - '@types/node' @@ -9082,6 +9095,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@rollup/rollup-android-arm64@4.3.0: @@ -9089,6 +9103,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@rollup/rollup-darwin-arm64@4.3.0: @@ -9096,6 +9111,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@rollup/rollup-darwin-x64@4.3.0: @@ -9103,6 +9119,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm-gnueabihf@4.3.0: @@ -9110,6 +9127,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm64-gnu@4.3.0: @@ -9117,6 +9135,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm64-musl@4.3.0: @@ -9124,6 +9143,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-x64-gnu@4.3.0: @@ -9131,6 +9151,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-x64-musl@4.3.0: @@ -9138,6 +9159,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-arm64-msvc@4.3.0: @@ -9145,6 +9167,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-ia32-msvc@4.3.0: @@ -9152,6 +9175,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-x64-msvc@4.3.0: @@ -9159,6 +9183,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@rushstack/eslint-patch@1.2.0: @@ -9224,6 +9249,11 @@ packages: /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} @@ -10900,16 +10930,6 @@ packages: '@types/responselike': 1.0.0 dev: true - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - dependencies: - '@types/chai': 4.3.5 - dev: false - - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} - dev: false - /@types/connect-history-api-fallback@1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: @@ -11850,43 +11870,43 @@ packages: vite: 4.5.0(@types/node@18.16.9)(less@4.2.0)(sass@1.69.5)(stylus@0.59.0)(terser@5.24.0) dev: true - /@vitest/expect@0.34.6: - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + /@vitest/expect@1.0.4: + resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==} dependencies: - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 + '@vitest/spy': 1.0.4 + '@vitest/utils': 1.0.4 chai: 4.3.10 - dev: false + dev: true - /@vitest/runner@0.34.6: - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + /@vitest/runner@1.0.4: + resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==} dependencies: - '@vitest/utils': 0.34.6 - p-limit: 4.0.0 + '@vitest/utils': 1.0.4 + p-limit: 5.0.0 pathe: 1.1.1 - dev: false + dev: true - /@vitest/snapshot@0.34.6: - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + /@vitest/snapshot@1.0.4: + resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==} dependencies: magic-string: 0.30.5 pathe: 1.1.1 - pretty-format: 29.5.0 - dev: false + pretty-format: 29.7.0 + dev: true - /@vitest/spy@0.34.6: - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + /@vitest/spy@1.0.4: + resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==} dependencies: tinyspy: 2.2.0 - dev: false + dev: true - /@vitest/utils@0.34.6: - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + /@vitest/utils@1.0.4: + resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==} dependencies: - diff-sequences: 29.4.3 - loupe: 2.3.6 - pretty-format: 29.5.0 - dev: false + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} @@ -12313,7 +12333,7 @@ packages: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: acorn: 8.10.0 - acorn-walk: 8.2.0 + acorn-walk: 8.3.1 dev: true /acorn-import-assertions@1.9.0(acorn@8.10.0): @@ -12363,6 +12383,11 @@ packages: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} + /acorn-walk@8.3.1: + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -12372,6 +12397,7 @@ packages: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true + dev: true /acorn@8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} @@ -12603,6 +12629,7 @@ packages: /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + dev: true /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} @@ -12812,7 +12839,7 @@ packages: /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: false + dev: true /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} @@ -13792,6 +13819,7 @@ packages: /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + dev: true /cacache@16.1.3: resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} @@ -13994,7 +14022,7 @@ packages: loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 - dev: false + dev: true /chainsaw@0.1.0: resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} @@ -14084,7 +14112,7 @@ packages: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 - dev: false + dev: true /check-more-types@2.24.0: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} @@ -14683,6 +14711,7 @@ packages: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} dependencies: is-what: 3.14.1 + dev: true /copy-to-clipboard@3.3.2: resolution: {integrity: sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==} @@ -15474,7 +15503,7 @@ packages: engines: {node: '>=6'} dependencies: type-detect: 4.0.8 - dev: false + dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -15645,6 +15674,12 @@ packages: /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} @@ -16016,6 +16051,7 @@ packages: requiresBuild: true dependencies: prr: 1.0.1 + dev: true optional: true /error-ex@1.3.2: @@ -16242,6 +16278,7 @@ packages: '@esbuild/win32-arm64': 0.19.5 '@esbuild/win32-ia32': 0.19.5 '@esbuild/win32-x64': 0.19.5 + dev: true /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -16387,35 +16424,6 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@6.13.2)(eslint-import-resolver-node@0.3.6)(eslint@8.48.0): - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 6.13.2(eslint@8.48.0)(typescript@5.2.2) - debug: 3.2.7(supports-color@8.1.1) - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.6 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-plugin-cypress@2.14.0(eslint@8.48.0): resolution: {integrity: sha512-eW6tv7iIg7xujleAJX4Ujm649Bf5jweqa4ObPEIuueYRyLZt7qXGWhCY/n4bfeFW/j6nQZwbIBHKZt6EKcL/cg==} peerDependencies: @@ -16456,37 +16464,6 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.13.2)(eslint@8.48.0): - resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.13.2(eslint@8.48.0)(typescript@5.2.2) - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - debug: 2.6.9 - doctrine: 2.1.0 - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@6.13.2)(eslint-import-resolver-node@0.3.6)(eslint@8.48.0) - has: 1.0.3 - is-core-module: 2.11.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.1 - tsconfig-paths: 3.14.1 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - /eslint-plugin-jsx-a11y@6.6.1(eslint@8.48.0): resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==} engines: {node: '>=4.0'} @@ -16862,6 +16839,21 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} engines: {node: '>=4'} @@ -17363,7 +17355,7 @@ packages: engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 - signal-exit: 4.0.1 + signal-exit: 4.1.0 dev: true /forever-agent@0.6.1: @@ -17685,7 +17677,7 @@ packages: /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: false + dev: true /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} @@ -17743,6 +17735,11 @@ packages: engines: {node: '>=10'} dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -18550,6 +18547,11 @@ packages: engines: {node: '>=10.17.0'} dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: @@ -18574,6 +18576,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true /icss-replace-symbols@1.1.0: resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} @@ -18630,6 +18633,7 @@ packages: engines: {node: '>=0.10.0'} hasBin: true requiresBuild: true + dev: true optional: true /image-size@1.0.2: @@ -19151,6 +19155,11 @@ packages: engines: {node: '>=8'} dev: true + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -19209,6 +19218,7 @@ packages: /is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} @@ -19472,7 +19482,7 @@ packages: chalk: 4.1.2 jest-get-type: 29.4.3 jest-util: 29.5.0 - pretty-format: 29.5.0 + pretty-format: 29.7.0 dev: true /jest-environment-jsdom@29.4.3: @@ -19539,7 +19549,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 - pretty-format: 29.5.0 + pretty-format: 29.7.0 dev: true /jest-matcher-utils@29.5.0: @@ -19549,7 +19559,7 @@ packages: chalk: 4.1.2 jest-diff: 29.5.0 jest-get-type: 29.4.3 - pretty-format: 29.5.0 + pretty-format: 29.7.0 dev: true /jest-message-util@29.5.0: @@ -19707,7 +19717,7 @@ packages: jest-message-util: 29.5.0 jest-util: 29.5.0 natural-compare: 1.4.0 - pretty-format: 29.5.0 + pretty-format: 29.7.0 semver: 7.5.3 transitivePeerDependencies: - supports-color @@ -20019,6 +20029,7 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true /jsonfile@3.0.1: resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} @@ -20248,6 +20259,7 @@ packages: source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: true /less@4.2.0: resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} @@ -20427,6 +20439,7 @@ packages: /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} + dev: true /local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} @@ -20583,9 +20596,16 @@ packages: /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 dependencies: get-func-name: 2.0.2 - dev: false + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true /lowdb@1.0.0: resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} @@ -20707,6 +20727,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -20715,6 +20736,7 @@ packages: dependencies: pify: 4.0.1 semver: 5.7.1 + dev: true optional: true /make-dir@3.1.0: @@ -21676,6 +21698,11 @@ packages: engines: {node: '>=6'} dev: true + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} @@ -21886,6 +21913,7 @@ packages: pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.3.1 + dev: true /modern-ahocorasick@1.0.1: resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} @@ -22011,6 +22039,7 @@ packages: sax: 1.2.4 transitivePeerDependencies: - supports-color + dev: true optional: true /negotiator@0.6.3: @@ -22429,6 +22458,13 @@ packages: dependencies: path-key: 3.1.1 + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -22730,6 +22766,13 @@ packages: mimic-fn: 2.1.0 dev: true + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + /open@8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} @@ -22935,6 +22978,14 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 + 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@2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} @@ -23115,6 +23166,7 @@ packages: /parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} + dev: true /parse5-html-rewriting-stream@7.0.0: resolution: {integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==} @@ -23188,6 +23240,11 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -23221,10 +23278,11 @@ packages: /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: false + dev: true /peek-readable@4.1.0: resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} @@ -23295,6 +23353,7 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} requiresBuild: true + dev: true optional: true /pify@5.0.0: @@ -23361,6 +23420,7 @@ packages: jsonc-parser: 3.2.0 mlly: 1.4.2 pathe: 1.1.1 + dev: true /pkginfo@0.4.1: resolution: {integrity: sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==} @@ -24567,7 +24627,7 @@ packages: resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.6 + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -24588,6 +24648,7 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true /preact@10.6.4: resolution: {integrity: sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ==} @@ -24658,6 +24719,16 @@ packages: '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} @@ -24780,6 +24851,7 @@ packages: /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} requiresBuild: true + dev: true optional: true /pseudomap@1.0.2: @@ -25023,6 +25095,7 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true /react-markdown@8.0.7(@types/react@18.2.24)(react@18.2.0): resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==} @@ -25837,6 +25910,7 @@ packages: '@rollup/rollup-win32-ia32-msvc': 4.3.0 '@rollup/rollup-win32-x64-msvc': 4.3.0 fsevents: 2.3.3 + dev: true /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -25899,6 +25973,7 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true /sass-loader@12.6.0(sass@1.55.0)(webpack@5.88.0): resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} @@ -25971,6 +26046,7 @@ packages: /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} requiresBuild: true + dev: true /saxes@5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} @@ -26332,14 +26408,14 @@ packages: /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: false + dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /signal-exit@4.0.1: - resolution: {integrity: sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} dev: true @@ -26581,10 +26657,12 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /source-map@0.7.3: resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} engines: {node: '>= 8'} + dev: true /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -26735,7 +26813,7 @@ packages: /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: false + dev: true /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} @@ -26766,6 +26844,11 @@ packages: /std-env@3.4.3: resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + dev: true + + /std-env@3.6.0: + resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} + dev: true /steno@0.4.4: resolution: {integrity: sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==} @@ -26931,6 +27014,11 @@ packages: engines: {node: '>=6'} dev: true + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -26947,6 +27035,7 @@ packages: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: acorn: 8.10.0 + dev: true /strip-outer@2.0.0: resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} @@ -27095,6 +27184,7 @@ packages: source-map: 0.7.3 transitivePeerDependencies: - supports-color + dev: true /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -27557,19 +27647,19 @@ packages: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: true - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} - dev: false + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + dev: true - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + /tinypool@0.8.1: + resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==} engines: {node: '>=14.0.0'} - dev: false + dev: true /tinyspy@2.2.0: resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} - dev: false + dev: true /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -27931,6 +28021,7 @@ packages: /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} + dev: true /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} @@ -28030,6 +28121,7 @@ packages: /ufo@1.3.1: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + dev: true /uglify-es@3.3.9: resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==} @@ -28733,17 +28825,16 @@ packages: - terser dev: true - /vite-node@0.34.6(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0): - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} + /vite-node@1.0.4(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0): + resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@5.5.0) - mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.5(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) + vite: 5.0.8(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) transitivePeerDependencies: - '@types/node' - less @@ -28753,7 +28844,7 @@ packages: - sugarss - supports-color - terser - dev: false + dev: true /vite@4.5.0(@types/node@18.16.9)(less@4.2.0)(sass@1.69.5)(stylus@0.59.0)(terser@5.24.0): resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} @@ -28795,8 +28886,8 @@ packages: fsevents: 2.3.3 dev: true - /vite@5.0.5(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0): - resolution: {integrity: sha512-OekeWqR9Ls56f3zd4CaxzbbS11gqYkEiBtnWFFgYR2WV8oPJRRKq0mpskYy/XaoCL3L7VINDhqqOMNDiYdGvGg==} + /vite@5.0.8(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0): + resolution: {integrity: sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -28832,23 +28923,24 @@ packages: stylus: 0.59.0 optionalDependencies: fsevents: 2.3.3 + dev: true - /vitest@0.34.6(less@4.1.3)(sass@1.55.0)(stylus@0.59.0): - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} + /vitest@1.0.4(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0): + resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': ^1.0.0 + '@vitest/ui': ^1.0.0 happy-dom: '*' jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/node': + optional: true '@vitest/browser': optional: true '@vitest/ui': @@ -28857,36 +28949,28 @@ packages: optional: true jsdom: optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true dependencies: - '@types/chai': 4.3.5 - '@types/chai-subset': 1.3.3 '@types/node': 18.16.9 - '@vitest/expect': 0.34.6 - '@vitest/runner': 0.34.6 - '@vitest/snapshot': 0.34.6 - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - acorn: 8.10.0 - acorn-walk: 8.2.0 + '@vitest/expect': 1.0.4 + '@vitest/runner': 1.0.4 + '@vitest/snapshot': 1.0.4 + '@vitest/spy': 1.0.4 + '@vitest/utils': 1.0.4 + acorn-walk: 8.3.1 cac: 6.7.14 chai: 4.3.10 debug: 4.3.4(supports-color@5.5.0) - local-pkg: 0.4.3 + execa: 8.0.1 + local-pkg: 0.5.0 magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 - std-env: 3.4.3 + std-env: 3.6.0 strip-literal: 1.3.0 - tinybench: 2.5.0 - tinypool: 0.7.0 - vite: 5.0.5(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) - vite-node: 0.34.6(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) + tinybench: 2.5.1 + tinypool: 0.8.1 + vite: 5.0.8(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) + vite-node: 1.0.4(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -28896,7 +28980,7 @@ packages: - sugarss - supports-color - terser - dev: false + dev: true /vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} @@ -29548,7 +29632,7 @@ packages: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - dev: false + dev: true /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -29808,6 +29892,7 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + dev: true /zone.js@0.14.0: resolution: {integrity: sha512-Sz0G0TjMuyApIcuTJeK742+xLLKEPjYtkdBEazBlYePHkICVp9DPKqI/4dJt3LCtQBd52sCxz23uAFJ2OJa6Ow==} @@ -29818,3 +29903,7 @@ packages: /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: true + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false