From 9abbaa6cd4ab36f5b815f7f9253efdfd42f5dd18 Mon Sep 17 00:00:00 2001 From: xiejay97 Date: Fri, 31 Dec 2021 18:13:04 +0800 Subject: [PATCH] feat(ui): add `notification` component --- package.json | 65 +- packages/site/project.json | 1 + packages/site/src/app/App.tsx | 16 +- .../app/components/route/RouteArticle.scss | 4 - .../src/app/routes/components/Interface.md | 3 +- .../routes/components/Interface.zh-Hant.md | 3 +- packages/site/src/app/styles/_app.scss | 9 +- .../components/_alert-dialog/AlertDialog.tsx | 84 ++ .../ui/src/components/_alert-dialog/index.ts | 1 + packages/ui/src/components/_dialog/Dialog.tsx | 17 +- .../ui/src/components/_header/Header.test.tsx | 12 +- packages/ui/src/components/_header/Header.tsx | 7 +- packages/ui/src/components/_popup/Popup.tsx | 4 +- packages/ui/src/components/affix/Affix.tsx | 4 +- packages/ui/src/components/anchor/Anchor.tsx | 4 +- packages/ui/src/components/button/Button.tsx | 9 + packages/ui/src/components/drawer/Drawer.tsx | 32 +- packages/ui/src/components/form/Error.tsx | 10 +- packages/ui/src/components/form/FormItem.tsx | 2 +- packages/ui/src/components/grid/Row.tsx | 3 +- packages/ui/src/components/index.ts | 6 + packages/ui/src/components/menu/Menu.tsx | 17 +- packages/ui/src/components/menu/MenuSub.tsx | 9 + .../components/notification/Notification.tsx | 205 +++ .../ui/src/components/notification/README.md | 67 + .../components/notification/README.zh-Hant.md | 66 + .../components/notification/demos/1.Basic.md | 32 + .../components/notification/demos/2.Type.md | 57 + .../components/notification/demos/3.Icon.md | 33 + .../notification/demos/4.Placement.md | 58 + .../demos/5.DynamicallySetting.md | 60 + .../ui/src/components/notification/index.ts | 1 + .../src/components/pagination/Pagination.tsx | 4 +- .../ui/src/components/root/Notification.tsx | 135 ++ packages/ui/src/components/root/Root.tsx | 31 + packages/ui/src/components/root/index.ts | 1 + .../src/hooks/{d-config.tsx => d-config.ts} | 42 +- packages/ui/src/hooks/index.ts | 2 +- .../ui/src/hooks/transition/transition.ts | 48 +- packages/ui/src/index.ts | 2 - packages/ui/src/styles/_components.scss | 1 + packages/ui/src/styles/_variables.scss | 12 +- .../ui/src/styles/components/_anchor.scss | 8 +- .../ui/src/styles/components/_checkbox.scss | 6 +- .../ui/src/styles/components/_dialog.scss | 9 - .../ui/src/styles/components/_drawer.scss | 7 +- .../ui/src/styles/components/_dropdown.scss | 7 +- packages/ui/src/styles/components/_form.scss | 2 +- .../ui/src/styles/components/_header.scss | 3 +- packages/ui/src/styles/components/_menu.scss | 9 +- .../src/styles/components/_notification.scss | 73 + .../ui/src/styles/components/_pagination.scss | 2 - packages/ui/src/styles/components/_popup.scss | 2 - .../ui/src/styles/components/_select.scss | 3 +- .../ui/src/styles/components/_separator.scss | 2 + packages/ui/src/styles/components/_tabs.scss | 2 +- packages/ui/src/styles/components/_tag.scss | 12 +- yarn.lock | 1190 ++++++++++------- 58 files changed, 1821 insertions(+), 695 deletions(-) create mode 100644 packages/ui/src/components/_alert-dialog/AlertDialog.tsx create mode 100644 packages/ui/src/components/_alert-dialog/index.ts create mode 100644 packages/ui/src/components/notification/Notification.tsx create mode 100644 packages/ui/src/components/notification/README.md create mode 100644 packages/ui/src/components/notification/README.zh-Hant.md create mode 100644 packages/ui/src/components/notification/demos/1.Basic.md create mode 100644 packages/ui/src/components/notification/demos/2.Type.md create mode 100644 packages/ui/src/components/notification/demos/3.Icon.md create mode 100644 packages/ui/src/components/notification/demos/4.Placement.md create mode 100644 packages/ui/src/components/notification/demos/5.DynamicallySetting.md create mode 100644 packages/ui/src/components/notification/index.ts create mode 100644 packages/ui/src/components/root/Notification.tsx create mode 100644 packages/ui/src/components/root/Root.tsx create mode 100644 packages/ui/src/components/root/index.ts rename packages/ui/src/hooks/{d-config.tsx => d-config.ts} (62%) create mode 100644 packages/ui/src/styles/components/_notification.scss diff --git a/package.json b/package.json index 637f34e0..19136da5 100644 --- a/package.json +++ b/package.json @@ -23,82 +23,83 @@ "build:executors": "tsc --project tools/tsconfig.json", "release": "standard-version", "prepare": "husky install && chmod ug+x .husky/*", - "prepublishOnly": "nx build ui" + "prepublishOnly": "nx build ui", + "check-update": "yarn upgrade-interactive --latest" }, "dependencies": { - "core-js": "^3.19.1", - "i18next": "^21.5.3", + "core-js": "^3.20.1", + "i18next": "^21.6.4", "immer": "^9.0.7", "lodash": "^4.17.21", "react": "18.0.0-rc.0", "react-dom": "18.0.0-rc.0", - "react-i18next": "^11.14.3", - "react-router-dom": "^6.0.2", + "react-i18next": "^11.15.2", + "react-router-dom": "^6.2.1", "regenerator-runtime": "^0.13.9", "rfs": "^9.0.6", - "rxjs": "^7.4.0", + "rxjs": "^7.5.1", "tslib": "^2.3.1" }, "devDependencies": { - "@commitlint/cli": "^15.0.0", - "@commitlint/config-conventional": "^15.0.0", - "@nrwl/cli": "^13.3.1", - "@nrwl/cypress": "^13.3.1", - "@nrwl/eslint-plugin-nx": "^13.3.1", - "@nrwl/jest": "^13.3.1", - "@nrwl/linter": "^13.3.1", - "@nrwl/nx-cloud": "latest", - "@nrwl/react": "^13.3.1", - "@nrwl/tao": "^13.3.1", - "@nrwl/web": "^13.3.1", - "@nrwl/workspace": "^13.3.1", + "@commitlint/cli": "^16.0.1", + "@commitlint/config-conventional": "^16.0.0", + "@nrwl/cli": "^13.4.1", + "@nrwl/cypress": "^13.4.1", + "@nrwl/eslint-plugin-nx": "^13.4.1", + "@nrwl/jest": "^13.4.1", + "@nrwl/linter": "^13.4.1", + "@nrwl/nx-cloud": "13.0.1", + "@nrwl/react": "^13.4.1", + "@nrwl/tao": "^13.4.1", + "@nrwl/web": "^13.4.1", + "@nrwl/workspace": "^13.4.1", "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "13.0.0-alpha.5", "@testing-library/react-hooks": "^7.0.2", "@types/enzyme": "^3.10.10", "@types/fs-extra": "^9.0.13", - "@types/jest": "^27.0.3", + "@types/jest": "^27.4.0", "@types/lodash": "^4.14.177", "@types/marked": "^3.0.1", - "@types/node": "^16.11.10", - "@types/react": "^17.0.37", + "@types/node": "^17.0.5", + "@types/react": "^17.0.38", "@types/react-dom": "^17.0.11", - "@typescript-eslint/eslint-plugin": "^5.4.0", - "@typescript-eslint/parser": "^5.4.0", - "babel-jest": "^27.3.1", - "cypress": "^9.1.0", + "@typescript-eslint/eslint-plugin": "^5.8.1", + "@typescript-eslint/parser": "^5.8.1", + "babel-jest": "^27.4.5", + "cypress": "^9.2.0", "dotenv": "^10.0.0", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.6", - "eslint": "^8.2.0", + "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-import": "^2.25.3", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-markdown": "^2.2.1", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react": "^7.28.0", "eslint-plugin-react-hooks": "^4.3.0", "fs-extra": "^10.0.0", "highlight.js": "^11.3.1", "husky": "^7.0.4", - "jest": "^27.3.1", + "jest": "^27.4.5", "marked": "^3.0.4", "postcss-html": "^1.3.0", "postcss-markdown": "^1.2.0", "prettier": "^2.5.0", "react-test-renderer": "^17.0.2", "rxjs-for-await": "^1.0.0", - "sass": "^1.43.5", + "sass": "^1.45.2", "standard-version": "^9.3.2", - "stylelint": "^14.1.0", + "stylelint": "^14.2.0", "stylelint-config-prettier": "^9.0.3", "stylelint-config-rational-order": "^0.1.2", "stylelint-config-recommended-scss": "^5.0.2", "stylelint-config-standard": "^24.0.0", "stylelint-order": "^5.0.0", - "stylelint-scss": "^4.0.0", - "ts-jest": "^27.0.7", + "stylelint-scss": "^4.1.0", + "ts-jest": "^27.1.2", "ts-node": "^10.4.0", "typescript": "~4.5.2", "yaml-front-matter": "^4.1.1" diff --git a/packages/site/project.json b/packages/site/project.json index 4100e433..d6ba7936 100644 --- a/packages/site/project.json +++ b/packages/site/project.json @@ -15,6 +15,7 @@ "outputs": ["{options.outputPath}"], "defaultConfiguration": "production", "options": { + "compiler": "babel", "deployUrl": "/", "outputPath": "dist/packages/site", "index": "packages/site/src/index.html", diff --git a/packages/site/src/app/App.tsx b/packages/site/src/app/App.tsx index ebb8835e..d65560f8 100644 --- a/packages/site/src/app/App.tsx +++ b/packages/site/src/app/App.tsx @@ -1,7 +1,8 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; +import { useLocation } from 'react-router-dom'; -import { DConfigRoot } from '@react-devui/ui'; +import { DRoot, NotificationService } from '@react-devui/ui'; import { useAsync } from '@react-devui/ui/hooks'; import { environment } from '../environments/environment'; @@ -55,6 +56,11 @@ export function App() { } }, [asyncCapture, mainEl]); + const location = useLocation(); + useEffect(() => { + NotificationService.closeAll(false); + }, [location]); + const contextValue = useMemo( () => ({ menuOpen, @@ -79,15 +85,15 @@ export function App() { ); return ( - - + +
-
-
+ + ); } diff --git a/packages/site/src/app/components/route/RouteArticle.scss b/packages/site/src/app/components/route/RouteArticle.scss index 4ab718c2..b144a883 100644 --- a/packages/site/src/app/components/route/RouteArticle.scss +++ b/packages/site/src/app/components/route/RouteArticle.scss @@ -18,10 +18,6 @@ z-index: 910; width: 168px; - - .d-anchor-link__link { - padding: 4px 0; - } } .app-route-article__anchor-conatiner { diff --git a/packages/site/src/app/routes/components/Interface.md b/packages/site/src/app/routes/components/Interface.md index 762643e5..cf2d3422 100644 --- a/packages/site/src/app/routes/components/Interface.md +++ b/packages/site/src/app/routes/components/Interface.md @@ -76,7 +76,8 @@ Extend `React.HTMLAttributes`. | Property | Description | Type | Default | | --- | --- | --- | --- | -| dCloseIcon | Set the icon of the close button, `null` means hide the button | React.ReactNode | - | +| dClosable | Can be closed | boolean | false | +| dCloseIcon | Custom close icon | React.ReactNode | - | | dExtraIcons | Add some extra action buttons | React.ReactNode[] | - | | onClose | Callback when the close button is clicked | `() => void` | - | diff --git a/packages/site/src/app/routes/components/Interface.zh-Hant.md b/packages/site/src/app/routes/components/Interface.zh-Hant.md index 4c3aaf78..0ee1ad4d 100644 --- a/packages/site/src/app/routes/components/Interface.zh-Hant.md +++ b/packages/site/src/app/routes/components/Interface.zh-Hant.md @@ -76,7 +76,8 @@ interface DTransitionStateList { | 参数 | 说明 | 类型 | 默认值 | | --- | --- | --- | --- | -| dCloseIcon | 设置关闭按钮的图标, `null` 表示隐藏按钮 | React.ReactNode | - | +| dClosable | 是否可关闭 | boolean | false | +| dCloseIcon | 设置关闭按钮的图标 | React.ReactNode | - | | dExtraIcons | 添加一些额外的操作按钮 | React.ReactNode[] | - | | onClose | 点击关闭按钮的回调 | `() => void` | - | diff --git a/packages/site/src/app/styles/_app.scss b/packages/site/src/app/styles/_app.scss index 038d239c..d4a1f08f 100644 --- a/packages/site/src/app/styles/_app.scss +++ b/packages/site/src/app/styles/_app.scss @@ -190,10 +190,15 @@ h3 { .app-component-route-article__demos { section[id^='Button'], section[id^='Dropdown'], - section[id^='Tooltip'] { + section[id^='Tooltip'], + section[id^='Notification'] { .d-button { margin-right: 8px; margin-bottom: 12px; + + &.d-button--block { + margin-right: 0; + } } .d-button-group { @@ -232,8 +237,6 @@ h3 { background-color: var(--d-color-primary); - @include font-size(0.8rem); - & + &, & + .app-demo-drag-placeholder, .app-demo-drag-placeholder + & { diff --git a/packages/ui/src/components/_alert-dialog/AlertDialog.tsx b/packages/ui/src/components/_alert-dialog/AlertDialog.tsx new file mode 100644 index 00000000..7fd38388 --- /dev/null +++ b/packages/ui/src/components/_alert-dialog/AlertDialog.tsx @@ -0,0 +1,84 @@ +import { useCallback, useEffect, useRef } from 'react'; + +import { useAsync } from '../../hooks'; + +export interface DAlertDialogProps extends React.HTMLAttributes { + dHidden: boolean; + dDuration: number; + dDialogRef?: React.LegacyRef; + onClose?: () => void; +} + +export function DAlertDialog(props: DAlertDialogProps) { + const { dHidden, dDuration, dDialogRef, onClose, children, onKeyDown, onMouseEnter, onMouseLeave, ...restProps } = props; + + const dataRef = useRef<{ clearTid: (() => void) | null }>({ + clearTid: null, + }); + + const asyncCapture = useAsync(); + + const handleKeyDown = useCallback>( + (e) => { + onKeyDown?.(e); + + if (e.code === 'Escape') { + dataRef.current.clearTid && dataRef.current.clearTid(); + onClose?.(); + } + }, + [onClose, onKeyDown] + ); + + const handleMouseEnter = useCallback>( + (e) => { + onMouseEnter?.(e); + + dataRef.current.clearTid && dataRef.current.clearTid(); + }, + [onMouseEnter] + ); + + const handleMouseLeave = useCallback>( + (e) => { + onMouseLeave?.(e); + + if (dDuration > 0) { + dataRef.current.clearTid && dataRef.current.clearTid(); + dataRef.current.clearTid = asyncCapture.setTimeout(() => { + onClose?.(); + }, dDuration * 1000); + } + }, + [asyncCapture, dDuration, onClose, onMouseLeave] + ); + + useEffect(() => { + if (dDuration > 0) { + dataRef.current.clearTid && dataRef.current.clearTid(); + dataRef.current.clearTid = asyncCapture.setTimeout(() => { + onClose?.(); + }, dDuration * 1000); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + // eslint-disable-next-line react/jsx-no-useless-fragment + <> + {!dHidden && ( +
+ {children} +
+ )} + + ); +} diff --git a/packages/ui/src/components/_alert-dialog/index.ts b/packages/ui/src/components/_alert-dialog/index.ts new file mode 100644 index 00000000..76a82004 --- /dev/null +++ b/packages/ui/src/components/_alert-dialog/index.ts @@ -0,0 +1 @@ +export * from './AlertDialog'; diff --git a/packages/ui/src/components/_dialog/Dialog.tsx b/packages/ui/src/components/_dialog/Dialog.tsx index 026852da..ab09f841 100644 --- a/packages/ui/src/components/_dialog/Dialog.tsx +++ b/packages/ui/src/components/_dialog/Dialog.tsx @@ -5,29 +5,23 @@ import { getClassName, mergeStyle } from '../../utils'; import { DMask } from './Mask'; export interface DDialogProps extends React.HTMLAttributes { - dId: string; dVisible: boolean; dHidden: boolean; - dContentProps?: React.HTMLAttributes; dMask?: boolean; dMaskClosable?: boolean; dDestroy?: boolean; dDialogRef?: React.LegacyRef; - dDialogContentRef?: React.LegacyRef; onClose?: () => void; } export function DDialog(props: DDialogProps) { const { - dId, dVisible, dHidden, - dContentProps, dMask = true, dMaskClosable = true, dDestroy = false, dDialogRef, - dDialogContentRef, onClose, className, style, @@ -70,18 +64,9 @@ export function DDialog(props: DDialogProps) { style={mergeStyle(style, { display: dHidden ? 'none' : undefined })} role="dialog" aria-modal="true" - aria-describedby={`${dPrefix}dialog-content-${dId}`} > {dMask && } -
- {children} -
+ {children} )} diff --git a/packages/ui/src/components/_header/Header.test.tsx b/packages/ui/src/components/_header/Header.test.tsx index 2843da96..ea9cb2fc 100644 --- a/packages/ui/src/components/_header/Header.test.tsx +++ b/packages/ui/src/components/_header/Header.test.tsx @@ -6,6 +6,11 @@ import { DHeader } from './Header'; const icon = ; describe('DHeader', () => { + it('should `dClosable` work', () => { + render(); + expect(screen.queryAllByRole('button').length).toBe(0); + }); + it('should `dCloseIcon` work', () => { render(); expect(screen.getAllByRole('button').length).toBe(1); @@ -16,13 +21,8 @@ describe('DHeader', () => { expect(screen.getAllByTestId('custom-icon').length).toBe(1); }); - it('should `dCloseIcon` null work', () => { - render(); - expect(screen.queryAllByRole('button').length).toBe(0); - }); - it('should `dExtraIcons` work', () => { - render(); + render(); expect(screen.getAllByRole('button').length).toBe(2); }); diff --git a/packages/ui/src/components/_header/Header.tsx b/packages/ui/src/components/_header/Header.tsx index 531a693b..b513b1f9 100644 --- a/packages/ui/src/components/_header/Header.tsx +++ b/packages/ui/src/components/_header/Header.tsx @@ -7,13 +7,14 @@ import { DButton } from '../button'; import { DIcon } from '../icon'; export interface DHeaderProps extends React.HTMLAttributes { + dClosable?: boolean; dCloseIcon?: React.ReactNode; dExtraIcons?: React.ReactNode[]; onClose?: () => void; } export function DHeader(props: DHeaderProps) { - const { dCloseIcon, dExtraIcons, onClose, className, children, ...restProps } = props; + const { dClosable = true, dCloseIcon, dExtraIcons, onClose, className, children, ...restProps } = props; //#region Context const dPrefix = usePrefixConfig(); @@ -30,8 +31,9 @@ export function DHeader(props: DHeaderProps) {
{children}
{dExtraIcons && dExtraIcons.map((icon, index) => )} - {dCloseIcon !== null && ( + {dClosable && ( )} diff --git a/packages/ui/src/components/_popup/Popup.tsx b/packages/ui/src/components/_popup/Popup.tsx index 266e79d1..3b1e881f 100644 --- a/packages/ui/src/components/_popup/Popup.tsx +++ b/packages/ui/src/components/_popup/Popup.tsx @@ -13,7 +13,7 @@ import { useRefSelector, useImmer, useRefCallback, - useRootContentConfig, + useContentRefConfig, useDTransition, useMaxIndex, } from '../../hooks'; @@ -91,7 +91,7 @@ const Popup: React.ForwardRefRenderFunction = (props, re //#region Context const dPrefix = usePrefixConfig(); - const rootContentRef = useRootContentConfig(); + const rootContentRef = useContentRefConfig(); //#endregion //#region Ref diff --git a/packages/ui/src/components/affix/Affix.tsx b/packages/ui/src/components/affix/Affix.tsx index bda2c9f1..e07cd7bc 100644 --- a/packages/ui/src/components/affix/Affix.tsx +++ b/packages/ui/src/components/affix/Affix.tsx @@ -10,7 +10,7 @@ import { useRefSelector, useImmer, useRefCallback, - useRootContentConfig, + useContentRefConfig, useValueChange, } from '../../hooks'; import { getClassName, toPx, mergeStyle } from '../../utils'; @@ -43,7 +43,7 @@ const Affix: React.ForwardRefRenderFunction = (props, re //#region Context const dPrefix = usePrefixConfig(); - const rootContentRef = useRootContentConfig(); + const rootContentRef = useContentRefConfig(); //#endregion //#region Ref diff --git a/packages/ui/src/components/anchor/Anchor.tsx b/packages/ui/src/components/anchor/Anchor.tsx index 10f5f9ee..1514d519 100644 --- a/packages/ui/src/components/anchor/Anchor.tsx +++ b/packages/ui/src/components/anchor/Anchor.tsx @@ -11,7 +11,7 @@ import { useImmer, useAsync, useRefCallback, - useRootContentConfig, + useContentRefConfig, useValueChange, } from '../../hooks'; import { getClassName, CustomScroll } from '../../utils'; @@ -49,7 +49,7 @@ export const DAnchor = (props: DAnchorProps) => { //#region Context const dPrefix = usePrefixConfig(); - const rootContentRef = useRootContentConfig(); + const rootContentRef = useContentRefConfig(); //#endregion //#region Ref diff --git a/packages/ui/src/components/button/Button.tsx b/packages/ui/src/components/button/Button.tsx index b880724c..b0e585c2 100644 --- a/packages/ui/src/components/button/Button.tsx +++ b/packages/ui/src/components/button/Button.tsx @@ -90,9 +90,18 @@ const Button: React.ForwardRefRenderFunction = (props, ); + const transitionState = { + 'enter-from': { width: '0' }, + 'enter-to': { transition: 'width 0.3s linear' }, + 'leave-to': { width: '0', transition: 'width 0.3s linear' }, + }; const hidden = useDCollapseTransition({ dEl: loadingEl, dVisible: dLoading, + dCallbackList: { + beforeEnter: () => transitionState, + beforeLeave: () => transitionState, + }, dDirection: 'horizontal', }); diff --git a/packages/ui/src/components/drawer/Drawer.tsx b/packages/ui/src/components/drawer/Drawer.tsx index b621cb9a..ddb0a894 100644 --- a/packages/ui/src/components/drawer/Drawer.tsx +++ b/packages/ui/src/components/drawer/Drawer.tsx @@ -206,17 +206,6 @@ export function DDrawer(props: DDrawerProps) { [closeDrawer, uniqueId] ); - const contentProps = useMemo>( - () => ({ - className: getClassName(`${dPrefix}drawer__content`, `${dPrefix}drawer__content--${dPlacement}`), - style: { - width: dPlacement === 'left' || dPlacement === 'right' ? dWidth : undefined, - height: dPlacement === 'bottom' || dPlacement === 'top' ? dHeight : undefined, - }, - }), - [dHeight, dPlacement, dPrefix, dWidth] - ); - const drawerNode = ( <> - {dHeader} -
{children}
- {dFooter} +
+ {dHeader} +
{children}
+ {dFooter} +
{childDrawer} diff --git a/packages/ui/src/components/form/Error.tsx b/packages/ui/src/components/form/Error.tsx index cbce5082..a3ec3749 100644 --- a/packages/ui/src/components/form/Error.tsx +++ b/packages/ui/src/components/form/Error.tsx @@ -21,11 +21,19 @@ export function DError(props: DErrorProps) { const [el, ref] = useRefCallback(); //#endregion + const transitionState = { + 'enter-from': { height: '0', opacity: '0' }, + 'enter-to': { transition: 'height 133ms ease-out, opacity 133ms ease-out' }, + 'leave-to': { height: '0', opacity: '0', transition: 'height 133ms ease-in, opacity 133ms ease-in' }, + }; const hidden = useDCollapseTransition({ dEl: el, dVisible, dSkipFirst: false, - dDuring: 133, + dCallbackList: { + beforeEnter: () => transitionState, + beforeLeave: () => transitionState, + }, afterLeave: () => { onHidden?.(); }, diff --git a/packages/ui/src/components/form/FormItem.tsx b/packages/ui/src/components/form/FormItem.tsx index ed8b3451..9330ba05 100644 --- a/packages/ui/src/components/form/FormItem.tsx +++ b/packages/ui/src/components/form/FormItem.tsx @@ -371,7 +371,7 @@ export function DFormItem(props: DFormItemProps) {
)} -
+
{errorsNode}
diff --git a/packages/ui/src/components/grid/Row.tsx b/packages/ui/src/components/grid/Row.tsx index d7585b42..0c00f79f 100644 --- a/packages/ui/src/components/grid/Row.tsx +++ b/packages/ui/src/components/grid/Row.tsx @@ -1,6 +1,5 @@ import type { DColProps } from './Col'; -import { freeze } from 'immer'; import { isArray, isEqual, isNumber, isObject, isString, isUndefined } from 'lodash'; import React, { useCallback, useEffect, useMemo } from 'react'; @@ -30,7 +29,7 @@ const DEFAULT_PROPS = { ['xxl', 1400], ]), }; -export const MEDIA_QUERY_LIST = freeze(Array.from(DEFAULT_PROPS.dBreakpoints.keys())); +export const MEDIA_QUERY_LIST = Object.freeze(Array.from(DEFAULT_PROPS.dBreakpoints.keys())); export function DRow(props: DRowProps) { const { dColNum = 12, diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index 1b3c29d6..869f7394 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -40,12 +40,18 @@ export { DInput, DInputAffix } from './input'; export type { DMenuProps, DMenuGroupProps, DMenuItemProps, DMenuSubProps } from './menu'; export { DMenu, DMenuGroup, DMenuItem, DMenuSub } from './menu'; +export type { DNotificationProps } from './notification'; +export { NotificationService } from './notification'; + export type { DPaginationProps } from './pagination'; export { DPagination } from './pagination'; export type { DRadioProps, DRadioGroupProps } from './radio'; export { DRadio, DRadioGroup } from './radio'; +export type { DRootProps } from './root'; +export { DRoot } from './root'; + export type { DSelectSingleProps, DSelectMultipleProps } from './select'; export { DSelect } from './select'; diff --git a/packages/ui/src/components/menu/Menu.tsx b/packages/ui/src/components/menu/Menu.tsx index 20ad07e6..cdc48977 100644 --- a/packages/ui/src/components/menu/Menu.tsx +++ b/packages/ui/src/components/menu/Menu.tsx @@ -5,7 +5,7 @@ import { isUndefined } from 'lodash'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { usePrefixConfig, useComponentConfig, useImmer, useRefCallback, useTwoWayBinding, useDCollapseTransition } from '../../hooks'; -import { getClassName } from '../../utils'; +import { getClassName, mergeStyle } from '../../utils'; import { DTrigger } from '../_trigger'; import { DMenuItem } from './MenuItem'; import { DMenuSub } from './MenuSub'; @@ -45,6 +45,7 @@ export function DMenu(props: DMenuProps) { onActiveChange, onExpandsChange, className, + style, children, onMouseEnter, onMouseLeave, @@ -159,12 +160,19 @@ export function DMenu(props: DMenuProps) { }); }, [children]); - useDCollapseTransition({ + const transitionState = { + 'enter-from': { width: '80px' }, + 'enter-to': { transition: 'width 0.2s linear' }, + 'leave-to': { width: '80px', transition: 'width 0.2s linear' }, + }; + const hidden = useDCollapseTransition({ dEl: navEl, dVisible: dMode !== 'icon', + dCallbackList: { + beforeEnter: () => transitionState, + beforeLeave: () => transitionState, + }, dDirection: 'horizontal', - dDuring: 200, - dSpace: 80, }); return ( @@ -178,6 +186,7 @@ export function DMenu(props: DMenuProps) { className={getClassName(className, `${dPrefix}menu`, { [`${dPrefix}menu--horizontal`]: dMode === 'horizontal', })} + style={mergeStyle(style, { width: hidden ? 80 : undefined })} tabIndex={-1} role="menubar" aria-orientation={dMode === 'horizontal' ? 'horizontal' : 'vertical'} diff --git a/packages/ui/src/components/menu/MenuSub.tsx b/packages/ui/src/components/menu/MenuSub.tsx index 0beba079..4860ceed 100644 --- a/packages/ui/src/components/menu/MenuSub.tsx +++ b/packages/ui/src/components/menu/MenuSub.tsx @@ -276,9 +276,18 @@ export function DMenuSub(props: DMenuSubProps) { [stateBackflow] ); + const transitionState = { + 'enter-from': { height: '0' }, + 'enter-to': { transition: 'height 0.2s linear' }, + 'leave-to': { height: '0', transition: 'height 0.2s linear' }, + }; const hidden = useDCollapseTransition({ dEl: menuCollapseEl, dVisible: popupMode ? false : expand, + dCallbackList: { + beforeEnter: () => transitionState, + beforeLeave: () => transitionState, + }, dDuring: 200, }); diff --git a/packages/ui/src/components/notification/Notification.tsx b/packages/ui/src/components/notification/Notification.tsx new file mode 100644 index 00000000..42343e25 --- /dev/null +++ b/packages/ui/src/components/notification/Notification.tsx @@ -0,0 +1,205 @@ +import { isUndefined } from 'lodash'; +import React, { useId } from 'react'; +import { Subject } from 'rxjs'; + +import { usePrefixConfig, useComponentConfig, useRefCallback, useDTransition, useTranslation } from '../../hooks'; +import { getClassName } from '../../utils'; +import { DAlertDialog } from '../_alert-dialog'; +import { DButton } from '../button'; +import { DIcon } from '../icon'; + +export interface DNotificationProps extends React.HTMLAttributes { + dType?: 'success' | 'warning' | 'error' | 'info'; + dIcon?: React.ReactNode; + dTitle?: React.ReactNode; + dDescription?: React.ReactNode; + dDuration?: number; + dPlacement?: 'left-top' | 'right-top' | 'left-bottom' | 'right-bottom'; + dClosable?: boolean; + dCloseIcon?: React.ReactNode; + onClose?: () => void; + afterVisibleChange?: (visible: boolean) => void; +} + +export const notificationSubject = { + open: new Subject<{ uniqueId: number; props: DNotificationProps }>(), + close: new Subject(), + rerender: new Subject<{ uniqueId: number; props: DNotificationProps }>(), + closeAll: new Subject(), +}; + +class Notification { + constructor(private _uniqueId: number) {} + + get uniqueId() { + return this._uniqueId; + } + + close() { + NotificationService.close(this._uniqueId); + } + + rerender(props: DNotificationProps) { + NotificationService.rerender(this._uniqueId, props); + } +} + +let NOTIFICATIONS: Notification[] = []; +let UNIQUEID = 1; +export class NotificationService { + static get notifications() { + return [...NOTIFICATIONS]; + } + + static open(props: DNotificationProps) { + UNIQUEID += 1; + notificationSubject.open.next({ uniqueId: UNIQUEID, props }); + const notification = new Notification(UNIQUEID); + NOTIFICATIONS.push(notification); + return notification; + } + + static close(uniqueId: number) { + NOTIFICATIONS = NOTIFICATIONS.filter((item) => item.uniqueId !== uniqueId); + notificationSubject.close.next(uniqueId); + } + + static rerender(uniqueId: number, props: DNotificationProps) { + notificationSubject.rerender.next({ uniqueId, props }); + } + + static closeAll(animation = true) { + NOTIFICATIONS = []; + notificationSubject.closeAll.next(animation); + } +} + +export function DNotification(props: DNotificationProps & { dVisible: boolean }) { + const { + dVisible, + dType, + dIcon, + dTitle, + dDescription, + dDuration = 9.6, + dPlacement = 'right-top', + dClosable = true, + dCloseIcon, + onClose, + afterVisibleChange, + className, + ...restProps + } = useComponentConfig(DNotification.name, props); + + //#region Context + const dPrefix = usePrefixConfig(); + //#endregion + + //#region Ref + const [dialogEl, dialogRef] = useRefCallback(); + //#endregion + + const [t] = useTranslation('Common'); + + const uniqueId = useId(); + + const hidden = useDTransition({ + dEl: dialogEl, + dVisible, + dSkipFirst: false, + dCallbackList: { + beforeEnter: () => { + const transform = dPlacement === 'left-top' || dPlacement === 'left-bottom' ? 'translate(-100%, 0)' : 'translate(100%, 0)'; + return { + 'enter-from': { transform }, + 'enter-to': { transition: 'transform 133ms ease-out' }, + }; + }, + beforeLeave: (el) => { + const rect = el.getBoundingClientRect(); + + return { + 'leave-from': { height: rect.height + 'px' }, + 'leave-active': { overflow: 'hidden' }, + 'leave-to': { + height: '0', + opacity: '0', + margin: '0', + transition: 'height 166ms ease-in, opacity 166ms ease-in, margin 166ms ease-in', + }, + }; + }, + }, + afterEnter: () => { + afterVisibleChange?.(true); + }, + afterLeave: () => { + afterVisibleChange?.(false); + }, + }); + + return ( + + {(!isUndefined(dType) || !isUndefined(dIcon)) && ( +
+ {!isUndefined(dIcon) ? ( + dIcon + ) : dType === 'success' ? ( + + + + + ) : dType === 'warning' ? ( + + + + ) : dType === 'error' ? ( + + + + + ) : ( + + + + + )} +
+ )} +
+ {!isUndefined(dTitle) && ( +
+ {dTitle} +
+ )} +
{dDescription}
+ {dClosable && ( + + + + ) : ( + dCloseIcon + ) + } + onClick={onClose} + > + )} +
+
+ ); +} diff --git a/packages/ui/src/components/notification/README.md b/packages/ui/src/components/notification/README.md new file mode 100644 index 00000000..6f26af21 --- /dev/null +++ b/packages/ui/src/components/notification/README.md @@ -0,0 +1,67 @@ +--- +group: Feedback +title: Notification +--- + +Notification. + +## When To Use + +Global display notification reminder information. + +## API + +### DNotificationProps + +Extend `React.HTMLAttributes`. + + +| Property | Description | Type | Default | +| --- | --- | --- | --- | +| dType | Notification type | 'success' \| 'warning' \| 'error' \| 'info' | - | +| dIcon | Custom notification icon | React.ReactNode | - | +| dTitle | Title | React.ReactNode | - | +| dDescription | Description | React.ReactNode | - | +| dDuration | Display duration, will not be closed automatically when it is 0 | number | 9.6 | +| dPlacement | Notification pop-up direction | 'left-top' \| 'right-top' \| 'left-bottom' \| 'right-bottom' | 'right-top' | +| dClosable | Can be closed | boolean | true | +| dCloseIcon | Customize the close icon | React.ReactNode | - | +| onClose | Callback when the notification is closed | `() => void` | - | +| afterVisibleChange | Callback to the end of the opening/closing animation | `(visible: boolean) => void` | - | + + +### NotificationService + +```tsx +class NotificationService { + // Notification list + static readonly notifications: Notification[]; + + // Open notification + static open(props: DNotificationProps): Notification; + + // Close notification + static close(uniqueId: number): void; + + // Update notification + static rerender(uniqueId: number, props: DNotificationProps): void; + + // Close all notifications + static closeAll(animation = true): void; +} +``` + +### Notification + +```tsx +class Notification { + // Uniquely identifies + readonly uniqueId: number; + + // Close notification + close(): void; + + // Update notification + rerender(props: DNotificationProps): void; +} +``` diff --git a/packages/ui/src/components/notification/README.zh-Hant.md b/packages/ui/src/components/notification/README.zh-Hant.md new file mode 100644 index 00000000..8680e754 --- /dev/null +++ b/packages/ui/src/components/notification/README.zh-Hant.md @@ -0,0 +1,66 @@ +--- +title: 通知 +--- + +通知。 + +## 何时使用 + +全局展示通知提醒信息。 + +## API + +### DNotificationProps + +继承 `React.HTMLAttributes`。 + + +| 参数 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| dType | 通知类型 | 'success' \| 'warning' \| 'error' \| 'info' | - | +| dIcon | 自定义通知图标 | React.ReactNode | - | +| dTitle | 标题 | React.ReactNode | - | +| dDescription | 描述信息 | React.ReactNode | - | +| dDuration | 显示时长,为 0 时不会自动关闭 | number | 9.6 | +| dPlacement | 通知弹出方向 | 'left-top' \| 'right-top' \| 'left-bottom' \| 'right-bottom' | 'right-top' | +| dClosable | 是否可关闭 | boolean | true | +| dCloseIcon | 自定义关闭图标 | React.ReactNode | - | +| onClose | 通知关闭时的回调 | `() => void` | - | +| afterVisibleChange | 通知打开/关闭动画结束的回调 | `(visible: boolean) => void` | - | + + +### NotificationService + +```tsx +class NotificationService { + // 通知列表 + static readonly notifications: Notification[]; + + // 打开通知 + static open(props: DNotificationProps): Notification; + + // 关闭通知 + static close(uniqueId: number): void; + + // 更新通知 + static rerender(uniqueId: number, props: DNotificationProps): void; + + // 关闭所有通知 + static closeAll(animation = true): void; +} +``` + +### Notification + +```tsx +class Notification { + // 唯一标识 + readonly uniqueId: number; + + // 关闭通知 + close(): void; + + // 更新通知 + rerender(props: DNotificationProps): void; +} +``` diff --git a/packages/ui/src/components/notification/demos/1.Basic.md b/packages/ui/src/components/notification/demos/1.Basic.md new file mode 100644 index 00000000..503dcd78 --- /dev/null +++ b/packages/ui/src/components/notification/demos/1.Basic.md @@ -0,0 +1,32 @@ +--- +title: + en-US: Basic + zh-Hant: 基本 +--- + +# en-US + +The simplest usage. + +# zh-Hant + +最简单的用法。 + +```tsx +import { NotificationService, DButton } from '@react-devui/ui'; + +export default function Demo() { + return ( + { + NotificationService.open({ + dTitle: 'Notification Title', + dDescription: `An alert dialog is a modal dialog that interrupts the user's workflow to communicate an important message and acquire a response.`, + }); + }} + > + Open notification + + ); +} +``` diff --git a/packages/ui/src/components/notification/demos/2.Type.md b/packages/ui/src/components/notification/demos/2.Type.md new file mode 100644 index 00000000..bc2fbf0f --- /dev/null +++ b/packages/ui/src/components/notification/demos/2.Type.md @@ -0,0 +1,57 @@ +--- +title: + en-US: Type + zh-Hant: 类型 +--- + +# en-US + +There are 4 types of notifications: 'success', 'warning', 'error' and 'info'. + +# zh-Hant + +有 'success'、'warning'、'error' 和 'info' 4 种类型的通知。 + +```tsx +import { NotificationService, DButton } from '@react-devui/ui'; + +export default function Demo() { + const props = { + dTitle: 'Notification Title', + dDescription: `An alert dialog is a modal dialog that interrupts the user's workflow to communicate an important message and acquire a response.`, + }; + + return ( + <> + { + NotificationService.open({ ...props, dType: 'success' }); + }} + > + Success + + { + NotificationService.open({ ...props, dType: 'warning' }); + }} + > + Warning + + { + NotificationService.open({ ...props, dType: 'error' }); + }} + > + Error + + { + NotificationService.open({ ...props, dType: 'info' }); + }} + > + Info + + + ); +} +``` diff --git a/packages/ui/src/components/notification/demos/3.Icon.md b/packages/ui/src/components/notification/demos/3.Icon.md new file mode 100644 index 00000000..e930df89 --- /dev/null +++ b/packages/ui/src/components/notification/demos/3.Icon.md @@ -0,0 +1,33 @@ +--- +title: + en-US: Custom icon + zh-Hant: 自定义图标 +--- + +# en-US + +Customize the icon through `dIcon`. + +# zh-Hant + +通过 `dIcon` 自定义图标。 + +```tsx +import { NotificationService, DButton, DIcon } from '@react-devui/ui'; + +export default function Demo() { + return ( + { + NotificationService.open({ + dIcon: , + dTitle: 'Notification Title', + dDescription: `An alert dialog is a modal dialog that interrupts the user's workflow to communicate an important message and acquire a response.`, + }); + }} + > + Open notification + + ); +} +``` diff --git a/packages/ui/src/components/notification/demos/4.Placement.md b/packages/ui/src/components/notification/demos/4.Placement.md new file mode 100644 index 00000000..6d00b0aa --- /dev/null +++ b/packages/ui/src/components/notification/demos/4.Placement.md @@ -0,0 +1,58 @@ +--- +title: + en-US: Placement + zh-Hant: 位置 +--- + +# en-US + +Set the pop-up position through `dPlacement`. + +# zh-Hant + +通过 `dPlacement` 设置弹出位置。 + +```tsx +import { NotificationService, DButton } from '@react-devui/ui'; + +export default function Demo() { + const props = { + dTitle: 'Notification Title', + dDescription: `An alert dialog is a modal dialog that interrupts the user's workflow to communicate an important message and acquire a response.`, + }; + + return ( + <> + { + NotificationService.open({ ...props, dPlacement: 'left-top' }); + }} + > + LT + + { + NotificationService.open({ ...props, dPlacement: 'right-top' }); + }} + > + RT + +
+ { + NotificationService.open({ ...props, dPlacement: 'left-bottom' }); + }} + > + LB + + { + NotificationService.open({ ...props, dPlacement: 'right-bottom' }); + }} + > + RB + + + ); +} +``` diff --git a/packages/ui/src/components/notification/demos/5.DynamicallySetting.md b/packages/ui/src/components/notification/demos/5.DynamicallySetting.md new file mode 100644 index 00000000..d20a4f4c --- /dev/null +++ b/packages/ui/src/components/notification/demos/5.DynamicallySetting.md @@ -0,0 +1,60 @@ +--- +title: + en-US: Dynamic setting + zh-Hant: 动态设置 +--- + +# en-US + +The example demonstrates dynamic control notifications. + +# zh-Hant + +示例展示了动态控制通知。 + +```tsx +import { NotificationService, DButton } from '@react-devui/ui'; + +export default function Demo() { + const props = { + dDuration: 0, + dTitle: 'Notification Title', + dDescription: `An alert dialog is a modal dialog that interrupts the user's workflow to communicate an important message and acquire a response.`, + }; + + return ( + <> + { + NotificationService.open(props); + }} + > + Open notification + + { + const notification = NotificationService.notifications[NotificationService.notifications.length - 1]; + notification?.close(); + }} + > + Close last + + { + const notification = NotificationService.notifications[NotificationService.notifications.length - 1]; + notification?.rerender({ ...props, dType: 'info' }); + }} + > + Update last + + { + NotificationService.closeAll(); + }} + > + Close All + + + ); +} +``` diff --git a/packages/ui/src/components/notification/index.ts b/packages/ui/src/components/notification/index.ts new file mode 100644 index 00000000..ed80171a --- /dev/null +++ b/packages/ui/src/components/notification/index.ts @@ -0,0 +1 @@ +export * from './Notification'; diff --git a/packages/ui/src/components/pagination/Pagination.tsx b/packages/ui/src/components/pagination/Pagination.tsx index ae7dc1e4..bfc8d4d2 100644 --- a/packages/ui/src/components/pagination/Pagination.tsx +++ b/packages/ui/src/components/pagination/Pagination.tsx @@ -141,7 +141,7 @@ export function DPagination(props: DPaginationProps) { } else { nextNode = ( - {' '} + ); } @@ -329,7 +329,7 @@ export function DPagination(props: DPaginationProps) { }} > - {' '} +
•••
diff --git a/packages/ui/src/components/root/Notification.tsx b/packages/ui/src/components/root/Notification.tsx new file mode 100644 index 00000000..16d85d5f --- /dev/null +++ b/packages/ui/src/components/root/Notification.tsx @@ -0,0 +1,135 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { Subscription } from 'rxjs'; + +import { useEffect, useMemo } from 'react'; +import ReactDOM from 'react-dom'; + +import { useImmer, usePrefixConfig } from '../../hooks'; +import { DNotification, NotificationService, notificationSubject } from '../notification'; + +export function Notification() { + //#region Context + const dPrefix = usePrefixConfig(); + //#endregion + + const [notifications, setNotifications] = useImmer(new Map()); + + useEffect(() => { + const obs: Subscription[] = []; + const mergeProps = (uniqueId: number, props: any) => { + return { + onClose: () => { + props.onClose?.(); + + NotificationService.close(uniqueId); + }, + afterVisibleChange: (visible: boolean) => { + props.afterVisibleChange?.(visible); + + if (!visible) { + setNotifications((draft) => { + draft.delete(uniqueId); + }); + } + }, + }; + }; + obs.push( + notificationSubject.open.subscribe({ + next: ({ uniqueId, props }) => { + setNotifications((draft) => { + draft.set(uniqueId, { ...props, dVisible: true, ...mergeProps(uniqueId, props) }); + }); + }, + }), + notificationSubject.close.subscribe({ + next: (uniqueId) => { + setNotifications((draft) => { + const props = draft.get(uniqueId); + if (props) { + draft.set(uniqueId, { ...props, dVisible: false }); + } + }); + }, + }), + notificationSubject.rerender.subscribe({ + next: ({ uniqueId, props: newProps }) => { + setNotifications((draft) => { + const props = draft.get(uniqueId); + if (props) { + draft.set(uniqueId, { ...newProps, dVisible: props.dVisible, ...mergeProps(uniqueId, newProps) }); + } + }); + }, + }), + notificationSubject.closeAll.subscribe({ + next: (animation) => { + setNotifications((draft) => { + if (animation) { + for (const props of draft.values()) { + props.dVisible = false; + } + } else { + draft.clear(); + } + }); + }, + }) + ); + }, [setNotifications]); + + const [notificationLTRoot, notificationRTRoot, notificationLBRoot, notificationRBRoot] = useMemo(() => { + const getRoot = (id: string) => { + let root = document.getElementById(`${dPrefix}notification-root`); + if (!root) { + root = document.createElement('div'); + root.id = `${dPrefix}notification-root`; + document.body.appendChild(root); + } + + let el = document.getElementById(id); + if (!el) { + el = document.createElement('div'); + el.id = id; + root.appendChild(el); + } + return el; + }; + + return [ + getRoot(`${dPrefix}notification-lt-root`), + getRoot(`${dPrefix}notification-rt-root`), + getRoot(`${dPrefix}notification-lb-root`), + getRoot(`${dPrefix}notification-rb-root`), + ]; + }, [dPrefix]); + + return ( + <> + {ReactDOM.createPortal( + Array.from(notifications.entries()) + .filter(([uniqueId, notificationProps]) => notificationProps.dPlacement === 'left-top') + .map(([uniqueId, notificationProps]) => ), + notificationLTRoot + )} + {ReactDOM.createPortal( + Array.from(notifications.entries()) + .filter(([uniqueId, notificationProps]) => (notificationProps.dPlacement ?? 'right-top') === 'right-top') + .map(([uniqueId, notificationProps]) => ), + notificationRTRoot + )} + {ReactDOM.createPortal( + Array.from(notifications.entries()) + .filter(([uniqueId, notificationProps]) => notificationProps.dPlacement === 'left-bottom') + .map(([uniqueId, notificationProps]) => ), + notificationLBRoot + )} + {ReactDOM.createPortal( + Array.from(notifications.entries()) + .filter(([uniqueId, notificationProps]) => notificationProps.dPlacement === 'right-bottom') + .map(([uniqueId, notificationProps]) => ), + notificationRBRoot + )} + + ); +} diff --git a/packages/ui/src/components/root/Root.tsx b/packages/ui/src/components/root/Root.tsx new file mode 100644 index 00000000..77b06d36 --- /dev/null +++ b/packages/ui/src/components/root/Root.tsx @@ -0,0 +1,31 @@ +import type { DConfigContextData } from '../../hooks/d-config'; + +import { useEffect } from 'react'; + +import { DConfigContext } from '../../hooks/d-config'; +import { Notification } from './Notification'; + +export interface DRootProps extends DConfigContextData { + children: React.ReactNode; +} + +export function DRoot(props: DRootProps) { + const { children, ...restProps } = props; + + const lang = restProps.i18n?.lang ?? 'en-US'; + + useEffect(() => { + if (lang === 'en-US') { + document.body.classList.add('CJK'); + } else { + document.body.classList.remove('CJK'); + } + }, [lang]); + + return ( + + {children} + + + ); +} diff --git a/packages/ui/src/components/root/index.ts b/packages/ui/src/components/root/index.ts new file mode 100644 index 00000000..c78e0115 --- /dev/null +++ b/packages/ui/src/components/root/index.ts @@ -0,0 +1 @@ +export * from './Root'; diff --git a/packages/ui/src/hooks/d-config.tsx b/packages/ui/src/hooks/d-config.ts similarity index 62% rename from packages/ui/src/hooks/d-config.tsx rename to packages/ui/src/hooks/d-config.ts index a3433437..cc8b0a66 100644 --- a/packages/ui/src/hooks/d-config.tsx +++ b/packages/ui/src/hooks/d-config.ts @@ -1,5 +1,5 @@ import { isUndefined } from 'lodash'; -import React, { useContext, useEffect } from 'react'; +import React, { useContext } from 'react'; import { getFragmentChildren } from '../utils'; import { useRefSelector } from './element-ref'; @@ -9,9 +9,9 @@ interface Resources { } export interface DConfigContextData { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - components?: { [index: string]: any }; prefix?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + componentConfigs?: { [index: string]: any }; i18n?: { lang?: 'en-US' | 'zh-Hant'; resources?: Resources; @@ -24,41 +24,18 @@ export interface DConfigContextData { type?: string; }>; }>; - content?: string; + contentSelector?: string; } export const DConfigContext = React.createContext({}); -export function DConfigRoot(props: DConfigContextData & { children: React.ReactNode }) { - const { children, ...restProps } = props; - - const lang = restProps.i18n?.lang ?? 'en-US'; - - useEffect(() => { - if (lang === 'en-US') { - document.body.classList.add('CJK'); - } else { - document.body.classList.remove('CJK'); - } - }, [lang]); - - return {children}; -} - export function usePrefixConfig() { const prefix = useContext(DConfigContext).prefix ?? 'd-'; return prefix; } -export function useRootContentConfig() { - const content = useContext(DConfigContext).content ?? null; - const contentRef = useRefSelector(content); - - return contentRef; -} - export function useComponentConfig(component: string, props: T): T { - const components = useContext(DConfigContext).components ?? {}; - const customConfig = components[component] ?? {}; + const componentConfigs = useContext(DConfigContext).componentConfigs ?? {}; + const customConfig = componentConfigs[component] ?? {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any const noUndefinedProps: any = {}; Object.keys(props).forEach((key) => { @@ -76,3 +53,10 @@ export function useComponentConfig(component: string, props: T): T { } return { ...customConfig, ...(noUndefinedProps as T), children }; } + +export function useContentRefConfig() { + const contentSelector = useContext(DConfigContext).contentSelector ?? null; + const contentRef = useRefSelector(contentSelector); + + return contentRef; +} diff --git a/packages/ui/src/hooks/index.ts b/packages/ui/src/hooks/index.ts index f399b922..a9ced754 100644 --- a/packages/ui/src/hooks/index.ts +++ b/packages/ui/src/hooks/index.ts @@ -2,7 +2,7 @@ export { useAsync } from './async'; export { useTranslation } from './i18n'; export { useDTransition, useDCollapseTransition } from './transition'; export { useCustomContext } from './context'; -export { usePrefixConfig, useRootContentConfig, useComponentConfig } from './d-config'; +export { usePrefixConfig, useContentRefConfig, useComponentConfig } from './d-config'; export { useRefSelector } from './element-ref'; export { useGeneralState, DGeneralStateContext } from './general-state'; export { useImmer, useImmerReducer } from './immer'; diff --git a/packages/ui/src/hooks/transition/transition.ts b/packages/ui/src/hooks/transition/transition.ts index 4463ce72..adc56d65 100644 --- a/packages/ui/src/hooks/transition/transition.ts +++ b/packages/ui/src/hooks/transition/transition.ts @@ -1,6 +1,6 @@ /* eslint-disable react-hooks/exhaustive-deps */ -import { isFunction, isNumber, isString } from 'lodash'; +import { isFunction } from 'lodash'; import { useEffect, useLayoutEffect, useRef, useState } from 'react'; import { flushSync } from 'react-dom'; @@ -29,14 +29,13 @@ export interface DTransitionProps { dEl: HTMLElement | null; dVisible?: boolean; dCallbackList?: DTransitionCallbackList; - dEndStyle?: { enter?: Partial; leave?: Partial }; dSkipFirst?: boolean; afterEnter?: () => void; afterLeave?: () => void; } export function useDTransition(props: DTransitionProps) { - const { dEl, dVisible = false, dCallbackList, dEndStyle, dSkipFirst = true, afterEnter, afterLeave } = props; + const { dEl, dVisible = false, dCallbackList, dSkipFirst = true, afterEnter, afterLeave } = props; const dataRef = useRef({ hasfirstRun: false, @@ -80,7 +79,6 @@ export function useDTransition(props: DTransitionProps) { asyncCapture.setTimeout(() => { cssRecord.backCss(dEl); - cssRecord.setCss(dEl, (dVisible ? dEndStyle?.enter : dEndStyle?.leave) ?? {}); callbackList[dVisible ? 'afterEnter' : 'afterLeave']?.(dEl); dVisible ? afterEnter?.() : afterLeave?.(); flushSync(() => { @@ -150,20 +148,10 @@ export function useDTransition(props: DTransitionProps) { export interface DCollapseTransitionProps extends DTransitionProps { dDirection?: 'horizontal' | 'vertical'; dDuring?: number; - dTimingFunction?: string | { enter: string; leave: string }; - dSpace?: number | string; } export function useDCollapseTransition(props: DCollapseTransitionProps) { - const { dCallbackList, dDirection = 'vertical', dTimingFunction, dDuring = 300, dSpace = 0, ...restProps } = props; - - const enterTimeFunction = dTimingFunction ? (isString(dTimingFunction) ? dTimingFunction : dTimingFunction.enter) : 'linear'; - const leaveTimeFunction = dTimingFunction ? (isString(dTimingFunction) ? dTimingFunction : dTimingFunction.leave) : 'linear'; - - const shouldHidden = dSpace === 0; - - const space = isNumber(dSpace) ? dSpace + 'px' : dSpace; - const opacity = shouldHidden ? '0' : '1'; + const { dVisible, dCallbackList, dDirection = 'vertical', ...restProps } = props; const attribute = dDirection === 'horizontal' ? 'width' : 'height'; @@ -175,31 +163,37 @@ export function useDCollapseTransition(props: DCollapseTransitionProps) { } const size = rect[attribute] + 'px'; + const callbackList = dCallbackList ?? {}; + const stateList = callbackList[dVisible ? 'beforeEnter' : 'beforeLeave'](el) ?? {}; return { - 'enter-from': { [attribute]: space, opacity }, - 'enter-active': { overflow: 'hidden' }, + ...stateList, + 'enter-active': { + ...stateList['enter-active'], + overflow: 'hidden', + }, 'enter-to': { + ...stateList['enter-to'], + [attribute]: size, + }, + 'leave-from': { + ...stateList['leave-from'], [attribute]: size, - transition: `${attribute} ${dDuring}ms ${enterTimeFunction}, opacity ${dDuring}ms ${enterTimeFunction}`, }, - 'leave-from': { [attribute]: size }, - 'leave-active': { overflow: 'hidden' }, - 'leave-to': { - [attribute]: space, - opacity, - transition: `${attribute} ${dDuring}ms ${leaveTimeFunction}, opacity ${dDuring}ms ${leaveTimeFunction}`, + 'leave-active': { + ...stateList['leave-active'], + overflow: 'hidden', }, }; }; return useDTransition({ ...restProps, + dVisible, dCallbackList: { ...dCallbackList, - beforeEnter: (el) => dCallbackList?.beforeEnter(el) ?? getTransitionState(el), - beforeLeave: (el) => dCallbackList?.beforeLeave(el) ?? getTransitionState(el), + beforeEnter: (el) => getTransitionState(el), + beforeLeave: (el) => getTransitionState(el), }, - dEndStyle: shouldHidden ? undefined : { leave: { [attribute]: space } }, }); } diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index 9cacacba..07635cbb 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -1,3 +1 @@ export * from './components'; - -export { DConfigRoot } from './hooks/d-config'; diff --git a/packages/ui/src/styles/_components.scss b/packages/ui/src/styles/_components.scss index 0e4ecd6f..467c68cd 100644 --- a/packages/ui/src/styles/_components.scss +++ b/packages/ui/src/styles/_components.scss @@ -15,6 +15,7 @@ @import 'components/icon'; @import 'components/input'; @import 'components/menu'; +@import 'components/notification'; @import 'components/pagination'; @import 'components/popup'; @import 'components/radio'; diff --git a/packages/ui/src/styles/_variables.scss b/packages/ui/src/styles/_variables.scss index 43a6e555..13d55e6d 100644 --- a/packages/ui/src/styles/_variables.scss +++ b/packages/ui/src/styles/_variables.scss @@ -19,18 +19,18 @@ $themes: ( --#{$variable-prefix}absolute-z-index: 100; /** size **/ - --#{$variable-prefix}size: 32px; - --#{$variable-prefix}size-smaller: 28px; - --#{$variable-prefix}size-larger: 36px; + --#{$variable-prefix}size: 36px; + --#{$variable-prefix}size-smaller: 32px; + --#{$variable-prefix}size-larger: 40px; --#{$variable-prefix}padding-size: 15px; --#{$variable-prefix}padding-size-smaller: 11px; --#{$variable-prefix}padding-size-larger: 19px; --#{$variable-prefix}margin-size: 8px; --#{$variable-prefix}margin-size-smaller: 6px; --#{$variable-prefix}margin-size-larger: 10px; - @include rfs(0.9rem, --#{$variable-prefix}font); - @include rfs(0.75rem, --#{$variable-prefix}font-smaller); - @include rfs(1.05rem, --#{$variable-prefix}font-larger); + @include rfs(1rem, --#{$variable-prefix}font); + @include rfs(0.85rem, --#{$variable-prefix}font-smaller); + @include rfs(1.1rem, --#{$variable-prefix}font-larger); /** border-radius **/ --#{$variable-prefix}border-radius: 2px; diff --git a/packages/ui/src/styles/components/_anchor.scss b/packages/ui/src/styles/components/_anchor.scss index 180d1e83..3adba9a0 100644 --- a/packages/ui/src/styles/components/_anchor.scss +++ b/packages/ui/src/styles/components/_anchor.scss @@ -6,7 +6,7 @@ list-style: none; - @include font-size(0.85rem); + @include font-size(0.95rem); @include e(indicator) { position: absolute; @@ -53,8 +53,10 @@ padding-left: 4px; @include e(link) { - display: block; - padding: 8px 0; + display: flex; + flex-wrap: wrap; + align-items: center; + min-height: 28px; color: var(--#{$variable-prefix}text-color); text-decoration: none; diff --git a/packages/ui/src/styles/components/_checkbox.scss b/packages/ui/src/styles/components/_checkbox.scss index 0d6e73fb..8ac916cc 100644 --- a/packages/ui/src/styles/components/_checkbox.scss +++ b/packages/ui/src/styles/components/_checkbox.scss @@ -160,11 +160,11 @@ &::after { position: absolute; - top: calc(5px - 1.7677px); - left: 3.5px; + top: 3px; + left: 3px; display: block; - width: 9px; + width: 10px; height: 6px; border-bottom: 2px solid #fff; border-left: 2px solid #fff; diff --git a/packages/ui/src/styles/components/_dialog.scss b/packages/ui/src/styles/components/_dialog.scss index 57d2cc78..0f679c2b 100644 --- a/packages/ui/src/styles/components/_dialog.scss +++ b/packages/ui/src/styles/components/_dialog.scss @@ -6,15 +6,6 @@ left: 0; overflow: hidden; - - @include e(content) { - max-width: 100%; - - background-color: var(--#{$variable-prefix}background-color); - box-shadow: 0 8px 40px 0 var(--#{$variable-prefix}shadow-color); - - @include utils-outline; - } } @include b(mask) { diff --git a/packages/ui/src/styles/components/_drawer.scss b/packages/ui/src/styles/components/_drawer.scss index 9fc2b54b..f824ccb2 100644 --- a/packages/ui/src/styles/components/_drawer.scss +++ b/packages/ui/src/styles/components/_drawer.scss @@ -5,10 +5,15 @@ display: flex; flex-direction: column; - + max-width: 100%; height: 100%; overflow: hidden; + background-color: var(--#{$variable-prefix}background-color); + box-shadow: 0 8px 40px 0 var(--#{$variable-prefix}shadow-color); + + @include utils-outline; + @include m(top) { top: 0; left: 0; diff --git a/packages/ui/src/styles/components/_dropdown.scss b/packages/ui/src/styles/components/_dropdown.scss index 5f8f4b4d..d649b41e 100644 --- a/packages/ui/src/styles/components/_dropdown.scss +++ b/packages/ui/src/styles/components/_dropdown.scss @@ -27,7 +27,7 @@ $dropdown-item-height: 32px; flex-shrink: 0; width: calc(1.05rem + 8px); - @include font-size(1.05rem); + font-size: 1.1em; } @include e(title) { @@ -59,8 +59,6 @@ $dropdown-item-height: 32px; padding: 4px 0; overflow-x: hidden; - @include font-size(0.95rem); - @include dropdown-empty; } @@ -117,11 +115,10 @@ $dropdown-item-height: 32px; padding: 0 12px; color: var(--#{$variable-prefix}color-step-400); + font-size: 0.9em; list-style: none; - @include font-size(0.85rem); - @include utils-outline; @include utils-ellipsis; @include dropdown-empty; diff --git a/packages/ui/src/styles/components/_form.scss b/packages/ui/src/styles/components/_form.scss index f75f19c4..50fa28fe 100644 --- a/packages/ui/src/styles/components/_form.scss +++ b/packages/ui/src/styles/components/_form.scss @@ -118,7 +118,7 @@ color: var(--#{$variable-prefix}color-step-400); font-size: 0.9em; - line-height: 0; + line-height: 1; .#{$variable-prefix}icon { cursor: help; diff --git a/packages/ui/src/styles/components/_header.scss b/packages/ui/src/styles/components/_header.scss index f08c0396..68d4680a 100644 --- a/packages/ui/src/styles/components/_header.scss +++ b/packages/ui/src/styles/components/_header.scss @@ -11,8 +11,7 @@ align-items: center; font-weight: 500; - - @include font-size(1.15rem); + font-size: 1.15em; } @include e(buttons) { diff --git a/packages/ui/src/styles/components/_menu.scss b/packages/ui/src/styles/components/_menu.scss index d767f1c3..bbcb220a 100644 --- a/packages/ui/src/styles/components/_menu.scss +++ b/packages/ui/src/styles/components/_menu.scss @@ -117,9 +117,9 @@ $menu-item-height: 40px; flex-shrink: 0; width: calc(1.05rem + 12px); - transition: height 0.2s linear; + font-size: 1.1em; - @include font-size(1.05rem); + transition: height 0.2s linear; & > .#{$variable-prefix}icon { transition: transform 0.2s linear, width 0.2s linear; @@ -212,8 +212,6 @@ $menu-item-height: 40px; padding: 8px 0; - @include font-size(0.95rem); - &:not(&--horizontal) { overflow-x: hidden; } @@ -247,8 +245,7 @@ $menu-item-height: 40px; padding: 0 16px; color: var(--#{$variable-prefix}color-step-400); - - @include font-size(0.85rem); + font-size: 0.9em; @include utils-outline; @include utils-ellipsis; diff --git a/packages/ui/src/styles/components/_notification.scss b/packages/ui/src/styles/components/_notification.scss new file mode 100644 index 00000000..9ef5d57c --- /dev/null +++ b/packages/ui/src/styles/components/_notification.scss @@ -0,0 +1,73 @@ +##{$variable-prefix}notification-lt-root { + position: fixed; + top: 20px; + left: 20px; + z-index: 10000; +} + +##{$variable-prefix}notification-rt-root { + position: fixed; + top: 20px; + right: 20px; + z-index: 10000; +} + +##{$variable-prefix}notification-lb-root { + position: fixed; + bottom: 20px; + left: 20px; + z-index: 10000; +} + +##{$variable-prefix}notification-rb-root { + position: fixed; + right: 20px; + bottom: 20px; + z-index: 10000; +} + +@include b(notification) { + position: relative; + + display: flex; + width: 380px; + max-width: calc(100vw - 40px); + + margin-bottom: 20px; + padding: 16px 24px; + border-radius: var(--#{$variable-prefix}border-radius); + overflow: hidden; + + background-color: var(--#{$variable-prefix}background-color); + box-shadow: 0 4px 20px 0 var(--#{$variable-prefix}shadow-color); + + @include e(icon) { + flex-shrink: 0; + margin-right: 16px; + + font-size: 1.75em; + } + + @include e(content) { + flex-grow: 1; + } + + @include e(title) { + margin-bottom: 8px; + + font-size: 1.15em; + } + + @include e(close, true) { + position: absolute; + top: 10px; + right: 12px; + z-index: 1; + + width: 28px; + min-width: unset; + height: 28px; + + color: var(--#{$variable-prefix}color-step-400); + } +} diff --git a/packages/ui/src/styles/components/_pagination.scss b/packages/ui/src/styles/components/_pagination.scss index 3e1dccff..6d837775 100644 --- a/packages/ui/src/styles/components/_pagination.scss +++ b/packages/ui/src/styles/components/_pagination.scss @@ -10,8 +10,6 @@ outline: none; - @include font-size(0.95rem); - &:not(.is-disabled) { .#{$variable-prefix}pagination__item--button:not(.is-disabled) { &:hover, diff --git a/packages/ui/src/styles/components/_popup.scss b/packages/ui/src/styles/components/_popup.scss index 17e85477..d9d00c38 100644 --- a/packages/ui/src/styles/components/_popup.scss +++ b/packages/ui/src/styles/components/_popup.scss @@ -12,8 +12,6 @@ background-color: var(--#{$variable-prefix}background-color); - @include font-size(1rem); - @include m(top) { @include popup-arrow { bottom: 0; diff --git a/packages/ui/src/styles/components/_select.scss b/packages/ui/src/styles/components/_select.scss index 2875af5a..debb12ca 100644 --- a/packages/ui/src/styles/components/_select.scss +++ b/packages/ui/src/styles/components/_select.scss @@ -73,8 +73,7 @@ $select-option-height: 32px; @include m(group) { color: var(--#{$variable-prefix}color-step-400); - - @include font-size(0.85rem); + font-size: 0.9em; } @include m(empty) { diff --git a/packages/ui/src/styles/components/_separator.scss b/packages/ui/src/styles/components/_separator.scss index 2a9d450f..d96f967c 100644 --- a/packages/ui/src/styles/components/_separator.scss +++ b/packages/ui/src/styles/components/_separator.scss @@ -107,5 +107,7 @@ @include e(text) { flex: 0 0 auto; padding: 0 8px; + + font-size: 0.95em; } } diff --git a/packages/ui/src/styles/components/_tabs.scss b/packages/ui/src/styles/components/_tabs.scss index 65e18823..f42315d9 100644 --- a/packages/ui/src/styles/components/_tabs.scss +++ b/packages/ui/src/styles/components/_tabs.scss @@ -277,7 +277,7 @@ --#{$variable-prefix}tabs-tab-padding: 20px; .#{$variable-prefix}tabs__tablist { - @include font-size(1.15rem); + @include font-size(1.1rem); } } diff --git a/packages/ui/src/styles/components/_tag.scss b/packages/ui/src/styles/components/_tag.scss index bdbdb3bd..cea8088c 100644 --- a/packages/ui/src/styles/components/_tag.scss +++ b/packages/ui/src/styles/components/_tag.scss @@ -1,7 +1,7 @@ @include b(tag) { --#{$variable-prefix}tag-padding-size: 8px; - --#{$variable-prefix}tag-size: 24px; - @include rfs(0.8rem, --#{$variable-prefix}tag-font); + --#{$variable-prefix}tag-size: 28px; + @include rfs(0.9rem, --#{$variable-prefix}tag-font); display: inline-flex; align-items: center; @@ -44,14 +44,14 @@ @include m(smaller) { --#{$variable-prefix}tag-padding-size: 6px; - --#{$variable-prefix}tag-size: 20px; - @include rfs(0.6rem, --#{$variable-prefix}tag-font); + --#{$variable-prefix}tag-size: 24px; + @include rfs(0.75rem, --#{$variable-prefix}tag-font); } @include m(larger) { --#{$variable-prefix}tag-padding-size: 10px; - --#{$variable-prefix}tag-size: 28px; - @include rfs(0.9rem, --#{$variable-prefix}tag-font); + --#{$variable-prefix}tag-size: 32px; + @include rfs(1rem, --#{$variable-prefix}tag-font); } @include e(close) { diff --git a/yarn.lock b/yarn.lock index 5549fe9f..caf076c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1022,143 +1022,154 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@commitlint/cli@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-15.0.0.tgz#8e78e86ee2b6955c1a5d140e734a6c171ce367ee" - integrity sha512-Y5xmDCweytqzo4N4lOI2YRiuX35xTjcs8n5hUceBH8eyK0YbwtgWX50BJOH2XbkwEmII9blNhlBog6AdQsqicg== - dependencies: - "@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" +"@commitlint/cli@^16.0.1": + version "16.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-16.0.1.tgz#21905c898ebece7da42277209022b1bc80c4fb39" + integrity sha512-61gGRy65WiVDRsqP0dAR2fAgE3qrTBW3fgz9MySv32y5Ib3ZXXDDq6bGyQqi2dSaPuDYzNCRwwlC7mmQM73T/g== + dependencies: + "@commitlint/format" "^16.0.0" + "@commitlint/lint" "^16.0.0" + "@commitlint/load" "^16.0.0" + "@commitlint/read" "^16.0.0" + "@commitlint/types" "^16.0.0" lodash "^4.17.19" resolve-from "5.0.0" resolve-global "1.0.0" yargs "^17.0.0" -"@commitlint/config-conventional@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-15.0.0.tgz#3bf1adf319e3b431de12ba82dc399524038b2d8f" - integrity sha512-eZBRL8Lk3hMNHp1wUMYj0qrZQEsST1ai7KHR8J1IDD9aHgT7L2giciibuQ+Og7vxVhR5WtYDvh9xirXFVPaSkQ== +"@commitlint/config-conventional@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-16.0.0.tgz#f42d9e1959416b5e691c8b5248fc2402adb1fc03" + integrity sha512-mN7J8KlKFn0kROd+q9PB01sfDx/8K/R25yITspL1No8PB4oj9M1p77xWjP80hPydqZG9OvQq+anXK3ZWeR7s3g== dependencies: conventional-changelog-conventionalcommits "^4.3.1" -"@commitlint/ensure@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-15.0.0.tgz#06a63738e2393970a085b428e6cf80fa1fe76f48" - integrity sha512-7DV4iNIald3vycwaWBNGk5FbonaNzOlU8nBe5m5AgU2dIeNKuXwLm+zzJzG27j0Ho56rgz//3F6RIvmsoxY9ZA== +"@commitlint/config-validator@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-16.0.0.tgz#61dd84895e5dcab6066ff5e21e2b9a96b0ed6323" + integrity sha512-i80DGlo1FeC5jZpuoNV9NIjQN/m2dDV3jYGWg+1Wr+KldptkUHXj+6GY1Akll66lJ3D8s6aUGi3comPLHPtWHg== dependencies: - "@commitlint/types" "^15.0.0" + "@commitlint/types" "^16.0.0" + ajv "^6.12.6" + +"@commitlint/ensure@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-16.0.0.tgz#fdac1e60a944a1993deb33b5e8454c559abe9866" + integrity sha512-WdMySU8DCTaq3JPf0tZFCKIUhqxaL54mjduNhu8v4D2AMUVIIQKYMGyvXn94k8begeW6iJkTf9cXBArayskE7Q== + dependencies: + "@commitlint/types" "^16.0.0" lodash "^4.17.19" -"@commitlint/execute-rule@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-15.0.0.tgz#6bff7962df38e89ff9fdbc00abd79b8849c7e9f9" - integrity sha512-pyE4ApxjbWhb1TXz5vRiGwI2ssdMMgZbaaheZq1/7WC0xRnqnIhE1yUC1D2q20qPtvkZPstTYvMiRVtF+DvjUg== +"@commitlint/execute-rule@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-16.0.0.tgz#824e11ba5b208c214a474ae52a51780d32d31ebc" + integrity sha512-8edcCibmBb386x5JTHSPHINwA5L0xPkHQFY8TAuDEt5QyRZY/o5DF8OPHSa5Hx2xJvGaxxuIz4UtAT6IiRDYkw== -"@commitlint/format@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-15.0.0.tgz#10935180913de9384bea4c9217f4c6c5ee100ab3" - integrity sha512-bPhAfqwRhPk92WiuY0ktEJNpRRHSCd+Eg1MdhGyL9Bl3U25E5zvuInA+dNctnzZiOBSH/37ZaD0eOKCpQE6acg== +"@commitlint/format@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-16.0.0.tgz#6a6fb2c1e6460aff63cc6eca30a7807a96b0ce73" + integrity sha512-9yp5NCquXL1jVMKL0ZkRwJf/UHdebvCcMvICuZV00NQGYSAL89O398nhqrqxlbjBhM5EZVq0VGcV5+7r3D4zAA== dependencies: - "@commitlint/types" "^15.0.0" + "@commitlint/types" "^16.0.0" chalk "^4.0.0" -"@commitlint/is-ignored@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-15.0.0.tgz#382bf9f6f8d810f2ffc59ccc527f4389eadd7949" - integrity sha512-edtnkf2QZ/7e/YCJDgn1WDw9wfF1WfOitW5YEoSOb4SxjJEb/oE87kxNPZ2j8mnDMuunspcMfGHeg6fRlwaEWg== +"@commitlint/is-ignored@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-16.0.0.tgz#5ab4c4a9c7444c1a8540f50a0f1a907dfd78eb70" + integrity sha512-gmAQcwIGC/R/Lp0CEb2b5bfGC7MT5rPe09N8kOGjO/NcdNmfFSZMquwrvNJsq9hnAP0skRdHIsqwlkENkN4Lag== dependencies: - "@commitlint/types" "^15.0.0" + "@commitlint/types" "^16.0.0" semver "7.3.5" -"@commitlint/lint@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-15.0.0.tgz#a93b8896fb25b05ab2ed0246d365f4908654588d" - integrity sha512-hUi2+Im/2dJ5FBvWnodypTkg+5haCgsDzB0fyMApWLUA1IucYUAqRCQCW5em1Mhk9Crw1pd5YzFNikhIclkqCw== - dependencies: - "@commitlint/is-ignored" "^15.0.0" - "@commitlint/parse" "^15.0.0" - "@commitlint/rules" "^15.0.0" - "@commitlint/types" "^15.0.0" - -"@commitlint/load@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-15.0.0.tgz#5bd391c1387aafe92b54cf2a86b76a5228fcf4ef" - integrity sha512-Ak1YPeOhvxmY3ioe0o6m1yLGvUAYb4BdfGgShU8jiTCmU3Mnmms0Xh/kfQz8AybhezCC3AmVTyBLaBZxOHR8kg== - dependencies: - "@commitlint/execute-rule" "^15.0.0" - "@commitlint/resolve-extends" "^15.0.0" - "@commitlint/types" "^15.0.0" - "@endemolshinegroup/cosmiconfig-typescript-loader" "^3.0.2" +"@commitlint/lint@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-16.0.0.tgz#87151a935941073027907fd4752a2e3c83cebbfe" + integrity sha512-HNl15bRC0h+pLzbMzQC3tM0j1aESXsLYhElqKnXcf5mnCBkBkHzu6WwJW8rZbfxX+YwJmNljN62cPhmdBo8x0A== + dependencies: + "@commitlint/is-ignored" "^16.0.0" + "@commitlint/parse" "^16.0.0" + "@commitlint/rules" "^16.0.0" + "@commitlint/types" "^16.0.0" + +"@commitlint/load@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-16.0.0.tgz#4ab9f8502d0521209ce54d7cce58d419b8c35b48" + integrity sha512-7WhrGCkP6K/XfjBBguLkkI2XUdiiIyMGlNsSoSqgRNiD352EiffhFEApMy1/XOU+viwBBm/On0n5p0NC7e9/4A== + dependencies: + "@commitlint/config-validator" "^16.0.0" + "@commitlint/execute-rule" "^16.0.0" + "@commitlint/resolve-extends" "^16.0.0" + "@commitlint/types" "^16.0.0" chalk "^4.0.0" cosmiconfig "^7.0.0" + cosmiconfig-typescript-loader "^1.0.0" lodash "^4.17.19" resolve-from "^5.0.0" typescript "^4.4.3" -"@commitlint/message@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-15.0.0.tgz#98a38aca1b3cd996a0fcdbd9ad67e9039df60b0a" - integrity sha512-L8euabzboKavPuDJsdIYAY2wx97LbiGEYsckMo6NmV8pOun50c8hQx6ouXFSAx4pp+mX9yUGmMiVqfrk2LKDJQ== +"@commitlint/message@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-16.0.0.tgz#4a467341fc6bc49e5a3ead005dd6aa36fa856b87" + integrity sha512-CmK2074SH1Ws6kFMEKOKH/7hMekGVbOD6vb4alCOo2+33ZSLUIX8iNkDYyrw38Jwg6yWUhLjyQLUxREeV+QIUA== -"@commitlint/parse@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-15.0.0.tgz#cac77b7514748b8d01d00c0e67d5e54c695c302c" - integrity sha512-7fweM67tZfBNS7zw1KTuuT5K2u9nGytUJqFqT/1Ln3Na9cBCsoAqR47mfsNOTlRCgGwakm4xiQ7BpS2gN0OGuw== +"@commitlint/parse@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-16.0.0.tgz#5ce05af14edff806effc702ba910fcb32fcb192a" + integrity sha512-F9EjFlMw4MYgBEqoRrWZZKQBzdiJzPBI0qFDFqwUvfQsMmXEREZ242T4R5bFwLINWaALFLHEIa/FXEPa6QxCag== dependencies: - "@commitlint/types" "^15.0.0" + "@commitlint/types" "^16.0.0" conventional-changelog-angular "^5.0.11" conventional-commits-parser "^3.2.2" -"@commitlint/read@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-15.0.0.tgz#da839f3b4d49b05586a9cd2666cc8c4a36b9ec91" - integrity sha512-5yI1o2HKZFVe7RTjL7IhuhHMKar/MDNY34vEHqqz9gMI7BK/rdP8uVb4Di1efl2V0UPnwID0nPKWESjQ8Ti0gw== +"@commitlint/read@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-16.0.0.tgz#92fab45d4e0e4d7d049427306500270b3e459221" + integrity sha512-H4T2zsfmYQK9B+JtoQaCXWBHUhgIJyOzWZjSfuIV9Ce69/OgHoffNpLZPF2lX6yKuDrS1SQFhI/kUCjVc/e4ew== dependencies: - "@commitlint/top-level" "^15.0.0" - "@commitlint/types" "^15.0.0" + "@commitlint/top-level" "^16.0.0" + "@commitlint/types" "^16.0.0" fs-extra "^10.0.0" git-raw-commits "^2.0.0" -"@commitlint/resolve-extends@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-15.0.0.tgz#baf21227e2ac52cef546ec35dd6732e9b0b6e57c" - integrity sha512-7apfRJjgJsKja7lHsPfEFixKjA/fk/UeD3owkOw1174yYu4u8xBDLSeU3IinGPdMuF9m245eX8wo7vLUy+EBSg== +"@commitlint/resolve-extends@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-16.0.0.tgz#2136f01d81bccc29091f2720b42c8c96aa59c56e" + integrity sha512-Z/w9MAQUcxeawpCLtjmkVNXAXOmB2nhW+LYmHEZcx9O6UTauF/1+uuZ2/r0MtzTe1qw2JD+1QHVhEWYHVPlkdA== dependencies: + "@commitlint/config-validator" "^16.0.0" + "@commitlint/types" "^16.0.0" import-fresh "^3.0.0" lodash "^4.17.19" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-15.0.0.tgz#326370abc004492fcb5543198d1d55b14e25e3c8" - integrity sha512-SqXfp6QUlwBS+0IZm4FEA/NmmAwcFQIkG3B05BtemOVWXQdZ8j1vV6hDwvA9oMPCmUSrrGpHOtZK7HaHhng2yA== +"@commitlint/rules@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-16.0.0.tgz#79d28c3678d2d1f7f1cdbedaedb30b01a86ee75b" + integrity sha512-AOl0y2SBTdJ1bvIv8nwHvQKRT/jC1xb09C5VZwzHoT8sE8F54KDeEzPCwHQFgUcWdGLyS10kkOTAH2MyA8EIlg== dependencies: - "@commitlint/ensure" "^15.0.0" - "@commitlint/message" "^15.0.0" - "@commitlint/to-lines" "^15.0.0" - "@commitlint/types" "^15.0.0" + "@commitlint/ensure" "^16.0.0" + "@commitlint/message" "^16.0.0" + "@commitlint/to-lines" "^16.0.0" + "@commitlint/types" "^16.0.0" execa "^5.0.0" -"@commitlint/to-lines@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-15.0.0.tgz#b86ac98f319688990ecc2e09227fadf591b65c92" - integrity sha512-mY3MNA9ujPqVpiJjTYG9MDsYCobue5PJFO0MfcIzS1mCVvngH8ZFTPAh1fT5t+t1h876boS88+9WgqjRvbYItw== +"@commitlint/to-lines@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-16.0.0.tgz#799980a89072302445baf595e20092fb86f0a58a" + integrity sha512-iN/qU38TCKU7uKOg6RXLpD49wNiuI0TqMqybHbjefUeP/Jmzxa8ishryj0uLyVdrAl1ZjGeD1ukXGMTtvqz8iA== -"@commitlint/top-level@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-15.0.0.tgz#467ec8377e81dfc916e1a20a27558862be1a4254" - integrity sha512-7Gz3t7xcuuUw1d1Nou6YLaztzp2Em+qZ6YdCzrqYc+aquca3Vt0O696nuiBDU/oE+tls4Hx2CNpAbWhTgEwB5A== +"@commitlint/top-level@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-16.0.0.tgz#7c2efc33cc37df839b3de558c0bc2eaddb64efe6" + integrity sha512-/Jt6NLxyFkpjL5O0jxurZPCHURZAm7cQCqikgPCwqPAH0TLgwqdHjnYipl8J+AGnAMGDip4FNLoYrtgIpZGBYw== dependencies: find-up "^5.0.0" -"@commitlint/types@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-15.0.0.tgz#46fa7bda3e6340caf3e3a2e415bcb78ff0195eed" - integrity sha512-OMSLX+QJnyNoTwws54ULv9sOvuw9GdVezln76oyUd4YbMMJyaav62aSXDuCdWyL2sm9hTkSzyEi52PNaIj/vqw== +"@commitlint/types@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-16.0.0.tgz#3c133f106d36132756c464071a7f2290966727a3" + integrity sha512-+0FvYOAS39bJ4aKjnYn/7FD4DfWkmQ6G/06I4F0Gvu4KS5twirEg8mIcLhmeRDOOKn4Tp8PwpLwBiSA6npEMQA== dependencies: chalk "^4.0.0" @@ -1215,16 +1226,6 @@ debug "^3.1.0" lodash.once "^4.1.1" -"@endemolshinegroup/cosmiconfig-typescript-loader@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d" - integrity sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA== - dependencies: - lodash.get "^4" - make-error "^1" - ts-node "^9" - tslib "^2" - "@eslint/eslintrc@^1.0.4", "@eslint/eslintrc@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" @@ -1296,15 +1297,15 @@ jest-util "^27.4.2" slash "^3.0.0" -"@jest/core@^27.4.4": - version "27.4.4" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.4.tgz#f2ba293235ca23fb48b4b923ccfe67c17e791a92" - integrity sha512-xBNPVqYAdAiAMXnb4ugx9Cdmr0S52lBsLbQMR/sGBRO0810VSPKiuSDtuup6qdkK1e9vxbv3KK3IAP1QFAp8mw== +"@jest/core@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.5.tgz#cae2dc34259782f4866c6606c3b480cce920ed4c" + integrity sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ== dependencies: "@jest/console" "^27.4.2" - "@jest/reporters" "^27.4.4" + "@jest/reporters" "^27.4.5" "@jest/test-result" "^27.4.2" - "@jest/transform" "^27.4.4" + "@jest/transform" "^27.4.5" "@jest/types" "^27.4.2" "@types/node" "*" ansi-escapes "^4.2.1" @@ -1313,15 +1314,15 @@ exit "^0.1.2" graceful-fs "^4.2.4" jest-changed-files "^27.4.2" - jest-config "^27.4.4" - jest-haste-map "^27.4.4" + jest-config "^27.4.5" + jest-haste-map "^27.4.5" jest-message-util "^27.4.2" jest-regex-util "^27.4.0" - jest-resolve "^27.4.4" - jest-resolve-dependencies "^27.4.4" - jest-runner "^27.4.4" - jest-runtime "^27.4.4" - jest-snapshot "^27.4.4" + jest-resolve "^27.4.5" + jest-resolve-dependencies "^27.4.5" + jest-runner "^27.4.5" + jest-runtime "^27.4.5" + jest-snapshot "^27.4.5" jest-util "^27.4.2" jest-validate "^27.4.2" jest-watcher "^27.4.2" @@ -1391,15 +1392,15 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.0.0" -"@jest/reporters@^27.4.4": - version "27.4.4" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.4.tgz#9e809829f602cd6e68bd058d1ea528f4b7482365" - integrity sha512-ssyJSw9B9Awb1QaxDhIPSs4de1b7SE2kv7tqFehQL13xpn5HUkMYZK/ufTOXiCAnXFOZS+XDl1GaQ/LmJAzI1A== +"@jest/reporters@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.5.tgz#e229acca48d18ea39e805540c1c322b075ae63ad" + integrity sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^27.4.2" "@jest/test-result" "^27.4.2" - "@jest/transform" "^27.4.4" + "@jest/transform" "^27.4.5" "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" @@ -1412,10 +1413,10 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^27.4.4" - jest-resolve "^27.4.4" + jest-haste-map "^27.4.5" + jest-resolve "^27.4.5" jest-util "^27.4.2" - jest-worker "^27.4.4" + jest-worker "^27.4.5" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" @@ -1451,7 +1452,7 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.2.2", "@jest/test-sequencer@^27.4.4": +"@jest/test-sequencer@^27.2.2": version "27.4.4" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.4.tgz#60be14369b2702e42d6042e71b8ab3fc69f5ce68" integrity sha512-mCh+d4JTGTtX7vr13d7q2GHJy33nAobEwtEJ8X3u7R8+0ImVO2eAsQzsLfX8lyvdYHBxYABhqbYuaUNo42/pQw== @@ -1461,6 +1462,16 @@ jest-haste-map "^27.4.4" jest-runtime "^27.4.4" +"@jest/test-sequencer@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.5.tgz#1d7e026844d343b60d2ca7fd82c579a17b445d7d" + integrity sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ== + dependencies: + "@jest/test-result" "^27.4.2" + graceful-fs "^4.2.4" + jest-haste-map "^27.4.5" + jest-runtime "^27.4.5" + "@jest/transform@^27.2.2", "@jest/transform@^27.4.4": version "27.4.4" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.4.tgz#347e39402730879ba88c6ea6982db0d88640aa78" @@ -1482,6 +1493,27 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/transform@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.5.tgz#3dfe2e3680cd4aa27356172bf25617ab5b94f195" + integrity sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.4.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^27.4.5" + jest-regex-util "^27.4.0" + jest-util "^27.4.2" + micromatch "^4.0.4" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + "@jest/types@^27.1.1", "@jest/types@^27.4.2": version "27.4.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5" @@ -1527,27 +1559,27 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nrwl/cli@13.3.1", "@nrwl/cli@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-13.3.1.tgz#12928b16fe19a86ea189f6f3b9430fca74aa93e3" - integrity sha512-KNnCPNQn3x4txez1uldha5/FGRT4ZGdqpNDSFEegqIooD3SasDCIy7W851FHRPFLwkGB66W1BG9LiXMkp7bgYw== +"@nrwl/cli@13.4.1", "@nrwl/cli@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-13.4.1.tgz#f01e3442ce9c22d8d4fc4b55285000561de27f3c" + integrity sha512-U0ik9wrumTxg+l0f17xajOLgKPQH2hFFPiDlegOupef7mR3JBxrEzadkTXjRH7wXSOWBdzYyVYsfx+6UwS9Ilw== dependencies: - "@nrwl/tao" "13.3.1" + "@nrwl/tao" "13.4.1" chalk "4.1.0" enquirer "~2.3.6" v8-compile-cache "2.3.0" yargs "15.4.1" yargs-parser "20.0.0" -"@nrwl/cypress@13.3.1", "@nrwl/cypress@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-13.3.1.tgz#95095323f122f965bf330f302db02106679026fb" - integrity sha512-Pn808zHNMkaC0h7vVmkkVh6z/zhJROn+Mz6HZA+yocssAlfkPNLSrMJTvu0ZsmXadl7TeNSNmddo0fvtJ9Wwrg== +"@nrwl/cypress@13.4.1", "@nrwl/cypress@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-13.4.1.tgz#2f1005363343c1778b3c22926c4303616482c446" + integrity sha512-+H4oSmtYhH/zyEGVYVEc6kw96hhdjIfajfGW1Hkver+yqtsXLuD8gfxC+LT8gK1VWcR+seMOS5DzdHzToVKuOA== dependencies: "@cypress/webpack-preprocessor" "^5.9.1" - "@nrwl/devkit" "13.3.1" - "@nrwl/linter" "13.3.1" - "@nrwl/workspace" "13.3.1" + "@nrwl/devkit" "13.4.1" + "@nrwl/linter" "13.4.1" + "@nrwl/workspace" "13.4.1" chalk "4.1.0" enhanced-resolve "^5.8.3" fork-ts-checker-webpack-plugin "6.2.10" @@ -1559,38 +1591,38 @@ webpack-node-externals "^3.0.0" yargs-parser "20.0.0" -"@nrwl/devkit@13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-13.3.1.tgz#3ce2fc37156c3ed84fe437374d4902e648eff500" - integrity sha512-hpEdJ+j5gfKdjPBV0UKldVq5Kxt/y/Yuha+ZWuT6h/zA4UeJRNPwPlc3N1QZyTisC4/m8Olc06wR4qBZDBfH6g== +"@nrwl/devkit@13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-13.4.1.tgz#32395f506be9e2adabf95febf774609168b21449" + integrity sha512-dk/moNFriAFnAFro9EQILJWkYQsgkRI1rIou2uCkbrhUHeFZ1nZECjBNdBj/hocz76O24xH7+A8HneacXlKZHg== dependencies: - "@nrwl/tao" "13.3.1" + "@nrwl/tao" "13.4.1" ejs "^3.1.5" ignore "^5.0.4" rxjs "^6.5.4" semver "7.3.4" tslib "^2.3.0" -"@nrwl/eslint-plugin-nx@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-13.3.1.tgz#967d6eac9d6b629c8e6fb380a57275cb8ff020d4" - integrity sha512-E0OtOYajnuuUTXYykbXySno8DnCDFWtV3TypExlhzfmPWsHkMRS8yixXcnuGXPHGuNGtaQZ+Ps9igl0Z0s21GA== +"@nrwl/eslint-plugin-nx@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-13.4.1.tgz#5180e1f083e380ae1b14b913d4c693e930a351a1" + integrity sha512-oId9nHYd52JT3soTXtrqt7OtXk/AY3Jph2ZnPaFesFbv/0Oe6twGL+7WmG/5RQIauJ9pj6owfUqM+fGznZVHVw== dependencies: - "@nrwl/devkit" "13.3.1" - "@nrwl/workspace" "13.3.1" + "@nrwl/devkit" "13.4.1" + "@nrwl/workspace" "13.4.1" "@typescript-eslint/experimental-utils" "~5.3.0" confusing-browser-globals "^1.0.9" ts-node "^9.1.1" tsconfig-paths "^3.9.0" -"@nrwl/jest@13.3.1", "@nrwl/jest@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-13.3.1.tgz#f1d6fefa4e312fd27c89faaa60b4e283b6f07769" - integrity sha512-kFefeYNbG1wkWvWxFd4kp41KCNsP/1id6nVtDM9wSMjeaw9l0H9eajCjdaAEE1Rb4jrq3HoaKyyi9axFcjCRlg== +"@nrwl/jest@13.4.1", "@nrwl/jest@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-13.4.1.tgz#174fba0700b93c30943e53c5b301b34216c84b8a" + integrity sha512-wV5RNDhM7FYvE1+xbla6wVP5VSonPA4os8GLJYF+fKwAYf8lcUwFx2SIlRvFEqZF/wyQzZYR1D6filGaXGlU5w== dependencies: "@jest/reporters" "27.2.2" "@jest/test-result" "27.2.2" - "@nrwl/devkit" "13.3.1" + "@nrwl/devkit" "13.4.1" chalk "4.1.0" identity-obj-proxy "3.0.0" jest-config "27.2.2" @@ -1600,13 +1632,29 @@ rxjs "^6.5.4" tslib "^2.3.0" -"@nrwl/linter@13.3.1", "@nrwl/linter@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-13.3.1.tgz#1c1b9c997c05da236e84b02d21cca01c3b68b300" - integrity sha512-k9v/ZA0MuLsYRyjBXc3WcdJ+WZz1ugpRGq3LqVw+oQlJ0++4BW5k3LKzhEzKuEAJ7Vu3NHsbjKRNxj4PCZ+7NQ== +"@nrwl/js@13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-13.4.1.tgz#ec54d6c7a2d888fa363dfb0b7b383193f36e6502" + integrity sha512-EnHPCmKH02LlX+NxS0A3g0uWZI03qUCoaXnliVVa3Mtwdd0J3XXifbYRiUUB7yPHtggwzqH4WS7SSjsSNjmjlw== + dependencies: + "@nrwl/devkit" "13.4.1" + "@nrwl/jest" "13.4.1" + "@nrwl/linter" "13.4.1" + "@nrwl/workspace" "13.4.1" + chalk "4.1.0" + js-tokens "^4.0.0" + rxjs "^6.5.4" + rxjs-for-await "0.0.2" + source-map-support "0.5.19" + tree-kill "1.2.2" + +"@nrwl/linter@13.4.1", "@nrwl/linter@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-13.4.1.tgz#af2a6677ef79d44f2ef6ee007b03be575e290cc1" + integrity sha512-Ufn/TtHpAuvSbS7vRDCcHN+etMEKoAnoLNOifhvA6Iw4k2B8pw3mxPuZHLUKG3j/+l+O+YIZdPxhzsr0z2O/Rw== dependencies: - "@nrwl/devkit" "13.3.1" - "@nrwl/jest" "13.3.1" + "@nrwl/devkit" "13.4.1" + "@nrwl/jest" "13.4.1" "@phenomnomnominal/tsquery" "4.1.1" eslint "8.2.0" glob "7.1.4" @@ -1614,10 +1662,10 @@ tmp "~0.2.1" tslib "^2.3.0" -"@nrwl/nx-cloud@latest": - version "13.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-13.0.0.tgz#24d01bc8c20ee6eeb66fd6b0499d3396cc5e5993" - integrity sha512-zx212AYO5Goz7QPPbjYcS+pXaoNXbTJi8ahgW5Q7r7E9wDTZhHbZZ++ds2qMB3WHWP63soq98VmDlxYRFV7lGA== +"@nrwl/nx-cloud@13.0.1": + version "13.0.1" + resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-13.0.1.tgz#4a123c070d73160a12467b0d25146710a675a67c" + integrity sha512-xjsGTOoYR8SXdca6qRLrxLa3mySLXFOR9+sVA6+ODVXKYZsKJOoxAJNAQO46Pvi4YtKn2woxFJDFFB/lTFWpqQ== dependencies: axios "^0.21.1" chalk "4.1.0" @@ -1626,20 +1674,21 @@ strip-json-comments "^3.1.1" tar "6.1.11" -"@nrwl/react@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/react/-/react-13.3.1.tgz#b9cce648859a80bee809cf06d5398c6d101ec7fe" - integrity sha512-TF/LuVkxhKWmNjzQ9uvMdBugyEmZegqrcDgmO4crA/1NPY/OVmxCvXE4IbuHz6nbmxqIxTv0jVGgfkgcIL/0uA== +"@nrwl/react@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/react/-/react-13.4.1.tgz#86896071e215289a54166286483712980712adfb" + integrity sha512-7bpCkGXO8CwWTKJDDbnAncMxM8x5ZrVIL/ffyeU0BUZPh96HIZ4I2ggeP9q9Kbk/7efm9vsmgLUKSnF+hbosMQ== dependencies: "@babel/core" "^7.15.0" "@babel/preset-react" "^7.14.5" - "@nrwl/cypress" "13.3.1" - "@nrwl/devkit" "13.3.1" - "@nrwl/jest" "13.3.1" - "@nrwl/linter" "13.3.1" - "@nrwl/storybook" "13.3.1" - "@nrwl/web" "13.3.1" - "@nrwl/workspace" "13.3.1" + "@nrwl/cypress" "13.4.1" + "@nrwl/devkit" "13.4.1" + "@nrwl/jest" "13.4.1" + "@nrwl/js" "13.4.1" + "@nrwl/linter" "13.4.1" + "@nrwl/storybook" "13.4.1" + "@nrwl/web" "13.4.1" + "@nrwl/workspace" "13.4.1" "@pmmmwh/react-refresh-webpack-plugin" "^0.5.1" "@storybook/node-logger" "6.1.20" "@svgr/webpack" "^5.5.0" @@ -1654,24 +1703,24 @@ webpack "^5.58.1" webpack-merge "^5.8.0" -"@nrwl/storybook@13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/storybook/-/storybook-13.3.1.tgz#07d2daa83c5f3858f01d52e9324283c3bc2a83bf" - integrity sha512-uf8MfA8p1kp1vpQ41ssHEdT94t116G/Qoiop6lSftPAxO12fauDGAsO0FZmtk6sKcvlq1m98I8mvSmNh/AknBw== +"@nrwl/storybook@13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/storybook/-/storybook-13.4.1.tgz#09fc4fc2c1d33dafa9e761e84fa521921529d582" + integrity sha512-EhsIZnWJIhZikI17+AL2YHdsXZzXNs+GVmbPCig6gV3EjfQyc9lfx455ydiy/VYJ8QbAX6+XEixPtXigX30wUg== dependencies: - "@nrwl/cypress" "13.3.1" - "@nrwl/devkit" "13.3.1" - "@nrwl/linter" "13.3.1" - "@nrwl/workspace" "13.3.1" + "@nrwl/cypress" "13.4.1" + "@nrwl/devkit" "13.4.1" + "@nrwl/linter" "13.4.1" + "@nrwl/workspace" "13.4.1" core-js "^3.6.5" semver "7.3.4" ts-loader "^9.2.6" tsconfig-paths-webpack-plugin "3.4.1" -"@nrwl/tao@13.3.1", "@nrwl/tao@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-13.3.1.tgz#49943cff0430e0e37c6429da9fb00d07b3e77a3d" - integrity sha512-+wPsvR5XHM59ndyKmnhnysXjsqJrDAxlbYtHDPn8UBUzAzLYntZ808XsJLfhmt3F9G1bxPsFLEW3gT/FjCe2Bg== +"@nrwl/tao@13.4.1", "@nrwl/tao@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-13.4.1.tgz#914214bda8d64c61369218e7c53b4dfdcfe756e7" + integrity sha512-bgVzHlKfY7TK0ZLlM9+yQxfw8+NGsfl1+612advLYI46NRYAOpY3yOPBWX+69M+W3SwdjKQDyTi57hHbgx1XBA== dependencies: chalk "4.1.0" enquirer "~2.3.6" @@ -1679,7 +1728,7 @@ fs-extra "^9.1.0" ignore "^5.0.4" jsonc-parser "3.0.0" - nx "13.3.1" + nx "13.4.1" rxjs "^6.5.4" rxjs-for-await "0.0.2" semver "7.3.4" @@ -1687,10 +1736,10 @@ tslib "^2.3.0" yargs-parser "20.0.0" -"@nrwl/web@13.3.1", "@nrwl/web@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-13.3.1.tgz#fafed95d42a32840fac51f2c87cde3c9872d5dcc" - integrity sha512-xXt0fWVgR+xEDYaRZPCchLE8tggTCll9NOQj/8npj/OzZiQfS87ieW6gkV4woIydne606cv+1CZ9puxZ2RPKcQ== +"@nrwl/web@13.4.1", "@nrwl/web@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-13.4.1.tgz#494300b02583b7b7156f86910f1a567d27a9e5af" + integrity sha512-81Sc1Q8jBW4dI6sO1JCPA0wjG7P8pk7rwjpTfGtMnR/nVeNj6+iMuuxoFuQuPHDESRv9wBmRDBJqXrPqorW1Gg== dependencies: "@babel/core" "^7.15.0" "@babel/plugin-proposal-class-properties" "^7.14.5" @@ -1700,11 +1749,12 @@ "@babel/preset-env" "^7.15.0" "@babel/preset-typescript" "^7.15.0" "@babel/runtime" "^7.14.8" - "@nrwl/cypress" "13.3.1" - "@nrwl/devkit" "13.3.1" - "@nrwl/jest" "13.3.1" - "@nrwl/linter" "13.3.1" - "@nrwl/workspace" "13.3.1" + "@nrwl/cypress" "13.4.1" + "@nrwl/devkit" "13.4.1" + "@nrwl/jest" "13.4.1" + "@nrwl/js" "13.4.1" + "@nrwl/linter" "13.4.1" + "@nrwl/workspace" "13.4.1" "@pmmmwh/react-refresh-webpack-plugin" "^0.5.1" "@rollup/plugin-babel" "^5.3.0" "@rollup/plugin-commonjs" "^20.0.0" @@ -1776,33 +1826,29 @@ webpack-subresource-integrity "^1.5.2" worker-plugin "3.2.0" -"@nrwl/workspace@13.3.1", "@nrwl/workspace@^13.3.1": - version "13.3.1" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-13.3.1.tgz#6d27ec301051ede4a333b2e62d784fe5e22ccd00" - integrity sha512-bDPUJMqzKwj13ze5nE8IxCmWZ9FrQAwxDxmxi/NqBjY1JoxLu3HmjMT/SSTuestkMCun2eLDylwLdGW2iGv4fA== +"@nrwl/workspace@13.4.1", "@nrwl/workspace@^13.4.1": + version "13.4.1" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-13.4.1.tgz#7c178702e4908e621df7b8f405f9ed78da8946f3" + integrity sha512-u+/1jQL7fsISJePZlTkBxp27N+aL9BWIbITAaH+Jxazyjrpwy11ImcXbJIpMeYY8P1cpXM7XMw0sn8vz7LIuZQ== dependencies: - "@nrwl/cli" "13.3.1" - "@nrwl/devkit" "13.3.1" - "@nrwl/jest" "13.3.1" - "@nrwl/linter" "13.3.1" + "@nrwl/cli" "13.4.1" + "@nrwl/devkit" "13.4.1" + "@nrwl/jest" "13.4.1" + "@nrwl/linter" "13.4.1" "@parcel/watcher" "2.0.4" chalk "4.1.0" chokidar "^3.5.1" cosmiconfig "^4.0.0" dotenv "~10.0.0" enquirer "~2.3.6" - figures "3.2.0" flat "^5.0.2" fs-extra "^9.1.0" glob "7.1.4" ignore "^5.0.4" - ink "^3.2.0" - ink-spinner "^4.0.3" minimatch "3.0.4" npm-run-all "^4.1.5" npm-run-path "^4.0.1" open "^7.4.2" - react "17.0.2" rxjs "^6.5.4" semver "7.3.4" strip-ansi "6.0.0" @@ -2253,7 +2299,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*", "@types/jest@^27.0.3": +"@types/jest@*": version "27.0.3" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.3.tgz#0cf9dfe9009e467f70a342f0f94ead19842a783a" integrity sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg== @@ -2261,6 +2307,14 @@ jest-diff "^27.0.0" pretty-format "^27.0.0" +"@types/jest@^27.4.0": + version "27.4.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" + integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ== + dependencies: + jest-diff "^27.0.0" + pretty-format "^27.0.0" + "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" @@ -2298,7 +2352,7 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@^16.11.10": +"@types/node@*": version "16.11.12" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10" integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw== @@ -2308,6 +2362,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.0.tgz#98df2397f6936bfbff4f089e40e06fa5dd88d32a" integrity sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ== +"@types/node@^17.0.5": + version "17.0.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.5.tgz#57ca67ec4e57ad9e4ef5a6bab48a15387a1c83e0" + integrity sha512-w3mrvNXLeDYV1GKTZorGJQivK6XLCoGwpnyJFbJVK/aTBQUxOCaa/GlFAAN3OTDFcb7h5tiFG+YXCO2By+riZw== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -2352,7 +2411,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@>=16.9.0", "@types/react@^17.0.37": +"@types/react@*", "@types/react@>=16.9.0": version "17.0.37" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.37.tgz#6884d0aa402605935c397ae689deed115caad959" integrity sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg== @@ -2361,6 +2420,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^17.0.38": + version "17.0.38" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd" + integrity sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -2454,18 +2522,13 @@ dependencies: "@types/node" "*" -"@types/yoga-layout@1.9.2": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a" - integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw== - -"@typescript-eslint/eslint-plugin@^5.4.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.6.0.tgz#efd8668b3d6627c46ce722c2afe813928fe120a0" - integrity sha512-MIbeMy5qfLqtgs1hWd088k1hOuRsN9JrHUPwVVKCD99EOUqScd7SrwoZl4Gso05EAP9w1kvLWUVGJOVpRPkDPA== +"@typescript-eslint/eslint-plugin@^5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.1.tgz#97dfaa39f38e99f86801fdf34f9f1bed66704258" + integrity sha512-wTZ5oEKrKj/8/366qTM366zqhIKAp6NCMweoRONtfuC07OAU9nVI2GZZdqQ1qD30WAAtcPdkH+npDwtRFdp4Rw== dependencies: - "@typescript-eslint/experimental-utils" "5.6.0" - "@typescript-eslint/scope-manager" "5.6.0" + "@typescript-eslint/experimental-utils" "5.8.1" + "@typescript-eslint/scope-manager" "5.8.1" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -2473,15 +2536,15 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.6.0.tgz#f3a5960f2004abdcac7bb81412bafc1560841c23" - integrity sha512-VDoRf3Qj7+W3sS/ZBXZh3LBzp0snDLEgvp6qj0vOAIiAPM07bd5ojQ3CTzF/QFl5AKh7Bh1ycgj6lFBJHUt/DA== +"@typescript-eslint/experimental-utils@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.1.tgz#01861eb2f0749f07d02db342b794145a66ed346f" + integrity sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.6.0" - "@typescript-eslint/types" "5.6.0" - "@typescript-eslint/typescript-estree" "5.6.0" + "@typescript-eslint/scope-manager" "5.8.1" + "@typescript-eslint/types" "5.8.1" + "@typescript-eslint/typescript-estree" "5.8.1" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -2497,14 +2560,14 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@^5.4.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.6.0.tgz#11677324659641400d653253c03dcfbed468d199" - integrity sha512-YVK49NgdUPQ8SpCZaOpiq1kLkYRPMv9U5gcMrywzI8brtwZjr/tG3sZpuHyODt76W/A0SufNjYt9ZOgrC4tLIQ== +"@typescript-eslint/parser@^5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.8.1.tgz#380f5f1e596b540059998aa3fc80d78f0f9b0d0a" + integrity sha512-K1giKHAjHuyB421SoXMXFHHVI4NdNY603uKw92++D3qyxSeYvC10CBJ/GE5Thpo4WTUvu1mmJI2/FFkz38F2Gw== dependencies: - "@typescript-eslint/scope-manager" "5.6.0" - "@typescript-eslint/types" "5.6.0" - "@typescript-eslint/typescript-estree" "5.6.0" + "@typescript-eslint/scope-manager" "5.8.1" + "@typescript-eslint/types" "5.8.1" + "@typescript-eslint/typescript-estree" "5.8.1" debug "^4.3.2" "@typescript-eslint/scope-manager@5.3.1": @@ -2515,23 +2578,23 @@ "@typescript-eslint/types" "5.3.1" "@typescript-eslint/visitor-keys" "5.3.1" -"@typescript-eslint/scope-manager@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.6.0.tgz#9dd7f007dc8f3a34cdff6f79f5eaab27ae05157e" - integrity sha512-1U1G77Hw2jsGWVsO2w6eVCbOg0HZ5WxL/cozVSTfqnL/eB9muhb8THsP0G3w+BB5xAHv9KptwdfYFAUfzcIh4A== +"@typescript-eslint/scope-manager@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz#7fc0604f7ade8833e4d42cebaa1e2debf8b932e4" + integrity sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q== dependencies: - "@typescript-eslint/types" "5.6.0" - "@typescript-eslint/visitor-keys" "5.6.0" + "@typescript-eslint/types" "5.8.1" + "@typescript-eslint/visitor-keys" "5.8.1" "@typescript-eslint/types@5.3.1": version "5.3.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.3.1.tgz#afaa715b69ebfcfde3af8b0403bf27527912f9b7" integrity sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ== -"@typescript-eslint/types@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.6.0.tgz#745cb1b59daadcc1f32f7be95f0f68accf38afdd" - integrity sha512-OIZffked7mXv4mXzWU5MgAEbCf9ecNJBKi+Si6/I9PpTaj+cf2x58h2oHW5/P/yTnPkKaayfjhLvx+crnl5ubA== +"@typescript-eslint/types@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.8.1.tgz#04c6b49ebc8c99238238a6b8b43f2fc613983b5a" + integrity sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA== "@typescript-eslint/typescript-estree@5.3.1": version "5.3.1" @@ -2546,13 +2609,13 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.6.0.tgz#dfbb19c9307fdd81bd9c650c67e8397821d7faf0" - integrity sha512-92vK5tQaE81rK7fOmuWMrSQtK1IMonESR+RJR2Tlc7w4o0MeEdjgidY/uO2Gobh7z4Q1hhS94Cr7r021fMVEeA== +"@typescript-eslint/typescript-estree@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz#a592855be688e7b729a1e9411d7d74ec992ed6ef" + integrity sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ== dependencies: - "@typescript-eslint/types" "5.6.0" - "@typescript-eslint/visitor-keys" "5.6.0" + "@typescript-eslint/types" "5.8.1" + "@typescript-eslint/visitor-keys" "5.8.1" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" @@ -2567,12 +2630,12 @@ "@typescript-eslint/types" "5.3.1" eslint-visitor-keys "^3.0.0" -"@typescript-eslint/visitor-keys@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.6.0.tgz#3e36509e103fe9713d8f035ac977235fd63cb6e6" - integrity sha512-1p7hDp5cpRFUyE3+lvA74egs+RWSgumrBpzBCDzfTFv0aQ7lIeay80yU0hIxgAhwQ6PcasW35kaOCyDOv6O/Ng== +"@typescript-eslint/visitor-keys@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz#58a2c566265d5511224bc316149890451c1bbab0" + integrity sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg== dependencies: - "@typescript-eslint/types" "5.6.0" + "@typescript-eslint/types" "5.8.1" eslint-visitor-keys "^3.0.0" "@webassemblyjs/ast@1.11.1": @@ -2819,7 +2882,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3131,11 +3194,6 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -auto-bind@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" - integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== - autoprefixer@^10.2.5: version "10.4.0" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.0.tgz#c3577eb32a1079a440ec253e404eaf1eb21388c8" @@ -3188,7 +3246,7 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^27.2.2, babel-jest@^27.3.1, babel-jest@^27.4.4: +babel-jest@^27.2.2: version "27.4.4" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.4.tgz#a012441f8a155df909839543a09510ab3477aa11" integrity sha512-+6RVutZxOQgJkt4svgTHPFtOQlVe9dUg3wrimIAM38pY6hL/nsL8glfFSUjD9jNVjaVjzkCzj6loFFecrjr9Qw== @@ -3202,6 +3260,20 @@ babel-jest@^27.2.2, babel-jest@^27.3.1, babel-jest@^27.4.4: graceful-fs "^4.2.4" slash "^3.0.0" +babel-jest@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.5.tgz#d38bd0be8ea71d8b97853a5fc9f76deeb095c709" + integrity sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA== + dependencies: + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^27.4.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + babel-loader@^8.2.2: version "8.2.3" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" @@ -3741,11 +3813,6 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - ci-info@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" @@ -3771,11 +3838,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-boxes@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -3783,11 +3845,6 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-spinners@^2.3.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - cli-table3@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" @@ -3862,13 +3919,6 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -code-excerpt@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-3.0.0.tgz#fcfb6748c03dba8431c19f5474747fad3f250f10" - integrity sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw== - dependencies: - convert-to-spaces "^1.0.1" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -3921,6 +3971,11 @@ colord@^2.9.1: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== +colord@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + colorette@^1.1.0, colorette@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" @@ -4230,11 +4285,6 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -convert-to-spaces@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" - integrity sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU= - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -4275,11 +4325,16 @@ core-js-pure@^3.19.0, core-js-pure@^3.8.1: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.19.3.tgz#c69b2b36b58927317824994b532ec3f0f7e49607" integrity sha512-N3JruInmCyt7EJj5mAq3csCgGYgiSqu7p7TQp2KOztr180/OAIxyIvL1FCjzgmQk/t3Yniua50Fsak7FShI9lA== -core-js@^3.0.1, core-js@^3.19.1, core-js@^3.6.5: +core-js@^3.0.1, core-js@^3.6.5: version "3.19.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.3.tgz#6df8142a996337503019ff3235a7022d7cdf4559" integrity sha512-LeLBMgEGSsG7giquSzvgBrTS7V5UL6ks3eQlUSbN8dJStlLFiRzUm5iqsRyzUB8carhfKjkJ2vzKqE6z1Vga9g== +core-js@^3.20.1: + version "3.20.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.1.tgz#eb1598047b7813572f1dc24b7c6a95528c99eef3" + integrity sha512-btdpStYFQScnNVQ5slVcr858KP0YWYjV16eGJQw8Gg7CWtu/2qNvIM3qVRIR3n1pK2R9NNOrTevbvAYxajwEjg== + core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -4295,6 +4350,14 @@ corser@^2.0.1: resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c= +cosmiconfig-typescript-loader@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.2.tgz#257b5bc3e2c18c280973aa3ff4ae423ac29ce9b4" + integrity sha512-27ZehvijYqAKVzta5xtZBS3PAliC8CmnWkGXN0vgxAZz7yqxpMjf3aG7flxF5rEiu8FAD7nZZXtOI+xUGn+bVg== + dependencies: + cosmiconfig "^7" + ts-node "^10.4.0" + cosmiconfig@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" @@ -4326,7 +4389,7 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: +cosmiconfig@^7, cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== @@ -4553,10 +4616,10 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -cypress@^9.1.0: - version "9.1.1" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.1.1.tgz#26720ca5a22077cd85f49745616b7a08152a298f" - integrity sha512-yWcYD8SEQ8F3okFbRPqSDj5V0xhrZBT5QRIH+P1J2vYvtEmZ4KGciHE7LCcZZLILOrs7pg4WNCqkj/XRvReQlQ== +cypress@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.2.0.tgz#727c20b4662167890db81d5f6ba615231835b17d" + integrity sha512-Jn26Tprhfzh/a66Sdj9SoaYlnNX6Mjfmj5PHu2a7l3YHXhrgmavM368wjCmgrxC6KHTOv9SpMQGhAJn+upDViA== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -4643,7 +4706,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== @@ -5323,7 +5386,7 @@ eslint-plugin-react-hooks@^4.2.0, eslint-plugin-react-hooks@^4.3.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== -eslint-plugin-react@^7.23.1, eslint-plugin-react@^7.27.1: +eslint-plugin-react@^7.23.1: version "7.27.1" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz#469202442506616f77a854d91babaae1ec174b45" integrity sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA== @@ -5343,6 +5406,26 @@ eslint-plugin-react@^7.23.1, eslint-plugin-react@^7.27.1: semver "^6.3.0" string.prototype.matchall "^4.0.6" +eslint-plugin-react@^7.28.0: + version "7.28.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz#8f3ff450677571a659ce76efc6d80b6a525adbdf" + integrity sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw== + dependencies: + array-includes "^3.1.4" + array.prototype.flatmap "^1.2.5" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.0" + object.values "^1.1.5" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.6" + eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -5428,10 +5511,10 @@ eslint@8.2.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@^8.2.0: - version "8.4.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.4.1.tgz#d6531bbf3e598dffd7c0c7d35ec52a0b30fdfa2d" - integrity sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg== +eslint@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.5.0.tgz#ddd2c1afd8f412036f87ae2a063d2aa296d3175f" + integrity sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg== dependencies: "@eslint/eslintrc" "^1.0.5" "@humanwhocodes/config-array" "^0.9.2" @@ -5805,7 +5888,7 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figures@3.2.0, figures@^3.1.0, figures@^3.2.0: +figures@^3.1.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -6503,10 +6586,10 @@ highlight.js@^11.3.1: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.3.1.tgz#813078ef3aa519c61700f84fe9047231c5dc3291" integrity sha512-PUhCRnPjLtiLHZAQ5A/Dt5F8cWZeMyj9KRsACsWT+OD6OP0x6dp5OmT5jdx0JgEyPxPZZIPQpRN2TciUT7occw== -history@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/history/-/history-5.1.0.tgz#2e93c09c064194d38d52ed62afd0afc9d9b01ece" - integrity sha512-zPuQgPacm2vH2xdORvGGz1wQMuHSIB56yNAy5FnLuwOwgSYyPKptJtcMm6Ev+hRGeS+GzhbmRacHzvlESbFwDg== +history@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.2.0.tgz#7cdd31cf9bac3c5d31f09c231c9928fad0007b7c" + integrity sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig== dependencies: "@babel/runtime" "^7.7.6" @@ -6725,10 +6808,10 @@ husky@^7.0.4: resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== -i18next@^21.5.3: - version "21.6.0" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.6.0.tgz#257abf455b24136640a20728b44cf59f60cdeb5c" - integrity sha512-RjNuACL35wWZgtkyMcjcCmK7R72u3P6jTNbGKzrvHGI9M0iK5Vn1DsBIwOByppaXLIbe0viJ79Nz2h8w1UwPoQ== +i18next@^21.6.4: + version "21.6.4" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.6.4.tgz#4da52a429094112b33d4383b5f44aa4890dcb081" + integrity sha512-pk0Utxtq5g//Q9ONQ0w3+PRSwOFJ7+m4rAekhHHg1Xql0KcUjJU7DzmzweGy6DsrIQ1GM/t57wLeeGuyGKtjTg== dependencies: "@babel/runtime" "^7.12.0" @@ -6768,11 +6851,16 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.1.9: +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8: version "5.1.9" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" @@ -6884,42 +6972,6 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -ink-spinner@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/ink-spinner/-/ink-spinner-4.0.3.tgz#0d0f4a787ae1a4270928e063d9c52527cb264feb" - integrity sha512-uJ4nbH00MM9fjTJ5xdw0zzvtXMkeGb0WV6dzSWvFv2/+ks6FIhpkt+Ge/eLdh0Ah6Vjw5pLMyNfoHQpRDRVFbQ== - dependencies: - cli-spinners "^2.3.0" - -ink@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ink/-/ink-3.2.0.tgz#434793630dc57d611c8fe8fffa1db6b56f1a16bb" - integrity sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg== - dependencies: - ansi-escapes "^4.2.1" - auto-bind "4.0.0" - chalk "^4.1.0" - cli-boxes "^2.2.0" - cli-cursor "^3.1.0" - cli-truncate "^2.1.0" - code-excerpt "^3.0.0" - indent-string "^4.0.0" - is-ci "^2.0.0" - lodash "^4.17.20" - patch-console "^1.0.0" - react-devtools-core "^4.19.1" - react-reconciler "^0.26.2" - scheduler "^0.20.2" - signal-exit "^3.0.2" - slice-ansi "^3.0.0" - stack-utils "^2.0.2" - string-width "^4.2.2" - type-fest "^0.12.0" - widest-line "^3.1.0" - wrap-ansi "^6.2.0" - ws "^7.5.5" - yoga-layout-prebuilt "^1.9.6" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -7031,13 +7083,6 @@ is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - is-ci@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" @@ -7456,7 +7501,7 @@ jest-changed-files@^27.4.2: execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.2.2, jest-circus@^27.4.4: +jest-circus@^27.2.2: version "27.4.4" resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.4.tgz#8bf89aa604b914ecc10e3d895aae283b529f965d" integrity sha512-4DWhvQerDq5X4GaqhEUoZiBhuNdKDGr0geW0iJwarbDljAmGaGOErKQG+z2PBr0vgN05z7tsGSY51mdWr8E4xg== @@ -7481,19 +7526,44 @@ jest-circus@^27.2.2, jest-circus@^27.4.4: stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.4.4: - version "27.4.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.4.tgz#7115ff01f605c2c848314141b1ac144099ddeed5" - integrity sha512-+MfsHnZPUOBigCBURuQFRpgYoPCgmIFkICkqt4SrramZCUp/UAuWcst4pMZb84O3VU8JyKJmnpGG4qH8ClQloA== +jest-circus@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.5.tgz#70bfb78e0200cab9b84747bf274debacaa538467" + integrity sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw== + dependencies: + "@jest/environment" "^27.4.4" + "@jest/test-result" "^27.4.2" + "@jest/types" "^27.4.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.4.2" + is-generator-fn "^2.0.0" + jest-each "^27.4.2" + jest-matcher-utils "^27.4.2" + jest-message-util "^27.4.2" + jest-runtime "^27.4.5" + jest-snapshot "^27.4.5" + jest-util "^27.4.2" + pretty-format "^27.4.2" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.5.tgz#8708f54c28d13681f3255ec9026a2b15b03d41e8" + integrity sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg== dependencies: - "@jest/core" "^27.4.4" + "@jest/core" "^27.4.5" "@jest/test-result" "^27.4.2" "@jest/types" "^27.4.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" - jest-config "^27.4.4" + jest-config "^27.4.5" jest-util "^27.4.2" jest-validate "^27.4.2" prompts "^2.0.1" @@ -7526,28 +7596,28 @@ jest-config@27.2.2: micromatch "^4.0.4" pretty-format "^27.2.2" -jest-config@^27.4.4: - version "27.4.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.4.tgz#0e3615392361baae0e29dbf64c296d5563d7e28b" - integrity sha512-6lxg0ugO6KS2zKEbpdDwBzu1IT0Xg4/VhxXMuBu+z/5FvBjLCEMTaWQm3bCaGCZUR9j9FK4DzUIxyhIgn6kVEg== +jest-config@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.5.tgz#77ed7f2ba7bcfd7d740ade711d0d13512e08a59e" + integrity sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.4.4" + "@jest/test-sequencer" "^27.4.5" "@jest/types" "^27.4.2" - babel-jest "^27.4.4" + babel-jest "^27.4.5" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-circus "^27.4.4" + jest-circus "^27.4.5" jest-environment-jsdom "^27.4.4" jest-environment-node "^27.4.4" jest-get-type "^27.4.0" - jest-jasmine2 "^27.4.4" + jest-jasmine2 "^27.4.5" jest-regex-util "^27.4.0" - jest-resolve "^27.4.4" - jest-runner "^27.4.4" + jest-resolve "^27.4.5" + jest-runner "^27.4.5" jest-util "^27.4.2" jest-validate "^27.4.2" micromatch "^4.0.4" @@ -7632,7 +7702,27 @@ jest-haste-map@^27.2.2, jest-haste-map@^27.4.4: optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.2.2, jest-jasmine2@^27.4.4: +jest-haste-map@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.5.tgz#c2921224a59223f91e03ec15703905978ef0cc1a" + integrity sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q== + dependencies: + "@jest/types" "^27.4.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^27.4.0" + jest-serializer "^27.4.0" + jest-util "^27.4.2" + jest-worker "^27.4.5" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.2.2: version "27.4.4" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.4.tgz#1fcdc64de932913366e7d5f2960c375e1145176e" integrity sha512-ygk2tUgtLeN3ouj4KEYw9p81GLI1EKrnvourPULN5gdgB482PH5op9gqaRG0IenbJhBbbRwiSvh5NoBoQZSqdA== @@ -7656,6 +7746,30 @@ jest-jasmine2@^27.2.2, jest-jasmine2@^27.4.4: pretty-format "^27.4.2" throat "^6.0.1" +jest-jasmine2@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.5.tgz#ff79d11561679ff6c89715b0cd6b1e8c0dfbc6dc" + integrity sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^27.4.4" + "@jest/source-map" "^27.4.0" + "@jest/test-result" "^27.4.2" + "@jest/types" "^27.4.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.4.2" + is-generator-fn "^2.0.0" + jest-each "^27.4.2" + jest-matcher-utils "^27.4.2" + jest-message-util "^27.4.2" + jest-runtime "^27.4.5" + jest-snapshot "^27.4.5" + jest-util "^27.4.2" + pretty-format "^27.4.2" + throat "^6.0.1" + jest-leak-detector@^27.4.2: version "27.4.2" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz#7fc3120893a7a911c553f3f2bdff9faa4454abbb" @@ -7707,14 +7821,14 @@ jest-regex-util@^27.0.6, jest-regex-util@^27.4.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca" integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg== -jest-resolve-dependencies@^27.4.4: - version "27.4.4" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.4.tgz#dae11e067a6d6a9553f1386a0ea1efe5be0e2332" - integrity sha512-iAnpCXh81sd9nbyqySvm5/aV9X6JZKE0dQyFXTC8tptXcdrgS0vjPFy+mEgzPHxXw+tq4TQupuTa0n8OXwRIxw== +jest-resolve-dependencies@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.5.tgz#9398af854bdb12d6a9e5a8a536ee401f889a3ecf" + integrity sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w== dependencies: "@jest/types" "^27.4.2" jest-regex-util "^27.4.0" - jest-snapshot "^27.4.4" + jest-snapshot "^27.4.5" jest-resolve@27.2.2: version "27.2.2" @@ -7748,7 +7862,23 @@ jest-resolve@^27.2.2, jest-resolve@^27.4.4: resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.2.2, jest-runner@^27.4.4: +jest-resolve@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.5.tgz#8dc44f5065fb8d58944c20f932cb7b9fe9760cca" + integrity sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw== + dependencies: + "@jest/types" "^27.4.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^27.4.5" + jest-pnp-resolver "^1.2.2" + jest-util "^27.4.2" + jest-validate "^27.4.2" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.2.2: version "27.4.4" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.4.tgz#0b40cdcbac293ebc4c19c2d7805d17ab1072f1fd" integrity sha512-AXv/8Q0Xf1puWnDf52m7oLrK7sXcv6re0V/kItwTSVHJbX7Oebm07oGFQqGmq0R0mhO1zpmB3OpqRuaCN2elPA== @@ -7776,6 +7906,34 @@ jest-runner@^27.2.2, jest-runner@^27.4.4: source-map-support "^0.5.6" throat "^6.0.1" +jest-runner@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.5.tgz#daba2ba71c8f34137dc7ac45616add35370a681e" + integrity sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg== + dependencies: + "@jest/console" "^27.4.2" + "@jest/environment" "^27.4.4" + "@jest/test-result" "^27.4.2" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-docblock "^27.4.0" + jest-environment-jsdom "^27.4.4" + jest-environment-node "^27.4.4" + jest-haste-map "^27.4.5" + jest-leak-detector "^27.4.2" + jest-message-util "^27.4.2" + jest-resolve "^27.4.5" + jest-runtime "^27.4.5" + jest-util "^27.4.2" + jest-worker "^27.4.5" + source-map-support "^0.5.6" + throat "^6.0.1" + jest-runtime@^27.4.4: version "27.4.4" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.4.tgz#0d486735e8a1c8bbcdbb9285b3155ed94c5e3670" @@ -7808,6 +7966,38 @@ jest-runtime@^27.4.4: strip-bom "^4.0.0" yargs "^16.2.0" +jest-runtime@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.5.tgz#97703ad2a1799d4f50ab59049bd21a9ceaed2813" + integrity sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ== + dependencies: + "@jest/console" "^27.4.2" + "@jest/environment" "^27.4.4" + "@jest/globals" "^27.4.4" + "@jest/source-map" "^27.4.0" + "@jest/test-result" "^27.4.2" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-haste-map "^27.4.5" + jest-message-util "^27.4.2" + jest-mock "^27.4.2" + jest-regex-util "^27.4.0" + jest-resolve "^27.4.5" + jest-snapshot "^27.4.5" + jest-util "^27.4.2" + jest-validate "^27.4.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^16.2.0" + jest-serializer@^27.4.0: version "27.4.0" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a" @@ -7846,6 +8036,36 @@ jest-snapshot@^27.4.4: pretty-format "^27.4.2" semver "^7.3.2" +jest-snapshot@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.5.tgz#2ea909b20aac0fe62504bc161331f730b8a7ecc7" + integrity sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/parser" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.4.2" + graceful-fs "^4.2.4" + jest-diff "^27.4.2" + jest-get-type "^27.4.0" + jest-haste-map "^27.4.5" + jest-matcher-utils "^27.4.2" + jest-message-util "^27.4.2" + jest-resolve "^27.4.5" + jest-util "^27.4.2" + natural-compare "^1.4.0" + pretty-format "^27.4.2" + semver "^7.3.2" + jest-util@27.2.0: version "27.2.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.2.0.tgz#bfccb85cfafae752257319e825a5b8d4ada470dc" @@ -7904,14 +8124,23 @@ jest-worker@^27.0.2, jest-worker@^27.0.6, jest-worker@^27.2.2, jest-worker@^27.4 merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.3.1: - version "27.4.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.4.tgz#9b1aa1db25d0b13477a49d18e22ba7cdff97105b" - integrity sha512-AXwEIFa58Uf1Jno3/KSo5HZZ0/2Xwqvfrz0/3bmTwImkFlbOvz5vARAW9nTrxRLkojjkitaZ1KNKAtw3JRFAaA== +jest-worker@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.5.tgz#d696e3e46ae0f24cff3fa7195ffba22889262242" + integrity sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg== dependencies: - "@jest/core" "^27.4.4" + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.5.tgz#66e45acba44137fac26be9d3cc5bb031e136dc0f" + integrity sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg== + dependencies: + "@jest/core" "^27.4.5" import-local "^3.0.2" - jest-cli "^27.4.4" + jest-cli "^27.4.5" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -8113,10 +8342,10 @@ known-css-properties@^0.11.0: resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a" integrity sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w== -known-css-properties@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.23.0.tgz#e643e1bab2b1f8ba292eea9557121cc02e9846a0" - integrity sha512-h9ivI88e1lFNmTT4HovBN33Ysn0OIJG7IPG2mkpx2uniQXFWqo35QdiX7w0TovlUFXfW8aPFblP5/q0jlOr2sA== +known-css-properties@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.24.0.tgz#19aefd85003ae5698a5560d2b55135bf5432155c" + integrity sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA== language-subtag-registry@~0.3.2: version "0.3.21" @@ -8307,11 +8536,6 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.get@^4: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -8431,7 +8655,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-error@1.x, make-error@^1, make-error@^1.1.1: +make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -9003,12 +9227,12 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -nx@13.3.1: - version "13.3.1" - resolved "https://registry.yarnpkg.com/nx/-/nx-13.3.1.tgz#dd1ab90717325a2d1b2e23db7a168d44bbe5fd30" - integrity sha512-cijXbIernbBWa89VnX78gO8kMKw8Y87g646jQhpHl73xwNtiSkUpK+/J7syhqCInMoWlD2doqlVUIsM3LzNyWA== +nx@13.4.1: + version "13.4.1" + resolved "https://registry.yarnpkg.com/nx/-/nx-13.4.1.tgz#e96df3f954fc6c8c67c109c1d773ac3c8195efdf" + integrity sha512-x/fbcY/mg6rHhVho2oWDKPk+ZTHCuNvaBSe959BY7OkPiGaP5yydfXfP+tuRdxrEGIL0ZD+UzsjH/1ITdnZP3w== dependencies: - "@nrwl/cli" "13.3.1" + "@nrwl/cli" "13.4.1" object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -9377,11 +9601,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -patch-console@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/patch-console/-/patch-console-1.0.0.tgz#19b9f028713feb8a3c023702a8cc8cb9f7466f9d" - integrity sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -9892,6 +10111,14 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@^6.0.7: + version "6.0.8" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914" + integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-sorting@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-4.1.0.tgz#a107f0bf3852977fa64e4442bc340c88d5aacdb3" @@ -10178,14 +10405,6 @@ raw-loader@^4.0.2: loader-utils "^2.0.0" schema-utils "^3.0.0" -react-devtools-core@^4.19.1: - version "4.21.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.21.0.tgz#a54c9a0fd7261491e616d6c87d1869e011d8521d" - integrity sha512-clGWwJHV5MHwTwYyKc+7FZHwzdbzrD2/AoZSkicUcr6YLc3Za9a9FaLhccWDHfjQ+ron9yzNhDT6Tv+FiPkD3g== - dependencies: - shell-quote "^1.6.1" - ws "^7" - react-dom@18.0.0-rc.0: version "18.0.0-rc.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.0.0-rc.0.tgz#aa07044bdd6399ff94c664b2985e2e25948fbf3e" @@ -10202,10 +10421,10 @@ react-error-boundary@^3.1.0: dependencies: "@babel/runtime" "^7.12.5" -react-i18next@^11.14.3: - version "11.15.0" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.15.0.tgz#66c6304547518a8df8e29d367e2445fa11c8a1b2" - integrity sha512-7JOIO7KkKSxB7Ycof6ilx9aQ/tviInTqN2sqHyKrjd5MKHyFyKyXVkYrb7KmG/ISFPA4ugWwor5Qsq8IVyQ/Cg== +react-i18next@^11.15.2: + version "11.15.2" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.15.2.tgz#5bbbf1ab208d7fb77d93aa8161e06b7d55fb35ff" + integrity sha512-28WlZ6tr57RQoIM1x4/gTzvzh3Vvr+YeZwJHTOqV/sLXMFbR+xzjgSMdLnOCDxmlQ0irGN2uM+HT+mYK+3bg6g== dependencies: "@babel/runtime" "^7.14.5" html-escaper "^2.0.2" @@ -10221,34 +10440,25 @@ react-is@^16.13.1, react-is@^16.8.1, react-is@^16.8.6: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-reconciler@^0.26.2: - version "0.26.2" - resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.26.2.tgz#bbad0e2d1309423f76cf3c3309ac6c96e05e9d91" - integrity sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - react-refresh@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.10.0.tgz#2f536c9660c0b9b1d500684d9e52a65e7404f7e3" integrity sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== -react-router-dom@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.1.0.tgz#94e650ee43b0cdeb80049dea72223402a27c7f61" - integrity sha512-ONVhgCiEHTPZvsz05AUiqKj9mrlkDyxt96FB51JrZH7Jlau2B8GJ+NfWw7rbu+oj9gfpZOsK14xJppLAWg2ifQ== +react-router-dom@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.1.tgz#32ec81829152fbb8a7b045bf593a22eadf019bec" + integrity sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA== dependencies: - history "^5.1.0" - react-router "6.1.0" + history "^5.2.0" + react-router "6.2.1" -react-router@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.1.0.tgz#a34a2dbba7f6167d64a4c209009f28b635ea8477" - integrity sha512-96x4YGONBBz41ikne/I9Zw4jZm+KeFyUZraiNkSA384g/B8ps8nRNAfN8339EpZRt+t16RM+TA9z+NqlYATGzw== +react-router@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.1.tgz#be2a97a6006ce1d9123c28934e604faef51448a3" + integrity sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg== dependencies: - history "^5.1.0" + history "^5.2.0" react-shallow-renderer@^16.13.1: version "16.14.1" @@ -10278,14 +10488,6 @@ react-test-renderer@^17.0.2: react-shallow-renderer "^16.13.1" scheduler "^0.20.2" -react@17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - react@18.0.0-rc.0: version "18.0.0-rc.0" resolved "https://registry.yarnpkg.com/react/-/react-18.0.0-rc.0.tgz#60bfcf1edd0b35fbeeeca852515c6cc2ce06a6eb" @@ -10758,6 +10960,13 @@ rxjs@^7.4.0: dependencies: tslib "~2.1.0" +rxjs@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.1.tgz#af73df343cbcab37628197f43ea0c8256f54b157" + integrity sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ== + dependencies: + tslib "^2.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -10793,7 +11002,7 @@ sass-loader@^12.2.0: klona "^2.0.4" neo-async "^2.6.2" -sass@^1.42.1, sass@^1.43.5: +sass@^1.42.1: version "1.45.0" resolved "https://registry.yarnpkg.com/sass/-/sass-1.45.0.tgz#192ede1908324bb293a3e403d1841dbcaafdd323" integrity sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw== @@ -10802,6 +11011,15 @@ sass@^1.42.1, sass@^1.43.5: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" +sass@^1.45.2: + version "1.45.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.45.2.tgz#130b428c1692201cfa181139835d6fc378a33323" + integrity sha512-cKfs+F9AMPAFlbbTXNsbGvg3y58nV0mXA3E94jqaySKcC8Kq3/8983zVKQ0TLMUrHw7hF9Tnd3Bz9z5Xgtrl9g== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -11169,6 +11387,14 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" +source-map-support@0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -11302,7 +11528,7 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stack-utils@^2.0.2, stack-utils@^2.0.3: +stack-utils@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== @@ -11375,7 +11601,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -11622,14 +11848,26 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.1.0.tgz#8cefb64df6158b30f678c2d93a7052e2c1d8235b" - integrity sha512-IedkssuNVA11+v++2PIV2OHOU5A3SfRcXVi56vZVSsMhGrgtwmmit69jeM+08/Tun5DTBe7BuH1Zp1mMLmtKLA== +stylelint-scss@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.1.0.tgz#39b808696f8152081163d970449257ff80b5c041" + integrity sha512-BNYTo7MMamhFOlcaAWp2dMpjg6hPyM/FFqfDIYzmYVLMmQJqc8lWRIiTqP4UX5bresj9Vo0dKC6odSh43VP2NA== + dependencies: + lodash "^4.17.21" + postcss-media-query-parser "^0.2.3" + postcss-resolve-nested-selector "^0.1.1" + postcss-selector-parser "^6.0.6" + postcss-value-parser "^4.1.0" + +stylelint@^14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.2.0.tgz#da4f0f4580e66911c38c376ed82447b78e32b0fb" + integrity sha512-i0DrmDXFNpDsWiwx6SPRs4/pyw4kvZgqpDGvsTslQMY7hpUl6r33aQvNSn6cnTg2wtZ9rreFElI7XAKpOWi1vQ== dependencies: balanced-match "^2.0.0" + colord "^2.9.2" cosmiconfig "^7.0.1" - debug "^4.3.2" + debug "^4.3.3" execall "^2.0.0" fast-glob "^3.2.7" fastest-levenshtein "^1.0.12" @@ -11639,11 +11877,11 @@ stylelint@^14.1.0: globby "^11.0.4" globjoin "^0.1.4" html-tags "^3.1.0" - ignore "^5.1.9" + ignore "^5.2.0" import-lazy "^4.0.0" imurmurhash "^0.1.4" is-plain-object "^5.0.0" - known-css-properties "^0.23.0" + known-css-properties "^0.24.0" mathml-tag-names "^2.1.3" meow "^9.0.0" micromatch "^4.0.4" @@ -11654,7 +11892,7 @@ stylelint@^14.1.0: postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^6.0.0" - postcss-selector-parser "^6.0.6" + postcss-selector-parser "^6.0.7" postcss-value-parser "^4.1.0" resolve-from "^5.0.0" specificity "^0.4.1" @@ -11662,7 +11900,7 @@ stylelint@^14.1.0: strip-ansi "^6.0.1" style-search "^0.1.0" svg-tags "^1.0.0" - table "^6.7.3" + table "^6.7.5" v8-compile-cache "^2.3.0" write-file-atomic "^3.0.3" @@ -11835,7 +12073,7 @@ table@^5.0.0: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^6.7.3: +table@^6.7.5: version "6.7.5" resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238" integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== @@ -12042,6 +12280,11 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-newlines@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" @@ -12067,10 +12310,10 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -ts-jest@^27.0.7: - version "27.1.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.1.tgz#5a54aca96db1dac37c681f3029dd10f3a8c36192" - integrity sha512-Ds0VkB+cB+8g2JUmP/GKWndeZcCKrbe6jzolGrVWdqVUFByY/2KDHqxJ7yBSon7hDB1TA4PXxjfZ+JjzJisvgA== +ts-jest@^27.1.2: + version "27.1.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.2.tgz#5991d6eb3fd8e1a8d4b8f6de3ec0a3cc567f3151" + integrity sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" @@ -12109,7 +12352,7 @@ ts-node@^10.4.0: make-error "^1.1.1" yn "3.1.1" -ts-node@^9, ts-node@^9.1.1, ts-node@~9.1.1: +ts-node@^9.1.1, ts-node@~9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== @@ -12150,7 +12393,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1: +tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -12193,11 +12436,6 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee" - integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg== - type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -12778,13 +13016,6 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2 || 3 || 4" -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - wildcard@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" @@ -12847,7 +13078,7 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@^7, ws@^7.4.6, ws@^7.5.5: +ws@^7.4.6: version "7.5.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== @@ -12995,10 +13226,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yoga-layout-prebuilt@^1.9.6: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz#2936fbaf4b3628ee0b3e3b1df44936d6c146faa6" - integrity sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g== - dependencies: - "@types/yoga-layout" "1.9.2"