diff --git a/.eslintignore b/.eslintignore index dd0849ba01..ff998cbd5a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ storybook-static build +!/.storybook diff --git a/.eslintrc b/.eslintrc index 567776dea1..22a614c5e8 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,13 +1,27 @@ { - "extends": ["@gravity-ui/eslint-config", "@gravity-ui/eslint-config/prettier"], + "extends": ["@gravity-ui/eslint-config", "@gravity-ui/eslint-config/client", "@gravity-ui/eslint-config/prettier"], "root": true, - "env": { - "node": true, - "jest": true + "rules": { + "react/jsx-fragments": ["error", "element"], + "no-restricted-syntax": [ + "error", + { + "selector": "ImportDeclaration[source.value='react'] :matches(ImportNamespaceSpecifier, ImportSpecifier)", + "message": "Please use import React from 'react' instead." + }, + { + "selector": "TSTypeReference>TSQualifiedName[left.name='React'][right.name='FC']", + "message": "Don't use React.FC" + } + ] }, "overrides": [ { "files": ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"], + "env": { + "node": true, + "jest": true + }, "extends": ["plugin:testing-library/react"] }, { @@ -15,6 +29,12 @@ "rules": { "no-console": "off" } + }, + { + "files": ["**/*.js", "!src/**/*"], + "env": { + "node": true + } } ] } diff --git a/.storybook/decorators/withLang.tsx b/.storybook/decorators/withLang.tsx index 50ce5e1c8c..2b72438696 100644 --- a/.storybook/decorators/withLang.tsx +++ b/.storybook/decorators/withLang.tsx @@ -1,8 +1,10 @@ import React from 'react'; + import type {DecoratorFn} from '@storybook/react'; + import {Lang, configure} from '../../src'; -export const withLang: DecoratorFn = (Story, context) => { +export const WithLang: DecoratorFn = (Story, context) => { const lang = context.globals.lang; configure({ diff --git a/.storybook/decorators/withMobile.tsx b/.storybook/decorators/withMobile.tsx index 03d22ab264..49bf53ece3 100644 --- a/.storybook/decorators/withMobile.tsx +++ b/.storybook/decorators/withMobile.tsx @@ -1,8 +1,10 @@ import React from 'react'; + import type {DecoratorFn} from '@storybook/react'; + import {useMobile} from '../../src'; -export const withMobile: DecoratorFn = (Story, context) => { +export const WithMobile: DecoratorFn = (Story, context) => { const mobileValue = context.globals.platform === 'mobile'; const [, setMobile] = useMobile(); // eslint-disable-line react-hooks/rules-of-hooks diff --git a/.storybook/decorators/withTheme.tsx b/.storybook/decorators/withTheme.tsx index 3386885d76..776f055c54 100644 --- a/.storybook/decorators/withTheme.tsx +++ b/.storybook/decorators/withTheme.tsx @@ -1,8 +1,10 @@ import React from 'react'; + import type {DecoratorFn} from '@storybook/react'; + import {useTheme} from '../../src'; -export const withTheme: DecoratorFn = (Story, context) => { +export const WithTheme: DecoratorFn = (Story, context) => { const themeValue = context.globals.theme; const [theme, setTheme] = useTheme(); diff --git a/.storybook/manager.ts b/.storybook/manager.ts index b56a8ae238..834b8db470 100644 --- a/.storybook/manager.ts +++ b/.storybook/manager.ts @@ -1,4 +1,5 @@ import {addons} from '@storybook/addons'; + import {themes} from './theme'; addons.setConfig({ diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 23b6c10341..cbda5150b8 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -1,14 +1,18 @@ +// eslint-disable-next-line import/order import '../styles/styles.scss'; import React from 'react'; + import {MINIMAL_VIEWPORTS} from '@storybook/addon-viewport'; import type {DecoratorFn} from '@storybook/react'; -import {themes} from './theme'; -import {withMobile} from './decorators/withMobile'; -import {withLang} from './decorators/withLang'; -import {ThemeProvider, MobileProvider, configure, Lang} from '../src'; + +import {Lang, MobileProvider, ThemeProvider, configure} from '../src'; import {DocsDecorator} from '../src/demo/DocsDecorator/DocsDecorator'; +import {WithLang} from './decorators/withLang'; +import {WithMobile} from './decorators/withMobile'; +import {themes} from './theme'; + configure({ lang: Lang.En, }); @@ -25,7 +29,7 @@ const withContextProvider: DecoratorFn = (Story, context) => { ); }; -export const decorators = [withMobile, withLang, withContextProvider]; +export const decorators = [WithMobile, WithLang, withContextProvider]; export const parameters = { docs: { diff --git a/.storybook/theme-addon/register.tsx b/.storybook/theme-addon/register.tsx index a4182d50ea..272b96ca5f 100644 --- a/.storybook/theme-addon/register.tsx +++ b/.storybook/theme-addon/register.tsx @@ -1,8 +1,11 @@ -import * as React from 'react'; +import React from 'react'; + import {addons, types} from '@storybook/addons'; -import {useGlobals, type API} from '@storybook/api'; -import {themes} from '../theme'; +import {useGlobals} from '@storybook/api'; +import type {API} from '@storybook/api'; + import {getThemeType} from '../../src/components/theme/getThemeType'; +import {themes} from '../theme'; const ADDON_ID = 'yc-theme-addon'; const TOOL_ID = `${ADDON_ID}tool`; diff --git a/gulpfile.js b/gulpfile.js index 47a0334f62..4675138b52 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -19,6 +19,8 @@ function compileTs(modules = false) { const tsProject = ts.createProject('tsconfig.json', { declaration: true, module: modules ? 'esnext' : 'commonjs', + // uncomment after switching to typescript 5 with verbatimModuleSyntax: true + // ...(modules ? undefined : {verbatimModuleSyntax: false}), }); return src([ diff --git a/jest.config.js b/jest.config.js index 7effdf19c8..9f714164f2 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,7 +3,7 @@ module.exports = { moduleFileExtensions: ['js', 'json', 'ts', 'tsx'], rootDir: '.', transform: { - '^.+\\.[jt]sx?$': 'ts-jest', + '^.+\\.tsx?$': ['ts-jest', {tsconfig: './tsconfig.test.json'}], }, transformIgnorePatterns: ['node_modules/(?!(@gravity-ui)/)'], coverageDirectory: './coverage', diff --git a/package-lock.json b/package-lock.json index 0ca0b65384..94b9f673cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.1.tgz", "integrity": "sha512-Aolwjd7HSC2PyY0fDj/wA/EimQT4HfEnFYNp5s9CQlrdhyvWTtvZ5YzrUPu6R6/1jKiUlxu8bUhkdSnKHNAHMA==", + "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.0" } @@ -22,6 +23,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, "requires": { "@babel/highlight": "^7.16.7" } @@ -29,12 +31,14 @@ "@babel/compat-data": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==" + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "dev": true }, "@babel/core": { "version": "7.17.2", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz", "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==", + "dev": true, "requires": { "@ampproject/remapping": "^2.0.0", "@babel/code-frame": "^7.16.7", @@ -56,7 +60,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -93,6 +98,7 @@ "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "dev": true, "requires": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", @@ -141,6 +147,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "dev": true, "requires": { "@babel/compat-data": "^7.16.4", "@babel/helper-validator-option": "^7.16.7", @@ -151,7 +158,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -389,6 +397,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, "requires": { "@babel/types": "^7.16.7" } @@ -425,6 +434,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", @@ -435,6 +445,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, "requires": { "@babel/types": "^7.16.7" } @@ -443,6 +454,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, "requires": { "@babel/types": "^7.16.7" } @@ -479,6 +491,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, "requires": { "@babel/types": "^7.16.7" } @@ -487,6 +500,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", @@ -529,7 +543,8 @@ "@babel/helper-plugin-utils": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true }, "@babel/helper-remap-async-to-generator": { "version": "7.18.9", @@ -714,6 +729,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dev": true, "requires": { "@babel/types": "^7.16.7" } @@ -750,6 +766,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, "requires": { "@babel/types": "^7.16.7" } @@ -763,12 +780,14 @@ "@babel/helper-validator-identifier": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true }, "@babel/helper-validator-option": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true }, "@babel/helper-wrap-function": { "version": "7.20.5", @@ -905,6 +924,7 @@ "version": "7.17.2", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "dev": true, "requires": { "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.0", @@ -915,6 +935,7 @@ "version": "7.16.10", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", @@ -924,7 +945,8 @@ "@babel/parser": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==" + "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -1630,12 +1652,20 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "dev": true + } } }, "@babel/plugin-transform-arrow-functions": { @@ -3752,6 +3782,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, "requires": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", @@ -3762,6 +3793,7 @@ "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", + "dev": true, "requires": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.17.0", @@ -3779,6 +3811,7 @@ "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -3814,22 +3847,113 @@ "optional": true }, "@commitlint/cli": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-15.0.0.tgz", - "integrity": "sha512-Y5xmDCweytqzo4N4lOI2YRiuX35xTjcs8n5hUceBH8eyK0YbwtgWX50BJOH2XbkwEmII9blNhlBog6AdQsqicg==", + "version": "17.6.5", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.5.tgz", + "integrity": "sha512-3PQrWr/uo6lzF5k7n5QuosCYnzaxP9qGBp3jhWP0Vmsa7XA6wrl9ccPqfQyXpSbQE3zBROVO3TDqgPKe4tfmLQ==", "dev": true, "requires": { - "@commitlint/format": "^15.0.0", - "@commitlint/lint": "^15.0.0", - "@commitlint/load": "^15.0.0", - "@commitlint/read": "^15.0.0", - "@commitlint/types": "^15.0.0", - "lodash": "^4.17.19", + "@commitlint/format": "^17.4.4", + "@commitlint/lint": "^17.6.5", + "@commitlint/load": "^17.5.0", + "@commitlint/read": "^17.5.1", + "@commitlint/types": "^17.4.4", + "execa": "^5.0.0", + "lodash.isfunction": "^3.0.9", "resolve-from": "5.0.0", "resolve-global": "1.0.0", "yargs": "^17.0.0" }, "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.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" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "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" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "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 + }, + "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 + }, + "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" + } + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -3837,61 +3961,95 @@ "dev": true }, "yargs": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", - "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "cliui": "^7.0.2", + "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.0.0" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true } } }, "@commitlint/config-conventional": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-15.0.0.tgz", - "integrity": "sha512-eZBRL8Lk3hMNHp1wUMYj0qrZQEsST1ai7KHR8J1IDD9aHgT7L2giciibuQ+Og7vxVhR5WtYDvh9xirXFVPaSkQ==", + "version": "17.6.5", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.6.5.tgz", + "integrity": "sha512-Xl9H9KLl86NZm5CYNTNF9dcz1xelE/EbvhWIWcYxG/rn3UWYWdWmmnX2q6ZduNdLFSGbOxzUpIx61j5zxbeXxg==", + "dev": true, + "requires": { + "conventional-changelog-conventionalcommits": "^5.0.0" + } + }, + "@commitlint/config-validator": { + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.4.4.tgz", + "integrity": "sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==", "dev": true, "requires": { - "conventional-changelog-conventionalcommits": "^4.3.1" + "@commitlint/types": "^17.4.4", + "ajv": "^8.11.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "@commitlint/ensure": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-15.0.0.tgz", - "integrity": "sha512-7DV4iNIald3vycwaWBNGk5FbonaNzOlU8nBe5m5AgU2dIeNKuXwLm+zzJzG27j0Ho56rgz//3F6RIvmsoxY9ZA==", + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.4.4.tgz", + "integrity": "sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==", "dev": true, "requires": { - "@commitlint/types": "^15.0.0", - "lodash": "^4.17.19" + "@commitlint/types": "^17.4.4", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" } }, "@commitlint/execute-rule": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-15.0.0.tgz", - "integrity": "sha512-pyE4ApxjbWhb1TXz5vRiGwI2ssdMMgZbaaheZq1/7WC0xRnqnIhE1yUC1D2q20qPtvkZPstTYvMiRVtF+DvjUg==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz", + "integrity": "sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==", "dev": true }, "@commitlint/format": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-15.0.0.tgz", - "integrity": "sha512-bPhAfqwRhPk92WiuY0ktEJNpRRHSCd+Eg1MdhGyL9Bl3U25E5zvuInA+dNctnzZiOBSH/37ZaD0eOKCpQE6acg==", + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz", + "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==", "dev": true, "requires": { - "@commitlint/types": "^15.0.0", - "chalk": "^4.0.0" + "@commitlint/types": "^17.4.4", + "chalk": "^4.1.0" }, "dependencies": { "ansi-styles": { @@ -3946,42 +4104,58 @@ } }, "@commitlint/is-ignored": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-15.0.0.tgz", - "integrity": "sha512-edtnkf2QZ/7e/YCJDgn1WDw9wfF1WfOitW5YEoSOb4SxjJEb/oE87kxNPZ2j8mnDMuunspcMfGHeg6fRlwaEWg==", + "version": "17.6.5", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.5.tgz", + "integrity": "sha512-CQvAPt9gX7cuUbMrIaIMKczfWJqqr6m8IlJs0F2zYwyyMTQ87QMHIj5jJ5HhOaOkaj6dvTMVGx8Dd1I4xgUuoQ==", "dev": true, "requires": { - "@commitlint/types": "^15.0.0", - "semver": "7.3.5" + "@commitlint/types": "^17.4.4", + "semver": "7.5.0" + }, + "dependencies": { + "semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@commitlint/lint": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-15.0.0.tgz", - "integrity": "sha512-hUi2+Im/2dJ5FBvWnodypTkg+5haCgsDzB0fyMApWLUA1IucYUAqRCQCW5em1Mhk9Crw1pd5YzFNikhIclkqCw==", + "version": "17.6.5", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.5.tgz", + "integrity": "sha512-BSJMwkE4LWXrOsiP9KoHG+/heSDfvOL/Nd16+ojTS/DX8HZr8dNl8l3TfVr/d/9maWD8fSegRGtBtsyGuugFrw==", "dev": true, "requires": { - "@commitlint/is-ignored": "^15.0.0", - "@commitlint/parse": "^15.0.0", - "@commitlint/rules": "^15.0.0", - "@commitlint/types": "^15.0.0" + "@commitlint/is-ignored": "^17.6.5", + "@commitlint/parse": "^17.6.5", + "@commitlint/rules": "^17.6.5", + "@commitlint/types": "^17.4.4" } }, "@commitlint/load": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-15.0.0.tgz", - "integrity": "sha512-Ak1YPeOhvxmY3ioe0o6m1yLGvUAYb4BdfGgShU8jiTCmU3Mnmms0Xh/kfQz8AybhezCC3AmVTyBLaBZxOHR8kg==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.5.0.tgz", + "integrity": "sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==", "dev": true, "requires": { - "@commitlint/execute-rule": "^15.0.0", - "@commitlint/resolve-extends": "^15.0.0", - "@commitlint/types": "^15.0.0", - "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", - "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "lodash": "^4.17.19", + "@commitlint/config-validator": "^17.4.4", + "@commitlint/execute-rule": "^17.4.0", + "@commitlint/resolve-extends": "^17.4.4", + "@commitlint/types": "^17.4.4", + "@types/node": "*", + "chalk": "^4.1.0", + "cosmiconfig": "^8.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0", "resolve-from": "^5.0.0", - "typescript": "^4.4.3" + "ts-node": "^10.8.1", + "typescript": "^4.6.4 || ^5.0.0" }, "dependencies": { "ansi-styles": { @@ -3993,6 +4167,12 @@ "color-convert": "^2.0.1" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4018,12 +4198,33 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "cosmiconfig": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "dev": true, + "requires": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4036,69 +4237,78 @@ } }, "@commitlint/message": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-15.0.0.tgz", - "integrity": "sha512-L8euabzboKavPuDJsdIYAY2wx97LbiGEYsckMo6NmV8pOun50c8hQx6ouXFSAx4pp+mX9yUGmMiVqfrk2LKDJQ==", + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz", + "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==", "dev": true }, "@commitlint/parse": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-15.0.0.tgz", - "integrity": "sha512-7fweM67tZfBNS7zw1KTuuT5K2u9nGytUJqFqT/1Ln3Na9cBCsoAqR47mfsNOTlRCgGwakm4xiQ7BpS2gN0OGuw==", + "version": "17.6.5", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.6.5.tgz", + "integrity": "sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==", "dev": true, "requires": { - "@commitlint/types": "^15.0.0", + "@commitlint/types": "^17.4.4", "conventional-changelog-angular": "^5.0.11", "conventional-commits-parser": "^3.2.2" } }, "@commitlint/read": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-15.0.0.tgz", - "integrity": "sha512-5yI1o2HKZFVe7RTjL7IhuhHMKar/MDNY34vEHqqz9gMI7BK/rdP8uVb4Di1efl2V0UPnwID0nPKWESjQ8Ti0gw==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz", + "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==", "dev": true, "requires": { - "@commitlint/top-level": "^15.0.0", - "@commitlint/types": "^15.0.0", - "fs-extra": "^10.0.0", - "git-raw-commits": "^2.0.0" + "@commitlint/top-level": "^17.4.0", + "@commitlint/types": "^17.4.4", + "fs-extra": "^11.0.0", + "git-raw-commits": "^2.0.11", + "minimist": "^1.2.6" }, "dependencies": { "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true } } }, "@commitlint/resolve-extends": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-15.0.0.tgz", - "integrity": "sha512-7apfRJjgJsKja7lHsPfEFixKjA/fk/UeD3owkOw1174yYu4u8xBDLSeU3IinGPdMuF9m245eX8wo7vLUy+EBSg==", + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.4.4.tgz", + "integrity": "sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==", "dev": true, "requires": { + "@commitlint/config-validator": "^17.4.4", + "@commitlint/types": "^17.4.4", "import-fresh": "^3.0.0", - "lodash": "^4.17.19", + "lodash.mergewith": "^4.6.2", "resolve-from": "^5.0.0", "resolve-global": "^1.0.0" } }, "@commitlint/rules": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-15.0.0.tgz", - "integrity": "sha512-SqXfp6QUlwBS+0IZm4FEA/NmmAwcFQIkG3B05BtemOVWXQdZ8j1vV6hDwvA9oMPCmUSrrGpHOtZK7HaHhng2yA==", + "version": "17.6.5", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.6.5.tgz", + "integrity": "sha512-uTB3zSmnPyW2qQQH+Dbq2rekjlWRtyrjDo4aLFe63uteandgkI+cc0NhhbBAzcXShzVk0qqp8SlkQMu0mgHg/A==", "dev": true, "requires": { - "@commitlint/ensure": "^15.0.0", - "@commitlint/message": "^15.0.0", - "@commitlint/to-lines": "^15.0.0", - "@commitlint/types": "^15.0.0", + "@commitlint/ensure": "^17.4.4", + "@commitlint/message": "^17.4.2", + "@commitlint/to-lines": "^17.4.0", + "@commitlint/types": "^17.4.4", "execa": "^5.0.0" }, "dependencies": { @@ -4184,15 +4394,15 @@ } }, "@commitlint/to-lines": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-15.0.0.tgz", - "integrity": "sha512-mY3MNA9ujPqVpiJjTYG9MDsYCobue5PJFO0MfcIzS1mCVvngH8ZFTPAh1fT5t+t1h876boS88+9WgqjRvbYItw==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.4.0.tgz", + "integrity": "sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==", "dev": true }, "@commitlint/top-level": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-15.0.0.tgz", - "integrity": "sha512-7Gz3t7xcuuUw1d1Nou6YLaztzp2Em+qZ6YdCzrqYc+aquca3Vt0O696nuiBDU/oE+tls4Hx2CNpAbWhTgEwB5A==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.4.0.tgz", + "integrity": "sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==", "dev": true, "requires": { "find-up": "^5.0.0" @@ -4238,12 +4448,12 @@ } }, "@commitlint/types": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-15.0.0.tgz", - "integrity": "sha512-OMSLX+QJnyNoTwws54ULv9sOvuw9GdVezln76oyUd4YbMMJyaav62aSXDuCdWyL2sm9hTkSzyEi52PNaIj/vqw==", + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz", + "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==", "dev": true, "requires": { - "chalk": "^4.0.0" + "chalk": "^4.1.0" }, "dependencies": { "ansi-styles": { @@ -4297,24 +4507,33 @@ } } }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, "@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, - "@endemolshinegroup/cosmiconfig-typescript-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", - "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==", - "dev": true, - "requires": { - "lodash.get": "^4", - "make-error": "^1", - "ts-node": "^9", - "tslib": "^2" - } - }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -4548,6 +4767,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -4559,39 +4779,41 @@ "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true }, "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", "slash": "^3.0.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -4617,9 +4839,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -4644,12 +4866,12 @@ "dev": true }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -4669,81 +4891,104 @@ } }, "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", "micromatch": "^4.0.4", - "rimraf": "^3.0.0", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "dependencies": { "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "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.1.0", - "@jest/types": "^27.5.1", + "@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": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "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", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -4769,9 +5014,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -4789,6 +5034,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4796,49 +5047,38 @@ "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "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": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@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": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -4847,12 +5087,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "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" }, @@ -4869,21 +5110,15 @@ } }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4892,38 +5127,49 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", "dev": true, "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-mock": "^27.5.1" + "jest-mock": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -4980,37 +5226,57 @@ } } }, + "@jest/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "requires": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + } + }, + "@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3" + } + }, "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -5036,9 +5302,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -5063,12 +5329,12 @@ "dev": true }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -5088,33 +5354,35 @@ } }, "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -5172,78 +5440,100 @@ } }, "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@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.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-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "dependencies": { "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "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.1.0", - "@jest/types": "^27.5.1", + "@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": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "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", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -5269,9 +5559,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -5289,6 +5579,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5296,49 +5592,38 @@ "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "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": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@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": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -5347,12 +5632,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "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" }, @@ -5369,21 +5655,15 @@ } }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5392,57 +5672,93 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, + "@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.25.16" + } + }, "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.15", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } } } }, "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -5500,34 +5816,35 @@ } }, "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", "dev": true, "requires": { - "@jest/test-result": "^27.5.1", + "@jest/test-result": "^29.5.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -5553,9 +5870,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -5580,49 +5897,38 @@ "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "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": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@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": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -5631,12 +5937,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "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" }, @@ -5653,13 +5960,13 @@ } }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "supports-color": { @@ -5867,7 +6174,8 @@ "@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true }, "@jridgewell/set-array": { "version": "1.1.2", @@ -5912,12 +6220,14 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -6164,22 +6474,28 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, + "@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz", + "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "@storybook/addon-actions": { @@ -8135,9 +8451,9 @@ } }, "@testing-library/dom": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.1.tgz", - "integrity": "sha512-P6iIPyYQ+qH8CvGauAqanhVnjrnRe0IZFSYCeGkSRW9q3u8bdVn2NPI+lasFyVsEQn1J/IFmp5Aax41+dAP9wg==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.0.tgz", + "integrity": "sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", @@ -8146,7 +8462,7 @@ "aria-query": "^5.0.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.4.4", + "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "dependencies": { @@ -8190,6 +8506,31 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8270,13 +8611,13 @@ } }, "@testing-library/react": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", - "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", + "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", "dev": true, "requires": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.5.0", + "@testing-library/dom": "^9.0.0", "@types/react-dom": "^18.0.0" } }, @@ -8287,9 +8628,33 @@ "dev": true }, "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, "@types/aria-query": { @@ -8299,16 +8664,47 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/parser": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", + "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "dev": true + }, + "@babel/types": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", + "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + } } }, "@types/babel__generator": { @@ -8331,12 +8727,37 @@ } }, "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.0.tgz", + "integrity": "sha512-TBOjqAGf0hmaqRwpii5LLkJLg7c6OMm4nHLmpsUxwk9bBHtoTC6dAHdVWdGv4TBxj2CZOZY8Xfq8WmfoVi7n4Q==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/types": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", + "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + } } }, "@types/blueimp-md5": { @@ -8371,6 +8792,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, "requires": { "@types/node": "*" } @@ -8399,12 +8821,14 @@ "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true }, "@types/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" } @@ -8413,18 +8837,47 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, "requires": { "@types/istanbul-lib-report": "*" } }, "@types/jest": { - "version": "27.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz", - "integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==", + "version": "29.5.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", + "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", "dev": true, "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + }, + "dependencies": { + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "parse5": { + "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" + } + } } }, "@types/json-schema": { @@ -8469,7 +8922,8 @@ "@types/node": { "version": "14.18.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.11.tgz", - "integrity": "sha512-zCoCEMA+IPpsRkyCFBqew5vGb7r8RSiB3uwdu/map7uwLAfu1MTazW26/pUDWoNnF88vJz4W3U56i5gtXNqxGg==" + "integrity": "sha512-zCoCEMA+IPpsRkyCFBqew5vGb7r8RSiB3uwdu/map7uwLAfu1MTazW26/pUDWoNnF88vJz4W3U56i5gtXNqxGg==", + "dev": true }, "@types/node-fetch": { "version": "2.6.2", @@ -8506,9 +8960,9 @@ "dev": true }, "@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "@types/pretty-hrtime": { @@ -8530,9 +8984,9 @@ "dev": true }, "@types/react": { - "version": "18.0.26", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", - "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.7.tgz", + "integrity": "sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==", "dev": true, "requires": { "@types/prop-types": "*", @@ -8550,9 +9004,9 @@ } }, "@types/react-dom": { - "version": "18.0.10", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", - "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", + "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", "dev": true, "requires": { "@types/react": "*" @@ -8586,9 +9040,9 @@ } }, "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", "dev": true }, "@types/semver": { @@ -8624,6 +9078,12 @@ "@types/jest": "*" } }, + "@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true + }, "@types/uglify-js": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", @@ -8716,7 +9176,8 @@ "@types/yargs-parser": { "version": "20.2.1", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "5.40.0", @@ -9225,9 +9686,9 @@ } }, "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "accepts": { @@ -9247,19 +9708,25 @@ "dev": true }, "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" }, "dependencies": { "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "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-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 } } @@ -9407,6 +9874,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -9430,6 +9898,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -9482,6 +9951,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -9560,7 +10030,7 @@ "array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, "array-includes": { @@ -10387,61 +10857,83 @@ } }, "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "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": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/transform": "^29.5.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", + "babel-preset-jest": "^29.5.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "dependencies": { "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "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.1.0", - "@jest/types": "^27.5.1", + "@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": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "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", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -10467,9 +10959,9 @@ } }, "ci-info": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", - "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -10487,6 +10979,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -10494,49 +10992,38 @@ "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "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": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@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": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -10545,12 +11032,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "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" }, @@ -10576,12 +11064,6 @@ "picomatch": "^2.3.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10590,6 +11072,16 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, @@ -10698,6 +11190,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -10707,14 +11200,14 @@ } }, "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "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.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, @@ -10829,12 +11322,12 @@ } }, "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "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": "^27.5.1", + "babel-plugin-jest-hoist": "^29.5.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -10864,7 +11357,8 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "base": { "version": "0.11.2", @@ -11164,6 +11658,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11173,6 +11668,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -11183,12 +11679,6 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -11274,6 +11764,7 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, "requires": { "caniuse-lite": "^1.0.30001286", "electron-to-chromium": "^1.4.17", @@ -11295,6 +11786,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "requires": { "node-int64": "^0.4.0" } @@ -11541,7 +12033,8 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "camelcase-css": { "version": "2.0.1", @@ -11563,7 +12056,8 @@ "caniuse-lite": { "version": "1.0.30001491", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001491.tgz", - "integrity": "sha512-17EYIi4TLnPiTzVKMveIxU5ETlxbSO3B6iPvMbprqnKh4qJsQGk5Nh1Lp4jIMAE0XfrujsJuWZAM3oJdMHaKBA==" + "integrity": "sha512-17EYIi4TLnPiTzVKMveIxU5ETlxbSO3B6iPvMbprqnKh4qJsQGk5Nh1Lp4jIMAE0XfrujsJuWZAM3oJdMHaKBA==", + "dev": true }, "capture-exit": { "version": "2.0.0", @@ -11590,6 +12084,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -11827,7 +12322,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "code-point-at": { @@ -11873,6 +12368,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -11880,7 +12376,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-support": { "version": "1.1.3", @@ -11999,7 +12496,8 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "concat-stream": { "version": "1.6.2", @@ -12091,9 +12589,9 @@ } }, "conventional-changelog-conventionalcommits": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", - "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-5.0.0.tgz", + "integrity": "sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==", "dev": true, "requires": { "compare-func": "^2.0.0", @@ -12176,6 +12674,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -12321,6 +12820,12 @@ "yaml": "^1.10.0" } }, + "cosmiconfig-typescript-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz", + "integrity": "sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==", + "dev": true + }, "cp-file": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", @@ -12636,129 +13141,6 @@ } } }, - "css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, "css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -12772,16 +13154,6 @@ "nth-check": "^2.0.1" } }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, "css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", @@ -12801,9 +13173,9 @@ "dev": true }, "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", "dev": true }, "cssstyle": { @@ -12867,40 +13239,39 @@ "dev": true }, "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dev": true, "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" }, "dependencies": { "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, "requires": { "punycode": "^2.1.1" } }, "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true }, "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" } } } @@ -12909,6 +13280,7 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -12938,9 +13310,9 @@ } }, "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "decode-uri-component": { @@ -13502,9 +13874,9 @@ "dev": true }, "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true }, "diffie-hellman": { @@ -13615,18 +13987,18 @@ "dev": true }, "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", "dev": true, "requires": { - "webidl-conversions": "^5.0.0" + "webidl-conversions": "^7.0.0" }, "dependencies": { "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true } } @@ -13739,7 +14111,8 @@ "electron-to-chromium": { "version": "1.4.68", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz", - "integrity": "sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA==" + "integrity": "sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA==", + "dev": true }, "elliptic": { "version": "6.5.4", @@ -13765,9 +14138,9 @@ } }, "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true }, "emoji-regex": { @@ -14055,7 +14428,8 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-html": { "version": "1.0.3", @@ -14066,7 +14440,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "2.0.0", @@ -14962,7 +15337,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esquery": { "version": "1.5.0", @@ -15076,7 +15452,7 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "expand-brackets": { @@ -15139,34 +15515,36 @@ } }, "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -15191,6 +15569,12 @@ "supports-color": "^7.1.0" } }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -15212,6 +15596,20 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15464,7 +15862,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -15478,12 +15877,6 @@ "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -15497,6 +15890,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, "requires": { "bser": "2.1.1" } @@ -15590,6 +15984,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -15686,6 +16081,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -16101,12 +16497,14 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "optional": true }, "function-bind": { @@ -16151,50 +16549,27 @@ } }, "generic-names": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-1.0.3.tgz", - "integrity": "sha1-LXhqEhruUIh2eWk56OO/+DbCCRc=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", "dev": true, "requires": { - "loader-utils": "^0.2.16" + "loader-utils": "^3.2.0" }, "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true } } }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true }, "get-caller-file": { "version": "2.0.5", @@ -16216,7 +16591,8 @@ "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true }, "get-stdin": { "version": "8.0.0", @@ -16329,6 +16705,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16651,7 +17028,7 @@ "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", "dev": true, "requires": { "ini": "^1.3.4" @@ -16684,7 +17061,8 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true }, "globalthis": { "version": "1.0.3", @@ -16764,7 +17142,7 @@ "globjoin": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, "glogg": { @@ -16807,7 +17185,8 @@ "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true }, "graphemer": { "version": "1.4.0", @@ -17161,23 +17540,6 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, "has-bigints": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", @@ -17187,7 +17549,8 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-glob": { "version": "1.0.0", @@ -17446,12 +17809,12 @@ "dev": true }, "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, "requires": { - "whatwg-encoding": "^1.0.5" + "whatwg-encoding": "^2.0.0" } }, "html-entities": { @@ -17544,12 +17907,12 @@ } }, "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "requires": { - "@tootallnate/once": "1", + "@tootallnate/once": "2", "agent-base": "6", "debug": "4" } @@ -17561,9 +17924,9 @@ "dev": true }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -17594,7 +17957,7 @@ "icss-replace-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", "dev": true }, "icss-utils": { @@ -17654,15 +18017,6 @@ "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", "dev": true }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -17681,23 +18035,6 @@ } } }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, "import-lazy": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", @@ -17728,7 +18065,8 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, "indent-string": { "version": "4.0.0", @@ -17746,6 +18084,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -17754,7 +18093,8 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "ini": { "version": "1.3.8", @@ -18021,12 +18361,6 @@ } } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -18116,7 +18450,8 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-number-object": { "version": "1.0.6", @@ -18238,7 +18573,7 @@ "is-text-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "requires": { "text-extensions": "^1.0.0" @@ -18260,7 +18595,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-unc-path": { "version": "1.0.0", @@ -18369,12 +18705,14 @@ "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true }, "istanbul-lib-instrument": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, "requires": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -18386,7 +18724,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -18489,33 +18828,35 @@ } }, "jest": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", - "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", "dev": true, "requires": { - "@jest/core": "^27.4.7", + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", "import-local": "^3.0.2", - "jest-cli": "^27.4.7" + "jest-cli": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -18541,11 +18882,22 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -18568,32 +18920,32 @@ "dev": true }, "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", "dev": true, "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" } }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -18609,76 +18961,46 @@ "requires": { "has-flag": "^4.0.0" } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "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" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true } } }, "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", "dev": true, "requires": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -18713,12 +19035,6 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -18734,6 +19050,15 @@ "path-key": "^3.0.0" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -18755,15 +19080,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -18776,49 +19092,51 @@ } }, "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -18844,9 +19162,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -18871,12 +19189,12 @@ "dev": true }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -18884,6 +19202,15 @@ "picomatch": "^2.2.3" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18896,74 +19223,54 @@ } }, "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", "dev": true, "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "dependencies": { - "@jest/transform": { - "version": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -18972,6 +19279,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -18980,20 +19288,23 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -19001,53 +19312,28 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" - }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } + "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-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -19055,44 +19341,21 @@ "picomatch": "^2.2.3" } }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -19100,15 +19363,15 @@ } }, "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" }, "dependencies": { "ansi-styles": { @@ -19163,44 +19426,45 @@ } }, "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -19226,9 +19490,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -19253,12 +19517,12 @@ "dev": true }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -19278,37 +19542,39 @@ } }, "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.5.0.tgz", + "integrity": "sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/jsdom": "^20.0.0", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0", + "jsdom": "^20.0.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -19334,9 +19600,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -19361,12 +19627,12 @@ "dev": true }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -19386,36 +19652,37 @@ } }, "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -19441,9 +19708,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -19468,12 +19735,12 @@ "dev": true }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -19493,9 +19760,9 @@ } }, "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", "dev": true }, "jest-haste-map": { @@ -19532,53 +19799,28 @@ } } }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -19598,12 +19840,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -19625,20 +19861,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -19650,113 +19872,41 @@ } } }, - "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "jest-message-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -19803,13 +19953,13 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "supports-color": { @@ -19824,32 +19974,34 @@ } }, "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*" + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -19874,6 +20026,12 @@ "supports-color": "^7.1.0" } }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -19895,6 +20053,20 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -19907,9 +20079,9 @@ } }, "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true }, "jest-regex-util": { @@ -19919,40 +20091,40 @@ "dev": true }, "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", "dev": true, "requires": { - "@jest/types": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", + "jest-haste-map": "^29.5.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -19978,9 +20150,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -20005,49 +20177,38 @@ "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "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": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@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": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -20056,12 +20217,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "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" }, @@ -20078,13 +20240,13 @@ } }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "supports-color": { @@ -20099,164 +20261,115 @@ } }, "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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 - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "dependencies": { "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "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.1.0", - "@jest/types": "^27.5.1", + "@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": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "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", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -20282,9 +20395,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -20302,6 +20415,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -20309,49 +20428,38 @@ "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "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": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@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": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -20360,12 +20468,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "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" }, @@ -20382,13 +20491,22 @@ } }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" } }, "source-map": { @@ -20397,6 +20515,16 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -20405,79 +20533,112 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "dependencies": { "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "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.1.0", - "@jest/types": "^27.5.1", + "@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": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "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", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -20503,9 +20664,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -20523,38 +20684,10 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "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" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "has-flag": { @@ -20563,56 +20696,39 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "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": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@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": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -20621,12 +20737,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "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" }, @@ -20643,51 +20760,15 @@ } }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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 - }, - "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==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "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 - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -20703,13 +20784,14 @@ "has-flag": "^4.0.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" } } } @@ -20725,75 +20807,99 @@ } }, "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", "dev": true, "requires": { - "@babel/core": "^7.7.2", + "@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.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^29.5.0", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^29.5.0", + "semver": "^7.3.5" }, "dependencies": { "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "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.1.0", - "@jest/types": "^27.5.1", + "@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": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "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", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -20819,9 +20925,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -20839,6 +20945,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -20846,49 +20958,38 @@ "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "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": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@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": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "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-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -20897,12 +20998,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "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" }, @@ -20919,21 +21021,15 @@ } }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -20942,20 +21038,29 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, "jest-transform-css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jest-transform-css/-/jest-transform-css-3.0.0.tgz", - "integrity": "sha512-MR/mHg5GdVPjyWT2r+TWZoM7ryh+apo2cB0AcmLEw4yH37/Htjm2afMGOiUtXG2guLfsGabg8uYw1NTjVINj5Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jest-transform-css/-/jest-transform-css-6.0.1.tgz", + "integrity": "sha512-i78Pi2MW6vcdsUFSRx1kPbjbEIO0pBWwh1Y+PcDrLwTv/6e5p7fzsV/gxFW/SYMHS8DUvMdRVTwVCkA/y+t0iQ==", "dev": true, "requires": { "common-tags": "1.8.2", - "cosmiconfig": "7.0.1", "cross-spawn": "7.0.3", - "postcss-load-config": "2.0.0", - "postcss-modules": "1.3.2", + "postcss-load-config": "4.0.1", + "postcss-modules": "4.3.1", "style-inject": "0.3.0" }, "dependencies": { @@ -21078,36 +21183,37 @@ } }, "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", + "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "pretty-format": "^29.5.0" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -21171,37 +21277,39 @@ } }, "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", "dev": true, "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", "string-length": "^4.0.1" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -21227,9 +21335,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -21254,12 +21362,12 @@ "dev": true }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -21321,90 +21429,110 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" } }, "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", "dev": true, "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.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.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "tough-cookie": "^4.1.2", + "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.11.0", + "xml-name-validator": "^4.0.0" }, "dependencies": { "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "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 }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "parse5": { + "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" + } + }, "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, "requires": { "punycode": "^2.1.1" } }, "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true }, "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" } - }, - "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true } } }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true }, "json-parse-better-errors": { "version": "1.0.2", @@ -21434,6 +21562,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -21451,7 +21580,7 @@ "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true }, "jsx-ast-utils": { @@ -21814,6 +21943,12 @@ "resolve": "^1.1.7" } }, + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true + }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -21882,6 +22017,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -21909,16 +22045,28 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", "dev": true }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, "lodash.merge": { @@ -21927,10 +22075,28 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true + }, + "lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, "lodash.uniq": { @@ -21939,6 +22105,12 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, + "lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -21977,9 +22149,9 @@ } }, "lz-string": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true }, "make-dir": { @@ -22019,6 +22191,7 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "requires": { "tmpl": "1.0.5" } @@ -22283,7 +22456,8 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { "version": "1.4.1", @@ -22490,6 +22664,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.1.tgz", "integrity": "sha512-reLxBcKUPNBnc/sVtAbxgRVFSegoGeLaSjmphNhcwcolhYLRgtJscn5mRl6YRZNQv40Y7P6JM2YhSIsbL9OB5A==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -22497,7 +22672,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minimist-options": { "version": "4.1.0", @@ -22513,13 +22689,13 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true } } @@ -22652,7 +22828,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "mute-stdout": { "version": "1.0.1", @@ -22768,7 +22945,8 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true }, "node-libs-browser": { "version": "2.2.1", @@ -22838,7 +23016,8 @@ "node-releases": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true }, "normalize-package-data": { "version": "2.5.0", @@ -22863,7 +23042,8 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "normalize-range": { "version": "0.1.2", @@ -23002,9 +23182,9 @@ "dev": true }, "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz", + "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", "dev": true }, "object-assign": { @@ -23574,6 +23754,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -23733,6 +23914,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -23741,6 +23923,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -23766,7 +23949,8 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "pako": { "version": "1.0.11", @@ -23935,12 +24119,14 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", @@ -23997,12 +24183,14 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true }, "pidtree": { "version": "0.3.1", @@ -24034,7 +24222,8 @@ "pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true }, "pkg-dir": { "version": "5.0.0", @@ -24193,36 +24382,20 @@ } }, "postcss-load-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", - "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", "dev": true, "requires": { - "cosmiconfig": "^4.0.0", - "import-cwd": "^2.0.0" + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" }, "dependencies": { - "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", - "dev": true, - "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0", - "require-from-string": "^2.0.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } + "yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true } } }, @@ -24270,39 +24443,61 @@ "dev": true }, "postcss-modules": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-1.3.2.tgz", - "integrity": "sha512-QujH5ZpPtr1fBWTKDa43Hx45gm7p19aEtHaAtkMCBZZiB/D5za2wXSMtAf94tDUZHF3F5KZcTXISUNqgEQRiDw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", + "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", "dev": true, "requires": { - "css-modules-loader-core": "^1.1.0", - "generic-names": "^1.0.3", + "generic-names": "^4.0.0", + "icss-replace-symbols": "^1.1.0", "lodash.camelcase": "^4.3.0", - "postcss": "^7.0.1", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", "string-hash": "^1.1.1" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } } } }, @@ -24515,14 +24710,14 @@ } }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.4.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { @@ -24532,9 +24727,9 @@ "dev": true }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true } } @@ -24964,9 +25159,9 @@ "dev": true }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "public-encrypt": { @@ -25030,10 +25225,16 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, "qs": { @@ -25057,6 +25258,12 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -25750,6 +25957,12 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", @@ -25788,7 +26001,8 @@ "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true }, "resolve-global": { "version": "1.0.0", @@ -25815,9 +26029,9 @@ "dev": true }, "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true }, "ret": { @@ -25886,7 +26100,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -26020,9 +26235,9 @@ } }, "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "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" @@ -26255,7 +26470,8 @@ "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "sisteransi": { "version": "1.0.5", @@ -26266,7 +26482,8 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, "slice-ansi": { "version": "4.0.0", @@ -26442,7 +26659,8 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, "source-map-js": { "version": "1.0.2", @@ -26558,7 +26776,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "ssri": { "version": "6.0.2", @@ -26582,9 +26801,9 @@ "dev": true }, "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -26783,7 +27002,7 @@ "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", "dev": true }, "string-length": { @@ -27324,7 +27543,7 @@ "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "dev": true }, "style-to-object": { @@ -27505,6 +27724,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -27555,7 +27775,7 @@ "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, "symbol-tree": { @@ -27679,16 +27899,6 @@ "memoizerific": "^1.11.3" } }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, "terser": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", @@ -27748,6 +27958,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -27772,16 +27983,10 @@ "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", "dev": true }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "through2": { @@ -27848,7 +28053,8 @@ "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, "to-absolute-glob": { "version": "2.0.2", @@ -27869,7 +28075,8 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true }, "to-object-path": { "version": "0.3.0", @@ -27907,6 +28114,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } @@ -27932,20 +28140,21 @@ "dev": true }, "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "dependencies": { "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true } } @@ -27987,38 +28196,39 @@ "dev": true }, "ts-jest": { - "version": "27.1.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", - "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", "dev": true, "requires": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", - "yargs-parser": "20.x" + "yargs-parser": "^21.0.1" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -28044,9 +28254,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "color-convert": { @@ -28071,12 +28281,12 @@ "dev": true }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -28084,6 +28294,12 @@ "picomatch": "^2.2.3" } }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -28092,21 +28308,48 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true } } }, "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "requires": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "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-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 + } } }, "ts-pnp": { @@ -28236,14 +28479,15 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, "requires": { "is-typedarray": "^1.0.0" } }, "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "dev": true }, "uglify-js": { @@ -28633,6 +28877,16 @@ } } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -28707,22 +28961,44 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^1.6.0" }, "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } } } }, @@ -28899,28 +29175,20 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "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": "^3.0.0" + "xml-name-validator": "^4.0.0" } }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, "requires": { "makeerror": "1.0.12" } @@ -29313,18 +29581,29 @@ } }, "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dev": true, "requires": { - "iconv-lite": "0.4.24" + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "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": { @@ -29479,12 +29758,14 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -29508,9 +29789,9 @@ } }, "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "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": { diff --git a/package.json b/package.json index bd309be27b..8618150683 100644 --- a/package.json +++ b/package.json @@ -89,8 +89,8 @@ "utility-types": "3.10.0" }, "devDependencies": { - "@commitlint/cli": "^15.0.0", - "@commitlint/config-conventional": "^15.0.0", + "@commitlint/cli": "^17.6.5", + "@commitlint/config-conventional": "^17.6.5", "@faker-js/faker": "^7.6.0", "@gravity-ui/eslint-config": "^2.1.1", "@gravity-ui/icons": "^2.1.0", @@ -101,14 +101,14 @@ "@storybook/preset-scss": "^1.0.3", "@storybook/react": "^6.5.15", "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^13.4.0", + "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.4.3", "@types/blueimp-md5": "^2.18.0", - "@types/jest": "^27.4.0", + "@types/jest": "^29.5.1", "@types/lodash": "^4.14.177", - "@types/react": "^18.0.26", + "@types/react": "^18.2.7", "@types/react-copy-to-clipboard": "^5.0.4", - "@types/react-dom": "^18.0.10", + "@types/react-dom": "^18.2.4", "@types/react-transition-group": "^4.4.5", "@types/react-virtualized-auto-sizer": "^1.0.1", "@types/react-window": "^1.8.5", @@ -122,8 +122,9 @@ "gulp-replace": "^1.1.3", "gulp-typescript": "^5.0.1", "husky": "^7.0.4", - "jest": "^27.4.7", - "jest-transform-css": "^3.0.0", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "jest-transform-css": "^6.0.1", "nano-staged": "^0.6.0", "npm-run-all": "^4.1.5", "postcss": "^8.4.6", @@ -136,8 +137,8 @@ "sass-loader": "^10.2.1", "style-loader": "^2.0.0", "stylelint": "^14.3.0", - "ts-jest": "^27.1.3", - "typescript": "^4.5.5", + "ts-jest": "^29.1.0", + "typescript": "^4.9.4", "webpack": "^4.46.0" }, "peerDependencies": { diff --git a/src/.eslintrc b/src/.eslintrc deleted file mode 100644 index 9ecc6200c1..0000000000 --- a/src/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "@gravity-ui/eslint-config/client" -} diff --git a/src/components/ActionTooltip/ActionTooltip.tsx b/src/components/ActionTooltip/ActionTooltip.tsx index a4e9e94519..d53291bf1c 100644 --- a/src/components/ActionTooltip/ActionTooltip.tsx +++ b/src/components/ActionTooltip/ActionTooltip.tsx @@ -1,7 +1,9 @@ -import React, {ReactNode} from 'react'; +import React from 'react'; -import {Hotkey, HotkeyProps} from '../Hotkey'; -import {Tooltip, TooltipProps} from '../Tooltip'; +import {Hotkey} from '../Hotkey'; +import type {HotkeyProps} from '../Hotkey'; +import {Tooltip} from '../Tooltip'; +import type {TooltipProps} from '../Tooltip'; import {block} from '../utils/cn'; import './ActionTooltip.scss'; @@ -15,10 +17,10 @@ export interface ActionTooltipProps > { title: string; hotkey?: HotkeyProps['value']; - description?: ReactNode; + description?: React.ReactNode; } -export const ActionTooltip: React.FC = function TooltipLayout(props) { +export function ActionTooltip(props: ActionTooltipProps) { const {title, hotkey, description, children, ...tooltipProps} = props; return ( @@ -27,16 +29,16 @@ export const ActionTooltip: React.FC = function TooltipLayou className={b(null, tooltipProps.className)} contentClassName={b('layout')} content={ - <> +
{title}
{hotkey && }
{description &&
{description}
} - +
} > {children} ); -}; +} diff --git a/src/components/ActionTooltip/__stories__/ActionTooltip.stories.tsx b/src/components/ActionTooltip/__stories__/ActionTooltip.stories.tsx index 5e6dbcce94..16073ba757 100644 --- a/src/components/ActionTooltip/__stories__/ActionTooltip.stories.tsx +++ b/src/components/ActionTooltip/__stories__/ActionTooltip.stories.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {Story} from '@storybook/react'; +import type {Story} from '@storybook/react'; import {Button} from '../../Button'; -import {ActionTooltip, ActionTooltipProps} from '../ActionTooltip'; +import {ActionTooltip} from '../ActionTooltip'; +import type {ActionTooltipProps} from '../ActionTooltip'; export default { title: 'Components/ActionTooltip', diff --git a/src/components/ActionTooltip/index.ts b/src/components/ActionTooltip/index.ts index 2e8dc72941..444b77263a 100644 --- a/src/components/ActionTooltip/index.ts +++ b/src/components/ActionTooltip/index.ts @@ -1 +1,2 @@ -export {ActionTooltip, ActionTooltipProps} from './ActionTooltip'; +export {ActionTooltip} from './ActionTooltip'; +export type {ActionTooltipProps} from './ActionTooltip'; diff --git a/src/components/ArrowToggle/__stories__/ArrowToggle.stories.tsx b/src/components/ArrowToggle/__stories__/ArrowToggle.stories.tsx index 9e0646a796..8075864df4 100644 --- a/src/components/ArrowToggle/__stories__/ArrowToggle.stories.tsx +++ b/src/components/ArrowToggle/__stories__/ArrowToggle.stories.tsx @@ -1,8 +1,9 @@ -import React, {useState} from 'react'; +import React from 'react'; -import {Meta, Story} from '@storybook/react/types-6-0'; +import type {Meta, Story} from '@storybook/react/types-6-0'; -import {ArrowToggle, ArrowToggleProps} from '../ArrowToggle'; +import {ArrowToggle} from '../ArrowToggle'; +import type {ArrowToggleProps} from '../ArrowToggle'; export default { title: 'Components/ArrowToggle', @@ -14,12 +15,12 @@ export const Default = DefaultTemplate.bind({}); const DirectionsTemplate: Story = (args) => { return ( - <> + top right bottom left - + ); }; @@ -27,21 +28,21 @@ export const Directions = DirectionsTemplate.bind({}); const SizesTemplate: Story = (args) => { return ( - <> + 10 20 30 40 50 100 - + ); }; export const Sizes = SizesTemplate.bind({}); export const Interactive: Story = (args) => { - const [directionIndex, setDirectionIndex] = useState(0); + const [directionIndex, setDirectionIndex] = React.useState(0); const directions = ['top', 'left', 'bottom', 'right'] as Array; const direction = directions[directionIndex % directions.length]; diff --git a/src/components/Breadcrumbs/Breadcrumbs.tsx b/src/components/Breadcrumbs/Breadcrumbs.tsx index aab808867a..1a70f7ad50 100644 --- a/src/components/Breadcrumbs/Breadcrumbs.tsx +++ b/src/components/Breadcrumbs/Breadcrumbs.tsx @@ -1,9 +1,9 @@ -import * as React from 'react'; +import React from 'react'; import _throttle from 'lodash/throttle'; import ResizeObserver from 'resize-observer-polyfill'; -import {PopupPlacement} from '../Popup'; +import type {PopupPlacement} from '../Popup'; import {block} from '../utils/cn'; import {BreadcrumbsItem as Item} from './BreadcrumbsItem'; diff --git a/src/components/Breadcrumbs/BreadcrumbsItem.tsx b/src/components/Breadcrumbs/BreadcrumbsItem.tsx index 353d259644..8c7c0aa8ca 100644 --- a/src/components/Breadcrumbs/BreadcrumbsItem.tsx +++ b/src/components/Breadcrumbs/BreadcrumbsItem.tsx @@ -1,4 +1,4 @@ -import * as React from 'react'; +import React from 'react'; import {Link} from '../Link'; import {block} from '../utils/cn'; diff --git a/src/components/Breadcrumbs/BreadcrumbsMore.tsx b/src/components/Breadcrumbs/BreadcrumbsMore.tsx index 5aa74abb16..9a67c8e038 100644 --- a/src/components/Breadcrumbs/BreadcrumbsMore.tsx +++ b/src/components/Breadcrumbs/BreadcrumbsMore.tsx @@ -1,10 +1,10 @@ -import * as React from 'react'; +import React from 'react'; import {DropdownMenu} from '../DropdownMenu'; import {Link} from '../Link'; import {block} from '../utils/cn'; -import {BreadcrumbsProps} from './Breadcrumbs'; +import type {BreadcrumbsProps} from './Breadcrumbs'; import i18n from './i18n'; interface Props extends Pick {} diff --git a/src/components/Breadcrumbs/BreadcrumbsSeparator.tsx b/src/components/Breadcrumbs/BreadcrumbsSeparator.tsx index ef190126e2..e841db9cbf 100644 --- a/src/components/Breadcrumbs/BreadcrumbsSeparator.tsx +++ b/src/components/Breadcrumbs/BreadcrumbsSeparator.tsx @@ -1,8 +1,8 @@ -import * as React from 'react'; +import React from 'react'; import {block} from '../utils/cn'; -import {BreadcrumbsProps} from './Breadcrumbs'; +import type {BreadcrumbsProps} from './Breadcrumbs'; type Props = Pick; diff --git a/src/components/Breadcrumbs/__stories__/BreadCrumbs.stories.tsx b/src/components/Breadcrumbs/__stories__/BreadCrumbs.stories.tsx index 37bee92490..9366ceb3a8 100644 --- a/src/components/Breadcrumbs/__stories__/BreadCrumbs.stories.tsx +++ b/src/components/Breadcrumbs/__stories__/BreadCrumbs.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Breadcrumbs, BreadcrumbsProps} from '../Breadcrumbs'; +import {Breadcrumbs} from '../Breadcrumbs'; +import type {BreadcrumbsProps} from '../Breadcrumbs'; import {BreadcrumbsShowcase} from './BreadcrumbsShowcase'; diff --git a/src/components/Breadcrumbs/__stories__/BreadcrumbsShowcase.tsx b/src/components/Breadcrumbs/__stories__/BreadcrumbsShowcase.tsx index 8b09fb56b9..9d8c30eb29 100644 --- a/src/components/Breadcrumbs/__stories__/BreadcrumbsShowcase.tsx +++ b/src/components/Breadcrumbs/__stories__/BreadcrumbsShowcase.tsx @@ -2,7 +2,8 @@ import React from 'react'; import block from 'bem-cn-lite'; -import {Breadcrumbs, BreadcrumbsProps} from '../Breadcrumbs'; +import {Breadcrumbs} from '../Breadcrumbs'; +import type {BreadcrumbsProps} from '../Breadcrumbs'; import './BreadcrumbsShowcase.scss'; diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index 011cf48765..12379425f2 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -1,6 +1,6 @@ -import React, {cloneElement} from 'react'; +import React from 'react'; -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {isIcon} from '../utils/common'; import {eventBroker} from '../utils/event-broker'; @@ -221,7 +221,7 @@ function prepareChildren(children: React.ReactNode) { ); } else { - leftIcon = cloneElement(item, { + leftIcon = React.cloneElement(item, { side, }); } @@ -235,7 +235,7 @@ function prepareChildren(children: React.ReactNode) { ); } else { - rightIcon = cloneElement(item, { + rightIcon = React.cloneElement(item, { side, }); } diff --git a/src/components/Button/ButtonIcon.tsx b/src/components/Button/ButtonIcon.tsx index 951339dec1..e449700197 100644 --- a/src/components/Button/ButtonIcon.tsx +++ b/src/components/Button/ButtonIcon.tsx @@ -1,10 +1,10 @@ -import React, {PropsWithChildren} from 'react'; +import React from 'react'; import {block} from '../utils/cn'; const b = block('button'); -type Props = PropsWithChildren<{ +type Props = React.PropsWithChildren<{ className?: string; side?: 'left' | 'right'; }>; diff --git a/src/components/Button/__stories__/Button.new.stories.tsx b/src/components/Button/__stories__/Button.new.stories.tsx index c9ffc0dbfc..9205c64d21 100644 --- a/src/components/Button/__stories__/Button.new.stories.tsx +++ b/src/components/Button/__stories__/Button.new.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Icon} from '../../Icon'; import {GearIcon} from '../../icons/GearIcon'; diff --git a/src/components/Button/__stories__/Button.stories.tsx b/src/components/Button/__stories__/Button.stories.tsx index 2fd6c07e82..5932d5e0fd 100644 --- a/src/components/Button/__stories__/Button.stories.tsx +++ b/src/components/Button/__stories__/Button.stories.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Icon as IconComponent} from '../../Icon/Icon'; import {GearIcon} from '../../icons/GearIcon'; -import {Button, ButtonProps} from '../Button'; +import {Button} from '../Button'; +import type {ButtonProps} from '../Button'; import {ButtonShowcase} from './ButtonShowcase'; @@ -17,7 +18,7 @@ const DefaultTemplate: Story = (args) => @@ -37,12 +38,12 @@ const SizeTemplate: Story = (args) => ( - + ); export const Size = SizeTemplate.bind({}); const IconTemplate: Story = (args) => ( - <> + - + ); export const Icon = IconTemplate.bind({}); diff --git a/src/components/Button/__stories__/ButtonShowcase.tsx b/src/components/Button/__stories__/ButtonShowcase.tsx index 8f3bd958cf..59e61a6029 100644 --- a/src/components/Button/__stories__/ButtonShowcase.tsx +++ b/src/components/Button/__stories__/ButtonShowcase.tsx @@ -6,7 +6,8 @@ import {Showcase} from '../../../demo/Showcase'; import {ShowcaseItem} from '../../../demo/ShowcaseItem'; import {Icon} from '../../Icon'; import {GearIcon} from '../../icons/GearIcon'; -import {Button, ButtonProps} from '../Button'; +import {Button} from '../Button'; +import type {ButtonProps} from '../Button'; import './ButtonShowcase.scss'; diff --git a/src/components/Button/__tests__/Button.test.tsx b/src/components/Button/__tests__/Button.test.tsx index 1989f58d3c..25ba38ac90 100644 --- a/src/components/Button/__tests__/Button.test.tsx +++ b/src/components/Button/__tests__/Button.test.tsx @@ -4,7 +4,8 @@ import {render, screen} from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import {GearIcon} from '../../icons/GearIcon'; -import {Button, ButtonPin, ButtonProps, ButtonSize, ButtonView} from '../Button'; +import {Button} from '../Button'; +import type {ButtonPin, ButtonProps, ButtonSize, ButtonView} from '../Button'; const qaId = 'button-component'; diff --git a/src/components/Card/__stories__/Card.stories.tsx b/src/components/Card/__stories__/Card.stories.tsx index d82188a7d2..7bc206a343 100644 --- a/src/components/Card/__stories__/Card.stories.tsx +++ b/src/components/Card/__stories__/Card.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Card, CardProps} from '../Card'; +import {Card} from '../Card'; +import type {CardProps} from '../Card'; import {CardShowcase} from './CardShowcase'; diff --git a/src/components/Card/__stories__/CardShowcase.tsx b/src/components/Card/__stories__/CardShowcase.tsx index 719115fa03..3e24dbbc4a 100644 --- a/src/components/Card/__stories__/CardShowcase.tsx +++ b/src/components/Card/__stories__/CardShowcase.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {Card, CardTheme, CardView} from '../../../components/Card/Card'; +import {Card} from '../../../components/Card/Card'; +import type {CardTheme, CardView} from '../../../components/Card/Card'; import {Showcase} from '../../../demo/Showcase'; import {ShowcaseItem} from '../../../demo/ShowcaseItem'; diff --git a/src/components/ChangelogDialog/ChangelogDialog.tsx b/src/components/ChangelogDialog/ChangelogDialog.tsx index 70c4fb1ca6..9778d1fb66 100644 --- a/src/components/ChangelogDialog/ChangelogDialog.tsx +++ b/src/components/ChangelogDialog/ChangelogDialog.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {Dialog, DialogProps} from '../Dialog'; +import {Dialog} from '../Dialog'; +import type {DialogProps} from '../Dialog'; import {Icon} from '../Icon'; import {Link} from '../Link'; import {ExternalLinkIcon} from '../icons/ExternalLinkIcon'; @@ -9,7 +10,7 @@ import {useUniqId} from '../utils/useUniqId'; import {Item} from './components/Item/Item'; import i18n from './i18n'; -import {ChangelogItem, ChangelogStoryClickHandler} from './types'; +import type {ChangelogItem, ChangelogStoryClickHandler} from './types'; import './ChangelogDialog.scss'; diff --git a/src/components/ChangelogDialog/__stories__/ChangelogDialog.stories.tsx b/src/components/ChangelogDialog/__stories__/ChangelogDialog.stories.tsx index 858f186d1f..2e70b4cd08 100644 --- a/src/components/ChangelogDialog/__stories__/ChangelogDialog.stories.tsx +++ b/src/components/ChangelogDialog/__stories__/ChangelogDialog.stories.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Button} from '../../Button'; -import {ChangelogDialog, ChangelogDialogProps} from '../ChangelogDialog'; -import {ChangelogItem} from '../types'; +import {ChangelogDialog} from '../ChangelogDialog'; +import type {ChangelogDialogProps} from '../ChangelogDialog'; +import type {ChangelogItem} from '../types'; export default { title: 'Components/ChangelogDialog', diff --git a/src/components/ChangelogDialog/components/Item/Item.tsx b/src/components/ChangelogDialog/components/Item/Item.tsx index be5f9a03ab..c7ee357c16 100644 --- a/src/components/ChangelogDialog/components/Item/Item.tsx +++ b/src/components/ChangelogDialog/components/Item/Item.tsx @@ -6,7 +6,7 @@ import {Label} from '../../../Label'; import {PlayIcon} from '../../../icons/PlayIcon'; import {block} from '../../../utils/cn'; import i18n from '../../i18n'; -import {ChangelogItem, ChangelogStoryClickHandler} from '../../types'; +import type {ChangelogItem, ChangelogStoryClickHandler} from '../../types'; import {Picture} from '../Picture/Picture'; import './Item.scss'; diff --git a/src/components/Checkbox/Checkbox.tsx b/src/components/Checkbox/Checkbox.tsx index 83f36a50a9..b17a51655c 100644 --- a/src/components/Checkbox/Checkbox.tsx +++ b/src/components/Checkbox/Checkbox.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import {ControlLabel, ControlLabelSize} from '../ControlLabel'; -import {ControlProps, DOMProps, QAProps} from '../types'; +import {ControlLabel} from '../ControlLabel'; +import type {ControlLabelSize} from '../ControlLabel'; +import type {ControlProps, DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {useCheckbox} from '../utils/useCheckbox'; diff --git a/src/components/Checkbox/__stories__/Checkbox.stories.tsx b/src/components/Checkbox/__stories__/Checkbox.stories.tsx index ef97cd51ce..5d23b7c2aa 100644 --- a/src/components/Checkbox/__stories__/Checkbox.stories.tsx +++ b/src/components/Checkbox/__stories__/Checkbox.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Checkbox, CheckboxProps} from '../Checkbox'; +import {Checkbox} from '../Checkbox'; +import type {CheckboxProps} from '../Checkbox'; import {CheckboxShowcase} from './CheckboxShowcase'; @@ -15,20 +16,20 @@ const DefaultTemplate: Story = (args) => ; export const Default = DefaultTemplate.bind({}); const SizeTemplate: Story = (args) => ( - <> + m: l: - + ); export const Size = SizeTemplate.bind({}); const DisabledTemplate: Story = (args) => ( - <> + - + ); export const Disabled = DisabledTemplate.bind({}); @@ -36,7 +37,7 @@ const IndeterminateTemplate: Story = (args) => = (args) => ( - <> + @@ -49,16 +50,16 @@ const LabelTemplate: Story = (args) => ( - + ); export const Label = LabelTemplate.bind({}); const ControlledTemplate: Story = (args) => ( - <> + - + ); export const Controlled = ControlledTemplate.bind({}); diff --git a/src/components/Checkbox/__tests__/Checkbox.test.tsx b/src/components/Checkbox/__tests__/Checkbox.test.tsx index d01bf8c792..0cb70b3282 100644 --- a/src/components/Checkbox/__tests__/Checkbox.test.tsx +++ b/src/components/Checkbox/__tests__/Checkbox.test.tsx @@ -3,7 +3,8 @@ import React from 'react'; import {render, screen} from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import {Checkbox, CheckboxSize} from '../Checkbox'; +import {Checkbox} from '../Checkbox'; +import type {CheckboxSize} from '../Checkbox'; const qaId = 'checkbox-component'; diff --git a/src/components/ClipboardButton/ClipboardButton.tsx b/src/components/ClipboardButton/ClipboardButton.tsx index c15e1919db..f80c663bb3 100644 --- a/src/components/ClipboardButton/ClipboardButton.tsx +++ b/src/components/ClipboardButton/ClipboardButton.tsx @@ -1,10 +1,10 @@ -import React, {useEffect, useRef} from 'react'; +import React from 'react'; import {Button} from '../Button'; import {ClipboardIcon} from '../ClipboardIcon'; import {CopyToClipboard} from '../CopyToClipboard'; -import {CopyToClipboardBaseProps} from '../CopyToClipboard/types'; -import {QAProps} from '../types'; +import type {CopyToClipboardBaseProps} from '../CopyToClipboard/types'; +import type {QAProps} from '../types'; import {block} from '../utils/cn'; import './ClipboardButton.scss'; @@ -32,9 +32,9 @@ export function ClipboardButton({ timeout = DEFAULT_TIMEOUT, options, }: ClipboardButtonProps) { - const buttonRef = useRef(null); + const buttonRef = React.useRef(null); - useEffect(() => { + React.useEffect(() => { buttonRef?.current?.style.setProperty('--yc-button-height', `${size}px`); }, [size]); diff --git a/src/components/ClipboardButton/__stories__/ClipboardButton.stories.tsx b/src/components/ClipboardButton/__stories__/ClipboardButton.stories.tsx index fcdab83b43..78d13ccd36 100644 --- a/src/components/ClipboardButton/__stories__/ClipboardButton.stories.tsx +++ b/src/components/ClipboardButton/__stories__/ClipboardButton.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {ClipboardButton, ClipboardButtonProps} from '../ClipboardButton'; +import {ClipboardButton} from '../ClipboardButton'; +import type {ClipboardButtonProps} from '../ClipboardButton'; export default { title: 'Components/ClipboardButton', diff --git a/src/components/ControlLabel/ControlLabel.tsx b/src/components/ControlLabel/ControlLabel.tsx index 0bb7884534..2042aac340 100644 --- a/src/components/ControlLabel/ControlLabel.tsx +++ b/src/components/ControlLabel/ControlLabel.tsx @@ -1,8 +1,8 @@ -import React, {cloneElement, forwardRef} from 'react'; +import React from 'react'; import {block} from '../utils/cn'; -import {Props} from './types'; +import type {Props} from './types'; import './ControlLabel.scss'; @@ -11,7 +11,7 @@ const b = block('control-label'); /** * Wrap with label for ``, ``, `` */ -export const ControlLabel = forwardRef( +export const ControlLabel = React.forwardRef( ( { children, @@ -26,7 +26,7 @@ export const ControlLabel = forwardRef( }, ref, ) => { - const clonedControl = cloneElement(control, { + const clonedControl = React.cloneElement(control, { className: b('indicator', control.props.className), }); diff --git a/src/components/ControlLabel/types.ts b/src/components/ControlLabel/types.ts index 6f38bcf3a6..fa3d27dcb0 100644 --- a/src/components/ControlLabel/types.ts +++ b/src/components/ControlLabel/types.ts @@ -1,15 +1,13 @@ -import {PropsWithChildren, ReactElement} from 'react'; - -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; export type Size = 'm' | 'l'; -export type Props = PropsWithChildren<{ +export type Props = React.PropsWithChildren<{ labelClassName?: string; title?: string; disabled?: boolean; size?: Size; - control: ReactElement; + control: React.ReactElement; }> & DOMProps & QAProps; diff --git a/src/components/CopyToClipboard/CopyToClipboard.tsx b/src/components/CopyToClipboard/CopyToClipboard.tsx index 2a472a92a5..17c24d084b 100644 --- a/src/components/CopyToClipboard/CopyToClipboard.tsx +++ b/src/components/CopyToClipboard/CopyToClipboard.tsx @@ -2,7 +2,8 @@ import React from 'react'; import ReactCopyToClipboard from 'react-copy-to-clipboard'; -import {CopyToClipboardBaseProps, CopyToClipboardContent, CopyToClipboardStatus} from './types'; +import {CopyToClipboardStatus} from './types'; +import type {CopyToClipboardBaseProps, CopyToClipboardContent} from './types'; interface CopyToClipboardGeneralProps extends CopyToClipboardBaseProps { children: CopyToClipboardContent; diff --git a/src/components/CopyToClipboard/types.ts b/src/components/CopyToClipboard/types.ts index c5a6ecca15..a3c2196360 100644 --- a/src/components/CopyToClipboard/types.ts +++ b/src/components/CopyToClipboard/types.ts @@ -1,6 +1,4 @@ -import React from 'react'; - -import ReactCopyToClipboard from 'react-copy-to-clipboard'; +import type ReactCopyToClipboard from 'react-copy-to-clipboard'; export enum CopyToClipboardStatus { Pending = 'pending', diff --git a/src/components/Dialog/Dialog.tsx b/src/components/Dialog/Dialog.tsx index e55f44c5fb..b304474526 100644 --- a/src/components/Dialog/Dialog.tsx +++ b/src/components/Dialog/Dialog.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import {Modal, ModalCloseReason, ModalProps} from '../Modal'; -import {QAProps} from '../types'; +import {Modal} from '../Modal'; +import type {ModalCloseReason, ModalProps} from '../Modal'; +import type {QAProps} from '../types'; import {block} from '../utils/cn'; import {ButtonClose} from './ButtonClose/ButtonClose'; diff --git a/src/components/Dialog/DialogFooter/DialogFooter.tsx b/src/components/Dialog/DialogFooter/DialogFooter.tsx index b41bb41e91..1834b5f848 100644 --- a/src/components/Dialog/DialogFooter/DialogFooter.tsx +++ b/src/components/Dialog/DialogFooter/DialogFooter.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {Button, ButtonProps, ButtonView} from '../../Button'; +import {Button} from '../../Button'; +import type {ButtonProps, ButtonView} from '../../Button'; import {Popup} from '../../Popup'; import {block} from '../../utils/cn'; @@ -146,10 +147,10 @@ export class DialogFooter extends React.Component { {renderButtons ? ( renderButtons(buttonApply, buttonCancel) ) : ( - <> + {textButtonCancel && buttonCancel} {textButtonApply && buttonApply} - + )} diff --git a/src/components/Dialog/__stories__/Dialog.stories.tsx b/src/components/Dialog/__stories__/Dialog.stories.tsx index 36cea908c8..cf23960679 100644 --- a/src/components/Dialog/__stories__/Dialog.stories.tsx +++ b/src/components/Dialog/__stories__/Dialog.stories.tsx @@ -1,9 +1,10 @@ -import React, {useState} from 'react'; +import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Button} from '../../Button'; -import {Dialog, DialogProps} from '../Dialog'; +import {Dialog} from '../Dialog'; +import type {DialogProps} from '../Dialog'; import {DialogShowcase} from './DialogShowcase'; @@ -14,9 +15,9 @@ export default { const DefaultTemplate: Story = (args) => { const dialogTitleId = 'app-confirmation-dialog-title'; - const [open, setOpen] = useState(false); + const [open, setOpen] = React.useState(false); return ( - <> + @@ -38,7 +39,7 @@ const DefaultTemplate: Story = (args) => { textButtonCancel="Cancel" /> - + ); }; export const Default = DefaultTemplate.bind({}); diff --git a/src/components/Dialog/__stories__/DialogShowcase.tsx b/src/components/Dialog/__stories__/DialogShowcase.tsx index e7204ad5c6..a02ae1c666 100644 --- a/src/components/Dialog/__stories__/DialogShowcase.tsx +++ b/src/components/Dialog/__stories__/DialogShowcase.tsx @@ -108,7 +108,7 @@ function OtherDialog() { errorText="Ooops! You lose..." showError={errorVisible} renderButtons={(buttonApply, buttonCancel) => ( - <> + {buttonCancel}
{buttonApply} - +
)} /> diff --git a/src/components/DropdownMenu/DropdownMenu.tsx b/src/components/DropdownMenu/DropdownMenu.tsx index d836ce5279..6bc72c8900 100644 --- a/src/components/DropdownMenu/DropdownMenu.tsx +++ b/src/components/DropdownMenu/DropdownMenu.tsx @@ -1,5 +1,4 @@ -import React, {useMemo, useRef} from 'react'; -import type {Dispatch, MouseEventHandler, ReactNode, SetStateAction} from 'react'; +import React from 'react'; import {Button} from '../Button'; import type {ButtonProps} from '../Button'; @@ -36,7 +35,7 @@ export type DropdownMenuProps = { /** * Switcher icon. */ - icon?: ReactNode; + icon?: React.ReactNode; open?: boolean; onOpenToggle?: (open: boolean) => void; hideOnScroll?: boolean; @@ -57,14 +56,14 @@ export type DropdownMenuProps = { /** * Menu toggle control. */ - switcher?: ReactNode; + switcher?: React.ReactNode; switcherWrapperClassName?: string; /** * Overrides the default switcher button props. */ defaultSwitcherProps?: ButtonProps; defaultSwitcherClassName?: string; - onSwitcherClick?: MouseEventHandler; + onSwitcherClick?: React.MouseEventHandler; /** * Overrides the default dropdown menu props. */ @@ -76,12 +75,12 @@ export type DropdownMenuProps = { /** * Custom content inside the menu popup. */ - children?: ReactNode; + children?: React.ReactNode; }; export type ControlledDropdownMenuProps = DropdownMenuProps & { open: boolean; - onOpenToggle: Dispatch>; + onOpenToggle: React.Dispatch>; }; const DropdownMenu = ({ @@ -102,7 +101,7 @@ const DropdownMenu = ({ popupProps, children, }: DropdownMenuProps | ControlledDropdownMenuProps) => { - const anchorRef = useRef(null); + const anchorRef = React.useRef(null); const {isPopupShown, togglePopup, closePopup} = usePopupVisibility( open, @@ -112,7 +111,7 @@ const DropdownMenu = ({ useScrollHandler(closePopup, anchorRef, !isPopupShown || !hideOnScroll); - const contextValue = useMemo( + const contextValue = React.useMemo( () => ({ toggle: togglePopup, data, @@ -120,13 +119,13 @@ const DropdownMenu = ({ [data, togglePopup], ); - const itemsList = useMemo( + const itemsList = React.useMemo( () => toItemList, DropdownMenuListItem>(items, dropdownMenuSeparator), [items], ); - const handleSwitcherClick: MouseEventHandler = (event) => { + const handleSwitcherClick: React.MouseEventHandler = (event) => { if (disabled) { return; } diff --git a/src/components/DropdownMenu/DropdownMenuContext.ts b/src/components/DropdownMenu/DropdownMenuContext.ts index c5600254a7..c21360b278 100644 --- a/src/components/DropdownMenu/DropdownMenuContext.ts +++ b/src/components/DropdownMenu/DropdownMenuContext.ts @@ -1,11 +1,11 @@ -import {createContext} from 'react'; +import React from 'react'; interface Context { toggle(open?: boolean): void; data: T | undefined; } -export const DropdownMenuContext = createContext>({ +export const DropdownMenuContext = React.createContext>({ toggle() {}, data: undefined, }); diff --git a/src/components/DropdownMenu/DropdownMenuItem.tsx b/src/components/DropdownMenu/DropdownMenuItem.tsx index 0a84802dac..f18c9077e0 100644 --- a/src/components/DropdownMenu/DropdownMenuItem.tsx +++ b/src/components/DropdownMenu/DropdownMenuItem.tsx @@ -1,5 +1,4 @@ -import React, {useCallback, useContext, useMemo, useRef} from 'react'; -import type {ReactNode} from 'react'; +import React from 'react'; import {Icon} from '../Icon'; import {Menu} from '../Menu'; @@ -16,7 +15,7 @@ import type {DropdownMenuListItem} from './types'; export type DropdownMenuItemProps = Omit, 'path'> & { popupProps?: Partial; closeMenu?: () => void; - children?: ReactNode; + children?: React.ReactNode; path?: number[]; }; @@ -30,15 +29,15 @@ export const DropdownMenuItem = ({ path, ...props }: DropdownMenuItemProps) => { - const {toggle, data} = useContext(DropdownMenuContext); - const menuItemRef = useRef(null); + const {toggle, data} = React.useContext(DropdownMenuContext); + const menuItemRef = React.useRef(null); const {hasSubmenu, isSubmenuOpen, closeSubmenu, openSubmenu} = useSubmenu({ items: subMenuItems, path, }); - const handleCloseMenu = useCallback(() => { + const handleCloseMenu = React.useCallback(() => { const close = () => { if (closeMenu) { closeMenu(); @@ -56,7 +55,7 @@ export const DropdownMenuItem = ({ } }, [closeMenu, closeSubmenu, hasSubmenu, toggle]); - const handleMenuItemClick = useCallback( + const handleMenuItemClick = React.useCallback( (event: React.MouseEvent) => { if (hasSubmenu) { return; @@ -68,7 +67,7 @@ export const DropdownMenuItem = ({ [action, data, handleCloseMenu, hasSubmenu], ); - const extraProps = useMemo(() => { + const extraProps = React.useMemo(() => { return { ...props.extraProps, onMouseEnter: ( @@ -93,7 +92,7 @@ export const DropdownMenuItem = ({ }, [props.extraProps, closeSubmenu, hasSubmenu, openSubmenu]); return ( - <> + ({ onClose={handleCloseMenu} /> )} - + ); }; diff --git a/src/components/DropdownMenu/DropdownMenuNavigationContext.tsx b/src/components/DropdownMenu/DropdownMenuNavigationContext.tsx index d1557d11c4..fcce8d56fa 100644 --- a/src/components/DropdownMenu/DropdownMenuNavigationContext.tsx +++ b/src/components/DropdownMenu/DropdownMenuNavigationContext.tsx @@ -1,22 +1,24 @@ -import React, {ReactNode, RefObject, createContext, useEffect, useMemo, useState} from 'react'; +import React from 'react'; export type DropdownMenuNavigationContextType = { activeMenuPath: number[]; setActiveMenuPath: (path: number[]) => void; - anchorRef: RefObject; + anchorRef: React.RefObject; }; const rootMenuPath: number[] = []; -export const DropdownMenuNavigationContext = createContext({ - activeMenuPath: rootMenuPath, - setActiveMenuPath: () => {}, - anchorRef: {current: null}, -}); +export const DropdownMenuNavigationContext = React.createContext( + { + activeMenuPath: rootMenuPath, + setActiveMenuPath: () => {}, + anchorRef: {current: null}, + }, +); export type DropdownMenuNavigationContextProviderProps = { - anchorRef: RefObject; - children: ReactNode; + anchorRef: React.RefObject; + children: React.ReactNode; disabled: boolean; }; @@ -25,15 +27,15 @@ export const DropdownMenuNavigationContextProvider = ({ children, disabled, }: DropdownMenuNavigationContextProviderProps) => { - const [activeMenuPath, setActiveMenuPath] = useState(rootMenuPath); + const [activeMenuPath, setActiveMenuPath] = React.useState(rootMenuPath); - useEffect(() => { + React.useEffect(() => { if (disabled) { setActiveMenuPath(rootMenuPath); } }, [disabled]); - const contextValue = useMemo( + const contextValue = React.useMemo( () => ({ activeMenuPath, setActiveMenuPath, diff --git a/src/components/DropdownMenu/DropdownMenuPopup.tsx b/src/components/DropdownMenu/DropdownMenuPopup.tsx index 7d1b194381..c3b238d68c 100644 --- a/src/components/DropdownMenu/DropdownMenuPopup.tsx +++ b/src/components/DropdownMenu/DropdownMenuPopup.tsx @@ -1,5 +1,4 @@ -import React, {useCallback, useContext, useEffect} from 'react'; -import type {MouseEvent, ReactNode, RefObject} from 'react'; +import React from 'react'; import {Menu} from '../Menu'; import type {MenuProps} from '../Menu'; @@ -19,11 +18,11 @@ import {stringifyNavigationPath} from './utils/stringifyNavigationPath'; export type DropdownMenuPopupProps = { items: DropdownMenuListItem[]; open: boolean; - anchorRef: RefObject; + anchorRef: React.RefObject; onClose?: () => void; size?: DropdownMenuSize; menuProps?: MenuProps; - children?: ReactNode; + children?: React.ReactNode; popupProps?: Partial; path?: number[]; }; @@ -39,36 +38,36 @@ export const DropdownMenuPopup = ({ popupProps, path = [], }: DropdownMenuPopupProps) => { - const {toggle, data} = useContext(DropdownMenuContext); + const {toggle, data} = React.useContext(DropdownMenuContext); const { activeMenuPath, setActiveMenuPath, anchorRef: navigationAnchorRef, - } = useContext(DropdownMenuNavigationContext); + } = React.useContext(DropdownMenuNavigationContext); const isSubmenu = path.length > 0; - const activateParent = useCallback(() => { + const activateParent = React.useCallback(() => { setActiveMenuPath(path.slice(0, path.length - 1)); }, [setActiveMenuPath, path]); - const handleMouseEnter = useCallback( - (event: MouseEvent) => { + const handleMouseEnter = React.useCallback( + (event: React.MouseEvent) => { setActiveMenuPath(path); popupProps?.onMouseEnter?.(event); }, [path, popupProps, setActiveMenuPath], ); - const handleMouseLeave = useCallback( - (event: MouseEvent) => { + const handleMouseLeave = React.useCallback( + (event: React.MouseEvent) => { activateParent(); popupProps?.onMouseLeave?.(event); }, [activateParent, popupProps], ); - const handleSelect = useCallback( + const handleSelect = React.useCallback( (activeItem: DropdownMenuListItem, event: KeyboardEvent) => { if (activeItem.items && activeItem.path) { setActiveMenuPath(activeItem.path); @@ -80,7 +79,7 @@ export const DropdownMenuPopup = ({ [data, setActiveMenuPath, toggle], ); - const handleKeydown = useCallback( + const handleKeydown = React.useCallback( (activeItemIndex: number, event: KeyboardEvent) => { switch (event.key) { case 'Escape': { @@ -125,7 +124,7 @@ export const DropdownMenuPopup = ({ initialValue: isSubmenu ? 0 : -1, }); - useEffect(() => { + React.useEffect(() => { if (!open) { resetNavigation(); } diff --git a/src/components/DropdownMenu/__stories__/DropdownMenu.stories.tsx b/src/components/DropdownMenu/__stories__/DropdownMenu.stories.tsx index 875cffe475..0343439821 100644 --- a/src/components/DropdownMenu/__stories__/DropdownMenu.stories.tsx +++ b/src/components/DropdownMenu/__stories__/DropdownMenu.stories.tsx @@ -1,12 +1,14 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import block from 'bem-cn-lite'; import {Icon} from '../../Icon'; -import {Label, LabelProps} from '../../Label'; +import {Label} from '../../Label'; +import type {LabelProps} from '../../Label'; import {GearIcon} from '../../icons/GearIcon'; -import {DropdownMenu, DropdownMenuItem} from '../DropdownMenu'; +import {DropdownMenu} from '../DropdownMenu'; +import type {DropdownMenuItem} from '../DropdownMenu'; import {options, optionsAssorted, optionsWithGroups, optionsWithSubItems} from './options'; diff --git a/src/components/DropdownMenu/__stories__/options.tsx b/src/components/DropdownMenu/__stories__/options.tsx index 1349edae18..116ccaf181 100644 --- a/src/components/DropdownMenu/__stories__/options.tsx +++ b/src/components/DropdownMenu/__stories__/options.tsx @@ -150,9 +150,9 @@ export const optionsAssorted: DropdownMenuItem[] = [ { action: () => console.log('==> magic action called'), text: ( - <> + I am magic item with React.Node - + ), }, ]; diff --git a/src/components/DropdownMenu/constants.ts b/src/components/DropdownMenu/constants.ts index f893ab4c7e..2ebbe106c4 100644 --- a/src/components/DropdownMenu/constants.ts +++ b/src/components/DropdownMenu/constants.ts @@ -1,6 +1,6 @@ -import {PopperPlacement} from '../utils/usePopper'; +import type {PopperPlacement} from '../utils/usePopper'; -import {DropdownMenuListItem} from './types'; +import type {DropdownMenuListItem} from './types'; export const subMenuPlacement: PopperPlacement = ['right-start', 'left-start']; diff --git a/src/components/DropdownMenu/hooks/usePopupVisibility.ts b/src/components/DropdownMenu/hooks/usePopupVisibility.ts index be2ab314b3..54449bf16d 100644 --- a/src/components/DropdownMenu/hooks/usePopupVisibility.ts +++ b/src/components/DropdownMenu/hooks/usePopupVisibility.ts @@ -1,11 +1,12 @@ -import {useCallback, useEffect} from 'react'; -import type {Dispatch, SetStateAction} from 'react'; +import React from 'react'; import {useConditionallyControlledState} from '../../utils/useConditionallyControlledState'; export function usePopupVisibility( visible?: boolean, - onChangeVisibility?: Dispatch> | ((visible: boolean) => void), + onChangeVisibility?: + | React.Dispatch> + | ((visible: boolean) => void), disabled?: boolean, ) { const [isPopupShown, setPopupShown] = useConditionallyControlledState( @@ -14,7 +15,7 @@ export function usePopupVisibility( false, ); - const togglePopup = useCallback( + const togglePopup = React.useCallback( (open?: boolean) => { setPopupShown((isShown) => { if (typeof open === 'boolean') { @@ -27,11 +28,11 @@ export function usePopupVisibility( [setPopupShown], ); - const closePopup = useCallback(() => { + const closePopup = React.useCallback(() => { setPopupShown(false); }, [setPopupShown]); - useEffect(() => { + React.useEffect(() => { if (disabled && isPopupShown) { closePopup(); } diff --git a/src/components/DropdownMenu/hooks/useScrollHandler.ts b/src/components/DropdownMenu/hooks/useScrollHandler.ts index 917e7ef96d..03bea1811a 100644 --- a/src/components/DropdownMenu/hooks/useScrollHandler.ts +++ b/src/components/DropdownMenu/hooks/useScrollHandler.ts @@ -1,14 +1,13 @@ -import {useEffect} from 'react'; -import type {RefObject} from 'react'; +import React from 'react'; export function useScrollHandler( onScroll: (event: Event) => void, - anchorRef: RefObject, + anchorRef: React.RefObject, disabled?: boolean, ) { - useEffect(() => { + React.useEffect(() => { if (disabled) { - return; + return undefined; } const handleScroll = (event: Event) => { diff --git a/src/components/DropdownMenu/hooks/useSubmenu.ts b/src/components/DropdownMenu/hooks/useSubmenu.ts index c4a666471d..03962242cb 100644 --- a/src/components/DropdownMenu/hooks/useSubmenu.ts +++ b/src/components/DropdownMenu/hooks/useSubmenu.ts @@ -1,7 +1,7 @@ -import {useCallback, useContext} from 'react'; +import React from 'react'; import {DropdownMenuNavigationContext} from '../DropdownMenuNavigationContext'; -import {DropdownMenuListItem} from '../types'; +import type {DropdownMenuListItem} from '../types'; import {isSubmenuOpen} from '../utils/isSubmenuOpen'; export type UseSubmenuProps = { @@ -10,11 +10,11 @@ export type UseSubmenuProps = { }; export function useSubmenu({items, path}: UseSubmenuProps) { - const {activeMenuPath, setActiveMenuPath} = useContext(DropdownMenuNavigationContext); + const {activeMenuPath, setActiveMenuPath} = React.useContext(DropdownMenuNavigationContext); const hasSubmenu = Boolean(path) && Boolean(items?.length); - const closeSubmenu = useCallback(() => { + const closeSubmenu = React.useCallback(() => { if (!path) { return; } @@ -22,7 +22,7 @@ export function useSubmenu({items, path}: UseSubmenuProps) { setActiveMenuPath(path.slice(0, path.length - 1)); }, [path, setActiveMenuPath]); - const openSubmenu = useCallback(() => { + const openSubmenu = React.useCallback(() => { if (!path) { return; } diff --git a/src/components/DropdownMenu/types.ts b/src/components/DropdownMenu/types.ts index 3531e00dbe..728f7802dd 100644 --- a/src/components/DropdownMenu/types.ts +++ b/src/components/DropdownMenu/types.ts @@ -1,5 +1,3 @@ -import React from 'react'; - import type {MenuItemProps} from '../Menu'; export type DropdownMenuItemAction = ( diff --git a/src/components/HelpPopover/HelpPopover.tsx b/src/components/HelpPopover/HelpPopover.tsx index 86f1ee86fd..0dad6dde70 100644 --- a/src/components/HelpPopover/HelpPopover.tsx +++ b/src/components/HelpPopover/HelpPopover.tsx @@ -1,9 +1,10 @@ import React from 'react'; import {Icon} from '../Icon'; -import {Popover, PopoverProps} from '../Popover'; +import {Popover} from '../Popover'; +import type {PopoverProps} from '../Popover'; import {QuestionMarkIcon} from '../icons/QuestionMarkIcon'; -import {QAProps} from '../types'; +import type {QAProps} from '../types'; import {block} from '../utils/cn'; const b = block('help-popover'); diff --git a/src/components/HelpPopover/__stories__/HelpPopover.stories.tsx b/src/components/HelpPopover/__stories__/HelpPopover.stories.tsx index c903e37dc8..1b5c467cc8 100644 --- a/src/components/HelpPopover/__stories__/HelpPopover.stories.tsx +++ b/src/components/HelpPopover/__stories__/HelpPopover.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {HelpPopover, HelpPopoverProps} from '../HelpPopover'; +import {HelpPopover} from '../HelpPopover'; +import type {HelpPopoverProps} from '../HelpPopover'; export default { title: 'Components/HelpPopover', diff --git a/src/components/Hotkey/Hotkey.tsx b/src/components/Hotkey/Hotkey.tsx index ee2efa27cc..1dbe8207ac 100644 --- a/src/components/Hotkey/Hotkey.tsx +++ b/src/components/Hotkey/Hotkey.tsx @@ -1,11 +1,11 @@ -import React, {ReactNode} from 'react'; +import React from 'react'; import type {DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {defsByPlatform} from './definitions'; import {parseKeyGroups} from './parse'; -import {Platform} from './types'; +import type {Platform} from './types'; import {isMac} from './utils'; import './Hotkey.scss'; @@ -34,7 +34,7 @@ export const Hotkey = React.forwardRef(function Hotkey const {value, platform, view = 'light', qa, style, className} = props; const groups = parseHotkeys(value, {platform}); - const content: ReactNode[] = []; + const content: React.ReactNode[] = []; let hasGroups = false; groups.forEach((keys, groupIdx) => { diff --git a/src/components/Hotkey/__stories__/Hotkey.stories.tsx b/src/components/Hotkey/__stories__/Hotkey.stories.tsx index 389e08a543..9879adabe3 100644 --- a/src/components/Hotkey/__stories__/Hotkey.stories.tsx +++ b/src/components/Hotkey/__stories__/Hotkey.stories.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Table} from '../../Table'; -import {Hotkey, HotkeyProps} from '../Hotkey'; +import {Hotkey} from '../Hotkey'; +import type {HotkeyProps} from '../Hotkey'; export default { title: 'Components/Hotkey', diff --git a/src/components/Hotkey/index.ts b/src/components/Hotkey/index.ts index 7fbda4f09f..2a506cebfc 100644 --- a/src/components/Hotkey/index.ts +++ b/src/components/Hotkey/index.ts @@ -1 +1,2 @@ -export {Hotkey, HotkeyProps, parseHotkeys} from './Hotkey'; +export {Hotkey, parseHotkeys} from './Hotkey'; +export type {HotkeyProps} from './Hotkey'; diff --git a/src/components/Icon/Icon.tsx b/src/components/Icon/Icon.tsx index 1fc63f631c..cf2792b52e 100644 --- a/src/components/Icon/Icon.tsx +++ b/src/components/Icon/Icon.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import {QAProps} from '../types'; +import type {QAProps} from '../types'; import {block} from '../utils/cn'; import {a11yHiddenSvgProps} from '../utils/svg'; -import {SVGIconData} from './types'; +import type {SVGIconData} from './types'; import { getStringViewBox, isComponentSvgData, diff --git a/src/components/Icon/__stories__/Icon.stories.tsx b/src/components/Icon/__stories__/Icon.stories.tsx index f65725b6a6..19bc6d2f66 100644 --- a/src/components/Icon/__stories__/Icon.stories.tsx +++ b/src/components/Icon/__stories__/Icon.stories.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {GearIcon} from '../../icons/GearIcon'; -import {Icon, IconProps} from '../Icon'; +import {Icon} from '../Icon'; +import type {IconProps} from '../Icon'; export default { title: 'Components/Icon', diff --git a/src/components/Icon/utils.ts b/src/components/Icon/utils.ts index 73b217f7dd..7c4c4bb0ca 100644 --- a/src/components/Icon/utils.ts +++ b/src/components/Icon/utils.ts @@ -1,4 +1,4 @@ -import { +import type { SVGIconComponentData, SVGIconData, SVGIconSpriteData, diff --git a/src/components/Label/Label.tsx b/src/components/Label/Label.tsx index 994c7cd199..a770829f2e 100644 --- a/src/components/Label/Label.tsx +++ b/src/components/Label/Label.tsx @@ -1,6 +1,7 @@ -import React, {ReactNode} from 'react'; +import React from 'react'; -import {Button, ButtonProps, ButtonSize} from '../Button'; +import {Button} from '../Button'; +import type {ButtonProps, ButtonSize} from '../Button'; import {ClipboardIcon} from '../ClipboardIcon'; import {CopyToClipboard, CopyToClipboardStatus} from '../CopyToClipboard'; import {Icon} from '../Icon'; @@ -109,7 +110,7 @@ export const Label = React.forwardRef(function Label }; const renderLabel = (status?: CopyToClipboardStatus) => { - let actionButton: ReactNode; + let actionButton: React.ReactNode; if (typeCopy) { actionButton = ( diff --git a/src/components/Label/__stories__/Label.stories.tsx b/src/components/Label/__stories__/Label.stories.tsx index cf839d374b..f1b501f1d1 100644 --- a/src/components/Label/__stories__/Label.stories.tsx +++ b/src/components/Label/__stories__/Label.stories.tsx @@ -1,12 +1,13 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Icon as IconComponent} from '../../Icon'; import {Link} from '../../Link'; import {GearIcon} from '../../icons/GearIcon'; import {Tick as TickIcon} from '../../icons/Tick'; -import {Label, LabelProps} from '../Label'; +import {Label} from '../Label'; +import type {LabelProps} from '../Label'; import './Label.stories.scss'; diff --git a/src/components/Link/Link.tsx b/src/components/Link/Link.tsx index 25241a2757..a3ab27752e 100644 --- a/src/components/Link/Link.tsx +++ b/src/components/Link/Link.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {eventBroker} from '../utils/event-broker'; diff --git a/src/components/Link/__stories__/Link.new.stories.tsx b/src/components/Link/__stories__/Link.new.stories.tsx index cc4189cdb0..23856ebe7b 100644 --- a/src/components/Link/__stories__/Link.new.stories.tsx +++ b/src/components/Link/__stories__/Link.new.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Link} from '../Link'; diff --git a/src/components/Link/__stories__/Link.stories.tsx b/src/components/Link/__stories__/Link.stories.tsx index 47248da3a1..632628880a 100644 --- a/src/components/Link/__stories__/Link.stories.tsx +++ b/src/components/Link/__stories__/Link.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Link, LinkProps} from '../Link'; +import {Link} from '../Link'; +import type {LinkProps} from '../Link'; import {LinkShowcase} from '../__stories__/LinkShowcase'; export default { diff --git a/src/components/List/__stories__/List.stories.tsx b/src/components/List/__stories__/List.stories.tsx index 9925b6ff97..c778942171 100644 --- a/src/components/List/__stories__/List.stories.tsx +++ b/src/components/List/__stories__/List.stories.tsx @@ -1,12 +1,13 @@ -import React, {JSXElementConstructor} from 'react'; +import React from 'react'; import type {ComponentMeta, ComponentStory} from '@storybook/react'; -import {List, ListProps, listDefaultProps} from '..'; +import {List, listDefaultProps} from '..'; +import type {ListProps} from '..'; import {ListShowcase} from './ListShowcase'; -type ComponentType = JSXElementConstructor>; +type ComponentType = React.JSXElementConstructor>; export default { title: 'Components/List', diff --git a/src/components/List/__stories__/ListItem.stories.tsx b/src/components/List/__stories__/ListItem.stories.tsx index f18457d693..39ee5a32d4 100644 --- a/src/components/List/__stories__/ListItem.stories.tsx +++ b/src/components/List/__stories__/ListItem.stories.tsx @@ -1,11 +1,11 @@ -import React, {CSSProperties, JSXElementConstructor} from 'react'; +import React from 'react'; -import {ComponentMeta, ComponentStory} from '@storybook/react'; +import type {ComponentMeta, ComponentStory} from '@storybook/react'; import {ListItem} from '../components'; -import {ListItemProps, ListSortHandleAlign} from '../types'; +import type {ListItemProps, ListSortHandleAlign} from '../types'; -const demoWrapperStyles: CSSProperties = { +const demoWrapperStyles: React.CSSProperties = { maxWidth: '300px', border: 'dotted 2px', margin: '0 auto', @@ -41,7 +41,9 @@ export default { } as ComponentMeta; const getComponentTemplate = - > = typeof ListItem>(): ComponentStory => + < + T extends React.JSXElementConstructor> = typeof ListItem, + >(): ComponentStory => // eslint-disable-next-line react/display-name (args) => ; @@ -65,7 +67,7 @@ Selected.args = { selected: true, }; -type CustomItemComponent = JSXElementConstructor>; +type CustomItemComponent = React.JSXElementConstructor>; export const CustomRender = getComponentTemplate().bind({}); CustomRender.args = { item: {title: 'Custom Item', disabled: true}, diff --git a/src/components/List/__tests__/ListItem.test.tsx b/src/components/List/__tests__/ListItem.test.tsx index 4ca56453b9..883ded03be 100644 --- a/src/components/List/__tests__/ListItem.test.tsx +++ b/src/components/List/__tests__/ListItem.test.tsx @@ -1,11 +1,11 @@ -import React, {PropsWithChildren} from 'react'; +import React from 'react'; import {render, screen} from '@testing-library/react'; import {ListItem} from '../components'; -import {ListItemData, ListItemProps} from '../types'; +import type {ListItemData, ListItemProps} from '../types'; -function ListWrapper({children}: PropsWithChildren) { +function ListWrapper({children}: React.PropsWithChildren) { return
{children}
; } diff --git a/src/components/List/components/SimpleContainer.tsx b/src/components/List/components/SimpleContainer.tsx index 98992acdab..b7afa9db83 100644 --- a/src/components/List/components/SimpleContainer.tsx +++ b/src/components/List/components/SimpleContainer.tsx @@ -1,10 +1,10 @@ -import React, {PropsWithChildren} from 'react'; +import React from 'react'; import _range from 'lodash/range'; -import {ListItem} from './ListItem'; +import type {ListItem} from './ListItem'; -export type SimpleContainerProps = PropsWithChildren<{ +export type SimpleContainerProps = React.PropsWithChildren<{ itemCount: number; }>; diff --git a/src/components/List/index.tsx b/src/components/List/index.tsx index d1aa492830..478f28b26a 100644 --- a/src/components/List/index.tsx +++ b/src/components/List/index.tsx @@ -1,7 +1,7 @@ -import React, {FC} from 'react'; +import React from 'react'; import {List, listDefaultProps} from './List'; -import {ListProps} from './types'; +import type {ListProps} from './types'; export * from './List'; export * from './types'; @@ -9,5 +9,5 @@ export * from './components/ListItem'; export {ListQa} from './constants'; /** @deprecated Use `` */ -export const ListWrapper: FC> = (props) => ; +export const ListWrapper = (props: ListProps) => ; ListWrapper.defaultProps = listDefaultProps; diff --git a/src/components/List/types.ts b/src/components/List/types.ts index bf054b95f8..4877b2b0f9 100644 --- a/src/components/List/types.ts +++ b/src/components/List/types.ts @@ -1,5 +1,3 @@ -import type {CSSProperties, ReactNode} from 'react'; - import type {TextInputSize} from '../TextInput'; import type {QAProps} from '../types'; @@ -28,7 +26,11 @@ export type ListProps = QAProps & { deactivateOnLeave?: boolean; sortHandleAlign?: ListSortHandleAlign; size?: TextInputSize; - renderItem?: (item: ListItemData, isItemActive: boolean, itemIndex: number) => ReactNode; + renderItem?: ( + item: ListItemData, + isItemActive: boolean, + itemIndex: number, + ) => React.ReactNode; filterItem?: (filter: string) => (item: ListItemData) => boolean; onItemClick?: (item: ListItemData, index: number, fromKeyboard?: boolean) => void; onFilterUpdate?: (filter: string) => void; @@ -45,7 +47,7 @@ export type ListItemProps = { itemClassName?: string; sortable?: boolean; sortHandleAlign?: ListSortHandleAlign; - style?: CSSProperties; + style?: React.CSSProperties; onActivate: (index?: number) => void; renderItem?: ListProps['renderItem']; onClick?: ListProps['onItemClick']; diff --git a/src/components/Loader/__stories__/Loader.stories.tsx b/src/components/Loader/__stories__/Loader.stories.tsx index c8b97d3ffe..d0e28d8604 100644 --- a/src/components/Loader/__stories__/Loader.stories.tsx +++ b/src/components/Loader/__stories__/Loader.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Loader, LoaderProps} from '../Loader'; +import {Loader} from '../Loader'; +import type {LoaderProps} from '../Loader'; export default { title: 'Components/Loader', @@ -14,13 +15,13 @@ export const Default = DefaultTemplate.bind({}); const SizeTemplate: Story = (args) => { return ( - <> + - + ); }; diff --git a/src/components/Menu/Menu.tsx b/src/components/Menu/Menu.tsx index 18e071d105..50c1ffbfdf 100644 --- a/src/components/Menu/Menu.tsx +++ b/src/components/Menu/Menu.tsx @@ -1,10 +1,12 @@ import React from 'react'; -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; -import {MenuGroup, MenuGroupProps} from './MenuGroup'; -import {MenuItem, MenuItemProps} from './MenuItem'; +import {MenuGroup} from './MenuGroup'; +import type {MenuGroupProps} from './MenuGroup'; +import {MenuItem} from './MenuItem'; +import type {MenuItemProps} from './MenuItem'; import './Menu.scss'; diff --git a/src/components/Menu/MenuGroup.tsx b/src/components/Menu/MenuGroup.tsx index a82bbd56c6..2471438034 100644 --- a/src/components/Menu/MenuGroup.tsx +++ b/src/components/Menu/MenuGroup.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {useUniqId} from '../utils/useUniqId'; diff --git a/src/components/Menu/MenuItem.tsx b/src/components/Menu/MenuItem.tsx index 1d218f22c1..afe502489b 100644 --- a/src/components/Menu/MenuItem.tsx +++ b/src/components/Menu/MenuItem.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {eventBroker} from '../utils/event-broker'; diff --git a/src/components/Menu/__stories__/Menu.stories.tsx b/src/components/Menu/__stories__/Menu.stories.tsx index 8e0e6ffbfe..e1f08b7a22 100644 --- a/src/components/Menu/__stories__/Menu.stories.tsx +++ b/src/components/Menu/__stories__/Menu.stories.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Icon} from '../../Icon'; import {GearIcon} from '../../icons/GearIcon'; -import {Menu, MenuProps} from '../Menu'; +import {Menu} from '../Menu'; +import type {MenuProps} from '../Menu'; export default { title: 'Components/Menu', diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx index 358d36edba..50a63e3d58 100644 --- a/src/components/Modal/Modal.tsx +++ b/src/components/Modal/Modal.tsx @@ -3,12 +3,13 @@ import React from 'react'; import {CSSTransition} from 'react-transition-group'; import {Portal} from '../Portal'; -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; import {FocusTrap} from '../utils/FocusTrap'; import {block} from '../utils/cn'; import {getCSSTransitionClassNames} from '../utils/transition'; import {useBodyScrollLock} from '../utils/useBodyScrollLock'; -import {LayerCloseReason, LayerExtendableProps, useLayer} from '../utils/useLayer'; +import {useLayer} from '../utils/useLayer'; +import type {LayerCloseReason, LayerExtendableProps} from '../utils/useLayer'; import {useRestoreFocus} from '../utils/useRestoreFocus'; import './Modal.scss'; diff --git a/src/components/Modal/__stories__/Modal.stories.tsx b/src/components/Modal/__stories__/Modal.stories.tsx index e97c6bc596..b43a10213e 100644 --- a/src/components/Modal/__stories__/Modal.stories.tsx +++ b/src/components/Modal/__stories__/Modal.stories.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Button} from '../../Button'; -import {Modal, ModalProps} from '../Modal'; +import {Modal} from '../Modal'; +import type {ModalProps} from '../Modal'; export default { title: 'Components/Modal', diff --git a/src/components/Persona/Persona.tsx b/src/components/Persona/Persona.tsx index 0ba920fb41..5d4de68e56 100644 --- a/src/components/Persona/Persona.tsx +++ b/src/components/Persona/Persona.tsx @@ -1,4 +1,4 @@ -import React, {FC, ReactNode} from 'react'; +import React from 'react'; import {Icon} from '../Icon'; import {PersonaWrap} from '../PersonaWrap'; @@ -25,7 +25,7 @@ export interface PersonaProps { className?: string; } -export const Persona: FC = ({ +export function Persona({ size = 's', theme = 'default', type = 'person', @@ -34,8 +34,8 @@ export const Persona: FC = ({ text, image, className, -}) => { - let avatar: ReactNode | null; +}: PersonaProps) { + let avatar: React.ReactNode | null; switch (type) { case 'person': @@ -62,6 +62,6 @@ export const Persona: FC = ({ {text} ); -}; +} Persona.displayName = 'Persona'; diff --git a/src/components/Persona/__stories__/Persona.stories.tsx b/src/components/Persona/__stories__/Persona.stories.tsx index c09d5d6632..94cca93833 100644 --- a/src/components/Persona/__stories__/Persona.stories.tsx +++ b/src/components/Persona/__stories__/Persona.stories.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {faker} from '@faker-js/faker/locale/en'; -import {ComponentMeta, ComponentStory} from '@storybook/react'; +import type {ComponentMeta, ComponentStory} from '@storybook/react'; import {Persona} from '../Persona'; diff --git a/src/components/PersonaWrap/PersonaWrap.tsx b/src/components/PersonaWrap/PersonaWrap.tsx index 6d4fa6dfb5..b45e390819 100644 --- a/src/components/PersonaWrap/PersonaWrap.tsx +++ b/src/components/PersonaWrap/PersonaWrap.tsx @@ -1,4 +1,4 @@ -import React, {FC, MouseEvent, ReactNode} from 'react'; +import React from 'react'; import {Icon} from '../Icon'; import {CrossIcon} from '../icons'; @@ -9,17 +9,17 @@ import './PersonaWrap.scss'; const b = block('persona'); export interface PersonaWrapProps { - avatar: ReactNode; - children?: ReactNode; + avatar: React.ReactNode; + children?: React.ReactNode; isEmpty?: boolean; theme?: 'default' | 'clear'; size?: 's' | 'n'; - onClose?: (event: MouseEvent) => void; - onClick?: (event: MouseEvent) => void; + onClose?: (event: React.MouseEvent) => void; + onClick?: (event: React.MouseEvent) => void; className?: string; } -export const PersonaWrap: FC = ({ +export function PersonaWrap({ size = 's', theme = 'default', isEmpty, @@ -28,7 +28,7 @@ export const PersonaWrap: FC = ({ className, avatar, children, -}) => { +}: PersonaWrapProps) { const clickable = Boolean(onClick); const closeable = Boolean(onClose); return ( @@ -44,6 +44,6 @@ export const PersonaWrap: FC = ({ )} ); -}; +} PersonaWrap.displayName = 'PersonaWrap'; diff --git a/src/components/PersonaWrap/__stories__/PersonaWrap.stories.tsx b/src/components/PersonaWrap/__stories__/PersonaWrap.stories.tsx index 18cd0a39a9..85a9f65e73 100644 --- a/src/components/PersonaWrap/__stories__/PersonaWrap.stories.tsx +++ b/src/components/PersonaWrap/__stories__/PersonaWrap.stories.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {faker} from '@faker-js/faker/locale/en'; -import {ComponentMeta, ComponentStory} from '@storybook/react'; +import type {ComponentMeta, ComponentStory} from '@storybook/react'; import {PersonaWrap} from '../PersonaWrap'; diff --git a/src/components/Popover/Popover.tsx b/src/components/Popover/Popover.tsx index 82b8ecfcb8..b066ce49e0 100644 --- a/src/components/Popover/Popover.tsx +++ b/src/components/Popover/Popover.tsx @@ -1,4 +1,4 @@ -import React, {ForwardedRef, forwardRef, useImperativeHandle, useRef} from 'react'; +import React from 'react'; import {Button} from '../Button'; import {Icon} from '../Icon'; @@ -17,7 +17,7 @@ import type {PopoverInstanceProps, PopoverProps} from './types'; import './Popover.scss'; -export const Popover = forwardRef(function ( +export const Popover = React.forwardRef(function ( { initialOpen = false, disabled = false, @@ -50,12 +50,12 @@ export const Popover = forwardRef(function ( anchorRef, strategy, qa, - }: PopoverProps & QAProps, - ref: ForwardedRef, + }, + ref, ) { - const controlRef = useRef(null); - const closedManually = useRef(false); - const shouldBeOpen = useRef(initialOpen); + const controlRef = React.useRef(null); + const closedManually = React.useRef(false); + const shouldBeOpen = React.useRef(initialOpen); const { isOpen, @@ -77,7 +77,7 @@ export const Popover = forwardRef(function ( shouldBeOpen, }); - useImperativeHandle( + React.useImperativeHandle( ref, () => ({ openTooltip, diff --git a/src/components/Popover/__stories__/Popover.stories.tsx b/src/components/Popover/__stories__/Popover.stories.tsx index 397c3c3bba..4dfd34671e 100644 --- a/src/components/Popover/__stories__/Popover.stories.tsx +++ b/src/components/Popover/__stories__/Popover.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Popover, PopoverBehavior, PopoverProps} from '../'; +import {Popover, PopoverBehavior} from '../'; +import type {PopoverProps} from '../'; import {Button} from '../../Button'; import {cnPopoverDemo} from './PopoverDemo.classname'; diff --git a/src/components/Popover/__stories__/examples/Base/Base.tsx b/src/components/Popover/__stories__/examples/Base/Base.tsx index 07dabe3b5a..63f710d04f 100644 --- a/src/components/Popover/__stories__/examples/Base/Base.tsx +++ b/src/components/Popover/__stories__/examples/Base/Base.tsx @@ -1,14 +1,13 @@ import React from 'react'; -import type {FC, MouseEvent} from 'react'; import {Popover} from '../../../Popover'; -import {PopoverProps} from '../../../types'; +import type {PopoverProps} from '../../../types'; -export const Base: FC = (props) => { - const handleClick = async (event: MouseEvent) => { +export function Base(props: PopoverProps) { + const handleClick = async (event: React.MouseEvent) => { props.onClick?.(event); return true; }; return ; -}; +} diff --git a/src/components/Popover/__stories__/examples/WithCustomAnchor/WithCustomAnchor.tsx b/src/components/Popover/__stories__/examples/WithCustomAnchor/WithCustomAnchor.tsx index 416dc585ae..bad954e021 100644 --- a/src/components/Popover/__stories__/examples/WithCustomAnchor/WithCustomAnchor.tsx +++ b/src/components/Popover/__stories__/examples/WithCustomAnchor/WithCustomAnchor.tsx @@ -1,16 +1,16 @@ -import React, {useRef, useState} from 'react'; +import React from 'react'; import {Popover} from '../../../'; import {Button} from '../../../../Button'; import {Loader} from '../../../../Loader'; -import {PopoverInstanceProps} from '../../../types'; +import type {PopoverInstanceProps} from '../../../types'; import {cnPopoverDemo} from '../../PopoverDemo.classname'; export function WithCustomAnchor() { - const [isRefTooltipVisible, setIsRefTooltipVisible] = useState(false); + const [isRefTooltipVisible, setIsRefTooltipVisible] = React.useState(false); - const popoverRef = useRef(); - const popoverAnchor = useRef(null); + const popoverRef = React.useRef(null); + const popoverAnchor = React.useRef(null); const toggleTooltip = () => { const instance = popoverRef.current; diff --git a/src/components/Popover/components/Buttons/Buttons.tsx b/src/components/Popover/components/Buttons/Buttons.tsx index 225d55140d..37cda5aa11 100644 --- a/src/components/Popover/components/Buttons/Buttons.tsx +++ b/src/components/Popover/components/Buttons/Buttons.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {Button} from '../../../Button'; import {cnPopover} from '../../Popover.classname'; -import {PopoverButtonProps, PopoverTheme} from '../../types'; +import type {PopoverButtonProps, PopoverTheme} from '../../types'; import {getButtonView} from './helpers/getButtonView'; diff --git a/src/components/Popover/components/Buttons/helpers/getButtonView.ts b/src/components/Popover/components/Buttons/helpers/getButtonView.ts index 3afe83178f..01a243948b 100644 --- a/src/components/Popover/components/Buttons/helpers/getButtonView.ts +++ b/src/components/Popover/components/Buttons/helpers/getButtonView.ts @@ -1,4 +1,4 @@ -import {PopoverTheme} from '../../../types'; +import type {PopoverTheme} from '../../../types'; export const getButtonView = (theme: PopoverTheme, isAction = false) => { switch (theme) { diff --git a/src/components/Popover/components/Trigger/Trigger.tsx b/src/components/Popover/components/Trigger/Trigger.tsx index 712d745e99..01ad3e4773 100644 --- a/src/components/Popover/components/Trigger/Trigger.tsx +++ b/src/components/Popover/components/Trigger/Trigger.tsx @@ -1,5 +1,4 @@ -import React, {MutableRefObject} from 'react'; -import type {MouseEvent, ReactNode} from 'react'; +import React from 'react'; export type TriggerProps = { /** @@ -9,7 +8,7 @@ export type TriggerProps = { /** * click handler */ - onClick?: (event: MouseEvent) => boolean | Promise; + onClick?: (event: React.MouseEvent) => boolean | Promise; /** * Disables open state changes */ @@ -25,11 +24,11 @@ export type TriggerProps = { /** * Indicates, that tooltip is closed manually */ - closedManually: MutableRefObject; + closedManually: React.MutableRefObject; /** * Tooltip's trigger content */ - children?: ReactNode; + children?: React.ReactNode; }; export const Trigger = ({ @@ -41,7 +40,7 @@ export const Trigger = ({ onClick, children, }: TriggerProps) => { - const handleClick = async (event: MouseEvent) => { + const handleClick = async (event: React.MouseEvent) => { if (disabled) { return; } diff --git a/src/components/Popover/hooks/useOpen.ts b/src/components/Popover/hooks/useOpen.ts index ab324b3f50..aed58b7622 100644 --- a/src/components/Popover/hooks/useOpen.ts +++ b/src/components/Popover/hooks/useOpen.ts @@ -1,4 +1,4 @@ -import {MutableRefObject, useCallback, useEffect, useRef, useState} from 'react'; +import React from 'react'; import {useUpdateEffect} from '../../utils/useUpdateEffect'; import {PopoverBehavior, delayByBehavior} from '../config'; @@ -11,7 +11,7 @@ export type UseOpenProps = { delayOpening?: number; delayClosing?: number; behavior: PopoverBehavior; - shouldBeOpen: MutableRefObject; + shouldBeOpen: React.MutableRefObject; }; export const useOpen = ({ @@ -24,33 +24,33 @@ export const useOpen = ({ behavior, shouldBeOpen, }: UseOpenProps) => { - const openingTimeout = useRef | null>(null); - const closingTimeout = useRef | null>(null); + const openingTimeout = React.useRef | null>(null); + const closingTimeout = React.useRef | null>(null); - const [isOpen, setIsOpen] = useState(initialOpen); + const [isOpen, setIsOpen] = React.useState(initialOpen); - const unsetOpeningTimeout = useCallback(() => { + const unsetOpeningTimeout = React.useCallback(() => { if (openingTimeout.current) { clearTimeout(openingTimeout.current); openingTimeout.current = null; } }, []); - const unsetClosingTimeout = useCallback(() => { + const unsetClosingTimeout = React.useCallback(() => { if (closingTimeout.current) { clearTimeout(closingTimeout.current); closingTimeout.current = null; } }, []); - useEffect(() => { + React.useEffect(() => { return () => { unsetOpeningTimeout(); unsetClosingTimeout(); }; }, [unsetClosingTimeout, unsetOpeningTimeout]); - const setTooltipOpen = useCallback( + const setTooltipOpen = React.useCallback( (open: boolean) => { setIsOpen(open); shouldBeOpen.current = open; @@ -59,17 +59,17 @@ export const useOpen = ({ [onOpenChange, shouldBeOpen], ); - const openTooltip = useCallback(() => { + const openTooltip = React.useCallback(() => { unsetOpeningTimeout(); setTooltipOpen(true); }, [setTooltipOpen, unsetOpeningTimeout]); - const closeTooltip = useCallback(() => { + const closeTooltip = React.useCallback(() => { unsetClosingTimeout(); setTooltipOpen(false); }, [setTooltipOpen, unsetClosingTimeout]); - useEffect(() => { + React.useEffect(() => { if (disabled) { closeTooltip(); } @@ -83,14 +83,14 @@ export const useOpen = ({ const [defaultDelayOpening, defaultDelayClosing] = delayByBehavior[behavior]; - const openTooltipDelayed = useCallback(() => { + const openTooltipDelayed = React.useCallback(() => { openingTimeout.current = setTimeout(() => { openingTimeout.current = null; openTooltip(); }, delayOpening ?? defaultDelayOpening); }, [defaultDelayOpening, delayOpening, openTooltip]); - const closeTooltipDelayed = useCallback(() => { + const closeTooltipDelayed = React.useCallback(() => { closingTimeout.current = setTimeout(() => { closingTimeout.current = null; closeTooltip(); diff --git a/src/components/Popover/index.ts b/src/components/Popover/index.ts index 6745acea16..11e52e1806 100644 --- a/src/components/Popover/index.ts +++ b/src/components/Popover/index.ts @@ -1,3 +1,8 @@ export * from './Popover'; -export {PopoverButtonProps, PopoverProps, PopoverInstanceProps, PopoverAnchorRef} from './types'; +export type { + PopoverButtonProps, + PopoverProps, + PopoverInstanceProps, + PopoverAnchorRef, +} from './types'; export {PopoverBehavior} from './config'; diff --git a/src/components/Popover/types.ts b/src/components/Popover/types.ts index 392615e37c..559cb518b3 100644 --- a/src/components/Popover/types.ts +++ b/src/components/Popover/types.ts @@ -1,12 +1,10 @@ -import React from 'react'; +import type {PopupAnchorRef, PopupProps} from '../Popup'; -import {PopupAnchorRef, PopupProps} from '../Popup'; - -import {ButtonsProps} from './components/Buttons/Buttons'; -import {ContentProps} from './components/Content/Content'; -import {LinksProps} from './components/Links/Links'; -import {TriggerProps} from './components/Trigger/Trigger'; -import {PopoverBehavior} from './config'; +import type {ButtonsProps} from './components/Buttons/Buttons'; +import type {ContentProps} from './components/Content/Content'; +import type {LinksProps} from './components/Links/Links'; +import type {TriggerProps} from './components/Trigger/Trigger'; +import type {PopoverBehavior} from './config'; export type PopoverButtonProps = { /** diff --git a/src/components/Popup/Popup.tsx b/src/components/Popup/Popup.tsx index a0065eea0c..831ff7cf78 100644 --- a/src/components/Popup/Popup.tsx +++ b/src/components/Popup/Popup.tsx @@ -3,19 +3,20 @@ import React from 'react'; import {CSSTransition} from 'react-transition-group'; import {Portal} from '../Portal'; -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; import {useParentFocusTrap} from '../utils/FocusTrap'; import {block} from '../utils/cn'; import {getCSSTransitionClassNames} from '../utils/transition'; import {useForkRef} from '../utils/useForkRef'; -import {LayerExtendableProps, useLayer} from '../utils/useLayer'; -import { +import {useLayer} from '../utils/useLayer'; +import type {LayerExtendableProps} from '../utils/useLayer'; +import {usePopper} from '../utils/usePopper'; +import type { PopperAnchorRef, PopperModifiers, PopperOffset, PopperPlacement, PopperProps, - usePopper, } from '../utils/usePopper'; import {useRestoreFocus} from '../utils/useRestoreFocus'; diff --git a/src/components/Popup/__stories__/Popup.stories.tsx b/src/components/Popup/__stories__/Popup.stories.tsx index 0715526695..fcdfa772e7 100644 --- a/src/components/Popup/__stories__/Popup.stories.tsx +++ b/src/components/Popup/__stories__/Popup.stories.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Button} from '../../Button'; import {TextInput} from '../../TextInput'; import {useVirtualElementRef} from '../../utils/useVirtualElementRef'; -import {Popup, PopupPlacement, PopupProps} from '../Popup'; +import {Popup} from '../Popup'; +import type {PopupPlacement, PopupProps} from '../Popup'; export default { title: 'Components/Popup', diff --git a/src/components/Portal/__stories__/Portal.stories.tsx b/src/components/Portal/__stories__/Portal.stories.tsx index 2644a7e232..dea752f69e 100644 --- a/src/components/Portal/__stories__/Portal.stories.tsx +++ b/src/components/Portal/__stories__/Portal.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Portal, PortalProps} from '../Portal'; +import {Portal} from '../Portal'; +import type {PortalProps} from '../Portal'; export default { title: 'Components/Portal', diff --git a/src/components/Progress/Progress.tsx b/src/components/Progress/Progress.tsx index 994684a0b2..1d023cd332 100644 --- a/src/components/Progress/Progress.tsx +++ b/src/components/Progress/Progress.tsx @@ -1,4 +1,4 @@ -import React, {Component} from 'react'; +import React from 'react'; import _sumBy from 'lodash/sumBy'; @@ -62,7 +62,7 @@ interface ProgressWithStack extends ProgressGeneralProps, Partial { +export class Progress extends React.Component { static defaultProps: ProgressDefaultProps = { text: '', theme: 'default', @@ -102,11 +102,12 @@ export class Progress extends Component { } private getTheme(): ProgressTheme { - if (Progress.isProgressWithStack(this.props)) { + const progressProps: ProgressProps = this.props; + if (Progress.isProgressWithStack(progressProps)) { throw new Error('Unexpected behavior'); } - const {theme, colorStops, colorStopsValue, value} = this.props; + const {theme, colorStops, colorStopsValue, value} = progressProps; if (colorStops) { const matchingColorStopItem: ProgressColorStops | undefined = colorStops.find( @@ -129,10 +130,11 @@ export class Progress extends Component { } private renderContent() { - if (Progress.isProgressWithStack(this.props)) { - return this.renderStack(this.props); + const progressProps: ProgressProps = this.props; + if (Progress.isProgressWithStack(progressProps)) { + return this.renderStack(progressProps); } else { - return this.renderItem(this.props); + return this.renderItem(progressProps); } } diff --git a/src/components/Progress/__stories__/Progress.stories.tsx b/src/components/Progress/__stories__/Progress.stories.tsx index 151afe2f4a..c243b27bb1 100644 --- a/src/components/Progress/__stories__/Progress.stories.tsx +++ b/src/components/Progress/__stories__/Progress.stories.tsx @@ -1,8 +1,9 @@ -import React, {useEffect} from 'react'; +import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Progress, ProgressProps, ProgressTheme} from '../Progress'; +import {Progress} from '../Progress'; +import type {ProgressProps, ProgressTheme} from '../Progress'; export default { title: 'Components/Progress', @@ -15,7 +16,7 @@ export const Default = Template.bind({value: 50}); const ThemeTemplate: Story = (args) => { return ( - <> +
@@ -27,7 +28,7 @@ const ThemeTemplate: Story = (args) => {
- +
); }; @@ -35,7 +36,7 @@ export const Theme = ThemeTemplate.bind({}); const StackTemplate: Story = (args) => { return ( - <> + = (args) => { ]} />
- -
- +
); }; @@ -84,13 +76,13 @@ export const Stack = StackTemplate.bind({}); const ViewTemplate: Story = (args) => { return ( - <> +

- +
); }; @@ -101,7 +93,7 @@ const defaultState: {value: number; theme: ProgressTheme} = {value: 40, theme: ' const AnimationTemplate: Story = (args) => { const [progressState, setProgressState] = React.useState(defaultState); - useEffect(() => { + React.useEffect(() => { let timerId: number; function next(timeout = 2000) { diff --git a/src/components/PromoSheet/PromoSheet.tsx b/src/components/PromoSheet/PromoSheet.tsx index 1202bba7ef..a8fb035251 100644 --- a/src/components/PromoSheet/PromoSheet.tsx +++ b/src/components/PromoSheet/PromoSheet.tsx @@ -1,9 +1,10 @@ -import type {FC} from 'react'; -import React, {useCallback, useEffect, useMemo, useState} from 'react'; +import React from 'react'; -import {Button, ButtonProps} from '../Button'; +import {Button} from '../Button'; +import type {ButtonProps} from '../Button'; import {Icon} from '../Icon'; -import {Sheet, SheetProps} from '../Sheet'; +import {Sheet} from '../Sheet'; +import type {SheetProps} from '../Sheet'; import {CrossIcon} from '../icons/CrossIcon'; import {block} from '../utils/cn'; @@ -31,7 +32,7 @@ type ImageSizes = { height?: number; }; -export const PromoSheet: FC = ({ +export function PromoSheet({ title, message, actionText, @@ -44,12 +45,12 @@ export const PromoSheet: FC = ({ imageClassName, onActionClick, onClose, -}) => { - const [visible, setVisible] = useState(true); - const [loaded, setLoaded] = useState(!imageSrc); - const [imageSizes, setImageSizes] = useState(); +}: PromoSheetProps) { + const [visible, setVisible] = React.useState(true); + const [loaded, setLoaded] = React.useState(!imageSrc); + const [imageSizes, setImageSizes] = React.useState(); - const handleActionClick = useCallback>( + const handleActionClick = React.useCallback>( (event) => { setVisible(false); onActionClick?.(event); @@ -57,18 +58,18 @@ export const PromoSheet: FC = ({ [onActionClick], ); - const handleCloseClick = useCallback>(() => { + const handleCloseClick = React.useCallback>(() => { setVisible(false); }, []); - const closeButtonExtraProps = useMemo( + const closeButtonExtraProps = React.useMemo( () => ({ 'aria-label': closeText, }), [closeText], ); - useEffect(() => { + React.useEffect(() => { if (!imageSrc) { setLoaded(true); @@ -143,4 +144,4 @@ export const PromoSheet: FC = ({ ); -}; +} diff --git a/src/components/Radio/Radio.tsx b/src/components/Radio/Radio.tsx index 4d9906de3d..276bda4e43 100644 --- a/src/components/Radio/Radio.tsx +++ b/src/components/Radio/Radio.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import {ControlLabel, ControlLabelSize} from '../ControlLabel'; -import {ControlProps, DOMProps, QAProps} from '../types'; +import {ControlLabel} from '../ControlLabel'; +import type {ControlLabelSize} from '../ControlLabel'; +import type {ControlProps, DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {useRadio} from '../utils/useRadio'; diff --git a/src/components/Radio/__stories__/Radio.stories.tsx b/src/components/Radio/__stories__/Radio.stories.tsx index ae10759b27..f2a7937bdb 100644 --- a/src/components/Radio/__stories__/Radio.stories.tsx +++ b/src/components/Radio/__stories__/Radio.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Radio, RadioProps} from '../Radio'; +import {Radio} from '../Radio'; +import type {RadioProps} from '../Radio'; import {RadioShowcase} from './RadioShowcase'; diff --git a/src/components/Radio/__tests__/Radio.test.tsx b/src/components/Radio/__tests__/Radio.test.tsx index 0b7a606e06..5000bd1872 100644 --- a/src/components/Radio/__tests__/Radio.test.tsx +++ b/src/components/Radio/__tests__/Radio.test.tsx @@ -3,7 +3,8 @@ import React from 'react'; import {render, screen} from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import {Radio, RadioSize} from '../Radio'; +import {Radio} from '../Radio'; +import type {RadioSize} from '../Radio'; const qaId = 'radio-component'; const value = 'some'; diff --git a/src/components/RadioButton/RadioButton.tsx b/src/components/RadioButton/RadioButton.tsx index b2ff10101f..3731949556 100644 --- a/src/components/RadioButton/RadioButton.tsx +++ b/src/components/RadioButton/RadioButton.tsx @@ -1,6 +1,6 @@ -import React, {Ref, TransitionEventHandler, useCallback, useRef} from 'react'; +import React from 'react'; -import {ControlGroupOption, ControlGroupProps, DOMProps, QAProps} from '../types'; +import type {ControlGroupOption, ControlGroupProps, DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {useRadioGroup} from '../utils/useRadioGroup'; @@ -44,10 +44,10 @@ export const RadioButton = React.forwardRef(fu })); } - const plateRef = useRef(null); - const optionRef = useRef(); + const plateRef = React.useRef(null); + const optionRef = React.useRef(); - const handleCheckedOptionMount: Ref = useCallback( + const handleCheckedOptionMount: React.Ref = React.useCallback( (checkedOptionNode: HTMLLabelElement | null) => { if (!checkedOptionNode) { return; @@ -79,12 +79,10 @@ export const RadioButton = React.forwardRef(fu [], ); - const handlePlateTransitionEnd: TransitionEventHandler = useCallback( - (event) => { + const handlePlateTransitionEnd: React.TransitionEventHandler = + React.useCallback((event) => { event.currentTarget.hidden = true; - }, - [], - ); + }, []); const {containerProps, optionsProps} = useRadioGroup({...props, options}); diff --git a/src/components/RadioButton/RadioButtonOption.tsx b/src/components/RadioButton/RadioButtonOption.tsx index eb5618e4b3..4f892acbfb 100644 --- a/src/components/RadioButton/RadioButtonOption.tsx +++ b/src/components/RadioButton/RadioButtonOption.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {ControlProps} from '../types'; +import type {ControlProps} from '../types'; import {block} from '../utils/cn'; import {isIcon} from '../utils/common'; import {useRadio} from '../utils/useRadio'; diff --git a/src/components/RadioButton/__stories__/RadioButton.stories.tsx b/src/components/RadioButton/__stories__/RadioButton.stories.tsx index 962356e909..64568541d4 100644 --- a/src/components/RadioButton/__stories__/RadioButton.stories.tsx +++ b/src/components/RadioButton/__stories__/RadioButton.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {RadioButton, RadioButtonOption, RadioButtonProps} from '../RadioButton'; +import {RadioButton} from '../RadioButton'; +import type {RadioButtonOption, RadioButtonProps} from '../RadioButton'; import {RadioButtonShowcase} from './RadioButtonShowcase'; diff --git a/src/components/RadioButton/__stories__/RadioButtonShowcase.tsx b/src/components/RadioButton/__stories__/RadioButtonShowcase.tsx index 2e8566bb7b..4c4a022af0 100644 --- a/src/components/RadioButton/__stories__/RadioButtonShowcase.tsx +++ b/src/components/RadioButton/__stories__/RadioButtonShowcase.tsx @@ -6,7 +6,8 @@ import {Showcase} from '../../../demo/Showcase'; import {ShowcaseItem} from '../../../demo/ShowcaseItem'; import {Icon} from '../../Icon'; import {Alarm, Info} from '../../icons'; -import {RadioButton, RadioButtonOption} from '../RadioButton'; +import {RadioButton} from '../RadioButton'; +import type {RadioButtonOption} from '../RadioButton'; import './RadioButtonShowcase.scss'; diff --git a/src/components/RadioButton/__tests__/RadioButton.test.tsx b/src/components/RadioButton/__tests__/RadioButton.test.tsx index ddbf90ab08..28ac545be1 100644 --- a/src/components/RadioButton/__tests__/RadioButton.test.tsx +++ b/src/components/RadioButton/__tests__/RadioButton.test.tsx @@ -3,13 +3,8 @@ import React from 'react'; import {render, screen, within} from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { - RadioButton, - RadioButtonOption, - RadioButtonProps, - RadioButtonSize, - RadioButtonWidth, -} from '../'; +import {RadioButton} from '../'; +import type {RadioButtonOption, RadioButtonProps, RadioButtonSize, RadioButtonWidth} from '../'; import {block} from '../../../components/utils/cn'; const qaId = 'radio-button-component'; diff --git a/src/components/RadioGroup/RadioGroup.tsx b/src/components/RadioGroup/RadioGroup.tsx index 05986a6d84..8e18c85c96 100644 --- a/src/components/RadioGroup/RadioGroup.tsx +++ b/src/components/RadioGroup/RadioGroup.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import {Radio, RadioProps, RadioSize} from '../Radio'; -import {ControlGroupOption, ControlGroupProps, DOMProps, QAProps} from '../types'; +import {Radio} from '../Radio'; +import type {RadioProps, RadioSize} from '../Radio'; +import type {ControlGroupOption, ControlGroupProps, DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {useRadioGroup} from '../utils/useRadioGroup'; diff --git a/src/components/RadioGroup/__stories__/RadioGroup.stories.tsx b/src/components/RadioGroup/__stories__/RadioGroup.stories.tsx index 16b3f93bde..670e17e0f0 100644 --- a/src/components/RadioGroup/__stories__/RadioGroup.stories.tsx +++ b/src/components/RadioGroup/__stories__/RadioGroup.stories.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {ShowcaseItem} from '../../../demo/ShowcaseItem'; -import {RadioGroup, RadioGroupOption, RadioGroupProps} from '../RadioGroup'; +import {RadioGroup} from '../RadioGroup'; +import type {RadioGroupOption, RadioGroupProps} from '../RadioGroup'; import {RadioGroupShowcase} from './RadioGroupShowcase'; diff --git a/src/components/RadioGroup/__stories__/RadioGroupShowcase.tsx b/src/components/RadioGroup/__stories__/RadioGroupShowcase.tsx index 09e1f5624d..34dd1376a6 100644 --- a/src/components/RadioGroup/__stories__/RadioGroupShowcase.tsx +++ b/src/components/RadioGroup/__stories__/RadioGroupShowcase.tsx @@ -2,7 +2,8 @@ import React from 'react'; import {Showcase} from '../../../demo/Showcase'; import {ShowcaseItem} from '../../../demo/ShowcaseItem'; -import {RadioGroup, RadioGroupOption} from '../RadioGroup'; +import {RadioGroup} from '../RadioGroup'; +import type {RadioGroupOption} from '../RadioGroup'; export function RadioGroupShowcase() { const options: RadioGroupOption[] = [ diff --git a/src/components/RadioGroup/__tests__/RadioGroup.test.tsx b/src/components/RadioGroup/__tests__/RadioGroup.test.tsx index 8bf6ba0430..654268c489 100644 --- a/src/components/RadioGroup/__tests__/RadioGroup.test.tsx +++ b/src/components/RadioGroup/__tests__/RadioGroup.test.tsx @@ -3,7 +3,8 @@ import React from 'react'; import {render, screen, within} from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import {RadioGroup, RadioGroupDirection, RadioGroupOption, RadioGroupSize} from '../RadioGroup'; +import {RadioGroup} from '../RadioGroup'; +import type {RadioGroupDirection, RadioGroupOption, RadioGroupSize} from '../RadioGroup'; const qaId = 'radio-group-component'; diff --git a/src/components/Select/Select.tsx b/src/components/Select/Select.tsx index c3baaebf52..b2011c7549 100644 --- a/src/components/Select/Select.tsx +++ b/src/components/Select/Select.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {List} from '../List'; +import type {List} from '../List'; import {KeyCode} from '../constants'; import {useMobile} from '../mobile'; import type {CnMods} from '../utils/cn'; @@ -16,7 +16,6 @@ import {Option, OptionGroup} from './tech-components'; import type {SelectProps} from './types'; import type {SelectFilterRef} from './types-misc'; import { - FlattenOption, activateFirstClickableItem, findItemIndexByQuickSearch, getActiveItem, @@ -26,6 +25,7 @@ import { getOptionsFromChildren, getSelectedOptionsContent, } from './utils'; +import type {FlattenOption} from './utils'; import './Select.scss'; diff --git a/src/components/Select/__stories__/Select.stories.tsx b/src/components/Select/__stories__/Select.stories.tsx index 30e17faba2..a46bdcfffd 100644 --- a/src/components/Select/__stories__/Select.stories.tsx +++ b/src/components/Select/__stories__/Select.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Select, SelectProps} from '..'; +import {Select} from '..'; +import type {SelectProps} from '..'; import {SelectShowcase} from './SelectShowcase'; diff --git a/src/components/Select/__stories__/SelectShowcase.tsx b/src/components/Select/__stories__/SelectShowcase.tsx index ce0c2ff442..423d867fb8 100644 --- a/src/components/Select/__stories__/SelectShowcase.tsx +++ b/src/components/Select/__stories__/SelectShowcase.tsx @@ -2,10 +2,12 @@ import React from 'react'; import range from 'lodash/range'; -import {Select, SelectOption, SelectProps} from '..'; +import {Select} from '..'; +import type {SelectOption, SelectProps} from '..'; import {Button} from '../../Button'; import {ClipboardButton} from '../../ClipboardButton'; -import {RadioButton, RadioButtonOption} from '../../RadioButton'; +import {RadioButton} from '../../RadioButton'; +import type {RadioButtonOption} from '../../RadioButton'; import {TextInput} from '../../TextInput'; import {Tooltip} from '../../Tooltip'; import {block} from '../../utils/cn'; diff --git a/src/components/Select/__tests__/Select.popup.test.tsx b/src/components/Select/__tests__/Select.popup.test.tsx index 1eada85878..c4ad5452ee 100644 --- a/src/components/Select/__tests__/Select.popup.test.tsx +++ b/src/components/Select/__tests__/Select.popup.test.tsx @@ -1,6 +1,6 @@ import userEvent from '@testing-library/user-event'; -import {TextInputSize} from '../../TextInput'; +import type {TextInputSize} from '../../TextInput'; import {SelectQa} from '../constants'; import {DEFAULT_OPTIONS, TEST_QA, setup} from './utils'; diff --git a/src/components/Select/__tests__/utils.tsx b/src/components/Select/__tests__/utils.tsx index ff95987a20..20882a9f26 100644 --- a/src/components/Select/__tests__/utils.tsx +++ b/src/components/Select/__tests__/utils.tsx @@ -3,7 +3,8 @@ import React from 'react'; import {act, render} from '@testing-library/react'; import {range} from 'lodash'; -import {Select, SelectOption, SelectOptionGroup, SelectProps} from '..'; +import {Select} from '..'; +import type {SelectOption, SelectOptionGroup, SelectProps} from '..'; import {MobileProvider} from '../../mobile'; import {selectControlBlock, selectListBlock} from '../constants'; diff --git a/src/components/Select/components/SelectList/OptionWrap.tsx b/src/components/Select/components/SelectList/OptionWrap.tsx index 99733d902a..5fbf1c7354 100644 --- a/src/components/Select/components/SelectList/OptionWrap.tsx +++ b/src/components/Select/components/SelectList/OptionWrap.tsx @@ -3,7 +3,7 @@ import React from 'react'; import {Icon} from '../../../Icon'; import {Tick} from '../../../icons/Tick'; import {blockNew as block} from '../../../utils/cn'; -import {SelectOption, SelectProps} from '../../types'; +import type {SelectOption, SelectProps} from '../../types'; const b = block('select-list'); diff --git a/src/components/Select/components/SelectList/SelectList.tsx b/src/components/Select/components/SelectList/SelectList.tsx index df0b9d0b1d..19ab95842c 100644 --- a/src/components/Select/components/SelectList/SelectList.tsx +++ b/src/components/Select/components/SelectList/SelectList.tsx @@ -2,8 +2,9 @@ import React from 'react'; import {List} from '../../../List'; import {SelectQa, selectListBlock} from '../../constants'; -import {SelectOption, SelectProps} from '../../types'; -import {FlattenOption, getOptionsHeight, getPopupItemHeight} from '../../utils'; +import type {SelectOption, SelectProps} from '../../types'; +import {getOptionsHeight, getPopupItemHeight} from '../../utils'; +import type {FlattenOption} from '../../utils'; import {GroupLabel} from './GroupLabel'; import {OptionWrap} from './OptionWrap'; diff --git a/src/components/Select/constants.ts b/src/components/Select/constants.ts index 28c41ffd0b..b20c74355e 100644 --- a/src/components/Select/constants.ts +++ b/src/components/Select/constants.ts @@ -1,6 +1,6 @@ import {blockNew as block} from '../utils/cn'; -import {SelectProps} from './types'; +import type {SelectSize} from './types'; export const selectBlock = block('select'); @@ -8,7 +8,7 @@ export const selectControlBlock = block('select-control'); export const selectListBlock = block('select-list'); -export const SIZE_TO_ITEM_HEIGHT: Record, number> = { +export const SIZE_TO_ITEM_HEIGHT: Record = { s: 28, m: 28, l: 32, diff --git a/src/components/Select/store/types.ts b/src/components/Select/store/types.ts index 8920c737a1..2b4a6f7cb5 100644 --- a/src/components/Select/store/types.ts +++ b/src/components/Select/store/types.ts @@ -1,5 +1,3 @@ -import React from 'react'; - export type State = { filter: string; controlRect?: DOMRect; diff --git a/src/components/Select/tech-components.tsx b/src/components/Select/tech-components.tsx index ff9dea749d..9a271f34b1 100644 --- a/src/components/Select/tech-components.tsx +++ b/src/components/Select/tech-components.tsx @@ -1,6 +1,4 @@ -import React from 'react'; - -import {SelectOption, SelectOptionGroup} from './types'; +import type {SelectOption, SelectOptionGroup} from './types'; export const Option = ( _props: SelectOption, diff --git a/src/components/Select/types.ts b/src/components/Select/types.ts index c65251d46c..75dd06f70b 100644 --- a/src/components/Select/types.ts +++ b/src/components/Select/types.ts @@ -1,10 +1,8 @@ -import React from 'react'; +import type {TextInputPin, TextInputSize, TextInputView} from '../TextInput'; +import type {ControlGroupOption, ControlGroupProps, QAProps} from '../types'; +import type {UseOpenProps} from '../utils/useSelect/types'; -import {TextInputPin, TextInputSize, TextInputView} from '../TextInput'; -import {ControlGroupOption, ControlGroupProps, QAProps} from '../types'; -import {UseOpenProps} from '../utils/useSelect/types'; - -import {Option, OptionGroup} from './tech-components'; +import type {Option, OptionGroup} from './tech-components'; export type SelectRenderControlProps = { onClick: (e: React.MouseEvent) => void; @@ -29,6 +27,8 @@ export type SelectRenderOption = ( options: SelectRenderOptionViewParams, ) => React.ReactElement; +export type SelectSize = TextInputSize; + export type SelectProps = QAProps & Pick & UseOpenProps & { @@ -47,7 +47,7 @@ export type SelectProps = QAProps & getOptionHeight?: (option: SelectOption) => number; filterOption?: (option: SelectOption, filter: string) => boolean; view?: TextInputView; - size?: TextInputSize; + size?: SelectSize; pin?: TextInputPin; width?: 'auto' | 'max' | number; popupWidth?: number; diff --git a/src/components/Select/utils.tsx b/src/components/Select/utils.tsx index 076878a645..a20fa9f2e0 100644 --- a/src/components/Select/utils.tsx +++ b/src/components/Select/utils.tsx @@ -5,8 +5,8 @@ import type {List, ListItemData} from '../List'; import {KeyCode} from '../constants'; import {GROUP_ITEM_MARGIN_TOP, MOBILE_ITEM_HEIGHT, SIZE_TO_ITEM_HEIGHT} from './constants'; -import {Option, OptionGroup} from './tech-components'; -import type {SelectOption, SelectOptionGroup, SelectProps} from './types'; +import type {Option, OptionGroup} from './tech-components'; +import type {SelectOption, SelectOptionGroup, SelectProps, SelectSize} from './types'; // "disable" property needs to deactivate group title item in List type GroupTitleItem = {label: string; disabled: true}; @@ -30,7 +30,7 @@ export const getFlattenOptions = ( export const getPopupItemHeight = (args: { getOptionHeight?: SelectProps['getOptionHeight']; - size: NonNullable; + size: SelectSize; option: FlattenOption; index: number; mobile: boolean; diff --git a/src/components/SharePopover/ShareList/ShareList.tsx b/src/components/SharePopover/ShareList/ShareList.tsx index f73e3764c5..dbea17eac0 100644 --- a/src/components/SharePopover/ShareList/ShareList.tsx +++ b/src/components/SharePopover/ShareList/ShareList.tsx @@ -3,14 +3,14 @@ import React from 'react'; import {Button} from '../../Button'; import {CopyToClipboard, CopyToClipboardStatus} from '../../CopyToClipboard'; import {Icon} from '../../Icon'; -import {SVGIconData} from '../../Icon/types'; +import type {SVGIconData} from '../../Icon/types'; import {Link} from '../../icons'; import {block} from '../../utils/cn'; import {isOfType} from '../../utils/isOfType'; import {ShareListItem} from '../ShareListItem/ShareListItem'; -import {LayoutDirection, ShareOptions} from '../constants'; +import type {LayoutDirection, ShareOptions} from '../constants'; import i18n from '../i18n'; -import {ShareOptionsData} from '../models'; +import type {ShareOptionsData} from '../models'; import './ShareList.scss'; diff --git a/src/components/SharePopover/ShareListItem/ShareListItem.tsx b/src/components/SharePopover/ShareListItem/ShareListItem.tsx index 5313f85a06..53c9dc4f39 100644 --- a/src/components/SharePopover/ShareListItem/ShareListItem.tsx +++ b/src/components/SharePopover/ShareListItem/ShareListItem.tsx @@ -2,12 +2,12 @@ import React from 'react'; import {Button} from '../../Button'; import {Icon} from '../../Icon'; -import {SVGIconData} from '../../Icon/types'; +import type {SVGIconData} from '../../Icon/types'; import * as icons from '../../icons/shareOptions'; import {block} from '../../utils/cn'; import {LayoutDirection, ShareOptions} from '../constants'; import i18n from '../i18n'; -import {ShareOptionsData} from '../models'; +import type {ShareOptionsData} from '../models'; import './ShareListItem.scss'; diff --git a/src/components/SharePopover/SharePopover.tsx b/src/components/SharePopover/SharePopover.tsx index cadf2e3fd0..b1601852cf 100644 --- a/src/components/SharePopover/SharePopover.tsx +++ b/src/components/SharePopover/SharePopover.tsx @@ -1,13 +1,14 @@ import React from 'react'; import {Icon} from '../Icon'; -import {SVGIconData} from '../Icon/types'; +import type {SVGIconData} from '../Icon/types'; import {Popover} from '../Popover'; -import {PopupPlacement} from '../Popup'; +import type {PopupPlacement} from '../Popup'; import {Share} from '../icons'; import {block} from '../utils/cn'; -import {ShareList, ShareListDefaultProps, ShareListProps} from './ShareList/ShareList'; +import {ShareList} from './ShareList/ShareList'; +import type {ShareListDefaultProps, ShareListProps} from './ShareList/ShareList'; import {LayoutDirection} from './constants'; import './SharePopover.scss'; diff --git a/src/components/SharePopover/__stories__/SharePopover.stories.tsx b/src/components/SharePopover/__stories__/SharePopover.stories.tsx index 2709c64732..41e50f7060 100644 --- a/src/components/SharePopover/__stories__/SharePopover.stories.tsx +++ b/src/components/SharePopover/__stories__/SharePopover.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {ComponentMeta, ComponentStory} from '@storybook/react'; +import type {ComponentMeta, ComponentStory} from '@storybook/react'; import {SharePopover, sharePopoverDefaultProps} from '../SharePopover'; diff --git a/src/components/SharePopover/__stories__/Showcase/index.tsx b/src/components/SharePopover/__stories__/Showcase/index.tsx index e33a1b5f05..3ee0c3f77c 100644 --- a/src/components/SharePopover/__stories__/Showcase/index.tsx +++ b/src/components/SharePopover/__stories__/Showcase/index.tsx @@ -5,7 +5,7 @@ import {Icon} from '../../../Icon'; import {ShareList, ShareOptions, SharePopover} from '../../../SharePopover'; import {block} from '../../../utils/cn'; import {LayoutDirection} from '../../constants'; -import {ShareOptionsData} from '../../models'; +import type {ShareOptionsData} from '../../models'; import {Cloud, Custom, ShareArrowUp} from './icons'; diff --git a/src/components/Sheet/Sheet.tsx b/src/components/Sheet/Sheet.tsx index 332586cc14..4b3de6befc 100644 --- a/src/components/Sheet/Sheet.tsx +++ b/src/components/Sheet/Sheet.tsx @@ -2,7 +2,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import {QAProps} from '../types'; +import type {QAProps} from '../types'; import {SheetContentContainer} from './SheetContent'; import {sheetBlock} from './constants'; diff --git a/src/components/Sheet/SheetContent.tsx b/src/components/Sheet/SheetContent.tsx index 3a61b32561..37fe5ef54c 100644 --- a/src/components/Sheet/SheetContent.tsx +++ b/src/components/Sheet/SheetContent.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {History, Location, MobileContextProps, Platform, withMobile} from '../mobile'; +import {Platform, withMobile} from '../mobile'; +import type {History, Location, MobileContextProps} from '../mobile'; import {sheetBlock} from './constants'; import {VelocityTracker} from './utils'; diff --git a/src/components/Sheet/__stories__/DefaultShowcase/DefaultShowcase.stories.tsx b/src/components/Sheet/__stories__/DefaultShowcase/DefaultShowcase.stories.tsx index 4f49516e6c..686bbd8944 100644 --- a/src/components/Sheet/__stories__/DefaultShowcase/DefaultShowcase.stories.tsx +++ b/src/components/Sheet/__stories__/DefaultShowcase/DefaultShowcase.stories.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import {Story} from '@storybook/react'; +import type {Story} from '@storybook/react'; import block from 'bem-cn-lite'; import {Button, Checkbox} from '../../../'; -import {Sheet, SheetProps} from '../../Sheet'; +import {Sheet} from '../../Sheet'; +import type {SheetProps} from '../../Sheet'; import './DefaultShowcase.scss'; diff --git a/src/components/Sheet/__stories__/Sheet.stories.tsx b/src/components/Sheet/__stories__/Sheet.stories.tsx index 409939a33d..6bb4d563c6 100644 --- a/src/components/Sheet/__stories__/Sheet.stories.tsx +++ b/src/components/Sheet/__stories__/Sheet.stories.tsx @@ -1,4 +1,4 @@ -import {Meta} from '@storybook/react'; +import type {Meta} from '@storybook/react'; import {Sheet} from '../Sheet'; diff --git a/src/components/Sheet/__stories__/WithMenuShowcase/WithMenuShowcase.stories.tsx b/src/components/Sheet/__stories__/WithMenuShowcase/WithMenuShowcase.stories.tsx index 53010fa2e6..1d193f9804 100644 --- a/src/components/Sheet/__stories__/WithMenuShowcase/WithMenuShowcase.stories.tsx +++ b/src/components/Sheet/__stories__/WithMenuShowcase/WithMenuShowcase.stories.tsx @@ -1,17 +1,18 @@ -import React, {useState} from 'react'; +import React from 'react'; -import {Story} from '@storybook/react'; +import type {Story} from '@storybook/react'; import block from 'bem-cn-lite'; import {Button, Menu} from '../../../'; -import {Sheet, SheetProps} from '../../Sheet'; +import {Sheet} from '../../Sheet'; +import type {SheetProps} from '../../Sheet'; import './WithMenuShowcase.scss'; const b = block('sheet-stories-with-menu-showcase'); export const WithMenuShowcase: Story = (args: SheetProps) => { - const [visible, setVisible] = useState(false); + const [visible, setVisible] = React.useState(false); return (
diff --git a/src/components/Skeleton/Skeleton.tsx b/src/components/Skeleton/Skeleton.tsx index c939537e56..172dc7d0c2 100644 --- a/src/components/Skeleton/Skeleton.tsx +++ b/src/components/Skeleton/Skeleton.tsx @@ -1,4 +1,4 @@ -import React, {HTMLAttributes} from 'react'; +import React from 'react'; import {block} from '../utils/cn'; @@ -7,7 +7,7 @@ import './Skeleton.scss'; const b = block('skeleton'); export interface SkeletonProps - extends Pick, 'className' | 'style'> {} + extends Pick, 'className' | 'style'> {} export function Skeleton({className, style}: SkeletonProps) { return
; diff --git a/src/components/Skeleton/__stories__/Skeleton.stories.tsx b/src/components/Skeleton/__stories__/Skeleton.stories.tsx index c8e5350618..1b0b01c5e4 100644 --- a/src/components/Skeleton/__stories__/Skeleton.stories.tsx +++ b/src/components/Skeleton/__stories__/Skeleton.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Skeleton, SkeletonProps} from '../Skeleton'; +import {Skeleton} from '../Skeleton'; +import type {SkeletonProps} from '../Skeleton'; import {SkeletonShowcase} from './SkeletonShowcase'; diff --git a/src/components/Skeleton/__stories__/SkeletonShowcase.tsx b/src/components/Skeleton/__stories__/SkeletonShowcase.tsx index 6c01391279..fa1a89a0b4 100644 --- a/src/components/Skeleton/__stories__/SkeletonShowcase.tsx +++ b/src/components/Skeleton/__stories__/SkeletonShowcase.tsx @@ -65,12 +65,12 @@ function SkeletonListShowcase() { export function SkeletonShowcase() { return ( - <> +

Skeleton

List

Styled with inline prop

- +
); } diff --git a/src/components/Spin/Spin.tsx b/src/components/Spin/Spin.tsx index d950440d7d..4b8e2b3a3b 100644 --- a/src/components/Spin/Spin.tsx +++ b/src/components/Spin/Spin.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import './Spin.scss'; diff --git a/src/components/Spin/__stories__/Spin.stories.tsx b/src/components/Spin/__stories__/Spin.stories.tsx index 8a38871f7e..2ba86575c5 100644 --- a/src/components/Spin/__stories__/Spin.stories.tsx +++ b/src/components/Spin/__stories__/Spin.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Spin, SpinProps} from '../Spin'; +import {Spin} from '../Spin'; +import type {SpinProps} from '../Spin'; export default { title: 'Components/Spin', diff --git a/src/components/StoreBadge/StoreBadge.tsx b/src/components/StoreBadge/StoreBadge.tsx index 2394526e2d..fcf5b3b6cd 100644 --- a/src/components/StoreBadge/StoreBadge.tsx +++ b/src/components/StoreBadge/StoreBadge.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {Lang} from '../index'; -import {Platform} from '../mobile/constants'; +import type {Platform} from '../mobile/constants'; import {block} from '../utils/cn'; import './StoreBadge.scss'; diff --git a/src/components/StoreBadge/__stories__/StoreBadge.stories.tsx b/src/components/StoreBadge/__stories__/StoreBadge.stories.tsx index b762574879..d7870aa5f5 100644 --- a/src/components/StoreBadge/__stories__/StoreBadge.stories.tsx +++ b/src/components/StoreBadge/__stories__/StoreBadge.stories.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Platform} from '../../mobile/constants'; -import {StoreBadge, StoreBadgeProps} from '../StoreBadge'; +import {StoreBadge} from '../StoreBadge'; +import type {StoreBadgeProps} from '../StoreBadge'; export default { title: 'Components/StoreBadge', diff --git a/src/components/Stories/Stories.tsx b/src/components/Stories/Stories.tsx index 25ac3fc658..0566099989 100644 --- a/src/components/Stories/Stories.tsx +++ b/src/components/Stories/Stories.tsx @@ -1,14 +1,12 @@ import React from 'react'; -import {Modal, ModalCloseReason} from '../Modal'; +import {Modal} from '../Modal'; +import type {ModalCloseReason} from '../Modal'; import {block} from '../utils/cn'; -import { - IndexType, - StoriesLayout, - StoriesLayoutProps, -} from './components/StoriesLayout/StoriesLayout'; -import {StoriesItem} from './types'; +import {IndexType, StoriesLayout} from './components/StoriesLayout/StoriesLayout'; +import type {StoriesLayoutProps} from './components/StoriesLayout/StoriesLayout'; +import type {StoriesItem} from './types'; import './Stories.scss'; diff --git a/src/components/Stories/__stories__/Stories.stories.tsx b/src/components/Stories/__stories__/Stories.stories.tsx index 0869ae568b..b6df8337dd 100644 --- a/src/components/Stories/__stories__/Stories.stories.tsx +++ b/src/components/Stories/__stories__/Stories.stories.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react/types-6-0'; +import type {Meta, Story} from '@storybook/react/types-6-0'; import {Button} from '../../Button'; -import {Stories, StoriesProps} from '../Stories'; -import {StoriesItem} from '../types'; +import {Stories} from '../Stories'; +import type {StoriesProps} from '../Stories'; +import type {StoriesItem} from '../types'; export default { title: 'Components/Stories', diff --git a/src/components/Stories/components/ImageView/ImageView.tsx b/src/components/Stories/components/ImageView/ImageView.tsx index e44c1ed09e..dd2e9814aa 100644 --- a/src/components/Stories/components/ImageView/ImageView.tsx +++ b/src/components/Stories/components/ImageView/ImageView.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {block} from '../../../utils/cn'; -import {StoriesItemMedia} from '../../types'; +import type {StoriesItemMedia} from '../../types'; import './ImageView.scss'; diff --git a/src/components/Stories/components/MediaRenderer/MediaRenderer.tsx b/src/components/Stories/components/MediaRenderer/MediaRenderer.tsx index 0a5358cfc1..81fad6fc4a 100644 --- a/src/components/Stories/components/MediaRenderer/MediaRenderer.tsx +++ b/src/components/Stories/components/MediaRenderer/MediaRenderer.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {ImageView, VideoView} from '../../components'; -import {StoriesItemMedia} from '../../types'; +import type {StoriesItemMedia} from '../../types'; export interface MediaRendererProps { media: StoriesItemMedia; diff --git a/src/components/Stories/components/StoriesLayout/StoriesLayout.tsx b/src/components/Stories/components/StoriesLayout/StoriesLayout.tsx index 8c73a6eaf0..3b3cc1034b 100644 --- a/src/components/Stories/components/StoriesLayout/StoriesLayout.tsx +++ b/src/components/Stories/components/StoriesLayout/StoriesLayout.tsx @@ -1,12 +1,13 @@ import React from 'react'; import {MediaRenderer} from '..'; -import {Button, ButtonProps} from '../../../Button'; +import {Button} from '../../../Button'; +import type {ButtonProps} from '../../../Button'; import {ButtonClose} from '../../../Dialog/ButtonClose/ButtonClose'; import {Link} from '../../../Link'; import {block} from '../../../utils/cn'; import i18n from '../../i18n'; -import {StoriesItem} from '../../types'; +import type {StoriesItem} from '../../types'; import './StoriesLayout.scss'; diff --git a/src/components/Stories/components/VideoView/VideoView.tsx b/src/components/Stories/components/VideoView/VideoView.tsx index 2156809c60..02dc024a18 100644 --- a/src/components/Stories/components/VideoView/VideoView.tsx +++ b/src/components/Stories/components/VideoView/VideoView.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {block} from '../../../utils/cn'; -import {StoriesItemMedia} from '../../types'; +import type {StoriesItemMedia} from '../../types'; import './VideoView.scss'; diff --git a/src/components/StoriesGroup/StoriesGroup.tsx b/src/components/StoriesGroup/StoriesGroup.tsx index 498b75537b..8664c26c82 100644 --- a/src/components/StoriesGroup/StoriesGroup.tsx +++ b/src/components/StoriesGroup/StoriesGroup.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import {Modal, ModalCloseReason} from '../Modal'; +import {Modal} from '../Modal'; +import type {ModalCloseReason} from '../Modal'; import {IndexType, StoriesLayout} from '../Stories/components/StoriesLayout/StoriesLayout'; import {block} from '../utils/cn'; import {StoriesPreview} from './components'; -import {StoriesGroupItem} from './types'; +import type {StoriesGroupItem} from './types'; import './StoriesGroup.scss'; diff --git a/src/components/StoriesGroup/__stories__/StoriesGroup.stories.tsx b/src/components/StoriesGroup/__stories__/StoriesGroup.stories.tsx index 39e15e372f..b04699fbef 100644 --- a/src/components/StoriesGroup/__stories__/StoriesGroup.stories.tsx +++ b/src/components/StoriesGroup/__stories__/StoriesGroup.stories.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react/types-6-0'; +import type {Meta, Story} from '@storybook/react/types-6-0'; import {Button} from '../../Button'; -import {StoriesGroup, StoriesGroupProps} from '../../StoriesGroup/StoriesGroup'; -import {StoriesGroupItem} from '../types'; +import {StoriesGroup} from '../../StoriesGroup/StoriesGroup'; +import type {StoriesGroupProps} from '../../StoriesGroup/StoriesGroup'; +import type {StoriesGroupItem} from '../types'; export default { title: 'Components/StoriesGroup', diff --git a/src/components/StoriesGroup/components/StoriesPreview/StoriesPreview.tsx b/src/components/StoriesGroup/components/StoriesPreview/StoriesPreview.tsx index 9941986712..9e6f864d67 100644 --- a/src/components/StoriesGroup/components/StoriesPreview/StoriesPreview.tsx +++ b/src/components/StoriesGroup/components/StoriesPreview/StoriesPreview.tsx @@ -1,13 +1,14 @@ import React from 'react'; -import {Button, ButtonProps} from '../../../Button'; +import {Button} from '../../../Button'; +import type {ButtonProps} from '../../../Button'; import {Icon} from '../../../Icon/Icon'; -import {ModalCloseReason} from '../../../Modal'; +import type {ModalCloseReason} from '../../../Modal'; import {MediaRenderer} from '../../../Stories/components'; -import {StoriesItemMedia} from '../../../Stories/types'; +import type {StoriesItemMedia} from '../../../Stories/types'; import {Chevron} from '../../../icons/Chevron'; import {block} from '../../../utils/cn'; -import {StoriesGroupItem} from '../../types'; +import type {StoriesGroupItem} from '../../types'; import './StoriesPreview.scss'; diff --git a/src/components/StoriesGroup/types.ts b/src/components/StoriesGroup/types.ts index 2479774c8d..48a4f2eee4 100644 --- a/src/components/StoriesGroup/types.ts +++ b/src/components/StoriesGroup/types.ts @@ -1,4 +1,4 @@ -import {StoriesItem, StoriesItemMedia} from '../Stories/types'; +import type {StoriesItem, StoriesItemMedia} from '../Stories/types'; export interface StoriesGroupItem { items: StoriesItem[]; diff --git a/src/components/Switch/Switch.tsx b/src/components/Switch/Switch.tsx index 73791623d1..3b190446c1 100644 --- a/src/components/Switch/Switch.tsx +++ b/src/components/Switch/Switch.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import {ControlLabel, ControlLabelSize} from '../ControlLabel'; -import {ControlProps, DOMProps, QAProps} from '../types'; +import {ControlLabel} from '../ControlLabel'; +import type {ControlLabelSize} from '../ControlLabel'; +import type {ControlProps, DOMProps, QAProps} from '../types'; import {block} from '../utils/cn'; import {useCheckbox} from '../utils/useCheckbox'; diff --git a/src/components/Switch/__stories__/Switch.stories.tsx b/src/components/Switch/__stories__/Switch.stories.tsx index 059f80e505..1704f36219 100644 --- a/src/components/Switch/__stories__/Switch.stories.tsx +++ b/src/components/Switch/__stories__/Switch.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Switch, SwitchProps} from '../Switch'; +import {Switch} from '../Switch'; +import type {SwitchProps} from '../Switch'; import {SwitchShowcase} from './SwitchShowcase'; @@ -15,25 +16,25 @@ const DefaultTemplate: Story = (args) => ; export const Default = DefaultTemplate.bind({}); const SizeTemplate: Story = (args) => ( - <> + m: l: - + ); export const Size = SizeTemplate.bind({}); const DisabledTemplate: Story = (args) => ( - <> + - + ); export const Disabled = DisabledTemplate.bind({}); const LabelTemplate: Story = (args) => ( - <> + @@ -46,16 +47,16 @@ const LabelTemplate: Story = (args) => (
- + ); export const Label = LabelTemplate.bind({}); const ControlledTemplate: Story = (args) => ( - <> + - + ); export const Controlled = ControlledTemplate.bind({}); diff --git a/src/components/Table/Table.tsx b/src/components/Table/Table.tsx index 90c762a63d..06632bc993 100644 --- a/src/components/Table/Table.tsx +++ b/src/components/Table/Table.tsx @@ -5,7 +5,7 @@ import _has from 'lodash/has'; import _isNumber from 'lodash/isNumber'; import ResizeObserver from 'resize-observer-polyfill'; -import {QAProps} from '../types'; +import type {QAProps} from '../types'; import {block} from '../utils/cn'; import i18n from './i18n'; diff --git a/src/components/Table/__stories__/Adaptive.tsx b/src/components/Table/__stories__/Adaptive.tsx index 9403a9d50e..5a871d82a9 100644 --- a/src/components/Table/__stories__/Adaptive.tsx +++ b/src/components/Table/__stories__/Adaptive.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {Story} from '@storybook/react'; +import type {Story} from '@storybook/react'; import _cloneDeep from 'lodash/cloneDeep'; -import {Table, TableProps} from '../Table'; +import {Table} from '../Table'; +import type {TableProps} from '../Table'; import {columns as defaultColumns} from './utils'; diff --git a/src/components/Table/__stories__/Table.stories.tsx b/src/components/Table/__stories__/Table.stories.tsx index 5c0104ba1f..7762f4dc2f 100644 --- a/src/components/Table/__stories__/Table.stories.tsx +++ b/src/components/Table/__stories__/Table.stories.tsx @@ -1,16 +1,16 @@ import React from 'react'; import {action} from '@storybook/addon-actions'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import _cloneDeep from 'lodash/cloneDeep'; -import {TableAction, TableSettingsData} from '..'; +import type {TableAction, TableSettingsData} from '..'; import {Icon} from '../../Icon'; import {GearIcon} from '../../icons'; -import {Table, TableProps} from '../Table'; +import {Table} from '../Table'; +import type {TableProps} from '../Table'; import { - DataItem, TableWithAction, TableWithCopy, TableWithSelection, @@ -19,6 +19,7 @@ import { columns, data, } from './utils'; +import type {DataItem} from './utils'; export default { title: 'Components/Table', diff --git a/src/components/Table/__stories__/utils.tsx b/src/components/Table/__stories__/utils.tsx index 15f0b76419..8d8757cb53 100644 --- a/src/components/Table/__stories__/utils.tsx +++ b/src/components/Table/__stories__/utils.tsx @@ -1,5 +1,6 @@ import {withTableSelection} from '..'; -import {Table, TableColumnConfig} from '../Table'; +import {Table} from '../Table'; +import type {TableColumnConfig} from '../Table'; import {withTableActions, withTableCopy, withTableSettings, withTableSorting} from '../hoc'; export interface DataItem { diff --git a/src/components/Table/__tests__/utils.ts b/src/components/Table/__tests__/utils.ts index b09b2a6853..b81b3ca3ef 100644 --- a/src/components/Table/__tests__/utils.ts +++ b/src/components/Table/__tests__/utils.ts @@ -1,4 +1,4 @@ -import {TableColumnConfig} from '../Table'; +import type {TableColumnConfig} from '../Table'; export interface DataItem { name: string; diff --git a/src/components/Table/hoc/withTableActions/withTableActions.tsx b/src/components/Table/hoc/withTableActions/withTableActions.tsx index 48073ee7e7..e4cdc1332d 100644 --- a/src/components/Table/hoc/withTableActions/withTableActions.tsx +++ b/src/components/Table/hoc/withTableActions/withTableActions.tsx @@ -4,12 +4,13 @@ import _memoize from 'lodash/memoize'; import {Button} from '../../../Button'; import {Icon} from '../../../Icon'; -import {Menu, MenuItemProps} from '../../../Menu'; +import {Menu} from '../../../Menu'; +import type {MenuItemProps} from '../../../Menu'; import {Popup} from '../../../Popup'; import {DotsIcon} from '../../../icons/DotsIcon'; import {block} from '../../../utils/cn'; import {getComponentName} from '../../../utils/getComponentName'; -import {TableColumnConfig, TableDataItem, TableProps} from '../../Table'; +import type {TableColumnConfig, TableDataItem, TableProps} from '../../Table'; import './withTableActions.scss'; @@ -251,7 +252,7 @@ export function withTableActions( `.${BUTTON_CLASSNAME}, .${BUTTON_CLASSNAME} *`, ) ) { - return; + return undefined; } return onRowClick(item, index, event); diff --git a/src/components/Table/hoc/withTableCopy/withTableCopy.tsx b/src/components/Table/hoc/withTableCopy/withTableCopy.tsx index 4ba5f31b15..5ef181ca49 100644 --- a/src/components/Table/hoc/withTableCopy/withTableCopy.tsx +++ b/src/components/Table/hoc/withTableCopy/withTableCopy.tsx @@ -5,7 +5,8 @@ import _memoize from 'lodash/memoize'; import {ClipboardButton} from '../../../ClipboardButton'; import {block} from '../../../utils/cn'; import {getComponentName} from '../../../utils/getComponentName'; -import {Table, TableColumnConfig, TableDataItem, TableProps} from '../../Table'; +import {Table} from '../../Table'; +import type {TableColumnConfig, TableDataItem, TableProps} from '../../Table'; import './withTableCopy.scss'; @@ -108,7 +109,7 @@ export function withTableCopy( `.${buttonClassName}, .${buttonClassName} *`, ) ) { - return; + return undefined; } return onRowClick(item, index, event); diff --git a/src/components/Table/hoc/withTableSelection/withTableSelection.tsx b/src/components/Table/hoc/withTableSelection/withTableSelection.tsx index 41177a818c..2de9321867 100644 --- a/src/components/Table/hoc/withTableSelection/withTableSelection.tsx +++ b/src/components/Table/hoc/withTableSelection/withTableSelection.tsx @@ -9,7 +9,8 @@ import _without from 'lodash/without'; import {Checkbox} from '../../../Checkbox'; import {block} from '../../../utils/cn'; import {getComponentName} from '../../../utils/getComponentName'; -import {Table, TableColumnConfig, TableDataItem, TableProps} from '../../Table'; +import {Table} from '../../Table'; +import type {TableColumnConfig, TableDataItem, TableProps} from '../../Table'; import './withTableSelection.scss'; diff --git a/src/components/Table/hoc/withTableSettings/TableColumnSetup/TableColumnSetup.tsx b/src/components/Table/hoc/withTableSettings/TableColumnSetup/TableColumnSetup.tsx index a1ca4520fa..1e2d4b6cba 100644 --- a/src/components/Table/hoc/withTableSettings/TableColumnSetup/TableColumnSetup.tsx +++ b/src/components/Table/hoc/withTableSettings/TableColumnSetup/TableColumnSetup.tsx @@ -1,13 +1,13 @@ import React from 'react'; -import {PopperPlacement} from '../../../../../components/utils/usePopper'; +import type {PopperPlacement} from '../../../../../components/utils/usePopper'; import {Button} from '../../../../Button'; import {Icon} from '../../../../Icon'; import {List} from '../../../../List'; import {Popup} from '../../../../Popup'; import {GearIcon} from '../../../../icons/GearIcon'; import {block} from '../../../../utils/cn'; -import {TableColumnSetupItem} from '../withTableSettings'; +import type {TableColumnSetupItem} from '../withTableSettings'; import {LockIcon} from './LockIcon'; import {TickIcon} from './TickIcon'; diff --git a/src/components/Table/hoc/withTableSettings/withTableSettings.tsx b/src/components/Table/hoc/withTableSettings/withTableSettings.tsx index d1e7cac66a..39bf4b05f9 100644 --- a/src/components/Table/hoc/withTableSettings/withTableSettings.tsx +++ b/src/components/Table/hoc/withTableSettings/withTableSettings.tsx @@ -9,7 +9,7 @@ import {Icon} from '../../../Icon'; import {GearIcon} from '../../../icons/GearIcon'; import {block} from '../../../utils/cn'; import {getComponentName} from '../../../utils/getComponentName'; -import {TableColumnConfig, TableDataItem, TableProps} from '../../Table'; +import type {TableColumnConfig, TableDataItem, TableProps} from '../../Table'; import {actionsColumnId, enhanceSystemColumn} from '../withTableActions/withTableActions'; import {selectionColumnId} from '../withTableSelection/withTableSelection'; @@ -127,13 +127,13 @@ export function withTableSettings( ): React.ComponentType & WithTableSettingsProps & E> { const componentName = getComponentName(TableComponent); - const TableWithSettings: React.FC & WithTableSettingsProps & E> = ({ + const TableWithSettings = ({ updateSettings, settings, columns, settingsPopupWidth, ...restTableProps - }) => { + }: TableProps & WithTableSettingsProps & E) => { const actualItems = React.useMemo( () => getActualItems(columns, settings || []), [columns, settings], diff --git a/src/components/Table/hoc/withTableSorting/withTableSorting.tsx b/src/components/Table/hoc/withTableSorting/withTableSorting.tsx index 5121383b1b..20fd5dcd3b 100644 --- a/src/components/Table/hoc/withTableSorting/withTableSorting.tsx +++ b/src/components/Table/hoc/withTableSorting/withTableSorting.tsx @@ -4,7 +4,8 @@ import _memoize from 'lodash/memoize'; import {block} from '../../../utils/cn'; import {getComponentName} from '../../../utils/getComponentName'; -import {Table, TableColumnConfig, TableDataItem, TableProps} from '../../Table'; +import {Table} from '../../Table'; +import type {TableColumnConfig, TableDataItem, TableProps} from '../../Table'; import {SortIndicator} from './SortIndicator/SortIndicator'; diff --git a/src/components/Tabs/Tabs.tsx b/src/components/Tabs/Tabs.tsx index c8f8574a01..d433ebc989 100644 --- a/src/components/Tabs/Tabs.tsx +++ b/src/components/Tabs/Tabs.tsx @@ -1,10 +1,11 @@ -import React, {forwardRef, useMemo} from 'react'; +import React from 'react'; -import {QAProps} from '../types'; +import type {QAProps} from '../types'; import {block} from '../utils/cn'; import {TabsContext} from './TabsContext'; -import {TabsItem, TabsItemProps as TabsItemInternalProps} from './TabsItem'; +import {TabsItem} from './TabsItem'; +import type {TabsItemProps as TabsItemInternalProps} from './TabsItem'; import './Tabs.scss'; @@ -62,7 +63,7 @@ const getActiveTabId = ( const emptyTabsList: TabsItemProps[] = []; -const TabsComponent = forwardRef( +const TabsComponent = React.forwardRef( ( { direction = TabsDirection.Horizontal, @@ -80,9 +81,9 @@ const TabsComponent = forwardRef( ) => { const activeTabId = getActiveTabId(activeTab, allowNotSelected, items); - const tabsContextValue = useMemo(() => ({activeTabId}), [activeTabId]); + const tabsContextValue = React.useMemo(() => ({activeTabId}), [activeTabId]); - const tabs = useMemo(() => { + const tabs = React.useMemo(() => { const handleTabClick = (tabId: string) => { if (onSelectTab) { onSelectTab(tabId); diff --git a/src/components/Tabs/TabsContext.ts b/src/components/Tabs/TabsContext.ts index 680deec7bb..6dad7fc6ea 100644 --- a/src/components/Tabs/TabsContext.ts +++ b/src/components/Tabs/TabsContext.ts @@ -1,6 +1,6 @@ -import {createContext} from 'react'; +import React from 'react'; -export const TabsContext = createContext<{activeTabId: string | undefined}>({ +export const TabsContext = React.createContext<{activeTabId: string | undefined}>({ activeTabId: undefined, }); diff --git a/src/components/Tabs/TabsItem.tsx b/src/components/Tabs/TabsItem.tsx index 446adcdd77..2267196cca 100644 --- a/src/components/Tabs/TabsItem.tsx +++ b/src/components/Tabs/TabsItem.tsx @@ -1,6 +1,7 @@ -import React, {HTMLProps, useContext, useMemo} from 'react'; +import React from 'react'; -import {Label, LabelProps} from '../Label'; +import {Label} from '../Label'; +import type {LabelProps} from '../Label'; import {block} from '../utils/cn'; import {TabsContext} from './TabsContext'; @@ -8,7 +9,7 @@ import {TabsContext} from './TabsContext'; const b = block('tabs'); type ExtraProps = Omit< - HTMLProps, + React.HTMLProps, | 'role' | 'aria-selected' | 'aria-disabled' @@ -38,7 +39,7 @@ export interface TabsItemProps { onClick(tabId: string): void; } -export const TabsItem: React.FC = ({ +export function TabsItem({ id, className, title, @@ -52,8 +53,8 @@ export const TabsItem: React.FC = ({ hasOverflow, extraProps, onClick, -}) => { - const {activeTabId} = useContext(TabsContext); +}: TabsItemProps) { + const {activeTabId} = React.useContext(TabsContext); const isActive = typeof active === 'boolean' ? active : activeTabId === id; const handleClick = () => { @@ -66,7 +67,7 @@ export const TabsItem: React.FC = ({ } }; - const htmlTitle = useMemo(() => { + const htmlTitle = React.useMemo(() => { if (hint !== undefined) { return hint; } @@ -107,6 +108,6 @@ export const TabsItem: React.FC = ({ {meta &&
{meta}
} ); -}; +} TabsItem.displayName = 'Tabs.Item'; diff --git a/src/components/Tabs/__stories__/Tabs.stories.tsx b/src/components/Tabs/__stories__/Tabs.stories.tsx index 29e3b86a3f..62772ab1b0 100644 --- a/src/components/Tabs/__stories__/Tabs.stories.tsx +++ b/src/components/Tabs/__stories__/Tabs.stories.tsx @@ -1,9 +1,10 @@ -import React, {FC} from 'react'; +import React from 'react'; import {useArgs} from '@storybook/client-api'; -import type {ComponentMeta, ComponentStory} from '@storybook/react'; +import type {ComponentMeta, Story} from '@storybook/react'; -import {Tabs, TabsItemProps, TabsProps} from '../Tabs'; +import {Tabs} from '../Tabs'; +import type {TabsItemProps, TabsProps} from '../Tabs'; import {getTabsMock} from './getTabsMock'; import type {StoryParams} from './types'; @@ -43,9 +44,7 @@ export default { }, } as ComponentMeta; -type StoriesComponent = FC; - -const Template: ComponentStory = ({ +const Template: Story = ({ withIcon, withCounter, withLabel, @@ -75,7 +74,7 @@ WithWrapTo.args = { }, }; -export const WithChildren: ComponentStory = ({ +export const WithChildren: Story = ({ withIcon, withCounter, withLabel, diff --git a/src/components/Tabs/__tests__/Tabs.test.tsx b/src/components/Tabs/__tests__/Tabs.test.tsx index bafa3581b4..a1b9684766 100644 --- a/src/components/Tabs/__tests__/Tabs.test.tsx +++ b/src/components/Tabs/__tests__/Tabs.test.tsx @@ -3,7 +3,8 @@ import React from 'react'; import {render, screen} from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import {Tabs, TabsDirection, TabsItemProps, TabsSize} from '../Tabs'; +import {Tabs, TabsDirection} from '../Tabs'; +import type {TabsItemProps, TabsSize} from '../Tabs'; const tabId1 = 'tab1'; const tabTitle1 = 'Tab 1 title'; diff --git a/src/components/Text/Text.tsx b/src/components/Text/Text.tsx index c421bdfb83..4174a5dadb 100644 --- a/src/components/Text/Text.tsx +++ b/src/components/Text/Text.tsx @@ -1,7 +1,9 @@ import React from 'react'; -import {ColorTextBaseProps, colorText} from './colorText/colorText'; -import {TextBaseProps, text} from './text/text'; +import {colorText} from './colorText/colorText'; +import type {ColorTextBaseProps} from './colorText/colorText'; +import {text} from './text/text'; +import type {TextBaseProps} from './text/text'; export interface TextProps extends TextBaseProps, ColorTextBaseProps { /** diff --git a/src/components/Text/__stories__/Text.stories.tsx b/src/components/Text/__stories__/Text.stories.tsx index 1a6927f4cf..3cc8fdb650 100644 --- a/src/components/Text/__stories__/Text.stories.tsx +++ b/src/components/Text/__stories__/Text.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Text, TextProps, colorText, text} from '../.'; +import {Text, colorText, text} from '../.'; +import type {TextProps} from '../.'; export default { title: 'Components/Text', diff --git a/src/components/TextInput/InputControl/InputControl.tsx b/src/components/TextInput/InputControl/InputControl.tsx index c0cafe21b7..7837f5e8f0 100644 --- a/src/components/TextInput/InputControl/InputControl.tsx +++ b/src/components/TextInput/InputControl/InputControl.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {block} from '../../utils/cn'; -import {TextInputProps} from '../types'; +import type {TextInputProps} from '../types'; export interface InputControlProps extends Omit, diff --git a/src/components/TextInput/TextAreaControl/TextAreaControl.tsx b/src/components/TextInput/TextAreaControl/TextAreaControl.tsx index aa522b06a5..6560bd4241 100644 --- a/src/components/TextInput/TextAreaControl/TextAreaControl.tsx +++ b/src/components/TextInput/TextAreaControl/TextAreaControl.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {block} from '../../utils/cn'; import {useForkRef} from '../../utils/useForkRef'; -import {TextInputProps} from '../types'; +import type {TextInputProps} from '../types'; export interface TextAreaControlProps extends Omit, diff --git a/src/components/TextInput/TextInput.tsx b/src/components/TextInput/TextInput.tsx index d8193b55e4..22b72f4836 100644 --- a/src/components/TextInput/TextInput.tsx +++ b/src/components/TextInput/TextInput.tsx @@ -9,7 +9,13 @@ import {AdditionalContent} from './AdditionalContent/AdditionalContent'; import {ClearAction} from './ClearAction/ClearAction'; import {InputControl} from './InputControl/InputControl'; import {TextAreaControl} from './TextAreaControl/TextAreaControl'; -import {TextInputPin, TextInputProps, TextInputSize, TextInputState, TextInputView} from './types'; +import type { + TextInputPin, + TextInputProps, + TextInputSize, + TextInputState, + TextInputView, +} from './types'; import './TextInput.scss'; diff --git a/src/components/TextInput/__stories__/TextInput.stories.tsx b/src/components/TextInput/__stories__/TextInput.stories.tsx index aa30f85d8d..4b4c2242ad 100644 --- a/src/components/TextInput/__stories__/TextInput.stories.tsx +++ b/src/components/TextInput/__stories__/TextInput.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {TextInput, TextInputProps} from '../TextInput'; +import {TextInput} from '../TextInput'; +import type {TextInputProps} from '../TextInput'; import {TextInputShowcase} from './TextInputShowcase'; diff --git a/src/components/TextInput/__stories__/TextInputShowcase.tsx b/src/components/TextInput/__stories__/TextInputShowcase.tsx index 8514ffb289..4e00462459 100644 --- a/src/components/TextInput/__stories__/TextInputShowcase.tsx +++ b/src/components/TextInput/__stories__/TextInputShowcase.tsx @@ -7,7 +7,7 @@ import {Button} from '../../Button'; import {Checkbox} from '../../Checkbox'; import {Icon} from '../../Icon'; import {TextInput} from '../TextInput'; -import {TextInputProps} from '../types'; +import type {TextInputProps} from '../types'; import './TextInputShowcase.scss'; @@ -31,7 +31,7 @@ const EyeButton = (props: { ); }; -export const TextInputShowcase: React.FC = () => { +export function TextInputShowcase() { const [value, setValue] = React.useState(''); const [isErrorMessageVisible, setErrorMessageVisibility] = React.useState(false); const [hideValue, setHideValue] = React.useState(false); @@ -302,4 +302,4 @@ export const TextInputShowcase: React.FC = () => { ); -}; +} diff --git a/src/components/TextInput/types.ts b/src/components/TextInput/types.ts index 6fe14813af..19d355a544 100644 --- a/src/components/TextInput/types.ts +++ b/src/components/TextInput/types.ts @@ -1,6 +1,4 @@ -import React from 'react'; - -import {DOMProps, QAProps} from '../types'; +import type {DOMProps, QAProps} from '../types'; export type TextInputView = 'normal' | 'clear'; diff --git a/src/components/Toaster/Provider/ToasterContext.ts b/src/components/Toaster/Provider/ToasterContext.ts index a0e375af34..22b68f19d6 100644 --- a/src/components/Toaster/Provider/ToasterContext.ts +++ b/src/components/Toaster/Provider/ToasterContext.ts @@ -1,6 +1,6 @@ import React from 'react'; -import {ToasterContextMethods} from '../types'; +import type {ToasterContextMethods} from '../types'; export const ToasterContext = React.createContext(null); ToasterContext.displayName = 'ToasterContext'; diff --git a/src/components/Toaster/Provider/ToasterProvider.tsx b/src/components/Toaster/Provider/ToasterProvider.tsx index 1612fa241b..bbd4f03087 100644 --- a/src/components/Toaster/Provider/ToasterProvider.tsx +++ b/src/components/Toaster/Provider/ToasterProvider.tsx @@ -1,6 +1,6 @@ -import React, {PropsWithChildren} from 'react'; +import React from 'react'; -import {InternalToastProps, ToastProps, ToasterPublicMethods} from '../types'; +import type {InternalToastProps, ToastProps, ToasterPublicMethods} from '../types'; import {getToastIndex} from '../utilities/getToastIndex'; import {hasToast} from '../utilities/hasToast'; import {removeToast} from '../utilities/removeToast'; @@ -8,7 +8,7 @@ import {removeToast} from '../utilities/removeToast'; import {ToasterContext} from './ToasterContext'; import {ToastsContext} from './ToastsContext'; -type Props = PropsWithChildren<{}>; +type Props = React.PropsWithChildren<{}>; export const ToasterProvider = React.forwardRef( function ToasterProvider({children}: Props, ref) { diff --git a/src/components/Toaster/Provider/ToastsContext.ts b/src/components/Toaster/Provider/ToastsContext.ts index 6eb28cecee..26f80170e9 100644 --- a/src/components/Toaster/Provider/ToastsContext.ts +++ b/src/components/Toaster/Provider/ToastsContext.ts @@ -1,6 +1,6 @@ import React from 'react'; -import {InternalToastProps} from '../types'; +import type {InternalToastProps} from '../types'; export const ToastsContext = React.createContext([]); ToastsContext.displayName = 'ToastsContext'; diff --git a/src/components/Toaster/Toast/Toast.tsx b/src/components/Toaster/Toast/Toast.tsx index 3700f63a64..79aa240b69 100644 --- a/src/components/Toaster/Toast/Toast.tsx +++ b/src/components/Toaster/Toast/Toast.tsx @@ -1,7 +1,8 @@ import React from 'react'; import {Button} from '../../Button'; -import {Icon, IconProps} from '../../Icon'; +import {Icon} from '../../Icon'; +import type {IconProps} from '../../Icon'; import {Alarm, CrossIcon, Info, Success} from '../../icons'; import {block} from '../../utils/cn'; import {useCloseOnTimeout} from '../../utils/useCloseOnTimeout'; diff --git a/src/components/Toaster/ToastList/ToastList.tsx b/src/components/Toaster/ToastList/ToastList.tsx index 8e3d130a41..e3eea1c45d 100644 --- a/src/components/Toaster/ToastList/ToastList.tsx +++ b/src/components/Toaster/ToastList/ToastList.tsx @@ -5,7 +5,7 @@ import {CSSTransition, TransitionGroup} from 'react-transition-group'; import {block} from '../../utils/cn'; import {getCSSTransitionClassNames} from '../../utils/transition'; import {Toast} from '../Toast/Toast'; -import {InternalToastProps} from '../types'; +import type {InternalToastProps} from '../types'; import './ToastAnimation.scss'; import './ToastList.scss'; diff --git a/src/components/Toaster/ToasterComponent/ToasterPortal.tsx b/src/components/Toaster/ToasterComponent/ToasterPortal.tsx index f9f7713766..d8bb8f14a8 100644 --- a/src/components/Toaster/ToasterComponent/ToasterPortal.tsx +++ b/src/components/Toaster/ToasterComponent/ToasterPortal.tsx @@ -1,9 +1,9 @@ -import React, {PropsWithChildren} from 'react'; +import React from 'react'; import {Portal} from '../../Portal'; import {block} from '../../utils/cn'; -type Props = PropsWithChildren<{ +type Props = React.PropsWithChildren<{ className: string; mobile?: boolean; }>; @@ -12,14 +12,14 @@ const b = block('toaster'); export function ToasterPortal({children, className, mobile}: Props) { const el = React.useRef( - typeof document !== 'undefined' ? document.createElement('div') : undefined, + typeof document === 'undefined' ? undefined : document.createElement('div'), ); React.useEffect(() => { const container = el.current; if (!container) { - return; + return undefined; } document.body.appendChild(container); diff --git a/src/components/Toaster/__stories__/Toaster.stories.tsx b/src/components/Toaster/__stories__/Toaster.stories.tsx index 56780c39a1..b11560ed08 100644 --- a/src/components/Toaster/__stories__/Toaster.stories.tsx +++ b/src/components/Toaster/__stories__/Toaster.stories.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import {ComponentMeta, ComponentStory} from '@storybook/react'; +import type {ComponentMeta, ComponentStory} from '@storybook/react'; -import {ButtonView} from '../../Button'; +import type {ButtonView} from '../../Button'; import {ToasterProvider} from '../Provider/ToasterProvider'; import {Toast} from '../Toast/Toast'; diff --git a/src/components/Toaster/__stories__/ToasterShowcase.tsx b/src/components/Toaster/__stories__/ToasterShowcase.tsx index c07108aa6a..9c37321845 100644 --- a/src/components/Toaster/__stories__/ToasterShowcase.tsx +++ b/src/components/Toaster/__stories__/ToasterShowcase.tsx @@ -2,8 +2,10 @@ import React from 'react'; import {faker} from '@faker-js/faker/locale/en'; -import {ToastProps, ToasterComponent, useToaster} from '..'; -import {Button, ButtonView} from '../../Button'; +import {ToasterComponent, useToaster} from '..'; +import type {ToastProps} from '..'; +import {Button} from '../../Button'; +import type {ButtonView} from '../../Button'; import {Icon} from '../../Icon'; import {Alarm, Info, Success} from '../../icons'; import {block} from '../../utils/cn'; @@ -317,7 +319,7 @@ export const ToasterDemo = ({ const component = React.useMemo(() => , []); return ( - <> +

{defaultToastBtn}

{infoToastBtn}

{successToastBtn}

@@ -329,6 +331,6 @@ export const ToasterDemo = ({

{clearBtn}

{component} - +
); }; diff --git a/src/components/Toaster/__tests__/ToasterProvider.test.tsx b/src/components/Toaster/__tests__/ToasterProvider.test.tsx index ca72206465..350140959c 100644 --- a/src/components/Toaster/__tests__/ToasterProvider.test.tsx +++ b/src/components/Toaster/__tests__/ToasterProvider.test.tsx @@ -1,4 +1,4 @@ -import React, {useEffect} from 'react'; +import React from 'react'; import {act, fireEvent, render, screen} from '@testing-library/react'; @@ -8,12 +8,12 @@ import {fireAnimationEndEvent} from '../__mocks__/fireAnimationEndEvent'; import {getToast} from '../__mocks__/getToast'; import {tick} from '../__mocks__/tick'; import {useToaster} from '../hooks/useToaster'; -import {ToasterPublicMethods} from '../types'; +import type {ToasterPublicMethods} from '../types'; function ToastAPI({onMount}: {onMount: (api: ToasterPublicMethods) => void}) { const toaster = useToaster(); - useEffect(() => { + React.useEffect(() => { onMount(toaster); }, []); diff --git a/src/components/Toaster/hooks/useToaster.ts b/src/components/Toaster/hooks/useToaster.ts index 0e2d5046ad..4d069aaa79 100644 --- a/src/components/Toaster/hooks/useToaster.ts +++ b/src/components/Toaster/hooks/useToaster.ts @@ -1,7 +1,7 @@ import React from 'react'; import {ToasterContext} from '../Provider/ToasterContext'; -import {ToasterPublicMethods} from '../types'; +import type {ToasterPublicMethods} from '../types'; export function useToaster(): ToasterPublicMethods { const toaster = React.useContext(ToasterContext); diff --git a/src/components/Toaster/types.ts b/src/components/Toaster/types.ts index 00246f0035..7747a10df8 100644 --- a/src/components/Toaster/types.ts +++ b/src/components/Toaster/types.ts @@ -1,6 +1,4 @@ -import React from 'react'; - -import {ButtonView} from '../Button'; +import type {ButtonView} from '../Button'; export type ToasterArgs = { className?: string; diff --git a/src/components/Toaster/utilities/getToastIndex.tsx b/src/components/Toaster/utilities/getToastIndex.tsx index 8eda91e6d9..a8d118d38f 100644 --- a/src/components/Toaster/utilities/getToastIndex.tsx +++ b/src/components/Toaster/utilities/getToastIndex.tsx @@ -1,4 +1,4 @@ -import {ToastProps} from '../types'; +import type {ToastProps} from '../types'; export function getToastIndex(toasts: ToastProps[], name: ToastProps['name']) { return toasts.findIndex((toast) => toast.name === name); diff --git a/src/components/Toaster/utilities/hasToast.ts b/src/components/Toaster/utilities/hasToast.ts index 8902cf01c6..ff2cfd2982 100644 --- a/src/components/Toaster/utilities/hasToast.ts +++ b/src/components/Toaster/utilities/hasToast.ts @@ -1,4 +1,4 @@ -import {ToastProps} from '../types'; +import type {ToastProps} from '../types'; import {getToastIndex} from './getToastIndex'; diff --git a/src/components/Toaster/utilities/removeToast.ts b/src/components/Toaster/utilities/removeToast.ts index 5f132603cd..b6f3443961 100644 --- a/src/components/Toaster/utilities/removeToast.ts +++ b/src/components/Toaster/utilities/removeToast.ts @@ -1,4 +1,4 @@ -import {ToastProps} from '../types'; +import type {ToastProps} from '../types'; import {hasToast} from './hasToast'; diff --git a/src/components/Toaster/withToaster.tsx b/src/components/Toaster/withToaster.tsx index 5a029c25b6..9cafc21a6b 100644 --- a/src/components/Toaster/withToaster.tsx +++ b/src/components/Toaster/withToaster.tsx @@ -1,11 +1,11 @@ -import React, {ComponentType} from 'react'; +import React from 'react'; import {getComponentName} from '../utils/getComponentName'; import {useToaster} from './hooks/useToaster'; export function withToaster() { - return function (WrappedComponent: ComponentType) { + return function (WrappedComponent: React.ComponentType) { function WithToaster(props: T) { const toaster = useToaster(); diff --git a/src/components/Tooltip/Tooltip.tsx b/src/components/Tooltip/Tooltip.tsx index 13b8d0b8af..130242c577 100644 --- a/src/components/Tooltip/Tooltip.tsx +++ b/src/components/Tooltip/Tooltip.tsx @@ -1,6 +1,7 @@ -import React, {Children, cloneElement, useEffect, useState} from 'react'; +import React from 'react'; -import {Popup, PopupPlacement} from '../Popup'; +import {Popup} from '../Popup'; +import type {PopupPlacement} from '../Popup'; import {block} from '../utils/cn'; import {useBoolean} from '../utils/useBoolean'; import {useForkRef} from '../utils/useForkRef'; @@ -26,7 +27,7 @@ const DEFAULT_PLACEMENT: PopupPlacement = ['bottom', 'top']; export const Tooltip = (props: TooltipProps) => { const {children, content, disabled, placement = DEFAULT_PLACEMENT} = props; - const [anchorElement, setAnchorElement] = useState(null); + const [anchorElement, setAnchorElement] = React.useState(null); const tooltipVisible = useTooltipVisible(anchorElement, props); const renderPopup = () => { @@ -45,16 +46,16 @@ export const Tooltip = (props: TooltipProps) => { ); }; - const child = Children.only(children); + const child = React.Children.only(children); const childRef = (child as any).ref; const ref = useForkRef(setAnchorElement, childRef); return ( - <> - {cloneElement(child, {ref})} + + {React.cloneElement(child, {ref})} {anchorElement ? renderPopup() : null} - + ); }; @@ -62,7 +63,7 @@ function useTooltipVisible(anchor: HTMLElement | null, {openDelay, closeDelay}: const [tooltipVisible, showTooltip, hideTooltip] = useBoolean(false); const timeoutRef = React.useRef(); - useEffect(() => { + React.useEffect(() => { if (!anchor) { return undefined; } diff --git a/src/components/Tooltip/__stories__/Tooltip.stories.tsx b/src/components/Tooltip/__stories__/Tooltip.stories.tsx index 0625b1e75c..4b3d234c93 100644 --- a/src/components/Tooltip/__stories__/Tooltip.stories.tsx +++ b/src/components/Tooltip/__stories__/Tooltip.stories.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {Story} from '@storybook/react'; +import type {Story} from '@storybook/react'; import {Button} from '../../Button'; -import {Tooltip, TooltipProps} from '../Tooltip'; +import {Tooltip} from '../Tooltip'; +import type {TooltipProps} from '../Tooltip'; export default { title: 'Components/Tooltip', diff --git a/src/components/Tooltip/index.ts b/src/components/Tooltip/index.ts index d5c73534c6..08920f7924 100644 --- a/src/components/Tooltip/index.ts +++ b/src/components/Tooltip/index.ts @@ -1 +1,2 @@ -export {Tooltip, TooltipProps} from './Tooltip'; +export {Tooltip} from './Tooltip'; +export type {TooltipProps} from './Tooltip'; diff --git a/src/components/User/User.tsx b/src/components/User/User.tsx index 58871604f8..ed51d17af2 100644 --- a/src/components/User/User.tsx +++ b/src/components/User/User.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {UserAvatar, UserAvatarSize} from '../UserAvatar'; +import {UserAvatar} from '../UserAvatar'; +import type {UserAvatarSize} from '../UserAvatar'; import {block} from '../utils/cn'; import './User.scss'; diff --git a/src/components/User/__stories__/User.stories.tsx b/src/components/User/__stories__/User.stories.tsx index 07c600138c..2a5a6c7714 100644 --- a/src/components/User/__stories__/User.stories.tsx +++ b/src/components/User/__stories__/User.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {User, UserProps} from '../User'; +import {User} from '../User'; +import type {UserProps} from '../User'; export default { title: 'Components/User', diff --git a/src/components/UserAvatar/__stories__/UserAvatar.stories.tsx b/src/components/UserAvatar/__stories__/UserAvatar.stories.tsx index 77db29ec08..c4c272a3d2 100644 --- a/src/components/UserAvatar/__stories__/UserAvatar.stories.tsx +++ b/src/components/UserAvatar/__stories__/UserAvatar.stories.tsx @@ -1,10 +1,11 @@ -import React, {useEffect} from 'react'; +import React from 'react'; import {faker} from '@faker-js/faker/locale/en'; import {useArgs} from '@storybook/client-api'; -import {ComponentStory, Meta, Story} from '@storybook/react'; +import type {ComponentStory, Meta, Story} from '@storybook/react'; -import {UserAvatar, UserAvatarProps} from '../UserAvatar'; +import {UserAvatar} from '../UserAvatar'; +import type {UserAvatarProps} from '../UserAvatar'; import {getAvatarSrcSet} from './getAvatarSrcSet'; @@ -44,11 +45,11 @@ const randomAvatars = faker.helpers export const WithSrcSet: ComponentStory = (args) => { const [, setArgs] = useArgs(); - useEffect(() => { + React.useEffect(() => { if (args.size) { setArgs({srcSet: getAvatarSrcSet(args.size, randomAvatars)}); } - }, [args.size]); + }, [args.size, setArgs]); return ; }; diff --git a/src/components/UserAvatar/__stories__/getAvatarSrcSet.ts b/src/components/UserAvatar/__stories__/getAvatarSrcSet.ts index 420a5af106..83549be241 100644 --- a/src/components/UserAvatar/__stories__/getAvatarSrcSet.ts +++ b/src/components/UserAvatar/__stories__/getAvatarSrcSet.ts @@ -3,7 +3,7 @@ import type {UserAvatarSize} from '../types'; import {getClosestNumber} from './getClosestNumber'; import {getSrcSet} from './getSrcSet'; -import {SrcSetType} from './types'; +import type {SrcSetType} from './types'; export function getAvatarSrcSet( size: UserAvatarSize, diff --git a/src/components/layout/Col/Col.tsx b/src/components/layout/Col/Col.tsx index c12c006e20..ed27b38d4a 100644 --- a/src/components/layout/Col/Col.tsx +++ b/src/components/layout/Col/Col.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {block} from '../../utils/cn'; -import {ColSize, MediaPartial} from '../types'; +import type {ColSize, MediaPartial} from '../types'; import {makeCssMod} from '../utils'; import './Col.scss'; diff --git a/src/components/layout/Col/__stories__/Col.stories.tsx b/src/components/layout/Col/__stories__/Col.stories.tsx index f30e1c9ed6..9d1949ea9f 100644 --- a/src/components/layout/Col/__stories__/Col.stories.tsx +++ b/src/components/layout/Col/__stories__/Col.stories.tsx @@ -1,12 +1,13 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Container} from '../../Container/Container'; import {Row} from '../../Row/Row'; import {ColPresenter, LayoutPresenter} from '../../demo'; -import {Space} from '../../types'; -import {Col, ColProps} from '../Col'; +import type {Space} from '../../types'; +import {Col} from '../Col'; +import type {ColProps} from '../Col'; export default { title: 'Layout/Col', diff --git a/src/components/layout/Container/Container.tsx b/src/components/layout/Container/Container.tsx index bcdae29109..5975e42538 100644 --- a/src/components/layout/Container/Container.tsx +++ b/src/components/layout/Container/Container.tsx @@ -3,7 +3,7 @@ import React from 'react'; import {block} from '../../utils/cn'; import {sp} from '../spacing/spacing'; -import {MediaPartial, MediaType, Space} from '../types'; +import type {MediaPartial, MediaType, Space} from '../types'; import {makeCssMod} from '../utils'; import {useContainerThemeProps} from './useContainerThemeProps'; diff --git a/src/components/layout/Container/__stories__/Container.stories.tsx b/src/components/layout/Container/__stories__/Container.stories.tsx index d2d7ffac4c..d3008467c4 100644 --- a/src/components/layout/Container/__stories__/Container.stories.tsx +++ b/src/components/layout/Container/__stories__/Container.stories.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Col} from '../../Col/Col'; import {Row} from '../../Row/Row'; import {Box, LayoutPresenter} from '../../demo'; -import {Container, ContainerProps} from '../Container'; +import {Container} from '../Container'; +import type {ContainerProps} from '../Container'; export default { title: 'Layout/Container', diff --git a/src/components/layout/Container/useContainerThemeProps.ts b/src/components/layout/Container/useContainerThemeProps.ts index 50f3693328..3f2a18521f 100644 --- a/src/components/layout/Container/useContainerThemeProps.ts +++ b/src/components/layout/Container/useContainerThemeProps.ts @@ -1,7 +1,7 @@ import React from 'react'; import {useLayoutContext} from '../hooks/useLayoutContext'; -import {CommonProps, ContainerConfigProps} from '../types'; +import type {CommonProps, ContainerConfigProps} from '../types'; const pickContainerProps = ({ gutters, diff --git a/src/components/layout/Flex/Flex.tsx b/src/components/layout/Flex/Flex.tsx index 7eac3183e7..dd95a2b535 100644 --- a/src/components/layout/Flex/Flex.tsx +++ b/src/components/layout/Flex/Flex.tsx @@ -1,10 +1,10 @@ /* eslint-disable react/display-name */ import React from 'react'; -import {QAProps} from '../../types'; +import type {QAProps} from '../../types'; import {block} from '../../utils/cn'; import {useLayoutContext} from '../hooks/useLayoutContext'; -import {MediaPartial, Space} from '../types'; +import type {MediaPartial, Space} from '../types'; import {makeCssMod} from '../utils'; import './Flex.scss'; diff --git a/src/components/layout/Flex/__stories__/Flex.stories.tsx b/src/components/layout/Flex/__stories__/Flex.stories.tsx index e7f3b41019..d8388aa049 100644 --- a/src/components/layout/Flex/__stories__/Flex.stories.tsx +++ b/src/components/layout/Flex/__stories__/Flex.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Container} from '../..'; import {Button} from '../../../Button/Button'; @@ -8,7 +8,8 @@ import {Text} from '../../../Text'; import {Col} from '../../Col/Col'; import {Row} from '../../Row/Row'; import {Box, LayoutPresenter} from '../../demo'; -import {Flex, FlexProps} from '../Flex'; +import {Flex} from '../Flex'; +import type {FlexProps} from '../Flex'; export default { title: 'Layout/Flex', diff --git a/src/components/layout/LayoutProvider/LayoutProvider.tsx b/src/components/layout/LayoutProvider/LayoutProvider.tsx index 8a19a43903..70c63bd9b2 100644 --- a/src/components/layout/LayoutProvider/LayoutProvider.tsx +++ b/src/components/layout/LayoutProvider/LayoutProvider.tsx @@ -3,7 +3,7 @@ import React from 'react'; import {LayoutContext} from '../contexts/LayoutContext'; import {useCurrentActiveMediaQuery} from '../hooks/useCurrentActiveMediaQuery'; -import {LayoutTheme, MediaType, RecursivePartial} from '../types'; +import type {LayoutTheme, MediaType, RecursivePartial} from '../types'; import {makeLayoutDefaultTheme} from '../utils/makeLayoutDefaultTheme'; interface LayoutProviderProps { @@ -20,11 +20,11 @@ interface LayoutProviderProps { * --- * Storybook - https://preview.gravity-ui.com/uikit/?path=/docs/layout--playground#layoutprovider-and-layouttheme */ -export const LayoutProvider: React.FC = ({ +export function LayoutProvider({ children, theme: override, initialMediaQuery, -}) => { +}: LayoutProviderProps) { const theme = makeLayoutDefaultTheme({override}); const activeMediaQuery = useCurrentActiveMediaQuery(theme.breakpoints, initialMediaQuery); @@ -38,4 +38,4 @@ export const LayoutProvider: React.FC = ({ {children} ); -}; +} diff --git a/src/components/layout/LayoutProvider/__stories__/Layout.stories.tsx b/src/components/layout/LayoutProvider/__stories__/Layout.stories.tsx index b56d4e9e9b..328d2f1e8f 100644 --- a/src/components/layout/LayoutProvider/__stories__/Layout.stories.tsx +++ b/src/components/layout/LayoutProvider/__stories__/Layout.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import Docs from './Layout.docs.mdx'; @@ -15,5 +15,5 @@ export default { }, } as Meta; -export const Playground: Story = () => <>; +export const Playground: Story = () => ; Playground.storyName = 'Layout'; diff --git a/src/components/layout/Row/Row.tsx b/src/components/layout/Row/Row.tsx index ed287fefc9..2596977344 100644 --- a/src/components/layout/Row/Row.tsx +++ b/src/components/layout/Row/Row.tsx @@ -3,7 +3,7 @@ import React from 'react'; import {block} from '../../utils/cn'; import {useLayoutContext} from '../hooks/useLayoutContext'; -import {MediaPartial, Space} from '../types'; +import type {MediaPartial, Space} from '../types'; import {makeCssMod} from '../utils'; import './Row.scss'; diff --git a/src/components/layout/Row/__stories__/Row.stories.tsx b/src/components/layout/Row/__stories__/Row.stories.tsx index 0956d30461..189fc0ea83 100644 --- a/src/components/layout/Row/__stories__/Row.stories.tsx +++ b/src/components/layout/Row/__stories__/Row.stories.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Col} from '../../Col/Col'; import {Box, LayoutPresenter} from '../../demo'; -import {Row, RowProps} from '../Row'; +import {Row} from '../Row'; +import type {RowProps} from '../Row'; export default { title: 'Layout/Row', diff --git a/src/components/layout/constants.ts b/src/components/layout/constants.ts index 51699199ed..593342491e 100644 --- a/src/components/layout/constants.ts +++ b/src/components/layout/constants.ts @@ -1,9 +1,9 @@ -import {LayoutTheme, Space} from './types'; +import type {ColSize, LayoutTheme, Space} from './types'; // css custom properties doesn't support decimal numbers in name export const CSS_SIZE_EXCEPTION = { '0.5': 'half', -} as Record; +} as Record; export const DEFAULT_LAYOUT_THEME: LayoutTheme = { breakpoints: { diff --git a/src/components/layout/contexts/LayoutContext.tsx b/src/components/layout/contexts/LayoutContext.tsx index 18841d8b8a..ada01b9f20 100644 --- a/src/components/layout/contexts/LayoutContext.tsx +++ b/src/components/layout/contexts/LayoutContext.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {DEFAULT_LAYOUT_THEME} from '../constants'; -import {LayoutTheme, MediaType} from '../types'; +import type {LayoutTheme, MediaType} from '../types'; interface LayoutContextProps { theme: LayoutTheme; diff --git a/src/components/layout/demo/Box/Box.tsx b/src/components/layout/demo/Box/Box.tsx index b20edc2915..37393fdf55 100644 --- a/src/components/layout/demo/Box/Box.tsx +++ b/src/components/layout/demo/Box/Box.tsx @@ -1,19 +1,20 @@ import React from 'react'; -import {Flex, FlexProps} from '../../Flex/Flex'; +import {Flex} from '../../Flex/Flex'; +import type {FlexProps} from '../../Flex/Flex'; interface BoxProps extends FlexProps<'div'> { style?: React.CSSProperties; children?: React.ReactNode; minHeight?: number; - w?: number; - h?: number; + w?: number | string; + h?: number | string; grow?: true; bc?: React.CSSProperties['backgroundColor']; bgc?: React.CSSProperties['backgroundColor']; } -export const Box: React.FC = ({ +export function Box({ children, w = '100%', h = '100%', @@ -21,7 +22,7 @@ export const Box: React.FC = ({ bgc = '#DDBEE1', bc = 'rosybrown', ...props -}) => { +}: BoxProps) { return ( = ({ {children} ); -}; +} diff --git a/src/components/layout/demo/ColPresenter/ColPresenter.tsx b/src/components/layout/demo/ColPresenter/ColPresenter.tsx index e90b2c9436..c203cf7265 100644 --- a/src/components/layout/demo/ColPresenter/ColPresenter.tsx +++ b/src/components/layout/demo/ColPresenter/ColPresenter.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {Col, ColProps} from '../../Col/Col'; +import {Col} from '../../Col/Col'; +import type {ColProps} from '../../Col/Col'; import {Box} from '../Box/Box'; // @ts-ignore-error diff --git a/src/components/layout/demo/LayoutPresenter/LayoutPresenter.tsx b/src/components/layout/demo/LayoutPresenter/LayoutPresenter.tsx index 4345b95ddb..87dc2eaccd 100644 --- a/src/components/layout/demo/LayoutPresenter/LayoutPresenter.tsx +++ b/src/components/layout/demo/LayoutPresenter/LayoutPresenter.tsx @@ -11,7 +11,7 @@ interface LayoutPresenterProps { title?: string; } -const Title: React.FC<{title?: string}> = ({title}) => { +function Title({title}: {title?: string}) { const {activeMediaQuery} = useLayoutContext(); return ( @@ -25,7 +25,7 @@ const Title: React.FC<{title?: string}> = ({title}) => { ); -}; +} export const LayoutPresenter = ({children, title}: LayoutPresenterProps) => { return ( diff --git a/src/components/layout/hooks/useCurrentActiveMediaQuery.tsx b/src/components/layout/hooks/useCurrentActiveMediaQuery.tsx index 426c92012e..f58f4ed412 100644 --- a/src/components/layout/hooks/useCurrentActiveMediaQuery.tsx +++ b/src/components/layout/hooks/useCurrentActiveMediaQuery.tsx @@ -1,7 +1,7 @@ /* eslint-disable valid-jsdoc */ import React from 'react'; -import {MediaProps, MediaType} from '../types'; +import type {MediaProps, MediaType} from '../types'; export const mockMediaQueryList: MediaQueryList = { media: '', diff --git a/src/components/layout/hooks/useLayoutContext.ts b/src/components/layout/hooks/useLayoutContext.ts index ee247581b1..c489b3663e 100644 --- a/src/components/layout/hooks/useLayoutContext.ts +++ b/src/components/layout/hooks/useLayoutContext.ts @@ -2,7 +2,7 @@ import React from 'react'; import {LayoutContext} from '../contexts/LayoutContext'; -import {LayoutTheme, MediaType} from '../types'; +import type {LayoutTheme, MediaType} from '../types'; import {getClosestMediaPropsFactory, isMediaActiveFactory} from '../utils'; interface ComputedMediaContext { diff --git a/src/components/layout/spacing/spacing.test.tsx b/src/components/layout/spacing/spacing.test.tsx index 8084f603af..83ffef7a5f 100644 --- a/src/components/layout/spacing/spacing.test.tsx +++ b/src/components/layout/spacing/spacing.test.tsx @@ -1,4 +1,5 @@ -import {SpacingProps, sp} from './spacing'; +import {sp} from './spacing'; +import type {SpacingProps} from './spacing'; describe('spacing utility', () => { test.each<[SpacingProps, string]>([ diff --git a/src/components/layout/spacing/spacing.tsx b/src/components/layout/spacing/spacing.tsx index 90b3ebbfba..06e049b27b 100644 --- a/src/components/layout/spacing/spacing.tsx +++ b/src/components/layout/spacing/spacing.tsx @@ -1,6 +1,6 @@ /* eslint-disable valid-jsdoc */ import {block} from '../../utils/cn'; -import {Space} from '../types'; +import type {Space} from '../types'; import {makeCssMod} from '../utils'; import './spacing.scss'; diff --git a/src/components/layout/utils/index.test.ts b/src/components/layout/utils/index.test.ts index 55d923d6f8..24f32f76fa 100644 --- a/src/components/layout/utils/index.test.ts +++ b/src/components/layout/utils/index.test.ts @@ -1,4 +1,4 @@ -import {Space} from '../types'; +import type {Space} from '../types'; import {getClosestMediaPropsFactory, isMediaActiveFactory, makeCssMod} from './index'; diff --git a/src/components/layout/utils/index.ts b/src/components/layout/utils/index.ts index b501edda48..0026a363aa 100644 --- a/src/components/layout/utils/index.ts +++ b/src/components/layout/utils/index.ts @@ -1,5 +1,5 @@ import {CSS_SIZE_EXCEPTION} from '../constants'; -import {IsMediaActive, MediaPartial, MediaProps, MediaType, Space} from '../types'; +import type {ColSize, IsMediaActive, MediaPartial, MediaProps, MediaType, Space} from '../types'; const mediaByOrder: MediaProps = { s: 0, @@ -40,6 +40,6 @@ export const getClosestMediaPropsFactory = return undefined; }; -export const makeCssMod = (space: Space): string => { +export const makeCssMod = (space: Space | ColSize): string => { return space in CSS_SIZE_EXCEPTION ? CSS_SIZE_EXCEPTION[space] : String(space); }; diff --git a/src/components/layout/utils/makeLayoutDefaultTheme.ts b/src/components/layout/utils/makeLayoutDefaultTheme.ts index bbee00e244..7c20cdb14c 100644 --- a/src/components/layout/utils/makeLayoutDefaultTheme.ts +++ b/src/components/layout/utils/makeLayoutDefaultTheme.ts @@ -2,7 +2,7 @@ import merge from 'lodash/merge'; import {DEFAULT_LAYOUT_THEME} from '../constants'; -import {LayoutTheme, RecursivePartial} from '../types'; +import type {LayoutTheme, RecursivePartial} from '../types'; interface MakeDefaultLayoutTheme { override?: RecursivePartial; diff --git a/src/components/mobile/MobileProvider.tsx b/src/components/mobile/MobileProvider.tsx index c0ae26cbab..b7bf006699 100644 --- a/src/components/mobile/MobileProvider.tsx +++ b/src/components/mobile/MobileProvider.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {History, Location, MobileContext, MobileContextProps} from './MobileContext'; +import {MobileContext} from './MobileContext'; +import type {History, Location, MobileContextProps} from './MobileContext'; import {Platform, rootMobileClassName} from './constants'; function useHistoryMock(): History { diff --git a/src/components/mobile/useMobile.ts b/src/components/mobile/useMobile.ts index c7630ad5a3..4bf00d0978 100644 --- a/src/components/mobile/useMobile.ts +++ b/src/components/mobile/useMobile.ts @@ -1,6 +1,7 @@ import React from 'react'; -import {MobileContext, MobileContextProps as Props} from './MobileContext'; +import {MobileContext} from './MobileContext'; +import type {MobileContextProps as Props} from './MobileContext'; export function useMobile(): [Props['mobile'], Props['setMobile']] { const {mobile, setMobile} = React.useContext(MobileContext); diff --git a/src/components/mobile/usePlatform.ts b/src/components/mobile/usePlatform.ts index 8b1004bbb8..9232bd8272 100644 --- a/src/components/mobile/usePlatform.ts +++ b/src/components/mobile/usePlatform.ts @@ -1,6 +1,7 @@ import React from 'react'; -import {MobileContext, MobileContextProps as Props} from './MobileContext'; +import {MobileContext} from './MobileContext'; +import type {MobileContextProps as Props} from './MobileContext'; export function usePlatform(): [Props['platform'], Props['setPlatform']] { const {platform, setPlatform} = React.useContext(MobileContext); diff --git a/src/components/mobile/withMobile.tsx b/src/components/mobile/withMobile.tsx index 1f2fb52505..1d0faefdf0 100644 --- a/src/components/mobile/withMobile.tsx +++ b/src/components/mobile/withMobile.tsx @@ -1,10 +1,11 @@ -import React, {ContextType} from 'react'; +import React from 'react'; -import {Subtract} from 'utility-types'; +import type {Subtract} from 'utility-types'; import {getComponentName} from '../utils/getComponentName'; -import {MobileContext, MobileContextProps} from './MobileContext'; +import {MobileContext} from './MobileContext'; +import type {MobileContextProps} from './MobileContext'; export interface WithMobileProps extends MobileContextProps {} @@ -16,7 +17,7 @@ export function withMobile( return class WithMobileComponent extends React.Component> { static displayName = `withMobile(${componentName})`; static contextType = MobileContext; - context!: ContextType; + context!: React.ContextType; render() { return ( diff --git a/src/components/theme/ThemeContext.ts b/src/components/theme/ThemeContext.ts index 526dbed4be..abf158c7bc 100644 --- a/src/components/theme/ThemeContext.ts +++ b/src/components/theme/ThemeContext.ts @@ -1,7 +1,7 @@ import React from 'react'; import {DEFAULT_THEME} from './constants'; -import {Theme} from './types'; +import type {Theme} from './types'; export interface ThemeContextProps { theme: Theme; diff --git a/src/components/theme/ThemeProvider.tsx b/src/components/theme/ThemeProvider.tsx index a0efad7e4a..974b6192a6 100644 --- a/src/components/theme/ThemeProvider.tsx +++ b/src/components/theme/ThemeProvider.tsx @@ -1,9 +1,10 @@ -import React, {PropsWithChildren, useEffect, useLayoutEffect, useMemo, useState} from 'react'; +import React from 'react'; import {block} from '../utils/cn'; import {ThemeContext} from './ThemeContext'; -import {ThemeSettings, ThemeSettingsContext} from './ThemeSettingsContext'; +import {ThemeSettingsContext} from './ThemeSettingsContext'; +import type {ThemeSettings} from './ThemeSettingsContext'; import {ThemeValueContext} from './ThemeValueContext'; import {DEFAULT_DARK_THEME, DEFAULT_LIGHT_THEME, DEFAULT_THEME, ROOT_CLASS_NAME} from './constants'; import type {RealTheme, Theme} from './types'; @@ -26,7 +27,7 @@ interface ThemeProviderDefaultProps { export interface ThemeProviderProps extends ThemeProviderExternalProps, Partial, - PropsWithChildren<{}> {} + React.PropsWithChildren<{}> {} export function ThemeProvider({ theme: themeProp = DEFAULT_THEME, @@ -37,13 +38,13 @@ export function ThemeProvider({ rootClassName = '', children, }: ThemeProviderProps) { - const [theme, setTheme] = useState(themeProp); - const [{systemLightTheme, systemDarkTheme}, setThemeSettings] = useState({ + const [theme, setTheme] = React.useState(themeProp); + const [{systemLightTheme, systemDarkTheme}, setThemeSettings] = React.useState({ systemLightTheme: systemLightThemeProp, systemDarkTheme: systemDarkThemeProp, }); - useLayoutEffect(() => { + React.useLayoutEffect(() => { setTheme(themeProp); setThemeSettings({ systemLightTheme: systemLightThemeProp, @@ -56,13 +57,13 @@ export function ThemeProvider({ ) as RealTheme; const themeValue = theme === 'system' ? systemTheme : theme; - useEffect(() => { + React.useEffect(() => { if (!scoped) { updateBodyClassName(themeValue, {'native-scrollbar': nativeScrollbar}, rootClassName); } }, [nativeScrollbar, themeValue, scoped, rootClassName]); - const contextValue = useMemo( + const contextValue = React.useMemo( () => ({ theme, themeValue, @@ -71,9 +72,9 @@ export function ThemeProvider({ [theme, themeValue], ); - const themeValueContext = useMemo(() => ({themeValue}), [themeValue]); + const themeValueContext = React.useMemo(() => ({themeValue}), [themeValue]); - const themeSettingsContext = useMemo( + const themeSettingsContext = React.useMemo( () => ({ themeSettings: {systemLightTheme, systemDarkTheme}, setThemeSettings, diff --git a/src/components/theme/ThemeSettingsContext.ts b/src/components/theme/ThemeSettingsContext.ts index 15b9186e57..031ebd66a1 100644 --- a/src/components/theme/ThemeSettingsContext.ts +++ b/src/components/theme/ThemeSettingsContext.ts @@ -1,6 +1,6 @@ import React from 'react'; -import {RealTheme} from './types'; +import type {RealTheme} from './types'; export type ThemeSettings = { systemLightTheme: RealTheme; diff --git a/src/components/theme/ThemeValueContext.ts b/src/components/theme/ThemeValueContext.ts index 7b4d950413..23efffc0bf 100644 --- a/src/components/theme/ThemeValueContext.ts +++ b/src/components/theme/ThemeValueContext.ts @@ -1,6 +1,6 @@ import React from 'react'; -import {RealTheme} from './types'; +import type {RealTheme} from './types'; export interface ThemeValueContextProps { themeValue: RealTheme; diff --git a/src/components/theme/getThemeType.ts b/src/components/theme/getThemeType.ts index 8a3760d5cb..6d0b677f74 100644 --- a/src/components/theme/getThemeType.ts +++ b/src/components/theme/getThemeType.ts @@ -1,5 +1,5 @@ import {DARK_THEMES} from './constants'; -import {RealTheme, ThemeType} from './types'; +import type {RealTheme, ThemeType} from './types'; export function getThemeType(theme: RealTheme): ThemeType { return DARK_THEMES.includes(theme) ? 'dark' : 'light'; diff --git a/src/components/theme/index.ts b/src/components/theme/index.ts index e88dca0c65..b110897b2c 100644 --- a/src/components/theme/index.ts +++ b/src/components/theme/index.ts @@ -9,4 +9,4 @@ export * from './useThemeType'; export * from './withTheme'; export * from './withThemeValue'; export * from './getThemeType'; -export {Theme, RealTheme, ThemeType} from './types'; +export type {Theme, RealTheme, ThemeType} from './types'; diff --git a/src/components/theme/updateBodyClassName.ts b/src/components/theme/updateBodyClassName.ts index 71ff42ddfe..794860679b 100644 --- a/src/components/theme/updateBodyClassName.ts +++ b/src/components/theme/updateBodyClassName.ts @@ -1,7 +1,7 @@ import {block, modsClassName} from '../utils/cn'; import {ROOT_CLASS_NAME} from './constants'; -import {RealTheme} from './types'; +import type {RealTheme} from './types'; const b = block(ROOT_CLASS_NAME); const rootClassName = b(); diff --git a/src/components/theme/useSystemTheme.ts b/src/components/theme/useSystemTheme.ts index 088df5373c..a2fe53b2dd 100644 --- a/src/components/theme/useSystemTheme.ts +++ b/src/components/theme/useSystemTheme.ts @@ -1,8 +1,8 @@ -import {useEffect, useState} from 'react'; +import React from 'react'; import {getDarkMediaMatch} from './getDarkMediaMatch'; import {getSystemTheme} from './getSystemTheme'; -import {ThemeType} from './types'; +import type {ThemeType} from './types'; function addListener( matcher: MediaQueryList, @@ -26,9 +26,9 @@ function addListener( } export function useSystemTheme(): ThemeType { - const [theme, setTheme] = useState(getSystemTheme()); + const [theme, setTheme] = React.useState(getSystemTheme()); - useEffect(() => { + React.useEffect(() => { function onChange(event: MediaQueryListEvent) { setTheme(event.matches ? 'dark' : 'light'); } diff --git a/src/components/theme/useTheme.ts b/src/components/theme/useTheme.ts index 383abce2f0..1699710764 100644 --- a/src/components/theme/useTheme.ts +++ b/src/components/theme/useTheme.ts @@ -1,6 +1,7 @@ import React from 'react'; -import {ThemeContext, ThemeContextProps} from './ThemeContext'; +import {ThemeContext} from './ThemeContext'; +import type {ThemeContextProps} from './ThemeContext'; export function useTheme(): [ThemeContextProps['theme'], ThemeContextProps['setTheme']] { const {theme, setTheme} = React.useContext(ThemeContext); diff --git a/src/components/theme/useThemeSettings.ts b/src/components/theme/useThemeSettings.ts index 5900f669b7..1ce6b3296f 100644 --- a/src/components/theme/useThemeSettings.ts +++ b/src/components/theme/useThemeSettings.ts @@ -1,6 +1,7 @@ import React from 'react'; -import {ThemeSettings, ThemeSettingsContext} from './ThemeSettingsContext'; +import {ThemeSettingsContext} from './ThemeSettingsContext'; +import type {ThemeSettings} from './ThemeSettingsContext'; export function useThemeSettings(): [ThemeSettings, (s: ThemeSettings) => void] { const settings = React.useContext(ThemeSettingsContext); diff --git a/src/components/theme/useThemeType.ts b/src/components/theme/useThemeType.ts index f6d3fca77c..fcd97b1f36 100644 --- a/src/components/theme/useThemeType.ts +++ b/src/components/theme/useThemeType.ts @@ -1,5 +1,5 @@ import {getThemeType} from './getThemeType'; -import {ThemeType} from './types'; +import type {ThemeType} from './types'; import {useThemeValue} from './useThemeValue'; export function useThemeType(): ThemeType { diff --git a/src/components/theme/useThemeValue.ts b/src/components/theme/useThemeValue.ts index 114b855d9b..37a2d1c919 100644 --- a/src/components/theme/useThemeValue.ts +++ b/src/components/theme/useThemeValue.ts @@ -1,6 +1,7 @@ import React from 'react'; -import {ThemeValueContext, ThemeValueContextProps} from './ThemeValueContext'; +import {ThemeValueContext} from './ThemeValueContext'; +import type {ThemeValueContextProps} from './ThemeValueContext'; export function useThemeValue(): ThemeValueContextProps['themeValue'] { const {themeValue} = React.useContext(ThemeValueContext); diff --git a/src/components/theme/withTheme.tsx b/src/components/theme/withTheme.tsx index 69ee1f26fc..c5f0bc6782 100644 --- a/src/components/theme/withTheme.tsx +++ b/src/components/theme/withTheme.tsx @@ -1,10 +1,11 @@ -import React, {ContextType} from 'react'; +import React from 'react'; -import {Subtract} from 'utility-types'; +import type {Subtract} from 'utility-types'; import {getComponentName} from '../utils/getComponentName'; -import {ThemeContext, ThemeContextProps} from './ThemeContext'; +import {ThemeContext} from './ThemeContext'; +import type {ThemeContextProps} from './ThemeContext'; export interface WithThemeProps extends ThemeContextProps {} @@ -16,7 +17,7 @@ export function withTheme( return class WithThemeComponent extends React.Component> { static displayName = `withTheme(${componentName})`; static contextType = ThemeContext; - context!: ContextType; + context!: React.ContextType; render() { return ( diff --git a/src/components/theme/withThemeValue.tsx b/src/components/theme/withThemeValue.tsx index 752e22b656..c614087095 100644 --- a/src/components/theme/withThemeValue.tsx +++ b/src/components/theme/withThemeValue.tsx @@ -1,10 +1,11 @@ -import React, {ContextType} from 'react'; +import React from 'react'; -import {Subtract} from 'utility-types'; +import type {Subtract} from 'utility-types'; import {getComponentName} from '../utils/getComponentName'; -import {ThemeValueContext, ThemeValueContextProps} from './ThemeValueContext'; +import {ThemeValueContext} from './ThemeValueContext'; +import type {ThemeValueContextProps} from './ThemeValueContext'; export interface WithThemeValueProps extends ThemeValueContextProps {} @@ -16,7 +17,7 @@ export function withThemeValue( return class WithThemeValueComponent extends React.Component> { static displayName = `withThemeValue(${componentName})`; static contextType = ThemeValueContext; - context!: ContextType; + context!: React.ContextType; render() { return ; diff --git a/src/components/types.ts b/src/components/types.ts index 4859c22b00..72b4d5d66d 100644 --- a/src/components/types.ts +++ b/src/components/types.ts @@ -1,5 +1,3 @@ -import React from 'react'; - export interface DOMProps { style?: React.CSSProperties; className?: string; diff --git a/src/components/utils/FocusTrap.tsx b/src/components/utils/FocusTrap.tsx index 07aa218435..bb0367d881 100644 --- a/src/components/utils/FocusTrap.tsx +++ b/src/components/utils/FocusTrap.tsx @@ -1,6 +1,7 @@ -import React, {useContext} from 'react'; +import React from 'react'; -import {FocusTrap as FocusTrapInstance, createFocusTrap} from 'focus-trap'; +import {createFocusTrap} from 'focus-trap'; +import type {FocusTrap as FocusTrapInstance} from 'focus-trap'; import {useForkRef} from './useForkRef'; import {useUniqId} from './useUniqId'; @@ -15,7 +16,7 @@ const focusTrapContext = React.createContext(undef interface FocusTrapProps { enabled?: boolean; disableAutoFocus?: boolean; - children: React.ReactNode; + children: React.ReactElement; } export function FocusTrap({children, enabled = true, disableAutoFocus}: FocusTrapProps) { const nodeRef = React.useRef(null); @@ -78,7 +79,7 @@ export function FocusTrap({children, enabled = true, disableAutoFocus}: FocusTra ); const child = React.Children.only(children); - if (!React.isValidElement(child)) { + if (!React.isValidElement(child)) { throw new Error('Children must contain only one valid element'); } const childRef = (child as any).ref; @@ -93,7 +94,7 @@ export function FocusTrap({children, enabled = true, disableAutoFocus}: FocusTra } export function useParentFocusTrap() { - const actions = useContext(focusTrapContext); + const actions = React.useContext(focusTrapContext); const id = useUniqId(); return React.useMemo(() => { diff --git a/src/components/utils/LayerManager.ts b/src/components/utils/LayerManager.ts index 7e9f64ad8c..dba1a8c0f1 100644 --- a/src/components/utils/LayerManager.ts +++ b/src/components/utils/LayerManager.ts @@ -1,5 +1,3 @@ -import React from 'react'; - import type {VirtualElement} from '@popperjs/core'; import {eventBroker} from './event-broker'; diff --git a/src/components/utils/PortalProvider.tsx b/src/components/utils/PortalProvider.tsx index ffb07d76a9..edf69b01bb 100644 --- a/src/components/utils/PortalProvider.tsx +++ b/src/components/utils/PortalProvider.tsx @@ -1,14 +1,13 @@ -import React, {PropsWithChildren} from 'react'; -import type {RefObject} from 'react'; +import React from 'react'; -export const PortalContext = React.createContext>({current: null}); +export const PortalContext = React.createContext>({current: null}); PortalContext.displayName = 'PortalContext'; -export type PortalProviderProps = PropsWithChildren<{ - container: RefObject; +export type PortalProviderProps = React.PropsWithChildren<{ + container: React.RefObject; }>; -export const PortalProvider: React.FC = ({container, children}) => { +export function PortalProvider({container, children}: PortalProviderProps) { return {children}; -}; +} diff --git a/src/components/utils/__tests__/class-transform.test.ts b/src/components/utils/__tests__/class-transform.test.ts index f1dcef5144..b0e48900e0 100644 --- a/src/components/utils/__tests__/class-transform.test.ts +++ b/src/components/utils/__tests__/class-transform.test.ts @@ -1,4 +1,5 @@ -import {ElementClass, formatClass, parseClass} from '../class-transform'; +import {formatClass, parseClass} from '../class-transform'; +import type {ElementClass} from '../class-transform'; describe('class-transform', () => { function checkParseFormat(strClass: string, objClass: ElementClass) { diff --git a/src/components/utils/addComponentKeysets.ts b/src/components/utils/addComponentKeysets.ts index 90912abbc5..86555aebec 100644 --- a/src/components/utils/addComponentKeysets.ts +++ b/src/components/utils/addComponentKeysets.ts @@ -2,7 +2,7 @@ import type {KeysData} from '@gravity-ui/i18n'; import {i18n} from '../../i18n'; -import {Lang} from './configure'; +import type {Lang} from './configure'; export function addComponentKeysets(data: Record, keysetName: string) { Object.entries(data).forEach(([lang, keys]) => i18n.registerKeyset(lang, keysetName, keys)); diff --git a/src/components/utils/event-broker.ts b/src/components/utils/event-broker.ts index d04bbfbf27..1ada1ccfe7 100644 --- a/src/components/utils/event-broker.ts +++ b/src/components/utils/event-broker.ts @@ -1,6 +1,4 @@ -import React from 'react'; - -import {QAProps} from '../types'; +import type {QAProps} from '../types'; import {NAMESPACE} from './cn'; diff --git a/src/components/utils/getComponentName.ts b/src/components/utils/getComponentName.ts index c7823d38bc..67b31b5399 100644 --- a/src/components/utils/getComponentName.ts +++ b/src/components/utils/getComponentName.ts @@ -1,5 +1,3 @@ -import {ComponentType} from 'react'; - -export function getComponentName(Component: ComponentType) { +export function getComponentName(Component: React.ComponentType) { return Component.displayName || Component.name || 'Component'; } diff --git a/src/components/utils/isOfType.ts b/src/components/utils/isOfType.ts index 8ed73f615b..a0b2a2509c 100644 --- a/src/components/utils/isOfType.ts +++ b/src/components/utils/isOfType.ts @@ -1,15 +1,18 @@ -import {ComponentType, ReactElement, ReactNode, isValidElement} from 'react'; +import React from 'react'; -export function isOfType

(Component: ComponentType

) { +export function isOfType

(Component: React.ComponentType

) { return function isMatching( - component: ReactNode, - ): component is ReactElement { - if (!isValidElement(component)) { + component: React.ReactNode, + ): component is React.ReactElement { + if (!React.isValidElement(component)) { return false; } const {type} = component; - return type === Component || (type as ComponentType).displayName === Component.displayName; + return ( + type === React.Component || + (type as React.ComponentType).displayName === Component.displayName + ); }; } diff --git a/src/components/utils/transition.ts b/src/components/utils/transition.ts index 268c5668d1..ae466de894 100644 --- a/src/components/utils/transition.ts +++ b/src/components/utils/transition.ts @@ -1,4 +1,5 @@ -import {CnBlock, modsClassName} from './cn'; +import {modsClassName} from './cn'; +import type {CnBlock} from './cn'; export function getCSSTransitionClassNames(b: CnBlock) { return { diff --git a/src/components/utils/useActionHandlers.ts b/src/components/utils/useActionHandlers.ts deleted file mode 100644 index 3217677c6b..0000000000 --- a/src/components/utils/useActionHandlers.ts +++ /dev/null @@ -1,24 +0,0 @@ -import {KeyboardEvent, KeyboardEventHandler, useCallback} from 'react'; - -interface UseActionHandlersResult { - onKeyDown: KeyboardEventHandler; -} - -/** - * Emulates behaviour of system controls, that respond to Enter and Spacebar - * @param callback - */ -export function useActionHandlers( - callback?: (...args: any[]) => any, -): UseActionHandlersResult { - const onKeyDown = useCallback( - (event: KeyboardEvent) => { - if (['Enter', ' ', 'Spacebar'].includes(event.key)) { - callback?.(event); - } - }, - [callback], - ); - - return {onKeyDown}; -} diff --git a/src/components/utils/useBoolean.ts b/src/components/utils/useBoolean.ts index 0c959b2768..99ec98c834 100644 --- a/src/components/utils/useBoolean.ts +++ b/src/components/utils/useBoolean.ts @@ -1,4 +1,4 @@ -import {useCallback, useState} from 'react'; +import React from 'react'; type SetTrue = () => void; type SetFalse = () => void; @@ -7,11 +7,11 @@ type Toggle = () => void; export function useBoolean( initialState: boolean | (() => boolean), ): [boolean, SetTrue, SetFalse, Toggle] { - const [value, setValue] = useState(initialState); + const [value, setValue] = React.useState(initialState); return [ value, - useCallback(() => setValue(true), []), - useCallback(() => setValue(false), []), - useCallback(() => setValue((val) => !val), []), + React.useCallback(() => setValue(true), []), + React.useCallback(() => setValue(false), []), + React.useCallback(() => setValue((val) => !val), []), ]; } diff --git a/src/components/utils/useCheckbox.ts b/src/components/utils/useCheckbox.ts index 98e5fd800f..8f308c5bb8 100644 --- a/src/components/utils/useCheckbox.ts +++ b/src/components/utils/useCheckbox.ts @@ -1,6 +1,6 @@ import React from 'react'; -import {ControlProps} from '../types'; +import type {ControlProps} from '../types'; import {eventBroker} from './event-broker'; import {useForkRef} from './useForkRef'; diff --git a/src/components/utils/useConditionallyControlledState/useConditionallyControlledState.ts b/src/components/utils/useConditionallyControlledState/useConditionallyControlledState.ts index 4fa1c6a408..2f8d2f791f 100644 --- a/src/components/utils/useConditionallyControlledState/useConditionallyControlledState.ts +++ b/src/components/utils/useConditionallyControlledState/useConditionallyControlledState.ts @@ -1,12 +1,13 @@ -import type {Dispatch, SetStateAction} from 'react'; - import {useStateWithCallback} from '../useStateWithCallback'; -type UseConditionallyControlledStateResult = [T, Dispatch>]; +type UseConditionallyControlledStateResult = [ + T, + React.Dispatch>, +]; export function useConditionallyControlledState( property?: T, - setProperty?: Dispatch> | ((value: T) => void), + setProperty?: React.Dispatch> | ((value: T) => void), initialState?: T | (() => T), isControlled = property !== undefined && setProperty !== undefined, ): UseConditionallyControlledStateResult { diff --git a/src/components/utils/useElementSize.ts b/src/components/utils/useElementSize.ts index 4f6426134c..030fc2eb59 100644 --- a/src/components/utils/useElementSize.ts +++ b/src/components/utils/useElementSize.ts @@ -1,4 +1,4 @@ -import {MutableRefObject, useLayoutEffect, useState} from 'react'; +import React from 'react'; import _throttle from 'lodash/throttle'; import ResizeObserver from 'resize-observer-polyfill'; @@ -11,18 +11,18 @@ interface ElementSize { } export function useElementSize( - ref: MutableRefObject | null, + ref: React.MutableRefObject | null, // can be used, when it is needed to force reassign observer to element // in order to get correct measures. might be related to below // https://github.com/WICG/resize-observer/issues/65 key?: string, ) { - const [size, setSize] = useState({ + const [size, setSize] = React.useState({ width: 0, height: 0, }); - useLayoutEffect(() => { + React.useLayoutEffect(() => { if (!ref?.current) { return undefined; } diff --git a/src/components/utils/useEventBroker.ts b/src/components/utils/useEventBroker.ts index 7f11814c5e..1066e375ce 100644 --- a/src/components/utils/useEventBroker.ts +++ b/src/components/utils/useEventBroker.ts @@ -1,9 +1,10 @@ -import {useEffect} from 'react'; +import React from 'react'; -import {EventBrokerSubscription, eventBroker} from './event-broker'; +import {eventBroker} from './event-broker'; +import type {EventBrokerSubscription} from './event-broker'; export function useEventBroker(subscription: EventBrokerSubscription, broker = eventBroker) { - useEffect(() => { + React.useEffect(() => { broker.subscribe(subscription); return () => broker.unsubscribe(subscription); }, [broker, subscription]); diff --git a/src/components/utils/useFileInput/__stories__/UseFileInput.stories.tsx b/src/components/utils/useFileInput/__stories__/UseFileInput.stories.tsx index 968b54bf27..c349d14ef8 100644 --- a/src/components/utils/useFileInput/__stories__/UseFileInput.stories.tsx +++ b/src/components/utils/useFileInput/__stories__/UseFileInput.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {Button} from '../../../Button'; import {useFileInput} from '../useFileInput'; diff --git a/src/components/utils/useLayer.ts b/src/components/utils/useLayer.ts index 5cbe11d9d8..3e0748298d 100644 --- a/src/components/utils/useLayer.ts +++ b/src/components/utils/useLayer.ts @@ -1,6 +1,7 @@ import React from 'react'; -import {LayerCloseReason, LayerConfig, LayerExtendableProps, layerManager} from './LayerManager'; +import {layerManager} from './LayerManager'; +import type {LayerCloseReason, LayerConfig, LayerExtendableProps} from './LayerManager'; export type {LayerCloseReason, LayerExtendableProps}; diff --git a/src/components/utils/useListNavigation/useListNavigation.ts b/src/components/utils/useListNavigation/useListNavigation.ts index 4eaafc1a66..14155ffa01 100644 --- a/src/components/utils/useListNavigation/useListNavigation.ts +++ b/src/components/utils/useListNavigation/useListNavigation.ts @@ -1,4 +1,4 @@ -import {RefObject, useCallback, useEffect, useLayoutEffect, useState} from 'react'; +import React from 'react'; import {moveBack} from './moveBack'; import {moveForward} from './moveForward'; @@ -11,7 +11,7 @@ export type UseListNavigationProps = { processEndKey?: boolean; disabled?: boolean; initialValue?: number; - anchorRef?: RefObject; + anchorRef?: React.RefObject; onAnchorKeyDown?: (activeItemIndex: number, event: KeyboardEvent) => void | boolean; }; @@ -26,31 +26,31 @@ export function useListNavigation({ initialValue = -1, onAnchorKeyDown, }: UseListNavigationProps) { - const [activeItemIndex, setActiveItemIndex] = useState(initialValue); + const [activeItemIndex, setActiveItemIndex] = React.useState(initialValue); - const reset = useCallback(() => { + const reset = React.useCallback(() => { setActiveItemIndex(initialValue); }, [initialValue]); - useEffect(() => { + React.useEffect(() => { if (items) { reset(); } }, [items, reset]); - useLayoutEffect(() => { + React.useLayoutEffect(() => { if (disabled) { - return; + return undefined; } const canNavigate = items.some((item) => !skip?.(item)); if (!canNavigate) { - return; + return undefined; } const anchor = anchorRef?.current; if (!anchor) { - return; + return undefined; } const handleKeyDown = (event: KeyboardEvent) => { diff --git a/src/components/utils/usePopper.ts b/src/components/utils/usePopper.ts index d3796ad5ba..e251a13774 100644 --- a/src/components/utils/usePopper.ts +++ b/src/components/utils/usePopper.ts @@ -1,7 +1,8 @@ import React from 'react'; -import popper from '@popperjs/core'; -import {Modifier, usePopper as useReactPopper} from 'react-popper'; +import type popper from '@popperjs/core'; +import {usePopper as useReactPopper} from 'react-popper'; +import type {Modifier} from 'react-popper'; export type PopperPlacement = popper.Placement | popper.Placement[]; export type PopperOffset = [number, number]; diff --git a/src/components/utils/usePortalContainer.ts b/src/components/utils/usePortalContainer.ts index 232e30b8c0..392a81b82f 100644 --- a/src/components/utils/usePortalContainer.ts +++ b/src/components/utils/usePortalContainer.ts @@ -1,9 +1,9 @@ -import {useContext} from 'react'; +import React from 'react'; import {PortalContext} from './PortalProvider'; export function usePortalContainer(): HTMLElement | null { - const context = useContext(PortalContext); + const context = React.useContext(PortalContext); let defaultContainer = null; diff --git a/src/components/utils/useRadio.ts b/src/components/utils/useRadio.ts index ef0f23ecc6..2891a17020 100644 --- a/src/components/utils/useRadio.ts +++ b/src/components/utils/useRadio.ts @@ -1,6 +1,6 @@ import React from 'react'; -import {ControlProps} from '../types'; +import type {ControlProps} from '../types'; import {eventBroker} from './event-broker'; import {useForkRef} from './useForkRef'; diff --git a/src/components/utils/useRadioGroup.ts b/src/components/utils/useRadioGroup.ts index 9428d6f645..c211b8ac13 100644 --- a/src/components/utils/useRadioGroup.ts +++ b/src/components/utils/useRadioGroup.ts @@ -1,6 +1,6 @@ import React from 'react'; -import {ControlGroupProps} from '../types'; +import type {ControlGroupProps} from '../types'; import {useUniqId} from './useUniqId'; diff --git a/src/components/utils/useSelect/__tests__/useOpenState.test.tsx b/src/components/utils/useSelect/__tests__/useOpenState.test.tsx index 462eb8b0f4..fc03ed5804 100644 --- a/src/components/utils/useSelect/__tests__/useOpenState.test.tsx +++ b/src/components/utils/useSelect/__tests__/useOpenState.test.tsx @@ -1,6 +1,6 @@ import {renderHook} from '@testing-library/react'; -import {UseOpenProps} from '../types'; +import type {UseOpenProps} from '../types'; import {useOpenState} from '../useOpenState'; const renderUseOpenStateHook = (initialProps: UseOpenProps = {}) => { diff --git a/src/components/utils/useStateWithCallback.ts b/src/components/utils/useStateWithCallback.ts index 2290de5b05..6d8227f4fa 100644 --- a/src/components/utils/useStateWithCallback.ts +++ b/src/components/utils/useStateWithCallback.ts @@ -1,4 +1,4 @@ -import {useCallback, useState} from 'react'; +import React from 'react'; import {isFunction} from './typeCheckers'; @@ -6,9 +6,9 @@ export function useStateWithCallback( initialValue: T, callback?: (value: T) => void, ): [T, (nextValue: T | ((prevValue: T) => T)) => void] { - const [state, setState] = useState(initialValue); + const [state, setState] = React.useState(initialValue); - const setWithCallback = useCallback( + const setWithCallback = React.useCallback( (nextValue: T | ((value: T) => T)) => { if (isFunction(nextValue)) { setState((previousState: T) => { diff --git a/src/components/utils/useTimeout.ts b/src/components/utils/useTimeout.ts index e55c9afb06..d435cf4dde 100644 --- a/src/components/utils/useTimeout.ts +++ b/src/components/utils/useTimeout.ts @@ -3,7 +3,7 @@ import React from 'react'; export function useTimeout(callback: VoidFunction, ms: number | null | undefined): void { React.useEffect(() => { if (typeof ms !== 'number') { - return; + return undefined; } const timer = setTimeout(() => { diff --git a/src/components/utils/useUpdateEffect.ts b/src/components/utils/useUpdateEffect.ts index d0e5207a69..b087db01ac 100644 --- a/src/components/utils/useUpdateEffect.ts +++ b/src/components/utils/useUpdateEffect.ts @@ -1,9 +1,9 @@ -import {useEffect, useRef} from 'react'; +import React from 'react'; -export const useUpdateEffect: typeof useEffect = (effect, deps) => { - const isInitial = useRef(true); +export const useUpdateEffect: typeof React.useEffect = (effect, deps) => { + const isInitial = React.useRef(true); - useEffect(() => { + React.useEffect(() => { if (isInitial.current) { isInitial.current = false; return; diff --git a/src/components/utils/withEventBrokerDomHandlers.tsx b/src/components/utils/withEventBrokerDomHandlers.tsx index 7004a5983d..ab2b5ec0c2 100644 --- a/src/components/utils/withEventBrokerDomHandlers.tsx +++ b/src/components/utils/withEventBrokerDomHandlers.tsx @@ -1,12 +1,13 @@ -import React, {SyntheticEvent} from 'react'; +import React from 'react'; -import {EventBrokerData, eventBroker} from './event-broker'; +import {eventBroker} from './event-broker'; +import type {EventBrokerData} from './event-broker'; import {getComponentName} from './getComponentName'; type SupportedEvents = 'onClick' | 'onClickCapture'; export function withEventBrokerDomHandlers< - T extends Partial<{[k in SupportedEvents]: React.EventHandler}>, + T extends Partial<{[k in SupportedEvents]: React.EventHandler}>, >( Component: React.ComponentType, eventTypes: Array, @@ -20,7 +21,7 @@ export function withEventBrokerDomHandlers< const originalHandler = props[eventType]; return { ...handlers, - [eventType]: (event: SyntheticEvent) => { + [eventType]: (event: React.SyntheticEvent) => { eventBroker.publish({ eventId: eventType.replace(/^on/, '').toLowerCase(), domEvent: event, diff --git a/src/components/utils/xpath.ts b/src/components/utils/xpath.ts index 35f6f2f995..2bc5868436 100644 --- a/src/components/utils/xpath.ts +++ b/src/components/utils/xpath.ts @@ -1,8 +1,7 @@ -import React from 'react'; - import md5 from 'blueimp-md5'; -import {ElementClass, formatClass, parseClass} from './class-transform'; +import {formatClass, parseClass} from './class-transform'; +import type {ElementClass} from './class-transform'; export interface ElementClassWithInfo extends ElementClass { tag: string; diff --git a/src/demo/DocsDecorator/DocsDecorator.tsx b/src/demo/DocsDecorator/DocsDecorator.tsx index 40d649799f..8957eb716a 100644 --- a/src/demo/DocsDecorator/DocsDecorator.tsx +++ b/src/demo/DocsDecorator/DocsDecorator.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {DocsContainer, DocsContainerProps} from '@storybook/addon-docs'; +import {DocsContainer} from '@storybook/addon-docs'; +import type {DocsContainerProps} from '@storybook/addon-docs'; import block from 'bem-cn-lite'; import {MobileProvider, ThemeProvider, getThemeType} from '../..'; diff --git a/src/demo/Showcase/Showcase.tsx b/src/demo/Showcase/Showcase.tsx index 8a44792f40..7dc2fb8e34 100644 --- a/src/demo/Showcase/Showcase.tsx +++ b/src/demo/Showcase/Showcase.tsx @@ -1,18 +1,18 @@ -import React, {FC, PropsWithChildren, ReactNode} from 'react'; +import React from 'react'; import block from 'bem-cn-lite'; import './Showcase.scss'; -type Props = PropsWithChildren<{ +type Props = React.PropsWithChildren<{ title: string; - description?: ReactNode; + description?: React.ReactNode; className?: string; }>; const b = block('showcase'); -export const Showcase: FC = ({title, description, className, children}) => { +export function Showcase({title, description, className, children}: Props) { return (

{title}
@@ -20,4 +20,4 @@ export const Showcase: FC = ({title, description, className, children}) =
{children}
); -}; +} diff --git a/src/demo/ShowcaseGrid/ShowcaseGrid.tsx b/src/demo/ShowcaseGrid/ShowcaseGrid.tsx index 7e6b28f220..ccd7bd798b 100644 --- a/src/demo/ShowcaseGrid/ShowcaseGrid.tsx +++ b/src/demo/ShowcaseGrid/ShowcaseGrid.tsx @@ -1,8 +1,9 @@ -import React, {useMemo} from 'react'; +import React from 'react'; import {Text} from '../../components/Text'; -import {PropCombination, PropSequences, getPropsCombinations} from './getPropsCombinations'; +import {getPropsCombinations} from './getPropsCombinations'; +import type {PropCombination, PropSequences} from './getPropsCombinations'; type Combinations = PropCombination< Partial> @@ -19,7 +20,7 @@ export function ShowcaseGrid({ staticProps?: Partial>; rowKey?: keyof React.ComponentProps; }) { - const combinations = useMemo(() => { + const combinations = React.useMemo(() => { return getPropsCombinations({propsCombinations, staticProps}); }, [propsCombinations, staticProps]); diff --git a/src/demo/ShowcaseGrid/getPropsCombinations.test.ts b/src/demo/ShowcaseGrid/getPropsCombinations.test.ts index d34e23ebcb..49c8cc8d4c 100644 --- a/src/demo/ShowcaseGrid/getPropsCombinations.test.ts +++ b/src/demo/ShowcaseGrid/getPropsCombinations.test.ts @@ -1,10 +1,8 @@ -import type {ElementType} from 'react'; - import {getPropsCombinations} from './getPropsCombinations'; describe('getPropsCombinations', () => { it('Creates props combinations', () => { - type TestType = ElementType<{ + type TestType = React.ElementType<{ prop1: 'value11' | 'value12'; prop2: 'value21' | 'value22'; prop3: 'value31' | 'value32'; diff --git a/src/demo/ShowcaseGrid/getPropsCombinations.tsx b/src/demo/ShowcaseGrid/getPropsCombinations.tsx index 2dc56a0596..3e0dab5eae 100644 --- a/src/demo/ShowcaseGrid/getPropsCombinations.tsx +++ b/src/demo/ShowcaseGrid/getPropsCombinations.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - export type PropCombination = { [key in keyof PropType]: Array>; }; diff --git a/src/stories/Branding.stories.tsx b/src/stories/Branding.stories.tsx index fde7e3e66b..1449220532 100644 --- a/src/stories/Branding.stories.tsx +++ b/src/stories/Branding.stories.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; -import {Branding, BrandingProps} from '../demo/Branding/Branding'; +import {Branding} from '../demo/Branding/Branding'; +import type {BrandingProps} from '../demo/Branding/Branding'; export default { title: 'Branding', diff --git a/src/stories/Colors.stories.tsx b/src/stories/Colors.stories.tsx index 6f56921996..00050a6185 100644 --- a/src/stories/Colors.stories.tsx +++ b/src/stories/Colors.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react'; +import type {Meta, Story} from '@storybook/react'; import {RenderBackgrounds} from '../demo/colors/Base'; import {RenderEffects} from '../demo/colors/Effects'; diff --git a/src/stories/Typography.stories.tsx b/src/stories/Typography.stories.tsx index d14e3eb583..0ef0ac0e3f 100644 --- a/src/stories/Typography.stories.tsx +++ b/src/stories/Typography.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Meta, Story} from '@storybook/react/types-6-0'; +import type {Meta, Story} from '@storybook/react/types-6-0'; import {Typography} from '../demo/Typography/Typography'; diff --git a/tsconfig.json b/tsconfig.json index 381ef782c2..bac6aacb80 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@gravity-ui/tsconfig/tsconfig", + "extends": "@gravity-ui/tsconfig", "compilerOptions": { "allowJs": true, "outDir": "build/esm", @@ -7,7 +7,8 @@ "jsx": "react", "baseUrl": ".", "resolveJsonModule": true, - "importHelpers": true + "importHelpers": true, + "importsNotUsedAsValues": "error" }, "include": [ "src/**/*.ts", diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 0000000000..a24195dd5d --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,8 @@ +{ + "extends": "@gravity-ui/tsconfig", + "compilerOptions": { + "resolveJsonModule": true, + "module": "CommonJS", + "jsx": "react" + } +}