From 016503d8c37eab107b36830b6fbcb5468bcb1226 Mon Sep 17 00:00:00 2001 From: Sami Mazouz Date: Thu, 29 Jun 2023 18:57:53 +0100 Subject: [PATCH] feat: export registry (#3842) * feat: registry first iteration Signed-off-by: Sami Mazouz * feat: improve webpack auto export loader Signed-off-by: Sami Mazouz * chore: remove `compat` API Signed-off-by: Sami Mazouz * chore: cleanup Signed-off-by: Sami Mazouz --------- Signed-off-by: Sami Mazouz --- extensions/akismet/js/tsconfig.json | 2 +- extensions/flags/js/src/forum/compat.js | 19 - .../js/src/forum/components/FlagsPage.js | 2 +- extensions/flags/js/src/forum/forum.ts | 10 + extensions/flags/js/src/forum/index.ts | 6 +- extensions/flags/js/tsconfig.json | 3 +- extensions/likes/js/tsconfig.json | 7 +- extensions/lock/js/tsconfig.json | 7 +- extensions/mentions/js/src/forum/compat.js | 31 - extensions/mentions/js/src/forum/forum.js | 14 + extensions/mentions/js/src/forum/index.js | 8 +- .../js/src/forum/mentionables/TagMention.tsx | 2 +- extensions/mentions/js/tsconfig.json | 7 +- extensions/nicknames/js/tsconfig.json | 7 +- extensions/pusher/js/src/forum/index.tsx | 2 +- extensions/pusher/js/tsconfig.json | 2 +- extensions/sticky/js/tsconfig.json | 7 +- extensions/subscriptions/js/tsconfig.json | 3 +- extensions/suspend/js/src/admin/index.js | 2 +- extensions/suspend/js/src/forum/compat.js | 13 - .../src/forum/components/SuspendUserModal.js | 10 +- .../components/UserSuspendedNotification.js | 3 +- .../components/UserUnsuspendedNotification.js | 2 +- extensions/suspend/js/src/forum/forum.ts | 6 + extensions/suspend/js/src/forum/index.js | 18 +- extensions/suspend/js/tsconfig.json | 7 +- extensions/tags/js/src/admin/admin.ts | 9 + extensions/tags/js/src/admin/compat.js | 17 - extensions/tags/js/src/admin/index.ts | 6 +- extensions/tags/js/src/common/common.ts | 11 + extensions/tags/js/src/common/compat.js | 17 - extensions/tags/js/src/forum/compat.js | 27 - extensions/tags/js/src/forum/forum.ts | 15 + extensions/tags/js/src/forum/index.ts | 6 +- extensions/tags/js/tsconfig.json | 7 +- framework/core/js/src/@types/global.d.ts | 2 + framework/core/js/src/admin/admin.ts | 40 + framework/core/js/src/admin/compat.ts | 77 - framework/core/js/src/admin/index.ts | 11 +- .../core/js/src/common/ExportRegistry.ts | 58 + framework/core/js/src/common/common.ts | 89 + framework/core/js/src/common/compat.ts | 187 -- .../core/js/src/common/extenders/index.ts | 4 +- framework/core/js/src/common/index.ts | 2 + framework/core/js/src/common/registry.ts | 3 + .../core/js/src/common/utils/proxifyCompat.ts | 12 - .../js/src/common/utils/throttleDebounce.ts | 2 +- .../core/js/src/common/utils/withAttr.ts | 5 +- framework/core/js/src/forum/compat.ts | 156 -- framework/core/js/src/forum/forum.ts | 75 + framework/core/js/src/forum/index.ts | 9 +- .../js/src/forum/utils/DiscussionControls.js | 4 +- .../core/js/src/forum/utils/PostControls.js | 4 +- .../core/js/src/forum/utils/UserControls.js | 4 +- .../core/src/Frontend/AddTranslations.php | 2 +- framework/core/views/frontend/app.blade.php | 6 +- js-packages/jest-config/index.cjs | 2 +- js-packages/webpack-config/README.md | 24 - .../{babel.config.js => babel.config.cjs} | 0 js-packages/webpack-config/package.json | 18 +- .../webpack-config/src/autoExportLoader.cjs | 185 ++ .../{index.js => src/index.cjs} | 40 +- .../tests/autoExportLoader.test.js | 54 + js-packages/webpack-config/tests/compiler.js | 48 + .../webpack-config/tests/src/common/Test.js | 1 + .../tests/src/common/bars/Acme.js | 1 + .../tests/src/common/bars/Foo.js | 1 + .../tests/src/common/bars/index.js | 9 + .../src/common/foos/exportDefaultFrom.js | 1 + .../tests/src/common/foos/exportFrom.js | 1 + .../common/foos/exportFromWithNamedExports.js | 16 + .../tests/src/common/foos/namedExports.js | 14 + .../tests/src/common/support/potato.js | 4 + yarn.lock | 1796 +++++++++++++---- 74 files changed, 2206 insertions(+), 1076 deletions(-) delete mode 100644 extensions/flags/js/src/forum/compat.js create mode 100644 extensions/flags/js/src/forum/forum.ts delete mode 100644 extensions/mentions/js/src/forum/compat.js create mode 100644 extensions/mentions/js/src/forum/forum.js delete mode 100644 extensions/suspend/js/src/forum/compat.js create mode 100644 extensions/suspend/js/src/forum/forum.ts create mode 100644 extensions/tags/js/src/admin/admin.ts delete mode 100644 extensions/tags/js/src/admin/compat.js create mode 100644 extensions/tags/js/src/common/common.ts delete mode 100644 extensions/tags/js/src/common/compat.js delete mode 100644 extensions/tags/js/src/forum/compat.js create mode 100644 extensions/tags/js/src/forum/forum.ts create mode 100644 framework/core/js/src/admin/admin.ts delete mode 100644 framework/core/js/src/admin/compat.ts create mode 100644 framework/core/js/src/common/ExportRegistry.ts create mode 100644 framework/core/js/src/common/common.ts delete mode 100644 framework/core/js/src/common/compat.ts create mode 100644 framework/core/js/src/common/registry.ts delete mode 100644 framework/core/js/src/common/utils/proxifyCompat.ts delete mode 100644 framework/core/js/src/forum/compat.ts create mode 100644 framework/core/js/src/forum/forum.ts rename js-packages/webpack-config/{babel.config.js => babel.config.cjs} (100%) create mode 100644 js-packages/webpack-config/src/autoExportLoader.cjs rename js-packages/webpack-config/{index.js => src/index.cjs} (76%) create mode 100644 js-packages/webpack-config/tests/autoExportLoader.test.js create mode 100644 js-packages/webpack-config/tests/compiler.js create mode 100644 js-packages/webpack-config/tests/src/common/Test.js create mode 100644 js-packages/webpack-config/tests/src/common/bars/Acme.js create mode 100644 js-packages/webpack-config/tests/src/common/bars/Foo.js create mode 100644 js-packages/webpack-config/tests/src/common/bars/index.js create mode 100644 js-packages/webpack-config/tests/src/common/foos/exportDefaultFrom.js create mode 100644 js-packages/webpack-config/tests/src/common/foos/exportFrom.js create mode 100644 js-packages/webpack-config/tests/src/common/foos/exportFromWithNamedExports.js create mode 100644 js-packages/webpack-config/tests/src/common/foos/namedExports.js create mode 100644 js-packages/webpack-config/tests/src/common/support/potato.js diff --git a/extensions/akismet/js/tsconfig.json b/extensions/akismet/js/tsconfig.json index 4d4035462..7c80f5124 100644 --- a/extensions/akismet/js/tsconfig.json +++ b/extensions/akismet/js/tsconfig.json @@ -15,7 +15,7 @@ "declarationDir": "./dist-typings", "paths": { "flarum/*": ["../../../framework/core/js/dist-typings/*"], - "flarum/flags/*": ["../../flags/js/dist-typings/*"] + "ext:flarum/flags/*": ["../../flags/js/dist-typings/*"] } } } diff --git a/extensions/flags/js/src/forum/compat.js b/extensions/flags/js/src/forum/compat.js deleted file mode 100644 index 5365edd44..000000000 --- a/extensions/flags/js/src/forum/compat.js +++ /dev/null @@ -1,19 +0,0 @@ -import addFlagsToPosts from './addFlagsToPosts'; -import addFlagControl from './addFlagControl'; -import addFlagsDropdown from './addFlagsDropdown'; -import Flag from './models/Flag'; -import FlagList from './components/FlagList'; -import FlagPostModal from './components/FlagPostModal'; -import FlagsPage from './components/FlagsPage'; -import FlagsDropdown from './components/FlagsDropdown'; - -export default { - 'flags/addFlagsToPosts': addFlagsToPosts, - 'flags/addFlagControl': addFlagControl, - 'flags/addFlagsDropdown': addFlagsDropdown, - 'flags/models/Flag': Flag, - 'flags/components/FlagList': FlagList, - 'flags/components/FlagPostModal': FlagPostModal, - 'flags/components/FlagsPage': FlagsPage, - 'flags/components/FlagsDropdown': FlagsDropdown, -}; diff --git a/extensions/flags/js/src/forum/components/FlagsPage.js b/extensions/flags/js/src/forum/components/FlagsPage.js index 6e07ef555..23db57a02 100644 --- a/extensions/flags/js/src/forum/components/FlagsPage.js +++ b/extensions/flags/js/src/forum/components/FlagsPage.js @@ -1,5 +1,5 @@ import app from 'flarum/forum/app'; -import Page from 'flarum/components/Page'; +import Page from 'flarum/common/components/Page'; import FlagList from './FlagList'; diff --git a/extensions/flags/js/src/forum/forum.ts b/extensions/flags/js/src/forum/forum.ts new file mode 100644 index 000000000..c122af15e --- /dev/null +++ b/extensions/flags/js/src/forum/forum.ts @@ -0,0 +1,10 @@ +import './addFlagsToPosts'; +import './addFlagControl'; +import './addFlagsDropdown'; + +import './models/Flag'; + +import './components/FlagList'; +import './components/FlagPostModal'; +import './components/FlagsPage'; +import './components/FlagsDropdown'; diff --git a/extensions/flags/js/src/forum/index.ts b/extensions/flags/js/src/forum/index.ts index f0d4a1f0a..e9a2dde49 100644 --- a/extensions/flags/js/src/forum/index.ts +++ b/extensions/flags/js/src/forum/index.ts @@ -15,8 +15,4 @@ app.initializers.add('flarum-flags', () => { addFlagsToPosts(); }); -// Expose compat API -import flagsCompat from './compat'; -import { compat } from '@flarum/core/forum'; - -Object.assign(compat, flagsCompat); +import './forum'; diff --git a/extensions/flags/js/tsconfig.json b/extensions/flags/js/tsconfig.json index 0889bd877..d7b48770c 100644 --- a/extensions/flags/js/tsconfig.json +++ b/extensions/flags/js/tsconfig.json @@ -9,8 +9,7 @@ // This will output typings to `dist-typings` "declarationDir": "./dist-typings", "paths": { - "flarum/*": ["../../../framework/core/js/dist-typings/*"], - "@flarum/core/*": ["../../../framework/core/js/dist-typings/*"] + "flarum/*": ["../../../framework/core/js/dist-typings/*"] } } } diff --git a/extensions/likes/js/tsconfig.json b/extensions/likes/js/tsconfig.json index f427c289e..519ed73b2 100644 --- a/extensions/likes/js/tsconfig.json +++ b/extensions/likes/js/tsconfig.json @@ -9,12 +9,7 @@ // This will output typings to `dist-typings` "declarationDir": "./dist-typings", "paths": { - "flarum/*": ["../../../framework/core/js/dist-typings/*"], - // TODO: remove after export registry system implemented - // Without this, the old-style `@flarum/core` import is resolved to - // source code in flarum/core instead of the dist typings. - // This causes an inaccurate "duplicate export" error. - "@flarum/core/*": ["../../../framework/core/js/dist-typings/*"], + "flarum/*": ["../../../framework/core/js/dist-typings/*"] } } } diff --git a/extensions/lock/js/tsconfig.json b/extensions/lock/js/tsconfig.json index f427c289e..519ed73b2 100644 --- a/extensions/lock/js/tsconfig.json +++ b/extensions/lock/js/tsconfig.json @@ -9,12 +9,7 @@ // This will output typings to `dist-typings` "declarationDir": "./dist-typings", "paths": { - "flarum/*": ["../../../framework/core/js/dist-typings/*"], - // TODO: remove after export registry system implemented - // Without this, the old-style `@flarum/core` import is resolved to - // source code in flarum/core instead of the dist typings. - // This causes an inaccurate "duplicate export" error. - "@flarum/core/*": ["../../../framework/core/js/dist-typings/*"], + "flarum/*": ["../../../framework/core/js/dist-typings/*"] } } } diff --git a/extensions/mentions/js/src/forum/compat.js b/extensions/mentions/js/src/forum/compat.js deleted file mode 100644 index 8c456f189..000000000 --- a/extensions/mentions/js/src/forum/compat.js +++ /dev/null @@ -1,31 +0,0 @@ -import GroupMentionedNotification from './components/GroupMentionedNotification'; -import MentionsUserPage from './components/MentionsUserPage'; -import PostMentionedNotification from './components/PostMentionedNotification'; -import UserMentionedNotification from './components/UserMentionedNotification'; -import AutocompleteDropdown from './fragments/AutocompleteDropdown'; -import PostQuoteButton from './fragments/PostQuoteButton'; -import getCleanDisplayName from './utils/getCleanDisplayName'; -import getMentionText from './utils/getMentionText'; -import * as reply from './utils/reply'; -import selectedText from './utils/selectedText'; -import * as textFormatter from './utils/textFormatter'; -import MentionableModel from './mentionables/MentionableModel'; -import MentionFormat from './mentionables/formats/MentionFormat'; -import Mentionables from './extenders/Mentionables'; - -export default { - 'mentions/components/MentionsUserPage': MentionsUserPage, - 'mentions/components/PostMentionedNotification': PostMentionedNotification, - 'mentions/components/UserMentionedNotification': UserMentionedNotification, - 'mentions/components/GroupMentionedNotification': GroupMentionedNotification, - 'mentions/fragments/AutocompleteDropdown': AutocompleteDropdown, - 'mentions/fragments/PostQuoteButton': PostQuoteButton, - 'mentions/utils/getCleanDisplayName': getCleanDisplayName, - 'mentions/utils/getMentionText': getMentionText, - 'mentions/utils/reply': reply, - 'mentions/utils/selectedText': selectedText, - 'mentions/utils/textFormatter': textFormatter, - 'mentions/mentionables/MentionableModel': MentionableModel, - 'mentions/mentionables/formats/MentionFormat': MentionFormat, - 'mentions/extenders/Mentionables': Mentionables, -}; diff --git a/extensions/mentions/js/src/forum/forum.js b/extensions/mentions/js/src/forum/forum.js new file mode 100644 index 000000000..c3f371897 --- /dev/null +++ b/extensions/mentions/js/src/forum/forum.js @@ -0,0 +1,14 @@ +import './components/GroupMentionedNotification'; +import './components/MentionsUserPage'; +import './components/PostMentionedNotification'; +import './components/UserMentionedNotification'; +import './fragments/AutocompleteDropdown'; +import './fragments/PostQuoteButton'; +import './utils/getCleanDisplayName'; +import './utils/getMentionText'; +import './utils/reply'; +import './utils/selectedText'; +import './utils/textFormatter'; +import './mentionables/MentionableModel'; +import './mentionables/formats/MentionFormat'; +import './extenders/Mentionables'; diff --git a/extensions/mentions/js/src/forum/index.js b/extensions/mentions/js/src/forum/index.js index 7323a00d7..4d20ffc98 100644 --- a/extensions/mentions/js/src/forum/index.js +++ b/extensions/mentions/js/src/forum/index.js @@ -15,8 +15,6 @@ import UserMentionedNotification from './components/UserMentionedNotification'; import GroupMentionedNotification from './components/GroupMentionedNotification'; import UserPage from 'flarum/forum/components/UserPage'; import LinkButton from 'flarum/common/components/LinkButton'; -import User from 'flarum/common/models/User'; -import Model from 'flarum/common/Model'; export { default as extend } from './extend'; @@ -90,8 +88,4 @@ app.initializers.add('flarum-mentions', function () { export * from './utils/textFormatter'; -// Expose compat API -import mentionsCompat from './compat'; -import { compat } from '@flarum/core/forum'; - -Object.assign(compat, mentionsCompat); +import './forum'; diff --git a/extensions/mentions/js/src/forum/mentionables/TagMention.tsx b/extensions/mentions/js/src/forum/mentionables/TagMention.tsx index eaa480d9a..78ff31b8f 100644 --- a/extensions/mentions/js/src/forum/mentionables/TagMention.tsx +++ b/extensions/mentions/js/src/forum/mentionables/TagMention.tsx @@ -1,7 +1,7 @@ import app from 'flarum/forum/app'; import Badge from 'flarum/common/components/Badge'; import highlight from 'flarum/common/helpers/highlight'; -import type Tag from 'flarum/tags/common/models/Tag'; +import type Tag from 'ext:flarum/tags/common/models/Tag'; import type Mithril from 'mithril'; import MentionableModel from './MentionableModel'; import type HashMentionFormat from './formats/HashMentionFormat'; diff --git a/extensions/mentions/js/tsconfig.json b/extensions/mentions/js/tsconfig.json index f05741cea..8e6f36ec0 100644 --- a/extensions/mentions/js/tsconfig.json +++ b/extensions/mentions/js/tsconfig.json @@ -10,12 +10,7 @@ "declarationDir": "./dist-typings", "paths": { "flarum/*": ["../../../framework/core/js/dist-typings/*"], - "flarum/tags/*": ["../../tags/js/dist-typings/*"], - // TODO: remove after export registry system implemented - // Without this, the old-style `@flarum/core` import is resolved to - // source code in flarum/core instead of the dist typings. - // This causes an inaccurate "duplicate export" error. - "@flarum/core/*": ["../../../framework/core/js/dist-typings/*"], + "ext:flarum/tags/*": ["../../tags/js/dist-typings/*"] } } } diff --git a/extensions/nicknames/js/tsconfig.json b/extensions/nicknames/js/tsconfig.json index f427c289e..519ed73b2 100644 --- a/extensions/nicknames/js/tsconfig.json +++ b/extensions/nicknames/js/tsconfig.json @@ -9,12 +9,7 @@ // This will output typings to `dist-typings` "declarationDir": "./dist-typings", "paths": { - "flarum/*": ["../../../framework/core/js/dist-typings/*"], - // TODO: remove after export registry system implemented - // Without this, the old-style `@flarum/core` import is resolved to - // source code in flarum/core instead of the dist typings. - // This causes an inaccurate "duplicate export" error. - "@flarum/core/*": ["../../../framework/core/js/dist-typings/*"], + "flarum/*": ["../../../framework/core/js/dist-typings/*"] } } } diff --git a/extensions/pusher/js/src/forum/index.tsx b/extensions/pusher/js/src/forum/index.tsx index 7af649ab4..4bced072f 100644 --- a/extensions/pusher/js/src/forum/index.tsx +++ b/extensions/pusher/js/src/forum/index.tsx @@ -7,7 +7,7 @@ import IndexPage from 'flarum/forum/components/IndexPage'; import Button from 'flarum/common/components/Button'; import ItemList from 'flarum/common/utils/ItemList'; import type { Children } from 'mithril'; -import type Tag from 'flarum/tags/common/models/Tag'; +import type Tag from 'ext:flarum/tags/common/models/Tag'; export type PusherBinding = { channels: { diff --git a/extensions/pusher/js/tsconfig.json b/extensions/pusher/js/tsconfig.json index 9682402b0..84d0a4957 100644 --- a/extensions/pusher/js/tsconfig.json +++ b/extensions/pusher/js/tsconfig.json @@ -10,7 +10,7 @@ "declarationDir": "./dist-typings", "paths": { "flarum/*": ["../../../framework/core/js/dist-typings/*"], - "flarum/tags/*": ["../../tags/js/dist-typings/*"] + "ext:flarum/tags/*": ["../../tags/js/dist-typings/*"] } } } diff --git a/extensions/sticky/js/tsconfig.json b/extensions/sticky/js/tsconfig.json index f427c289e..519ed73b2 100644 --- a/extensions/sticky/js/tsconfig.json +++ b/extensions/sticky/js/tsconfig.json @@ -9,12 +9,7 @@ // This will output typings to `dist-typings` "declarationDir": "./dist-typings", "paths": { - "flarum/*": ["../../../framework/core/js/dist-typings/*"], - // TODO: remove after export registry system implemented - // Without this, the old-style `@flarum/core` import is resolved to - // source code in flarum/core instead of the dist typings. - // This causes an inaccurate "duplicate export" error. - "@flarum/core/*": ["../../../framework/core/js/dist-typings/*"], + "flarum/*": ["../../../framework/core/js/dist-typings/*"] } } } diff --git a/extensions/subscriptions/js/tsconfig.json b/extensions/subscriptions/js/tsconfig.json index c24c74031..d70744533 100644 --- a/extensions/subscriptions/js/tsconfig.json +++ b/extensions/subscriptions/js/tsconfig.json @@ -10,8 +10,7 @@ "declarationDir": "./dist-typings", "baseUrl": ".", "paths": { - "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"], - "@flarum/core/*": ["../vendor/flarum/core/js/dist-typings/*"] + "flarum/*": ["../vendor/flarum/core/js/dist-typings/*"] } } } diff --git a/extensions/suspend/js/src/admin/index.js b/extensions/suspend/js/src/admin/index.js index 74de04587..5b1d905f9 100644 --- a/extensions/suspend/js/src/admin/index.js +++ b/extensions/suspend/js/src/admin/index.js @@ -1,4 +1,4 @@ -import app from 'flarum/app'; +import app from 'flarum/admin/app'; app.initializers.add('flarum-suspend', () => { app.extensionData.for('flarum-suspend').registerPermission( diff --git a/extensions/suspend/js/src/forum/compat.js b/extensions/suspend/js/src/forum/compat.js deleted file mode 100644 index f1931b7c3..000000000 --- a/extensions/suspend/js/src/forum/compat.js +++ /dev/null @@ -1,13 +0,0 @@ -import SuspendUserModal from './components/SuspendUserModal'; -import SuspensionInfoModal from './components/SuspensionInfoModal'; -import UserSuspendedNotification from './components/UserSuspendedNotification'; -import UserUnsuspendedNotification from './components/UserUnsuspendedNotification'; -import checkForSuspension from './checkForSuspension'; - -export default { - 'suspend/components/suspendUserModal': SuspendUserModal, - 'suspend/components/suspensionInfoModal': SuspensionInfoModal, - 'suspend/components/UserSuspendedNotification': UserSuspendedNotification, - 'suspend/components/UserUnsuspendedNotification': UserUnsuspendedNotification, - 'suspend/checkForSuspension': checkForSuspension, -}; diff --git a/extensions/suspend/js/src/forum/components/SuspendUserModal.js b/extensions/suspend/js/src/forum/components/SuspendUserModal.js index d45cf3de6..faeb03bb1 100644 --- a/extensions/suspend/js/src/forum/components/SuspendUserModal.js +++ b/extensions/suspend/js/src/forum/components/SuspendUserModal.js @@ -1,10 +1,10 @@ import app from 'flarum/forum/app'; -import Modal from 'flarum/components/Modal'; -import Button from 'flarum/components/Button'; - -import Stream from 'flarum/utils/Stream'; -import withAttr from 'flarum/utils/withAttr'; +import Modal from 'flarum/common/components/Modal'; +import Button from 'flarum/common/components/Button'; +import Stream from 'flarum/common/utils/Stream'; +import withAttr from 'flarum/common/utils/withAttr'; import ItemList from 'flarum/common/utils/ItemList'; + import { getPermanentSuspensionDate } from '../helpers/suspensionHelper'; export default class SuspendUserModal extends Modal { diff --git a/extensions/suspend/js/src/forum/components/UserSuspendedNotification.js b/extensions/suspend/js/src/forum/components/UserSuspendedNotification.js index d2c9ffb32..612e582b8 100644 --- a/extensions/suspend/js/src/forum/components/UserSuspendedNotification.js +++ b/extensions/suspend/js/src/forum/components/UserSuspendedNotification.js @@ -1,5 +1,6 @@ import app from 'flarum/forum/app'; -import Notification from 'flarum/components/Notification'; +import Notification from 'flarum/forum/components/Notification'; + import { isPermanentSuspensionDate } from '../helpers/suspensionHelper'; export default class UserSuspendedNotification extends Notification { diff --git a/extensions/suspend/js/src/forum/components/UserUnsuspendedNotification.js b/extensions/suspend/js/src/forum/components/UserUnsuspendedNotification.js index 640492d32..a09e83a9d 100644 --- a/extensions/suspend/js/src/forum/components/UserUnsuspendedNotification.js +++ b/extensions/suspend/js/src/forum/components/UserUnsuspendedNotification.js @@ -1,5 +1,5 @@ import app from 'flarum/forum/app'; -import Notification from 'flarum/components/Notification'; +import Notification from 'flarum/forum/components/Notification'; export default class UserUnsuspendedNotification extends Notification { icon() { diff --git a/extensions/suspend/js/src/forum/forum.ts b/extensions/suspend/js/src/forum/forum.ts new file mode 100644 index 000000000..a9a110393 --- /dev/null +++ b/extensions/suspend/js/src/forum/forum.ts @@ -0,0 +1,6 @@ +import './components/SuspendUserModal'; +import './components/SuspensionInfoModal'; +import './components/UserSuspendedNotification'; +import './components/UserUnsuspendedNotification'; + +import './checkForSuspension'; diff --git a/extensions/suspend/js/src/forum/index.js b/extensions/suspend/js/src/forum/index.js index 8eb663152..cec962116 100644 --- a/extensions/suspend/js/src/forum/index.js +++ b/extensions/suspend/js/src/forum/index.js @@ -1,9 +1,9 @@ -import { extend } from 'flarum/extend'; -import app from 'flarum/app'; -import UserControls from 'flarum/utils/UserControls'; -import Button from 'flarum/components/Button'; -import Badge from 'flarum/components/Badge'; -import User from 'flarum/models/User'; +import { extend } from 'flarum/common/extend'; +import app from 'flarum/forum/app'; +import UserControls from 'flarum/forum/utils/UserControls'; +import Button from 'flarum/common/components/Button'; +import Badge from 'flarum/common/components/Badge'; +import User from 'flarum/common/models/User'; import SuspendUserModal from './components/SuspendUserModal'; import UserSuspendedNotification from './components/UserSuspendedNotification'; @@ -42,8 +42,4 @@ app.initializers.add('flarum-suspend', () => { checkForSuspension(); }); -// Expose compat API -import suspendCompat from './compat'; -import { compat } from '@flarum/core/forum'; - -Object.assign(compat, suspendCompat); +import './forum'; diff --git a/extensions/suspend/js/tsconfig.json b/extensions/suspend/js/tsconfig.json index f427c289e..519ed73b2 100644 --- a/extensions/suspend/js/tsconfig.json +++ b/extensions/suspend/js/tsconfig.json @@ -9,12 +9,7 @@ // This will output typings to `dist-typings` "declarationDir": "./dist-typings", "paths": { - "flarum/*": ["../../../framework/core/js/dist-typings/*"], - // TODO: remove after export registry system implemented - // Without this, the old-style `@flarum/core` import is resolved to - // source code in flarum/core instead of the dist typings. - // This causes an inaccurate "duplicate export" error. - "@flarum/core/*": ["../../../framework/core/js/dist-typings/*"], + "flarum/*": ["../../../framework/core/js/dist-typings/*"] } } } diff --git a/extensions/tags/js/src/admin/admin.ts b/extensions/tags/js/src/admin/admin.ts new file mode 100644 index 000000000..8ea87c253 --- /dev/null +++ b/extensions/tags/js/src/admin/admin.ts @@ -0,0 +1,9 @@ +import '../common/common'; + +import './components/TagsPage'; +import './components/EditTagModal'; + +import './addTagsHomePageOption'; +import './addTagChangePermission'; +import './addTagPermission'; +import './addTagsPermissionScope'; diff --git a/extensions/tags/js/src/admin/compat.js b/extensions/tags/js/src/admin/compat.js deleted file mode 100644 index 025584d94..000000000 --- a/extensions/tags/js/src/admin/compat.js +++ /dev/null @@ -1,17 +0,0 @@ -import compat from '../common/compat'; - -import addTagsHomePageOption from './addTagsHomePageOption'; -import addTagChangePermission from './addTagChangePermission'; -import TagsPage from './components/TagsPage'; -import EditTagModal from './components/EditTagModal'; -import addTagPermission from './addTagPermission'; -import addTagsPermissionScope from './addTagsPermissionScope'; - -export default Object.assign(compat, { - 'tags/addTagsHomePageOption': addTagsHomePageOption, - 'tags/addTagChangePermission': addTagChangePermission, - 'tags/components/TagsPage': TagsPage, - 'tags/components/EditTagModal': EditTagModal, - 'tags/addTagPermission': addTagPermission, - 'tags/addTagsPermissionScope': addTagsPermissionScope, -}); diff --git a/extensions/tags/js/src/admin/index.ts b/extensions/tags/js/src/admin/index.ts index 73ba090fc..7ab9a2f7b 100644 --- a/extensions/tags/js/src/admin/index.ts +++ b/extensions/tags/js/src/admin/index.ts @@ -21,8 +21,4 @@ app.initializers.add('flarum-tags', (app) => { addTagSelectionSettingComponent(); }); -// Expose compat API -import tagsCompat from './compat'; -import { compat } from '@flarum/core/admin'; - -Object.assign(compat, tagsCompat); +import './admin'; diff --git a/extensions/tags/js/src/common/common.ts b/extensions/tags/js/src/common/common.ts new file mode 100644 index 000000000..dc02ffcf6 --- /dev/null +++ b/extensions/tags/js/src/common/common.ts @@ -0,0 +1,11 @@ +import './utils/sortTags'; + +import './models/Tag'; + +import './helpers/tagsLabel'; +import './helpers/tagIcon'; +import './helpers/tagLabel'; + +import './components/TagSelectionModal'; + +import './states/TagListState'; diff --git a/extensions/tags/js/src/common/compat.js b/extensions/tags/js/src/common/compat.js deleted file mode 100644 index b574e3d09..000000000 --- a/extensions/tags/js/src/common/compat.js +++ /dev/null @@ -1,17 +0,0 @@ -import sortTags from './utils/sortTags'; -import Tag from './models/Tag'; -import tagsLabel from './helpers/tagsLabel'; -import tagIcon from './helpers/tagIcon'; -import tagLabel from './helpers/tagLabel'; -import TagSelectionModal from './components/TagSelectionModal'; -import TagListState from './states/TagListState'; - -export default { - 'tags/utils/sortTags': sortTags, - 'tags/models/Tag': Tag, - 'tags/helpers/tagsLabel': tagsLabel, - 'tags/helpers/tagIcon': tagIcon, - 'tags/helpers/tagLabel': tagLabel, - 'tags/components/TagSelectionModal': TagSelectionModal, - 'tags/states/TagListState': TagListState, -}; diff --git a/extensions/tags/js/src/forum/compat.js b/extensions/tags/js/src/forum/compat.js deleted file mode 100644 index 7059c27e0..000000000 --- a/extensions/tags/js/src/forum/compat.js +++ /dev/null @@ -1,27 +0,0 @@ -import compat from '../common/compat'; - -import addTagFilter from './addTagFilter'; -import addTagControl from './addTagControl'; -import TagHero from './components/TagHero'; -import TagDiscussionModal from './components/TagDiscussionModal'; -import TagsPage from './components/TagsPage'; -import DiscussionTaggedPost from './components/DiscussionTaggedPost'; -import TagLinkButton from './components/TagLinkButton'; -import addTagList from './addTagList'; -import addTagLabels from './addTagLabels'; -import addTagComposer from './addTagComposer'; -import getSelectableTags from './utils/getSelectableTags'; - -export default Object.assign(compat, { - 'tags/addTagFilter': addTagFilter, - 'tags/addTagControl': addTagControl, - 'tags/components/TagHero': TagHero, - 'tags/components/TagDiscussionModal': TagDiscussionModal, - 'tags/components/TagsPage': TagsPage, - 'tags/components/DiscussionTaggedPost': DiscussionTaggedPost, - 'tags/components/TagLinkButton': TagLinkButton, - 'tags/addTagList': addTagList, - 'tags/addTagLabels': addTagLabels, - 'tags/addTagComposer': addTagComposer, - 'tags/utils/getSelectableTags': getSelectableTags, -}); diff --git a/extensions/tags/js/src/forum/forum.ts b/extensions/tags/js/src/forum/forum.ts new file mode 100644 index 000000000..37960a91d --- /dev/null +++ b/extensions/tags/js/src/forum/forum.ts @@ -0,0 +1,15 @@ +import '../common/common'; + +import './utils/getSelectableTags'; + +import './components/TagHero'; +import './components/TagDiscussionModal'; +import './components/TagsPage'; +import './components/DiscussionTaggedPost'; +import './components/TagLinkButton'; + +import './addTagFilter'; +import './addTagControl'; +import './addTagList'; +import './addTagLabels'; +import './addTagComposer'; diff --git a/extensions/tags/js/src/forum/index.ts b/extensions/tags/js/src/forum/index.ts index 838f66948..7e6b7199e 100644 --- a/extensions/tags/js/src/forum/index.ts +++ b/extensions/tags/js/src/forum/index.ts @@ -20,8 +20,4 @@ app.initializers.add('flarum-tags', function () { addTagComposer(); }); -// Expose compat API -import tagsCompat from './compat'; -import { compat } from '@flarum/core/forum'; - -Object.assign(compat, tagsCompat); +import './forum'; diff --git a/extensions/tags/js/tsconfig.json b/extensions/tags/js/tsconfig.json index f427c289e..519ed73b2 100644 --- a/extensions/tags/js/tsconfig.json +++ b/extensions/tags/js/tsconfig.json @@ -9,12 +9,7 @@ // This will output typings to `dist-typings` "declarationDir": "./dist-typings", "paths": { - "flarum/*": ["../../../framework/core/js/dist-typings/*"], - // TODO: remove after export registry system implemented - // Without this, the old-style `@flarum/core` import is resolved to - // source code in flarum/core instead of the dist typings. - // This causes an inaccurate "duplicate export" error. - "@flarum/core/*": ["../../../framework/core/js/dist-typings/*"], + "flarum/*": ["../../../framework/core/js/dist-typings/*"] } } } diff --git a/framework/core/js/src/@types/global.d.ts b/framework/core/js/src/@types/global.d.ts index 26bc910f3..6476096ae 100644 --- a/framework/core/js/src/@types/global.d.ts +++ b/framework/core/js/src/@types/global.d.ts @@ -98,6 +98,8 @@ interface FlarumObject { * } */ extensions: Readonly>; + + reg: any; } declare const flarum: FlarumObject; diff --git a/framework/core/js/src/admin/admin.ts b/framework/core/js/src/admin/admin.ts new file mode 100644 index 000000000..954b28443 --- /dev/null +++ b/framework/core/js/src/admin/admin.ts @@ -0,0 +1,40 @@ +import '../common/common'; + +import './utils/saveSettings'; +import './utils/ExtensionData'; +import './utils/isExtensionEnabled'; +import './utils/getCategorizedExtensions'; +import './utils/generateElementId'; + +import './components/SettingDropdown'; +import './components/EditCustomFooterModal'; +import './components/SessionDropdown'; +import './components/HeaderPrimary'; +import './components/AdminPage'; +import './components/AppearancePage'; +import './components/StatusWidget'; +import './components/ExtensionsWidget'; +import './components/HeaderSecondary'; +import './components/SettingsModal'; +import './components/DashboardWidget'; +import './components/ExtensionPage'; +import './components/ExtensionLinkButton'; +import './components/PermissionGrid'; +import './components/ExtensionPermissionGrid'; +import './components/MailPage'; +import './components/UploadImageButton'; +import './components/LoadingModal'; +import './components/DashboardPage'; +import './components/BasicsPage'; +import './components/UserListPage'; +import './components/EditCustomHeaderModal'; +import './components/PermissionsPage'; +import './components/PermissionDropdown'; +import './components/AdminNav'; +import './components/AdminHeader'; +import './components/EditCustomCssModal'; +import './components/EditGroupModal'; +import './components/CreateUserModal'; + +import './routes'; +import './AdminApplication'; diff --git a/framework/core/js/src/admin/compat.ts b/framework/core/js/src/admin/compat.ts deleted file mode 100644 index 012132142..000000000 --- a/framework/core/js/src/admin/compat.ts +++ /dev/null @@ -1,77 +0,0 @@ -import compat from '../common/compat'; - -import saveSettings from './utils/saveSettings'; -import ExtensionData from './utils/ExtensionData'; -import isExtensionEnabled from './utils/isExtensionEnabled'; -import getCategorizedExtensions from './utils/getCategorizedExtensions'; -import SettingDropdown from './components/SettingDropdown'; -import EditCustomFooterModal from './components/EditCustomFooterModal'; -import SessionDropdown from './components/SessionDropdown'; -import HeaderPrimary from './components/HeaderPrimary'; -import AdminPage from './components/AdminPage'; -import AppearancePage from './components/AppearancePage'; -import StatusWidget from './components/StatusWidget'; -import ExtensionsWidget from './components/ExtensionsWidget'; -import HeaderSecondary from './components/HeaderSecondary'; -import SettingsModal from './components/SettingsModal'; -import DashboardWidget from './components/DashboardWidget'; -import ExtensionPage from './components/ExtensionPage'; -import ExtensionLinkButton from './components/ExtensionLinkButton'; -import PermissionGrid from './components/PermissionGrid'; -import ExtensionPermissionGrid from './components/ExtensionPermissionGrid'; -import MailPage from './components/MailPage'; -import UploadImageButton from './components/UploadImageButton'; -import LoadingModal from './components/LoadingModal'; -import DashboardPage from './components/DashboardPage'; -import BasicsPage from './components/BasicsPage'; -import UserListPage from './components/UserListPage'; -import EditCustomHeaderModal from './components/EditCustomHeaderModal'; -import PermissionsPage from './components/PermissionsPage'; -import PermissionDropdown from './components/PermissionDropdown'; -import AdminNav from './components/AdminNav'; -import AdminHeader from './components/AdminHeader'; -import EditCustomCssModal from './components/EditCustomCssModal'; -import EditGroupModal from './components/EditGroupModal'; -import routes from './routes'; -import AdminApplication from './AdminApplication'; -import generateElementId from './utils/generateElementId'; -import CreateUserModal from './components/CreateUserModal'; - -export default Object.assign(compat, { - 'utils/saveSettings': saveSettings, - 'utils/ExtensionData': ExtensionData, - 'utils/isExtensionEnabled': isExtensionEnabled, - 'utils/getCategorizedExtensions': getCategorizedExtensions, - 'utils/generateElementId': generateElementId, - 'components/SettingDropdown': SettingDropdown, - 'components/EditCustomFooterModal': EditCustomFooterModal, - 'components/SessionDropdown': SessionDropdown, - 'components/HeaderPrimary': HeaderPrimary, - 'components/AdminPage': AdminPage, - 'components/AppearancePage': AppearancePage, - 'components/StatusWidget': StatusWidget, - 'components/ExtensionsWidget': ExtensionsWidget, - 'components/HeaderSecondary': HeaderSecondary, - 'components/SettingsModal': SettingsModal, - 'components/DashboardWidget': DashboardWidget, - 'components/ExtensionPage': ExtensionPage, - 'components/ExtensionLinkButton': ExtensionLinkButton, - 'components/PermissionGrid': PermissionGrid, - 'components/ExtensionPermissionGrid': ExtensionPermissionGrid, - 'components/MailPage': MailPage, - 'components/UploadImageButton': UploadImageButton, - 'components/LoadingModal': LoadingModal, - 'components/DashboardPage': DashboardPage, - 'components/BasicsPage': BasicsPage, - 'components/UserListPage': UserListPage, - 'components/EditCustomHeaderModal': EditCustomHeaderModal, - 'components/PermissionsPage': PermissionsPage, - 'components/PermissionDropdown': PermissionDropdown, - 'components/AdminNav': AdminNav, - 'components/AdminHeader': AdminHeader, - 'components/EditCustomCssModal': EditCustomCssModal, - 'components/EditGroupModal': EditGroupModal, - 'components/CreateUserModal': CreateUserModal, - routes: routes, - AdminApplication: AdminApplication, -}); diff --git a/framework/core/js/src/admin/index.ts b/framework/core/js/src/admin/index.ts index cb6b25124..843ad5017 100644 --- a/framework/core/js/src/admin/index.ts +++ b/framework/core/js/src/admin/index.ts @@ -2,13 +2,4 @@ import app from './app'; export { app }; -// Export public API - -// Export compat API -import compatObj from './compat'; -import proxifyCompat from '../common/utils/proxifyCompat'; - -// @ts-expect-error The `app` instance needs to be available on compat. -compatObj.app = app; - -export const compat = proxifyCompat(compatObj, 'admin'); +import './admin'; diff --git a/framework/core/js/src/common/ExportRegistry.ts b/framework/core/js/src/common/ExportRegistry.ts new file mode 100644 index 000000000..712b4f3cc --- /dev/null +++ b/framework/core/js/src/common/ExportRegistry.ts @@ -0,0 +1,58 @@ +/** + * @internal + */ +export interface IExportRegistry { + moduleExports: Map>; + onLoads: Map>; + + /** + * Add an instance to the registry. + */ + add(namespace: string, id: string, object: any): void; + + /** + * Add a function to run when object of id "id" is added (or overriden). + * If such an object is already registered, the handler will be applied immediately. + */ + onLoad(namespace: string, id: string, handler: Function): void; + + /** + * Retrieve an object of type `id` from the registry. + */ + get(namespace: string, id: string): any; +} + +export default class ExportRegistry implements IExportRegistry { + moduleExports = new Map>(); + onLoads = new Map>(); + + add(namespace: string, id: string, object: any): void { + this.moduleExports.set(namespace, this.moduleExports.get(namespace) || new Map()); + this.moduleExports.get(namespace)?.set(id, object); + + this.onLoads + .get(namespace) + ?.get(id) + ?.forEach((handler) => handler(object)); + } + + onLoad(namespace: string, id: string, handler: Function): void { + if (this.moduleExports.has(namespace) && this.moduleExports.get(namespace)?.has(id)) { + handler(this.moduleExports.get(namespace)?.get(id)); + } else { + this.onLoads.set(namespace, this.onLoads.get(namespace) || new Map()); + this.onLoads.get(namespace)?.set(id, this.onLoads.get(namespace)?.get(id) || []); + this.onLoads.get(namespace)?.get(id)?.push(handler); + } + } + + get(namespace: string, id: string): any { + const module = this.moduleExports.get(namespace)?.get(id); + + if (!module) { + console.warn(`No module found for ${namespace}:${id}`); + } + + return module; + } +} diff --git a/framework/core/js/src/common/common.ts b/framework/core/js/src/common/common.ts new file mode 100644 index 000000000..e2699283f --- /dev/null +++ b/framework/core/js/src/common/common.ts @@ -0,0 +1,89 @@ +import './extend'; +import './extenders'; + +import './states/PaginatedListState'; +import './states/AlertManagerState'; +import './states/ModalManagerState'; +import './states/PageState'; + +import './utils/isObject'; +import './utils/mixin'; +import './utils/insertText'; +import './utils/styleSelectedText'; +import './utils/Drawer'; +import './utils/anchorScroll'; +import './utils/RequestError'; +import './utils/abbreviateNumber'; +import './utils/escapeRegExp'; +import './utils/string'; +import './utils/throttleDebounce'; +import './utils/Stream'; +import './utils/SubtreeRetainer'; +import './utils/setRouteWithForcedRefresh'; +import './utils/extract'; +import './utils/ScrollListener'; +import './utils/stringToColor'; +import './utils/subclassOf'; +import './utils/patchMithril'; +import './utils/classList'; +import './utils/extractText'; +import './utils/formatNumber'; +import './utils/mapRoutes'; +import './utils/withAttr'; +import './utils/focusTrap'; +import './utils/isDark'; +import './utils/KeyboardNavigatable'; + +import './models/Notification'; +import './models/User'; +import './models/Post'; +import './models/Discussion'; +import './models/Group'; +import './models/Forum'; + +import './components/AlertManager'; +import './components/Page'; +import './components/Switch'; +import './components/Badge'; +import './components/LoadingIndicator'; +import './components/Placeholder'; +import './components/Separator'; +import './components/Dropdown'; +import './components/SplitDropdown'; +import './components/RequestErrorModal'; +import './components/FieldSet'; +import './components/Select'; +import './components/Navigation'; +import './components/Alert'; +import './components/Link'; +import './components/LinkButton'; +import './components/Checkbox'; +import './components/ColorPreviewInput'; +import './components/SelectDropdown'; +import './components/ModalManager'; +import './components/Button'; +import './components/Modal'; +import './components/GroupBadge'; +import './components/TextEditor'; +import './components/TextEditorButton'; +import './components/EditUserModal'; +import './components/Tooltip'; + +import './helpers/fullTime'; +import './helpers/avatar'; +import './helpers/icon'; +import './helpers/humanTime'; +import './helpers/punctuateSeries'; +import './helpers/highlight'; +import './helpers/username'; +import './helpers/userOnline'; +import './helpers/listItems'; +import './helpers/textContrastClass'; + +import './resolvers/DefaultResolver'; + +import './Component'; +import './Translator'; +import './Model'; +import './Application'; +import './Fragment'; diff --git a/framework/core/js/src/common/compat.ts b/framework/core/js/src/common/compat.ts deleted file mode 100644 index df41ce85d..000000000 --- a/framework/core/js/src/common/compat.ts +++ /dev/null @@ -1,187 +0,0 @@ -import * as extend from './extend'; -import extenders from './extenders'; -import Session from './Session'; -import Store from './Store'; -import BasicEditorDriver from './utils/BasicEditorDriver'; -import evented from './utils/evented'; -import EventEmitter from './utils/EventEmitter'; -import KeyboardNavigatable from './utils/KeyboardNavigatable'; -import liveHumanTimes from './utils/liveHumanTimes'; -import ItemList from './utils/ItemList'; -import mixin from './utils/mixin'; -import humanTime from './utils/humanTime'; -import computed from './utils/computed'; -import insertText from './utils/insertText'; -import styleSelectedText from './utils/styleSelectedText'; -import Drawer from './utils/Drawer'; -import anchorScroll from './utils/anchorScroll'; -import RequestError from './utils/RequestError'; -import abbreviateNumber from './utils/abbreviateNumber'; -import escapeRegExp from './utils/escapeRegExp'; -import * as string from './utils/string'; -import * as ThrottleDebounce from './utils/throttleDebounce'; -import Stream from './utils/Stream'; -import SubtreeRetainer from './utils/SubtreeRetainer'; -import setRouteWithForcedRefresh from './utils/setRouteWithForcedRefresh'; -import extract from './utils/extract'; -import ScrollListener from './utils/ScrollListener'; -import stringToColor from './utils/stringToColor'; -import subclassOf from './utils/subclassOf'; -import patchMithril from './utils/patchMithril'; -import proxifyCompat from './utils/proxifyCompat'; -import classList from './utils/classList'; -import extractText from './utils/extractText'; -import formatNumber from './utils/formatNumber'; -import mapRoutes from './utils/mapRoutes'; -import withAttr from './utils/withAttr'; -import * as FocusTrap from './utils/focusTrap'; -import isDark from './utils/isDark'; -import Notification from './models/Notification'; -import User from './models/User'; -import Post from './models/Post'; -import Discussion from './models/Discussion'; -import Group from './models/Group'; -import Forum from './models/Forum'; -import Component from './Component'; -import Translator from './Translator'; -import AlertManager from './components/AlertManager'; -import Page from './components/Page'; -import Switch from './components/Switch'; -import Badge from './components/Badge'; -import LoadingIndicator from './components/LoadingIndicator'; -import Placeholder from './components/Placeholder'; -import Separator from './components/Separator'; -import Dropdown from './components/Dropdown'; -import SplitDropdown from './components/SplitDropdown'; -import RequestErrorModal from './components/RequestErrorModal'; -import FieldSet from './components/FieldSet'; -import Select from './components/Select'; -import Navigation from './components/Navigation'; -import Alert from './components/Alert'; -import Link from './components/Link'; -import LinkButton from './components/LinkButton'; -import Checkbox from './components/Checkbox'; -import ColorPreviewInput from './components/ColorPreviewInput'; -import SelectDropdown from './components/SelectDropdown'; -import ModalManager from './components/ModalManager'; -import Button from './components/Button'; -import Modal from './components/Modal'; -import GroupBadge from './components/GroupBadge'; -import TextEditor from './components/TextEditor'; -import TextEditorButton from './components/TextEditorButton'; -import EditUserModal from './components/EditUserModal'; -import Tooltip from './components/Tooltip'; -import Model from './Model'; -import Application from './Application'; -import fullTime from './helpers/fullTime'; -import avatar from './helpers/avatar'; -import icon from './helpers/icon'; -import humanTimeHelper from './helpers/humanTime'; -import punctuateSeries from './helpers/punctuateSeries'; -import highlight from './helpers/highlight'; -import username from './helpers/username'; -import userOnline from './helpers/userOnline'; -import listItems from './helpers/listItems'; -import textContrastClass from './helpers/textContrastClass'; -import Fragment from './Fragment'; -import DefaultResolver from './resolvers/DefaultResolver'; -import PaginatedListState from './states/PaginatedListState'; -import isObject from './utils/isObject'; -import AlertManagerState from './states/AlertManagerState'; -import ModalManagerState from './states/ModalManagerState'; -import PageState from './states/PageState'; - -export default { - extenders, - extend: extend, - Session: Session, - Store: Store, - 'utils/BasicEditorDriver': BasicEditorDriver, - 'utils/evented': evented, - 'utils/EventEmitter': EventEmitter, - 'utils/KeyboardNavigatable': KeyboardNavigatable, - 'utils/liveHumanTimes': liveHumanTimes, - 'utils/ItemList': ItemList, - 'utils/mixin': mixin, - 'utils/humanTime': humanTime, - 'utils/computed': computed, - 'utils/insertText': insertText, - 'utils/styleSelectedText': styleSelectedText, - 'utils/Drawer': Drawer, - 'utils/anchorScroll': anchorScroll, - 'utils/RequestError': RequestError, - 'utils/abbreviateNumber': abbreviateNumber, - 'utils/string': string, - 'utils/SubtreeRetainer': SubtreeRetainer, - 'utils/escapeRegExp': escapeRegExp, - 'utils/extract': extract, - 'utils/ScrollListener': ScrollListener, - 'utils/stringToColor': stringToColor, - 'utils/Stream': Stream, - 'utils/subclassOf': subclassOf, - 'utils/setRouteWithForcedRefresh': setRouteWithForcedRefresh, - 'utils/patchMithril': patchMithril, - 'utils/proxifyCompat': proxifyCompat, - 'utils/classList': classList, - 'utils/extractText': extractText, - 'utils/formatNumber': formatNumber, - 'utils/mapRoutes': mapRoutes, - 'utils/withAttr': withAttr, - 'utils/throttleDebounce': ThrottleDebounce, - 'utils/isObject': isObject, - 'utils/focusTrap': FocusTrap, - 'utils/isDark': isDark, - 'models/Notification': Notification, - 'models/User': User, - 'models/Post': Post, - 'models/Discussion': Discussion, - 'models/Group': Group, - 'models/Forum': Forum, - Component: Component, - Fragment: Fragment, - Translator: Translator, - 'components/AlertManager': AlertManager, - 'components/Page': Page, - 'components/Switch': Switch, - 'components/Badge': Badge, - 'components/LoadingIndicator': LoadingIndicator, - 'components/Placeholder': Placeholder, - 'components/Separator': Separator, - 'components/Dropdown': Dropdown, - 'components/SplitDropdown': SplitDropdown, - 'components/RequestErrorModal': RequestErrorModal, - 'components/FieldSet': FieldSet, - 'components/Select': Select, - 'components/Navigation': Navigation, - 'components/Alert': Alert, - 'components/Link': Link, - 'components/LinkButton': LinkButton, - 'components/Checkbox': Checkbox, - 'components/ColorPreviewInput': ColorPreviewInput, - 'components/SelectDropdown': SelectDropdown, - 'components/ModalManager': ModalManager, - 'components/Button': Button, - 'components/Modal': Modal, - 'components/GroupBadge': GroupBadge, - 'components/TextEditor': TextEditor, - 'components/TextEditorButton': TextEditorButton, - 'components/Tooltip': Tooltip, - 'components/EditUserModal': EditUserModal, - Model: Model, - Application: Application, - 'helpers/fullTime': fullTime, - 'helpers/avatar': avatar, - 'helpers/icon': icon, - 'helpers/humanTime': humanTimeHelper, - 'helpers/punctuateSeries': punctuateSeries, - 'helpers/highlight': highlight, - 'helpers/username': username, - 'helpers/userOnline': userOnline, - 'helpers/listItems': listItems, - 'helpers/textContrastClass': textContrastClass, - 'resolvers/DefaultResolver': DefaultResolver, - 'states/PaginatedListState': PaginatedListState, - 'states/AlertManagerState': AlertManagerState, - 'states/ModalManagerState': ModalManagerState, - 'states/PageState': PageState, -}; diff --git a/framework/core/js/src/common/extenders/index.ts b/framework/core/js/src/common/extenders/index.ts index 8a4e58cb9..e2d5dda53 100644 --- a/framework/core/js/src/common/extenders/index.ts +++ b/framework/core/js/src/common/extenders/index.ts @@ -3,9 +3,11 @@ import PostTypes from './PostTypes'; import Routes from './Routes'; import Store from './Store'; -export default { +const extenders = { Model, PostTypes, Routes, Store, }; + +export default extenders; diff --git a/framework/core/js/src/common/index.ts b/framework/core/js/src/common/index.ts index bfc0955b5..0b7deb700 100644 --- a/framework/core/js/src/common/index.ts +++ b/framework/core/js/src/common/index.ts @@ -15,6 +15,8 @@ import localizedFormat from 'dayjs/plugin/localizedFormat'; dayjs.extend(relativeTime); dayjs.extend(localizedFormat); +import './registry'; + import patchMithril from './utils/patchMithril'; patchMithril(window); diff --git a/framework/core/js/src/common/registry.ts b/framework/core/js/src/common/registry.ts new file mode 100644 index 000000000..6781c5eca --- /dev/null +++ b/framework/core/js/src/common/registry.ts @@ -0,0 +1,3 @@ +import ExportRegistry from './ExportRegistry'; + +flarum.reg = new ExportRegistry(); diff --git a/framework/core/js/src/common/utils/proxifyCompat.ts b/framework/core/js/src/common/utils/proxifyCompat.ts deleted file mode 100644 index 36766a4f1..000000000 --- a/framework/core/js/src/common/utils/proxifyCompat.ts +++ /dev/null @@ -1,12 +0,0 @@ -export default function proxifyCompat(compat: Record, namespace: string) { - // regex to replace common/ and NAMESPACE/ for core & core extensions - // and remove .js, .ts and .tsx extensions - // e.g. admin/utils/extract --> utils/extract - // e.g. tags/common/utils/sortTags --> tags/utils/sortTags - const regex = new RegExp(String.raw`(\w+\/)?(${namespace}|common)\/`); - const fileExt = /(\.js|\.tsx?)$/; - - return new Proxy(compat, { - get: (obj, prop: string) => obj[prop] || obj[prop.replace(regex, '$1').replace(fileExt, '')], - }); -} diff --git a/framework/core/js/src/common/utils/throttleDebounce.ts b/framework/core/js/src/common/utils/throttleDebounce.ts index 3d8758780..1a9928ae0 100644 --- a/framework/core/js/src/common/utils/throttleDebounce.ts +++ b/framework/core/js/src/common/utils/throttleDebounce.ts @@ -1,3 +1,3 @@ -// Re-exports `throttle-debounce` to be used in `compat.js`. +// Re-exports `throttle-debounce` to be added in the export registry. export { throttle, debounce } from 'throttle-debounce'; diff --git a/framework/core/js/src/common/utils/withAttr.ts b/framework/core/js/src/common/utils/withAttr.ts index 5055b74b9..b50aa337c 100644 --- a/framework/core/js/src/common/utils/withAttr.ts +++ b/framework/core/js/src/common/utils/withAttr.ts @@ -9,7 +9,8 @@ * Replaces m.withAttr for Mithril 2.0. * @see https://mithril.js.org/archive/v0.2.5/mithril.withAttr.html */ -export default (key: string, cb: Function) => - function (this: Element) { +export default function withAttr(key: string, cb: Function) { + return function (this: Element) { cb(this.getAttribute(key) || (this as any)[key]); }; +} diff --git a/framework/core/js/src/forum/compat.ts b/framework/core/js/src/forum/compat.ts deleted file mode 100644 index a9819ab2d..000000000 --- a/framework/core/js/src/forum/compat.ts +++ /dev/null @@ -1,156 +0,0 @@ -import compat from '../common/compat'; - -import PostControls from './utils/PostControls'; -import KeyboardNavigatable from '../common/utils/KeyboardNavigatable'; -import slidable from './utils/slidable'; -import History from './utils/History'; -import DiscussionControls from './utils/DiscussionControls'; -import alertEmailConfirmation from './utils/alertEmailConfirmation'; -import UserControls from './utils/UserControls'; -import Pane from './utils/Pane'; -import ComposerState from './states/ComposerState'; -import DiscussionListState from './states/DiscussionListState'; -import GlobalSearchState from './states/GlobalSearchState'; -import NotificationListState from './states/NotificationListState'; -import PostStreamState from './states/PostStreamState'; -import SearchState from './states/SearchState'; -import UserSecurityPageState from './states/UserSecurityPageState'; -import AffixedSidebar from './components/AffixedSidebar'; -import DiscussionPage from './components/DiscussionPage'; -import DiscussionListPane from './components/DiscussionListPane'; -import LogInModal from './components/LogInModal'; -import ComposerBody from './components/ComposerBody'; -import ForgotPasswordModal from './components/ForgotPasswordModal'; -import Notification from './components/Notification'; -import LogInButton from './components/LogInButton'; -import DiscussionsUserPage from './components/DiscussionsUserPage'; -import Composer from './components/Composer'; -import SessionDropdown from './components/SessionDropdown'; -import HeaderPrimary from './components/HeaderPrimary'; -import PostEdited from './components/PostEdited'; -import PostStream from './components/PostStream'; -import ChangePasswordModal from './components/ChangePasswordModal'; -import IndexPage from './components/IndexPage'; -import DiscussionRenamedNotification from './components/DiscussionRenamedNotification'; -import DiscussionsSearchSource from './components/DiscussionsSearchSource'; -import HeaderSecondary from './components/HeaderSecondary'; -import ComposerButton from './components/ComposerButton'; -import DiscussionList from './components/DiscussionList'; -import ReplyPlaceholder from './components/ReplyPlaceholder'; -import AvatarEditor from './components/AvatarEditor'; -import Post from './components/Post'; -import SettingsPage from './components/SettingsPage'; -import TerminalPost from './components/TerminalPost'; -import ChangeEmailModal from './components/ChangeEmailModal'; -import NotificationsDropdown from './components/NotificationsDropdown'; -import UserPage from './components/UserPage'; -import PostUser from './components/PostUser'; -import UserCard from './components/UserCard'; -import UsersSearchSource from './components/UsersSearchSource'; -import UserSecurityPage from './components/UserSecurityPage'; -import NotificationGrid from './components/NotificationGrid'; -import PostPreview from './components/PostPreview'; -import EventPost from './components/EventPost'; -import DiscussionHero from './components/DiscussionHero'; -import PostMeta from './components/PostMeta'; -import DiscussionRenamedPost from './components/DiscussionRenamedPost'; -import DiscussionComposer from './components/DiscussionComposer'; -import LogInButtons from './components/LogInButtons'; -import NotificationList from './components/NotificationList'; -import WelcomeHero from './components/WelcomeHero'; -import SignUpModal from './components/SignUpModal'; -import CommentPost from './components/CommentPost'; -import ComposerPostPreview from './components/ComposerPostPreview'; -import ReplyComposer from './components/ReplyComposer'; -import NotificationsPage from './components/NotificationsPage'; -import PostStreamScrubber from './components/PostStreamScrubber'; -import EditPostComposer from './components/EditPostComposer'; -import RenameDiscussionModal from './components/RenameDiscussionModal'; -import Search from './components/Search'; -import DiscussionListItem from './components/DiscussionListItem'; -import LoadingPost from './components/LoadingPost'; -import PostsUserPage from './components/PostsUserPage'; -import DiscussionPageResolver from './resolvers/DiscussionPageResolver'; -import BasicEditorDriver from '../common/utils/BasicEditorDriver'; -import routes from './routes'; -import ForumApplication from './ForumApplication'; -import isSafariMobile from './utils/isSafariMobile'; - -export default Object.assign(compat, { - 'utils/PostControls': PostControls, - // @deprecated import from 'flarum/common/utils/KeyboardNavigatable' instead - 'utils/KeyboardNavigatable': KeyboardNavigatable, - 'utils/slidable': slidable, - 'utils/History': History, - 'utils/DiscussionControls': DiscussionControls, - 'utils/alertEmailConfirmation': alertEmailConfirmation, - 'utils/UserControls': UserControls, - 'utils/Pane': Pane, - 'utils/BasicEditorDriver': BasicEditorDriver, - 'utils/isSafariMobile': isSafariMobile, - 'states/ComposerState': ComposerState, - 'states/DiscussionListState': DiscussionListState, - 'states/GlobalSearchState': GlobalSearchState, - 'states/NotificationListState': NotificationListState, - 'states/PostStreamState': PostStreamState, - 'states/SearchState': SearchState, - 'states/UserSecurityPageState': UserSecurityPageState, - 'components/AffixedSidebar': AffixedSidebar, - 'components/DiscussionPage': DiscussionPage, - 'components/DiscussionListPane': DiscussionListPane, - 'components/LogInModal': LogInModal, - 'components/ComposerBody': ComposerBody, - 'components/ForgotPasswordModal': ForgotPasswordModal, - 'components/Notification': Notification, - 'components/LogInButton': LogInButton, - 'components/DiscussionsUserPage': DiscussionsUserPage, - 'components/Composer': Composer, - 'components/SessionDropdown': SessionDropdown, - 'components/HeaderPrimary': HeaderPrimary, - 'components/PostEdited': PostEdited, - 'components/PostStream': PostStream, - 'components/ChangePasswordModal': ChangePasswordModal, - 'components/IndexPage': IndexPage, - 'components/DiscussionRenamedNotification': DiscussionRenamedNotification, - 'components/DiscussionsSearchSource': DiscussionsSearchSource, - 'components/HeaderSecondary': HeaderSecondary, - 'components/ComposerButton': ComposerButton, - 'components/DiscussionList': DiscussionList, - 'components/ReplyPlaceholder': ReplyPlaceholder, - 'components/AvatarEditor': AvatarEditor, - 'components/Post': Post, - 'components/SettingsPage': SettingsPage, - 'components/TerminalPost': TerminalPost, - 'components/ChangeEmailModal': ChangeEmailModal, - 'components/NotificationsDropdown': NotificationsDropdown, - 'components/UserPage': UserPage, - 'components/PostUser': PostUser, - 'components/UserCard': UserCard, - 'components/UsersSearchSource': UsersSearchSource, - 'components/UserSecurityPage': UserSecurityPage, - 'components/NotificationGrid': NotificationGrid, - 'components/PostPreview': PostPreview, - 'components/EventPost': EventPost, - 'components/DiscussionHero': DiscussionHero, - 'components/PostMeta': PostMeta, - 'components/DiscussionRenamedPost': DiscussionRenamedPost, - 'components/DiscussionComposer': DiscussionComposer, - 'components/LogInButtons': LogInButtons, - 'components/NotificationList': NotificationList, - 'components/WelcomeHero': WelcomeHero, - 'components/SignUpModal': SignUpModal, - 'components/CommentPost': CommentPost, - 'components/ComposerPostPreview': ComposerPostPreview, - 'components/ReplyComposer': ReplyComposer, - 'components/NotificationsPage': NotificationsPage, - 'components/PostStreamScrubber': PostStreamScrubber, - 'components/EditPostComposer': EditPostComposer, - 'components/RenameDiscussionModal': RenameDiscussionModal, - 'components/Search': Search, - 'components/DiscussionListItem': DiscussionListItem, - 'components/LoadingPost': LoadingPost, - 'components/PostsUserPage': PostsUserPage, - 'resolvers/DiscussionPageResolver': DiscussionPageResolver, - routes: routes, - ForumApplication: ForumApplication, -}); diff --git a/framework/core/js/src/forum/forum.ts b/framework/core/js/src/forum/forum.ts new file mode 100644 index 000000000..c5cca074f --- /dev/null +++ b/framework/core/js/src/forum/forum.ts @@ -0,0 +1,75 @@ +import '../common/common'; +import '../common/utils/BasicEditorDriver'; + +import './utils/PostControls'; +import './utils/slidable'; +import './utils/History'; +import './utils/DiscussionControls'; +import './utils/alertEmailConfirmation'; +import './utils/UserControls'; +import './utils/Pane'; +import './states/ComposerState'; +import './states/DiscussionListState'; +import './states/GlobalSearchState'; +import './states/NotificationListState'; +import './states/PostStreamState'; +import './states/SearchState'; +import './states/UserSecurityPageState'; +import './components/AffixedSidebar'; +import './components/DiscussionPage'; +import './components/DiscussionListPane'; +import './components/LogInModal'; +import './components/ComposerBody'; +import './components/ForgotPasswordModal'; +import './components/Notification'; +import './components/LogInButton'; +import './components/DiscussionsUserPage'; +import './components/Composer'; +import './components/SessionDropdown'; +import './components/HeaderPrimary'; +import './components/PostEdited'; +import './components/PostStream'; +import './components/ChangePasswordModal'; +import './components/IndexPage'; +import './components/DiscussionRenamedNotification'; +import './components/DiscussionsSearchSource'; +import './components/HeaderSecondary'; +import './components/ComposerButton'; +import './components/DiscussionList'; +import './components/ReplyPlaceholder'; +import './components/AvatarEditor'; +import './components/Post'; +import './components/SettingsPage'; +import './components/TerminalPost'; +import './components/ChangeEmailModal'; +import './components/NotificationsDropdown'; +import './components/UserPage'; +import './components/PostUser'; +import './components/UserCard'; +import './components/UsersSearchSource'; +import './components/UserSecurityPage'; +import './components/NotificationGrid'; +import './components/PostPreview'; +import './components/EventPost'; +import './components/DiscussionHero'; +import './components/PostMeta'; +import './components/DiscussionRenamedPost'; +import './components/DiscussionComposer'; +import './components/LogInButtons'; +import './components/NotificationList'; +import './components/WelcomeHero'; +import './components/SignUpModal'; +import './components/CommentPost'; +import './components/ComposerPostPreview'; +import './components/ReplyComposer'; +import './components/NotificationsPage'; +import './components/PostStreamScrubber'; +import './components/EditPostComposer'; +import './components/RenameDiscussionModal'; +import './components/Search'; +import './components/DiscussionListItem'; +import './components/LoadingPost'; +import './components/PostsUserPage'; +import './resolvers/DiscussionPageResolver'; +import './routes'; +import './ForumApplication'; diff --git a/framework/core/js/src/forum/index.ts b/framework/core/js/src/forum/index.ts index 8f7605335..57fb6503b 100644 --- a/framework/core/js/src/forum/index.ts +++ b/framework/core/js/src/forum/index.ts @@ -6,11 +6,4 @@ import app from './app'; export { app }; -// Export compat API -import compatObj from './compat'; -import proxifyCompat from '../common/utils/proxifyCompat'; - -// @ts-ignore -compatObj.app = app; - -export const compat = proxifyCompat(compatObj, 'forum'); +import './forum'; diff --git a/framework/core/js/src/forum/utils/DiscussionControls.js b/framework/core/js/src/forum/utils/DiscussionControls.js index f33110ecd..211a275b6 100644 --- a/framework/core/js/src/forum/utils/DiscussionControls.js +++ b/framework/core/js/src/forum/utils/DiscussionControls.js @@ -12,7 +12,7 @@ import extractText from '../../common/utils/extractText'; * The `DiscussionControls` utility constructs a list of buttons for a * discussion which perform actions on it. */ -export default { +const DiscussionControls = { /** * Get a list of controls for a discussion. * @@ -240,3 +240,5 @@ export default { }); }, }; + +export default DiscussionControls; diff --git a/framework/core/js/src/forum/utils/PostControls.js b/framework/core/js/src/forum/utils/PostControls.js index 010c9fb99..3ee67c28c 100644 --- a/framework/core/js/src/forum/utils/PostControls.js +++ b/framework/core/js/src/forum/utils/PostControls.js @@ -9,7 +9,7 @@ import extractText from '../../common/utils/extractText'; * The `PostControls` utility constructs a list of buttons for a post which * perform actions on it. */ -export default { +const PostControls = { /** * Get a list of controls for a post. * @@ -183,3 +183,5 @@ export default { }); }, }; + +export default PostControls; diff --git a/framework/core/js/src/forum/utils/UserControls.js b/framework/core/js/src/forum/utils/UserControls.js index 6d40fdc89..adbe011f7 100644 --- a/framework/core/js/src/forum/utils/UserControls.js +++ b/framework/core/js/src/forum/utils/UserControls.js @@ -9,7 +9,7 @@ import ItemList from '../../common/utils/ItemList'; * The `UserControls` utility constructs a list of buttons for a user which * perform actions on it. */ -export default { +const UserControls = { /** * Get a list of controls for a user. * @@ -146,3 +146,5 @@ export default { app.modal.show(EditUserModal, { user }); }, }; + +export default UserControls; diff --git a/framework/core/src/Frontend/AddTranslations.php b/framework/core/src/Frontend/AddTranslations.php index 52b48f947..64612366e 100644 --- a/framework/core/src/Frontend/AddTranslations.php +++ b/framework/core/src/Frontend/AddTranslations.php @@ -40,7 +40,7 @@ class AddTranslations $sources->addString(function () use ($locale) { $translations = $this->getTranslations($locale); - return 'flarum.core.app.translator.addTranslations('.json_encode($translations).')'; + return 'app.translator.addTranslations('.json_encode($translations).')'; }); }); } diff --git a/framework/core/views/frontend/app.blade.php b/framework/core/views/frontend/app.blade.php index 2027af5c2..2b3b87118 100644 --- a/framework/core/views/frontend/app.blade.php +++ b/framework/core/views/frontend/app.blade.php @@ -28,9 +28,9 @@ document.getElementById('flarum-loading').style.display = 'none'; try { - flarum.core.app.load(data); - flarum.core.app.bootExtensions(flarum.extensions); - flarum.core.app.boot(); + app.load(data); + app.bootExtensions(flarum.extensions); + app.boot(); } catch (e) { var error = document.getElementById('flarum-loading-error'); error.innerHTML += document.getElementById('flarum-content').textContent; diff --git a/js-packages/jest-config/index.cjs b/js-packages/jest-config/index.cjs index 37ed79d95..99c50b8ec 100644 --- a/js-packages/jest-config/index.cjs +++ b/js-packages/jest-config/index.cjs @@ -6,7 +6,7 @@ module.exports = (options = {}) => ({ transform: { '^.+\\.[tj]sx?$': [ 'babel-jest', - require('flarum-webpack-config/babel.config.js'), + require('flarum-webpack-config/babel.config.cjs'), ], '^.+\\.tsx?$': [ 'ts-jest', diff --git a/js-packages/webpack-config/README.md b/js-packages/webpack-config/README.md index 51b8441e4..4f4e8a2a2 100755 --- a/js-packages/webpack-config/README.md +++ b/js-packages/webpack-config/README.md @@ -31,27 +31,3 @@ Add another build script to your `package.json` like the one below: You'll need to configure a `tsconfig.json` file to ensure your IDE sets up Typescript support correctly. For details about this, see the [`flarum/flarum-tsconfig` repository](https://github.com/flarum/flarum-tsconfig) - -## Options - -### `useExtensions` - -`Array`, defaults to `[]`. - -An array of extensions whose modules should be made available. This is a shortcut to add [`externals`](https://webpack.js.org/configuration/externals/) configuration for extension modules. Imported extension modules will not be bundled, but will instead refer to the extension's exports included in the Flarum runtime (ie. `flarum.extensions["vendor/package"]`). - -For example, to access the Tags extension module within your extension: - -**forum.js** - -```js -import { Tag } from '@flarum/tags/forum'; -``` - -**webpack.config.js** - -```js -module.exports = config({ - useExtensions: ['flarum/tags'], -}); -``` diff --git a/js-packages/webpack-config/babel.config.js b/js-packages/webpack-config/babel.config.cjs similarity index 100% rename from js-packages/webpack-config/babel.config.js rename to js-packages/webpack-config/babel.config.cjs diff --git a/js-packages/webpack-config/package.json b/js-packages/webpack-config/package.json index 74064b2f3..d20384a34 100644 --- a/js-packages/webpack-config/package.json +++ b/js-packages/webpack-config/package.json @@ -1,8 +1,9 @@ { "name": "flarum-webpack-config", + "type": "module", "version": "2.0.2", "description": "Webpack config for Flarum JS and TS transpilation.", - "main": "index.js", + "main": "src/index.cjs", "author": "Flarum Team", "license": "MIT", "prettier": "@flarum/prettier-config", @@ -21,13 +22,18 @@ "@babel/preset-typescript": "^7.18.6", "@babel/runtime": "^7.20.1", "babel-loader": "^9.1.0", + "loader-utils": "^1.4.0", + "schema-utils": "^3.0.0", "typescript": "^4.9.3", "webpack": "^5.76.0", "webpack-bundle-analyzer": "^4.7.0" }, "devDependencies": { - "prettier": "^2.8.0", - "@flarum/prettier-config": "^1.0.0" + "@flarum/prettier-config": "^1.0.0", + "babel-jest": "^29.5.0", + "jest": "^29.5.0", + "memfs": "^3.5.3", + "prettier": "^2.8.0" }, "scripts": { "dev": "echo 'skipping..'", @@ -39,6 +45,10 @@ "build-typings": "echo 'skipping..'", "post-build-typings": "echo 'skipping..'", "check-typings": "echo 'skipping..'", - "check-typings-coverage": "echo 'skipping..'" + "check-typings-coverage": "echo 'skipping..'", + "test": "jest" + }, + "jest": { + "testEnvironment": "node" } } diff --git a/js-packages/webpack-config/src/autoExportLoader.cjs b/js-packages/webpack-config/src/autoExportLoader.cjs new file mode 100644 index 000000000..621f9990d --- /dev/null +++ b/js-packages/webpack-config/src/autoExportLoader.cjs @@ -0,0 +1,185 @@ +/** + * Auto Export Loader + * + * This loader will automatically pick up all core and extension exports and add them to the registry. + */ + +const path = require('path'); +const fs = require('fs'); +const { validate } = require('schema-utils'); +const { getOptions, interpolateName } = require('loader-utils'); + +const optionsSchema = { + type: 'object', + properties: { + extension: { + type: 'string', + }, + }, +}; + +let namespace; + +function addAutoExports(source, pathToModule, moduleName) { + let addition = ''; + + const defaultExportMatches = [...source.matchAll(/export\s+?default\s(?:abstract\s)?(?:(?:function|abstract|class)\s)?([A-Za-z_]*)/gm)]; + const defaultExport = defaultExportMatches.length ? defaultExportMatches[0][1] : null; + + // In case of an index.js file that exports multiple modules + // we need to add the directory as a module. + // For an example checkout the `common/extenders/index.js` file. + if (moduleName === 'index') { + const id = pathToModule.substring(0, pathToModule.length - 1); + + // Add code at the end of the file to add the file to registry + addition += `\nflarum.reg.add('${namespace}', '${id}', ${defaultExport})`; + } + + // In a normal case, we do one of two things: + else { + // 1. If there is a default export, we add the module to the registry with the default export. + // Example: `export default class Foo {}` will be added to the registry as `Foo`, + // and can be imported using `import Foo from 'flarum/../Foo'`. + if (defaultExport) { + // Add code at the end of the file to add the file to registry + addition += `\nflarum.reg.add('${namespace}', '${pathToModule}${moduleName}', ${defaultExport})`; + } + + // 2. If there is no default export, then there are named exports, + // so we add the module to the registry with the map of named exports. + // Example: `export class Foo {}` will be added to the registry as `{ Foo: 'Foo' }`, + // and can be imported using `import { Foo } from 'flarum/../Foo'`, + // (checkout the `common/utils/string.ts` file for an example). + else { + // Another two case scenarios is when using `export { A, B } from 'x'`. + // 2.1. If there is a default export, we add the module to the registry with the default export and ignore the named exports. + // Example: `export { nanoid as default, x } from 'nanoid'` will be added to the registry as `nanoid`, + // and can be imported using `import nanoid from 'flarum/../nanoid'`. x will be ignored. + const objectExportWithDefaultMatches = [...source.matchAll(/export\s+?{.*as\s+?default.*}\s+?from\s+?['"](.*)['"]/gm)]; + + if (objectExportWithDefaultMatches.length) { + let objectDefaultExport = null; + + source = source.replace(/export\s+?{\s?([A-z_0-9]*)\s?as\s+?default.*}\s+?from\s+?['"](.*)['"]/gm, (match, defaultExport, path) => { + objectDefaultExport = defaultExport; + + return `import { ${defaultExport} } from '${path}';\nexport default ${defaultExport}`; + }); + + addition += `\nflarum.reg.add('${namespace}', '${pathToModule}${moduleName}', ${objectDefaultExport})`; + } + // 2.2. If there is no default export, check for direct exports from other modules. + // We add the module to the registry with the map of named exports. + // Example: `export { A, B } from 'nanoid'` will be added to the registry as `{ A, B }`, + // and can be imported using `import { A, B } from 'flarum/../nanoid'`. + else { + const exportCurlyPattern = /export\s+?{(.*)}\s+?from\s+?['"](.*)['"]/gm; + const namedExportMatches = [...source.matchAll(exportCurlyPattern)]; + + if (namedExportMatches.length) { + source = source.replaceAll(exportCurlyPattern, (match, names, path) => { + return names + .split(',') + .map((name) => `import { ${name} } from '${path}';\nexport { ${name} }`) + .join('\n'); + }); + + // Addition to the registry is taken care of in step 2.3 + } + } + + // 2.3. Finally, we check for all named exports + // these can be `export function|class|.. Name ..` + // or `export { ... }; + { + const matches = [...source.matchAll(/export\s+?(?:\* as|function|{\s*([A-z0-9, ]+)+\s?}|const|abstract\s?|class)+?\s?([A-Za-z_]*)?/gm)]; + + if (matches.length) { + const map = matches.reduce((map, match) => { + const names = match[1] ? match[1].split(',') : (match[2] ? [match[2]] : null); + + if (!names) { + return map; + } + + for (let name of names) { + name = name.trim(); + + if (name === 'interface' || name === '') { + continue; + } + + map += `${name}: ${name},`; + } + + return map; + }, ''); + + // Add code at the end of the file to add the file to registry + if (map) addition += `\nflarum.reg.add('${namespace}', '${pathToModule}${moduleName}', { ${map} })`; + } + } + } + } + + return source + addition; +} + +// Custom loader logic +module.exports = function autoExportLoader(source) { + const options = getOptions(this) || {}; + + validate(optionsSchema, options, { + name: 'Flarum Webpack Loader', + composerPath: 'Path to the extension composer.json file', + }); + + // Ensure that composer.json is watched for changes + // so that the loader is run again when composer.json + // is updated. + const composerJsonPath = path.resolve(options.composerPath || '../composer.json'); + this.addDependency(composerJsonPath); + + // Get the namespace of the module to be exported + // the namespace is essentially just the usual extension ID. + if (!namespace) { + const composerJson = JSON.parse(fs.readFileSync(composerJsonPath, 'utf8')); + + // Get the value of the 'name' property + namespace = + composerJson.name === 'flarum/core' ? 'core' : composerJson.name.replace('/flarum-ext-', '-').replace('/flarum-', '').replace('/', '-'); + } + + // Get the type of the module to be exported + const location = interpolateName(this, '[folder]/', { + context: this.rootContext || this.context, + }); + + // Get the name of module to be exported + const moduleName = interpolateName(this, '[name]', { + context: this.rootContext || this.context, + }); + + // Don't export low level files + if ((/(admin|forum)\/$/.test(location) && moduleName !== 'app') || /(compat|ExportRegistry|registry)$/.test(moduleName)) { + return source; + } + + // Don't export index.js of common + if (moduleName === 'index' && location === 'common/') { + return source; + } + + // Don't export extend.js of extensions + if (namespace !== 'core' && /extend$/.test(moduleName)) { + return source; + } + + // Get the path of the module to be exported + // relative to the src directory. + // Example: src/forum/components/UserCard.js => forum/components + const pathToModule = this.resourcePath.replace(path.resolve(this.rootContext, 'src') + '/', '').replace(/[A-Za-z_]+\.[A-Za-z_]+$/, ''); + + return addAutoExports(source, pathToModule, moduleName); +}; diff --git a/js-packages/webpack-config/index.js b/js-packages/webpack-config/src/index.cjs similarity index 76% rename from js-packages/webpack-config/index.js rename to js-packages/webpack-config/src/index.cjs index 9d73dc34e..62e61392c 100644 --- a/js-packages/webpack-config/index.js +++ b/js-packages/webpack-config/src/index.cjs @@ -55,7 +55,7 @@ if (useBundleAnalyzer) { plugins.push(new (require('webpack-bundle-analyzer').BundleAnalyzerPlugin)()); } -module.exports = function (options = {}) { +module.exports = function () { return { // Set up entry points for each of the forum + admin apps, but only // if they exist. @@ -69,12 +69,15 @@ module.exports = function (options = {}) { module: { rules: [ + { + include: /src/, // Only apply this loader to files in the src directory + loader: path.resolve(__dirname, './autoExportLoader.cjs'), + }, { // Matches .js, .jsx, .ts, .tsx - // See: https://regexr.com/5snjd test: /\.[jt]sx?$/, loader: require.resolve('babel-loader'), - options: require('./babel.config'), + options: require('../babel.config.cjs'), resolve: { fullySpecified: false, }, @@ -91,33 +94,24 @@ module.exports = function (options = {}) { externals: [ { - '@flarum/core/forum': 'flarum.core', - '@flarum/core/admin': 'flarum.core', jquery: 'jQuery', }, - (function () { - const externals = {}; - - if (options.useExtensions) { - for (const extension of options.useExtensions) { - externals['@' + extension] = - externals['@' + extension + '/forum'] = - externals['@' + extension + '/admin'] = - "flarum.extensions['" + extension + "']"; - } - } - - return externals; - })(), - - // Support importing old-style core modules. function ({ request }, callback) { + let namespace; + let id; let matches; if ((matches = /^flarum\/(.+)$/.exec(request))) { - return callback(null, "root flarum.core.compat['" + matches[1] + "']"); + namespace = 'core'; + id = matches[1]; + } else if ((matches = /^ext:([^\/]+)\/(?:flarum-(?:ext-)?)?([^\/]+)(?:\/(.+))?$/.exec(request))) { + namespace = `${matches[1]}-${matches[2]}`; + id = matches[3]; + } else { + return callback(); } - callback(); + + return callback(null, `root flarum.reg.get('${namespace}', '${id}')`); }, ], diff --git a/js-packages/webpack-config/tests/autoExportLoader.test.js b/js-packages/webpack-config/tests/autoExportLoader.test.js new file mode 100644 index 000000000..44ff579ac --- /dev/null +++ b/js-packages/webpack-config/tests/autoExportLoader.test.js @@ -0,0 +1,54 @@ +/** + * @jest-environment node + */ +import compiler from './compiler.js'; +import 'regenerator-runtime/runtime'; + +const compile = async (path, useFinalOutput = false) => { + const stats = await compiler(path); + return useFinalOutput + ? stats.finalOutput + : stats.toJson({ + source: true, + }).modules[0].source; +}; + +test('A directory with index.js that exports multiple modules adds the directory as a module', async () => { + let output = await compile('src/common/bars/index.js', true); + expect(output).toContain("flarum.reg.add('flarum-framework', 'common/bars', bars)"); + + output = await compile('src/common/bars/Acme.js'); + expect(output).toContain("flarum.reg.add('flarum-framework', 'common/bars/Acme', Acme)"); + + output = await compile('src/common/bars/Foo.js'); + expect(output).toContain("flarum.reg.add('flarum-framework', 'common/bars/Foo', Foo)"); +}); + +test('Simple default exports are added', async () => { + const output = await compile('src/common/Test.js'); + expect(output).toContain("flarum.reg.add('flarum-framework', 'common/Test', Test)"); +}); + +test('Named exports are added', async () => { + const output = await compile('src/common/foos/namedExports.js'); + expect(output).toContain( + "flarum.reg.add('flarum-framework', 'common/foos/namedExports', { baz: baz,foo: foo,Bar: Bar,sasha: sasha,flarum: flarum,david: david, })" + ); +}); + +test('Export as default from another module is added', async () => { + const output = await compile('src/common/foos/exportDefaultFrom.js', true); + expect(output).toContain("flarum.reg.add('flarum-framework', 'common/foos/exportDefaultFrom', potato"); +}); + +test('Export from other modules is added', async () => { + const output = await compile('src/common/foos/exportFrom.js', true); + expect(output).toContain("flarum.reg.add('flarum-framework', 'common/foos/exportFrom', { potato: potato,franz: franz, }"); +}); + +test('Export from with other named exports works', async () => { + const output = await compile('src/common/foos/exportFromWithNamedExports.js', true); + expect(output).toContain( + "flarum.reg.add('flarum-framework', 'common/foos/exportFromWithNamedExports', { potato: potato,franz: franz,baz: baz,foo: foo,Bar: Bar,sasha: sasha,forum: forum,david: david, }" + ); +}); diff --git a/js-packages/webpack-config/tests/compiler.js b/js-packages/webpack-config/tests/compiler.js new file mode 100644 index 000000000..1dae9783e --- /dev/null +++ b/js-packages/webpack-config/tests/compiler.js @@ -0,0 +1,48 @@ +import path from 'path'; +import webpack from 'webpack'; +import { createFsFromVolume, Volume } from 'memfs'; +import * as fs from 'fs'; + +export default (fixture, options = {}) => { + const compiler = webpack({ + context: __dirname, + entry: `./${fixture}`, + output: { + path: path.resolve(__dirname), + filename: 'bundle.js', + }, + module: { + rules: [ + { + test: /\.js$/, + use: { + loader: path.resolve(__dirname, '../src/autoExportLoader.cjs'), + options: { + ...options, + composerPath: '../../composer.json', + }, + }, + }, + ], + }, + optimization: { + minimize: false, + minimizer: [], + }, + }); + + compiler.outputFileSystem = createFsFromVolume(new Volume()); + compiler.outputFileSystem.join = path.join.bind(path); + + return new Promise((resolve, reject) => { + compiler.run((err, stats) => { + if (err) reject(err); + if (stats.hasErrors()) reject(stats.toJson().errors); + + const outputFilepath = path.join(compiler.options.output.path, compiler.options.output.filename); + stats.finalOutput = compiler.outputFileSystem.readFileSync(outputFilepath, 'utf-8'); + + resolve(stats); + }); + }); +}; diff --git a/js-packages/webpack-config/tests/src/common/Test.js b/js-packages/webpack-config/tests/src/common/Test.js new file mode 100644 index 000000000..f94081b08 --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/Test.js @@ -0,0 +1 @@ +export default class Test {} diff --git a/js-packages/webpack-config/tests/src/common/bars/Acme.js b/js-packages/webpack-config/tests/src/common/bars/Acme.js new file mode 100644 index 000000000..2298863f6 --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/bars/Acme.js @@ -0,0 +1 @@ +export default class Acme {} diff --git a/js-packages/webpack-config/tests/src/common/bars/Foo.js b/js-packages/webpack-config/tests/src/common/bars/Foo.js new file mode 100644 index 000000000..780411100 --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/bars/Foo.js @@ -0,0 +1 @@ +export default class Foo {} diff --git a/js-packages/webpack-config/tests/src/common/bars/index.js b/js-packages/webpack-config/tests/src/common/bars/index.js new file mode 100644 index 000000000..0764b27a8 --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/bars/index.js @@ -0,0 +1,9 @@ +import Acme from './Acme.js'; +import Foo from './Foo.js'; + +const bars = { + Acme, + Foo, +}; + +export default bars; diff --git a/js-packages/webpack-config/tests/src/common/foos/exportDefaultFrom.js b/js-packages/webpack-config/tests/src/common/foos/exportDefaultFrom.js new file mode 100644 index 000000000..4d708a77c --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/foos/exportDefaultFrom.js @@ -0,0 +1 @@ +export { potato as default } from '../support/potato.js'; diff --git a/js-packages/webpack-config/tests/src/common/foos/exportFrom.js b/js-packages/webpack-config/tests/src/common/foos/exportFrom.js new file mode 100644 index 000000000..4515bc704 --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/foos/exportFrom.js @@ -0,0 +1 @@ +export { potato, franz } from '../support/potato.js'; diff --git a/js-packages/webpack-config/tests/src/common/foos/exportFromWithNamedExports.js b/js-packages/webpack-config/tests/src/common/foos/exportFromWithNamedExports.js new file mode 100644 index 000000000..648a06bbe --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/foos/exportFromWithNamedExports.js @@ -0,0 +1,16 @@ +export { potato, franz } from '../support/potato.js'; + +export function baz() {} + +export function foo() {} + +export class Bar {} + +const sasha = 'camel'; + +export { sasha }; + +const forum = 'Flarum'; +const david = 'david'; + +export { forum, david }; diff --git a/js-packages/webpack-config/tests/src/common/foos/namedExports.js b/js-packages/webpack-config/tests/src/common/foos/namedExports.js new file mode 100644 index 000000000..3aa668531 --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/foos/namedExports.js @@ -0,0 +1,14 @@ +export function baz() {} + +export function foo() {} + +export class Bar {} + +const sasha = 'camel'; + +export { sasha }; + +const flarum = 'Flarum'; +const david = 'david'; + +export { flarum, david }; diff --git a/js-packages/webpack-config/tests/src/common/support/potato.js b/js-packages/webpack-config/tests/src/common/support/potato.js new file mode 100644 index 000000000..9ede94e57 --- /dev/null +++ b/js-packages/webpack-config/tests/src/common/support/potato.js @@ -0,0 +1,4 @@ +const potato = 'potato'; +const franz = 'franz'; + +export { potato, franz }; diff --git a/yarn.lock b/yarn.lock index 3ac24ef86..e1dd6318d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,6 +10,14 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@askvortsov/rich-icu-message-formatter@^0.2.4": version "0.2.4" resolved "https://registry.yarnpkg.com/@askvortsov/rich-icu-message-formatter/-/rich-icu-message-formatter-0.2.4.tgz#5810886d6d6751e9b800640748355a87ea985556" @@ -26,12 +34,24 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": +"@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0": version "7.20.1" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.0": +"@babel/compat-data@^7.22.0", "@babel/compat-data@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.3.tgz#cd502a6a0b6e37d7ad72ce7e71a7160a3ae36f7e" + integrity sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== @@ -52,6 +72,27 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/core@^7.20.2": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.1.tgz#5de51c5206f4c6f5533562838337a603c1033cfd" + integrity sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.22.0" + "@babel/helper-compilation-targets" "^7.22.1" + "@babel/helper-module-transforms" "^7.22.1" + "@babel/helpers" "^7.22.0" + "@babel/parser" "^7.22.0" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + "@babel/generator@^7.20.1", "@babel/generator@^7.20.2", "@babel/generator@^7.7.2": version "7.20.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.4.tgz#4d9f8f0c30be75fd90a0562099a26e5839602ab8" @@ -61,6 +102,16 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.22.0", "@babel/generator@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.3.tgz#0ff675d2edb93d7596c5f6728b52615cfc0df01e" + integrity sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A== + dependencies: + "@babel/types" "^7.22.3" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -86,7 +137,18 @@ browserslist "^4.21.3" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.2": +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz#bfcd6b7321ffebe33290d68550e2c9d7eb7c7a58" + integrity sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ== + dependencies: + "@babel/compat-data" "^7.22.0" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.6": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz#3c08a5b5417c7f07b5cf3dfb6dc79cbec682e8c2" integrity sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA== @@ -99,7 +161,22 @@ "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": +"@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.1.tgz#ae3de70586cc757082ae3eba57240d42f468c41b" + integrity sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.22.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.22.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + semver "^6.3.0" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== @@ -107,10 +184,19 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== +"@babel/helper-create-regexp-features-plugin@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.1.tgz#a7ed9a8488b45b467fca353cd1a44dc5f0cf5c70" + integrity sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.3.1" + semver "^6.3.0" + +"@babel/helper-define-polyfill-provider@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz#487053f103110f25b9755c5980e031e93ced24d8" + integrity sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg== dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -124,6 +210,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== +"@babel/helper-environment-visitor@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz#ac3a56dbada59ed969d712cf527bd8271fe3eba8" + integrity sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA== + "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" @@ -139,6 +230,14 @@ "@babel/template" "^7.18.10" "@babel/types" "^7.19.0" +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -153,6 +252,13 @@ dependencies: "@babel/types" "^7.18.9" +"@babel/helper-member-expression-to-functions@^7.22.0": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.3.tgz#4b77a12c1b4b8e9e28736ed47d8b91f00976911f" + integrity sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA== + dependencies: + "@babel/types" "^7.22.3" + "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" @@ -160,7 +266,14 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": +"@babel/helper-module-imports@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== + dependencies: + "@babel/types" "^7.21.4" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== @@ -174,6 +287,20 @@ "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.2" +"@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5", "@babel/helper-module-transforms@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz#e0cad47fedcf3cae83c11021696376e2d5a50c63" + integrity sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-module-imports" "^7.21.4" + "@babel/helper-simple-access" "^7.21.5" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.0" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -186,7 +313,12 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": +"@babel/helper-plugin-utils@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" + integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== + +"@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== @@ -207,14 +339,33 @@ "@babel/traverse" "^7.19.1" "@babel/types" "^7.19.0" -"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": +"@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.1.tgz#38cf6e56f7dc614af63a21b45565dd623f0fdc95" + integrity sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-member-expression-to-functions" "^7.22.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.0" + +"@babel/helper-simple-access@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: "@babel/types" "^7.20.2" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": +"@babel/helper-simple-access@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" + integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== + dependencies: + "@babel/types" "^7.21.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== @@ -233,6 +384,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" + integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" @@ -243,6 +399,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== +"@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + "@babel/helper-wrap-function@^7.18.9": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1" @@ -262,6 +423,15 @@ "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.0" +"@babel/helpers@^7.22.0": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.3.tgz#53b74351da9684ea2f694bf0877998da26dd830e" + integrity sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w== + dependencies: + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.3" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -276,6 +446,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== +"@babel/parser@^7.21.9", "@babel/parser@^7.22.0", "@babel/parser@^7.22.4": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.4.tgz#a770e98fd785c231af9d93f6459d36770993fb32" + integrity sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -283,26 +458,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.3.tgz#a75be1365c0c3188c51399a662168c1c98108659" + integrity sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-transform-optional-chaining" "^7.22.3" -"@babel/plugin-proposal-async-generator-functions@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9" - integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -310,92 +475,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d" - integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== - dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.1" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== @@ -403,17 +483,17 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== +"@babel/plugin-proposal-private-property-in-object@^7.21.0": + version "7.21.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" + integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== @@ -470,7 +550,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-attributes@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.3.tgz#d7168f22b9b49a6cc1792cec78e06a18ad2e7b4b" + integrity sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -491,6 +578,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-syntax-jsx@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -547,28 +641,53 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" + integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-syntax-typescript@^7.7.2": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-arrow-functions@^7.18.6": +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== +"@babel/plugin-transform-arrow-functions@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" + integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.3.tgz#3ed99924c354fb9e80dabb2cc8d002c702e94527" + integrity sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA== + dependencies: + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" @@ -577,39 +696,57 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz#f59b1767e6385c663fd0bce655db6ca9c8b236ed" - integrity sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ== +"@babel/plugin-transform-block-scoping@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" + integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-classes@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2" - integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== +"@babel/plugin-transform-class-properties@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.3.tgz#3407145e513830df77f0cef828b8b231c166fe4c" + integrity sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-class-static-block@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.3.tgz#e352cf33567385c731a8f21192efeba760358773" + integrity sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-compilation-targets" "^7.20.7" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" + "@babel/helper-function-name" "^7.21.0" "@babel/helper-optimise-call-expression" "^7.18.6" "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.19.1" + "@babel/helper-replace-supers" "^7.20.7" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== +"@babel/plugin-transform-computed-properties@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" + integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/template" "^7.20.7" -"@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792" - integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== +"@babel/plugin-transform-destructuring@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -628,6 +765,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-dynamic-import@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.1.tgz#6c56afaf896a07026330cf39714532abed8d9ed1" + integrity sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" @@ -636,12 +781,20 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== +"@babel/plugin-transform-export-namespace-from@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.3.tgz#9b8700aa495007d3bebac8358d1c562434b680b9" + integrity sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" + integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" @@ -652,6 +805,14 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-json-strings@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.3.tgz#a181b8679cf7c93e9d0e3baa5b1776d65be601a9" + integrity sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" @@ -659,6 +820,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-logical-assignment-operators@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.3.tgz#9e021455810f33b0baccb82fb759b194f5dc36f0" + integrity sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" @@ -666,31 +835,31 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" - integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== +"@babel/plugin-transform-modules-amd@^7.20.11": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-modules-commonjs@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" - integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== +"@babel/plugin-transform-modules-commonjs@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" + integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ== dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-simple-access" "^7.19.4" + "@babel/helper-module-transforms" "^7.21.5" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-simple-access" "^7.21.5" -"@babel/plugin-transform-modules-systemjs@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" - integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== +"@babel/plugin-transform-modules-systemjs@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.3.tgz#cc507e03e88d87b016feaeb5dae941e6ef50d91e" + integrity sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-module-transforms" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": @@ -701,28 +870,55 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" - integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.3.tgz#db6fb77e6b3b53ec3b8d370246f0b7cf67d35ab4" + integrity sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-create-regexp-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" -"@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== +"@babel/plugin-transform-new-target@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.3.tgz#deb0377d741cbee2f45305868b9026dcd6dd96e2" + integrity sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.21.5" -"@babel/plugin-transform-object-assign@^7.16.0": +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.3.tgz#8c519f8bf5af94a9ca6f65cf422a9d3396e542b9" + integrity sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.3.tgz#02493070ca6685884b0eee705363ee4da2132ab0" + integrity sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-assign@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.18.6.tgz#7830b4b6f83e1374a5afb9f6111bcfaea872cdd2" integrity sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-object-rest-spread@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.3.tgz#da6fba693effb8c203d8c3bdf7bf4e2567e802e9" + integrity sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw== + dependencies: + "@babel/compat-data" "^7.22.3" + "@babel/helper-compilation-targets" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.3" + "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" @@ -731,12 +927,47 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.20.1": - version "7.20.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz#7b3468d70c3c5b62e46be0a47b6045d8590fb748" - integrity sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA== +"@babel/plugin-transform-optional-catch-binding@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.3.tgz#e971a083fc7d209d9cd18253853af1db6d8dc42f" + integrity sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.3.tgz#5fd24a4a7843b76da6aeec23c7f551da5d365290" + integrity sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.3.tgz#24477acfd2fd2bc901df906c9bf17fbcfeee900d" + integrity sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-private-methods@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.3.tgz#adac38020bab5047482d3297107c1f58e9c574f6" + integrity sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.3.tgz#031621b02c7b7d95389de1a3dba2fe9e8c548e56" + integrity sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" @@ -759,7 +990,7 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" -"@babel/plugin-transform-react-jsx@^7.16.0", "@babel/plugin-transform-react-jsx@^7.18.6": +"@babel/plugin-transform-react-jsx@^7.18.6": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== @@ -770,6 +1001,17 @@ "@babel/plugin-syntax-jsx" "^7.18.6" "@babel/types" "^7.19.0" +"@babel/plugin-transform-react-jsx@^7.19.0", "@babel/plugin-transform-react-jsx@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.3.tgz#5a1f380df3703ba92eb1a930a539c6d88836f690" + integrity sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.21.4" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-jsx" "^7.21.4" + "@babel/types" "^7.22.3" + "@babel/plugin-transform-react-pure-annotations@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" @@ -778,13 +1020,13 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== +"@babel/plugin-transform-regenerator@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" + integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" + "@babel/helper-plugin-utils" "^7.21.5" + regenerator-transform "^0.15.1" "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" @@ -793,16 +1035,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.16.0": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" - integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== +"@babel/plugin-transform-runtime@^7.19.6": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.4.tgz#f8353f313f18c3ce1315688631ec48657b97af42" + integrity sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA== dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" + "@babel/helper-module-imports" "^7.21.4" + "@babel/helper-plugin-utils" "^7.21.5" + babel-plugin-polyfill-corejs2 "^0.4.3" + babel-plugin-polyfill-corejs3 "^0.8.1" + babel-plugin-polyfill-regenerator "^0.5.0" semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.18.6": @@ -812,13 +1054,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" - integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== +"@babel/plugin-transform-spread@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" @@ -841,21 +1083,30 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typescript@^7.18.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz#91515527b376fc122ba83b13d70b01af8fe98f3f" - integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag== +"@babel/plugin-transform-typescript@^7.21.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.3.tgz#8f662cec8ba88c873f1c7663c0c94e3f68592f09" + integrity sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.20.2" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-typescript" "^7.20.0" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-typescript" "^7.21.4" -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== +"@babel/plugin-transform-unicode-escapes@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" + integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.3.tgz#597b6a614dc93eaae605ee293e674d79d32eb380" + integrity sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" @@ -865,38 +1116,34 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.16.0": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" - integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== +"@babel/plugin-transform-unicode-sets-regex@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.3.tgz#7c14ee33fa69782b0101d0f7143d3fc73ce00700" + integrity sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw== dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.18.6" + "@babel/helper-create-regexp-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/preset-env@^7.20.2": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.4.tgz#c86a82630f0e8c61d9bb9327b7b896732028cbed" + integrity sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ== + dependencies: + "@babel/compat-data" "^7.22.3" + "@babel/helper-compilation-targets" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-validator-option" "^7.21.0" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.20.1" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.3" + "@babel/plugin-proposal-private-property-in-object" "^7.21.0" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-import-attributes" "^7.22.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -906,44 +1153,61 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.21.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.3" + "@babel/plugin-transform-async-to-generator" "^7.20.7" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.20.2" - "@babel/plugin-transform-classes" "^7.20.2" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-block-scoping" "^7.21.0" + "@babel/plugin-transform-class-properties" "^7.22.3" + "@babel/plugin-transform-class-static-block" "^7.22.3" + "@babel/plugin-transform-classes" "^7.21.0" + "@babel/plugin-transform-computed-properties" "^7.21.5" + "@babel/plugin-transform-destructuring" "^7.21.3" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-dynamic-import" "^7.22.1" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-export-namespace-from" "^7.22.3" + "@babel/plugin-transform-for-of" "^7.21.5" "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-json-strings" "^7.22.3" "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.3" "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.19.6" - "@babel/plugin-transform-modules-commonjs" "^7.19.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-amd" "^7.20.11" + "@babel/plugin-transform-modules-commonjs" "^7.21.5" + "@babel/plugin-transform-modules-systemjs" "^7.22.3" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" - "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.3" + "@babel/plugin-transform-new-target" "^7.22.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.3" + "@babel/plugin-transform-numeric-separator" "^7.22.3" + "@babel/plugin-transform-object-rest-spread" "^7.22.3" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-optional-catch-binding" "^7.22.3" + "@babel/plugin-transform-optional-chaining" "^7.22.3" + "@babel/plugin-transform-parameters" "^7.22.3" + "@babel/plugin-transform-private-methods" "^7.22.3" + "@babel/plugin-transform-private-property-in-object" "^7.22.3" "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.21.5" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-spread" "^7.20.7" "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-escapes" "^7.21.5" + "@babel/plugin-transform-unicode-property-regex" "^7.22.3" "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.3" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.20.2" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" + "@babel/types" "^7.22.4" + babel-plugin-polyfill-corejs2 "^0.4.3" + babel-plugin-polyfill-corejs3 "^0.8.1" + babel-plugin-polyfill-regenerator "^0.5.0" + core-js-compat "^3.30.2" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -957,34 +1221,48 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" - integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== +"@babel/preset-react@^7.18.6": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.3.tgz#2ec7f91d0c924fa2ea0c7cfbbf690bc62b79cd84" + integrity sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-validator-option" "^7.21.0" "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.22.3" "@babel/plugin-transform-react-jsx-development" "^7.18.6" "@babel/plugin-transform-react-pure-annotations" "^7.18.6" -"@babel/preset-typescript@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" - integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== +"@babel/preset-typescript@^7.18.6": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.5.tgz#68292c884b0e26070b4d66b202072d391358395f" + integrity sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-syntax-jsx" "^7.21.4" + "@babel/plugin-transform-modules-commonjs" "^7.21.5" + "@babel/plugin-transform-typescript" "^7.21.3" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.16.0", "@babel/runtime@^7.8.4": +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4": version "7.20.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== dependencies: regenerator-runtime "^0.13.10" +"@babel/runtime@^7.20.1": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.3.tgz#0a7fce51d43adbf0f7b517a71f4c3aaca92ebcbb" + integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" @@ -994,6 +1272,15 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" +"@babel/template@^7.20.7", "@babel/template@^7.21.9": + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" + integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/parser" "^7.21.9" + "@babel/types" "^7.21.5" + "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.7.2": version "7.20.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" @@ -1010,6 +1297,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.22.1": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.4.tgz#c3cf96c5c290bd13b55e29d025274057727664c0" + integrity sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.22.3" + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.22.4" + "@babel/types" "^7.22.4" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" @@ -1019,6 +1322,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.22.0", "@babel/types@^7.22.3", "@babel/types@^7.22.4": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.4.tgz#56a2653ae7e7591365dabf20b76295410684c071" + integrity sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA== + dependencies: + "@babel/helper-string-parser" "^7.21.5" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1029,7 +1341,7 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@discoveryjs/json-ext@^0.5.0": +"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== @@ -1070,6 +1382,18 @@ jest-util "^29.3.1" slash "^3.0.0" +"@jest/console@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" + integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + "@jest/core@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.3.1.tgz#bff00f413ff0128f4debec1099ba7dcd649774a1" @@ -1104,6 +1428,40 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/core@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" + integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/reporters" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.5.0" + jest-config "^29.5.0" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-resolve-dependencies "^29.5.0" + jest-runner "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + jest-watcher "^29.5.0" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + "@jest/environment@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.3.1.tgz#eb039f726d5fcd14698acd072ac6576d41cfcaa6" @@ -1114,6 +1472,16 @@ "@types/node" "*" jest-mock "^29.3.1" +"@jest/environment@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" + integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== + dependencies: + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + "@jest/expect-utils@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6" @@ -1121,6 +1489,13 @@ dependencies: jest-get-type "^29.2.0" +"@jest/expect-utils@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== + dependencies: + jest-get-type "^29.4.3" + "@jest/expect@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.3.1.tgz#456385b62894349c1d196f2d183e3716d4c6a6cd" @@ -1129,6 +1504,14 @@ expect "^29.3.1" jest-snapshot "^29.3.1" +"@jest/expect@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" + integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== + dependencies: + expect "^29.5.0" + jest-snapshot "^29.5.0" + "@jest/fake-timers@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.3.1.tgz#b140625095b60a44de820876d4c14da1aa963f67" @@ -1141,6 +1524,18 @@ jest-mock "^29.3.1" jest-util "^29.3.1" +"@jest/fake-timers@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" + integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== + dependencies: + "@jest/types" "^29.5.0" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-util "^29.5.0" + "@jest/globals@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.3.1.tgz#92be078228e82d629df40c3656d45328f134a0c6" @@ -1151,6 +1546,16 @@ "@jest/types" "^29.3.1" jest-mock "^29.3.1" +"@jest/globals@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" + integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/types" "^29.5.0" + jest-mock "^29.5.0" + "@jest/reporters@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.3.1.tgz#9a6d78c109608e677c25ddb34f907b90e07b4310" @@ -1181,6 +1586,36 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" +"@jest/reporters@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" + integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + jest-worker "^29.5.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + "@jest/schemas@^29.0.0": version "29.0.0" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" @@ -1188,6 +1623,13 @@ dependencies: "@sinclair/typebox" "^0.24.1" +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + "@jest/source-map@^29.2.0": version "29.2.0" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" @@ -1197,6 +1639,15 @@ callsites "^3.0.0" graceful-fs "^4.2.9" +"@jest/source-map@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" + integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" + callsites "^3.0.0" + graceful-fs "^4.2.9" + "@jest/test-result@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.3.1.tgz#92cd5099aa94be947560a24610aa76606de78f50" @@ -1207,6 +1658,16 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" +"@jest/test-result@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" + integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + "@jest/test-sequencer@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz#fa24b3b050f7a59d48f7ef9e0b782ab65123090d" @@ -1217,6 +1678,16 @@ jest-haste-map "^29.3.1" slash "^3.0.0" +"@jest/test-sequencer@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" + integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== + dependencies: + "@jest/test-result" "^29.5.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + slash "^3.0.0" + "@jest/transform@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.3.1.tgz#1e6bd3da4af50b5c82a539b7b1f3770568d6e36d" @@ -1238,6 +1709,27 @@ slash "^3.0.0" write-file-atomic "^4.0.1" +"@jest/transform@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" + integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + "@jest/types@^29.3.1": version "29.3.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.3.1.tgz#7c5a80777cb13e703aeec6788d044150341147e3" @@ -1250,6 +1742,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -1298,6 +1802,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1337,6 +1849,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + "@sinonjs/commons@^1.7.0": version "1.8.5" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.5.tgz#e280c94c95f206dcfd5aca00a43f2156b758c764" @@ -1344,6 +1861,20 @@ dependencies: type-detect "4.0.8" +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" @@ -1487,11 +2018,16 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.8": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.9": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + "@types/mithril@^2.0.11", "@types/mithril@^2.0.7", "@types/mithril@^2.0.8": version "2.0.11" resolved "https://registry.yarnpkg.com/@types/mithril/-/mithril-2.0.11.tgz#090fb16e5ffcc616f7f409a2b3d50a90427f8b97" @@ -1778,12 +2314,26 @@ agent-base@6: dependencies: debug "4" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.12.4, ajv@^6.12.5: +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1793,6 +2343,16 @@ ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1869,15 +2429,26 @@ babel-jest@^29.3.1: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^8.2.3: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== +babel-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" + integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" + "@jest/transform" "^29.5.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.5.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@^9.1.0: + version "9.1.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.2.tgz#a16a080de52d08854ee14570469905a5fc00d39c" + integrity sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA== + dependencies: + find-cache-dir "^3.3.2" + schema-utils "^4.0.0" babel-plugin-istanbul@^6.1.1: version "6.1.1" @@ -1900,29 +2471,39 @@ babel-plugin-jest-hoist@^29.2.0: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== +babel-plugin-jest-hoist@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" + integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-polyfill-corejs2@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz#75044d90ba5043a5fb559ac98496f62f3eb668fd" + integrity sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw== dependencies: "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" + "@babel/helper-define-polyfill-provider" "^0.4.0" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== +babel-plugin-polyfill-corejs3@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz#39248263c38191f0d226f928d666e6db1b4b3a8a" + integrity sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" + "@babel/helper-define-polyfill-provider" "^0.4.0" + core-js-compat "^3.30.1" -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== +babel-plugin-polyfill-regenerator@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz#e7344d88d9ef18a3c47ded99362ae4a757609380" + integrity sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" + "@babel/helper-define-polyfill-provider" "^0.4.0" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" @@ -1950,6 +2531,14 @@ babel-preset-jest@^29.2.0: babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" +babel-preset-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" + integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== + dependencies: + babel-plugin-jest-hoist "^29.5.0" + babel-preset-current-node-syntax "^1.0.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1992,7 +2581,7 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4: +browserslist@^4.14.5, browserslist@^4.21.3: version "4.21.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -2002,6 +2591,16 @@ browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4: node-releases "^2.0.6" update-browserslist-db "^1.0.9" +browserslist@^4.21.5: + version "4.21.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.7.tgz#e2b420947e5fb0a58e8f4668ae6e23488127e551" + integrity sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA== + dependencies: + caniuse-lite "^1.0.30001489" + electron-to-chromium "^1.4.411" + node-releases "^2.0.12" + update-browserslist-db "^1.0.11" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -2070,6 +2669,11 @@ caniuse-lite@^1.0.30001400: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795" integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== +caniuse-lite@^1.0.30001489: + version "1.0.30001495" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz#64a0ccef1911a9dcff647115b4430f8eff1ef2d9" + integrity sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg== + chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2240,12 +2844,12 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.25.1: - version "3.26.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.0.tgz#94e2cf8ba3e63800c4956ea298a6473bc9d62b44" - integrity sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A== +core-js-compat@^3.30.1, core-js-compat@^3.30.2: + version "3.30.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.2.tgz#83f136e375babdb8c80ad3c22d67c69098c1dd8b" + integrity sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA== dependencies: - browserslist "^4.21.4" + browserslist "^4.21.5" cosmiconfig@^7.0.1: version "7.0.1" @@ -2367,6 +2971,11 @@ diff-sequences@^29.3.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + domexception@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" @@ -2389,6 +2998,11 @@ electron-to-chromium@^1.4.251: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== +electron-to-chromium@^1.4.411: + version "1.4.423" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.423.tgz#99567f3a0563fe0d1d0931e9ce851bca239f6658" + integrity sha512-y4A7YfQcDGPAeSWM1IuoWzXpg9RY1nwHzHSwRtCSQFp9FgAVDgdWlFf0RbdWfLWQ2WUI+bddUgk5RgTjqRE6FQ== + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -2542,12 +3156,23 @@ expect@^29.0.0, expect@^29.3.1: jest-message-util "^29.3.1" jest-util "^29.3.1" +expect@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== + dependencies: + "@jest/expect-utils" "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + expose-loader@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/expose-loader/-/expose-loader-3.1.0.tgz#7a0bdecb345b921ca238a8c4715a4ea7e227213f" integrity sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA== -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -2599,7 +3224,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^3.3.1: +find-cache-dir@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -2656,6 +3281,11 @@ fs-extra@^8.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-monkey@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" + integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3016,6 +3646,14 @@ jest-changed-files@^29.2.0: execa "^5.0.0" p-limit "^3.1.0" +jest-changed-files@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" + integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + jest-circus@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.3.1.tgz#177d07c5c0beae8ef2937a67de68f1e17bbf1b4a" @@ -3041,6 +3679,32 @@ jest-circus@^29.3.1: slash "^3.0.0" stack-utils "^2.0.3" +jest-circus@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" + integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.5.0" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + p-limit "^3.1.0" + pretty-format "^29.5.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-cli@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.3.1.tgz#e89dff427db3b1df50cea9a393ebd8640790416d" @@ -3059,6 +3723,24 @@ jest-cli@^29.3.1: prompts "^2.0.1" yargs "^17.3.1" +jest-cli@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" + integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== + dependencies: + "@jest/core" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + prompts "^2.0.1" + yargs "^17.3.1" + jest-config@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.3.1.tgz#0bc3dcb0959ff8662957f1259947aedaefb7f3c6" @@ -3087,6 +3769,34 @@ jest-config@^29.3.1: slash "^3.0.0" strip-json-comments "^3.1.1" +jest-config@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" + integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.5.0" + "@jest/types" "^29.5.0" + babel-jest "^29.5.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.5.0" + jest-environment-node "^29.5.0" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-runner "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + jest-diff@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" @@ -3097,6 +3807,16 @@ jest-diff@^29.3.1: jest-get-type "^29.2.0" pretty-format "^29.3.1" +jest-diff@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + jest-docblock@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" @@ -3104,6 +3824,13 @@ jest-docblock@^29.2.0: dependencies: detect-newline "^3.0.0" +jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== + dependencies: + detect-newline "^3.0.0" + jest-each@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.3.1.tgz#bc375c8734f1bb96625d83d1ca03ef508379e132" @@ -3115,6 +3842,17 @@ jest-each@^29.3.1: jest-util "^29.3.1" pretty-format "^29.3.1" +jest-each@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" + integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== + dependencies: + "@jest/types" "^29.5.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + jest-util "^29.5.0" + pretty-format "^29.5.0" + jest-environment-jsdom@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.3.1.tgz#14ca63c3e0ef5c63c5bcb46033e50bc649e3b639" @@ -3141,11 +3879,28 @@ jest-environment-node@^29.3.1: jest-mock "^29.3.1" jest-util "^29.3.1" +jest-environment-node@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" + integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + jest-util "^29.5.0" + jest-get-type@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + jest-haste-map@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.3.1.tgz#af83b4347f1dae5ee8c2fb57368dc0bb3e5af843" @@ -3165,6 +3920,25 @@ jest-haste-map@^29.3.1: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" + integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== + dependencies: + "@jest/types" "^29.5.0" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + jest-worker "^29.5.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-leak-detector@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz#95336d020170671db0ee166b75cd8ef647265518" @@ -3173,6 +3947,14 @@ jest-leak-detector@^29.3.1: jest-get-type "^29.2.0" pretty-format "^29.3.1" +jest-leak-detector@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" + integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== + dependencies: + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + jest-matcher-utils@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" @@ -3183,6 +3965,16 @@ jest-matcher-utils@^29.3.1: jest-get-type "^29.2.0" pretty-format "^29.3.1" +jest-matcher-utils@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== + dependencies: + chalk "^4.0.0" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + jest-message-util@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb" @@ -3198,6 +3990,21 @@ jest-message-util@^29.3.1: slash "^3.0.0" stack-utils "^2.0.3" +jest-message-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.5.0" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.3.1.tgz#60287d92e5010979d01f218c6b215b688e0f313e" @@ -3207,6 +4014,15 @@ jest-mock@^29.3.1: "@types/node" "*" jest-util "^29.3.1" +jest-mock@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" + integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-util "^29.5.0" + jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" @@ -3217,6 +4033,11 @@ jest-regex-util@^29.2.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== +jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== + jest-resolve-dependencies@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz#a6a329708a128e68d67c49f38678a4a4a914c3bf" @@ -3225,6 +4046,14 @@ jest-resolve-dependencies@^29.3.1: jest-regex-util "^29.2.0" jest-snapshot "^29.3.1" +jest-resolve-dependencies@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" + integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== + dependencies: + jest-regex-util "^29.4.3" + jest-snapshot "^29.5.0" + jest-resolve@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.3.1.tgz#9a4b6b65387a3141e4a40815535c7f196f1a68a7" @@ -3240,6 +4069,21 @@ jest-resolve@^29.3.1: resolve.exports "^1.1.0" slash "^3.0.0" +jest-resolve@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" + integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.5.0" + jest-validate "^29.5.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + jest-runner@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.3.1.tgz#a92a879a47dd096fea46bb1517b0a99418ee9e2d" @@ -3267,6 +4111,33 @@ jest-runner@^29.3.1: p-limit "^3.1.0" source-map-support "0.5.13" +jest-runner@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" + integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/environment" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.4.3" + jest-environment-node "^29.5.0" + jest-haste-map "^29.5.0" + jest-leak-detector "^29.5.0" + jest-message-util "^29.5.0" + jest-resolve "^29.5.0" + jest-runtime "^29.5.0" + jest-util "^29.5.0" + jest-watcher "^29.5.0" + jest-worker "^29.5.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + jest-runtime@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.3.1.tgz#21efccb1a66911d6d8591276a6182f520b86737a" @@ -3295,6 +4166,34 @@ jest-runtime@^29.3.1: slash "^3.0.0" strip-bom "^4.0.0" +jest-runtime@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" + integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/globals" "^29.5.0" + "@jest/source-map" "^29.4.3" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + strip-bom "^4.0.0" + jest-snapshot@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.3.1.tgz#17bcef71a453adc059a18a32ccbd594b8cc4e45e" @@ -3325,6 +4224,35 @@ jest-snapshot@^29.3.1: pretty-format "^29.3.1" semver "^7.3.5" +jest-snapshot@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" + integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.5.0" + graceful-fs "^4.2.9" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + natural-compare "^1.4.0" + pretty-format "^29.5.0" + semver "^7.3.5" + jest-util@^29.0.0, jest-util@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" @@ -3337,6 +4265,18 @@ jest-util@^29.0.0, jest-util@^29.3.1: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.3.1.tgz#d56fefaa2e7d1fde3ecdc973c7f7f8f25eea704a" @@ -3349,6 +4289,18 @@ jest-validate@^29.3.1: leven "^3.1.0" pretty-format "^29.3.1" +jest-validate@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" + integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== + dependencies: + "@jest/types" "^29.5.0" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + leven "^3.1.0" + pretty-format "^29.5.0" + jest-watcher@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.3.1.tgz#3341547e14fe3c0f79f9c3a4c62dbc3fc977fd4a" @@ -3363,6 +4315,20 @@ jest-watcher@^29.3.1: jest-util "^29.3.1" string-length "^4.0.1" +jest-watcher@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" + integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== + dependencies: + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.5.0" + string-length "^4.0.1" + jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -3382,6 +4348,16 @@ jest-worker@^29.3.1: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" + integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== + dependencies: + "@types/node" "*" + jest-util "^29.5.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest/-/jest-29.3.1.tgz#c130c0d551ae6b5459b8963747fed392ddbde122" @@ -3392,6 +4368,16 @@ jest@^29.3.1: import-local "^3.0.2" jest-cli "^29.3.1" +jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" + integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== + dependencies: + "@jest/core" "^29.5.0" + "@jest/types" "^29.5.0" + import-local "^3.0.2" + jest-cli "^29.5.0" + jquery.hotkeys@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/jquery.hotkeys/-/jquery.hotkeys-0.1.0.tgz#a88f636494fe75de41e4b753a059e5a523b83273" @@ -3474,7 +4460,19 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json5@^2.1.2, json5@^2.2.1: +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.2.1, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -3538,14 +4536,14 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== +loader-utils@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" - json5 "^2.1.2" + json5 "^1.0.1" locate-path@^5.0.0: version "5.0.0" @@ -3581,6 +4579,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -3588,7 +4593,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -3607,6 +4612,13 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" +memfs@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.5.3.tgz#d9b40fe4f8d5788c5f895bda804cd0d9eeee9f3b" + integrity sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw== + dependencies: + fs-monkey "^1.0.4" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -3656,6 +4668,11 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" +minimist@^1.2.0: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + mithril-query@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/mithril-query/-/mithril-query-4.0.1.tgz#1ba606bf96ec70aefb341e602dd4702c215be141" @@ -3707,6 +4724,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-releases@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" + integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== + node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -3912,6 +4934,11 @@ prettier@^2.4.1, prettier@^2.5.1, prettier@^2.7.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@^2.8.0: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + pretty-bytes@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.0.0.tgz#928be2ad1f51a2e336add8ba764739f9776a8140" @@ -3926,6 +4953,15 @@ pretty-format@^29.0.0, pretty-format@^29.3.1: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + pretty-html-log@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pretty-html-log/-/pretty-html-log-1.1.1.tgz#3d234af1f8e2bdc9c6af0f364de2ccb03ca60d6a" @@ -3962,6 +4998,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pure-rand@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" + integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== + pusher-js@*: version "7.4.0" resolved "https://registry.yarnpkg.com/pusher-js/-/pusher-js-7.4.0.tgz#45205ecc159708af3021f41b15b07b390899124b" @@ -4072,10 +5113,15 @@ regenerator-runtime@^0.13.10: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" @@ -4100,6 +5146,18 @@ regexpu-core@^5.1.0: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + regjsgen@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" @@ -4117,6 +5175,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -4144,6 +5207,11 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" @@ -4197,13 +5265,13 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== +schema-utils@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" + integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" ajv-keywords "^3.5.2" schema-utils@^3.1.0, schema-utils@^3.1.1: @@ -4215,6 +5283,16 @@ schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.1.tgz#eb2d042df8b01f4b5c276a2dfd41ba0faab72e8d" + integrity sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + semantic-ui-react@^0.88.2: version "0.88.2" resolved "https://registry.yarnpkg.com/semantic-ui-react/-/semantic-ui-react-0.88.2.tgz#3d4b54f8b799769b412435c8531475fd34aa4149" @@ -4646,11 +5724,16 @@ typescript-coverage-report@^0.6.1, typescript-coverage-report@^0.6.4: semantic-ui-react "^0.88.2" type-coverage-core "^2.17.2" -typescript@^4.4.4, typescript@^4.5.4, typescript@^4.7.4: +typescript@^4.5.4, typescript@^4.7.4: version "4.8.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +typescript@^4.9.3: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -4669,6 +5752,11 @@ unicode-match-property-value-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" @@ -4684,6 +5772,14 @@ universalify@^0.2.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-browserslist-db@^1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" @@ -4758,11 +5854,12 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-bundle-analyzer@^4.5.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz#33c1c485a7fcae8627c547b5c3328b46de733c66" - integrity sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg== +webpack-bundle-analyzer@^4.7.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz#fc093c4ab174fd3dcbd1c30b763f56d10141209d" + integrity sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw== dependencies: + "@discoveryjs/json-ext" "0.5.7" acorn "^8.0.4" acorn-walk "^8.0.0" chalk "^4.1.0" @@ -4885,7 +5982,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^4.0.1: +write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== @@ -4918,6 +6015,11 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"