From e2cbb2713a78f1f3a97981830c26b64c65e6ea9b Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 27 May 2023 11:36:18 +0200 Subject: [PATCH 1/8] Replace jest config with vitest config --- babel.config.js | 9 - config/jest/cssTransform.js | 12 - config/jest/fileTransform.js | 31 - config/jest/setupTests.ts | 12 - config/test/setupTests.ts | 22 + jest.config.js | 39 - package-lock.json | 7136 +++++++++------------------------- package.json | 18 +- tsconfig.json | 2 +- vite.config.ts | 28 +- 10 files changed, 1966 insertions(+), 5343 deletions(-) delete mode 100644 babel.config.js delete mode 100644 config/jest/cssTransform.js delete mode 100644 config/jest/fileTransform.js delete mode 100644 config/jest/setupTests.ts create mode 100644 config/test/setupTests.ts delete mode 100644 jest.config.js diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 855c3f01..00000000 --- a/babel.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - presets: [ - ['@babel/preset-env', { - targets: { esmodules: true } - }], - ['@babel/preset-react', { runtime: 'automatic' }], - '@babel/preset-typescript', - ], -}; diff --git a/config/jest/cssTransform.js b/config/jest/cssTransform.js deleted file mode 100644 index 85bf39b7..00000000 --- a/config/jest/cssTransform.js +++ /dev/null @@ -1,12 +0,0 @@ -// This is a custom Jest transformer turning style imports into empty objects. -// http://facebook.github.io/jest/docs/en/webpack.html - -module.exports = { - process() { - return { code: 'module.exports = {};' }; - }, - getCacheKey() { - // The output is always the same. - return 'cssTransform'; - }, -}; diff --git a/config/jest/fileTransform.js b/config/jest/fileTransform.js deleted file mode 100644 index 46d0e641..00000000 --- a/config/jest/fileTransform.js +++ /dev/null @@ -1,31 +0,0 @@ - -const path = require('path'); - -// This is a custom Jest transformer turning file imports into filenames. -// http://facebook.github.io/jest/docs/en/webpack.html - -module.exports = { - process(src, filename) { - const assetFilename = JSON.stringify(path.basename(filename)); - - if (filename.match(/\.svg$/)) { - return `module.exports = { - __esModule: true, - default: ${assetFilename}, - ReactComponent: (props) => ({ - $$typeof: Symbol.for('react.element'), - type: 'svg', - ref: null, - key: null, - props: Object.assign({}, props, { - children: ${assetFilename} - }) - }), - };`; - } - - return { - code: `module.exports = ${assetFilename};` - }; - }, -}; diff --git a/config/jest/setupTests.ts b/config/jest/setupTests.ts deleted file mode 100644 index 39838df8..00000000 --- a/config/jest/setupTests.ts +++ /dev/null @@ -1,12 +0,0 @@ -import '@testing-library/jest-dom'; -import 'jest-canvas-mock'; -import 'chart.js/auto'; -import ResizeObserver from 'resize-observer-polyfill'; -import { setAutoFreeze } from 'immer'; - -(global as any).ResizeObserver = ResizeObserver; -(global as any).scrollTo = () => {}; -(global as any).prompt = () => {}; -(global as any).matchMedia = (media: string) => ({ matches: false, media }); - -setAutoFreeze(false); // TODO Bypassing a bug on jest diff --git a/config/test/setupTests.ts b/config/test/setupTests.ts new file mode 100644 index 00000000..7dfb97b9 --- /dev/null +++ b/config/test/setupTests.ts @@ -0,0 +1,22 @@ +import 'vitest-canvas-mock'; +import 'chart.js/auto'; +import matchers from '@testing-library/jest-dom/matchers'; +import { cleanup } from '@testing-library/react'; +import { setAutoFreeze } from 'immer'; +import ResizeObserver from 'resize-observer-polyfill'; +import { afterEach, expect } from 'vitest'; + +// extends Vitest's expect method with methods from react-testing-library +expect.extend(matchers); + +// runs a cleanup after each test case (e.g. clearing jsdom) +afterEach(() => { + cleanup(); +}); + +(global as any).ResizeObserver = ResizeObserver; +(global as any).scrollTo = () => {}; +(global as any).prompt = () => {}; +(global as any).matchMedia = (media: string) => ({ matches: false, media }); + +setAutoFreeze(false); // TODO Bypassing a bug on jest diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index d212d872..00000000 --- a/jest.config.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = { - coverageDirectory: '/coverage', - collectCoverageFrom: [ - 'src/**/*.{ts,tsx}', - '!src/*.{ts,tsx}', - '!src/reducers/index.ts', - '!src/**/provideServices.ts', - '!src/container/*.ts', - ], - coverageThreshold: { - global: { - statements: 90, - branches: 85, - functions: 90, - lines: 90, - }, - }, - setupFilesAfterEnv: ['/config/jest/setupTests.ts'], - testMatch: ['/test/**/*.test.{ts,tsx}'], - testEnvironment: 'jsdom', - testEnvironmentOptions: { - url: 'http://localhost', - }, - transform: { - '^.+\\.(ts|tsx|js)$': '/node_modules/babel-jest', - '^.+\\.scss$': '/config/jest/cssTransform.js', - '^(?!.*\\.(ts|tsx|js|json|scss)$)': '/config/jest/fileTransform.js', - }, - transformIgnorePatterns: [ - 'node_modules\/(?!(\@react-leaflet|react-leaflet|leaflet|react-chartjs-2|react-colorful)\/)', - '^.+\\.module\\.scss$', - ], - moduleNameMapper: { - '^.+\\.module\\.scss$': 'identity-obj-proxy', - 'react-chartjs-2': '/node_modules/react-chartjs-2/dist/index.js', - 'uuid': '/node_modules/uuid/dist/index.js', - }, - moduleFileExtensions: ['js', 'ts', 'tsx', 'json'], -}; diff --git a/package-lock.json b/package-lock.json index 137c1214..527c9cb6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,9 +7,6 @@ "name": "shlink-web-client", "license": "MIT", "dependencies": { - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.0", "@fortawesome/fontawesome-free": "^6.3.0", "@fortawesome/fontawesome-svg-core": "^6.3.0", "@fortawesome/free-brands-svg-icons": "^6.3.0", @@ -61,7 +58,6 @@ "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", "@total-typescript/shoehorn": "^0.1.0", - "@types/jest": "^29.2.4", "@types/json2csv": "^5.0.3", "@types/leaflet": "^1.9.0", "@types/qs": "^6.9.7", @@ -74,20 +70,20 @@ "@types/react-tag-autocomplete": "^6.3.0", "@types/uuid": "^8.3.4", "@vitejs/plugin-react": "^4.0.0", + "@vitest/coverage-c8": "^0.31.1", "adm-zip": "^0.5.10", - "babel-jest": "^29.5.0", "chalk": "^5.2.0", "eslint": "^8.30.0", "identity-obj-proxy": "^3.0.0", - "jest": "^29.3.1", - "jest-canvas-mock": "^2.4.0", - "jest-environment-jsdom": "^29.3.1", + "jsdom": "^22.0.0", "resize-observer-polyfill": "^1.5.1", "sass": "^1.57.1", "stylelint": "^14.16.0", "typescript": "^5.0.2", "vite": "^4.3.1", - "vite-plugin-pwa": "^0.14.4" + "vite-plugin-pwa": "^0.14.4", + "vitest": "^0.31.1", + "vitest-canvas-mock": "^0.2.2" } }, "node_modules/@adobe/css-tools": { @@ -96,31 +92,23 @@ "license": "MIT" }, "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "license": "Apache-2.0", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, - "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/code-frame": { "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, "dependencies": { "@babel/highlight": "^7.18.6" }, @@ -132,6 +120,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -140,6 +129,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.21.4", @@ -167,6 +157,7 @@ }, "node_modules/@babel/core/node_modules/debug": { "version": "4.3.2", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -182,10 +173,12 @@ }, "node_modules/@babel/core/node_modules/ms": { "version": "2.1.2", + "dev": true, "license": "MIT" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.0", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -195,6 +188,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "dev": true, "dependencies": { "@babel/types": "^7.21.4", "@jridgewell/gen-mapping": "^0.3.2", @@ -207,6 +201,7 @@ }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" @@ -217,6 +212,7 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.18.9", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-explode-assignable-expression": "^7.18.6", @@ -230,6 +226,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.21.4", "@babel/helper-validator-option": "^7.21.0", @@ -246,6 +243,7 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { "version": "5.1.1", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -253,6 +251,7 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.0", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -260,12 +259,14 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", + "dev": true, "license": "ISC" }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -285,6 +286,7 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.20.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -299,6 +301,7 @@ }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.3.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", @@ -314,6 +317,7 @@ }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { "version": "4.3.4", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -329,10 +333,12 @@ }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { "version": "2.1.2", + "dev": true, "license": "MIT" }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { "version": "6.3.0", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -340,6 +346,7 @@ }, "node_modules/@babel/helper-environment-visitor": { "version": "7.18.9", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -347,6 +354,7 @@ }, "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" @@ -357,6 +365,7 @@ }, "node_modules/@babel/helper-function-name": { "version": "7.21.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.20.7", @@ -368,6 +377,7 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" @@ -380,6 +390,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "dev": true, "dependencies": { "@babel/types": "^7.21.0" }, @@ -389,6 +400,7 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" @@ -399,6 +411,7 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.21.2", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -416,6 +429,7 @@ }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" @@ -426,6 +440,7 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.20.2", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -433,6 +448,7 @@ }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.18.9", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -449,6 +465,7 @@ }, "node_modules/@babel/helper-replace-supers": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -464,6 +481,7 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.20.2", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.20.2" @@ -474,6 +492,7 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.20.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.20.0" @@ -484,6 +503,7 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" @@ -494,6 +514,7 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.19.4", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -501,6 +522,7 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.19.1", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -510,12 +532,14 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.20.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-function-name": "^7.19.0", @@ -529,6 +553,7 @@ }, "node_modules/@babel/helpers": { "version": "7.21.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.20.7", @@ -541,6 +566,7 @@ }, "node_modules/@babel/highlight": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", @@ -553,6 +579,7 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -567,6 +594,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -576,6 +604,7 @@ }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -589,6 +618,7 @@ }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -604,6 +634,7 @@ }, "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -620,6 +651,7 @@ }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -634,6 +666,7 @@ }, "node_modules/@babel/plugin-proposal-class-static-block": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.20.7", @@ -649,6 +682,7 @@ }, "node_modules/@babel/plugin-proposal-dynamic-import": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -663,6 +697,7 @@ }, "node_modules/@babel/plugin-proposal-export-namespace-from": { "version": "7.18.9", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", @@ -677,6 +712,7 @@ }, "node_modules/@babel/plugin-proposal-json-strings": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -691,6 +727,7 @@ }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -705,6 +742,7 @@ }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -719,6 +757,7 @@ }, "node_modules/@babel/plugin-proposal-numeric-separator": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -733,6 +772,7 @@ }, "node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.5", @@ -750,6 +790,7 @@ }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -764,6 +805,7 @@ }, "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -779,6 +821,7 @@ }, "node_modules/@babel/plugin-proposal-private-methods": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -793,6 +836,7 @@ }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.20.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -809,6 +853,7 @@ }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -823,16 +868,6 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", "dev": true, "license": "MIT", "dependencies": { @@ -844,6 +879,7 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" @@ -854,6 +890,7 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -867,6 +904,7 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -877,6 +915,7 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" @@ -887,6 +926,7 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.20.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0" @@ -898,7 +938,18 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "dev": true, "license": "MIT", @@ -909,41 +960,9 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -954,6 +973,7 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -964,6 +984,7 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -974,6 +995,7 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -984,6 +1006,7 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -994,6 +1017,7 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1007,6 +1031,7 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1018,22 +1043,9 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1047,6 +1059,7 @@ }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", @@ -1062,6 +1075,7 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1075,6 +1089,7 @@ }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.20.11", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1088,6 +1103,7 @@ }, "node_modules/@babel/plugin-transform-classes": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -1109,6 +1125,7 @@ }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -1123,6 +1140,7 @@ }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1136,6 +1154,7 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -1150,6 +1169,7 @@ }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.18.9", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" @@ -1163,6 +1183,7 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", @@ -1177,6 +1198,7 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.18.8", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1190,6 +1212,7 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.18.9", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.18.9", @@ -1205,6 +1228,7 @@ }, "node_modules/@babel/plugin-transform-literals": { "version": "7.18.9", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" @@ -1218,6 +1242,7 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1231,6 +1256,7 @@ }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.20.11", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.20.11", @@ -1245,6 +1271,7 @@ }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.20.11", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.20.11", @@ -1260,6 +1287,7 @@ }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.20.11", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", @@ -1276,6 +1304,7 @@ }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.18.6", @@ -1290,6 +1319,7 @@ }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.20.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.20.5", @@ -1304,6 +1334,7 @@ }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1317,6 +1348,7 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -1331,6 +1363,7 @@ }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1344,6 +1377,7 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1355,49 +1389,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.18.6", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.20.7", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", @@ -1427,22 +1418,9 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.20.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -1457,6 +1435,7 @@ }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1470,6 +1449,7 @@ }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1483,6 +1463,7 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -1497,6 +1478,7 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1510,6 +1492,7 @@ }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.18.9", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" @@ -1523,6 +1506,7 @@ }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.18.9", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" @@ -1534,25 +1518,9 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", - "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.18.10", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" @@ -1566,6 +1534,7 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.18.6", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -1580,6 +1549,7 @@ }, "node_modules/@babel/preset-env": { "version": "7.20.2", + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.1", @@ -1667,6 +1637,7 @@ }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.0", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1674,6 +1645,7 @@ }, "node_modules/@babel/preset-modules": { "version": "0.1.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1686,40 +1658,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-react": { - "version": "7.18.6", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", - "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-transform-typescript": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.17.0", "license": "MIT", @@ -1742,6 +1680,7 @@ }, "node_modules/@babel/template": { "version": "7.20.7", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", @@ -1756,6 +1695,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.21.4", "@babel/generator": "^7.21.4", @@ -1774,6 +1714,7 @@ }, "node_modules/@babel/traverse/node_modules/debug": { "version": "4.2.0", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -1789,12 +1730,14 @@ }, "node_modules/@babel/traverse/node_modules/ms": { "version": "2.1.2", + "dev": true, "license": "MIT" }, "node_modules/@babel/types": { "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -2397,322 +2340,15 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@istanbuljs/schema": { - "version": "0.1.2", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@jest/console": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", - "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "jest-mock": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/expect-utils": { "version": "29.3.1", "dev": true, @@ -2724,137 +2360,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/fake-timers": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/schemas": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", @@ -2867,149 +2372,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/source-map": { - "version": "29.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.3.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/write-file-atomic": { - "version": "4.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/@jest/types": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", @@ -3088,6 +2450,7 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -3100,6 +2463,7 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3107,6 +2471,7 @@ }, "node_modules/@jridgewell/set-array": { "version": "1.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3123,10 +2488,12 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", + "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.17", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", @@ -3304,22 +2671,6 @@ "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", "dev": true }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, "node_modules/@streamparser/json": { "version": "0.0.10", "license": "MIT" @@ -3565,6 +2916,8 @@ "version": "7.1.20", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -3577,6 +2930,8 @@ "version": "7.6.4", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.0.0" } @@ -3585,6 +2940,8 @@ "version": "7.4.1", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -3594,10 +2951,27 @@ "version": "7.0.15", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.3.0" } }, + "node_modules/@types/chai": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", + "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.0", "dev": true, @@ -3608,14 +2982,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/hoist-non-react-statics": { "version": "3.3.1", "license": "MIT", @@ -3683,16 +3049,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/jsdom": { - "version": "20.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, "node_modules/@types/json-schema": { "version": "7.0.11", "dev": true, @@ -3740,11 +3096,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "dev": true, - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.3", "license": "MIT" @@ -3879,11 +3230,6 @@ "@types/jest": "*" } }, - "node_modules/@types/tough-cookie": { - "version": "4.0.2", - "dev": true, - "license": "MIT" - }, "node_modules/@types/trusted-types": { "version": "2.0.2", "dev": true, @@ -4243,15 +3589,156 @@ "node": ">=0.10.0" } }, + "node_modules/@vitest/coverage-c8": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.31.1.tgz", + "integrity": "sha512-6TkjQpmgYez7e3dbAUoYdRXxWN81BojCmUILJwgCy39uZFG33DsQ0rSRSZC9beAEdCZTpxR63nOvd9hxDQcJ0g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "c8": "^7.13.0", + "magic-string": "^0.30.0", + "picocolors": "^1.0.0", + "std-env": "^3.3.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": ">=0.30.0 <1" + } + }, + "node_modules/@vitest/coverage-c8/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vitest/expect": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.1.tgz", + "integrity": "sha512-BV1LyNvhnX+eNYzJxlHIGPWZpwJFZaCcOIzp2CNG0P+bbetenTupk6EO0LANm4QFt0TTit+yqx7Rxd1qxi/SQA==", + "dev": true, + "dependencies": { + "@vitest/spy": "0.31.1", + "@vitest/utils": "0.31.1", + "chai": "^4.3.7" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.31.1.tgz", + "integrity": "sha512-imWuc82ngOtxdCUpXwtEzZIuc1KMr+VlQ3Ondph45VhWoQWit5yvG/fFcldbnCi8DUuFi+NmNx5ehMUw/cGLUw==", + "dev": true, + "dependencies": { + "@vitest/utils": "0.31.1", + "concordance": "^5.0.4", + "p-limit": "^4.0.0", + "pathe": "^1.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.31.1.tgz", + "integrity": "sha512-L3w5uU9bMe6asrNzJ8WZzN+jUTX4KSgCinEJPXyny0o90fG4FPQMV0OWsq7vrCWfQlAilMjDnOF9nP8lidsJ+g==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.0", + "pathe": "^1.1.0", + "pretty-format": "^27.5.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vitest/spy": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.31.1.tgz", + "integrity": "sha512-1cTpt2m9mdo3hRLDyCG2hDQvRrePTDgEJBFQQNz1ydHHZy03EiA6EpFxY+7ODaY7vMRCie+WlFZBZ0/dQWyssQ==", + "dev": true, + "dependencies": { + "tinyspy": "^2.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.31.1.tgz", + "integrity": "sha512-yFyRD5ilwojsZfo3E0BnH72pSVSuLg2356cN1tCEe/0RtDzxTPYwOomIC+eQbot7m6DRy4tPZw+09mB7NkbMmA==", + "dev": true, + "dependencies": { + "concordance": "^5.0.4", + "loupe": "^2.3.6", + "pretty-format": "^27.5.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/abab": { "version": "2.0.6", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true }, "node_modules/acorn": { - "version": "8.8.1", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4267,6 +3754,15 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/adm-zip": { "version": "0.5.10", "dev": true, @@ -4322,31 +3818,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "dev": true, @@ -4357,6 +3828,7 @@ }, "node_modules/ansi-styles": { "version": "3.2.1", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -4377,14 +3849,6 @@ "node": ">= 8" } }, - "node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/aria-query": { "version": "4.2.2", "dev": true, @@ -4459,6 +3923,15 @@ "node": ">=0.10.0" } }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/ast-types-flow": { "version": "0.0.7", "dev": true, @@ -4506,118 +3979,9 @@ "license": "Apache-2.0", "peer": true }, - "node_modules/babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.3.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.7", @@ -4630,6 +3994,7 @@ }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { "version": "6.3.0", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4637,6 +4002,7 @@ }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.6.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.3", @@ -4648,6 +4014,7 @@ }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.4.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.3" @@ -4656,44 +4023,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/balanced-match": { "version": "1.0.0", "dev": true, @@ -4711,6 +4040,12 @@ "version": "3.7.2", "license": "MIT" }, + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true + }, "node_modules/bootstrap": { "version": "5.2.3", "funding": [ @@ -4758,6 +4093,7 @@ }, "node_modules/browserslist": { "version": "4.21.4", + "dev": true, "funding": [ { "type": "opencollective", @@ -4782,14 +4118,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/bser": { - "version": "2.1.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, "node_modules/buffer-from": { "version": "1.1.1", "dev": true, @@ -4806,6 +4134,70 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/c8": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", + "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/c8/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/c8/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.2", "license": "MIT", @@ -4825,17 +4217,6 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/camelcase-keys": { "version": "6.2.2", "dev": true, @@ -4864,6 +4245,7 @@ "version": "1.0.30001480", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001480.tgz", "integrity": "sha512-q7cpoPPvZYgtyC4VaBSN0Bt+PJ4c4EYRf0DrduInOz2SkFpHD5p3LnvEpqBp7UnJn+8x1Ogl1s38saUxe+ihQQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -4879,6 +4261,24 @@ } ] }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "5.2.0", "dev": true, @@ -4890,14 +4290,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/chart.js": { "version": "4.1.1", "license": "MIT", @@ -4908,6 +4300,15 @@ "pnpm": "^7.0.0" } }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { "version": "3.5.3", "dev": true, @@ -4939,65 +4340,13 @@ "dev": true, "license": "MIT" }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "dev": true, - "license": "MIT" - }, "node_modules/classnames": { "version": "2.3.2", "license": "MIT" }, - "node_modules/cliui": { - "version": "8.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/color-convert": { "version": "1.9.3", + "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -5005,6 +4354,7 @@ }, "node_modules/color-convert/node_modules/color-name": { "version": "1.1.3", + "dev": true, "license": "MIT" }, "node_modules/color-name": { @@ -5045,6 +4395,40 @@ "dev": true, "license": "MIT" }, + "node_modules/concordance": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", + "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", + "dev": true, + "dependencies": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + }, + "engines": { + "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" + } + }, + "node_modules/concordance/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "dev": true, @@ -5052,6 +4436,7 @@ }, "node_modules/convert-source-map": { "version": "1.7.0", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.1" @@ -5066,6 +4451,7 @@ }, "node_modules/core-js-compat": { "version": "3.26.1", + "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.21.4" @@ -5101,6 +4487,35 @@ "node": ">=10" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/crypto-random-string": { "version": "2.0.0", "dev": true, @@ -5138,27 +4553,18 @@ "dev": true, "license": "MIT" }, - "node_modules/cssom": { - "version": "0.5.0", - "dev": true, - "license": "MIT" - }, "node_modules/cssstyle": { - "version": "2.3.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", "dev": true, - "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "rrweb-cssom": "^0.6.0" }, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "dev": true, - "license": "MIT" - }, "node_modules/csstype": { "version": "3.0.7", "license": "MIT" @@ -5195,16 +4601,17 @@ "peer": true }, "node_modules/data-urls": { - "version": "3.0.2", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", "dev": true, - "license": "MIT", "dependencies": { "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-url": "^12.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/date-fns": { @@ -5218,6 +4625,18 @@ "url": "https://opencollective.com/date-fns" } }, + "node_modules/date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "dependencies": { + "time-zone": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/debug": { "version": "2.6.9", "dev": true, @@ -5256,14 +4675,22 @@ } }, "node_modules/decimal.js": { - "version": "10.4.1", - "dev": true, - "license": "MIT" + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true }, - "node_modules/dedent": { - "version": "0.7.0", + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, - "license": "MIT" + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/deep-is": { "version": "0.1.3", @@ -5297,14 +4724,6 @@ "node": ">=0.4.0" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/diff-sequences": { "version": "29.3.1", "dev": true, @@ -5376,18 +4795,8 @@ }, "node_modules/electron-to-chromium": { "version": "1.4.271", - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -5490,6 +4899,7 @@ }, "node_modules/escalade": { "version": "3.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5497,86 +4907,12 @@ }, "node_modules/escape-string-regexp": { "version": "1.0.5", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.0" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { "version": "8.35.0", "dev": true, @@ -6032,19 +5368,6 @@ "node": ">=7.0.0" } }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/eslint/node_modules/debug": { "version": "4.3.4", "dev": true, @@ -6152,33 +5475,6 @@ "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "dev": true, @@ -6201,20 +5497,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/espree": { "version": "9.4.1", "dev": true, @@ -6231,18 +5513,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.5.0", "dev": true, @@ -6295,7 +5565,10 @@ "license": "MIT" }, "node_modules/esutils": { - "version": "2.0.2", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -6304,122 +5577,6 @@ "version": "1.0.31", "license": "MIT" }, - "node_modules/execa": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/execa/node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/npm-run-path": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/expect": { "version": "29.3.1", "dev": true, @@ -6440,6 +5597,12 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.2.12", "dev": true, @@ -6481,14 +5644,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "dev": true, @@ -6578,6 +5733,19 @@ "dev": true, "license": "ISC" }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/form-data": { "version": "4.0.0", "dev": true, @@ -6649,6 +5817,7 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -6662,6 +5831,15 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.1", "license": "MIT", @@ -6679,25 +5857,6 @@ "dev": true, "license": "ISC" }, - "node_modules/get-package-type": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "dev": true, @@ -6769,6 +5928,7 @@ }, "node_modules/globals": { "version": "11.9.0", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -6849,6 +6009,7 @@ }, "node_modules/has-flag": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -6997,14 +6158,6 @@ "dev": true, "license": "MIT" }, - "node_modules/human-signals": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, "node_modules/idb": { "version": "7.1.1", "license": "ISC" @@ -7061,24 +6214,6 @@ "node": ">=8" } }, - "node_modules/import-local": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "dev": true, @@ -7182,6 +6317,7 @@ }, "node_modules/is-core-module": { "version": "2.11.0", + "dev": true, "license": "MIT", "dependencies": { "has": "^1.0.3" @@ -7206,12 +6342,13 @@ "node": ">=0.10.0" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/is-glob": { @@ -7395,29 +6532,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "dev": true, @@ -7450,40 +6564,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, "node_modules/istanbul-reports": { "version": "3.1.5", "dev": true, @@ -7572,31 +6652,6 @@ "node": ">=8" } }, - "node_modules/jest": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", - "import-local": "^3.0.2", - "jest-cli": "^29.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, "node_modules/jest-canvas-mock": { "version": "2.4.0", "dev": true, @@ -7606,387 +6661,6 @@ "moo-color": "^1.0.2" } }, - "node_modules/jest-changed-files": { - "version": "29.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-circus": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-diff": { "version": "29.3.1", "dev": true, @@ -8089,162 +6763,6 @@ "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "29.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.3.1", - "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-node": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-get-type": { "version": "29.2.0", "dev": true, @@ -8253,72 +6771,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" - }, "node_modules/jest-matcher-utils": { "version": "29.3.1", "dev": true, @@ -8528,482 +6980,6 @@ "node": ">=8" } }, - "node_modules/jest-mock": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.3.1", - "@types/node": "*", - "jest-util": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", - "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.3.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.8", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", @@ -9080,279 +7056,56 @@ "node": ">=8" } }, - "node_modules/jest-validate": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.3.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "leven": "^3.1.0", - "pretty-format": "^29.3.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.3.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/js-sdsl": { "version": "4.1.5", "dev": true, "license": "MIT" }, + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "license": "MIT" }, - "node_modules/js-yaml": { - "version": "3.14.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/jsdom": { - "version": "20.0.1", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.0.0.tgz", + "integrity": "sha512-p5ZTEb5h+O+iU02t0GfEjAnkdYPrQSkfuTSMkMYyIoMvUNEHsbG0bHHbfXIcfTqD2UfvjQX7mmgiFsyRwGscVw==", "dev": true, - "license": "MIT", "dependencies": { "abab": "^2.0.6", - "acorn": "^8.8.0", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.1", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", "domexception": "^4.0.0", - "escodegen": "^2.0.0", "form-data": "^4.0.0", "html-encoding-sniffer": "^3.0.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.1", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^3.0.0", + "w3c-xmlserializer": "^4.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^2.0.0", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.9.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=16" }, "peerDependencies": { "canvas": "^2.5.0" @@ -9363,36 +7116,9 @@ } } }, - "node_modules/jsdom/node_modules/acorn-globals": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/jsdom/node_modules/acorn-walk": { - "version": "8.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsdom/node_modules/saxes": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/jsesc": { "version": "2.5.2", + "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -9423,6 +7149,7 @@ }, "node_modules/json5": { "version": "2.2.3", + "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -9431,6 +7158,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/jsonpointer": { "version": "5.0.1", "dev": true, @@ -9460,14 +7193,6 @@ "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/known-css-properties": { "version": "0.26.0", "dev": true, @@ -9517,6 +7242,18 @@ "dev": true, "license": "MIT" }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/locate-path": { "version": "6.0.0", "dev": true, @@ -9537,6 +7274,7 @@ }, "node_modules/lodash.debounce": { "version": "4.0.8", + "dev": true, "license": "MIT" }, "node_modules/lodash.get": { @@ -9568,6 +7306,15 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "dev": true, @@ -9620,14 +7367,6 @@ "semver": "bin/semver.js" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, "node_modules/map-obj": { "version": "4.3.0", "dev": true, @@ -9648,6 +7387,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "dependencies": { + "blueimp-md5": "^2.10.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/meow": { "version": "9.0.0", "dev": true, @@ -9770,6 +7521,18 @@ "node": ">= 6" } }, + "node_modules/mlly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.3.0.tgz", + "integrity": "sha512-HT5mcgIQKkOrZecOjOX3DJorTikWXwsBfpcr/MGBkhfWcjiqvnaL/9ppxvIUXfjT6xt4DVIAsN9fMUz1ev4bIw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2", + "pathe": "^1.1.0", + "pkg-types": "^1.0.3", + "ufo": "^1.1.2" + } + }, "node_modules/moo-color": { "version": "1.0.3", "dev": true, @@ -9805,13 +7568,9 @@ "dev": true, "license": "MIT" }, - "node_modules/node-int64": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/node-releases": { "version": "2.0.6", + "dev": true, "license": "MIT" }, "node_modules/normalize-package-data": { @@ -9851,9 +7610,10 @@ } }, "node_modules/nwsapi": { - "version": "2.2.2", - "dev": true, - "license": "MIT" + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", + "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", + "dev": true }, "node_modules/object-assign": { "version": "4.1.1", @@ -10054,9 +7814,10 @@ } }, "node_modules/parse5": { - "version": "7.1.1", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, - "license": "MIT", "dependencies": { "entities": "^4.4.0" }, @@ -10092,8 +7853,18 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", + "dev": true, "license": "MIT" }, "node_modules/path-type": { @@ -10104,8 +7875,24 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/picocolors": { "version": "1.0.0", + "dev": true, "license": "ISC" }, "node_modules/picomatch": { @@ -10119,65 +7906,15 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pirates": { - "version": "4.0.5", + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" } }, "node_modules/postcss": { @@ -10339,18 +8076,6 @@ "dev": true, "license": "MIT" }, - "node_modules/prompts": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/prop-types": { "version": "15.8.1", "license": "MIT", @@ -10366,9 +8091,10 @@ "license": "MIT" }, "node_modules/punycode": { - "version": "2.1.1", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -10827,10 +8553,12 @@ }, "node_modules/regenerate": { "version": "1.4.2", + "dev": true, "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.0", + "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2" @@ -10845,6 +8573,7 @@ }, "node_modules/regenerator-transform": { "version": "0.15.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" @@ -10863,6 +8592,7 @@ }, "node_modules/regexpu-core": { "version": "5.2.2", + "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", @@ -10878,10 +8608,12 @@ }, "node_modules/regjsgen": { "version": "0.7.1", + "dev": true, "license": "MIT" }, "node_modules/regjsparser": { "version": "0.9.1", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" @@ -10892,6 +8624,7 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "dev": true, "bin": { "jsesc": "bin/jsesc" } @@ -10928,6 +8661,7 @@ }, "node_modules/resolve": { "version": "1.22.1", + "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", @@ -10941,25 +8675,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "dev": true, @@ -10968,14 +8683,6 @@ "node": ">=4" } }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/reusify": { "version": "1.0.4", "dev": true, @@ -11015,6 +8722,12 @@ "fsevents": "~2.3.2" } }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, "node_modules/run-parallel": { "version": "1.2.0", "dev": true, @@ -11039,6 +8752,7 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", + "dev": true, "license": "MIT" }, "node_modules/safer-buffer": { @@ -11062,6 +8776,18 @@ "node": ">=12.0.0" } }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.0", "license": "MIT", @@ -11085,6 +8811,27 @@ "randombytes": "^2.1.0" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/side-channel": { "version": "1.0.4", "license": "MIT", @@ -11097,16 +8844,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, "node_modules/signal-exit": { "version": "3.0.7", "dev": true, "license": "ISC" }, - "node_modules/sisteransi": { - "version": "1.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/slash": { "version": "3.0.0", "dev": true, @@ -11156,14 +8904,6 @@ "node": ">=7.0.0" } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/source-map": { "version": "0.6.1", "dev": true, @@ -11222,11 +8962,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/stack-utils": { "version": "2.0.5", "dev": true, @@ -11246,16 +8981,30 @@ "node": ">=8" } }, - "node_modules/string-length": { - "version": "4.0.2", + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "node_modules/std-env": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", + "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" } }, "node_modules/string.prototype.matchall": { @@ -11356,14 +9105,6 @@ "node": ">=10" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/strip-indent": { "version": "3.0.0", "dev": true, @@ -11386,6 +9127,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", + "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/style-search": { "version": "0.1.0", "dev": true, @@ -11525,14 +9278,6 @@ } } }, - "node_modules/stylelint/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/ms": { "version": "2.1.2", "dev": true, @@ -11546,19 +9291,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/write-file-atomic": { "version": "4.0.2", "dev": true, @@ -11573,6 +9305,7 @@ }, "node_modules/supports-color": { "version": "5.5.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -11614,6 +9347,7 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -11661,32 +9395,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/temp-dir": { "version": "2.0.0", "dev": true, @@ -11752,13 +9465,42 @@ "dev": true, "license": "MIT" }, - "node_modules/tmpl": { - "version": "1.0.5", + "node_modules/time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", "dev": true, - "license": "BSD-3-Clause" + "engines": { + "node": ">=4" + } + }, + "node_modules/tinybench": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", + "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.5.0.tgz", + "integrity": "sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.0.tgz", + "integrity": "sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/to-fast-properties": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11794,14 +9536,15 @@ } }, "node_modules/tr46": { - "version": "3.0.0", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dev": true, - "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/trim-newlines": { @@ -11903,6 +9646,12 @@ "node": ">=12.20" } }, + "node_modules/ufo": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", + "integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==", + "dev": true + }, "node_modules/unbox-primitive": { "version": "1.0.1", "dev": true, @@ -11919,6 +9668,7 @@ }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11926,6 +9676,7 @@ }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", @@ -11937,6 +9688,7 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11944,6 +9696,7 @@ }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11979,6 +9732,7 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.9", + "dev": true, "funding": [ { "type": "opencollective", @@ -12112,6 +9866,52 @@ } } }, + "node_modules/vite-node": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.31.1.tgz", + "integrity": "sha512-BajE/IsNQ6JyizPzu9zRgHrBwczkAs0erQf/JRpgTIESpKvNj9/Gd0vxX905klLkb0I0SJVCKbdrl5c6FnqYKA==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.2.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-node/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vite-node/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/vite-plugin-pwa": { "version": "0.14.4", "dev": true, @@ -12155,23 +9955,141 @@ "dev": true, "license": "MIT" }, - "node_modules/w3c-xmlserializer": { - "version": "3.0.0", + "node_modules/vitest": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.31.1.tgz", + "integrity": "sha512-/dOoOgzoFk/5pTvg1E65WVaobknWREN15+HF+0ucudo3dDG/vCZoXTQrjIfEaWvQXmqScwkRodrTbM/ScMpRcQ==", "dev": true, - "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.31.1", + "@vitest/runner": "0.31.1", + "@vitest/snapshot": "0.31.1", + "@vitest/spy": "0.31.1", + "@vitest/utils": "0.31.1", + "acorn": "^8.8.2", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "concordance": "^5.0.4", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "std-env": "^3.3.2", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.5.0", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.31.1", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/vitest-canvas-mock": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/vitest-canvas-mock/-/vitest-canvas-mock-0.2.2.tgz", + "integrity": "sha512-xWieqkTMWa7hXbmHcUP9HOnn4qM8/0pK043BD5bD3ipCpr2tNuEn300necwB3Eh2WZp8QV2k1RelXx50fJDT6g==", + "dev": true, + "dependencies": { + "jest-canvas-mock": "^2.4.0" + }, + "peerDependencies": { + "vitest": "*" + } + }, + "node_modules/vitest/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" }, "engines": { "node": ">=12" } }, - "node_modules/walker": { - "version": "1.0.8", + "node_modules/vitest/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "makeerror": "1.0.12" + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" } }, "node_modules/warning": { @@ -12189,6 +10107,15 @@ "node": ">=12" } }, + "node_modules/well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/whatwg-encoding": { "version": "2.0.0", "dev": true, @@ -12213,22 +10140,24 @@ }, "node_modules/whatwg-mimetype": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/whatwg-url": { - "version": "11.0.0", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", "dev": true, - "license": "MIT", "dependencies": { - "tr46": "^3.0.0", + "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/which": { @@ -12257,6 +10186,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "dev": true, @@ -12704,42 +10649,22 @@ "node": ">=7.0.0" } }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "dev": true, "license": "ISC" }, "node_modules/ws": { - "version": "8.9.0", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -12752,8 +10677,9 @@ }, "node_modules/xml-name-validator": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=12" } @@ -12784,23 +10710,6 @@ "node": ">= 6" } }, - "node_modules/yargs": { - "version": "17.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/yargs-parser": { "version": "20.2.9", "dev": true, @@ -12809,35 +10718,6 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "dev": true, @@ -12856,25 +10736,20 @@ "dev": true }, "@ampproject/remapping": { - "version": "2.2.0", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "requires": { - "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } } }, "@babel/code-frame": { "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, "requires": { "@babel/highlight": "^7.18.6" } @@ -12882,12 +10757,14 @@ "@babel/compat-data": { "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", - "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==" + "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", + "dev": true }, "@babel/core": { "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.21.4", @@ -12908,15 +10785,18 @@ "dependencies": { "debug": { "version": "4.3.2", + "dev": true, "requires": { "ms": "2.1.2" } }, "ms": { - "version": "2.1.2" + "version": "2.1.2", + "dev": true }, "semver": { - "version": "6.3.0" + "version": "6.3.0", + "dev": true } } }, @@ -12924,6 +10804,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "dev": true, "requires": { "@babel/types": "^7.21.4", "@jridgewell/gen-mapping": "^0.3.2", @@ -12933,12 +10814,14 @@ }, "@babel/helper-annotate-as-pure": { "version": "7.18.6", + "dev": true, "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.18.9", + "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.18.6", "@babel/types": "^7.18.9" @@ -12948,6 +10831,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "dev": true, "requires": { "@babel/compat-data": "^7.21.4", "@babel/helper-validator-option": "^7.21.0", @@ -12958,15 +10842,18 @@ "dependencies": { "lru-cache": { "version": "5.1.1", + "dev": true, "requires": { "yallist": "^3.0.2" } }, "semver": { - "version": "6.3.0" + "version": "6.3.0", + "dev": true }, "yallist": { - "version": "3.1.1" + "version": "3.1.1", + "dev": true } } }, @@ -12974,6 +10861,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -12987,6 +10875,7 @@ }, "@babel/helper-create-regexp-features-plugin": { "version": "7.20.5", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "regexpu-core": "^5.2.1" @@ -12994,6 +10883,7 @@ }, "@babel/helper-define-polyfill-provider": { "version": "0.3.3", + "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -13005,29 +10895,35 @@ "dependencies": { "debug": { "version": "4.3.4", + "dev": true, "requires": { "ms": "2.1.2" } }, "ms": { - "version": "2.1.2" + "version": "2.1.2", + "dev": true }, "semver": { - "version": "6.3.0" + "version": "6.3.0", + "dev": true } } }, "@babel/helper-environment-visitor": { - "version": "7.18.9" + "version": "7.18.9", + "dev": true }, "@babel/helper-explode-assignable-expression": { "version": "7.18.6", + "dev": true, "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-function-name": { "version": "7.21.0", + "dev": true, "requires": { "@babel/template": "^7.20.7", "@babel/types": "^7.21.0" @@ -13035,6 +10931,7 @@ }, "@babel/helper-hoist-variables": { "version": "7.18.6", + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -13043,18 +10940,21 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "dev": true, "requires": { "@babel/types": "^7.21.0" } }, "@babel/helper-module-imports": { "version": "7.18.6", + "dev": true, "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { "version": "7.21.2", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -13068,15 +10968,18 @@ }, "@babel/helper-optimise-call-expression": { "version": "7.18.6", + "dev": true, "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.20.2" + "version": "7.20.2", + "dev": true }, "@babel/helper-remap-async-to-generator": { "version": "7.18.9", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -13086,6 +10989,7 @@ }, "@babel/helper-replace-supers": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.20.7", @@ -13097,35 +11001,42 @@ }, "@babel/helper-simple-access": { "version": "7.20.2", + "dev": true, "requires": { "@babel/types": "^7.20.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.20.0", + "dev": true, "requires": { "@babel/types": "^7.20.0" } }, "@babel/helper-split-export-declaration": { "version": "7.18.6", + "dev": true, "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-string-parser": { - "version": "7.19.4" + "version": "7.19.4", + "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1" + "version": "7.19.1", + "dev": true }, "@babel/helper-validator-option": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==" + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true }, "@babel/helper-wrap-function": { "version": "7.20.5", + "dev": true, "requires": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", @@ -13135,6 +11046,7 @@ }, "@babel/helpers": { "version": "7.21.0", + "dev": true, "requires": { "@babel/template": "^7.20.7", "@babel/traverse": "^7.21.0", @@ -13143,6 +11055,7 @@ }, "@babel/highlight": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -13151,6 +11064,7 @@ "dependencies": { "chalk": { "version": "2.4.2", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -13162,16 +11076,19 @@ "@babel/parser": { "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==" + "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -13180,6 +11097,7 @@ }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.20.2", @@ -13189,6 +11107,7 @@ }, "@babel/plugin-proposal-class-properties": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -13196,6 +11115,7 @@ }, "@babel/plugin-proposal-class-static-block": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.20.7", "@babel/helper-plugin-utils": "^7.20.2", @@ -13204,6 +11124,7 @@ }, "@babel/plugin-proposal-dynamic-import": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -13211,6 +11132,7 @@ }, "@babel/plugin-proposal-export-namespace-from": { "version": "7.18.9", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -13218,6 +11140,7 @@ }, "@babel/plugin-proposal-json-strings": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -13225,6 +11148,7 @@ }, "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -13232,6 +11156,7 @@ }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -13239,6 +11164,7 @@ }, "@babel/plugin-proposal-numeric-separator": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -13246,6 +11172,7 @@ }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.20.7", + "dev": true, "requires": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -13256,6 +11183,7 @@ }, "@babel/plugin-proposal-optional-catch-binding": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -13263,6 +11191,7 @@ }, "@babel/plugin-proposal-optional-chaining": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -13271,6 +11200,7 @@ }, "@babel/plugin-proposal-private-methods": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -13278,6 +11208,7 @@ }, "@babel/plugin-proposal-private-property-in-object": { "version": "7.20.5", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.20.5", @@ -13287,6 +11218,7 @@ }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -13294,12 +11226,6 @@ }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -13307,117 +11233,112 @@ }, "@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-import-assertions": { "version": "7.20.0", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0" } }, - "@babel/plugin-syntax-import-meta": { + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, "@babel/plugin-transform-arrow-functions": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-async-to-generator": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.20.2", @@ -13426,18 +11347,21 @@ }, "@babel/plugin-transform-block-scoped-functions": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { "version": "7.20.11", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-compilation-targets": "^7.20.7", @@ -13452,6 +11376,7 @@ }, "@babel/plugin-transform-computed-properties": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/template": "^7.20.7" @@ -13459,12 +11384,14 @@ }, "@babel/plugin-transform-destructuring": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-dotall-regex": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -13472,12 +11399,14 @@ }, "@babel/plugin-transform-duplicate-keys": { "version": "7.18.9", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-exponentiation-operator": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -13485,12 +11414,14 @@ }, "@babel/plugin-transform-for-of": { "version": "7.18.8", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { "version": "7.18.9", + "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-function-name": "^7.18.9", @@ -13499,18 +11430,21 @@ }, "@babel/plugin-transform-literals": { "version": "7.18.9", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-member-expression-literals": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-modules-amd": { "version": "7.20.11", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.20.11", "@babel/helper-plugin-utils": "^7.20.2" @@ -13518,6 +11452,7 @@ }, "@babel/plugin-transform-modules-commonjs": { "version": "7.20.11", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.20.11", "@babel/helper-plugin-utils": "^7.20.2", @@ -13526,6 +11461,7 @@ }, "@babel/plugin-transform-modules-systemjs": { "version": "7.20.11", + "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-module-transforms": "^7.20.11", @@ -13535,6 +11471,7 @@ }, "@babel/plugin-transform-modules-umd": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -13542,6 +11479,7 @@ }, "@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.20.5", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.20.5", "@babel/helper-plugin-utils": "^7.20.2" @@ -13549,12 +11487,14 @@ }, "@babel/plugin-transform-new-target": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-object-super": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-replace-supers": "^7.18.6" @@ -13562,38 +11502,18 @@ }, "@babel/plugin-transform-parameters": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-property-literals": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-transform-react-display-name": { - "version": "7.18.6", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.20.7", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.20.7" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "requires": { - "@babel/plugin-transform-react-jsx": "^7.18.6" - } - }, "@babel/plugin-transform-react-jsx-self": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", @@ -13610,15 +11530,9 @@ "@babel/helper-plugin-utils": "^7.19.0" } }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, "@babel/plugin-transform-regenerator": { "version": "7.20.5", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "regenerator-transform": "^0.15.1" @@ -13626,18 +11540,21 @@ }, "@babel/plugin-transform-reserved-words": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-shorthand-properties": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-spread": { "version": "7.20.7", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" @@ -13645,41 +11562,35 @@ }, "@babel/plugin-transform-sticky-regex": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-template-literals": { "version": "7.18.9", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typeof-symbol": { "version": "7.18.9", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/plugin-transform-typescript": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", - "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" - } - }, "@babel/plugin-transform-unicode-escapes": { "version": "7.18.10", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { "version": "7.18.6", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -13687,6 +11598,7 @@ }, "@babel/preset-env": { "version": "7.20.2", + "dev": true, "requires": { "@babel/compat-data": "^7.20.1", "@babel/helper-compilation-targets": "^7.20.0", @@ -13766,12 +11678,14 @@ }, "dependencies": { "semver": { - "version": "6.3.0" + "version": "6.3.0", + "dev": true } } }, "@babel/preset-modules": { "version": "0.1.5", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -13780,27 +11694,6 @@ "esutils": "^2.0.2" } }, - "@babel/preset-react": { - "version": "7.18.6", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" - } - }, - "@babel/preset-typescript": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", - "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-transform-typescript": "^7.21.0" - } - }, "@babel/runtime": { "version": "7.17.0", "requires": { @@ -13818,6 +11711,7 @@ }, "@babel/template": { "version": "7.20.7", + "dev": true, "requires": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.20.7", @@ -13828,6 +11722,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", + "dev": true, "requires": { "@babel/code-frame": "^7.21.4", "@babel/generator": "^7.21.4", @@ -13843,12 +11738,14 @@ "dependencies": { "debug": { "version": "4.2.0", + "dev": true, "requires": { "ms": "2.1.2" } }, "ms": { - "version": "2.1.2" + "version": "2.1.2", + "dev": true } } }, @@ -13856,6 +11753,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "dev": true, "requires": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -14157,210 +12055,12 @@ "version": "1.2.1", "dev": true }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "dev": true - } - } - }, "@istanbuljs/schema": { - "version": "0.1.2", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, - "@jest/console": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/core": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", - "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "pretty-format": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/environment": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "jest-mock": "^29.3.1" - } - }, - "@jest/expect": { - "version": "29.3.1", - "dev": true, - "requires": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" - } - }, "@jest/expect-utils": { "version": "29.3.1", "dev": true, @@ -14368,93 +12068,6 @@ "jest-get-type": "^29.2.0" } }, - "@jest/fake-timers": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" - } - }, - "@jest/globals": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" - } - }, - "@jest/reporters": { - "version": "29.3.1", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "@jest/schemas": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", @@ -14464,105 +12077,6 @@ "@sinclair/typebox": "^0.25.16" } }, - "@jest/source-map": { - "version": "29.2.0", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/test-result": "^29.3.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "convert-source-map": { - "version": "2.0.0", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "write-file-atomic": { - "version": "4.0.2", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - } - } - }, "@jest/types": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", @@ -14614,6 +12128,7 @@ }, "@jridgewell/gen-mapping": { "version": "0.3.2", + "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -14621,10 +12136,12 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.1.0" + "version": "3.1.0", + "dev": true }, "@jridgewell/set-array": { - "version": "1.1.1" + "version": "1.1.1", + "dev": true }, "@jridgewell/source-map": { "version": "0.3.2", @@ -14635,10 +12152,12 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14" + "version": "1.4.14", + "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.17", + "dev": true, "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -14741,20 +12260,6 @@ "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", "dev": true }, - "@sinonjs/commons": { - "version": "1.8.6", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "9.1.2", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, "@streamparser/json": { "version": "0.0.10" }, @@ -14915,6 +12420,8 @@ "@types/babel__core": { "version": "7.1.20", "dev": true, + "optional": true, + "peer": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -14926,6 +12433,8 @@ "@types/babel__generator": { "version": "7.6.4", "dev": true, + "optional": true, + "peer": true, "requires": { "@babel/types": "^7.0.0" } @@ -14933,6 +12442,8 @@ "@types/babel__template": { "version": "7.4.1", "dev": true, + "optional": true, + "peer": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -14941,10 +12452,27 @@ "@types/babel__traverse": { "version": "7.0.15", "dev": true, + "optional": true, + "peer": true, "requires": { "@babel/types": "^7.3.0" } }, + "@types/chai": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", + "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "dev": true + }, + "@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, "@types/estree": { "version": "1.0.0", "dev": true @@ -14953,13 +12481,6 @@ "version": "7946.0.7", "dev": true }, - "@types/graceful-fs": { - "version": "4.1.5", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/hoist-non-react-statics": { "version": "3.3.1", "requires": { @@ -15012,15 +12533,6 @@ } } }, - "@types/jsdom": { - "version": "20.0.0", - "dev": true, - "requires": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, "@types/json-schema": { "version": "7.0.11", "dev": true @@ -15060,10 +12572,6 @@ "version": "4.0.0", "dev": true }, - "@types/prettier": { - "version": "2.7.2", - "dev": true - }, "@types/prop-types": { "version": "15.7.3" }, @@ -15176,10 +12684,6 @@ "@types/jest": "*" } }, - "@types/tough-cookie": { - "version": "4.0.2", - "dev": true - }, "@types/trusted-types": { "version": "2.0.2", "dev": true @@ -15378,12 +12882,122 @@ } } }, + "@vitest/coverage-c8": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.31.1.tgz", + "integrity": "sha512-6TkjQpmgYez7e3dbAUoYdRXxWN81BojCmUILJwgCy39uZFG33DsQ0rSRSZC9beAEdCZTpxR63nOvd9hxDQcJ0g==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.1", + "c8": "^7.13.0", + "magic-string": "^0.30.0", + "picocolors": "^1.0.0", + "std-env": "^3.3.2" + }, + "dependencies": { + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + } + } + }, + "@vitest/expect": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.1.tgz", + "integrity": "sha512-BV1LyNvhnX+eNYzJxlHIGPWZpwJFZaCcOIzp2CNG0P+bbetenTupk6EO0LANm4QFt0TTit+yqx7Rxd1qxi/SQA==", + "dev": true, + "requires": { + "@vitest/spy": "0.31.1", + "@vitest/utils": "0.31.1", + "chai": "^4.3.7" + } + }, + "@vitest/runner": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.31.1.tgz", + "integrity": "sha512-imWuc82ngOtxdCUpXwtEzZIuc1KMr+VlQ3Ondph45VhWoQWit5yvG/fFcldbnCi8DUuFi+NmNx5ehMUw/cGLUw==", + "dev": true, + "requires": { + "@vitest/utils": "0.31.1", + "concordance": "^5.0.4", + "p-limit": "^4.0.0", + "pathe": "^1.1.0" + }, + "dependencies": { + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "@vitest/snapshot": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.31.1.tgz", + "integrity": "sha512-L3w5uU9bMe6asrNzJ8WZzN+jUTX4KSgCinEJPXyny0o90fG4FPQMV0OWsq7vrCWfQlAilMjDnOF9nP8lidsJ+g==", + "dev": true, + "requires": { + "magic-string": "^0.30.0", + "pathe": "^1.1.0", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + } + } + }, + "@vitest/spy": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.31.1.tgz", + "integrity": "sha512-1cTpt2m9mdo3hRLDyCG2hDQvRrePTDgEJBFQQNz1ydHHZy03EiA6EpFxY+7ODaY7vMRCie+WlFZBZ0/dQWyssQ==", + "dev": true, + "requires": { + "tinyspy": "^2.1.0" + } + }, + "@vitest/utils": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.31.1.tgz", + "integrity": "sha512-yFyRD5ilwojsZfo3E0BnH72pSVSuLg2356cN1tCEe/0RtDzxTPYwOomIC+eQbot7m6DRy4tPZw+09mB7NkbMmA==", + "dev": true, + "requires": { + "concordance": "^5.0.4", + "loupe": "^2.3.6", + "pretty-format": "^27.5.1" + } + }, "abab": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "acorn": { - "version": "8.8.1", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-jsx": { @@ -15391,6 +13005,12 @@ "dev": true, "requires": {} }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, "adm-zip": { "version": "0.5.10", "dev": true @@ -15425,25 +13045,13 @@ "uri-js": "^4.2.2" } }, - "ansi-escapes": { - "version": "4.3.2", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "dev": true - } - } - }, "ansi-regex": { "version": "5.0.1", "dev": true }, "ansi-styles": { "version": "3.2.1", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -15456,13 +13064,6 @@ "picomatch": "^2.0.4" } }, - "argparse": { - "version": "1.0.10", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "aria-query": { "version": "4.2.2", "dev": true, @@ -15508,6 +13109,12 @@ "version": "1.0.1", "dev": true }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, "ast-types-flow": { "version": "0.0.7", "dev": true, @@ -15539,81 +13146,9 @@ "dev": true, "peer": true }, - "babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "requires": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, "babel-plugin-polyfill-corejs2": { "version": "0.3.3", + "dev": true, "requires": { "@babel/compat-data": "^7.17.7", "@babel/helper-define-polyfill-provider": "^0.3.3", @@ -15621,12 +13156,14 @@ }, "dependencies": { "semver": { - "version": "6.3.0" + "version": "6.3.0", + "dev": true } } }, "babel-plugin-polyfill-corejs3": { "version": "0.6.0", + "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.3.3", "core-js-compat": "^3.25.1" @@ -15634,38 +13171,11 @@ }, "babel-plugin-polyfill-regenerator": { "version": "0.4.1", + "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.3.3" } }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, "balanced-match": { "version": "1.0.0", "dev": true @@ -15677,6 +13187,12 @@ "bluebird": { "version": "3.7.2" }, + "blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true + }, "bootstrap": { "version": "5.2.3", "requires": {} @@ -15704,6 +13220,7 @@ }, "browserslist": { "version": "4.21.4", + "dev": true, "requires": { "caniuse-lite": "^1.0.30001400", "electron-to-chromium": "^1.4.251", @@ -15711,13 +13228,6 @@ "update-browserslist-db": "^1.0.9" } }, - "bser": { - "version": "2.1.1", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, "buffer-from": { "version": "1.1.1", "dev": true @@ -15726,6 +13236,60 @@ "version": "3.3.0", "dev": true }, + "c8": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", + "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } + }, + "cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true + }, "call-bind": { "version": "1.0.2", "requires": { @@ -15737,10 +13301,6 @@ "version": "3.1.0", "dev": true }, - "camelcase": { - "version": "6.3.0", - "dev": true - }, "camelcase-keys": { "version": "6.2.2", "dev": true, @@ -15759,22 +13319,40 @@ "caniuse-lite": { "version": "1.0.30001480", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001480.tgz", - "integrity": "sha512-q7cpoPPvZYgtyC4VaBSN0Bt+PJ4c4EYRf0DrduInOz2SkFpHD5p3LnvEpqBp7UnJn+8x1Ogl1s38saUxe+ihQQ==" + "integrity": "sha512-q7cpoPPvZYgtyC4VaBSN0Bt+PJ4c4EYRf0DrduInOz2SkFpHD5p3LnvEpqBp7UnJn+8x1Ogl1s38saUxe+ihQQ==", + "dev": true + }, + "chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } }, "chalk": { "version": "5.2.0", "dev": true }, - "char-regex": { - "version": "1.0.2", - "dev": true - }, "chart.js": { "version": "4.1.1", "requires": { "@kurkle/color": "^0.3.0" } }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, "chokidar": { "version": "3.5.3", "dev": true, @@ -15793,53 +13371,19 @@ "version": "3.2.0", "dev": true }, - "cjs-module-lexer": { - "version": "1.2.2", - "dev": true - }, "classnames": { "version": "2.3.2" }, - "cliui": { - "version": "8.0.1", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, - "co": { - "version": "4.6.0", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "dev": true - }, "color-convert": { "version": "1.9.3", + "dev": true, "requires": { "color-name": "1.1.3" }, "dependencies": { "color-name": { - "version": "1.1.3" + "version": "1.1.3", + "dev": true } } }, @@ -15869,12 +13413,40 @@ "version": "0.0.1", "dev": true }, + "concordance": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", + "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", + "dev": true, + "requires": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + }, + "dependencies": { + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "confusing-browser-globals": { "version": "1.0.11", "dev": true }, "convert-source-map": { "version": "1.7.0", + "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -15887,6 +13459,7 @@ }, "core-js-compat": { "version": "3.26.1", + "dev": true, "requires": { "browserslist": "^4.21.4" } @@ -15907,6 +13480,28 @@ "yaml": "^1.10.0" } }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "crypto-random-string": { "version": "2.0.0", "dev": true @@ -15927,21 +13522,13 @@ "version": "1.2.1", "dev": true }, - "cssom": { - "version": "0.5.0", - "dev": true - }, "cssstyle": { - "version": "2.3.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", "dev": true, "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "dev": true - } + "rrweb-cssom": "^0.6.0" } }, "csstype": { @@ -15969,17 +13556,28 @@ "peer": true }, "data-urls": { - "version": "3.0.2", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", "dev": true, "requires": { "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-url": "^12.0.0" } }, "date-fns": { "version": "2.29.3" }, + "date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "requires": { + "time-zone": "^1.0.0" + } + }, "debug": { "version": "2.6.9", "dev": true, @@ -16007,12 +13605,19 @@ } }, "decimal.js": { - "version": "10.4.1", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, - "dedent": { - "version": "0.7.0", - "dev": true + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } }, "deep-is": { "version": "0.1.3", @@ -16033,10 +13638,6 @@ "version": "1.0.0", "dev": true }, - "detect-newline": { - "version": "3.1.0", - "dev": true - }, "diff-sequences": { "version": "29.3.1", "dev": true @@ -16082,10 +13683,7 @@ } }, "electron-to-chromium": { - "version": "1.4.271" - }, - "emittery": { - "version": "0.13.1", + "version": "1.4.271", "dev": true }, "emoji-regex": { @@ -16165,58 +13763,12 @@ } }, "escalade": { - "version": "3.1.1" + "version": "3.1.1", + "dev": true }, "escape-string-regexp": { - "version": "1.0.5" - }, - "escodegen": { - "version": "2.0.0", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "dev": true - }, - "levn": { - "version": "0.3.0", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } + "version": "1.0.5", + "dev": true }, "eslint": { "version": "8.35.0", @@ -16290,15 +13842,6 @@ "color-name": "~1.1.4" } }, - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "debug": { "version": "4.3.4", "dev": true, @@ -16358,21 +13901,6 @@ "version": "2.1.2", "dev": true }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, "supports-color": { "version": "7.2.0", "dev": true, @@ -16383,13 +13911,6 @@ "type-fest": { "version": "0.20.2", "dev": true - }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -16644,10 +14165,6 @@ "eslint-visitor-keys": "^3.3.0" } }, - "esprima": { - "version": "4.0.1", - "dev": true - }, "esquery": { "version": "1.5.0", "dev": true, @@ -16683,81 +14200,14 @@ "dev": true }, "esutils": { - "version": "2.0.2" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true }, "event-source-polyfill": { "version": "1.0.31" }, - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "mimic-fn": { - "version": "2.1.0", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "exit": { - "version": "0.1.2", - "dev": true - }, "expect": { "version": "29.3.1", "dev": true, @@ -16773,6 +14223,12 @@ "version": "3.1.3", "dev": true }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, "fast-glob": { "version": "3.2.12", "dev": true, @@ -16803,13 +14259,6 @@ "reusify": "^1.0.4" } }, - "fb-watchman": { - "version": "2.0.1", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, "file-entry-cache": { "version": "6.0.1", "dev": true, @@ -16873,6 +14322,16 @@ "version": "3.2.7", "dev": true }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, "form-data": { "version": "4.0.0", "dev": true, @@ -16921,12 +14380,19 @@ "version": "1.1.1" }, "gensync": { - "version": "1.0.0-beta.2" + "version": "1.0.0-beta.2", + "dev": true }, "get-caller-file": { "version": "2.0.5", "dev": true }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, "get-intrinsic": { "version": "1.1.1", "requires": { @@ -16939,14 +14405,6 @@ "version": "3.0.2", "dev": true }, - "get-package-type": { - "version": "0.1.0", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "dev": true - }, "get-symbol-description": { "version": "1.0.0", "dev": true, @@ -16991,7 +14449,8 @@ } }, "globals": { - "version": "11.9.0" + "version": "11.9.0", + "dev": true }, "globby": { "version": "11.1.0", @@ -17042,7 +14501,8 @@ "dev": true }, "has-flag": { - "version": "3.0.0" + "version": "3.0.0", + "dev": true }, "has-symbols": { "version": "1.0.3" @@ -17131,10 +14591,6 @@ } } }, - "human-signals": { - "version": "2.1.0", - "dev": true - }, "idb": { "version": "7.1.1" }, @@ -17168,14 +14624,6 @@ "version": "4.0.0", "dev": true }, - "import-local": { - "version": "3.1.0", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, "imurmurhash": { "version": "0.1.4", "dev": true @@ -17241,6 +14689,7 @@ }, "is-core-module": { "version": "2.11.0", + "dev": true, "requires": { "has": "^1.0.3" } @@ -17253,8 +14702,10 @@ "version": "2.1.1", "dev": true }, - "is-generator-fn": { - "version": "2.1.0", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { @@ -17352,23 +14803,6 @@ "version": "3.2.0", "dev": true }, - "istanbul-lib-instrument": { - "version": "5.1.0", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, "istanbul-lib-report": { "version": "3.0.0", "dev": true, @@ -17391,28 +14825,6 @@ } } }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "dev": true - } - } - }, "istanbul-reports": { "version": "3.1.5", "dev": true, @@ -17466,16 +14878,6 @@ } } }, - "jest": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", - "import-local": "^3.0.2", - "jest-cli": "^29.3.1" - } - }, "jest-canvas-mock": { "version": "2.4.0", "dev": true, @@ -17484,244 +14886,6 @@ "moo-color": "^1.0.2" } }, - "jest-changed-files": { - "version": "29.2.0", - "dev": true, - "requires": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-circus": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "pretty-format": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-cli": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-config": { - "version": "29.3.1", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "pretty-format": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "jest-diff": { "version": "29.3.1", "dev": true, @@ -17786,155 +14950,10 @@ } } }, - "jest-docblock": { - "version": "29.2.0", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "pretty-format": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-environment-jsdom": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1", - "jsdom": "^20.0.0" - } - }, - "jest-environment-node": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" - } - }, "jest-get-type": { "version": "29.2.0", "dev": true }, - "jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.3.1", - "dev": true, - "requires": { - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - }, - "pretty-format": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "dev": true - } - } - }, "jest-matcher-utils": { "version": "29.3.1", "dev": true, @@ -18068,319 +15087,6 @@ } } }, - "jest-mock": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "@types/node": "*", - "jest-util": "^29.3.1" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true - }, - "jest-resolve": { - "version": "29.3.1", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "29.3.1", - "dev": true, - "requires": { - "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" - } - }, - "jest-runner": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.13", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-runtime": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", - "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "strip-bom": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-snapshot": { - "version": "29.3.1", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.3.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", - "semver": "^7.3.5" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "pretty-format": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "dev": true - }, - "semver": { - "version": "7.3.8", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "jest-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", @@ -18430,216 +15136,53 @@ } } }, - "jest-validate": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "leven": "^3.1.0", - "pretty-format": "^29.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "pretty-format": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-watcher": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.3.1", - "string-length": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "js-sdsl": { "version": "4.1.5", "dev": true }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "dev": true + }, "js-tokens": { "version": "4.0.0" }, - "js-yaml": { - "version": "3.14.0", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "jsdom": { - "version": "20.0.1", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.0.0.tgz", + "integrity": "sha512-p5ZTEb5h+O+iU02t0GfEjAnkdYPrQSkfuTSMkMYyIoMvUNEHsbG0bHHbfXIcfTqD2UfvjQX7mmgiFsyRwGscVw==", "dev": true, "requires": { "abab": "^2.0.6", - "acorn": "^8.8.0", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.1", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", "domexception": "^4.0.0", - "escodegen": "^2.0.0", "form-data": "^4.0.0", "html-encoding-sniffer": "^3.0.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.1", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^3.0.0", + "w3c-xmlserializer": "^4.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^2.0.0", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.9.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", "xml-name-validator": "^4.0.0" - }, - "dependencies": { - "acorn-globals": { - "version": "7.0.1", - "dev": true, - "requires": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "acorn-walk": { - "version": "8.2.0", - "dev": true - }, - "saxes": { - "version": "6.0.0", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - } } }, "jsesc": { - "version": "2.5.2" + "version": "2.5.2", + "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -18658,7 +15201,14 @@ "dev": true }, "json5": { - "version": "2.2.3" + "version": "2.2.3", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true }, "jsonpointer": { "version": "5.0.1", @@ -18677,10 +15227,6 @@ "version": "6.0.3", "dev": true }, - "kleur": { - "version": "3.0.3", - "dev": true - }, "known-css-properties": { "version": "0.26.0", "dev": true @@ -18717,6 +15263,12 @@ "version": "1.1.6", "dev": true }, + "local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true + }, "locate-path": { "version": "6.0.0", "dev": true, @@ -18728,7 +15280,8 @@ "version": "4.17.21" }, "lodash.debounce": { - "version": "4.0.8" + "version": "4.0.8", + "dev": true }, "lodash.get": { "version": "4.4.2" @@ -18751,6 +15304,15 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, "lru-cache": { "version": "6.0.0", "dev": true, @@ -18782,13 +15344,6 @@ } } }, - "makeerror": { - "version": "1.0.12", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, "map-obj": { "version": "4.3.0", "dev": true @@ -18797,6 +15352,15 @@ "version": "2.1.3", "dev": true }, + "md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "requires": { + "blueimp-md5": "^2.10.0" + } + }, "meow": { "version": "9.0.0", "dev": true, @@ -18876,6 +15440,18 @@ "kind-of": "^6.0.3" } }, + "mlly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.3.0.tgz", + "integrity": "sha512-HT5mcgIQKkOrZecOjOX3DJorTikWXwsBfpcr/MGBkhfWcjiqvnaL/9ppxvIUXfjT6xt4DVIAsN9fMUz1ev4bIw==", + "dev": true, + "requires": { + "acorn": "^8.8.2", + "pathe": "^1.1.0", + "pkg-types": "^1.0.3", + "ufo": "^1.1.2" + } + }, "moo-color": { "version": "1.0.3", "dev": true, @@ -18900,12 +15476,9 @@ "version": "1.4.0", "dev": true }, - "node-int64": { - "version": "0.4.0", - "dev": true - }, "node-releases": { - "version": "2.0.6" + "version": "2.0.6", + "dev": true }, "normalize-package-data": { "version": "3.0.3", @@ -18931,7 +15504,9 @@ "dev": true }, "nwsapi": { - "version": "2.2.2", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", + "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", "dev": true }, "object-assign": { @@ -19056,7 +15631,9 @@ } }, "parse5": { - "version": "7.1.1", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, "requires": { "entities": "^4.4.0" @@ -19077,57 +15654,49 @@ "version": "1.0.1", "dev": true }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { - "version": "1.0.7" + "version": "1.0.7", + "dev": true }, "path-type": { "version": "4.0.0", "dev": true }, + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, "picocolors": { - "version": "1.0.0" + "version": "1.0.0", + "dev": true }, "picomatch": { "version": "2.3.1", "dev": true }, - "pirates": { - "version": "4.0.5", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", + "pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", "dev": true, "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "dev": true - } + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" } }, "postcss": { @@ -19219,14 +15788,6 @@ } } }, - "prompts": { - "version": "2.4.2", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, "prop-types": { "version": "15.8.1", "requires": { @@ -19240,7 +15801,9 @@ "dev": true }, "punycode": { - "version": "2.1.1", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "qs": { @@ -19510,10 +16073,12 @@ "requires": {} }, "regenerate": { - "version": "1.4.2" + "version": "1.4.2", + "dev": true }, "regenerate-unicode-properties": { "version": "10.1.0", + "dev": true, "requires": { "regenerate": "^1.4.2" } @@ -19523,6 +16088,7 @@ }, "regenerator-transform": { "version": "0.15.1", + "dev": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -19533,6 +16099,7 @@ }, "regexpu-core": { "version": "5.2.2", + "dev": true, "requires": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", @@ -19543,16 +16110,19 @@ } }, "regjsgen": { - "version": "0.7.1" + "version": "0.7.1", + "dev": true }, "regjsparser": { "version": "0.9.1", + "dev": true, "requires": { "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { - "version": "0.5.0" + "version": "0.5.0", + "dev": true } } }, @@ -19577,33 +16147,17 @@ }, "resolve": { "version": "1.22.1", + "dev": true, "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, - "resolve-cwd": { - "version": "3.0.0", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "dev": true - } - } - }, "resolve-from": { "version": "4.0.0", "dev": true }, - "resolve.exports": { - "version": "1.1.0", - "dev": true - }, "reusify": { "version": "1.0.4", "dev": true @@ -19624,6 +16178,12 @@ "fsevents": "~2.3.2" } }, + "rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, "run-parallel": { "version": "1.2.0", "dev": true, @@ -19632,7 +16192,8 @@ } }, "safe-buffer": { - "version": "5.1.2" + "version": "5.1.2", + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -19647,6 +16208,15 @@ "source-map-js": ">=0.6.2 <2.0.0" } }, + "saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, "scheduler": { "version": "0.23.0", "requires": { @@ -19664,6 +16234,21 @@ "randombytes": "^2.1.0" } }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "side-channel": { "version": "1.0.4", "requires": { @@ -19672,12 +16257,14 @@ "object-inspect": "^1.9.0" } }, - "signal-exit": { - "version": "3.0.7", + "siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true }, - "sisteransi": { - "version": "1.0.5", + "signal-exit": { + "version": "3.0.7", "dev": true }, "slash": { @@ -19706,10 +16293,6 @@ "requires": { "color-name": "~1.1.4" } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true } } }, @@ -19757,10 +16340,6 @@ "version": "3.0.11", "dev": true }, - "sprintf-js": { - "version": "1.0.3", - "dev": true - }, "stack-utils": { "version": "2.0.5", "dev": true, @@ -19774,12 +16353,27 @@ } } }, - "string-length": { - "version": "4.0.2", + "stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "std-env": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", + "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "string.prototype.matchall": { @@ -19847,10 +16441,6 @@ "version": "2.0.1", "dev": true }, - "strip-final-newline": { - "version": "2.0.0", - "dev": true - }, "strip-indent": { "version": "3.0.0", "dev": true, @@ -19862,6 +16452,15 @@ "version": "3.1.1", "dev": true }, + "strip-literal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", + "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "dev": true, + "requires": { + "acorn": "^8.8.2" + } + }, "style-search": { "version": "0.1.0", "dev": true @@ -19921,10 +16520,6 @@ "ms": "2.1.2" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, "ms": { "version": "2.1.2", "dev": true @@ -19933,15 +16528,6 @@ "version": "5.0.0", "dev": true }, - "string-width": { - "version": "4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, "write-file-atomic": { "version": "4.0.2", "dev": true, @@ -19996,6 +16582,7 @@ }, "supports-color": { "version": "5.5.0", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -20022,7 +16609,8 @@ } }, "supports-preserve-symlinks-flag": { - "version": "1.0.0" + "version": "1.0.0", + "dev": true }, "svg-tags": { "version": "1.0.0", @@ -20053,22 +16641,9 @@ "uri-js": "^4.2.2" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, "json-schema-traverse": { "version": "1.0.0", "dev": true - }, - "string-width": { - "version": "4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } } } }, @@ -20115,12 +16690,33 @@ "version": "0.2.0", "dev": true }, - "tmpl": { - "version": "1.0.5", + "time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", + "dev": true + }, + "tinybench": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", + "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", + "dev": true + }, + "tinypool": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.5.0.tgz", + "integrity": "sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==", + "dev": true + }, + "tinyspy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.0.tgz", + "integrity": "sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==", "dev": true }, "to-fast-properties": { - "version": "2.0.0" + "version": "2.0.0", + "dev": true }, "to-regex-range": { "version": "5.0.1", @@ -20143,10 +16739,12 @@ } }, "tr46": { - "version": "3.0.0", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dev": true, "requires": { - "punycode": "^2.1.1" + "punycode": "^2.3.0" } }, "trim-newlines": { @@ -20210,6 +16808,12 @@ "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true }, + "ufo": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", + "integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==", + "dev": true + }, "unbox-primitive": { "version": "1.0.1", "dev": true, @@ -20221,20 +16825,24 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0" + "version": "2.0.0", + "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", + "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "2.1.0" + "version": "2.1.0", + "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.1.0" + "version": "2.1.0", + "dev": true }, "unique-string": { "version": "2.0.0", @@ -20253,6 +16861,7 @@ }, "update-browserslist-db": { "version": "1.0.9", + "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -20317,6 +16926,37 @@ "rollup": "^3.20.2" } }, + "vite-node": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.31.1.tgz", + "integrity": "sha512-BajE/IsNQ6JyizPzu9zRgHrBwczkAs0erQf/JRpgTIESpKvNj9/Gd0vxX905klLkb0I0SJVCKbdrl5c6FnqYKA==", + "dev": true, + "requires": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.2.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "vite-plugin-pwa": { "version": "0.14.4", "dev": true, @@ -20343,20 +16983,83 @@ } } }, + "vitest": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.31.1.tgz", + "integrity": "sha512-/dOoOgzoFk/5pTvg1E65WVaobknWREN15+HF+0ucudo3dDG/vCZoXTQrjIfEaWvQXmqScwkRodrTbM/ScMpRcQ==", + "dev": true, + "requires": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.31.1", + "@vitest/runner": "0.31.1", + "@vitest/snapshot": "0.31.1", + "@vitest/spy": "0.31.1", + "@vitest/utils": "0.31.1", + "acorn": "^8.8.2", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "concordance": "^5.0.4", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "std-env": "^3.3.2", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.5.0", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.31.1", + "why-is-node-running": "^2.2.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "vitest-canvas-mock": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/vitest-canvas-mock/-/vitest-canvas-mock-0.2.2.tgz", + "integrity": "sha512-xWieqkTMWa7hXbmHcUP9HOnn4qM8/0pK043BD5bD3ipCpr2tNuEn300necwB3Eh2WZp8QV2k1RelXx50fJDT6g==", + "dev": true, + "requires": { + "jest-canvas-mock": "^2.4.0" + } + }, "w3c-xmlserializer": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, "requires": { "xml-name-validator": "^4.0.0" } }, - "walker": { - "version": "1.0.8", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, "warning": { "version": "4.0.3", "requires": { @@ -20367,6 +17070,12 @@ "version": "7.0.0", "dev": true }, + "well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true + }, "whatwg-encoding": { "version": "2.0.0", "dev": true, @@ -20385,13 +17094,17 @@ }, "whatwg-mimetype": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", "dev": true }, "whatwg-url": { - "version": "11.0.0", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", "dev": true, "requires": { - "tr46": "^3.0.0", + "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" } }, @@ -20413,6 +17126,16 @@ "is-symbol": "^1.0.3" } }, + "why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "requires": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + } + }, "word-wrap": { "version": "1.2.3", "dev": true @@ -20735,19 +17458,6 @@ "requires": { "color-name": "~1.1.4" } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } } } }, @@ -20756,12 +17466,16 @@ "dev": true }, "ws": { - "version": "8.9.0", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "requires": {} }, "xml-name-validator": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true }, "xmlchars": { @@ -20780,38 +17494,6 @@ "version": "1.10.2", "dev": true }, - "yargs": { - "version": "17.6.2", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "dev": true - } - } - }, "yargs-parser": { "version": "20.2.9", "dev": true diff --git a/package.json b/package.json index 0a9a2eb5..fa8e1f43 100644 --- a/package.json +++ b/package.json @@ -17,16 +17,13 @@ "preview": "vite preview --host=0.0.0.0", "build": "npm run types && vite build && node scripts/replace-version.mjs", "build:dist": "npm run build && node scripts/create-dist-file.mjs", - "test": "jest --env=jsdom --colors", - "test:coverage": "npm run test -- --coverage --coverageReporters=text --coverageReporters=text-summary", + "test": "vitest run --run", + "test:coverage": "npm run test -- --coverage", "test:ci": "npm run test:coverage -- --coverageReporters=clover --ci", "test:pretty": "npm run test:coverage -- --coverageReporters=html", "test:verbose": "npm run test -- --verbose" }, "dependencies": { - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.0", "@fortawesome/fontawesome-free": "^6.3.0", "@fortawesome/fontawesome-svg-core": "^6.3.0", "@fortawesome/free-brands-svg-icons": "^6.3.0", @@ -78,7 +75,6 @@ "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", "@total-typescript/shoehorn": "^0.1.0", - "@types/jest": "^29.2.4", "@types/json2csv": "^5.0.3", "@types/leaflet": "^1.9.0", "@types/qs": "^6.9.7", @@ -91,20 +87,20 @@ "@types/react-tag-autocomplete": "^6.3.0", "@types/uuid": "^8.3.4", "@vitejs/plugin-react": "^4.0.0", + "@vitest/coverage-c8": "^0.31.1", "adm-zip": "^0.5.10", - "babel-jest": "^29.5.0", "chalk": "^5.2.0", "eslint": "^8.30.0", "identity-obj-proxy": "^3.0.0", - "jest": "^29.3.1", - "jest-canvas-mock": "^2.4.0", - "jest-environment-jsdom": "^29.3.1", + "jsdom": "^22.0.0", "resize-observer-polyfill": "^1.5.1", "sass": "^1.57.1", "stylelint": "^14.16.0", "typescript": "^5.0.2", "vite": "^4.3.1", - "vite-plugin-pwa": "^0.14.4" + "vite-plugin-pwa": "^0.14.4", + "vitest": "^0.31.1", + "vitest-canvas-mock": "^0.2.2" }, "browserslist": [ ">0.2%", diff --git a/tsconfig.json b/tsconfig.json index c25d8a13..f4da7ba5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "allowSyntheticDefaultImports": true, "jsx": "react-jsx", "lib": ["dom", "dom.iterable", "esnext"], - "types": ["vite/client"], + "types": ["vite/client", "vitest/globals"], "module": "esnext", "moduleResolution": "node", "noEmit": true, diff --git a/vite.config.ts b/vite.config.ts index 36f0d8e5..09cd8ee5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,6 @@ import react from '@vitejs/plugin-react'; -import { defineConfig } from 'vite'; import { VitePWA } from 'vite-plugin-pwa'; +import { defineConfig } from 'vitest/config'; import { manifest } from './manifest'; import pack from './package.json'; @@ -24,4 +24,30 @@ export default defineConfig({ port: 3000, }, base: !homepage ? undefined : homepage, // Not using just homepage because empty string should be discarded + + test: { + globals: true, + environment: 'jsdom', + setupFiles: './config/test/setupTests.ts', + coverage: { + provider: 'c8', // TODO Try istanbul + reporter: ['text', 'text-summary', 'html', 'clover'], + include: [ + 'src/**/*.{ts,tsx}', + '!src/*.{ts,tsx}', + '!src/reducers/index.ts', + '!src/**/provideServices.ts', + '!src/container/*.ts', + ], + + // Required code coverage. Lower than this will make the check fail + statements: 90, + branches: 80, + functions: 85, + lines: 90, + }, + deps: { + inline: ['vitest-canvas-mock'], + }, + }, }); From 07fcb4e01639f51ccb3960c78ee3a42e96e70400 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 27 May 2023 11:57:26 +0200 Subject: [PATCH 2/8] Update tests to use vi instead of jest --- test/__mocks__/Window.mock.ts | 10 +- test/api/services/ShlinkApiClient.test.ts | 6 +- test/app/App.test.tsx | 2 +- test/common/AppUpdateBanner.test.tsx | 6 +- test/common/AsideMenu.test.tsx | 2 +- test/common/ErrorHandler.test.tsx | 8 +- test/common/Home.test.tsx | 2 +- test/common/MenuLayout.test.tsx | 10 +- test/common/NotFound.test.tsx | 2 +- test/common/ScrollToTop.test.tsx | 2 +- test/common/SimplePaginator.test.tsx | 2 +- test/common/services/HttpClient.test.ts | 4 +- test/common/services/ImageDownloader.test.ts | 4 +- test/common/services/ReportExporter.test.ts | 4 +- test/domains/DomainRow.test.tsx | 4 +- test/domains/DomainSelector.test.tsx | 4 +- test/domains/ManageDomains.test.tsx | 10 +- test/domains/helpers/DomainDropdown.test.tsx | 4 +- .../domains/helpers/DomainStatusIcon.test.tsx | 4 +- .../helpers/EditDomainRedirectsModal.test.tsx | 6 +- .../DomainStatusIcon.test.tsx.snap | 90 +- test/domains/reducers/domainRedirects.test.ts | 8 +- test/domains/reducers/domainsList.test.ts | 10 +- test/mercure/helpers/index.test.tsx | 8 +- test/mercure/reducers/mercureInfo.test.ts | 8 +- test/servers/CreateServer.test.tsx | 13 +- test/servers/DeleteServerModal.test.tsx | 11 +- test/servers/EditServer.test.tsx | 15 +- test/servers/ManageServers.test.tsx | 8 +- .../servers/ManageServersRowDropdown.test.tsx | 4 +- test/servers/Overview.test.tsx | 10 +- .../DeleteServerButton.test.tsx.snap | 57 +- .../ManageServersRow.test.tsx.snap | 99 +- .../helpers/DuplicatedServersModal.test.tsx | 6 +- .../servers/helpers/ImportServersBtn.test.tsx | 8 +- test/servers/helpers/ServerForm.test.tsx | 6 +- test/servers/reducers/remoteServers.test.ts | 8 +- test/servers/reducers/selectedServer.test.ts | 20 +- test/servers/reducers/servers.test.ts | 2 +- test/servers/services/ServersExporter.test.ts | 10 +- test/servers/services/ServersImporter.test.ts | 6 +- .../settings/RealTimeUpdatesSettings.test.tsx | 6 +- .../ShortUrlCreationSettings.test.tsx | 4 +- test/settings/ShortUrlsListSettings.test.tsx | 4 +- test/settings/TagsSettings.test.tsx | 4 +- test/settings/UserInterfaceSettings.test.tsx | 4 +- test/settings/VisitsSettings.test.tsx | 4 +- .../UserInterfaceSettings.test.tsx.snap | 56 +- test/short-urls/CreateShortUrl.test.tsx | 2 +- test/short-urls/EditShortUrl.test.tsx | 4 +- test/short-urls/ShortUrlForm.test.tsx | 4 +- .../short-urls/ShortUrlsFilteringBar.test.tsx | 16 +- test/short-urls/ShortUrlsList.test.tsx | 14 +- test/short-urls/ShortUrlsTable.test.tsx | 4 +- .../helpers/CreateShortUrlResult.test.tsx | 6 +- .../helpers/DeleteShortUrlModal.test.tsx | 8 +- .../helpers/ExportShortUrlsBtn.test.tsx | 8 +- test/short-urls/helpers/QrCodeModal.test.tsx | 4 +- .../helpers/ShortUrlsFilterDropdown.test.tsx | 2 +- test/short-urls/helpers/ShortUrlsRow.test.tsx | 10 +- .../__snapshots__/ShortUrlsRow.test.tsx.snap | 146 +- .../QrErrorCorrectionDropdown.test.tsx | 4 +- .../qr-codes/QrFormatDropdown.test.tsx | 4 +- .../reducers/shortUrlCreation.test.ts | 6 +- .../reducers/shortUrlDeletion.test.ts | 8 +- .../reducers/shortUrlDetail.test.ts | 6 +- .../reducers/shortUrlEdition.test.ts | 10 +- .../short-urls/reducers/shortUrlsList.test.ts | 8 +- test/tags/TagsList.test.tsx | 4 +- test/tags/TagsTable.test.tsx | 9 +- .../helpers/DeleteTagConfirmModal.test.tsx | 8 +- test/tags/helpers/EditTagModal.test.tsx | 10 +- test/tags/helpers/Tag.test.tsx | 10 +- test/tags/helpers/TagsSelector.test.tsx | 6 +- test/tags/reducers/tagDelete.test.ts | 6 +- test/tags/reducers/tagEdit.test.ts | 8 +- test/tags/reducers/tagsList.test.ts | 10 +- test/utils/Checkbox.test.tsx | 2 +- test/utils/CopyToClipboardIcon.test.tsx | 4 +- test/utils/DropdownBtnMenu.test.tsx | 2 +- test/utils/OrderingDropdown.test.tsx | 6 +- test/utils/PaginationDropdown.test.tsx | 4 +- .../CopyToClipboardIcon.test.tsx.snap | 22 +- .../__snapshots__/ExportBtn.test.tsx.snap | 20 +- .../__snapshots__/IconInput.test.tsx.snap | 86 +- .../dates/DateIntervalDropdownItems.test.tsx | 4 +- .../utils/dates/DateIntervalSelector.test.tsx | 2 +- test/utils/dates/DateRangeRow.test.tsx | 6 +- test/utils/dates/DateRangeSelector.test.tsx | 4 +- test/utils/services/ColorGenerator.test.ts | 6 +- test/utils/services/LocalStorage.test.ts | 6 +- .../services/__mocks__/ColorGenerator.mock.ts | 6 +- .../TableOrderIcon.test.tsx.snap | 38 +- test/visits/DomainVisits.test.tsx | 12 +- test/visits/NonOrphanVisits.test.tsx | 6 +- test/visits/OrphanVisits.test.tsx | 6 +- test/visits/ShortUrlVisits.test.tsx | 4 +- test/visits/ShortUrlVisitsHeader.test.tsx | 2 +- test/visits/TagVisits.test.tsx | 12 +- test/visits/TagVisitsHeader.test.tsx | 2 +- test/visits/VisitsHeader.test.tsx | 2 +- test/visits/VisitsStats.test.tsx | 4 +- test/visits/VisitsTable.test.tsx | 4 +- .../__snapshots__/DoughnutChart.test.tsx.snap | 26 +- .../HorizontalBarChart.test.tsx.snap | 522 ++++++- .../__snapshots__/LineChartCard.test.tsx.snap | 462 ++++++- .../SortableBarChartCard.test.tsx.snap | 1232 ++++++++++++++++- test/visits/helpers/MapModal.test.tsx | 2 +- .../helpers/VisitsFilterDropdown.test.tsx | 4 +- .../__snapshots__/MapModal.test.tsx.snap | 184 ++- .../OpenMapModalBtn.test.tsx.snap | 352 ++++- test/visits/reducers/domainVisits.test.ts | 6 +- test/visits/reducers/nonOrphanVisits.test.ts | 8 +- test/visits/reducers/orphanVisits.test.ts | 6 +- test/visits/reducers/shortUrlVisits.test.ts | 6 +- test/visits/reducers/tagVisits.test.ts | 6 +- test/visits/reducers/visitsOverview.test.ts | 6 +- 117 files changed, 3699 insertions(+), 325 deletions(-) diff --git a/test/__mocks__/Window.mock.ts b/test/__mocks__/Window.mock.ts index dbd91da6..8b718753 100644 --- a/test/__mocks__/Window.mock.ts +++ b/test/__mocks__/Window.mock.ts @@ -1,18 +1,18 @@ import { fromAny, fromPartial } from '@total-typescript/shoehorn'; const createLinkMock = () => ({ - setAttribute: jest.fn(), - click: jest.fn(), + setAttribute: vi.fn(), + click: vi.fn(), style: {}, }); -export const appendChild = jest.fn(); +export const appendChild = vi.fn(); -export const removeChild = jest.fn(); +export const removeChild = vi.fn(); export const windowMock = fromPartial({ document: fromAny({ - createElement: jest.fn(createLinkMock), + createElement: vi.fn(createLinkMock), body: { appendChild, removeChild }, }), }); diff --git a/test/api/services/ShlinkApiClient.test.ts b/test/api/services/ShlinkApiClient.test.ts index 8423e68d..3cd1d781 100644 --- a/test/api/services/ShlinkApiClient.test.ts +++ b/test/api/services/ShlinkApiClient.test.ts @@ -7,8 +7,8 @@ import type { ShortUrl, ShortUrlsOrder } from '../../../src/short-urls/data'; import type { OptionalString } from '../../../src/utils/utils'; describe('ShlinkApiClient', () => { - const fetchJson = jest.fn().mockResolvedValue({}); - const fetchEmpty = jest.fn().mockResolvedValue(undefined); + const fetchJson = vi.fn().mockResolvedValue({}); + const fetchEmpty = vi.fn().mockResolvedValue(undefined); const httpClient = fromPartial({ fetchJson, fetchEmpty }); const buildApiClient = () => new ShlinkApiClient(httpClient, '', ''); const shortCodesWithDomainCombinations: [string, OptionalString][] = [ @@ -17,7 +17,7 @@ describe('ShlinkApiClient', () => { ['abc123', 'example.com'], ]; - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('listShortUrls', () => { const expectedList = ['foo', 'bar']; diff --git a/test/app/App.test.tsx b/test/app/App.test.tsx index 6063b05a..ca1b9bdb 100644 --- a/test/app/App.test.tsx +++ b/test/app/App.test.tsx @@ -32,7 +32,7 @@ describe('', () => { ); }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders children components', () => { setUp(); diff --git a/test/common/AppUpdateBanner.test.tsx b/test/common/AppUpdateBanner.test.tsx index 4dfcd207..83ded1e2 100644 --- a/test/common/AppUpdateBanner.test.tsx +++ b/test/common/AppUpdateBanner.test.tsx @@ -3,11 +3,11 @@ import { AppUpdateBanner } from '../../src/common/AppUpdateBanner'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const toggle = jest.fn(); - const forceUpdate = jest.fn(); + const toggle = vi.fn(); + const forceUpdate = vi.fn(); const setUp = () => renderWithEvents(); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders initial state', () => { setUp(); diff --git a/test/common/AsideMenu.test.tsx b/test/common/AsideMenu.test.tsx index c0fa448a..9a4f7d25 100644 --- a/test/common/AsideMenu.test.tsx +++ b/test/common/AsideMenu.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { fromPartial } from '@total-typescript/shoehorn'; -import { MemoryRouter } from 'react-router-dom'; +import { MemoryRouter } from 'react-router'; import { AsideMenu as createAsideMenu } from '../../src/common/AsideMenu'; describe('', () => { diff --git a/test/common/ErrorHandler.test.tsx b/test/common/ErrorHandler.test.tsx index 41c82dde..5fd40c21 100644 --- a/test/common/ErrorHandler.test.tsx +++ b/test/common/ErrorHandler.test.tsx @@ -8,17 +8,17 @@ const ComponentWithError = () => { }; describe('', () => { - const reload = jest.fn(); + const reload = vi.fn(); const window = fromPartial({ location: { reload }, }); - const cons = fromPartial({ error: jest.fn() }); + const cons = fromPartial({ error: vi.fn() }); const ErrorHandler = createErrorHandler(window, cons); beforeEach(() => { - jest.spyOn(console, 'error').mockImplementation(() => {}); // Silence react errors + vi.spyOn(console, 'error').mockImplementation(() => {}); // Silence react errors }); - afterEach(jest.resetAllMocks); + afterEach(vi.resetAllMocks); it('renders children when no error has occurred', () => { render(Foo} />); diff --git a/test/common/Home.test.tsx b/test/common/Home.test.tsx index 8e619b89..92a7e1d2 100644 --- a/test/common/Home.test.tsx +++ b/test/common/Home.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { fromPartial } from '@total-typescript/shoehorn'; -import { MemoryRouter } from 'react-router-dom'; +import { MemoryRouter } from 'react-router'; import { Home } from '../../src/common/Home'; import type { ServersMap, ServerWithId } from '../../src/servers/data'; diff --git a/test/common/MenuLayout.test.tsx b/test/common/MenuLayout.test.tsx index a6ae0191..02e64c6c 100644 --- a/test/common/MenuLayout.test.tsx +++ b/test/common/MenuLayout.test.tsx @@ -6,7 +6,7 @@ import { MenuLayout as createMenuLayout } from '../../src/common/MenuLayout'; import type { NonReachableServer, NotFoundServer, SelectedServer } from '../../src/servers/data'; import type { SemVer } from '../../src/utils/helpers/version'; -jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useParams: jest.fn() })); +vi.mock('react-router-dom', async () => ({ ...(await vi.importActual('react-router-dom')), useParams: vi.fn() })); describe('', () => { const MenuLayout = createMenuLayout( @@ -31,9 +31,9 @@ describe('', () => { return render( , @@ -44,7 +44,7 @@ describe('', () => { (useParams as any).mockReturnValue({ serverId: 'abc123' }); }); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('shows loading indicator while loading server', () => { setUp(null); diff --git a/test/common/NotFound.test.tsx b/test/common/NotFound.test.tsx index f923a375..ce5f7dc6 100644 --- a/test/common/NotFound.test.tsx +++ b/test/common/NotFound.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '@testing-library/react'; -import { MemoryRouter } from 'react-router-dom'; +import { MemoryRouter } from 'react-router'; import { NotFound } from '../../src/common/NotFound'; describe('', () => { diff --git a/test/common/ScrollToTop.test.tsx b/test/common/ScrollToTop.test.tsx index f95907fc..e1d75933 100644 --- a/test/common/ScrollToTop.test.tsx +++ b/test/common/ScrollToTop.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '@testing-library/react'; -import { MemoryRouter } from 'react-router-dom'; +import { MemoryRouter } from 'react-router'; import { ScrollToTop } from '../../src/common/ScrollToTop'; describe('', () => { diff --git a/test/common/SimplePaginator.test.tsx b/test/common/SimplePaginator.test.tsx index 7b2c060a..f0b9e1ae 100644 --- a/test/common/SimplePaginator.test.tsx +++ b/test/common/SimplePaginator.test.tsx @@ -4,7 +4,7 @@ import { ELLIPSIS } from '../../src/utils/helpers/pagination'; describe('', () => { const setUp = (pagesCount: number, currentPage = 1) => render( - , + , ); it.each([-3, -2, 0, 1])('renders empty when the amount of pages is smaller than 2', (pagesCount) => { diff --git a/test/common/services/HttpClient.test.ts b/test/common/services/HttpClient.test.ts index ea01faf5..43b13ac4 100644 --- a/test/common/services/HttpClient.test.ts +++ b/test/common/services/HttpClient.test.ts @@ -1,10 +1,10 @@ import { HttpClient } from '../../../src/common/services/HttpClient'; describe('HttpClient', () => { - const fetch = jest.fn(); + const fetch = vi.fn(); const httpClient = new HttpClient(fetch); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('fetchJson', () => { it('throws json on success', async () => { diff --git a/test/common/services/ImageDownloader.test.ts b/test/common/services/ImageDownloader.test.ts index d7c80dc7..304a54e9 100644 --- a/test/common/services/ImageDownloader.test.ts +++ b/test/common/services/ImageDownloader.test.ts @@ -4,12 +4,12 @@ import { ImageDownloader } from '../../../src/common/services/ImageDownloader'; import { windowMock } from '../../__mocks__/Window.mock'; describe('ImageDownloader', () => { - const fetchBlob = jest.fn(); + const fetchBlob = vi.fn(); const httpClient = fromPartial({ fetchBlob }); let imageDownloader: ImageDownloader; beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); (global as any).URL = { createObjectURL: () => '' }; imageDownloader = new ImageDownloader(httpClient, windowMock); diff --git a/test/common/services/ReportExporter.test.ts b/test/common/services/ReportExporter.test.ts index 8fdc9cce..5dfa9cc8 100644 --- a/test/common/services/ReportExporter.test.ts +++ b/test/common/services/ReportExporter.test.ts @@ -4,10 +4,10 @@ import type { NormalizedVisit } from '../../../src/visits/types'; import { windowMock } from '../../__mocks__/Window.mock'; describe('ReportExporter', () => { - const jsonToCsv = jest.fn(); + const jsonToCsv = vi.fn(); let exporter: ReportExporter; - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); beforeEach(() => { (global as any).Blob = class Blob {}; (global as any).URL = { createObjectURL: () => '' }; diff --git a/test/domains/DomainRow.test.tsx b/test/domains/DomainRow.test.tsx index a6d2969a..f3d6bc3e 100644 --- a/test/domains/DomainRow.test.tsx +++ b/test/domains/DomainRow.test.tsx @@ -22,8 +22,8 @@ describe('', () => { domain={domain} defaultRedirects={defaultRedirects} selectedServer={fromPartial({})} - editDomainRedirects={jest.fn()} - checkDomainHealth={jest.fn()} + editDomainRedirects={vi.fn()} + checkDomainHealth={vi.fn()} /> , diff --git a/test/domains/DomainSelector.test.tsx b/test/domains/DomainSelector.test.tsx index 008414af..d7e055cf 100644 --- a/test/domains/DomainSelector.test.tsx +++ b/test/domains/DomainSelector.test.tsx @@ -13,10 +13,10 @@ describe('', () => { ], }); const setUp = (value = '') => renderWithEvents( - , + , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it.each([ ['', 'Domain', 'domains-dropdown__toggle-btn'], diff --git a/test/domains/ManageDomains.test.tsx b/test/domains/ManageDomains.test.tsx index 30cf6048..fada56ae 100644 --- a/test/domains/ManageDomains.test.tsx +++ b/test/domains/ManageDomains.test.tsx @@ -7,20 +7,20 @@ import type { DomainsList } from '../../src/domains/reducers/domainsList'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const listDomains = jest.fn(); - const filterDomains = jest.fn(); + const listDomains = vi.fn(); + const filterDomains = vi.fn(); const setUp = (domainsList: DomainsList) => renderWithEvents( , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('shows loading message while domains are loading', () => { setUp(fromPartial({ loading: true, filteredDomains: [] })); diff --git a/test/domains/helpers/DomainDropdown.test.tsx b/test/domains/helpers/DomainDropdown.test.tsx index f121978b..a5c2ecd3 100644 --- a/test/domains/helpers/DomainDropdown.test.tsx +++ b/test/domains/helpers/DomainDropdown.test.tsx @@ -8,7 +8,7 @@ import type { SemVer } from '../../../src/utils/helpers/version'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const editDomainRedirects = jest.fn().mockResolvedValue(undefined); + const editDomainRedirects = vi.fn().mockResolvedValue(undefined); const setUp = (domain?: Domain, selectedServer?: SelectedServer) => renderWithEvents( ', () => { , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders expected menu items', () => { setUp(); diff --git a/test/domains/helpers/DomainStatusIcon.test.tsx b/test/domains/helpers/DomainStatusIcon.test.tsx index d695a92b..b1ee76bd 100644 --- a/test/domains/helpers/DomainStatusIcon.test.tsx +++ b/test/domains/helpers/DomainStatusIcon.test.tsx @@ -5,12 +5,12 @@ import { DomainStatusIcon } from '../../../src/domains/helpers/DomainStatusIcon' import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const matchMedia = jest.fn().mockReturnValue(fromPartial({ matches: false })); + const matchMedia = vi.fn().mockReturnValue(fromPartial({ matches: false })); const setUp = (status: DomainStatus) => renderWithEvents( , ); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); it.each([ ['validating' as DomainStatus], diff --git a/test/domains/helpers/EditDomainRedirectsModal.test.tsx b/test/domains/helpers/EditDomainRedirectsModal.test.tsx index dad4e887..becf839b 100644 --- a/test/domains/helpers/EditDomainRedirectsModal.test.tsx +++ b/test/domains/helpers/EditDomainRedirectsModal.test.tsx @@ -5,8 +5,8 @@ import { EditDomainRedirectsModal } from '../../../src/domains/helpers/EditDomai import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const editDomainRedirects = jest.fn().mockResolvedValue(undefined); - const toggle = jest.fn(); + const editDomainRedirects = vi.fn().mockResolvedValue(undefined); + const toggle = vi.fn(); const domain = fromPartial({ domain: 'foo.com', redirects: { @@ -17,7 +17,7 @@ describe('', () => { , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders domain in header', () => { setUp(); diff --git a/test/domains/helpers/__snapshots__/DomainStatusIcon.test.tsx.snap b/test/domains/helpers/__snapshots__/DomainStatusIcon.test.tsx.snap index 7513f536..3ccd8237 100644 --- a/test/domains/helpers/__snapshots__/DomainStatusIcon.test.tsx.snap +++ b/test/domains/helpers/__snapshots__/DomainStatusIcon.test.tsx.snap @@ -1,4 +1,92 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders expected icon and tooltip when status is not validating 1`] = ` + +`; + +exports[` > renders expected icon and tooltip when status is not validating 2`] = ` + + + +`; + +exports[` > renders expected icon and tooltip when status is not validating 3`] = ` + + + +`; + +exports[` > renders proper tooltip based on state 1`] = ` + +`; + +exports[` > renders proper tooltip based on state 2`] = ` + +`; exports[` renders expected icon and tooltip when status is not validating 1`] = ` { - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('editDomainRedirects', () => { const domain = 'example.com'; const redirects = fromPartial({}); - const dispatch = jest.fn(); - const getState = jest.fn(); - const editDomainRedirectsCall = jest.fn(); + const dispatch = vi.fn(); + const getState = vi.fn(); + const editDomainRedirectsCall = vi.fn(); const buildShlinkApiClient = () => fromPartial({ editDomainRedirects: editDomainRedirectsCall }); const editDomainRedirectsAction = editDomainRedirects(buildShlinkApiClient); diff --git a/test/domains/reducers/domainsList.test.ts b/test/domains/reducers/domainsList.test.ts index 9381e671..afadeca8 100644 --- a/test/domains/reducers/domainsList.test.ts +++ b/test/domains/reducers/domainsList.test.ts @@ -13,10 +13,10 @@ import { } from '../../../src/domains/reducers/domainsList'; describe('domainsListReducer', () => { - const dispatch = jest.fn(); - const getState = jest.fn(); - const listDomains = jest.fn(); - const health = jest.fn(); + const dispatch = vi.fn(); + const getState = vi.fn(); + const listDomains = vi.fn(); + const health = vi.fn(); const buildShlinkApiClient = () => fromPartial({ listDomains, health }); const filteredDomains: Domain[] = [ fromPartial({ domain: 'foo', status: 'validating' }), @@ -30,7 +30,7 @@ describe('domainsListReducer', () => { editDomainRedirectsThunk, ); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('reducer', () => { it('returns loading on LIST_DOMAINS_START', () => { diff --git a/test/mercure/helpers/index.test.tsx b/test/mercure/helpers/index.test.tsx index 15a76d15..12fee3d2 100644 --- a/test/mercure/helpers/index.test.tsx +++ b/test/mercure/helpers/index.test.tsx @@ -4,14 +4,14 @@ import { identity } from 'ramda'; import { bindToMercureTopic } from '../../../src/mercure/helpers'; import type { MercureInfo } from '../../../src/mercure/reducers/mercureInfo'; -jest.mock('event-source-polyfill'); +vi.mock('event-source-polyfill'); describe('helpers', () => { - afterEach(jest.resetAllMocks); + afterEach(vi.resetAllMocks); describe('bindToMercureTopic', () => { - const onMessage = jest.fn(); - const onTokenExpired = jest.fn(); + const onMessage = vi.fn(); + const onTokenExpired = vi.fn(); it.each([ [fromPartial({ loading: true, error: false, mercureHubUrl: 'foo' })], diff --git a/test/mercure/reducers/mercureInfo.test.ts b/test/mercure/reducers/mercureInfo.test.ts index 907a7b67..1079f7d1 100644 --- a/test/mercure/reducers/mercureInfo.test.ts +++ b/test/mercure/reducers/mercureInfo.test.ts @@ -8,11 +8,11 @@ describe('mercureInfoReducer', () => { mercureHubUrl: 'http://example.com/.well-known/mercure', token: 'abc.123.def', }; - const getMercureInfo = jest.fn(); + const getMercureInfo = vi.fn(); const buildShlinkApiClient = () => fromPartial({ mercureInfo: getMercureInfo }); const { loadMercureInfo, reducer } = mercureInfoReducerCreator(buildShlinkApiClient); - beforeEach(jest.resetAllMocks); + beforeEach(vi.resetAllMocks); describe('reducer', () => { it('returns loading on GET_MERCURE_INFO_START', () => { @@ -37,8 +37,8 @@ describe('mercureInfoReducer', () => { }); describe('loadMercureInfo', () => { - const dispatch = jest.fn(); - const createGetStateMock = (enabled: boolean): GetState => jest.fn().mockReturnValue({ + const dispatch = vi.fn(); + const createGetStateMock = (enabled: boolean): GetState => vi.fn().mockReturnValue({ settings: { realTimeUpdates: { enabled }, }, diff --git a/test/servers/CreateServer.test.tsx b/test/servers/CreateServer.test.tsx index adbc1b2c..0af5591f 100644 --- a/test/servers/CreateServer.test.tsx +++ b/test/servers/CreateServer.test.tsx @@ -5,17 +5,20 @@ import { CreateServer as createCreateServer } from '../../src/servers/CreateServ import type { ServerWithId } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; -jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useNavigate: jest.fn() })); +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useNavigate: vi.fn(), +})); describe('', () => { - const createServersMock = jest.fn(); - const navigate = jest.fn(); + const createServersMock = vi.fn(); + const navigate = vi.fn(); const servers = { foo: fromPartial({ url: 'https://existing_url.com', apiKey: 'existing_api_key' }) }; const setUp = (serversImported = false, importFailed = false) => { (useNavigate as any).mockReturnValue(navigate); let callCount = 0; - const useTimeoutToggle = jest.fn().mockImplementation(() => { + const useTimeoutToggle = vi.fn().mockImplementation(() => { const result = [callCount % 2 === 0 ? serversImported : importFailed, () => null]; callCount += 1; return result; @@ -25,7 +28,7 @@ describe('', () => { return renderWithEvents(); }; - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); it('shows success message when imported is true', () => { setUp(true); diff --git a/test/servers/DeleteServerModal.test.tsx b/test/servers/DeleteServerModal.test.tsx index f2f66d42..ab2bf43d 100644 --- a/test/servers/DeleteServerModal.test.tsx +++ b/test/servers/DeleteServerModal.test.tsx @@ -5,11 +5,14 @@ import { DeleteServerModal } from '../../src/servers/DeleteServerModal'; import { renderWithEvents } from '../__helpers__/setUpTest'; import { TestModalWrapper } from '../__helpers__/TestModalWrapper'; -jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useNavigate: jest.fn() })); +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useNavigate: vi.fn(), +})); describe('', () => { - const deleteServerMock = jest.fn(); - const navigate = jest.fn(); + const deleteServerMock = vi.fn(); + const navigate = vi.fn(); const serverName = 'the_server_name'; const setUp = () => { (useNavigate as any).mockReturnValue(navigate); @@ -27,7 +30,7 @@ describe('', () => { ); }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders a modal window', () => { setUp(); diff --git a/test/servers/EditServer.test.tsx b/test/servers/EditServer.test.tsx index 4d680158..17d5b3ad 100644 --- a/test/servers/EditServer.test.tsx +++ b/test/servers/EditServer.test.tsx @@ -5,12 +5,15 @@ import type { ReachableServer, SelectedServer } from '../../src/servers/data'; import { EditServer as editServerConstruct } from '../../src/servers/EditServer'; import { renderWithEvents } from '../__helpers__/setUpTest'; -jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useNavigate: jest.fn() })); +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useNavigate: vi.fn(), +})); describe('', () => { - const ServerError = jest.fn(); - const editServerMock = jest.fn(); - const navigate = jest.fn(); + const ServerError = vi.fn(); + const editServerMock = vi.fn(); + const navigate = vi.fn(); const defaultSelectedServer = fromPartial({ id: 'abc123', name: 'the_name', @@ -20,7 +23,7 @@ describe('', () => { const EditServer = editServerConstruct(ServerError); const setUp = (selectedServer: SelectedServer = defaultSelectedServer) => renderWithEvents( - + , ); @@ -28,7 +31,7 @@ describe('', () => { (useNavigate as any).mockReturnValue(navigate); }); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders nothing if selected server is not reachable', () => { setUp(fromPartial({})); diff --git a/test/servers/ManageServers.test.tsx b/test/servers/ManageServers.test.tsx index ce5c2a08..3e61c34a 100644 --- a/test/servers/ManageServers.test.tsx +++ b/test/servers/ManageServers.test.tsx @@ -7,9 +7,9 @@ import type { ServersExporter } from '../../src/servers/services/ServersExporter import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const exportServers = jest.fn(); + const exportServers = vi.fn(); const serversExporter = fromPartial({ exportServers }); - const useTimeoutToggle = jest.fn().mockReturnValue([false, jest.fn()]); + const useTimeoutToggle = vi.fn().mockReturnValue([false, vi.fn()]); const ManageServers = createManageServers( serversExporter, () => ImportServersBtn, @@ -23,7 +23,7 @@ describe('', () => { , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('shows search field which allows searching servers, affecting te amount of rendered rows', async () => { const { user } = setUp({ @@ -85,7 +85,7 @@ describe('', () => { }); it.each([[true], [false]])('shows an error message if an error occurs while importing servers', (hasError) => { - useTimeoutToggle.mockReturnValue([hasError, jest.fn()]); + useTimeoutToggle.mockReturnValue([hasError, vi.fn()]); setUp({ foo: createServerMock('foo') }); diff --git a/test/servers/ManageServersRowDropdown.test.tsx b/test/servers/ManageServersRowDropdown.test.tsx index 9d1d536b..53064f81 100644 --- a/test/servers/ManageServersRowDropdown.test.tsx +++ b/test/servers/ManageServersRowDropdown.test.tsx @@ -9,7 +9,7 @@ describe('', () => { const ManageServersRowDropdown = createManageServersRowDropdown( ({ isOpen }) => DeleteServerModal {isOpen ? '[OPEN]' : '[CLOSED]'}, ); - const setAutoConnect = jest.fn(); + const setAutoConnect = vi.fn(); const setUp = (autoConnect = false) => { const server = fromPartial({ id: 'abc123', autoConnect }); return renderWithEvents( @@ -19,7 +19,7 @@ describe('', () => { ); }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders expected amount of dropdown items', async () => { const { user } = setUp(); diff --git a/test/servers/Overview.test.tsx b/test/servers/Overview.test.tsx index bff2b42d..9a8002eb 100644 --- a/test/servers/Overview.test.tsx +++ b/test/servers/Overview.test.tsx @@ -9,9 +9,9 @@ import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { const ShortUrlsTable = () => <>ShortUrlsTable; const CreateShortUrl = () => <>CreateShortUrl; - const listShortUrls = jest.fn(); - const listTags = jest.fn(); - const loadVisitsOverview = jest.fn(); + const listShortUrls = vi.fn(); + const listTags = vi.fn(); + const loadVisitsOverview = vi.fn(); const Overview = overviewCreator(ShortUrlsTable, CreateShortUrl); const shortUrls = { pagination: { totalItems: 83710 }, @@ -31,8 +31,8 @@ describe('', () => { orphanVisits: { total: 28, bots: 15, nonBots: 13 }, })} selectedServer={fromPartial({ id: serverId })} - createNewVisits={jest.fn()} - loadMercureInfo={jest.fn()} + createNewVisits={vi.fn()} + loadMercureInfo={vi.fn()} mercureInfo={fromPartial({})} settings={fromPartial({ visits: { excludeBots } })} /> diff --git a/test/servers/__snapshots__/DeleteServerButton.test.tsx.snap b/test/servers/__snapshots__/DeleteServerButton.test.tsx.snap index f47cfe0e..d332a540 100644 --- a/test/servers/__snapshots__/DeleteServerButton.test.tsx.snap +++ b/test/servers/__snapshots__/DeleteServerButton.test.tsx.snap @@ -1,4 +1,59 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders expected content 1`] = ` + + + Foo bar + + +`; + +exports[` > renders expected content 2`] = ` + + + baz + + +`; + +exports[` > renders expected content 3`] = ` + + + something + + +`; + +exports[` > renders expected content 4`] = ` + + + + Remove this server + + +`; exports[` renders expected content 1`] = ` diff --git a/test/servers/__snapshots__/ManageServersRow.test.tsx.snap b/test/servers/__snapshots__/ManageServersRow.test.tsx.snap index 9ebc2a4c..b777a57b 100644 --- a/test/servers/__snapshots__/ManageServersRow.test.tsx.snap +++ b/test/servers/__snapshots__/ManageServersRow.test.tsx.snap @@ -1,4 +1,101 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders auto-connect icon only if server is autoConnect 1`] = ` +
+ + + + + + + + + +
+ + + + My server + + + https://example.com + + + ManageServersRowDropdown + +
+
+`; + +exports[` > renders auto-connect icon only if server is autoConnect 2`] = ` +
+ + + + + + + + +
+ + + My server + + + https://example.com + + + ManageServersRowDropdown + +
+
+`; exports[` renders auto-connect icon only if server is autoConnect 1`] = `
diff --git a/test/servers/helpers/DuplicatedServersModal.test.tsx b/test/servers/helpers/DuplicatedServersModal.test.tsx index b4918fc4..8d88b844 100644 --- a/test/servers/helpers/DuplicatedServersModal.test.tsx +++ b/test/servers/helpers/DuplicatedServersModal.test.tsx @@ -5,14 +5,14 @@ import { DuplicatedServersModal } from '../../../src/servers/helpers/DuplicatedS import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const onDiscard = jest.fn(); - const onSave = jest.fn(); + const onDiscard = vi.fn(); + const onSave = vi.fn(); const setUp = (duplicatedServers: ServerData[] = []) => renderWithEvents( , ); const mockServer = (data: Partial = {}) => fromPartial(data); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); it.each([ [[], 0], diff --git a/test/servers/helpers/ImportServersBtn.test.tsx b/test/servers/helpers/ImportServersBtn.test.tsx index a452e094..69f004ad 100644 --- a/test/servers/helpers/ImportServersBtn.test.tsx +++ b/test/servers/helpers/ImportServersBtn.test.tsx @@ -10,9 +10,9 @@ import type { ServersImporter } from '../../../src/servers/services/ServersImpor import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const onImportMock = jest.fn(); - const createServersMock = jest.fn(); - const importServersFromFile = jest.fn().mockResolvedValue([]); + const onImportMock = vi.fn(); + const createServersMock = vi.fn(); + const importServersFromFile = vi.fn().mockResolvedValue([]); const serversImporterMock = fromPartial({ importServersFromFile }); const ImportServersBtn = createImportServersBtn(serversImporterMock); const setUp = (props: Partial = {}, servers: ServersMap = {}) => renderWithEvents( @@ -24,7 +24,7 @@ describe('', () => { />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('shows tooltip on button hover', async () => { const { user } = setUp(); diff --git a/test/servers/helpers/ServerForm.test.tsx b/test/servers/helpers/ServerForm.test.tsx index ad8c543c..088417f5 100644 --- a/test/servers/helpers/ServerForm.test.tsx +++ b/test/servers/helpers/ServerForm.test.tsx @@ -2,10 +2,10 @@ import { fireEvent, render, screen } from '@testing-library/react'; import { ServerForm } from '../../../src/servers/helpers/ServerForm'; describe('', () => { - const onSubmit = jest.fn(); + const onSubmit = vi.fn(); const setUp = () => render(Something); - afterEach(jest.resetAllMocks); + afterEach(vi.resetAllMocks); it('renders components', () => { setUp(); @@ -18,7 +18,7 @@ describe('', () => { setUp(); expect(onSubmit).not.toHaveBeenCalled(); - fireEvent.submit(screen.getByRole('form'), { preventDefault: jest.fn() }); + fireEvent.submit(screen.getByRole('form'), { preventDefault: vi.fn() }); expect(onSubmit).toHaveBeenCalled(); }); }); diff --git a/test/servers/reducers/remoteServers.test.ts b/test/servers/reducers/remoteServers.test.ts index 230488c6..fef79208 100644 --- a/test/servers/reducers/remoteServers.test.ts +++ b/test/servers/reducers/remoteServers.test.ts @@ -3,11 +3,11 @@ import type { HttpClient } from '../../../src/common/services/HttpClient'; import { fetchServers } from '../../../src/servers/reducers/remoteServers'; describe('remoteServersReducer', () => { - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); describe('fetchServers', () => { - const dispatch = jest.fn(); - const fetchJson = jest.fn(); + const dispatch = vi.fn(); + const fetchJson = vi.fn(); const httpClient = fromPartial({ fetchJson }); it.each([ @@ -81,7 +81,7 @@ describe('remoteServersReducer', () => { fetchJson.mockResolvedValue(mockedValue); const doFetchServers = fetchServers(httpClient); - await doFetchServers()(dispatch, jest.fn(), {}); + await doFetchServers()(dispatch, vi.fn(), {}); expect(dispatch).toHaveBeenCalledTimes(3); expect(dispatch).toHaveBeenNthCalledWith(2, expect.objectContaining({ payload: expectedNewServers })); diff --git a/test/servers/reducers/selectedServer.test.ts b/test/servers/reducers/selectedServer.test.ts index 34609864..b1818347 100644 --- a/test/servers/reducers/selectedServer.test.ts +++ b/test/servers/reducers/selectedServer.test.ts @@ -13,13 +13,13 @@ import { } from '../../../src/servers/reducers/selectedServer'; describe('selectedServerReducer', () => { - const dispatch = jest.fn(); - const health = jest.fn(); - const buildApiClient = jest.fn().mockReturnValue(fromPartial({ health })); + const dispatch = vi.fn(); + const health = vi.fn(); + const buildApiClient = vi.fn().mockReturnValue(fromPartial({ health })); const selectServer = selectServerCreator(buildApiClient); const { reducer } = selectedServerReducerCreator(selectServer); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); describe('reducer', () => { it('returns default when action is RESET_SELECTED_SERVER', () => @@ -33,7 +33,7 @@ describe('selectedServerReducer', () => { describe('selectServer', () => { const version = '1.19.0'; - const createGetStateMock = (id: string) => jest.fn().mockReturnValue({ + const createGetStateMock = (id: string) => vi.fn().mockReturnValue({ servers: { [id]: { id }, }, @@ -77,7 +77,7 @@ describe('selectedServerReducer', () => { it('dispatches error when server is not found', async () => { const id = uuid(); - const getState = jest.fn(() => fromPartial({ servers: {} })); + const getState = vi.fn(() => fromPartial({ servers: {} })); const expectedSelectedServer: NotFoundServer = { serverNotFound: true }; await selectServer(id)(dispatch, getState, {}); @@ -89,8 +89,8 @@ describe('selectedServerReducer', () => { }); describe('selectServerListener', () => { - const getState = jest.fn(() => ({})); - const loadMercureInfo = jest.fn(); + const getState = vi.fn(() => ({})); + const loadMercureInfo = vi.fn(); const { middleware } = selectServerListener(selectServer, loadMercureInfo); it.each([ @@ -98,7 +98,7 @@ describe('selectedServerReducer', () => { [fromPartial({ serverNotFound: true }), 0], [fromPartial({ serverNotReachable: true }), 0], ])('dispatches loadMercureInfo when provided server is reachable', (payload, expectedCalls) => { - middleware({ dispatch, getState })(jest.fn())({ + middleware({ dispatch, getState })(vi.fn())({ payload, type: selectServer.fulfilled.toString(), }); @@ -108,7 +108,7 @@ describe('selectedServerReducer', () => { }); it('does not dispatch loadMercureInfo when action is not of the proper type', () => { - middleware({ dispatch, getState })(jest.fn())({ + middleware({ dispatch, getState })(vi.fn())({ payload: fromPartial({ version: '1.2.3' }), type: 'something_else', }); diff --git a/test/servers/reducers/servers.test.ts b/test/servers/reducers/servers.test.ts index 17637483..890430df 100644 --- a/test/servers/reducers/servers.test.ts +++ b/test/servers/reducers/servers.test.ts @@ -15,7 +15,7 @@ describe('serversReducer', () => { def456: fromPartial({ id: 'def456' }), }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); describe('reducer', () => { it('returns edited server when action is EDIT_SERVER', () => diff --git a/test/servers/services/ServersExporter.test.ts b/test/servers/services/ServersExporter.test.ts index a50a5eeb..c077965f 100644 --- a/test/servers/services/ServersExporter.test.ts +++ b/test/servers/services/ServersExporter.test.ts @@ -5,7 +5,7 @@ import { appendChild, removeChild, windowMock } from '../../__mocks__/Window.moc describe('ServersExporter', () => { const storageMock = fromPartial({ - get: jest.fn(() => ({ + get: vi.fn(() => ({ abc123: { id: 'abc123', name: 'foo', @@ -18,16 +18,16 @@ describe('ServersExporter', () => { }, } as any)), }); - const erroneousToCsv = jest.fn(() => { + const erroneousToCsv = vi.fn(() => { throw new Error(''); }); - const createCsvjsonMock = (throwError = false) => (throwError ? erroneousToCsv : jest.fn(() => '')); + const createCsvjsonMock = (throwError = false) => (throwError ? erroneousToCsv : vi.fn(() => '')); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('exportServers', () => { let originalConsole: Console; - const error = jest.fn(); + const error = vi.fn(); beforeEach(() => { originalConsole = global.console; diff --git a/test/servers/services/ServersImporter.test.ts b/test/servers/services/ServersImporter.test.ts index be909a9c..f9554fa6 100644 --- a/test/servers/services/ServersImporter.test.ts +++ b/test/servers/services/ServersImporter.test.ts @@ -4,8 +4,8 @@ import { ServersImporter } from '../../../src/servers/services/ServersImporter'; describe('ServersImporter', () => { const servers: RegularServer[] = [fromPartial({}), fromPartial({})]; - const csvjsonMock = jest.fn().mockResolvedValue(servers); - const readAsText = jest.fn(); + const csvjsonMock = vi.fn().mockResolvedValue(servers); + const readAsText = vi.fn(); const fileReaderMock = fromPartial({ readAsText, addEventListener: ((_eventName: string, listener: (e: ProgressEvent) => void) => listener( @@ -14,7 +14,7 @@ describe('ServersImporter', () => { }); const importer = new ServersImporter(csvjsonMock, () => fileReaderMock); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('importServersFromFile', () => { it('rejects with error if no file was provided', async () => { diff --git a/test/settings/RealTimeUpdatesSettings.test.tsx b/test/settings/RealTimeUpdatesSettings.test.tsx index 63d2c65c..33e3da1b 100644 --- a/test/settings/RealTimeUpdatesSettings.test.tsx +++ b/test/settings/RealTimeUpdatesSettings.test.tsx @@ -7,8 +7,8 @@ import type { import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const toggleRealTimeUpdates = jest.fn(); - const setRealTimeUpdatesInterval = jest.fn(); + const toggleRealTimeUpdates = vi.fn(); + const setRealTimeUpdatesInterval = vi.fn(); const setUp = (realTimeUpdates: Partial = {}) => renderWithEvents( ', () => { />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders enabled real time updates as expected', () => { setUp({ enabled: true }); diff --git a/test/settings/ShortUrlCreationSettings.test.tsx b/test/settings/ShortUrlCreationSettings.test.tsx index 45dcd4b2..b1e1556e 100644 --- a/test/settings/ShortUrlCreationSettings.test.tsx +++ b/test/settings/ShortUrlCreationSettings.test.tsx @@ -5,7 +5,7 @@ import { ShortUrlCreationSettings } from '../../src/settings/ShortUrlCreationSet import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const setShortUrlCreationSettings = jest.fn(); + const setShortUrlCreationSettings = vi.fn(); const setUp = (shortUrlCreation?: ShortUrlsSettings) => renderWithEvents( ', () => { />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it.each([ [{ validateUrls: true }, true], diff --git a/test/settings/ShortUrlsListSettings.test.tsx b/test/settings/ShortUrlsListSettings.test.tsx index 889559f4..70b13942 100644 --- a/test/settings/ShortUrlsListSettings.test.tsx +++ b/test/settings/ShortUrlsListSettings.test.tsx @@ -6,12 +6,12 @@ import type { ShortUrlsOrder } from '../../src/short-urls/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const setSettings = jest.fn(); + const setSettings = vi.fn(); const setUp = (shortUrlsList?: ShortUrlsSettings) => renderWithEvents( , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it.each([ [undefined, 'Order by: Created at - DESC'], diff --git a/test/settings/TagsSettings.test.tsx b/test/settings/TagsSettings.test.tsx index c3bf1b20..cf0d165a 100644 --- a/test/settings/TagsSettings.test.tsx +++ b/test/settings/TagsSettings.test.tsx @@ -6,12 +6,12 @@ import type { TagsOrder } from '../../src/tags/data/TagsListChildrenProps'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const setTagsSettings = jest.fn(); + const setTagsSettings = vi.fn(); const setUp = (tags?: TagsSettingsOptions) => renderWithEvents( , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders expected amount of groups', () => { setUp(); diff --git a/test/settings/UserInterfaceSettings.test.tsx b/test/settings/UserInterfaceSettings.test.tsx index b0ecf856..dbf40d11 100644 --- a/test/settings/UserInterfaceSettings.test.tsx +++ b/test/settings/UserInterfaceSettings.test.tsx @@ -6,12 +6,12 @@ import type { Theme } from '../../src/utils/theme'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const setUiSettings = jest.fn(); + const setUiSettings = vi.fn(); const setUp = (ui?: UiSettings) => renderWithEvents( , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it.each([ [{ theme: 'dark' as Theme }, true], diff --git a/test/settings/VisitsSettings.test.tsx b/test/settings/VisitsSettings.test.tsx index 1bc729f4..2f9e01bf 100644 --- a/test/settings/VisitsSettings.test.tsx +++ b/test/settings/VisitsSettings.test.tsx @@ -5,12 +5,12 @@ import { VisitsSettings } from '../../src/settings/VisitsSettings'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const setVisitsSettings = jest.fn(); + const setVisitsSettings = vi.fn(); const setUp = (settings: Partial = {}) => renderWithEvents( , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders expected components', () => { setUp(); diff --git a/test/settings/__snapshots__/UserInterfaceSettings.test.tsx.snap b/test/settings/__snapshots__/UserInterfaceSettings.test.tsx.snap index d36b6cfa..07462087 100644 --- a/test/settings/__snapshots__/UserInterfaceSettings.test.tsx.snap +++ b/test/settings/__snapshots__/UserInterfaceSettings.test.tsx.snap @@ -1,4 +1,58 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > shows different icons based on theme 1`] = ` + +`; + +exports[` > shows different icons based on theme 2`] = ` + +`; + +exports[` > shows different icons based on theme 3`] = ` + +`; exports[` shows different icons based on theme 1`] = ` ', () => { const CreateShortUrlResult = () => CreateShortUrlResult; const shortUrlCreation = { validateUrls: true }; const shortUrlCreationResult = fromPartial({}); - const createShortUrl = jest.fn(async () => Promise.resolve()); + const createShortUrl = vi.fn(async () => Promise.resolve()); const CreateShortUrl = createShortUrlsCreator(ShortUrlForm, CreateShortUrlResult); const setUp = () => render( ', () => { selectedServer={null} shortUrlDetail={fromPartial(detail)} shortUrlEdition={fromPartial(edition)} - getShortUrlDetail={jest.fn()} - editShortUrl={jest.fn(async () => Promise.resolve())} + getShortUrlDetail={vi.fn()} + editShortUrl={vi.fn(async () => Promise.resolve())} /> , ); diff --git a/test/short-urls/ShortUrlForm.test.tsx b/test/short-urls/ShortUrlForm.test.tsx index 7d94b956..b8616e0e 100644 --- a/test/short-urls/ShortUrlForm.test.tsx +++ b/test/short-urls/ShortUrlForm.test.tsx @@ -10,7 +10,7 @@ import type { OptionalString } from '../../src/utils/utils'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const createShortUrl = jest.fn(async () => Promise.resolve()); + const createShortUrl = vi.fn(async () => Promise.resolve()); const ShortUrlForm = createShortUrlForm(() => TagsSelector, () => DomainSelector); const setUp = (selectedServer: SelectedServer = null, mode: Mode = 'create', title?: OptionalString) => renderWithEvents( @@ -23,7 +23,7 @@ describe('', () => { />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it.each([ [ diff --git a/test/short-urls/ShortUrlsFilteringBar.test.tsx b/test/short-urls/ShortUrlsFilteringBar.test.tsx index 24f00e63..ff2abb00 100644 --- a/test/short-urls/ShortUrlsFilteringBar.test.tsx +++ b/test/short-urls/ShortUrlsFilteringBar.test.tsx @@ -8,17 +8,17 @@ import { formatDate } from '../../src/utils/helpers/date'; import type { DateRange } from '../../src/utils/helpers/dateIntervals'; import { renderWithEvents } from '../__helpers__/setUpTest'; -jest.mock('react-router-dom', () => ({ - ...jest.requireActual('react-router-dom'), - useParams: jest.fn().mockReturnValue({ serverId: '1' }), - useNavigate: jest.fn(), - useLocation: jest.fn().mockReturnValue({}), +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useParams: vi.fn().mockReturnValue({ serverId: '1' }), + useNavigate: vi.fn(), + useLocation: vi.fn().mockReturnValue({}), })); describe('', () => { const ShortUrlsFilteringBar = filteringBarCreator(() => <>ExportShortUrlsBtn, () => <>TagsSelector); - const navigate = jest.fn(); - const handleOrderBy = jest.fn(); + const navigate = vi.fn(); + const handleOrderBy = vi.fn(); const now = new Date(); const setUp = (search = '', selectedServer?: SelectedServer) => { (useLocation as any).mockReturnValue({ search }); @@ -36,7 +36,7 @@ describe('', () => { ); }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders expected children components', () => { setUp(); diff --git a/test/short-urls/ShortUrlsList.test.tsx b/test/short-urls/ShortUrlsList.test.tsx index 09b40042..d3d9cb51 100644 --- a/test/short-urls/ShortUrlsList.test.tsx +++ b/test/short-urls/ShortUrlsList.test.tsx @@ -10,17 +10,17 @@ import type { ShortUrlsTableType } from '../../src/short-urls/ShortUrlsTable'; import type { SemVer } from '../../src/utils/helpers/version'; import { renderWithEvents } from '../__helpers__/setUpTest'; -jest.mock('react-router-dom', () => ({ - ...jest.requireActual('react-router-dom'), - useNavigate: jest.fn().mockReturnValue(jest.fn()), - useLocation: jest.fn().mockReturnValue({ search: '?tags=test%20tag&search=example.com' }), +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useNavigate: vi.fn().mockReturnValue(vi.fn()), + useLocation: vi.fn().mockReturnValue({ search: '?tags=test%20tag&search=example.com' }), })); describe('', () => { const ShortUrlsTable: ShortUrlsTableType = ({ onTagClick }) => onTagClick?.('foo')}>ShortUrlsTable; const ShortUrlsFilteringBar = () => ShortUrlsFilteringBar; - const listShortUrlsMock = jest.fn(); - const navigate = jest.fn(); + const listShortUrlsMock = vi.fn(); + const navigate = vi.fn(); const shortUrlsList = fromPartial({ shortUrls: { data: [ @@ -51,7 +51,7 @@ describe('', () => { (useNavigate as any).mockReturnValue(navigate); }); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('wraps expected components', () => { setUp(); diff --git a/test/short-urls/ShortUrlsTable.test.tsx b/test/short-urls/ShortUrlsTable.test.tsx index 23d07a57..4c4370cb 100644 --- a/test/short-urls/ShortUrlsTable.test.tsx +++ b/test/short-urls/ShortUrlsTable.test.tsx @@ -9,13 +9,13 @@ import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { const shortUrlsList = fromPartial({}); - const orderByColumn = jest.fn(); + const orderByColumn = vi.fn(); const ShortUrlsTable = shortUrlsTableCreator(() => ShortUrlsRow); const setUp = (server: SelectedServer = null) => renderWithEvents( orderByColumn} />, ); - afterEach(jest.resetAllMocks); + afterEach(vi.resetAllMocks); it('should render inner table by default', () => { setUp(); diff --git a/test/short-urls/helpers/CreateShortUrlResult.test.tsx b/test/short-urls/helpers/CreateShortUrlResult.test.tsx index 3293f822..62f11705 100644 --- a/test/short-urls/helpers/CreateShortUrlResult.test.tsx +++ b/test/short-urls/helpers/CreateShortUrlResult.test.tsx @@ -6,14 +6,14 @@ import type { TimeoutToggle } from '../../../src/utils/helpers/hooks'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const copyToClipboard = jest.fn(); - const useTimeoutToggle = jest.fn(() => [false, copyToClipboard]) as TimeoutToggle; + const copyToClipboard = vi.fn(); + const useTimeoutToggle = vi.fn(() => [false, copyToClipboard]) as TimeoutToggle; const CreateShortUrlResult = createResult(useTimeoutToggle); const setUp = (creation: ShortUrlCreation) => renderWithEvents( {}} creation={creation} />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders an error when error is true', () => { setUp({ error: true, saved: false, saving: false }); diff --git a/test/short-urls/helpers/DeleteShortUrlModal.test.tsx b/test/short-urls/helpers/DeleteShortUrlModal.test.tsx index 35671459..964c8207 100644 --- a/test/short-urls/helpers/DeleteShortUrlModal.test.tsx +++ b/test/short-urls/helpers/DeleteShortUrlModal.test.tsx @@ -14,8 +14,8 @@ describe('', () => { shortCode: 'abc123', longUrl: 'https://long-domain.com/foo/bar', }); - const deleteShortUrl = jest.fn().mockResolvedValue(undefined); - const shortUrlDeleted = jest.fn(); + const deleteShortUrl = vi.fn().mockResolvedValue(undefined); + const shortUrlDeleted = vi.fn(); const setUp = (shortUrlDeletion: Partial) => renderWithEvents( ( @@ -25,13 +25,13 @@ describe('', () => { shortUrlDeletion={fromPartial(shortUrlDeletion)} deleteShortUrl={deleteShortUrl} shortUrlDeleted={shortUrlDeleted} - resetDeleteShortUrl={jest.fn()} + resetDeleteShortUrl={vi.fn()} /> )} />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('shows generic error when non-threshold error occurs', () => { setUp({ diff --git a/test/short-urls/helpers/ExportShortUrlsBtn.test.tsx b/test/short-urls/helpers/ExportShortUrlsBtn.test.tsx index 2e8fb718..0a9dee10 100644 --- a/test/short-urls/helpers/ExportShortUrlsBtn.test.tsx +++ b/test/short-urls/helpers/ExportShortUrlsBtn.test.tsx @@ -8,9 +8,9 @@ import { ExportShortUrlsBtn as createExportShortUrlsBtn } from '../../../src/sho import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const listShortUrls = jest.fn(); - const buildShlinkApiClient = jest.fn().mockReturnValue({ listShortUrls }); - const exportShortUrls = jest.fn(); + const listShortUrls = vi.fn(); + const buildShlinkApiClient = vi.fn().mockReturnValue({ listShortUrls }); + const exportShortUrls = vi.fn(); const reportExporter = fromPartial({ exportShortUrls }); const ExportShortUrlsBtn = createExportShortUrlsBtn(buildShlinkApiClient, reportExporter); const setUp = (amount?: number, selectedServer?: SelectedServer) => renderWithEvents( @@ -19,7 +19,7 @@ describe('', () => { , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it.each([ [undefined, '0'], diff --git a/test/short-urls/helpers/QrCodeModal.test.tsx b/test/short-urls/helpers/QrCodeModal.test.tsx index 2a43b638..abbcad21 100644 --- a/test/short-urls/helpers/QrCodeModal.test.tsx +++ b/test/short-urls/helpers/QrCodeModal.test.tsx @@ -5,7 +5,7 @@ import type { SemVer } from '../../../src/utils/helpers/version'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const saveImage = jest.fn().mockReturnValue(Promise.resolve()); + const saveImage = vi.fn().mockReturnValue(Promise.resolve()); const QrCodeModal = createQrCodeModal(fromPartial({ saveImage })); const shortUrl = 'https://s.test/abc123'; const setUp = (version: SemVer = '2.8.0') => renderWithEvents( @@ -17,7 +17,7 @@ describe('', () => { />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('shows an external link to the URL in the header', () => { setUp(); diff --git a/test/short-urls/helpers/ShortUrlsFilterDropdown.test.tsx b/test/short-urls/helpers/ShortUrlsFilterDropdown.test.tsx index b1168b27..5861b77a 100644 --- a/test/short-urls/helpers/ShortUrlsFilterDropdown.test.tsx +++ b/test/short-urls/helpers/ShortUrlsFilterDropdown.test.tsx @@ -4,7 +4,7 @@ import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { const setUp = (supportsDisabledFiltering: boolean) => renderWithEvents( - , + , ); it.each([ diff --git a/test/short-urls/helpers/ShortUrlsRow.test.tsx b/test/short-urls/helpers/ShortUrlsRow.test.tsx index 1d2cd884..5c9297a5 100644 --- a/test/short-urls/helpers/ShortUrlsRow.test.tsx +++ b/test/short-urls/helpers/ShortUrlsRow.test.tsx @@ -20,14 +20,14 @@ interface SetUpOptions { settings?: Partial; } -jest.mock('react-router-dom', () => ({ - ...jest.requireActual('react-router-dom'), - useLocation: jest.fn().mockReturnValue({}), +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useLocation: vi.fn().mockReturnValue({}), })); describe('', () => { - const timeoutToggle = jest.fn(() => true); - const useTimeoutToggle = jest.fn(() => [false, timeoutToggle]) as TimeoutToggle; + const timeoutToggle = vi.fn(() => true); + const useTimeoutToggle = vi.fn(() => [false, timeoutToggle]) as TimeoutToggle; const server = fromPartial({ url: 'https://s.test' }); const shortUrl: ShortUrl = { shortCode: 'abc123', diff --git a/test/short-urls/helpers/__snapshots__/ShortUrlsRow.test.tsx.snap b/test/short-urls/helpers/__snapshots__/ShortUrlsRow.test.tsx.snap index dc4ad5a9..c9986524 100644 --- a/test/short-urls/helpers/__snapshots__/ShortUrlsRow.test.tsx.snap +++ b/test/short-urls/helpers/__snapshots__/ShortUrlsRow.test.tsx.snap @@ -1,4 +1,148 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > displays expected status icon 1`] = ` + +`; + +exports[` > displays expected status icon 2`] = ` + +`; + +exports[` > displays expected status icon 3`] = ` + +`; + +exports[` > displays expected status icon 4`] = ` + +`; + +exports[` > displays expected status icon 5`] = ` + +`; + +exports[` > displays expected status icon 6`] = ` + +`; + +exports[` > displays expected status icon 7`] = ` + +`; + +exports[` > displays expected status icon 8`] = ` + +`; exports[` displays expected status icon 1`] = ` ', () => { const initialErrorCorrection: QrErrorCorrection = 'Q'; - const setErrorCorrection = jest.fn(); + const setErrorCorrection = vi.fn(); const setUp = () => renderWithEvents( , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders initial state', async () => { const { user } = setUp(); diff --git a/test/short-urls/helpers/qr-codes/QrFormatDropdown.test.tsx b/test/short-urls/helpers/qr-codes/QrFormatDropdown.test.tsx index 41cb3975..657b672a 100644 --- a/test/short-urls/helpers/qr-codes/QrFormatDropdown.test.tsx +++ b/test/short-urls/helpers/qr-codes/QrFormatDropdown.test.tsx @@ -5,10 +5,10 @@ import { renderWithEvents } from '../../../__helpers__/setUpTest'; describe('', () => { const initialFormat: QrCodeFormat = 'svg'; - const setFormat = jest.fn(); + const setFormat = vi.fn(); const setUp = () => renderWithEvents(); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders initial state', async () => { const { user } = setUp(); diff --git a/test/short-urls/reducers/shortUrlCreation.test.ts b/test/short-urls/reducers/shortUrlCreation.test.ts index e1e14a9e..09107540 100644 --- a/test/short-urls/reducers/shortUrlCreation.test.ts +++ b/test/short-urls/reducers/shortUrlCreation.test.ts @@ -9,12 +9,12 @@ import { describe('shortUrlCreationReducer', () => { const shortUrl = fromPartial({}); - const createShortUrlCall = jest.fn(); + const createShortUrlCall = vi.fn(); const buildShlinkApiClient = () => fromPartial({ createShortUrl: createShortUrlCall }); const createShortUrl = createShortUrlCreator(buildShlinkApiClient); const { reducer, resetCreateShortUrl } = shortUrlCreationReducerCreator(createShortUrl); - afterEach(jest.resetAllMocks); + afterEach(vi.resetAllMocks); describe('reducer', () => { it('returns loading on CREATE_SHORT_URL_START', () => { @@ -52,7 +52,7 @@ describe('shortUrlCreationReducer', () => { }); describe('createShortUrl', () => { - const dispatch = jest.fn(); + const dispatch = vi.fn(); const getState = () => fromPartial({}); it('calls API on success', async () => { diff --git a/test/short-urls/reducers/shortUrlDeletion.test.ts b/test/short-urls/reducers/shortUrlDeletion.test.ts index 74f7017b..0ee97d34 100644 --- a/test/short-urls/reducers/shortUrlDeletion.test.ts +++ b/test/short-urls/reducers/shortUrlDeletion.test.ts @@ -7,12 +7,12 @@ import { } from '../../../src/short-urls/reducers/shortUrlDeletion'; describe('shortUrlDeletionReducer', () => { - const deleteShortUrlCall = jest.fn(); + const deleteShortUrlCall = vi.fn(); const buildShlinkApiClient = () => fromPartial({ deleteShortUrl: deleteShortUrlCall }); const deleteShortUrl = deleteShortUrlCreator(buildShlinkApiClient); const { reducer, resetDeleteShortUrl } = shortUrlDeletionReducerCreator(deleteShortUrl); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('reducer', () => { it('returns loading on DELETE_SHORT_URL_START', () => @@ -56,8 +56,8 @@ describe('shortUrlDeletionReducer', () => { }); describe('deleteShortUrl', () => { - const dispatch = jest.fn(); - const getState = jest.fn().mockReturnValue({ selectedServer: {} }); + const dispatch = vi.fn(); + const getState = vi.fn().mockReturnValue({ selectedServer: {} }); it.each( [[undefined], [null], ['example.com']], diff --git a/test/short-urls/reducers/shortUrlDetail.test.ts b/test/short-urls/reducers/shortUrlDetail.test.ts index 5aee45b2..97b5e177 100644 --- a/test/short-urls/reducers/shortUrlDetail.test.ts +++ b/test/short-urls/reducers/shortUrlDetail.test.ts @@ -6,11 +6,11 @@ import { shortUrlDetailReducerCreator } from '../../../src/short-urls/reducers/s import type { ShortUrlsList } from '../../../src/short-urls/reducers/shortUrlsList'; describe('shortUrlDetailReducer', () => { - const getShortUrlCall = jest.fn(); + const getShortUrlCall = vi.fn(); const buildShlinkApiClient = () => fromPartial({ getShortUrl: getShortUrlCall }); const { reducer, getShortUrlDetail } = shortUrlDetailReducerCreator(buildShlinkApiClient); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('reducer', () => { it('returns loading on GET_SHORT_URL_DETAIL_START', () => { @@ -41,7 +41,7 @@ describe('shortUrlDetailReducer', () => { }); describe('getShortUrlDetail', () => { - const dispatchMock = jest.fn(); + const dispatchMock = vi.fn(); const buildGetState = (shortUrlsList?: ShortUrlsList) => () => fromPartial({ shortUrlsList }); it.each([ diff --git a/test/short-urls/reducers/shortUrlEdition.test.ts b/test/short-urls/reducers/shortUrlEdition.test.ts index e1f143f2..b00c53d7 100644 --- a/test/short-urls/reducers/shortUrlEdition.test.ts +++ b/test/short-urls/reducers/shortUrlEdition.test.ts @@ -11,12 +11,12 @@ describe('shortUrlEditionReducer', () => { const longUrl = 'https://shlink.io'; const shortCode = 'abc123'; const shortUrl = fromPartial({ longUrl, shortCode }); - const updateShortUrl = jest.fn().mockResolvedValue(shortUrl); - const buildShlinkApiClient = jest.fn().mockReturnValue({ updateShortUrl }); + const updateShortUrl = vi.fn().mockResolvedValue(shortUrl); + const buildShlinkApiClient = vi.fn().mockReturnValue({ updateShortUrl }); const editShortUrl = editShortUrlCreator(buildShlinkApiClient); const { reducer } = shortUrlEditionReducerCreator(editShortUrl); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); describe('reducer', () => { it('returns loading on EDIT_SHORT_URL_START', () => { @@ -46,12 +46,12 @@ describe('shortUrlEditionReducer', () => { }); describe('editShortUrl', () => { - const dispatch = jest.fn(); + const dispatch = vi.fn(); const createGetState = (selectedServer: SelectedServer = null) => () => fromPartial({ selectedServer, }); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it.each([[undefined], [null], ['example.com']])('dispatches short URL on success', async (domain) => { await editShortUrl({ shortCode, domain, data: { longUrl } })(dispatch, createGetState(), {}); diff --git a/test/short-urls/reducers/shortUrlsList.test.ts b/test/short-urls/reducers/shortUrlsList.test.ts index 2954ac8f..f5dba798 100644 --- a/test/short-urls/reducers/shortUrlsList.test.ts +++ b/test/short-urls/reducers/shortUrlsList.test.ts @@ -14,14 +14,14 @@ import type { CreateVisit } from '../../../src/visits/types'; describe('shortUrlsListReducer', () => { const shortCode = 'abc123'; - const listShortUrlsMock = jest.fn(); + const listShortUrlsMock = vi.fn(); const buildShlinkApiClient = () => fromPartial({ listShortUrls: listShortUrlsMock }); const listShortUrls = listShortUrlsCreator(buildShlinkApiClient); const editShortUrl = editShortUrlCreator(buildShlinkApiClient); const createShortUrl = createShortUrlCreator(buildShlinkApiClient); const { reducer } = shortUrlsListReducerCreator(listShortUrls, editShortUrl, createShortUrl); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); describe('reducer', () => { it('returns loading on LIST_SHORT_URLS_START', () => @@ -188,8 +188,8 @@ describe('shortUrlsListReducer', () => { }); describe('listShortUrls', () => { - const dispatch = jest.fn(); - const getState = jest.fn().mockReturnValue({ selectedServer: {} }); + const dispatch = vi.fn(); + const getState = vi.fn().mockReturnValue({ selectedServer: {} }); it('dispatches proper actions if API client request succeeds', async () => { listShortUrlsMock.mockResolvedValue({}); diff --git a/test/tags/TagsList.test.tsx b/test/tags/TagsList.test.tsx index f486054b..4d79823d 100644 --- a/test/tags/TagsList.test.tsx +++ b/test/tags/TagsList.test.tsx @@ -8,7 +8,7 @@ import { TagsList as createTagsList } from '../../src/tags/TagsList'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const filterTags = jest.fn(); + const filterTags = vi.fn(); const TagsListComp = createTagsList(({ sortedTags }) => <>TagsTable ({sortedTags.map((t) => t.visits).join(',')})); const setUp = (tagsList: Partial, excludeBots = false) => renderWithEvents( ', () => { />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('shows a loading message when tags are being loaded', () => { setUp({ loading: true }); diff --git a/test/tags/TagsTable.test.tsx b/test/tags/TagsTable.test.tsx index ad41c4ce..fcf82063 100644 --- a/test/tags/TagsTable.test.tsx +++ b/test/tags/TagsTable.test.tsx @@ -5,10 +5,13 @@ import { TagsTable as createTagsTable } from '../../src/tags/TagsTable'; import { rangeOf } from '../../src/utils/utils'; import { renderWithEvents } from '../__helpers__/setUpTest'; -jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useLocation: jest.fn() })); +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useLocation: vi.fn(), +})); describe('', () => { - const orderByColumn = jest.fn(); + const orderByColumn = vi.fn(); const TagsTable = createTagsTable(({ tag }) => TagsTableRow [{tag.tag}]); const tags = (amount: number) => rangeOf(amount, (i) => `tag_${i}`); const setUp = (sortedTags: string[] = [], search = '') => { @@ -23,7 +26,7 @@ describe('', () => { ); }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders empty result if there are no tags', () => { setUp(); diff --git a/test/tags/helpers/DeleteTagConfirmModal.test.tsx b/test/tags/helpers/DeleteTagConfirmModal.test.tsx index 55493087..fc5fd1ec 100644 --- a/test/tags/helpers/DeleteTagConfirmModal.test.tsx +++ b/test/tags/helpers/DeleteTagConfirmModal.test.tsx @@ -5,20 +5,20 @@ import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { const tag = 'nodejs'; - const deleteTag = jest.fn(); - const toggle = jest.fn(); + const deleteTag = vi.fn(); + const toggle = vi.fn(); const setUp = (tagDelete: TagDeletion) => renderWithEvents( , ); - afterEach(jest.resetAllMocks); + afterEach(vi.resetAllMocks); it('asks confirmation for provided tag to be deleted', () => { setUp({ error: false, deleted: false, deleting: false }); diff --git a/test/tags/helpers/EditTagModal.test.tsx b/test/tags/helpers/EditTagModal.test.tsx index 674f4fd5..d4262c53 100644 --- a/test/tags/helpers/EditTagModal.test.tsx +++ b/test/tags/helpers/EditTagModal.test.tsx @@ -5,17 +5,17 @@ import type { TagEdition } from '../../../src/tags/reducers/tagEdit'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const EditTagModal = createEditTagModal(fromPartial({ getColorForKey: jest.fn(() => 'green') })); - const editTag = jest.fn().mockReturnValue(Promise.resolve()); - const toggle = jest.fn(); + const EditTagModal = createEditTagModal(fromPartial({ getColorForKey: vi.fn(() => 'green') })); + const editTag = vi.fn().mockReturnValue(Promise.resolve()); + const toggle = vi.fn(); const setUp = (tagEdit: Partial = {}) => { const edition = fromPartial(tagEdit); return renderWithEvents( - , + , ); }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('allows modal to be toggled with different mechanisms', async () => { const { user } = setUp(); diff --git a/test/tags/helpers/Tag.test.tsx b/test/tags/helpers/Tag.test.tsx index d754aebd..783775ed 100644 --- a/test/tags/helpers/Tag.test.tsx +++ b/test/tags/helpers/Tag.test.tsx @@ -20,10 +20,10 @@ const hexToRgb = (hex: string) => { }; describe('', () => { - const onClick = jest.fn(); - const onClose = jest.fn(); - const isColorLightForKey = jest.fn(() => false); - const getColorForKey = jest.fn(() => MAIN_COLOR); + const onClick = vi.fn(); + const onClose = vi.fn(); + const isColorLightForKey = vi.fn(() => false); + const getColorForKey = vi.fn(() => MAIN_COLOR); const colorGenerator = fromPartial({ getColorForKey, isColorLightForKey }); const setUp = (text: string, clearable?: boolean, children?: ReactNode) => renderWithEvents( @@ -31,7 +31,7 @@ describe('', () => { , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it.each([ [true], diff --git a/test/tags/helpers/TagsSelector.test.tsx b/test/tags/helpers/TagsSelector.test.tsx index f0a6fd3a..ad95f239 100644 --- a/test/tags/helpers/TagsSelector.test.tsx +++ b/test/tags/helpers/TagsSelector.test.tsx @@ -6,7 +6,7 @@ import { renderWithEvents } from '../../__helpers__/setUpTest'; import { colorGeneratorMock } from '../../utils/services/__mocks__/ColorGenerator.mock'; describe('', () => { - const onChange = jest.fn(); + const onChange = vi.fn(); const TagsSelector = createTagsSelector(colorGeneratorMock); const tags = ['foo', 'bar']; const tagsList = fromPartial({ tags: [...tags, 'baz'] }); @@ -15,12 +15,12 @@ describe('', () => { selectedTags={tags} tagsList={tagsList} settings={fromPartial({})} - listTags={jest.fn()} + listTags={vi.fn()} onChange={onChange} />, ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('has an input for tags', () => { setUp(); diff --git a/test/tags/reducers/tagDelete.test.ts b/test/tags/reducers/tagDelete.test.ts index 640cd88c..38db9d88 100644 --- a/test/tags/reducers/tagDelete.test.ts +++ b/test/tags/reducers/tagDelete.test.ts @@ -4,11 +4,11 @@ import type { ShlinkState } from '../../../src/container/types'; import { tagDeleted, tagDeleteReducerCreator } from '../../../src/tags/reducers/tagDelete'; describe('tagDeleteReducer', () => { - const deleteTagsCall = jest.fn(); + const deleteTagsCall = vi.fn(); const buildShlinkApiClient = () => fromPartial({ deleteTags: deleteTagsCall }); const { reducer, deleteTag } = tagDeleteReducerCreator(buildShlinkApiClient); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); describe('reducer', () => { it('returns loading on DELETE_TAG_START', () => { @@ -43,7 +43,7 @@ describe('tagDeleteReducer', () => { }); describe('deleteTag', () => { - const dispatch = jest.fn(); + const dispatch = vi.fn(); const getState = () => fromPartial({}); it('calls API on success', async () => { diff --git a/test/tags/reducers/tagEdit.test.ts b/test/tags/reducers/tagEdit.test.ts index f5b4426c..cba58980 100644 --- a/test/tags/reducers/tagEdit.test.ts +++ b/test/tags/reducers/tagEdit.test.ts @@ -8,9 +8,9 @@ describe('tagEditReducer', () => { const oldName = 'foo'; const newName = 'bar'; const color = '#ff0000'; - const editTagCall = jest.fn(); + const editTagCall = vi.fn(); const buildShlinkApiClient = () => fromPartial({ editTag: editTagCall }); - const colorGenerator = fromPartial({ setColorForKey: jest.fn() }); + const colorGenerator = fromPartial({ setColorForKey: vi.fn() }); const editTag = editTagCreator(buildShlinkApiClient, colorGenerator); const { reducer } = tagEditReducerCreator(editTag); @@ -50,10 +50,10 @@ describe('tagEditReducer', () => { }); describe('editTag', () => { - const dispatch = jest.fn(); + const dispatch = vi.fn(); const getState = () => fromPartial({}); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('calls API on success', async () => { editTagCall.mockResolvedValue(undefined); diff --git a/test/tags/reducers/tagsList.test.ts b/test/tags/reducers/tagsList.test.ts index 09936db2..230d024e 100644 --- a/test/tags/reducers/tagsList.test.ts +++ b/test/tags/reducers/tagsList.test.ts @@ -16,12 +16,12 @@ import type { CreateVisit } from '../../../src/visits/types'; describe('tagsListReducer', () => { const state = (props: Partial) => fromPartial(props); - const buildShlinkApiClient = jest.fn(); + const buildShlinkApiClient = vi.fn(); const listTags = listTagsCreator(buildShlinkApiClient, true); const createShortUrl = createShortUrlCreator(buildShlinkApiClient); const { reducer } = tagsListReducerCreator(listTags, createShortUrl); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); describe('reducer', () => { it('returns loading on LIST_TAGS_START', () => { @@ -196,9 +196,9 @@ describe('tagsListReducer', () => { }); describe('listTags', () => { - const dispatch = jest.fn(); - const getState = jest.fn(() => fromPartial({})); - const listTagsMock = jest.fn(); + const dispatch = vi.fn(); + const getState = vi.fn(() => fromPartial({})); + const listTagsMock = vi.fn(); const assertNoAction = async (tagsList: TagsList) => { getState.mockReturnValue(fromPartial({ tagsList })); diff --git a/test/utils/Checkbox.test.tsx b/test/utils/Checkbox.test.tsx index d290b319..09c248be 100644 --- a/test/utils/Checkbox.test.tsx +++ b/test/utils/Checkbox.test.tsx @@ -24,7 +24,7 @@ describe('', () => { }); it.each([[true], [false]])('changes checked status on input change', async (checked) => { - const onChange = jest.fn(); + const onChange = vi.fn(); const { user } = renderWithEvents(Foo); expect(onChange).not.toHaveBeenCalled(); diff --git a/test/utils/CopyToClipboardIcon.test.tsx b/test/utils/CopyToClipboardIcon.test.tsx index 3423a3d9..2b0c625f 100644 --- a/test/utils/CopyToClipboardIcon.test.tsx +++ b/test/utils/CopyToClipboardIcon.test.tsx @@ -2,10 +2,10 @@ import { CopyToClipboardIcon } from '../../src/utils/CopyToClipboardIcon'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const onCopy = jest.fn(); + const onCopy = vi.fn(); const setUp = (text = 'foo') => renderWithEvents(); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('wraps expected components', () => { const { container } = setUp(); diff --git a/test/utils/DropdownBtnMenu.test.tsx b/test/utils/DropdownBtnMenu.test.tsx index 22741fde..a15244ea 100644 --- a/test/utils/DropdownBtnMenu.test.tsx +++ b/test/utils/DropdownBtnMenu.test.tsx @@ -6,7 +6,7 @@ import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { const setUp = (props: Partial = {}) => renderWithEvents( - ({ toggle: jest.fn(), ...props })}> + ({ toggle: vi.fn(), ...props })}> the children , ); diff --git a/test/utils/OrderingDropdown.test.tsx b/test/utils/OrderingDropdown.test.tsx index 71660353..56ecba33 100644 --- a/test/utils/OrderingDropdown.test.tsx +++ b/test/utils/OrderingDropdown.test.tsx @@ -12,7 +12,7 @@ describe('', () => { baz: 'Hello World', }; const setUp = (props: Partial = {}) => renderWithEvents( - , + , ); const setUpWithDisplayedMenu = async (props: Partial = {}) => { const result = setUp(props); @@ -65,7 +65,7 @@ describe('', () => { ])( 'triggers change with proper params depending on clicked item and initial state', async (initialOrder, expectedNewField, expectedNewDir) => { - const onChange = jest.fn(); + const onChange = vi.fn(); const { user } = await setUpWithDisplayedMenu({ onChange, order: initialOrder }); await user.click(screen.getAllByRole('menuitem')[0]); @@ -76,7 +76,7 @@ describe('', () => { ); it('clears selection when last item is clicked', async () => { - const onChange = jest.fn(); + const onChange = vi.fn(); const { user } = await setUpWithDisplayedMenu({ onChange, order: { field: 'baz', dir: 'ASC' } }); await user.click(screen.getAllByRole('menuitem')[3]); diff --git a/test/utils/PaginationDropdown.test.tsx b/test/utils/PaginationDropdown.test.tsx index 02ff5d61..03551714 100644 --- a/test/utils/PaginationDropdown.test.tsx +++ b/test/utils/PaginationDropdown.test.tsx @@ -3,7 +3,7 @@ import { PaginationDropdown } from '../../src/utils/PaginationDropdown'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const setValue = jest.fn(); + const setValue = vi.fn(); const setUp = async () => { const result = renderWithEvents(); const { user } = result; @@ -13,7 +13,7 @@ describe('', () => { return result; }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders expected amount of items', async () => { await setUp(); diff --git a/test/utils/__snapshots__/CopyToClipboardIcon.test.tsx.snap b/test/utils/__snapshots__/CopyToClipboardIcon.test.tsx.snap index 27dc438a..cbbe8016 100644 --- a/test/utils/__snapshots__/CopyToClipboardIcon.test.tsx.snap +++ b/test/utils/__snapshots__/CopyToClipboardIcon.test.tsx.snap @@ -1,4 +1,24 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > wraps expected components 1`] = ` +
+ +
+`; exports[` wraps expected components 1`] = `
diff --git a/test/utils/__snapshots__/ExportBtn.test.tsx.snap b/test/utils/__snapshots__/ExportBtn.test.tsx.snap index 466ba0f7..6b663ec8 100644 --- a/test/utils/__snapshots__/ExportBtn.test.tsx.snap +++ b/test/utils/__snapshots__/ExportBtn.test.tsx.snap @@ -1,4 +1,22 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders expected icon 1`] = ` + +`; exports[` renders expected icon 1`] = ` > displays provided icon 1`] = ` +
+
+ + +
+
+`; + +exports[` > displays provided icon 2`] = ` +
+
+ + +
+
+`; + +exports[` > displays provided icon 3`] = ` +
+
+ + +
+
+`; exports[` displays provided icon 1`] = `
diff --git a/test/utils/dates/DateIntervalDropdownItems.test.tsx b/test/utils/dates/DateIntervalDropdownItems.test.tsx index 7b56930d..fdede1c0 100644 --- a/test/utils/dates/DateIntervalDropdownItems.test.tsx +++ b/test/utils/dates/DateIntervalDropdownItems.test.tsx @@ -6,7 +6,7 @@ import { DATE_INTERVALS, rangeOrIntervalToString } from '../../../src/utils/help import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const onChange = jest.fn(); + const onChange = vi.fn(); const setUp = async () => { const { user, ...renderResult } = renderWithEvents( @@ -20,7 +20,7 @@ describe('', () => { return { user, ...renderResult }; }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders expected amount of items', async () => { await setUp(); diff --git a/test/utils/dates/DateIntervalSelector.test.tsx b/test/utils/dates/DateIntervalSelector.test.tsx index 75b995bb..1e40164b 100644 --- a/test/utils/dates/DateIntervalSelector.test.tsx +++ b/test/utils/dates/DateIntervalSelector.test.tsx @@ -6,7 +6,7 @@ import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { const activeInterval: DateInterval = 'last7Days'; - const onChange = jest.fn(); + const onChange = vi.fn(); const setUp = () => renderWithEvents( , ); diff --git a/test/utils/dates/DateRangeRow.test.tsx b/test/utils/dates/DateRangeRow.test.tsx index a4ab3e70..0f71f5af 100644 --- a/test/utils/dates/DateRangeRow.test.tsx +++ b/test/utils/dates/DateRangeRow.test.tsx @@ -3,13 +3,13 @@ import { DateRangeRow } from '../../../src/utils/dates/DateRangeRow'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const onEndDateChange = jest.fn(); - const onStartDateChange = jest.fn(); + const onEndDateChange = vi.fn(); + const onStartDateChange = vi.fn(); const setUp = () => renderWithEvents( , ); - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders two date inputs', () => { setUp(); diff --git a/test/utils/dates/DateRangeSelector.test.tsx b/test/utils/dates/DateRangeSelector.test.tsx index 08047483..09ee3c16 100644 --- a/test/utils/dates/DateRangeSelector.test.tsx +++ b/test/utils/dates/DateRangeSelector.test.tsx @@ -6,7 +6,7 @@ import type { DateInterval } from '../../../src/utils/helpers/dateIntervals'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const onDatesChange = jest.fn(); + const onDatesChange = vi.fn(); const setUp = async (props: Partial = {}) => { const result = renderWithEvents( ', () => { return result; }; - afterEach(jest.clearAllMocks); + afterEach(vi.clearAllMocks); it('renders proper amount of items', async () => { const { container } = await setUp(); diff --git a/test/utils/services/ColorGenerator.test.ts b/test/utils/services/ColorGenerator.test.ts index 50c85b0c..6b2dcd4c 100644 --- a/test/utils/services/ColorGenerator.test.ts +++ b/test/utils/services/ColorGenerator.test.ts @@ -6,12 +6,12 @@ import { MAIN_COLOR } from '../../../src/utils/theme'; describe('ColorGenerator', () => { let colorGenerator: ColorGenerator; const storageMock = fromPartial({ - set: jest.fn(), - get: jest.fn(), + set: vi.fn(), + get: vi.fn(), }); beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); colorGenerator = new ColorGenerator(storageMock); }); diff --git a/test/utils/services/LocalStorage.test.ts b/test/utils/services/LocalStorage.test.ts index dd866efa..c8b94b6a 100644 --- a/test/utils/services/LocalStorage.test.ts +++ b/test/utils/services/LocalStorage.test.ts @@ -2,13 +2,13 @@ import { fromPartial } from '@total-typescript/shoehorn'; import { LocalStorage } from '../../../src/utils/services/LocalStorage'; describe('LocalStorage', () => { - const getItem = jest.fn((key) => (key === 'shlink.foo' ? JSON.stringify({ foo: 'bar' }) : null)); - const setItem = jest.fn(); + const getItem = vi.fn((key) => (key === 'shlink.foo' ? JSON.stringify({ foo: 'bar' }) : null)); + const setItem = vi.fn(); const localStorageMock = fromPartial({ getItem, setItem }); let storage: LocalStorage; beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); storage = new LocalStorage(localStorageMock); }); diff --git a/test/utils/services/__mocks__/ColorGenerator.mock.ts b/test/utils/services/__mocks__/ColorGenerator.mock.ts index 2c68c4d6..d898575d 100644 --- a/test/utils/services/__mocks__/ColorGenerator.mock.ts +++ b/test/utils/services/__mocks__/ColorGenerator.mock.ts @@ -2,7 +2,7 @@ import { fromPartial } from '@total-typescript/shoehorn'; import type { ColorGenerator } from '../../../../src/utils/services/ColorGenerator'; export const colorGeneratorMock = fromPartial({ - getColorForKey: jest.fn(() => 'red'), - setColorForKey: jest.fn(), - isColorLightForKey: jest.fn(() => false), + getColorForKey: vi.fn(() => 'red'), + setColorForKey: vi.fn(), + isColorLightForKey: vi.fn(() => false), }); diff --git a/test/utils/table/__snapshots__/TableOrderIcon.test.tsx.snap b/test/utils/table/__snapshots__/TableOrderIcon.test.tsx.snap index b5a3a467..2a858f2c 100644 --- a/test/utils/table/__snapshots__/TableOrderIcon.test.tsx.snap +++ b/test/utils/table/__snapshots__/TableOrderIcon.test.tsx.snap @@ -1,4 +1,40 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders an icon when all conditions are met 1`] = ` + +`; + +exports[` > renders an icon when all conditions are met 2`] = ` + +`; exports[` renders an icon when all conditions are met 1`] = ` ({ - ...jest.requireActual('react-router-dom'), - useParams: jest.fn().mockReturnValue({ domain: 'foo.com_DEFAULT' }), +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useParams: vi.fn().mockReturnValue({ domain: 'foo.com_DEFAULT' }), })); describe('', () => { - const exportVisits = jest.fn(); - const getDomainVisits = jest.fn(); - const cancelGetDomainVisits = jest.fn(); + const exportVisits = vi.fn(); + const getDomainVisits = vi.fn(); + const cancelGetDomainVisits = vi.fn(); const domainVisits = fromPartial({ visits: [{ date: formatISO(new Date()) }] }); const DomainVisits = createDomainVisits(fromPartial({ exportVisits })); const setUp = () => renderWithEvents( diff --git a/test/visits/NonOrphanVisits.test.tsx b/test/visits/NonOrphanVisits.test.tsx index c60160ff..fb024b52 100644 --- a/test/visits/NonOrphanVisits.test.tsx +++ b/test/visits/NonOrphanVisits.test.tsx @@ -8,9 +8,9 @@ import type { VisitsInfo } from '../../src/visits/reducers/types'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const exportVisits = jest.fn(); - const getNonOrphanVisits = jest.fn(); - const cancelGetNonOrphanVisits = jest.fn(); + const exportVisits = vi.fn(); + const getNonOrphanVisits = vi.fn(); + const cancelGetNonOrphanVisits = vi.fn(); const nonOrphanVisits = fromPartial({ visits: [{ date: formatISO(new Date()) }] }); const NonOrphanVisits = createNonOrphanVisits(fromPartial({ exportVisits })); const setUp = () => renderWithEvents( diff --git a/test/visits/OrphanVisits.test.tsx b/test/visits/OrphanVisits.test.tsx index 87f46f72..53bad336 100644 --- a/test/visits/OrphanVisits.test.tsx +++ b/test/visits/OrphanVisits.test.tsx @@ -8,8 +8,8 @@ import type { VisitsInfo } from '../../src/visits/reducers/types'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const getOrphanVisits = jest.fn(); - const exportVisits = jest.fn(); + const getOrphanVisits = vi.fn(); + const exportVisits = vi.fn(); const orphanVisits = fromPartial({ visits: [{ date: formatISO(new Date()) }] }); const OrphanVisits = createOrphanVisits(fromPartial({ exportVisits })); const setUp = () => renderWithEvents( @@ -18,7 +18,7 @@ describe('', () => { {...fromPartial({ mercureInfo: {} })} getOrphanVisits={getOrphanVisits} orphanVisits={orphanVisits} - cancelGetOrphanVisits={jest.fn()} + cancelGetOrphanVisits={vi.fn()} settings={fromPartial({})} /> , diff --git a/test/visits/ShortUrlVisits.test.tsx b/test/visits/ShortUrlVisits.test.tsx index b36dadbe..cf6014a9 100644 --- a/test/visits/ShortUrlVisits.test.tsx +++ b/test/visits/ShortUrlVisits.test.tsx @@ -10,8 +10,8 @@ import { ShortUrlVisits as createShortUrlVisits } from '../../src/visits/ShortUr import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { - const getShortUrlVisitsMock = jest.fn(); - const exportVisits = jest.fn(); + const getShortUrlVisitsMock = vi.fn(); + const exportVisits = vi.fn(); const shortUrlVisits = fromPartial({ visits: [{ date: formatISO(new Date()) }] }); const ShortUrlVisits = createShortUrlVisits(fromPartial({ exportVisits })); const setUp = () => renderWithEvents( diff --git a/test/visits/ShortUrlVisitsHeader.test.tsx b/test/visits/ShortUrlVisitsHeader.test.tsx index a9ec7756..12863cee 100644 --- a/test/visits/ShortUrlVisitsHeader.test.tsx +++ b/test/visits/ShortUrlVisitsHeader.test.tsx @@ -12,7 +12,7 @@ describe('', () => { const shortUrlVisits = fromPartial({ visits: [{}, {}, {}], }); - const goBack = jest.fn(); + const goBack = vi.fn(); const setUp = (title?: string | null) => { const shortUrlDetail = fromPartial({ shortUrl: { diff --git a/test/visits/TagVisits.test.tsx b/test/visits/TagVisits.test.tsx index 492fb577..72b28df3 100644 --- a/test/visits/TagVisits.test.tsx +++ b/test/visits/TagVisits.test.tsx @@ -1,21 +1,21 @@ import { screen } from '@testing-library/react'; import { fromPartial } from '@total-typescript/shoehorn'; import { formatISO } from 'date-fns'; -import { MemoryRouter } from 'react-router-dom'; +import { MemoryRouter } from 'react-router'; import type { MercureBoundProps } from '../../src/mercure/helpers/boundToMercureHub'; import type { TagVisits as TagVisitsStats } from '../../src/visits/reducers/tagVisits'; import type { TagVisitsProps } from '../../src/visits/TagVisits'; import { TagVisits as createTagVisits } from '../../src/visits/TagVisits'; import { renderWithEvents } from '../__helpers__/setUpTest'; -jest.mock('react-router-dom', () => ({ - ...jest.requireActual('react-router-dom'), - useParams: jest.fn().mockReturnValue({ tag: 'foo' }), +vi.mock('react-router-dom', async () => ({ + ...(await vi.importActual('react-router-dom')), + useParams: vi.fn().mockReturnValue({ tag: 'foo' }), })); describe('', () => { - const getTagVisitsMock = jest.fn(); - const exportVisits = jest.fn(); + const getTagVisitsMock = vi.fn(); + const exportVisits = vi.fn(); const tagVisits = fromPartial({ visits: [{ date: formatISO(new Date()) }] }); const TagVisits = createTagVisits( fromPartial({ isColorLightForKey: () => false, getColorForKey: () => 'red' }), diff --git a/test/visits/TagVisitsHeader.test.tsx b/test/visits/TagVisitsHeader.test.tsx index 1905d121..6c936c44 100644 --- a/test/visits/TagVisitsHeader.test.tsx +++ b/test/visits/TagVisitsHeader.test.tsx @@ -9,7 +9,7 @@ describe('', () => { tag: 'foo', visits: [{}, {}, {}, {}], }); - const goBack = jest.fn(); + const goBack = vi.fn(); const colorGenerator = fromPartial({ isColorLightForKey: () => false, getColorForKey: () => 'red' }); const setUp = () => render(); diff --git a/test/visits/VisitsHeader.test.tsx b/test/visits/VisitsHeader.test.tsx index 64887d20..b2131af3 100644 --- a/test/visits/VisitsHeader.test.tsx +++ b/test/visits/VisitsHeader.test.tsx @@ -6,7 +6,7 @@ import { VisitsHeader } from '../../src/visits/VisitsHeader'; describe('', () => { const visits: Visit[] = [fromPartial({}), fromPartial({}), fromPartial({})]; const title = 'My header title'; - const goBack = jest.fn(); + const goBack = vi.fn(); const setUp = () => render(); it('shows the amount of visits', () => { diff --git a/test/visits/VisitsStats.test.tsx b/test/visits/VisitsStats.test.tsx index eb8cc1b8..f5ce5702 100644 --- a/test/visits/VisitsStats.test.tsx +++ b/test/visits/VisitsStats.test.tsx @@ -10,8 +10,8 @@ import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { const visits = rangeOf(3, () => fromPartial({ date: '2020-01-01' })); - const getVisitsMock = jest.fn(); - const exportCsv = jest.fn(); + const getVisitsMock = vi.fn(); + const exportCsv = vi.fn(); const setUp = (visitsInfo: Partial, activeRoute = '/by-time') => { const history = createMemoryHistory(); history.push(activeRoute); diff --git a/test/visits/VisitsTable.test.tsx b/test/visits/VisitsTable.test.tsx index eb59deda..d35587f5 100644 --- a/test/visits/VisitsTable.test.tsx +++ b/test/visits/VisitsTable.test.tsx @@ -8,7 +8,7 @@ import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { const matchMedia = () => fromPartial({ matches: false }); - const setSelectedVisits = jest.fn(); + const setSelectedVisits = vi.fn(); const setUpFactory = (props: Partial = {}) => renderWithEvents( ', () => { ], }); - afterEach(jest.resetAllMocks); + afterEach(vi.resetAllMocks); it('renders expected amount of columns', () => { setUp([], []); diff --git a/test/visits/charts/__snapshots__/DoughnutChart.test.tsx.snap b/test/visits/charts/__snapshots__/DoughnutChart.test.tsx.snap index 2bfc371b..2cbe79aa 100644 --- a/test/visits/charts/__snapshots__/DoughnutChart.test.tsx.snap +++ b/test/visits/charts/__snapshots__/DoughnutChart.test.tsx.snap @@ -1,4 +1,28 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders Doughnut with expected props 1`] = ` +[ + { + "props": { + "a": 1, + "b": 0, + "c": 0, + "d": 1, + "e": 0, + "f": 0, + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "setTransform", + }, +] +`; exports[` renders Doughnut with expected props 1`] = ` [ diff --git a/test/visits/charts/__snapshots__/HorizontalBarChart.test.tsx.snap b/test/visits/charts/__snapshots__/HorizontalBarChart.test.tsx.snap index 28b01a3f..7d7beed3 100644 --- a/test/visits/charts/__snapshots__/HorizontalBarChart.test.tsx.snap +++ b/test/visits/charts/__snapshots__/HorizontalBarChart.test.tsx.snap @@ -1,4 +1,524 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders chart with expected canvas 1`] = ` +[ + { + "props": { + "a": 1, + "b": 0, + "c": 0, + "d": 1, + "e": 0, + "f": 0, + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "setTransform", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "foo", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "bar", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "0", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "500", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, +] +`; + +exports[` > renders chart with expected canvas 2`] = ` +[ + { + "props": { + "a": 1, + "b": 0, + "c": 0, + "d": 1, + "e": 0, + "f": 0, + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "setTransform", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "one", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "two", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "0", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "200,000", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, +] +`; + +exports[` > renders chart with expected canvas 3`] = ` +[ + { + "props": { + "a": 1, + "b": 0, + "c": 0, + "d": 1, + "e": 0, + "f": 0, + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "setTransform", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "one", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "two", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "max", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "0", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "200,000", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, +] +`; exports[` renders chart with expected canvas 1`] = ` [ diff --git a/test/visits/charts/__snapshots__/LineChartCard.test.tsx.snap b/test/visits/charts/__snapshots__/LineChartCard.test.tsx.snap index 6e049e38..a385f471 100644 --- a/test/visits/charts/__snapshots__/LineChartCard.test.tsx.snap +++ b/test/visits/charts/__snapshots__/LineChartCard.test.tsx.snap @@ -1,4 +1,464 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders chart with expected data 1`] = ` +[ + { + "props": { + "a": 1, + "b": 0, + "c": 0, + "d": 1, + "e": 0, + "f": 0, + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "setTransform", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "0", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "1", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, +] +`; + +exports[` > renders chart with expected data 2`] = ` +[ + { + "props": { + "a": 1, + "b": 0, + "c": 0, + "d": 1, + "e": 0, + "f": 0, + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "setTransform", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "0", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "1", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, +] +`; + +exports[` > renders chart with expected data 3`] = ` +[ + { + "props": { + "a": 1, + "b": 0, + "c": 0, + "d": 1, + "e": 0, + "f": 0, + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "setTransform", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "0", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "1", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "2016-04", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, +] +`; + +exports[` > renders chart with expected data 4`] = ` +[ + { + "props": { + "a": 1, + "b": 0, + "c": 0, + "d": 1, + "e": 0, + "f": 0, + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "setTransform", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "0", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "1", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, + { + "props": { + "text": "2016-04", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "measureText", + }, + { + "props": { + "value": "12px \\"Helvetica Neue\\", 'Helvetica', 'Arial', sans-serif", + }, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0, + ], + "type": "font", + }, +] +`; exports[` renders chart with expected data 1`] = ` [ diff --git a/test/visits/charts/__snapshots__/SortableBarChartCard.test.tsx.snap b/test/visits/charts/__snapshots__/SortableBarChartCard.test.tsx.snap index 175b4f45..ae4bf902 100644 --- a/test/visits/charts/__snapshots__/SortableBarChartCard.test.tsx.snap +++ b/test/visits/charts/__snapshots__/SortableBarChartCard.test.tsx.snap @@ -1,4 +1,1234 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders properly ordered stats when ordering is set 1`] = ` +
+
+ Foo +
+ +
+
+ +
+
+`; + +exports[` > renders properly ordered stats when ordering is set 2`] = ` +
+
+ Foo +
+ +
+
+ +
+
+`; + +exports[` > renders properly ordered stats when ordering is set 3`] = ` +
+
+ Foo +
+ +
+
+ +
+
+`; + +exports[` > renders properly ordered stats when ordering is set 4`] = ` +
+
+ Foo +
+ +
+
+ +
+
+`; + +exports[` > renders properly paginated stats when pagination is set 1`] = ` +
+
+ Foo +
+ +
+ +
+
+ +
+ +
+`; + +exports[` > renders properly paginated stats when pagination is set 2`] = ` +
+
+ Foo +
+ +
+ +
+
+ +
+ +
+`; + +exports[` > renders properly paginated stats when pagination is set 3`] = ` +
+
+ Foo +
+ +
+ +
+
+ +
+
+`; + +exports[` > renders properly paginated stats when pagination is set 4`] = ` +
+
+ Foo +
+ +
+ +
+
+ +
+
+`; + +exports[` > renders stats unchanged when no ordering is set 1`] = ` +
+
+ Foo +
+ +
+
+ +
+
+`; exports[` renders properly ordered stats when ordering is set 1`] = `
', () => { - const toggle = jest.fn(); + const toggle = vi.fn(); const zaragozaLat = 41.6563497; const zaragozaLong = -0.876566; const newYorkLat = 40.730610; diff --git a/test/visits/helpers/VisitsFilterDropdown.test.tsx b/test/visits/helpers/VisitsFilterDropdown.test.tsx index 1008d80e..2cab4ceb 100644 --- a/test/visits/helpers/VisitsFilterDropdown.test.tsx +++ b/test/visits/helpers/VisitsFilterDropdown.test.tsx @@ -4,7 +4,7 @@ import type { OrphanVisitType, VisitsFilter } from '../../../src/visits/types'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { - const onChange = jest.fn(); + const onChange = vi.fn(); const setUp = (selected: VisitsFilter = {}, isOrphanVisits = true) => renderWithEvents( ', () => { />, ); - beforeEach(jest.clearAllMocks); + beforeEach(vi.clearAllMocks); it('has expected text', () => { setUp(); diff --git a/test/visits/helpers/__snapshots__/MapModal.test.tsx.snap b/test/visits/helpers/__snapshots__/MapModal.test.tsx.snap index 9a95d69d..6492c497 100644 --- a/test/visits/helpers/__snapshots__/MapModal.test.tsx.snap +++ b/test/visits/helpers/__snapshots__/MapModal.test.tsx.snap @@ -1,4 +1,186 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[` > renders expected map 1`] = ` +