From 67e7f0dd8dcbe975cae344cae82e377a5cda940f Mon Sep 17 00:00:00 2001 From: Artsiom Kharuzhenka Date: Mon, 3 Feb 2025 20:08:38 +0200 Subject: [PATCH] Revert "Merge dynamic deps main (#4343)" This reverts commit 5bc06a9e9dc9617ef4672d755cf5e47efed74716. --- .github/CODEOWNERS | 6 +- .github/workflows/aws-upload-dev.yml | 13 - .../workflows/nightly-virustotal-analyze.yml | 139 - .github/workflows/pipeline-build-linux.yml | 7 - .github/workflows/tests-e2e-docker.yml | 4 +- .github/workflows/tests.yml | 11 +- .gitignore | 1 - electron-builder.json | 83 +- package.json | 5 +- redisinsight/api/src/main.ts | 7 +- .../browser/keys/dto/get.keys-info.dto.ts | 28 +- .../strategies/hash.key-info.strategy.spec.ts | 158 +- .../strategies/hash.key-info.strategy.ts | 32 +- .../key-info/strategies/key-info.strategy.ts | 1 - .../strategies/list.key-info.strategy.spec.ts | 159 +- .../strategies/list.key-info.strategy.ts | 30 +- .../rejson-rl.key-info.strategy.spec.ts | 392 +- .../strategies/rejson-rl.key-info.strategy.ts | 32 +- .../strategies/set.key-info.strategy.spec.ts | 159 +- .../strategies/set.key-info.strategy.ts | 31 +- .../stream.key-info.strategy.spec.ts | 159 +- .../strategies/stream.key-info.strategy.ts | 31 +- .../z-set.key-info.strategy.spec.ts | 159 +- .../strategies/z-set.key-info.strategy.ts | 31 +- .../modules/browser/keys/keys.controller.ts | 16 +- .../src/modules/browser/keys/keys.service.ts | 9 +- .../browser/keys/scanner/scanner.interface.ts | 2 +- .../strategies/cluster.scanner.strategy.ts | 44 +- .../scanner/strategies/scanner.strategy.ts | 2 - .../standalone.scanner.strategy.spec.ts | 118 +- .../strategies/standalone.scanner.strategy.ts | 25 +- .../browser/rejson-rl/rejson-rl.service.ts | 18 +- .../src/modules/browser/set/set.service.ts | 2 +- .../cluster-monitor.controller.ts | 2 +- .../strategies/feature.flag.strategy.ts | 5 - .../api/src/modules/rdi/rdi.service.spec.ts | 57 +- .../api/src/modules/rdi/rdi.service.ts | 15 +- .../feature-version-filter.helper.spec.ts | 65 - .../utils/feature-version-filter.helper.ts | 22 - redisinsight/api/test/README.md | 81 - .../POST-databases-id-keys-get_info.test.ts | 10 +- .../POST-databases-id-keys-get_infos.test.ts | 52 +- .../api/keys/POST-databases-id-keys.test.ts | 10 +- .../api/test/api/rdi/POST-rdi.test.ts | 3 - .../POST-databases-id-redisearch-info.test.ts | 105 +- redisinsight/api/test/helpers/data/redis.ts | 68 +- .../desktop/src/lib/window/browserWindow.ts | 2 +- redisinsight/ui/index.html | 47 +- redisinsight/ui/package.json | 2 +- redisinsight/ui/src/App.tsx | 29 +- .../ui/src/assets/img/icons/columns.svg | 3 - .../ui/src/assets/img/redis-software.svg | 3 - redisinsight/ui/src/assets/img/shield.svg | 3 - .../MonacoEnvironmentInitializer.tsx | 4 + .../ui/src/components/init/AppInit.tsx | 2 - .../InstancesNavigationPopover.tsx | 1 - .../instances-list/InstancesList.tsx | 21 +- .../styles.module.scss | 20 +- .../components/monaco-js/MonacoJS.spec.tsx | 10 + .../components/monaco-js/MonacoJS.tsx | 25 + .../components/monaco-js/index.ts | 3 + .../ui/src/components/monaco-editor/index.ts | 2 + .../navigation-menu/NavigationMenu.tsx | 2 +- .../query/query-card/QueryCard.spec.tsx | 18 - .../components/query/query-card/QueryCard.tsx | 2 +- redisinsight/ui/src/constants/browser.ts | 7 - redisinsight/ui/src/constants/keys.ts | 2 +- redisinsight/ui/src/constants/storage.ts | 1 - .../ui/src/packages/clients-list/.parcelrc | 8 + .../ui/src/packages/clients-list/index.html | 20 - .../ui/src/packages/clients-list/package.json | 33 +- .../assets}/json_view_icon_dark.svg | 1 + .../assets}/json_view_icon_light.svg | 1 + .../assets}/table_view_icon_dark.svg | 0 .../assets}/table_view_icon_light.svg | 0 .../src/packages/clients-list/src/global.d.ts | 1 - .../src/packages/clients-list/src/index.html | 17 + .../ui/src/packages/clients-list/src/main.tsx | 1 - .../clients-list/src/utils/cachedIcons.ts | 11 +- .../clients-list/src/utils/parseResponse.ts | 2 +- .../ui/src/packages/clients-list/yarn.lock | 2588 ++++++++-- .../ui/src/packages/common/package.json | 16 - redisinsight/ui/src/packages/package.json | 32 - .../ui/src/packages/redisearch/.parcelrc | 8 + .../ui/src/packages/redisearch/index.html | 20 - .../ui/src/packages/redisearch/package.json | 32 +- .../assets}/table_view_icon_dark.svg | 0 .../assets}/table_view_icon_light.svg | 0 .../src/components/GroupBadge/GroupBadge.tsx | 4 +- .../TableInfoResult/TableInfoResult.tsx | 4 +- .../components/TableResult/TableResult.tsx | 9 +- .../src/packages/redisearch/src/global.d.ts | 1 - .../redisearch/src/icons/arrow_down.jsx | 36 + .../redisearch/src/icons/arrow_left.jsx | 35 + .../redisearch/src/icons/arrow_right.jsx | 42 + .../packages/redisearch/src/icons/check.jsx | 35 + .../packages/redisearch/src/icons/copy.jsx | 36 + .../packages/redisearch/src/icons/cross.jsx | 34 + .../packages/redisearch/src/icons/empty.jsx | 30 + .../ui/src/packages/redisearch/src/index.html | 18 + .../ui/src/packages/redisearch/src/main.tsx | 1 - .../redisearch/src/styles/styles.scss | 6 - .../redisearch/src/utils/cachedIcons.ts | 23 +- .../ui/src/packages/redisearch/yarn.lock | 2288 +++++++-- .../ui/src/packages/redisgraph/.parcelrc | 8 + .../ui/src/packages/redisgraph/index.html | 20 - .../ui/src/packages/redisgraph/package.json | 28 +- .../src/packages/redisgraph/src/global.d.ts | 1 - .../ui/src/packages/redisgraph/src/graphd3.ts | 2 +- .../redisgraph/src/icons/arrow_down.js | 35 + .../redisgraph/src/icons/arrow_left.js | 35 + .../redisgraph/src/icons/arrow_right.js | 40 + .../packages/redisgraph/src/icons/check.js | 35 + .../src/packages/redisgraph/src/icons/copy.js | 36 + .../packages/redisgraph/src/icons/cross.js | 34 + .../packages/redisgraph/src/icons/empty.js | 29 + .../ui/src/packages/redisgraph/src/index.html | 18 + .../ui/src/packages/redisgraph/src/main.tsx | 1 - .../redisgraph/src/mockData/resultGraph.json | 66 - .../redisgraph/src/styles/_dark_theme.less | 3 + .../redisgraph/src/styles/_light_theme.less | 3 + .../src/styles/{styles.scss => styles.less} | 2 + .../ui/src/packages/redisgraph/yarn.lock | 2576 ++++++++-- .../packages/redistimeseries-app/.parcelrc | 8 + .../packages/redistimeseries-app/global.d.ts | 1 - .../packages/redistimeseries-app/index.html | 20 - .../mockData/resultTimeSeries.json | 23 - .../packages/redistimeseries-app/package.json | 32 +- .../redistimeseries-app/src/index.html | 18 + .../packages/redistimeseries-app/src/main.tsx | 7 +- .../src/styles/_dark_theme.less | 3 + .../src/styles/_light_theme.less | 3 + .../src/styles/{styles.scss => styles.less} | 32 +- .../packages/redistimeseries-app/yarn.lock | 4571 +++++++++++++++-- .../ui/src/packages/ri-explain/.parcelrc | 8 + .../ui/src/packages/ri-explain/index.html | 20 - .../ui/src/packages/ri-explain/package.json | 21 +- .../src/packages/ri-explain/src/Explain.tsx | 226 +- .../assets}/profile_icon_dark.svg | 0 .../assets}/profile_icon_light.svg | 0 .../src/packages/ri-explain/src/global.d.ts | 1 - .../ui/src/packages/ri-explain/src/index.html | 18 + .../ui/src/packages/ri-explain/src/main.tsx | 25 +- .../ui/src/packages/ri-explain/src/parser.ts | 320 +- .../src/styles/{styles.scss => styles.less} | 2 + .../ri-explain/test-data/result-explain.json | 12 - .../result-profile_r7--aggregate.json | 59 - .../test-data/result-profile_r7.json | 75 - .../test-data/result-profile_r8.json | 73 - .../ui/src/packages/ri-explain/yarn.lock | 2185 ++++++-- redisinsight/ui/src/packages/vite.config.mjs | 97 - redisinsight/ui/src/packages/yarn.lock | 3093 ----------- .../ui/src/pages/browser/BrowserPage.test.tsx | 45 - .../ui/src/pages/browser/BrowserPage.tsx | 5 +- .../BrowserSearchPanel.tsx | 2 +- .../DeleteKeyPopover.spec.tsx | 84 - .../delete-key-popover/DeleteKeyPopover.tsx | 69 - .../filter-key-type/FilterKeyType.spec.tsx | 12 +- .../filter-key-type/FilterKeyType.tsx | 14 +- .../components/filter-key-type/constants.ts | 4 +- .../components/key-list/KeyList.spec.tsx | 119 +- .../browser/components/key-list/KeyList.tsx | 151 +- .../components/key-list/styles.module.scss | 23 +- .../components/key-row-size/KeyRowSize.tsx | 60 +- .../KeyTreeSettings/KeyTreeSettings.tsx | 4 +- .../keys-header/KeysHeader.spec.tsx | 60 +- .../components/keys-header/KeysHeader.tsx | 100 +- .../components/keys-header/styles.module.scss | 21 +- .../components/virtual-tree/VirtualTree.tsx | 7 +- .../components/Node/Node.spec.tsx | 136 +- .../virtual-tree/components/Node/Node.tsx | 57 +- .../KeyDetailsHeaderSizeLength.spec.tsx | 49 +- .../KeyDetailsHeaderSizeLength.tsx | 19 +- .../UnsupportedTypeDetails.tsx | 12 +- .../connection-url/ConnectionUrl.spec.tsx | 21 - .../connection-url/ConnectionUrl.tsx | 46 - .../connection-url/styles.module.scss | 8 - .../connectivity-options/styles.module.scss | 73 - .../add-database-screen/constants.tsx | 31 - .../components/add-database-screen/index.ts | 3 - .../CloudConnectionForm.tsx | 2 +- .../ClusterConnectionForm.tsx | 2 +- .../ConnectionUrl.spec.tsx} | 16 +- .../ConnectionUrl.tsx} | 50 +- .../ConnectivityOptions.spec.tsx | 0 .../ConnectivityOptions.tsx | 33 +- .../components/connectivity-options/index.ts | 0 .../connectivity-options/styles.module.scss | 30 + .../components/connection-url/constants.ts | 23 + .../components => }/connection-url/index.ts | 0 .../styles.module.scss | 0 .../database-alias/DatabaseAlias.tsx | 2 +- .../DatabasePanelDialog.tsx | 4 +- .../database-panel-dialog/styles.module.scss | 3 +- .../ManualConnectionForm.tsx | 285 +- .../ManualConnectionFrom.spec.tsx | 40 +- .../components/CloneConnection.tsx | 2 +- .../manual-connection-form/constants.ts | 11 - .../forms/AddConnection.tsx | 77 - .../forms/EditConnection.tsx | 94 - .../forms/EditSentinelConnection.tsx | 128 - .../manual-connection-form/forms/index.ts | 9 - .../manual-connection-form/styles.module.scss | 24 - .../SentinelConnectionWrapper.tsx | 20 +- .../SentinelConnectionForm.tsx | 4 +- .../src/pages/instance/InstancePage.spec.tsx | 3 +- .../ui/src/pages/instance/InstancePage.tsx | 3 + .../instance-list/RdiInstancesListWrapper.tsx | 6 +- .../pages/rdi/instance/InstancePage.spec.tsx | 23 +- .../src/pages/rdi/instance/InstancePage.tsx | 108 +- .../ConfirmLeavePagePopup.spec.tsx | 56 + .../ConfirmLeavePagePopup.tsx | 64 + .../confirm-leave-page-popup/index.ts | 3 + .../styles.module.scss | 42 + .../components/download/Download.spec.tsx | 18 +- .../instance/components/download/Download.tsx | 14 +- .../DeployPipelineButton.spec.tsx | 23 +- .../DeployPipelineButton.tsx | 37 +- .../FetchPipelinePopover.tsx | 5 + .../pipeline-actions/PipelineActions.tsx | 25 +- .../pages/rdi/instance/components/index.ts | 2 + .../ui/src/pages/rdi/instance/hooks/index.ts | 1 + .../hooks/useUndeployedChangesPrompt.ts | 59 + .../components/jobs-tree/JobsTree.spec.tsx | 22 +- .../components/jobs-tree/JobsTree.tsx | 29 +- .../upload-modal/UploadModal.spec.tsx | 31 +- .../components/upload-modal/UploadModal.tsx | 16 +- .../pages/config/Config.spec.tsx | 56 +- .../pages/config/Config.tsx | 18 +- .../pages/job/Job.spec.tsx | 50 +- .../rdi/pipeline-management/pages/job/Job.tsx | 33 +- .../pages/job/JobWrapper.tsx | 16 +- .../pages/job/JobsWrapper.spec.tsx | 74 +- .../pages/rdi/statistics/status/Status.tsx | 2 + .../workbench-settings/WorkbenchSettings.tsx | 2 +- .../components/query/Query/Query.tsx | 21 +- redisinsight/ui/src/pages/workbench/types.ts | 10 +- .../ui/src/pages/workbench/utils/helpers.ts | 19 +- .../ui/src/pages/workbench/utils/query.ts | 502 +- .../ui/src/pages/workbench/utils/query_old.ts | 404 -- .../pages/workbench/utils/query_refactor.ts | 71 + .../workbench/utils/searchSuggestions.ts | 11 +- .../src/pages/workbench/utils/suggestions.ts | 23 +- .../pages/workbench/utils/tests/query.spec.ts | 47 +- .../utils/tests/test-cases/common.ts | 66 +- .../utils/tests/test-cases/ft-aggregate.ts | 2 + .../utils/tests/test-cases/ft-search.ts | 4 +- redisinsight/ui/src/slices/app/context.ts | 13 +- redisinsight/ui/src/slices/browser/keys.ts | 39 +- redisinsight/ui/src/slices/browser/zset.ts | 2 +- redisinsight/ui/src/slices/interfaces/app.ts | 3 +- .../ui/src/slices/interfaces/instances.ts | 7 +- redisinsight/ui/src/slices/interfaces/keys.ts | 3 +- redisinsight/ui/src/slices/interfaces/rdi.ts | 2 - redisinsight/ui/src/slices/rdi/pipeline.ts | 13 - .../ui/src/slices/tests/browser/hash.spec.ts | 101 +- .../ui/src/slices/tests/browser/keys.spec.ts | 261 +- .../ui/src/slices/tests/browser/list.spec.ts | 121 +- .../src/slices/tests/browser/rejson.spec.ts | 70 +- .../ui/src/slices/tests/browser/set.spec.ts | 86 +- .../src/slices/tests/browser/stream.spec.ts | 165 +- .../src/slices/tests/browser/string.spec.ts | 70 +- .../ui/src/slices/tests/browser/zset.spec.ts | 146 +- .../ui/src/slices/tests/rdi/pipeline.spec.ts | 44 - redisinsight/ui/src/styles/mixins/_eui.scss | 9 - redisinsight/ui/src/telemetry/events.ts | 1 - .../ui/src/telemetry/telemetryUtils.ts | 27 +- .../telemetry/tests/telemetryUtils.spec.ts | 58 +- redisinsight/ui/src/utils/dom/index.ts | 2 - .../ui/src/utils/dom/pagePlaceholder.ts | 6 - redisinsight/ui/src/utils/test-utils.tsx | 2 +- redisinsight/ui/vite.config.mjs | 9 +- scripts/build-statics.cmd | 51 +- scripts/build-statics.sh | 51 +- scripts/deb-after-install.sh | 31 - tests/e2e/helpers/constants.ts | 2 +- tests/e2e/pageObjects/browser-page.ts | 5 - .../navigation/navigation-header.ts | 19 - .../pageObjects/components/overview-panel.ts | 20 + .../dialogs/add-redis-database-dialog.ts | 22 +- .../critical-path/database/add-ssh-db.e2e.ts | 4 - .../critical-path/browser/filtering.e2e.ts | 2 +- .../database/connecting-to-the-db.e2e.ts | 6 +- .../database/export-databases.e2e.ts | 3 - .../database/import-databases.e2e.ts | 13 - .../web/critical-path/rdi/navigation.e2e.ts | 35 - .../web/regression/browser/list-key.e2e.ts | 23 - .../database-tls-certificates.e2e.ts | 4 - .../web/regression/database/navigation.e2e.ts | 20 +- .../url-handling/url-handling.e2e.ts | 1 - yarn.lock | 34 +- 291 files changed, 16370 insertions(+), 11287 deletions(-) delete mode 100644 .github/workflows/nightly-virustotal-analyze.yml delete mode 100644 redisinsight/api/src/utils/feature-version-filter.helper.spec.ts delete mode 100644 redisinsight/api/src/utils/feature-version-filter.helper.ts delete mode 100644 redisinsight/api/test/README.md delete mode 100644 redisinsight/ui/src/assets/img/icons/columns.svg delete mode 100644 redisinsight/ui/src/assets/img/redis-software.svg delete mode 100644 redisinsight/ui/src/assets/img/shield.svg create mode 100644 redisinsight/ui/src/components/monaco-editor/components/monaco-js/MonacoJS.spec.tsx create mode 100644 redisinsight/ui/src/components/monaco-editor/components/monaco-js/MonacoJS.tsx create mode 100644 redisinsight/ui/src/components/monaco-editor/components/monaco-js/index.ts create mode 100644 redisinsight/ui/src/packages/clients-list/.parcelrc delete mode 100644 redisinsight/ui/src/packages/clients-list/index.html rename redisinsight/ui/src/packages/clients-list/{public => src/assets}/json_view_icon_dark.svg (86%) rename redisinsight/ui/src/packages/clients-list/{public => src/assets}/json_view_icon_light.svg (86%) rename redisinsight/ui/src/packages/clients-list/{public => src/assets}/table_view_icon_dark.svg (100%) rename redisinsight/ui/src/packages/clients-list/{public => src/assets}/table_view_icon_light.svg (100%) delete mode 100644 redisinsight/ui/src/packages/clients-list/src/global.d.ts create mode 100644 redisinsight/ui/src/packages/clients-list/src/index.html delete mode 100644 redisinsight/ui/src/packages/common/package.json delete mode 100644 redisinsight/ui/src/packages/package.json create mode 100644 redisinsight/ui/src/packages/redisearch/.parcelrc delete mode 100644 redisinsight/ui/src/packages/redisearch/index.html rename redisinsight/ui/src/packages/redisearch/{public => src/assets}/table_view_icon_dark.svg (100%) rename redisinsight/ui/src/packages/redisearch/{public => src/assets}/table_view_icon_light.svg (100%) delete mode 100644 redisinsight/ui/src/packages/redisearch/src/global.d.ts create mode 100644 redisinsight/ui/src/packages/redisearch/src/icons/arrow_down.jsx create mode 100644 redisinsight/ui/src/packages/redisearch/src/icons/arrow_left.jsx create mode 100644 redisinsight/ui/src/packages/redisearch/src/icons/arrow_right.jsx create mode 100644 redisinsight/ui/src/packages/redisearch/src/icons/check.jsx create mode 100644 redisinsight/ui/src/packages/redisearch/src/icons/copy.jsx create mode 100644 redisinsight/ui/src/packages/redisearch/src/icons/cross.jsx create mode 100644 redisinsight/ui/src/packages/redisearch/src/icons/empty.jsx create mode 100644 redisinsight/ui/src/packages/redisearch/src/index.html create mode 100644 redisinsight/ui/src/packages/redisgraph/.parcelrc delete mode 100644 redisinsight/ui/src/packages/redisgraph/index.html delete mode 100644 redisinsight/ui/src/packages/redisgraph/src/global.d.ts create mode 100644 redisinsight/ui/src/packages/redisgraph/src/icons/arrow_down.js create mode 100644 redisinsight/ui/src/packages/redisgraph/src/icons/arrow_left.js create mode 100644 redisinsight/ui/src/packages/redisgraph/src/icons/arrow_right.js create mode 100644 redisinsight/ui/src/packages/redisgraph/src/icons/check.js create mode 100644 redisinsight/ui/src/packages/redisgraph/src/icons/copy.js create mode 100644 redisinsight/ui/src/packages/redisgraph/src/icons/cross.js create mode 100644 redisinsight/ui/src/packages/redisgraph/src/icons/empty.js create mode 100644 redisinsight/ui/src/packages/redisgraph/src/index.html delete mode 100644 redisinsight/ui/src/packages/redisgraph/src/mockData/resultGraph.json create mode 100644 redisinsight/ui/src/packages/redisgraph/src/styles/_dark_theme.less create mode 100644 redisinsight/ui/src/packages/redisgraph/src/styles/_light_theme.less rename redisinsight/ui/src/packages/redisgraph/src/styles/{styles.scss => styles.less} (98%) create mode 100644 redisinsight/ui/src/packages/redistimeseries-app/.parcelrc delete mode 100644 redisinsight/ui/src/packages/redistimeseries-app/global.d.ts delete mode 100644 redisinsight/ui/src/packages/redistimeseries-app/index.html delete mode 100644 redisinsight/ui/src/packages/redistimeseries-app/mockData/resultTimeSeries.json create mode 100644 redisinsight/ui/src/packages/redistimeseries-app/src/index.html create mode 100644 redisinsight/ui/src/packages/redistimeseries-app/src/styles/_dark_theme.less create mode 100644 redisinsight/ui/src/packages/redistimeseries-app/src/styles/_light_theme.less rename redisinsight/ui/src/packages/redistimeseries-app/src/styles/{styles.scss => styles.less} (96%) create mode 100644 redisinsight/ui/src/packages/ri-explain/.parcelrc delete mode 100644 redisinsight/ui/src/packages/ri-explain/index.html rename redisinsight/ui/src/packages/ri-explain/{public => src/assets}/profile_icon_dark.svg (100%) rename redisinsight/ui/src/packages/ri-explain/{public => src/assets}/profile_icon_light.svg (100%) delete mode 100644 redisinsight/ui/src/packages/ri-explain/src/global.d.ts create mode 100644 redisinsight/ui/src/packages/ri-explain/src/index.html rename redisinsight/ui/src/packages/ri-explain/src/styles/{styles.scss => styles.less} (99%) delete mode 100644 redisinsight/ui/src/packages/ri-explain/test-data/result-explain.json delete mode 100644 redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r7--aggregate.json delete mode 100644 redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r7.json delete mode 100644 redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r8.json delete mode 100644 redisinsight/ui/src/packages/vite.config.mjs delete mode 100644 redisinsight/ui/src/packages/yarn.lock delete mode 100644 redisinsight/ui/src/pages/browser/components/delete-key-popover/DeleteKeyPopover.spec.tsx delete mode 100644 redisinsight/ui/src/pages/browser/components/delete-key-popover/DeleteKeyPopover.tsx delete mode 100644 redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/ConnectionUrl.spec.tsx delete mode 100644 redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/ConnectionUrl.tsx delete mode 100644 redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/styles.module.scss delete mode 100644 redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/styles.module.scss delete mode 100644 redisinsight/ui/src/pages/home/components/add-database-screen/constants.tsx delete mode 100644 redisinsight/ui/src/pages/home/components/add-database-screen/index.ts rename redisinsight/ui/src/pages/home/components/{add-database-screen/AddDatabaseScreen.spec.tsx => connection-url/ConnectionUrl.spec.tsx} (83%) rename redisinsight/ui/src/pages/home/components/{add-database-screen/AddDatabaseScreen.tsx => connection-url/ConnectionUrl.tsx} (76%) rename redisinsight/ui/src/pages/home/components/{add-database-screen => connection-url}/components/connectivity-options/ConnectivityOptions.spec.tsx (100%) rename redisinsight/ui/src/pages/home/components/{add-database-screen => connection-url}/components/connectivity-options/ConnectivityOptions.tsx (73%) rename redisinsight/ui/src/pages/home/components/{add-database-screen => connection-url}/components/connectivity-options/index.ts (100%) create mode 100644 redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/styles.module.scss create mode 100644 redisinsight/ui/src/pages/home/components/connection-url/constants.ts rename redisinsight/ui/src/pages/home/components/{add-database-screen/components => }/connection-url/index.ts (100%) rename redisinsight/ui/src/pages/home/components/{add-database-screen => connection-url}/styles.module.scss (100%) delete mode 100644 redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/constants.ts delete mode 100644 redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/AddConnection.tsx delete mode 100644 redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/EditConnection.tsx delete mode 100644 redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/EditSentinelConnection.tsx delete mode 100644 redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/index.ts delete mode 100644 redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/styles.module.scss create mode 100644 redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.spec.tsx create mode 100644 redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.tsx create mode 100644 redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/index.ts create mode 100644 redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/styles.module.scss create mode 100644 redisinsight/ui/src/pages/rdi/instance/hooks/index.ts create mode 100644 redisinsight/ui/src/pages/rdi/instance/hooks/useUndeployedChangesPrompt.ts delete mode 100644 redisinsight/ui/src/pages/workbench/utils/query_old.ts create mode 100644 redisinsight/ui/src/pages/workbench/utils/query_refactor.ts delete mode 100644 redisinsight/ui/src/utils/dom/pagePlaceholder.ts delete mode 100755 scripts/deb-after-install.sh diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b5fd1e9671..f8a350679f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,4 @@ # Add reviewers for the most sensitive folders -/.github/ viktar.starastsenka@redis.com artem.horuzhenko@redis.com kristiyan.ivanov@redis.com pavel.angelov@redis.com petar.dzhambazov@redis.com -/.circleci/ viktar.starastsenka@redis.com artem.horuzhenko@redis.com kristiyan.ivanov@redis.com pavel.angelov@redis.com petar.dzhambazov@redis.com -/redisinsight/api/config/features-config.json viktar.starastsenka@redis.com artem.horuzhenko@redis.com kristiyan.ivanov@redis.com pavel.angelov@redis.com petar.dzhambazov@redis.com +/.github/ viktar.starastsenka@redis.com egor.zalenski@softeq.com artem.horuzhenko@redis.com +/.circleci/ viktar.starastsenka@redis.com egor.zalenski@softeq.com artem.horuzhenko@redis.com +/redisinsight/api/config/features-config.json viktar.starastsenka@redis.com egor.zalenski@softeq.com artem.horuzhenko@redis.com diff --git a/.github/workflows/aws-upload-dev.yml b/.github/workflows/aws-upload-dev.yml index 15bda6a808..70c1ce9362 100644 --- a/.github/workflows/aws-upload-dev.yml +++ b/.github/workflows/aws-upload-dev.yml @@ -53,19 +53,6 @@ jobs: aws s3 cp release/ s3://${AWS_BUCKET_NAME_TEST}/public/upgrades --recursive aws s3 cp release/ s3://${AWS_BUCKET_NAME_TEST}/public/pre-release/${APP_VERSION} --recursive - - name: Download vendor plugins - uses: actions/download-artifact@v4 - id: download-vendor - continue-on-error: true - with: - name: 'vendor-plugins' - path: vendor - - - name: Upload vendor plugins to s3 bucket - if: steps.download-vendor.outcome == 'success' - run: | - aws s3 cp vendor/ s3://${AWS_BUCKET_NAME_TEST}/public/plugins/static/ --recursive - - name: Generate job summary run: | node ./.github/generate-build-summary.js diff --git a/.github/workflows/nightly-virustotal-analyze.yml b/.github/workflows/nightly-virustotal-analyze.yml deleted file mode 100644 index 5c1e327fc9..0000000000 --- a/.github/workflows/nightly-virustotal-analyze.yml +++ /dev/null @@ -1,139 +0,0 @@ -name: Nightly Virustotal Analyze - -on: - workflow_dispatch: - inputs: - mode: - description: "Choose 'single' or 'all'" - required: true - default: 'all' - type: string - file_url: - description: "Provide a file URL for single file scanning (required for 'single' mode)" - required: false - default: 'https://s3.amazonaws.com/redisinsight.download/public/latest/Redis-Insight-mac-arm64.dmg' - type: string - schedule: - - cron: '0 0 * * *' - -env: - VIRUSTOTAL_API_KEY: ${{ secrets.VIRUSTOTAL_API_KEY }} - DEFAULT_FILES: | - https://s3.amazonaws.com/redisinsight.download/public/latest/Redis-Insight-mac-x64.dmg - https://s3.amazonaws.com/redisinsight.download/public/latest/Redis-Insight-mac-arm64.dmg - https://s3.amazonaws.com/redisinsight.download/public/latest/Redis-Insight-win-installer.exe - https://s3.amazonaws.com/redisinsight.download/public/latest/Redis-Insight-linux-x86_64.AppImage - https://s3.amazonaws.com/redisinsight.download/public/latest/Redis-Insight-linux-amd64.deb - -jobs: - analyze: - name: VirusTotal Analyze - runs-on: ubuntu-latest - outputs: - files: ${{ steps.setup_matrix.outputs.files }} - steps: - - name: Determine mode and files - id: setup_matrix - run: | - mode="${{ github.event.inputs.mode }}" - file_url="${{ github.event.inputs.file_url }}" - - if [ "$mode" == "single" ] && [ -z "$file_url" ]; then - echo "Error: For 'single' mode, a file URL must be provided." - exit 1 - fi - - if [ "$mode" == "single" ]; then - echo "files=[\"$file_url\"]" >> $GITHUB_OUTPUT - else - files_json=$(echo "${{ env.DEFAULT_FILES }}" | sed '/^$/d' | jq -R -s -c 'split("\n")[:-1]') - echo "files=$files_json" >> $GITHUB_OUTPUT - fi - - analyze_files: - name: Analyze each file - needs: analyze - runs-on: ubuntu-latest - - strategy: - matrix: - file: ${{ fromJson(needs.analyze.outputs.files) }} - - steps: - - name: Download file - run: | - echo "Downloading: ${{ matrix.file }}" - curl -sLo file_to_analyze "${{ matrix.file }}" - - - name: Get upload URL - id: get_upload_url - run: | - upload_url=$(curl -sq -XGET https://www.virustotal.com/api/v3/files/upload_url \ - -H "x-apikey: $VIRUSTOTAL_API_KEY" | jq -r '.data') - - if [ -z "$upload_url" ] || [ "$upload_url" == "null" ]; then - echo "Failed to retrieve upload URL for ${{ matrix.file }}" - exit 1 - fi - - echo "UPLOAD_URL=$upload_url" >> $GITHUB_ENV - - - name: Upload file to VirusTotal - id: upload_file - run: | - upload_url="${{ env.UPLOAD_URL }}" - analyzed_id=$(curl -sq -XPOST "$upload_url" \ - -H "x-apikey: $VIRUSTOTAL_API_KEY" \ - --form "file=@file_to_analyze" | jq -r '.data.id') - - if [ -z "$analyzed_id" ] || [ "$analyzed_id" == "null" ]; then - echo "Failed to upload file: ${{ matrix.file }}" - exit 1 - fi - - echo "ANALYZED_ID=$analyzed_id" >> $GITHUB_ENV - - - name: Check analyze status - run: | - analyzed_id="${{ env.ANALYZED_ID }}" - retry_attempts=50 - interval_time=30 - - until [ "$retry_attempts" == "0" ]; do - analyze_status=$(curl -sq -XGET https://www.virustotal.com/api/v3/analyses/${analyzed_id} \ - -H "x-apikey: $VIRUSTOTAL_API_KEY" | jq -r '.data.attributes.status') - - if [ "$analyze_status" == "completed" ]; then - break - fi - - echo "Current status: $analyze_status, retries left: $retry_attempts" - sleep $interval_time - retry_attempts=$((retry_attempts - 1)) - done - - if [ "$analyze_status" != "completed" ]; then - echo "Analysis not completed for ${{ matrix.file }}" - exit 1 - fi - - - name: Validate analyze - run: | - analyzed_id="${{ env.ANALYZED_ID }}" - analysis=$(curl -sq -XGET "https://www.virustotal.com/api/v3/analyses/${analyzed_id}" \ - -H "x-apikey: $VIRUSTOTAL_API_KEY") - - analyze_stats=$(echo "$analysis" | jq -r '.data.attributes.stats') - - malicious=$(echo "$analyze_stats" | jq '.malicious') - suspicious=$(echo "$analyze_stats" | jq '.suspicious') - suspicious=$(echo "$analyze_stats" | jq '.suspicious') - harmless=$(echo "$analyze_stats" | jq '.harmless') - - echo "Results for ${{ matrix.file }}: Malicious: $malicious, Suspicious: $suspicious, Harmless: $harmless" - - if [ "$malicious" != "0" ] || [ "$suspicious" != "0" ]; then - echo "File ${{ matrix.file }} is flagged as potentially harmful." - echo "$analysis" | jq -r '.data.attributes.results[] | select(.result == "malicious" or .result == "suspicious")' - exit 1 - fi diff --git a/.github/workflows/pipeline-build-linux.yml b/.github/workflows/pipeline-build-linux.yml index d82d2e2d56..554aab00d4 100644 --- a/.github/workflows/pipeline-build-linux.yml +++ b/.github/workflows/pipeline-build-linux.yml @@ -77,13 +77,6 @@ jobs: yarn package:stage --linux $target fi - - uses: actions/upload-artifact@v4 - name: Upload vendor for plugins - with: - name: vendor-plugins - path: | - ./vendor - - uses: actions/upload-artifact@v4 name: Upload linux builds with: diff --git a/.github/workflows/tests-e2e-docker.yml b/.github/workflows/tests-e2e-docker.yml index 9d4f0ee1a0..cdc22c733f 100644 --- a/.github/workflows/tests-e2e-docker.yml +++ b/.github/workflows/tests-e2e-docker.yml @@ -37,7 +37,7 @@ jobs: fail-fast: false matrix: # Number of threads to run tests - parallel: [0, 1, 2, 3] + parallel: [0, 1, 2, 3, 4, 5] steps: - uses: actions/checkout@v4 @@ -66,7 +66,7 @@ jobs: - name: Generate short list of the test files working-directory: ./tests/e2e run: | - testFiles=$(find tests/web -type f -name '*.e2e.ts' | sort | awk "NR % 4 == ${{ matrix.parallel }}") + testFiles=$(find tests/web -type f -name '*.e2e.ts' | sort | awk "NR % 6 == ${{ matrix.parallel }}") echo $testFiles diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 78b567a231..80e2bb7f03 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -5,10 +5,7 @@ on: branches: - 'fe/**' - 'be/**' - - 'fe-be/**' - 'e2e/**' - - 'feature/**' - - 'bugfix/**' workflow_dispatch: inputs: @@ -44,7 +41,7 @@ on: group_tests: description: Run group of tests type: string - default: 'without_e2e' + default: 'all' short_rte_list: description: Use short rte list type: boolean @@ -89,19 +86,19 @@ jobs: frontend-tests: needs: changes - if: inputs.group_tests == 'all' || inputs.group_tests == 'without_e2e' || startsWith(github.ref_name, 'fe/') || startsWith(github.ref_name, 'fe-be/') || startsWith(github.ref_name, 'feature/') || startsWith(github.ref_name, 'bugfix/') + if: inputs.group_tests == 'all' || inputs.group_tests == 'without_e2e' || startsWith(github.ref_name, 'fe/') uses: ./.github/workflows/tests-frontend.yml secrets: inherit backend-tests: needs: changes - if: inputs.group_tests == 'all' || inputs.group_tests == 'without_e2e' || startsWith(github.ref_name, 'be/') || startsWith(github.ref_name, 'fe-be/') || startsWith(github.ref_name, 'feature/') || startsWith(github.ref_name, 'bugfix/') + if: inputs.group_tests == 'all' || inputs.group_tests == 'without_e2e' || startsWith(github.ref_name, 'be/') uses: ./.github/workflows/tests-backend.yml secrets: inherit integration-tests: needs: changes - if: inputs.group_tests == 'all' || inputs.group_tests == 'without_e2e' || startsWith(github.ref_name, 'be/') || startsWith(github.ref_name, 'fe-be/') || startsWith(github.ref_name, 'feature/') || startsWith(github.ref_name, 'bugfix/') + if: inputs.group_tests == 'all' || inputs.group_tests == 'without_e2e' || startsWith(github.ref_name, 'be/') uses: ./.github/workflows/tests-integration.yml secrets: inherit with: diff --git a/.gitignore b/.gitignore index ba5949c353..8d775646b9 100644 --- a/.gitignore +++ b/.gitignore @@ -70,7 +70,6 @@ vendor redisinsight/main.js.LICENSE.txt redisinsight/main.prod.js.LICENSE.txt licenses -redisinsight/ui/src/packages/common/index* # E2E tests report diff --git a/electron-builder.json b/electron-builder.json index 8a9dc99457..d0aa82c16d 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -13,30 +13,21 @@ "node_modules/keytar", "node_modules/sqlite3" ], - "protocols": [ - { - "name": "RedisInsight", - "role": "Viewer", - "schemes": [ - "redisinsight" - ] - } + "protocols": [{ + "name": "RedisInsight", + "role": "Viewer", + "schemes": ["redisinsight"] + } ], "mac": { "target": [ { "target": "dmg", - "arch": [ - "x64", - "arm64" - ] + "arch": ["x64", "arm64"] }, { "target": "zip", - "arch": [ - "x64", - "arm64" - ] + "arch": ["x64", "arm64"] } ], "notarize": { @@ -57,9 +48,7 @@ "entitlementsInherit": "resources/entitlements.mas.inherit.plist", "entitlementsLoginHelper": "resources/entitlements.mas.loginhelper.plist", "hardenedRuntime": false, - "asarUnpack": [ - "node_modules" - ], + "asarUnpack": ["node_modules"], "provisioningProfile": "embedded.provisionprofile", "binaries": [ "Contents/Resources/app-x64.asar.unpacked/node_modules/sqlite3/build/Release/node_sqlite3.node", @@ -75,9 +64,7 @@ "entitlementsInherit": "resources/entitlements.mas.inherit.plist", "entitlementsLoginHelper": "resources/entitlements.mas.loginhelper.plist", "hardenedRuntime": false, - "asarUnpack": [ - "node_modules" - ], + "asarUnpack": ["node_modules"], "provisioningProfile": "dev.provisionprofile", "binaries": [ "Contents/Resources/app-x64.asar.unpacked/node_modules/sqlite3/build/Release/node_sqlite3.node", @@ -102,9 +89,7 @@ ] }, "win": { - "target": [ - "nsis" - ], + "target": ["nsis"], "artifactName": "Redis-Insight-${os}-installer.${ext}", "icon": "resources/icon.ico", "publisherName": [ @@ -122,27 +107,19 @@ "target": [ { "target": "AppImage", - "arch": [ - "x64" - ] + "arch": ["x64"] }, { "target": "deb", - "arch": [ - "x64" - ] + "arch": ["x64"] }, { "target": "rpm", - "arch": [ - "x64" - ] + "arch": ["x64"] }, { "target": "snap", - "arch": [ - "x64" - ] + "arch": ["x64"] } ], "synopsis": "Redis GUI by Redis Ltd.", @@ -154,18 +131,13 @@ "Comment": "Redis GUI by Redis Ltd" } }, - "deb": { - "afterInstall": "scripts/deb-after-install.sh" - }, "snap": { "plugs": [ "default", "password-manager-service" ], "confinement": "strict", - "stagePackages": [ - "default" - ] + "stagePackages": ["default"] }, "flatpak": { "runtimeVersion": "20.08", @@ -179,12 +151,7 @@ "-Dgtk_doc=false", "-Dintrospection=false" ], - "cleanup": [ - "/bin", - "/include", - "/lib/pkgconfig", - "/share/man" - ], + "cleanup": ["/bin", "/include", "/lib/pkgconfig", "/share/man"], "sources": [ { "type": "archive", @@ -217,23 +184,17 @@ { "from": "./redisinsight/api/static", "to": "static", - "filter": [ - "**/*" - ] + "filter": ["**/*"] }, { "from": "./redisinsight/api/defaults", "to": "defaults", - "filter": [ - "**/*" - ] + "filter": ["**/*"] }, { "from": "./redisinsight/api/data", "to": "data", - "filter": [ - "**/*" - ] + "filter": ["**/*"] }, { "from": "LICENSE", @@ -242,9 +203,7 @@ { "from": "./resources/app", "to": "./app", - "filter": [ - "**/*" - ] + "filter": ["**/*"] } ] -} \ No newline at end of file +} diff --git a/package.json b/package.json index 6d9ec899f8..fd3a9e1571 100644 --- a/package.json +++ b/package.json @@ -207,10 +207,9 @@ "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "^4.0.5", "url-loader": "^4.1.0", - "vite": "^5.4.12", + "vite": "^5.4.9", "vite-bundle-visualizer": "1.0.1", "vite-plugin-compression2": "^1.1.0", - "vite-plugin-ejs": "^1.7.0", "vite-plugin-electron": "^0.28.6", "vite-plugin-electron-renderer": "^0.14.5", "vite-plugin-react-click-to-component": "^3.0.0", @@ -227,7 +226,7 @@ "@elastic/eui": "34.6.0", "@reduxjs/toolkit": "^1.6.2", "@stablelib/snappy": "^1.0.2", - "axios": "^1.7.8", + "axios": "^1.7.4", "brotli-dec-wasm": "^2.3.0", "buffer": "^6.0.3", "classnames": "^2.3.1", diff --git a/redisinsight/api/src/main.ts b/redisinsight/api/src/main.ts index a299acda3c..9f8cb4857e 100644 --- a/redisinsight/api/src/main.ts +++ b/redisinsight/api/src/main.ts @@ -11,8 +11,6 @@ import { migrateHomeFolder, removeOldFolders } from 'src/init-helper'; import { LogFileProvider } from 'src/modules/profiler/providers/log-file.provider'; import { WindowsAuthAdapter } from 'src/modules/auth/window-auth/adapters/window-auth.adapter'; import { AppLogger } from 'src/common/logger/app-logger'; -import { CloudAuthModule } from 'src/modules/cloud/auth/cloud-auth.module'; -import { CloudAuthService } from 'src/modules/cloud/auth/cloud-auth.service'; import { AppModule } from './app.module'; import SWAGGER_CONFIG from '../config/swagger'; import LOGGER_CONFIG from '../config/logger'; @@ -24,7 +22,6 @@ const serverConfig = get('server') as Config['server']; interface IApp { app: INestApplication; gracefulShutdown: Function; - cloudAuthService: CloudAuthService; } export default async function bootstrap(apiPort?: number): Promise { @@ -101,9 +98,7 @@ export default async function bootstrap(apiPort?: number): Promise { process.on('SIGTERM', gracefulShutdown); process.on('SIGINT', gracefulShutdown); - const cloudAuthService = app.select(CloudAuthModule).get(CloudAuthService); - - return { app, gracefulShutdown, cloudAuthService }; + return { app, gracefulShutdown }; } if (serverConfig.autoBootstrap) { diff --git a/redisinsight/api/src/modules/browser/keys/dto/get.keys-info.dto.ts b/redisinsight/api/src/modules/browser/keys/dto/get.keys-info.dto.ts index f65f12541f..aac1a82fbe 100644 --- a/redisinsight/api/src/modules/browser/keys/dto/get.keys-info.dto.ts +++ b/redisinsight/api/src/modules/browser/keys/dto/get.keys-info.dto.ts @@ -4,15 +4,7 @@ import { IsRedisString, RedisStringType } from 'src/common/decorators'; import { RedisString } from 'src/common/constants'; import { KeyDto, RedisDataType } from './key.dto'; -export class GetKeyInfoDto extends KeyDto { - @ApiPropertyOptional({ - description: 'Flag to determine if size should be requested and shown in the response', - type: Boolean, - default: false, - }) - @IsOptional() - includeSize?: boolean; -} +export class GetKeyInfoDto extends KeyDto {} export class GetKeysInfoDto { @ApiProperty({ @@ -39,20 +31,4 @@ export class GetKeysInfoDto { }) @IsOptional() type?: RedisDataType; - - @ApiPropertyOptional({ - description: 'Flag to determine if keys should be requested and shown in the response', - type: Boolean, - default: true, - }) - @IsOptional() - includeSize?: boolean; - - @ApiPropertyOptional({ - description: 'Flag to determine if TTL should be requested and shown in the response', - type: Boolean, - default: true, - }) - @IsOptional() - includeTTL?: boolean; -} \ No newline at end of file +} diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/hash.key-info.strategy.spec.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/hash.key-info.strategy.spec.ts index 09437a9584..82d506ea25 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/hash.key-info.strategy.spec.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/hash.key-info.strategy.spec.ts @@ -34,120 +34,52 @@ describe('HashKeyInfoStrategy', () => { describe('getInfo', () => { const key = getKeyInfoResponse.name; - - describe('when includeSize is true', () => { - it('should return all info in single pipeline', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolHashCommands.HLen, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Hash, - true, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); + it('should return appropriate value', async () => { + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolHashCommands.HLen, key], + ]) + .mockResolvedValue([ + [null, -1], + [null, 50], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.Hash, + ); + + expect(result).toEqual(getKeyInfoResponse); }); - - describe('when includeSize is false', () => { - it('should return appropriate value', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolHashCommands.HLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Hash, - false, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); - - it('should return size with null value when memory usage fails', async () => { - const replyError: ReplyError = { - name: 'ReplyError', - command: BrowserToolKeysCommands.MemoryUsage, - message: "ERR unknown command 'memory'", - }; - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolHashCommands.HLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [replyError, null], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Hash, - false, - ); - - expect(result).toEqual({ ...getKeyInfoResponse, size: null }); - }); - - it('should not check size when length >= 50,000', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolHashCommands.HLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 50000], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Hash, - false, - ); - - expect(result).toEqual({ - ...getKeyInfoResponse, - length: 50000, - size: -1 - }); - }); + it('should return size with null value', async () => { + const replyError: ReplyError = { + name: 'ReplyError', + command: BrowserToolKeysCommands.MemoryUsage, + message: "ERR unknown command 'memory'", + }; + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolHashCommands.HLen, key], + ]) + .mockResolvedValue([ + [null, -1], + [replyError, null], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.Hash, + ); + + expect(result).toEqual({ ...getKeyInfoResponse, size: null }); }); }); }); diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/hash.key-info.strategy.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/hash.key-info.strategy.ts index 1c87855287..744db8f30c 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/hash.key-info.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/hash.key-info.strategy.ts @@ -12,46 +12,19 @@ export class HashKeyInfoStrategy extends KeyInfoStrategy { client: RedisClient, key: RedisString, type: string, - includeSize: boolean, ): Promise { this.logger.debug(`Getting ${RedisDataType.Hash} type info.`); - if (includeSize !== false) { - const [ - [, ttl = null], - [, length = null], - [, size = null], - ] = await client.sendPipeline([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolHashCommands.HLen, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - - return { - name: key, - type, - ttl, - size, - length, - }; - } - const [ [, ttl = null], + [, size = null], [, length = null], ] = await client.sendPipeline([ [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], [BrowserToolHashCommands.HLen, key], ]) as [any, number][]; - let size = -1; - if (length < 50_000) { - const sizeData = await client.sendPipeline([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - size = sizeData && sizeData[0] && sizeData[0][1]; - } - return { name: key, type, @@ -59,6 +32,5 @@ export class HashKeyInfoStrategy extends KeyInfoStrategy { size, length, }; - } } diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/key-info.strategy.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/key-info.strategy.ts index 7a98e1485e..cec1f9f42f 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/key-info.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/key-info.strategy.ts @@ -11,6 +11,5 @@ export abstract class KeyInfoStrategy { client: RedisClient, key: RedisString, type: string, - includeSize: boolean, ): Promise; } diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/list.key-info.strategy.spec.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/list.key-info.strategy.spec.ts index 1403b3d76f..6b7ba69046 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/list.key-info.strategy.spec.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/list.key-info.strategy.spec.ts @@ -34,121 +34,52 @@ describe('ListKeyInfoStrategy', () => { describe('getInfo', () => { const key = getKeyInfoResponse.name; - - describe('when includeSize is true', () => { - it('should return all info in single pipeline', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolListCommands.LLen, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.List, - true, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); + it('should return appropriate value', async () => { + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolListCommands.LLen, key], + ]) + .mockResolvedValue([ + [null, -1], + [null, 50], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.List, + ); + + expect(result).toEqual(getKeyInfoResponse); }); - - describe('when includeSize is false', () => { - it('should return appropriate value', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolListCommands.LLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.List, - false, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); - - it('should return size with null when memory usage fails', async () => { - const replyError: ReplyError = { - name: 'ReplyError', - command: BrowserToolKeysCommands.MemoryUsage, - message: "ERR unknown command 'memory'", - }; - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolListCommands.LLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [replyError, null], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.List, - false, - ); - - expect(result).toEqual({ ...getKeyInfoResponse, size: null }); - }); - - it('should not check size when length >= 50,000', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolListCommands.LLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 50000], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.List, - false, - ); - - expect(result).toEqual({ - ...getKeyInfoResponse, - length: 50000, - size: -1 - }); - }); + it('should return size with null value', async () => { + const replyError: ReplyError = { + name: 'ReplyError', + command: BrowserToolKeysCommands.MemoryUsage, + message: "ERR unknown command 'memory'", + }; + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolListCommands.LLen, key], + ]) + .mockResolvedValue([ + [null, -1], + [replyError, null], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.List, + ); + + expect(result).toEqual({ ...getKeyInfoResponse, size: null }); }); }); }); diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/list.key-info.strategy.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/list.key-info.strategy.ts index 3d7bfbb035..0a1613372a 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/list.key-info.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/list.key-info.strategy.ts @@ -12,45 +12,19 @@ export class ListKeyInfoStrategy extends KeyInfoStrategy { client: RedisClient, key: RedisString, type: string, - includeSize: boolean, ): Promise { this.logger.debug(`Getting ${RedisDataType.List} type info.`); - if (includeSize !== false) { - const [ - [, ttl = null], - [, length = null], - [, size = null], - ] = await client.sendPipeline([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolListCommands.LLen, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - - return { - name: key, - type, - ttl, - size, - length, - }; - } const [ [, ttl = null], + [, size = null], [, length = null], ] = await client.sendPipeline([ [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], [BrowserToolListCommands.LLen, key], ]) as [any, number][]; - let size = -1; - if (length < 50_000) { - const sizeData = await client.sendPipeline([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - size = sizeData && sizeData[0] && sizeData[0][1]; - } - return { name: key, type, diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/rejson-rl.key-info.strategy.spec.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/rejson-rl.key-info.strategy.spec.ts index caadf5dd79..76fe8da85d 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/rejson-rl.key-info.strategy.spec.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/rejson-rl.key-info.strategy.spec.ts @@ -36,285 +36,121 @@ describe('RejsonRlKeyInfoStrategy', () => { describe('getInfo', () => { const key = getKeyInfoResponse.name; const path = '.'; - - describe('when includeSize is true', () => { - it('should return all info in single pipeline for object type', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 50], - ]); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonType, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue('object'); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonObjLen, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(10); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.JSON, - true, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); + beforeEach(() => { + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + ]) + .mockResolvedValue([ + [null, -1], + [null, 50], + ]); + when(mockStandaloneRedisClient.sendCommand) + .calledWith( + [BrowserToolRejsonRlCommands.JsonType, key, path], + { replyEncoding: 'utf8' }, + ) + .mockResolvedValue('object'); + when(mockStandaloneRedisClient.sendCommand) + .calledWith( + [BrowserToolRejsonRlCommands.JsonObjLen, key, path], + { replyEncoding: 'utf8' }, + ) + .mockResolvedValue(10); }); - - describe('when includeSize is false', () => { - it('should return appropriate value for key that store object', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - ]); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonType, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue('object'); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonObjLen, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(10); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.JSON, - false, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); - - it('should return appropriate value for key that store array', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - ]); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonType, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue('array'); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonArrLen, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(10); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.JSON, - false, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); - - it('should return appropriate value for key that store string', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - ]); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonType, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue('string'); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonStrLen, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(10); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.JSON, - false, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); - - it('should return appropriate value for key that store not iterable type', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - ]); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonType, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue('boolean'); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.JSON, - false, - ); - - expect(result).toEqual({ ...getKeyInfoResponse, length: null }); - }); - - it('should return size with null when memory usage fails', async () => { - const replyError: ReplyError = { - name: 'ReplyError', - command: BrowserToolKeysCommands.MemoryUsage, - message: "ERR unknown command 'memory'", - }; - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - ]); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonType, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue('object'); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonObjLen, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(10); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [replyError, null], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.JSON, - false, - ); - - expect(result).toEqual({ ...getKeyInfoResponse, size: null }); - }); - - it('should not check size when length >= 100', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - ]); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonType, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue('object'); - - when(mockStandaloneRedisClient.sendCommand) - .calledWith( - [BrowserToolRejsonRlCommands.JsonObjLen, key, path], - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(100); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.JSON, - false, - ); - - expect(result).toEqual({ - ...getKeyInfoResponse, - length: 100, - size: -1 - }); - }); + it('should return appropriate value for key that store object', async () => { + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.JSON, + ); + + expect(result).toEqual(getKeyInfoResponse); + }); + it('should return appropriate value for key that store string', async () => { + when(mockStandaloneRedisClient.sendCommand) + .calledWith( + [BrowserToolRejsonRlCommands.JsonType, key, path], + { replyEncoding: 'utf8' }, + ) + .mockResolvedValue('string'); + when(mockStandaloneRedisClient.sendCommand) + .calledWith( + [BrowserToolRejsonRlCommands.JsonStrLen, key, path], + { replyEncoding: 'utf8' }, + ) + .mockResolvedValue(10); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.JSON, + ); + + expect(result).toEqual(getKeyInfoResponse); + }); + it('should return appropriate value for key that store array', async () => { + when(mockStandaloneRedisClient.sendCommand) + .calledWith( + [BrowserToolRejsonRlCommands.JsonType, key, path], + { replyEncoding: 'utf8' }, + ) + .mockResolvedValue('array'); + when(mockStandaloneRedisClient.sendCommand) + .calledWith( + [BrowserToolRejsonRlCommands.JsonArrLen, key, path], + { replyEncoding: 'utf8' }, + ) + .mockResolvedValue(10); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.JSON, + ); + + expect(result).toEqual(getKeyInfoResponse); + }); + it('should return appropriate value for key that store not iterable type', async () => { + when(mockStandaloneRedisClient.sendCommand) + .calledWith( + [BrowserToolRejsonRlCommands.JsonType, key, path], + { replyEncoding: 'utf8' }, + ) + .mockResolvedValue('boolean'); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.JSON, + ); + + expect(result).toEqual({ ...getKeyInfoResponse, length: null }); + }); + it('should return size with null value', async () => { + const replyError: ReplyError = { + name: 'ReplyError', + command: BrowserToolKeysCommands.MemoryUsage, + message: "ERR unknown command 'memory'", + }; + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + ]) + .mockResolvedValue([ + [null, -1], + [replyError, null], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.JSON, + ); + + expect(result).toEqual({ ...getKeyInfoResponse, size: null }); }); }); }); diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/rejson-rl.key-info.strategy.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/rejson-rl.key-info.strategy.ts index b24e3055c2..fe2678fa91 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/rejson-rl.key-info.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/rejson-rl.key-info.strategy.ts @@ -12,46 +12,18 @@ export class RejsonRlKeyInfoStrategy extends KeyInfoStrategy { client: RedisClient, key: RedisString, type: string, - includeSize: boolean, ): Promise { this.logger.debug(`Getting ${RedisDataType.JSON} type info.`); - - if (includeSize !== false) { - const [ - [, ttl = null], - [, size = null], - ] = await client.sendPipeline([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - - const length = await this.getLength(client, key); - - return { - name: key, - type, - ttl, - size, - length, - }; - } - const [ [, ttl = null], + [, size = null], ] = await client.sendPipeline([ [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], ]) as [any, number][]; const length = await this.getLength(client, key); - let size = -1; - if (length < 100) { - const sizeData = await client.sendPipeline([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - size = sizeData && sizeData[0] && sizeData[0][1]; - } - return { name: key, type, diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/set.key-info.strategy.spec.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/set.key-info.strategy.spec.ts index dd35e69678..de61f919e4 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/set.key-info.strategy.spec.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/set.key-info.strategy.spec.ts @@ -34,121 +34,52 @@ describe('SetKeyInfoStrategy', () => { describe('getInfo', () => { const key = getKeyInfoResponse.name; - - describe('when includeSize is true', () => { - it('should return all info in single pipeline', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolSetCommands.SCard, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Set, - true, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); + it('should return appropriate value', async () => { + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolSetCommands.SCard, key], + ]) + .mockResolvedValue([ + [null, -1], + [null, 50], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.Set, + ); + + expect(result).toEqual(getKeyInfoResponse); }); - - describe('when includeSize is false', () => { - it('should return appropriate value', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolSetCommands.SCard, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Set, - false, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); - - it('should return size with null when memory usage fails', async () => { - const replyError: ReplyError = { - name: 'ReplyError', - command: BrowserToolKeysCommands.MemoryUsage, - message: "ERR unknown command 'memory'", - }; - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolSetCommands.SCard, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [replyError, null], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Set, - false, - ); - - expect(result).toEqual({ ...getKeyInfoResponse, size: null }); - }); - - it('should not check size when length >= 50,000', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolSetCommands.SCard, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 50000], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Set, - false, - ); - - expect(result).toEqual({ - ...getKeyInfoResponse, - length: 50000, - size: -1 - }); - }); + it('should return size with null value', async () => { + const replyError: ReplyError = { + name: 'ReplyError', + command: BrowserToolKeysCommands.MemoryUsage, + message: "ERR unknown command 'memory'", + }; + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolSetCommands.SCard, key], + ]) + .mockResolvedValue([ + [null, -1], + [replyError, null], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.Set, + ); + + expect(result).toEqual({ ...getKeyInfoResponse, size: null }); }); }); }); diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/set.key-info.strategy.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/set.key-info.strategy.ts index a6cf34fd1e..1c5ce0c722 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/set.key-info.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/set.key-info.strategy.ts @@ -12,46 +12,19 @@ export class SetKeyInfoStrategy extends KeyInfoStrategy { client: RedisClient, key: RedisString, type: string, - includeSize: boolean, ): Promise { this.logger.debug(`Getting ${RedisDataType.Set} type info.`); - if (includeSize !== false) { - const [ - [, ttl = null], - [, length = null], - [, size = null], - ] = await client.sendPipeline([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolSetCommands.SCard, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - - return { - name: key, - type, - ttl, - size, - length, - }; - } - const [ [, ttl = null], + [, size = null], [, length = null], ] = await client.sendPipeline([ [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], [BrowserToolSetCommands.SCard, key], ]) as [any, number][]; - let size = -1; - if (length < 50_000) { - const sizeData = await client.sendPipeline([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - size = sizeData && sizeData[0] && sizeData[0][1]; - } - return { name: key, type, diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/stream.key-info.strategy.spec.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/stream.key-info.strategy.spec.ts index cf14b5d734..f831efe818 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/stream.key-info.strategy.spec.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/stream.key-info.strategy.spec.ts @@ -34,121 +34,52 @@ describe('StreamKeyInfoStrategy', () => { describe('getInfo', () => { const key = getKeyInfoResponse.name; - - describe('when includeSize is true', () => { - it('should return all info in single pipeline', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolStreamCommands.XLen, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Stream, - true, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); + it('should return appropriate value', async () => { + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolStreamCommands.XLen, key], + ]) + .mockResolvedValue([ + [null, -1], + [null, 50], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.Stream, + ); + + expect(result).toEqual(getKeyInfoResponse); }); - - describe('when includeSize is false', () => { - it('should return appropriate value', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolStreamCommands.XLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Stream, - false, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); - - it('should return size with null when memory usage fails', async () => { - const replyError: ReplyError = { - name: 'ReplyError', - command: BrowserToolKeysCommands.MemoryUsage, - message: "ERR unknown command 'memory'", - }; - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolStreamCommands.XLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [replyError, null], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Stream, - false, - ); - - expect(result).toEqual({ ...getKeyInfoResponse, size: null }); - }); - - it('should not check size when length >= 50,000', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolStreamCommands.XLen, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 50000], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.Stream, - false, - ); - - expect(result).toEqual({ - ...getKeyInfoResponse, - length: 50000, - size: -1 - }); - }); + it('should return size with null value', async () => { + const replyError: ReplyError = { + name: 'ReplyError', + command: BrowserToolKeysCommands.MemoryUsage, + message: "ERR unknown command 'memory'", + }; + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolStreamCommands.XLen, key], + ]) + .mockResolvedValue([ + [null, -1], + [replyError, null], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.Stream, + ); + + expect(result).toEqual({ ...getKeyInfoResponse, size: null }); }); }); }); diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/stream.key-info.strategy.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/stream.key-info.strategy.ts index a662e88d24..f207411a0d 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/stream.key-info.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/stream.key-info.strategy.ts @@ -12,46 +12,19 @@ export class StreamKeyInfoStrategy extends KeyInfoStrategy { client: RedisClient, key: RedisString, type: string, - includeSize: boolean, ): Promise { this.logger.debug(`Getting ${RedisDataType.Stream} type info.`); - if (includeSize !== false) { - const [ - [, ttl = null], - [, length = null], - [, size = null], - ] = await client.sendPipeline([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolStreamCommands.XLen, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - - return { - name: key, - type, - ttl, - size, - length, - }; - } - const [ [, ttl = null], + [, size = null], [, length = null], ] = await client.sendPipeline([ [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], [BrowserToolStreamCommands.XLen, key], ]) as [any, number][]; - let size = -1; - if (length < 50_000) { - const sizeData = await client.sendPipeline([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - size = sizeData && sizeData[0] && sizeData[0][1]; - } - return { name: key, type, diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/z-set.key-info.strategy.spec.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/z-set.key-info.strategy.spec.ts index 595804bb9c..c530e1c4a1 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/z-set.key-info.strategy.spec.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/z-set.key-info.strategy.spec.ts @@ -34,121 +34,52 @@ describe('ZSetKeyInfoStrategy', () => { describe('getInfo', () => { const key = getKeyInfoResponse.name; - - describe('when includeSize is true', () => { - it('should return all info in single pipeline', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolZSetCommands.ZCard, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.ZSet, - true, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); + it('should return appropriate value', async () => { + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolZSetCommands.ZCard, key], + ]) + .mockResolvedValue([ + [null, -1], + [null, 50], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.ZSet, + ); + + expect(result).toEqual(getKeyInfoResponse); }); - - describe('when includeSize is false', () => { - it('should return appropriate value', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolZSetCommands.ZCard, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [null, 50], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.ZSet, - false, - ); - - expect(result).toEqual(getKeyInfoResponse); - }); - - it('should return size with null when memory usage fails', async () => { - const replyError: ReplyError = { - name: 'ReplyError', - command: BrowserToolKeysCommands.MemoryUsage, - message: "ERR unknown command 'memory'", - }; - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolZSetCommands.ZCard, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 10], - ]); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) - .mockResolvedValueOnce([ - [replyError, null], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.ZSet, - false, - ); - - expect(result).toEqual({ ...getKeyInfoResponse, size: null }); - }); - - it('should not check size when length >= 50,000', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolZSetCommands.ZCard, key], - ]) - .mockResolvedValueOnce([ - [null, -1], - [null, 50000], - ]); - - const result = await strategy.getInfo( - mockStandaloneRedisClient, - key, - RedisDataType.ZSet, - false, - ); - - expect(result).toEqual({ - ...getKeyInfoResponse, - length: 50000, - size: -1 - }); - }); + it('should return size with null value', async () => { + const replyError: ReplyError = { + name: 'ReplyError', + command: BrowserToolKeysCommands.MemoryUsage, + message: "ERR unknown command 'memory'", + }; + when(mockStandaloneRedisClient.sendPipeline) + .calledWith([ + [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], + [BrowserToolZSetCommands.ZCard, key], + ]) + .mockResolvedValue([ + [null, -1], + [replyError, null], + [null, 10], + ]); + + const result = await strategy.getInfo( + mockStandaloneRedisClient, + key, + RedisDataType.ZSet, + ); + + expect(result).toEqual({ ...getKeyInfoResponse, size: null }); }); }); }); diff --git a/redisinsight/api/src/modules/browser/keys/key-info/strategies/z-set.key-info.strategy.ts b/redisinsight/api/src/modules/browser/keys/key-info/strategies/z-set.key-info.strategy.ts index 29352b1b2d..7591dc17b1 100644 --- a/redisinsight/api/src/modules/browser/keys/key-info/strategies/z-set.key-info.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/key-info/strategies/z-set.key-info.strategy.ts @@ -12,46 +12,19 @@ export class ZSetKeyInfoStrategy extends KeyInfoStrategy { client: RedisClient, key: RedisString, type: string, - includeSize: boolean, ): Promise { this.logger.debug(`Getting ${RedisDataType.ZSet} type info.`); - if (includeSize !== false) { - const [ - [, ttl = null], - [, length = null], - [, size = null], - ] = await client.sendPipeline([ - [BrowserToolKeysCommands.Ttl, key], - [BrowserToolZSetCommands.ZCard, key], - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - - return { - name: key, - type, - ttl, - size, - length, - }; - } - const [ [, ttl = null], + [, size = null], [, length = null], ] = await client.sendPipeline([ [BrowserToolKeysCommands.Ttl, key], + [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], [BrowserToolZSetCommands.ZCard, key], ]) as [any, number][]; - let size = -1; - if (length < 50_000) { - const sizeData = await client.sendPipeline([ - [BrowserToolKeysCommands.MemoryUsage, key, 'samples', '0'], - ]) as [any, number][]; - size = sizeData && sizeData[0] && sizeData[0][1]; - } - return { name: key, type, diff --git a/redisinsight/api/src/modules/browser/keys/keys.controller.ts b/redisinsight/api/src/modules/browser/keys/keys.controller.ts index de956a35d0..da49885594 100644 --- a/redisinsight/api/src/modules/browser/keys/keys.controller.ts +++ b/redisinsight/api/src/modules/browser/keys/keys.controller.ts @@ -36,7 +36,7 @@ import { BrowserSerializeInterceptor } from 'src/common/interceptors'; @Controller('keys') @UsePipes(new ValidationPipe({ transform: true })) export class KeysController { - constructor(private keysService: KeysService) { } + constructor(private keysService: KeysService) {} @Post('') @HttpCode(200) @@ -49,7 +49,7 @@ export class KeysController { @ApiQueryRedisStringEncoding() async getKeys( @BrowserClientMetadata() clientMetadata: ClientMetadata, - @Body() dto: GetKeysDto, + @Body() dto: GetKeysDto, ): Promise { return this.keysService.getKeys(clientMetadata, dto); } @@ -66,7 +66,7 @@ export class KeysController { @ApiQueryRedisStringEncoding() async getKeysInfo( @BrowserClientMetadata() clientMetadata: ClientMetadata, - @Body() dto: GetKeysInfoDto, + @Body() dto: GetKeysInfoDto, ): Promise { return this.keysService.getKeysInfo(clientMetadata, dto); } @@ -84,9 +84,9 @@ export class KeysController { @ApiQueryRedisStringEncoding() async getKeyInfo( @BrowserClientMetadata() clientMetadata: ClientMetadata, - @Body() dto: GetKeyInfoDto, + @Body() dto: GetKeyInfoDto, ): Promise { - return await this.keysService.getKeyInfo(clientMetadata, dto.keyName, dto.includeSize); + return await this.keysService.getKeyInfo(clientMetadata, dto.keyName); } @Delete('') @@ -100,7 +100,7 @@ export class KeysController { @ApiQueryRedisStringEncoding() async deleteKey( @BrowserClientMetadata() clientMetadata: ClientMetadata, - @Body() dto: DeleteKeysDto, + @Body() dto: DeleteKeysDto, ): Promise { return await this.keysService.deleteKeys(clientMetadata, dto.keyNames); } @@ -116,7 +116,7 @@ export class KeysController { @ApiQueryRedisStringEncoding() async renameKey( @BrowserClientMetadata() clientMetadata: ClientMetadata, - @Body() dto: RenameKeyDto, + @Body() dto: RenameKeyDto, ): Promise { return await this.keysService.renameKey(clientMetadata, dto); } @@ -132,7 +132,7 @@ export class KeysController { @ApiQueryRedisStringEncoding() async updateTtl( @BrowserClientMetadata() clientMetadata: ClientMetadata, - @Body() dto: UpdateKeyTtlDto, + @Body() dto: UpdateKeyTtlDto, ): Promise { return await this.keysService.updateTtl(clientMetadata, dto); } diff --git a/redisinsight/api/src/modules/browser/keys/keys.service.ts b/redisinsight/api/src/modules/browser/keys/keys.service.ts index c6acaf21b0..1eecd9943f 100644 --- a/redisinsight/api/src/modules/browser/keys/keys.service.ts +++ b/redisinsight/api/src/modules/browser/keys/keys.service.ts @@ -41,7 +41,7 @@ export class KeysService { private readonly keyInfoProvider: KeyInfoProvider, private readonly browserHistory: BrowserHistoryService, private readonly recommendationService: DatabaseRecommendationService, - ) { } + ) {} public async getKeys( clientMetadata: ClientMetadata, @@ -103,7 +103,7 @@ export class KeysService { try { const client = await this.databaseClientFactory.getOrCreateClient(clientMetadata); const scanner = this.scanner.getStrategy(client.getConnectionType()); - const result = await scanner.getKeysInfo(client, dto.keys, dto.type, dto.includeSize, dto.includeTTL); + const result = await scanner.getKeysInfo(client, dto.keys, dto.type); this.recommendationService.check( clientMetadata, @@ -121,7 +121,6 @@ export class KeysService { public async getKeyInfo( clientMetadata: ClientMetadata, key: RedisString, - includeSize: boolean = false, ): Promise { try { this.logger.debug('Getting key info.', clientMetadata); @@ -144,7 +143,7 @@ export class KeysService { ); } - const result = await this.keyInfoProvider.getStrategy(type).getInfo(client, key, type, includeSize); + const result = await this.keyInfoProvider.getStrategy(type).getInfo(client, key, type); this.logger.debug('Succeed to get key info', clientMetadata); this.recommendationService.checkMulti( @@ -313,4 +312,4 @@ export class KeysService { throw catchAclError(error); } } -} \ No newline at end of file +} diff --git a/redisinsight/api/src/modules/browser/keys/scanner/scanner.interface.ts b/redisinsight/api/src/modules/browser/keys/scanner/scanner.interface.ts index 573a369c26..a440c81dd5 100644 --- a/redisinsight/api/src/modules/browser/keys/scanner/scanner.interface.ts +++ b/redisinsight/api/src/modules/browser/keys/scanner/scanner.interface.ts @@ -31,5 +31,5 @@ export interface IScannerStrategy { */ getKeys(client: RedisClient, args: IScannerGetKeysArgs): Promise; - getKeysInfo(client: RedisClient, keys: RedisString[], type?: RedisDataType, includeSize?: boolean, includeTTL?: boolean): Promise; + getKeysInfo(client: RedisClient, keys: RedisString[], type?: RedisDataType): Promise; } diff --git a/redisinsight/api/src/modules/browser/keys/scanner/strategies/cluster.scanner.strategy.ts b/redisinsight/api/src/modules/browser/keys/scanner/strategies/cluster.scanner.strategy.ts index 1eb74ce08c..7b2065c714 100644 --- a/redisinsight/api/src/modules/browser/keys/scanner/strategies/cluster.scanner.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/scanner/strategies/cluster.scanner.strategy.ts @@ -37,8 +37,8 @@ export class ClusterScannerStrategy extends ScannerStrategy { }) => ( host === node.host && port === node.port ) || ( - natHost === node.host && natPort === node.port - ), + natHost === node.host && natPort === node.port + ), ); }); @@ -121,7 +121,7 @@ export class ClusterScannerStrategy extends ScannerStrategy { // eslint-disable-next-line no-param-reassign node.scanned = isNull(node.total) ? 1 : node.total; }); - nodes[0].keys = await this.getKeysInfo(client, [keyName], undefined, true, true); + nodes[0].keys = await this.getKeysInfo(client, [keyName]); nodes[0].keys = nodes[0].keys.filter((key: GetKeyInfoResponse) => { if (key.ttl === -2) { return false; @@ -159,8 +159,6 @@ export class ClusterScannerStrategy extends ScannerStrategy { node.node, node.keys, args.type, - true, - true ); } else { // eslint-disable-next-line no-param-reassign @@ -182,44 +180,34 @@ export class ClusterScannerStrategy extends ScannerStrategy { client: RedisClient, keys: RedisString[], filterType?: RedisDataType, - includeSize?: boolean, - includeTTL?: boolean ): Promise { return Promise.all(keys.map(async (key) => { - const commands: RedisClientCommand[] = []; - const responseMap = { - ttl: null, - size: null, - type: null - } - - if (includeTTL) { - responseMap.ttl = commands.length - commands.push([BrowserToolKeysCommands.Ttl, key]); - } - - if (includeSize) { - responseMap.size = commands.length - commands.push(['memory', 'usage', key, 'samples', '0']); - } + const commands: RedisClientCommand[] = [ + [BrowserToolKeysCommands.Ttl, key], + ['memory', 'usage', key, 'samples', '0'], + ]; if (!filterType) { - responseMap.type = commands.length commands.push([BrowserToolKeysCommands.Type, key]); } const result = await client.sendPipeline(commands, { replyEncoding: 'utf8' }) as any[]; if (filterType) { - responseMap.type = commands.length result.push([null, filterType]); } + const [ + [, ttl = null], + [, size = null], + [, type = null], + ] = result; + return { name: key, - type: result[responseMap.type]?.[1], - ttl: responseMap.ttl !== null ? result[responseMap.ttl][1] : undefined, - size: responseMap.size !== null ? result[responseMap.size][1] : undefined, + type, + ttl, + size, }; })); } diff --git a/redisinsight/api/src/modules/browser/keys/scanner/strategies/scanner.strategy.ts b/redisinsight/api/src/modules/browser/keys/scanner/strategies/scanner.strategy.ts index 3bca5e8014..98c65e9ffd 100644 --- a/redisinsight/api/src/modules/browser/keys/scanner/strategies/scanner.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/scanner/strategies/scanner.strategy.ts @@ -16,7 +16,5 @@ export abstract class ScannerStrategy implements IScannerStrategy { client: RedisClient, keys: RedisString[], filterType?: RedisDataType, - includeSize?: boolean, - includeTTL?: boolean ): Promise; } diff --git a/redisinsight/api/src/modules/browser/keys/scanner/strategies/standalone.scanner.strategy.spec.ts b/redisinsight/api/src/modules/browser/keys/scanner/strategies/standalone.scanner.strategy.spec.ts index 2b1ccf12d3..390cb10927 100644 --- a/redisinsight/api/src/modules/browser/keys/scanner/strategies/standalone.scanner.strategy.spec.ts +++ b/redisinsight/api/src/modules/browser/keys/scanner/strategies/standalone.scanner.strategy.spec.ts @@ -382,9 +382,6 @@ describe('StandaloneScannerStrategy', () => { expect(strategy.getKeysInfo).toHaveBeenCalledWith( mockStandaloneRedisClient, [Buffer.from(key)], - undefined, - true, - true ); expect(strategy['scan']).not.toHaveBeenCalled(); }); @@ -408,9 +405,6 @@ describe('StandaloneScannerStrategy', () => { expect(strategy.getKeysInfo).toHaveBeenCalledWith( mockStandaloneRedisClient, [Buffer.from(mockSearchPattern)], - undefined, - true, - true ); expect(strategy['scan']).not.toHaveBeenCalled(); }); @@ -483,8 +477,7 @@ describe('StandaloneScannerStrategy', () => { describe('getKeysInfo', () => { const keys = ['key1', 'key2']; - - it('should return correct keys info with all info', async () => { + beforeEach(() => { when(mockStandaloneRedisClient.sendPipeline) .calledWith( keys.map((key: string) => [BrowserToolKeysCommands.Ttl, key]), @@ -506,123 +499,34 @@ describe('StandaloneScannerStrategy', () => { { replyEncoding: 'utf8' }, ) .mockResolvedValue(Array(keys.length).fill([null, 'string'])); + }); - const result = await strategy.getKeysInfo( - mockStandaloneRedisClient, - keys, - undefined, - true, // includeSize - true // includeTTL - ); - + it('should return correct keys info', async () => { const mockResult: GetKeyInfoResponse[] = keys.map((key) => ({ + ...mockKeyInfo, name: key, - type: 'string', - ttl: -1, - size: 50, })); - expect(result).toEqual(mockResult); - }); - it('should not get TTL when includeTTL is false', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith( - keys.map((key: string) => [BrowserToolKeysCommands.Type, key]), - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(Array(keys.length).fill([null, 'string'])); - - const result = await strategy.getKeysInfo( - mockStandaloneRedisClient, - keys, - undefined, - false, // includeSize - false // includeTTL - ); + const result = await strategy.getKeysInfo(mockStandaloneRedisClient, keys); - const mockResult: GetKeyInfoResponse[] = keys.map((key) => ({ - name: key, - type: 'string', - })); expect(result).toEqual(mockResult); }); - - it('should not get size when includeSize is false', async () => { - when(mockStandaloneRedisClient.sendPipeline) - .calledWith( - keys.map((key: string) => [BrowserToolKeysCommands.Ttl, key]), - ) - .mockResolvedValue(Array(keys.length).fill([null, -1])); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith( - keys.map((key: string) => [BrowserToolKeysCommands.Type, key]), - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(Array(keys.length).fill([null, 'string'])); - - const result = await strategy.getKeysInfo( - mockStandaloneRedisClient, - keys, - undefined, - false, // includeSize - true // includeTTL - ); - + it('should not call TYPE pipeline for keys with known type', async () => { const mockResult: GetKeyInfoResponse[] = keys.map((key) => ({ + ...mockKeyInfo, name: key, - type: 'string', - ttl: -1, })); - expect(result).toEqual(mockResult); - }); - - it('should return null for size when memory usage fails', async () => { - const replyError: ReplyError = { - name: 'ReplyError', - command: BrowserToolKeysCommands.MemoryUsage, - message: "ERR unknown command 'memory'", - }; - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith( - keys.map((key: string) => [BrowserToolKeysCommands.Ttl, key]), - ) - .mockResolvedValue(Array(keys.length).fill([null, -1])); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith( - keys.map((key: string) => [ - BrowserToolKeysCommands.MemoryUsage, - key, - 'samples', - '0', - ]), - ) - .mockResolvedValue(Array(keys.length).fill([replyError, null])); - - when(mockStandaloneRedisClient.sendPipeline) - .calledWith( - keys.map((key: string) => [BrowserToolKeysCommands.Type, key]), - { replyEncoding: 'utf8' }, - ) - .mockResolvedValue(Array(keys.length).fill([null, 'string'])); const result = await strategy.getKeysInfo( mockStandaloneRedisClient, keys, - undefined, - true, // includeSize - true // includeTTL + RedisDataType.String, ); - const mockResult: GetKeyInfoResponse[] = keys.map((key) => ({ - name: key, - type: 'string', - ttl: -1, - size: null, - })); expect(result).toEqual(mockResult); + expect(mockStandaloneRedisClient.sendPipeline).not.toHaveBeenCalledWith( + keys.map((key: string) => [BrowserToolKeysCommands.Type, key]), + ); }); }); }); diff --git a/redisinsight/api/src/modules/browser/keys/scanner/strategies/standalone.scanner.strategy.ts b/redisinsight/api/src/modules/browser/keys/scanner/strategies/standalone.scanner.strategy.ts index 96b4f6d38f..f286e202af 100644 --- a/redisinsight/api/src/modules/browser/keys/scanner/strategies/standalone.scanner.strategy.ts +++ b/redisinsight/api/src/modules/browser/keys/scanner/strategies/standalone.scanner.strategy.ts @@ -126,7 +126,7 @@ export class StandaloneScannerStrategy extends ScannerStrategy { const keyName = Buffer.from(unescapeRedisGlob(match)); node.cursor = 0; node.scanned = isNull(node.total) ? 1 : node.total; - node.keys = await this.getKeysInfo(client, [keyName], undefined, true, true); + node.keys = await this.getKeysInfo(client, [keyName]); node.keys = node.keys.filter((key: GetKeyInfoResponse) => { if (key.ttl === -2) { return false; @@ -142,7 +142,7 @@ export class StandaloneScannerStrategy extends ScannerStrategy { await this.scan(client, node, match, count, scanThreshold, args.type); if (node.keys.length && args.keysInfo) { - node.keys = await this.getKeysInfo(client, node.keys, args.type, true, true); + node.keys = await this.getKeysInfo(client, node.keys, args.type); } else { node.keys = node.keys.map((name) => ({ name, type: args.type || undefined })); } @@ -162,20 +162,19 @@ export class StandaloneScannerStrategy extends ScannerStrategy { client: RedisClient, keys: RedisString[], filterType?: RedisDataType, - includeSize?: boolean, - includeTTL?: boolean, ): Promise { - const sizeResults = includeSize ? await this.getKeysSize(client, keys) : []; + const sizeResults = await this.getKeysSize(client, keys); const typeResults = filterType ? Array(keys.length).fill(filterType) : await this.getKeysType(client, keys); - const ttlResults = includeTTL ? await this.getKeysTtl(client, keys) : []; - - return keys.map((key, index) => ({ - name: key, - type: typeResults[index], - ...(includeTTL && { ttl: ttlResults[index] }), - ...(includeSize && { size: sizeResults[index] }), - })); + const ttlResults = await this.getKeysTtl(client, keys); + return keys.map( + (key: string, index: number): GetKeyInfoResponse => ({ + name: key, + type: typeResults[index], + ttl: ttlResults[index], + size: sizeResults[index], + }), + ); } } diff --git a/redisinsight/api/src/modules/browser/rejson-rl/rejson-rl.service.ts b/redisinsight/api/src/modules/browser/rejson-rl/rejson-rl.service.ts index 26fe3b8a84..af2c540ff2 100644 --- a/redisinsight/api/src/modules/browser/rejson-rl/rejson-rl.service.ts +++ b/redisinsight/api/src/modules/browser/rejson-rl/rejson-rl.service.ts @@ -161,7 +161,7 @@ export class RejsonRlService { path: string, type: string, ): Promise { - const promises = []; + const result = []; let objectKeys: string[]; let arrayLength: number; @@ -174,8 +174,8 @@ export class RejsonRlService { ? `['${objectKey}']` : `["${objectKey}"]`; const fullObjectKeyPath = `${rootPath}${childPath}`; - promises.push( - this.getDetails( + result.push( + await this.getDetails( client, keyName, fullObjectKeyPath, @@ -184,22 +184,26 @@ export class RejsonRlService { ); } - return Promise.all(promises); + break; case 'array': arrayLength = await client.sendCommand([ BrowserToolRejsonRlCommands.JsonArrLen, keyName, path, ], { replyEncoding: 'utf8' }) as number; + for (let i = 0; i < arrayLength; i += 1) { const fullObjectKeyPath = `${path === '.' ? '' : path}[${i}]`; - promises.push(this.getDetails(client, keyName, fullObjectKeyPath, i)); + result.push( + await this.getDetails(client, keyName, fullObjectKeyPath, i), + ); } - - return Promise.all(promises); + break; default: return this.forceGetJson(client, keyName, path); } + + return result; } /** diff --git a/redisinsight/api/src/modules/browser/set/set.service.ts b/redisinsight/api/src/modules/browser/set/set.service.ts index c993fa7c62..fdbfdf3799 100644 --- a/redisinsight/api/src/modules/browser/set/set.service.ts +++ b/redisinsight/api/src/modules/browser/set/set.service.ts @@ -36,7 +36,7 @@ const REDIS_SCAN_CONFIG = config.get('redis_scan'); export class SetService { private logger = new Logger('SetService'); - constructor(private databaseClientFactory: DatabaseClientFactory) { } + constructor(private databaseClientFactory: DatabaseClientFactory) {} public async createSet( clientMetadata: ClientMetadata, diff --git a/redisinsight/api/src/modules/cluster-monitor/cluster-monitor.controller.ts b/redisinsight/api/src/modules/cluster-monitor/cluster-monitor.controller.ts index eaba97b663..7260ab5f6e 100644 --- a/redisinsight/api/src/modules/cluster-monitor/cluster-monitor.controller.ts +++ b/redisinsight/api/src/modules/cluster-monitor/cluster-monitor.controller.ts @@ -13,7 +13,7 @@ export class ClusterMonitorController { @ApiEndpoint({ statusCode: 200, - description: 'Get cluster details', + description: 'Get list of available plugins', responses: [ { status: 200, diff --git a/redisinsight/api/src/modules/feature/providers/feature-flag/strategies/feature.flag.strategy.ts b/redisinsight/api/src/modules/feature/providers/feature-flag/strategies/feature.flag.strategy.ts index 30d71b2c92..e8a7e7037b 100644 --- a/redisinsight/api/src/modules/feature/providers/feature-flag/strategies/feature.flag.strategy.ts +++ b/redisinsight/api/src/modules/feature/providers/feature-flag/strategies/feature.flag.strategy.ts @@ -11,7 +11,6 @@ import config, { Config } from 'src/utils/config'; import { Feature } from 'src/modules/feature/model/feature'; import { IFeatureFlag } from 'src/modules/feature/constants'; import { SessionMetadata } from 'src/common/models'; -import { filterVersion } from 'src/utils/feature-version-filter.helper'; const PATH_CONFIG = config.get('dir_path') as Config['dir_path']; @@ -106,10 +105,6 @@ export abstract class FeatureFlagStrategy { if (filter instanceof FeatureConfigFilter) { const value = get(serverState, filter?.name); - if (filter?.name.match(/version/i)) { - return filterVersion(filter.cond, value, filter?.value); - } - switch (filter?.cond) { case FeatureConfigFilterCondition.Eq: return value === filter?.value; diff --git a/redisinsight/api/src/modules/rdi/rdi.service.spec.ts b/redisinsight/api/src/modules/rdi/rdi.service.spec.ts index 85a79c9fb4..4b096b9926 100644 --- a/redisinsight/api/src/modules/rdi/rdi.service.spec.ts +++ b/redisinsight/api/src/modules/rdi/rdi.service.spec.ts @@ -145,13 +145,6 @@ describe('RdiService', () => { }); describe('create', () => { - const validGetPipelineStatus = () => Promise.resolve({ - components: { - processor:{ - version: "test-version" - } - }}); - it('should create an Rdi instance', async () => { const dto: CreateRdiDto = { name: 'name', @@ -161,9 +154,7 @@ describe('RdiService', () => { }; const sessionMetadata = { userId: '123', sessionId: '789' }; repository.create.mockResolvedValue(mockRdi); - rdiClientFactory.createClient.mockReturnValue({ - getPipelineStatus: validGetPipelineStatus - }); + rdiClientFactory.createClient.mockResolvedValue(undefined); const result = await service.create(sessionMetadata, dto); @@ -186,52 +177,6 @@ describe('RdiService', () => { await expect(service.create(sessionMetadata, dto)).rejects.toThrowError(wrapRdiPipelineError(error)); }); - - it('should get the RDI version', async () => { - const dto: CreateRdiDto = { - name: 'name', - url: 'http://localhost:4000', - password: 'pass', - username: 'user', - }; - const sessionMetadata = { userId: '123', sessionId: '789' }; - - repository.create.mockResolvedValue(mockRdi); - rdiClientFactory.createClient.mockReturnValue({ - getPipelineStatus: validGetPipelineStatus - }); - - await service.create(sessionMetadata, dto); - - expect(repository.create).toHaveBeenCalledWith(expect.objectContaining({ - version: 'test-version' - })) - }); - - it('should get the default RDI version when other information is missing', async () => { - const dto: CreateRdiDto = { - name: 'name', - url: 'http://localhost:4000', - password: 'pass', - username: 'user', - }; - const sessionMetadata = { userId: '123', sessionId: '789' }; - - repository.create.mockResolvedValue(mockRdi); - rdiClientFactory.createClient.mockResolvedValue({ - getPipelineStatus: () => Promise.resolve(({ - components: { - // missing processor.version - } - })) - }); - - await service.create(sessionMetadata, dto); - - expect(repository.create).toHaveBeenCalledWith(expect.objectContaining({ - version: '-' - })) - }); }); describe('delete', () => { diff --git a/redisinsight/api/src/modules/rdi/rdi.service.ts b/redisinsight/api/src/modules/rdi/rdi.service.ts index 32ca151984..7bf2938dae 100644 --- a/redisinsight/api/src/modules/rdi/rdi.service.ts +++ b/redisinsight/api/src/modules/rdi/rdi.service.ts @@ -16,9 +16,7 @@ import { RdiPipelineNotFoundException, wrapRdiPipelineError } from 'src/modules/ import { isUndefined, omitBy } from 'lodash'; import { deepMerge } from 'src/common/utils'; import { RdiAnalytics } from './rdi.analytics'; -import { RdiClient } from './client/rdi.client'; - -const DEFAULT_RDI_VERSION = '-'; +import { CloudAuthService } from '../cloud/auth/cloud-auth.service'; @Injectable() export class RdiService { @@ -40,12 +38,6 @@ export class RdiService { return Object.keys(omitBy(dto, isUndefined)).some((field) => this.connectionFields.includes(field)); } - private static async getRdiVersion(client: RdiClient): Promise { - const pipelineStatus = await client.getPipelineStatus(); - const version = pipelineStatus?.components?.processor?.version || DEFAULT_RDI_VERSION; - return version; - } - async list(): Promise { return await this.repository.list(); } @@ -80,6 +72,8 @@ export class RdiService { async create(sessionMetadata: SessionMetadata, dto: CreateRdiDto): Promise { const model = classToClass(Rdi, dto); model.lastConnection = new Date(); + // TODO add request to get version + model.version = '1.2'; const rdiClientMetadata = { sessionMetadata, @@ -87,8 +81,7 @@ export class RdiService { }; try { - const client = await this.rdiClientFactory.createClient(rdiClientMetadata, model); - model.version = await RdiService.getRdiVersion(client); + await this.rdiClientFactory.createClient(rdiClientMetadata, model); } catch (error) { this.logger.error('Failed to create rdi instance', sessionMetadata); diff --git a/redisinsight/api/src/utils/feature-version-filter.helper.spec.ts b/redisinsight/api/src/utils/feature-version-filter.helper.spec.ts deleted file mode 100644 index 7ca8dfab72..0000000000 --- a/redisinsight/api/src/utils/feature-version-filter.helper.spec.ts +++ /dev/null @@ -1,65 +0,0 @@ -// Import the function to test -import { FeatureConfigFilterCondition } from 'src/modules/feature/model/features-config'; -import { filterVersion } from './feature-version-filter.helper'; - -describe('filterVersion', () => { - it('should return true for Eq condition when versions are equal', () => { - expect(filterVersion(FeatureConfigFilterCondition.Eq, '1.0.0', '1.0.0')).toBe(true); - }); - - it('should return false for Eq condition when versions are not equal', () => { - expect(filterVersion(FeatureConfigFilterCondition.Eq, '1.0.1', '1.0.0')).toBe(false); - }); - - it('should return false for Neq condition when versions are equal', () => { - expect(filterVersion(FeatureConfigFilterCondition.Neq, '1.0.0', '1.0.0')).toBe(false); - }); - - it('should return true for Neq condition when versions are not equal', () => { - expect(filterVersion(FeatureConfigFilterCondition.Neq, '1.0.1', '1.0.0')).toBe(true); - }); - - it('should return true for Gt condition when first version is greater', () => { - expect(filterVersion(FeatureConfigFilterCondition.Gt, '1.0.1', '1.0.0')).toBe(true); - }); - - it('should return false for Gt condition when first version is not greater', () => { - expect(filterVersion(FeatureConfigFilterCondition.Gt, '1.0.0', '1.0.1')).toBe(false); - }); - - it('should return true for Gte condition when first version is greater', () => { - expect(filterVersion(FeatureConfigFilterCondition.Gte, '1.0.1', '1.0.0')).toBe(true); - }); - - it('should return true for Gte condition when versions are equal', () => { - expect(filterVersion(FeatureConfigFilterCondition.Gte, '1.0.0', '1.0.0')).toBe(true); - }); - - it('should return false for Gte condition when first version is less', () => { - expect(filterVersion(FeatureConfigFilterCondition.Gte, '1.0.0', '1.0.1')).toBe(false); - }); - - it('should return true for Lt condition when first version is less', () => { - expect(filterVersion(FeatureConfigFilterCondition.Lt, '1.0.0', '1.0.1')).toBe(true); - }); - - it('should return false for Lt condition when first version is not less', () => { - expect(filterVersion(FeatureConfigFilterCondition.Lt, '1.0.1', '1.0.0')).toBe(false); - }); - - it('should return true for Lte condition when first version is less', () => { - expect(filterVersion(FeatureConfigFilterCondition.Lte, '1.0.0', '1.0.1')).toBe(true); - }); - - it('should return true for Lte condition when versions are equal', () => { - expect(filterVersion(FeatureConfigFilterCondition.Lte, '1.0.0', '1.0.0')).toBe(true); - }); - - it('should return false for Lte condition when first version is greater', () => { - expect(filterVersion(FeatureConfigFilterCondition.Lte, '1.0.1', '1.0.0')).toBe(false); - }); - - it('should return false for unknown condition', () => { - expect(filterVersion('UnknownCondition' as FeatureConfigFilterCondition, '1.0.0', '1.0.0')).toBe(false); - }); -}); diff --git a/redisinsight/api/src/utils/feature-version-filter.helper.ts b/redisinsight/api/src/utils/feature-version-filter.helper.ts deleted file mode 100644 index 09d61321ad..0000000000 --- a/redisinsight/api/src/utils/feature-version-filter.helper.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { FeatureConfigFilterCondition } from 'src/modules/feature/model/features-config'; -import * as semverCompare from 'node-version-compare'; - -export const filterVersion = (cond: FeatureConfigFilterCondition, value: string, filterValue: string) => { - const compareRes = semverCompare(value, filterValue); - switch (cond) { - case FeatureConfigFilterCondition.Eq: - return compareRes === 0; - case FeatureConfigFilterCondition.Neq: - return compareRes !== 0; - case FeatureConfigFilterCondition.Gt: - return compareRes > 0; - case FeatureConfigFilterCondition.Gte: - return compareRes >= 0; - case FeatureConfigFilterCondition.Lt: - return compareRes < 0; - case FeatureConfigFilterCondition.Lte: - return compareRes <= 0; - default: - return false; - } -}; diff --git a/redisinsight/api/test/README.md b/redisinsight/api/test/README.md deleted file mode 100644 index 5ba73b9268..0000000000 --- a/redisinsight/api/test/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Integration Tests - -## How to Run - -### Prerequisites - -- **First Time Running Tests?** - If you're running the tests for the first time, please review the [Short Explanation and High-Level Overview](#short-explanation-and-high-level-overview). - -- **Running a Subset of Tests** - You can run a specific subset of tests by modifying the `spec` glob in `/redisinsight/api/test/api/.mocharc.yml`. This allows you to execute only the tests you need. - -### Steps to Run Tests - -1. **Run the Desired Environment** - It's recommended to use Docker for this, as it provides better control over versioning and switching between environments. - -1. **Execute the Tests** - From the root directory of the repository, run the following command: - - ```bash - yarn test:api:integration - ``` - -#### Example - -Let’s walk through an example where you need to run tests related to `string`. - -1. **Modify the Test Subset** - Update `/redisinsight/api/test/api/.mocharc.yml` to include only the `string` tests: - - ```yaml - spec: - - 'test/**/string/**/*.test.ts' - ``` - -1. **Run the Environment in Docker** - For this example, let’s assume you need to run the tests against the `OSS-ST-6` environment. To do this: - - - Navigate to the environment directory: - - ```bash - cd /redisinsight/api/test/test-runs/oss-st-6 - ``` - - - Start Docker: - ```bash - docker-compose up - ``` - -1. **Run the Tests** - Finally, execute the tests from the root directory: - - ```bash - yarn test:api:integration - ``` - ---- - -## Short Explanation and High-Level Overview - -The integration tests follow a basic structure: - -- **Redis Environment**: Tests are executed against various Redis environments such as Redis Community Edition (Redis OSS), Redis Cluster, Redis Stack, etc. -- **Test Suites**: A collection of test scenarios are designed to evaluate different Redis features. - -> **Note:** Keep in mind that specific Redis environments might require additional test suites. For example, Redis Stack includes `RediSearch`, which is not available in Redis OSS, meaning tests designed for `RediSearch` will fail if executed in a Redis OSS environment. - ---- - -### Project Structure - -#### Tests - -The `/redisinsight/api/test/api` directory contains all the test scenarios for the integration tests. - -#### Environments - -The `/redisinsight/api/test/test-runs` directory houses the Redis Test Environments (RTEs). Some of these environments have more complex setups, such as TLS with authentication, and thus include all necessary components (e.g., keys, certificates). - -> **Note:** You may encounter some code related to GitHub Actions workflows, as these tests are also automatically run through CI/CD. diff --git a/redisinsight/api/test/api/keys/POST-databases-id-keys-get_info.test.ts b/redisinsight/api/test/api/keys/POST-databases-id-keys-get_info.test.ts index 7f0567921a..59a449e136 100644 --- a/redisinsight/api/test/api/keys/POST-databases-id-keys-get_info.test.ts +++ b/redisinsight/api/test/api/keys/POST-databases-id-keys-get_info.test.ts @@ -29,8 +29,8 @@ const validInputData = { const responseSchema = Joi.object().keys({ name: JoiRedisString.required(), type: Joi.string().required(), - ttl: Joi.number().integer().allow(null).optional(), - size: Joi.number().integer().allow(null).optional(), + ttl: Joi.number().integer().required(), + size: Joi.number().integer().required(), length: Joi.number().integer().required(), }).required(); @@ -238,9 +238,9 @@ describe('POST /databases/:instanceId/keys/get-info', () => { endpoint: () => endpoint(constants.TEST_INSTANCE_ACL_ID), ...testCase, checkFn: ({ body }) => { - expect(body.ttl).to.be.oneOf([null, undefined]); - expect(body.length).to.be.oneOf([null, undefined]); - expect(body.size).to.be.oneOf([null, undefined]); + expect(body.ttl).to.eql(null); + expect(body.length).to.eql(null); + expect(body.size).to.eql(null); } }); }); diff --git a/redisinsight/api/test/api/keys/POST-databases-id-keys-get_infos.test.ts b/redisinsight/api/test/api/keys/POST-databases-id-keys-get_infos.test.ts index 4778a1e592..3c70618bc0 100644 --- a/redisinsight/api/test/api/keys/POST-databases-id-keys-get_infos.test.ts +++ b/redisinsight/api/test/api/keys/POST-databases-id-keys-get_infos.test.ts @@ -20,8 +20,8 @@ const endpoint = (instanceId = constants.TEST_INSTANCE_ID) => const responseSchema = Joi.array().items(Joi.object().keys({ name: JoiRedisString.required(), type: Joi.string().required(), - ttl: Joi.number().integer().allow(null).optional(), - size: Joi.number().integer().allow(null).optional(), + ttl: Joi.number().integer().required(), + size: Joi.number().integer().allow(null).required(), })).required(); const mainCheckFn = async (testCase) => { @@ -45,50 +45,6 @@ describe('POST /databases/:instanceId/keys/get-metadata', () => { before(rte.data.generateBinKeys); [ - { - name: 'Should not return size if includeSize is false', - data: { - keys: [constants.TEST_STRING_KEY_BIN_BUFFER_1], - includeSize: false, - }, - responseSchema, - checkFn: ({ body }) => { - expect(body[0].size).to.eql(undefined); - } - }, - { - name: 'Should return size if includeSize is true', - data: { - keys: [constants.TEST_STRING_KEY_BIN_BUFFER_1], - includeSize: true, - }, - responseSchema, - checkFn: ({ body }) => { - expect(body[0].size).to.be.a('number') - } - }, - { - name: 'Should not return ttl if includeTTL is false', - data: { - keys: [constants.TEST_STRING_KEY_BIN_BUFFER_1], - includeTTL: false, - }, - responseSchema, - checkFn: ({ body }) => { - expect(body[0].ttl).to.eql(undefined); - } - }, - { - name: 'Should return ttl if includeTTL is true', - data: { - keys: [constants.TEST_STRING_KEY_BIN_BUFFER_1], - includeTTL: true, - }, - responseSchema, - checkFn: ({ body }) => { - expect(body[0].ttl).to.be.a('number') - } - }, { name: 'Should return string info in utf8 (default)', data: { @@ -149,8 +105,8 @@ describe('POST /databases/:instanceId/keys/get-metadata', () => { responseSchema, checkFn: ({ body }) => { expect(body[0].name).to.deep.eq(constants.TEST_STRING_KEY_BIN_UTF8_1); - expect(body[0].ttl).to.be.oneOf([-2, undefined]); - expect(body[0].size).to.be.oneOf([null, undefined]); + expect(body[0].ttl).to.deep.eq(-2); + expect(body[0].size).to.deep.eq(null); expect(body[0].type).to.deep.eq('none'); } }, diff --git a/redisinsight/api/test/api/keys/POST-databases-id-keys.test.ts b/redisinsight/api/test/api/keys/POST-databases-id-keys.test.ts index 98d74517b4..638fd6e047 100644 --- a/redisinsight/api/test/api/keys/POST-databases-id-keys.test.ts +++ b/redisinsight/api/test/api/keys/POST-databases-id-keys.test.ts @@ -27,7 +27,7 @@ const responseSchema = Joi.array().items(Joi.object().keys({ name: JoiRedisString.required(), type: Joi.string(), ttl: Joi.number().integer(), - size: Joi.number().allow(null), // todo: fix size pipeline for cluster + size: Joi.number(), // todo: fix size pipeline for cluster })).required(), }).required()).required(); @@ -58,7 +58,7 @@ const isKeyInResponse = (body, keyName) => _.find( describe('POST /databases/:id/keys', () => { // todo: add query validation - xdescribe('Validation', () => { }); + xdescribe('Validation', () => {}); describe('Modes', () => { requirements('!rte.bigData'); @@ -301,7 +301,7 @@ describe('POST /databases/:id/keys', () => { name: 'Should search by with ? in the end', data: { cursor: '0', - match: `${constants.TEST_RUN_ID}_str_key_10?`, + match: `${constants.TEST_RUN_ID}_str_key_10?` }, responseSchema, checkFn: ({ body }) => { @@ -398,7 +398,7 @@ describe('POST /databases/:id/keys', () => { match: `${constants.TEST_RUN_ID}_str_key_10[0,1,2]` }, responseSchema, - checkFn: ({ body }) => { + checkFn: ({body}) => { const result = { total: 0, scanned: 0, @@ -415,7 +415,7 @@ describe('POST /databases/:id/keys', () => { expect(result.total).to.eql(KEYS_NUMBER); expect(result.scanned).to.gte(KEYS_NUMBER); expect(result.keys.length).to.gte(1).lte(3); - result.keys.map(({ name }) => { + result.keys.map(({name}) => { expect(name.indexOf(`${constants.TEST_RUN_ID}_str_key_10`)).to.eql(0); }) } diff --git a/redisinsight/api/test/api/rdi/POST-rdi.test.ts b/redisinsight/api/test/api/rdi/POST-rdi.test.ts index ea213d9ed7..a892bc0455 100644 --- a/redisinsight/api/test/api/rdi/POST-rdi.test.ts +++ b/redisinsight/api/test/api/rdi/POST-rdi.test.ts @@ -60,9 +60,6 @@ describe('POST /rdi', () => { nock(validInputData.url).post(`/${RdiUrl.Login}`).query(true).reply(200, { access_token: mockedAccessToken, }); - nock(validInputData.url).get(`/${RdiUrl.GetPipelineStatus}`).query(true).reply(200, { - version: '2.17', - }); } }, { diff --git a/redisinsight/api/test/api/redisearch/POST-databases-id-redisearch-info.test.ts b/redisinsight/api/test/api/redisearch/POST-databases-id-redisearch-info.test.ts index 6687bb88ce..e963782cce 100644 --- a/redisinsight/api/test/api/redisearch/POST-databases-id-redisearch-info.test.ts +++ b/redisinsight/api/test/api/redisearch/POST-databases-id-redisearch-info.test.ts @@ -27,14 +27,14 @@ const validInputData = { index: constants.TEST_SEARCH_HASH_INDEX_1, }; -const BASE_RESPONSE_SCHEMA = { +const responseSchema = Joi.object({ index_name: Joi.string().required(), index_options: Joi.object({}), - index_definition: { + index_definition: Joi.object({ key_type: Joi.string(), prefixes: Joi.array(), default_score: Joi.string(), - }, + }), attributes: Joi.array().items({ identifier: Joi.string(), attribute: Joi.string(), @@ -47,8 +47,13 @@ const BASE_RESPONSE_SCHEMA = { NOSTEM: Joi.string(), SEPARATOR: Joi.string(), }), + num_docs: Joi.string(), + max_doc_id: Joi.string(), + num_terms: Joi.string(), + num_records: Joi.string(), inverted_sz_mb: Joi.string(), vector_index_sz_mb: Joi.string(), + total_inverted_index_blocks: Joi.string(), offset_vectors_sz_mb: Joi.string(), doc_table_size_mb: Joi.string(), sortable_values_size_mb: Joi.string(), @@ -61,7 +66,9 @@ const BASE_RESPONSE_SCHEMA = { bytes_per_record_avg: Joi.string(), offsets_per_term_avg: Joi.string(), offset_bits_per_record_avg: Joi.string(), + hash_indexing_failures: Joi.string(), total_indexing_time: Joi.string(), + indexing: Joi.string(), percent_indexed: Joi.string(), number_of_uses: Joi.number(), cleaning: Joi.number(), @@ -74,38 +81,7 @@ const BASE_RESPONSE_SCHEMA = { attribute: Joi.string(), 'Index Errors': Joi.object(), }), -}; - -const EXPECTED_SCHEMA_V1 = Joi.object({ - ...BASE_RESPONSE_SCHEMA, - num_docs: Joi.string(), - max_doc_id: Joi.string(), - num_terms: Joi.string(), - num_records: Joi.string(), - total_inverted_index_blocks: Joi.string(), - hash_indexing_failures: Joi.string(), - indexing: Joi.string(), - index_definition: Joi.object(BASE_RESPONSE_SCHEMA.index_definition) -}).required().strict(); - -const EXPECTED_SCHEMA_V2 = Joi.object({ - ...BASE_RESPONSE_SCHEMA, - num_docs: Joi.number(), - max_doc_id: Joi.number(), - num_terms: Joi.number(), - num_records: Joi.number(), - total_inverted_index_blocks: Joi.number(), - hash_indexing_failures: Joi.number(), - indexing: Joi.number(), - index_definition: Joi.object({ - ...BASE_RESPONSE_SCHEMA.index_definition, - indexes_all: Joi.string(), - }) }).required().strict(); - -const INVALID_INDEX_ERROR_MESSAGE_V1: string = "Unknown Index name"; -const INVALID_INDEX_ERROR_MESSAGE_V2: string = "Unknown index name"; - const mainCheckFn = getMainCheckFn(endpoint); describe('POST /databases/:id/redisearch/info', () => { @@ -121,67 +97,12 @@ describe('POST /databases/:id/redisearch/info', () => { ); }); - describe('Common, redisearch version < 2.8.X', () => { - requirements('rte.modules.search.version<20800'); - [ - { - name: 'Should get info index', - data: validInputData, - responseSchema: EXPECTED_SCHEMA_V1, - checkFn: async ({ body }) => { - expect(body.index_name).to.eq(constants.TEST_SEARCH_HASH_INDEX_1); - expect(body.index_definition?.key_type).to.eq('HASH'); - }, - }, - { - name: 'Should throw error if non-existent index provided', - data: { - index: 'Invalid index', - }, - statusCode: 500, - responseBody: { - message: INVALID_INDEX_ERROR_MESSAGE_V1, - error: 'Internal Server Error', - statusCode: 500, - }, - }, - ].forEach(mainCheckFn); - }); - - describe('Common, 2.8.X <= redisearch version < 2.10.X', () => { - requirements(() => 20800 <= rte.env.modules.search.version && rte.env.modules.search.version < 21000); - [ - { - name: 'Should get info index', - data: validInputData, - responseSchema: EXPECTED_SCHEMA_V1, - checkFn: async ({ body }) => { - expect(body.index_name).to.eq(constants.TEST_SEARCH_HASH_INDEX_1); - expect(body.index_definition?.key_type).to.eq('HASH'); - }, - }, - { - name: 'Should throw error if non-existent index provided', - data: { - index: 'Invalid index', - }, - statusCode: 500, - responseBody: { - message: INVALID_INDEX_ERROR_MESSAGE_V2, - error: 'Internal Server Error', - statusCode: 500, - }, - }, - ].forEach(mainCheckFn); - }); - - describe('Common, redisearch version >= 2.10.X', () => { - requirements('rte.modules.search.version>=21000'); + describe('Common', () => { [ { name: 'Should get info index', data: validInputData, - responseSchema: EXPECTED_SCHEMA_V2, + responseSchema, checkFn: async ({ body }) => { expect(body.index_name).to.eq(constants.TEST_SEARCH_HASH_INDEX_1); expect(body.index_definition?.key_type).to.eq('HASH'); @@ -194,7 +115,7 @@ describe('POST /databases/:id/redisearch/info', () => { }, statusCode: 500, responseBody: { - message: INVALID_INDEX_ERROR_MESSAGE_V2, + message: 'Unknown Index name', error: 'Internal Server Error', statusCode: 500, }, diff --git a/redisinsight/api/test/helpers/data/redis.ts b/redisinsight/api/test/helpers/data/redis.ts index ecd5a2d4e5..273b20a8d3 100644 --- a/redisinsight/api/test/helpers/data/redis.ts +++ b/redisinsight/api/test/helpers/data/redis.ts @@ -91,11 +91,11 @@ export const initDataHelper = (rte) => { const truncate = async () => { return client.nodes ? Promise.all(client.nodes('master').map(async (node) => { - try { - return flushTestRunData(node); - } catch (e) { - return null; - } + try { + return flushTestRunData(node); + } catch (e) { + return null; + } })) : flushTestRunData(client); }; @@ -223,7 +223,7 @@ export const initDataHelper = (rte) => { ); await client.rpush( constants.TEST_LIST_KEY_2, - ...(new Array(100).fill(0)).map((item, i) => `element_${i + 1}`) + ...(new Array(100).fill(0)).map((item, i) => `element_${i+1}`) ); }; @@ -255,7 +255,7 @@ export const initDataHelper = (rte) => { await client.sadd(constants.TEST_SET_KEY_1, constants.TEST_SET_MEMBER_1); await client.sadd( constants.TEST_SET_KEY_2, - ...(new Array(100).fill(0)).map((item, i) => `member_${i + 1}`) + ...(new Array(100).fill(0)).map((item, i) => `member_${i+1}`) ); }; @@ -471,11 +471,11 @@ export const initDataHelper = (rte) => { const generateNKeys = async (number: number = 15000, clean: boolean) => { await generateAnyKeys([ - { create: n => _.map(new Array(n), (v, i) => ['set', `${constants.TEST_RUN_ID}_str_key_${i}`, `str_val_${i}`]) }, // string - { create: n => _.map(new Array(n), (v, i) => ['lpush', `${constants.TEST_RUN_ID}_list_key_${i}`, `list_val_${i}`]) }, // list - { create: n => _.map(new Array(n), (v, i) => ['sadd', `${constants.TEST_RUN_ID}_set_key_${i}`, `set_val_${i}`]) }, // set - { create: n => _.map(new Array(n), (v, i) => ['zadd', `${constants.TEST_RUN_ID}_zset_key_${i}`, 0, `zset_val_${i}`]) }, // zset - { create: n => _.map(new Array(n), (v, i) => ['hset', `${constants.TEST_RUN_ID}_hash_key_${i}`, `field`, `hash_val_${i}`]) }, // hash + { create: n => _.map(new Array(n), (v,i) => ['set', `${constants.TEST_RUN_ID}_str_key_${i}`, `str_val_${i}`]) }, // string + { create: n => _.map(new Array(n), (v,i) => ['lpush', `${constants.TEST_RUN_ID}_list_key_${i}`, `list_val_${i}`]) }, // list + { create: n => _.map(new Array(n), (v,i) => ['sadd', `${constants.TEST_RUN_ID}_set_key_${i}`, `set_val_${i}`]) }, // set + { create: n => _.map(new Array(n), (v,i) => ['zadd', `${constants.TEST_RUN_ID}_zset_key_${i}`, 0, `zset_val_${i}`]) }, // zset + { create: n => _.map(new Array(n), (v,i) => ['hset', `${constants.TEST_RUN_ID}_hash_key_${i}`, `field`, `hash_val_${i}`]) }, // hash ], number, clean); await waitForInfoSync(); @@ -486,66 +486,30 @@ export const initDataHelper = (rte) => { await sendCommand('ft.create', [constants.TEST_SEARCH_HASH_INDEX_1, 'on', 'hash', 'schema', 'field', 'text']); await sendCommand('ft.create', [constants.TEST_SEARCH_HASH_INDEX_2, 'on', 'hash', 'schema', '*', 'text']); - - // Indexes creation needs some additional time to complete, which usually is around 500ms - await waitIndexingToComplete([constants.TEST_SEARCH_HASH_INDEX_1, constants.TEST_SEARCH_HASH_INDEX_2]) }; - /** - * Checks periodically (`retryLimit` times, every `retryInterval` milliseconds) if the creation of the `hashIndexes` has completed. - * - * @param {string[]} indexes - string array containing the hashes of the indexes. - * @param {number} [retryLimit=3] - the maximum number of iterations. Defaults to 3. - * @param {number} [retryInterval=300] - the time wait between iterations, in milliseconds. Defaults to 300. - */ - const waitIndexingToComplete = async (hashIndexes: string[], retryLimit = 3, retryInterval = 300) => { - let indexesCompleted = new Array(hashIndexes.length).fill(false); - for(let retryCounter = 0; retryCounter < retryLimit; retryCounter++) { - await new Promise((resolve) => setTimeout(resolve, retryInterval)); - - for (let i = 0; i < hashIndexes.length; i++) { - // ft.info command returns an array which contains data that shows wether the indexing is in progress - // it looks something like this: ["index_name", "the_index_name", ... "indexing", 0, ...] - const indexInfo = await sendCommand('ft.info', [hashIndexes[i]]); - - // searching for the "indexing" property index, so we can reach it's value using index + 1 in the info array - const indexingPropertyIndex = indexInfo.indexOf("indexing"); - const indexingValue = indexInfo[indexingPropertyIndex + 1]; // 1 - in progress, 0 - completed - indexesCompleted[i] = !indexingValue; - } - - if (!indexesCompleted.includes(false)) { - break; - } - } - - if (indexesCompleted.includes(false)) { - console.error('Indexing has not yet completed'); - } - } - const generateNReJSONs = async (number: number = 300, clean: boolean) => { const jsonValue = JSON.stringify(constants.TEST_REJSON_VALUE_1); await generateAnyKeys([ - { create: n => _.map(new Array(n), (v, i) => ['json.set', `${constants.TEST_RUN_ID}_rejson_key_${i}`, '.', jsonValue]) }, + { create: n => _.map(new Array(n), (v,i) => ['json.set', `${constants.TEST_RUN_ID}_rejson_key_${i}`, '.', jsonValue]) }, ], number, clean); }; const generateNTimeSeries = async (number: number = 300, clean: boolean) => { await generateAnyKeys([ - { create: n => _.map(new Array(n), (v, i) => ['ts.create', `${constants.TEST_RUN_ID}_ts_key_${i}`, `ts_val_${i}`]) }, + { create: n => _.map(new Array(n), (v,i) => ['ts.create', `${constants.TEST_RUN_ID}_ts_key_${i}`, `ts_val_${i}`]) }, ], number, clean); }; const generateNStreams = async (number: number = 300, clean: boolean) => { await generateAnyKeys([ - { create: n => _.map(new Array(n), (v, i) => ['xadd', `${constants.TEST_RUN_ID}_st_key_${i}`, `*`, `st_field_${i}`, `st_val_${i}`]) }, + { create: n => _.map(new Array(n), (v,i) => ['xadd', `${constants.TEST_RUN_ID}_st_key_${i}`, `*`, `st_field_${i}`, `st_val_${i}`]) }, ], number, clean); }; const generateNGraphs = async (number: number = 300, clean: boolean) => { await generateAnyKeys([ - { create: n => _.map(new Array(n), (v, i) => ['graph.query', `${constants.TEST_RUN_ID}_graph_key_${i}`, `CREATE (n_${i})`]) }, + { create: n => _.map(new Array(n), (v,i) => ['graph.query', `${constants.TEST_RUN_ID}_graph_key_${i}`, `CREATE (n_${i})`]) }, ], number, clean); }; diff --git a/redisinsight/desktop/src/lib/window/browserWindow.ts b/redisinsight/desktop/src/lib/window/browserWindow.ts index fc92a6e7a4..98adceef70 100644 --- a/redisinsight/desktop/src/lib/window/browserWindow.ts +++ b/redisinsight/desktop/src/lib/window/browserWindow.ts @@ -46,7 +46,7 @@ export const createWindow = async ({ if (isNewMainWindow) { const [currentWindowX, currentWindowY] = currentWindow.getPosition() - const [currentWindowWidth, currentWindowHeight] = currentWindow?.includeSize() + const [currentWindowWidth, currentWindowHeight] = currentWindow?.getSize() x = currentWindowX + NEW_WINDOW_OFFSET y = currentWindowY + NEW_WINDOW_OFFSET width = currentWindowWidth diff --git a/redisinsight/ui/index.html b/redisinsight/ui/index.html index f3c925c0c4..1589e13ea4 100644 --- a/redisinsight/ui/index.html +++ b/redisinsight/ui/index.html @@ -19,54 +19,9 @@ window.__RI_PROXY_PATH__ = undefined; } - - - - <% if(isDev){ %> - - <% } %> - +
-
-
-
diff --git a/redisinsight/ui/package.json b/redisinsight/ui/package.json index af59e5bbe4..f53fee0b8c 100644 --- a/redisinsight/ui/package.json +++ b/redisinsight/ui/package.json @@ -12,6 +12,6 @@ "scripts": { "dev": "vite dev", "build": "vite build", - "stats": "NODE_OPTIONS=--max_old_space_size=8192 npx vite-bundle-visualizer --open -o ./dist-stats.html --sourcemap" + "stats": "npx vite-bundle-visualizer --open -o ./dist-stats.html --sourcemap" } } diff --git a/redisinsight/ui/src/App.tsx b/redisinsight/ui/src/App.tsx index 36086de4d1..fc5ce9e3b2 100644 --- a/redisinsight/ui/src/App.tsx +++ b/redisinsight/ui/src/App.tsx @@ -1,11 +1,11 @@ -import React, { ReactElement, useEffect } from 'react' +import React, { ReactElement } from 'react' import { Provider, useSelector } from 'react-redux' import { EuiPage, EuiPageBody } from '@elastic/eui' import { Route, Switch } from 'react-router-dom' import { store } from 'uiSrc/slices/store' import { appInfoSelector } from 'uiSrc/slices/app/info' -import { removePagePlaceholder } from 'uiSrc/utils' +import { PagePlaceholder } from 'uiSrc/components' import MonacoLanguages from 'uiSrc/components/monaco-laguages' import AppInit from 'uiSrc/components/init/AppInit' import { Pages, Theme } from './constants' @@ -40,11 +40,6 @@ const AppWrapper = ({ children }: { children?: ReactElement[] }) => ( ) const App = ({ children }: { children?: ReactElement[] }) => { const { loading: serverLoading } = useSelector(appInfoSelector) - useEffect(() => { - if (!serverLoading) { - removePagePlaceholder() - } - }, [serverLoading]) return (
@@ -59,14 +54,18 @@ const App = ({ children }: { children?: ReactElement[] }) => { path="*" render={() => ( <> - - - - - - - - + { serverLoading + ? + : ( + + + + + + + + + )} diff --git a/redisinsight/ui/src/assets/img/icons/columns.svg b/redisinsight/ui/src/assets/img/icons/columns.svg deleted file mode 100644 index b093171ee9..0000000000 --- a/redisinsight/ui/src/assets/img/icons/columns.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/redisinsight/ui/src/assets/img/redis-software.svg b/redisinsight/ui/src/assets/img/redis-software.svg deleted file mode 100644 index bf7cda77ca..0000000000 --- a/redisinsight/ui/src/assets/img/redis-software.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/redisinsight/ui/src/assets/img/shield.svg b/redisinsight/ui/src/assets/img/shield.svg deleted file mode 100644 index c076cf225c..0000000000 --- a/redisinsight/ui/src/assets/img/shield.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/redisinsight/ui/src/components/MonacoEnvironmentInitializer/MonacoEnvironmentInitializer.tsx b/redisinsight/ui/src/components/MonacoEnvironmentInitializer/MonacoEnvironmentInitializer.tsx index e3000f3330..f44ad1ceb6 100644 --- a/redisinsight/ui/src/components/MonacoEnvironmentInitializer/MonacoEnvironmentInitializer.tsx +++ b/redisinsight/ui/src/components/MonacoEnvironmentInitializer/MonacoEnvironmentInitializer.tsx @@ -2,6 +2,7 @@ import { useEffect } from 'react' import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker' import JSONWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker' +import TypeScriptWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker' // https://github.com/remcohaszing/monaco-yaml?tab=readme-ov-file#why-doesnt-it-work-with-vite import YamlWorker from './yaml.worker?worker' @@ -16,6 +17,9 @@ const MonacoEnvironmentInitializer = () => { return new YamlWorker() case 'json': return new JSONWorker() + case 'javascript': + case 'typescript': + return new TypeScriptWorker() default: throw new Error(`MonacoWorker: Unknown label ${label}`) } diff --git a/redisinsight/ui/src/components/init/AppInit.tsx b/redisinsight/ui/src/components/init/AppInit.tsx index d666bc7e73..dfb8877f51 100644 --- a/redisinsight/ui/src/components/init/AppInit.tsx +++ b/redisinsight/ui/src/components/init/AppInit.tsx @@ -6,7 +6,6 @@ import { STATUS_FAIL, STATUS_SUCCESS, } from 'uiSrc/slices/app/init' -import { removePagePlaceholder } from 'uiSrc/utils' import ConnectivityError from 'uiSrc/components/connectivity-error/ConnectivityError' import SuspenseLoader from 'uiSrc/components/main-router/components/SuspenseLoader' @@ -29,7 +28,6 @@ const AppInit = ({ children, onSuccess, onFail }: Props) => { }, []) if (status === STATUS_FAIL) { - removePagePlaceholder() return } diff --git a/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/InstancesNavigationPopover.tsx b/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/InstancesNavigationPopover.tsx index 1ea6bd25e3..9f4fd4abc8 100644 --- a/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/InstancesNavigationPopover.tsx +++ b/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/InstancesNavigationPopover.tsx @@ -137,7 +137,6 @@ const InstancesNavigationPopover = ({ name }: Props) => { selectedTab={selectedTab} filteredDbInstances={filteredDbInstances} filteredRdiInstances={filteredRdiInstances} - onItemClick={showPopover} />
diff --git a/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/components/instances-list/InstancesList.tsx b/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/components/instances-list/InstancesList.tsx index 5c491172d3..1a6f9313e3 100644 --- a/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/components/instances-list/InstancesList.tsx +++ b/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/components/instances-list/InstancesList.tsx @@ -1,10 +1,14 @@ import React, { useState } from 'react' import { EuiListGroup, EuiListGroupItem, EuiLoadingSpinner, EuiText } from '@elastic/eui' -import { useDispatch } from 'react-redux' +import { useDispatch, useSelector } from 'react-redux' import { useHistory, useParams } from 'react-router-dom' -import { checkConnectToRdiInstanceAction } from 'uiSrc/slices/rdi/instances' -import { checkConnectToInstanceAction, setConnectedInstanceId } from 'uiSrc/slices/instances/instances' +import { checkConnectToRdiInstanceAction, instancesSelector as rdiInstancesSelector } from 'uiSrc/slices/rdi/instances' +import { checkConnectToInstanceAction, instancesSelector as dbInstancesSelector, setConnectedInstanceId } from 'uiSrc/slices/instances/instances' import { Pages } from 'uiSrc/constants' +import { resetRdiContext, setAppContextInitialState } from 'uiSrc/slices/app/context' +import { resetKeys } from 'uiSrc/slices/browser/keys' +import { resetRedisearchKeysData } from 'uiSrc/slices/browser/redisearch' +import { resetCliHelperSettings, resetCliSettingsAction } from 'uiSrc/slices/cli/cli-settings' import { Instance, RdiInstance } from 'uiSrc/slices/interfaces' import { TelemetryEvent, getRedisModulesSummary, sendEventTelemetry } from 'uiSrc/telemetry' import { getDbIndex } from 'uiSrc/utils' @@ -15,14 +19,12 @@ export interface InstancesListProps { selectedTab: InstancesTabs filteredDbInstances: Instance[] filteredRdiInstances: RdiInstance[] - onItemClick: () => void } const InstancesList = ({ selectedTab, filteredDbInstances, filteredRdiInstances, - onItemClick, } :InstancesListProps) => { const [loading, setLoading] = useState(false) const [selected, setSelected] = useState('') @@ -30,17 +32,18 @@ const InstancesList = ({ const { instanceId, rdiInstanceId } = useParams<{ instanceId: string, rdiInstanceId: string }>() const history = useHistory() const dispatch = useDispatch() + const { connectedInstance: connectedRdiInstance } = useSelector(rdiInstancesSelector) + const { connectedInstance: connectedDbInstance } = useSelector(dbInstancesSelector) const instances = selectedTab === InstancesTabs.Databases ? filteredDbInstances : filteredRdiInstances const connectToInstance = (id = '') => { dispatch(setConnectedInstanceId(id)) setLoading(false) - onItemClick?.() history.push(Pages.browser(id)) } const goToInstance = (instance: Instance) => { - if (instanceId === instance.id) { + if (connectedDbInstance?.id === instance.id) { // already connected so do nothing return } @@ -59,7 +62,7 @@ const InstancesList = ({ } const goToRdiInstance = (instance: RdiInstance) => { - if (rdiInstanceId === instance.id) { + if (connectedRdiInstance?.id === instance.id) { // already connected so do nothing return } @@ -68,7 +71,7 @@ const InstancesList = ({ instance.id, (id: string) => { setLoading(false) - onItemClick?.() + history.push(Pages.rdiPipelineConfig(id)) }, () => setLoading(false) diff --git a/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/styles.module.scss b/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/styles.module.scss index 17a8124ffa..472ca484ad 100644 --- a/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/styles.module.scss +++ b/redisinsight/ui/src/components/instance-header/components/instances-navigation-popover/styles.module.scss @@ -9,10 +9,6 @@ .breadCrumbLink { cursor: pointer; text-decoration: underline; - max-width: 300px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; &:hover { text-decoration: none; @@ -90,15 +86,13 @@ } } -.listContainer { - :global(.euiListGroupItem-isActive), :global(.euiListGroupItem:hover) { - background-color: var(--hoverInListColorDarken) !important; - color: var(--euiTextSubduedColorHover) !important; - border-left-color: var(--externalLinkColor) !important; - border-left-width: 3px !important; - border-left-style: solid !important; - text-decoration: none !important; - } +.listContainer :global(.euiListGroupItem-isActive), :global(.euiListGroupItem:hover) { + background-color: var(--hoverInListColorDarken) !important; + color: var(--euiTextSubduedColorHover) !important; + border-left-color: var(--externalLinkColor) !important; + border-left-width: 3px !important; + border-left-style: solid !important; + text-decoration: none !important; } .footerContainer { diff --git a/redisinsight/ui/src/components/monaco-editor/components/monaco-js/MonacoJS.spec.tsx b/redisinsight/ui/src/components/monaco-editor/components/monaco-js/MonacoJS.spec.tsx new file mode 100644 index 0000000000..c289bd3482 --- /dev/null +++ b/redisinsight/ui/src/components/monaco-editor/components/monaco-js/MonacoJS.spec.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { render } from 'uiSrc/utils/test-utils' + +import MonacoJS from './MonacoJS' + +describe('MonacoJS', () => { + it('should render', () => { + expect(render()).toBeTruthy() + }) +}) diff --git a/redisinsight/ui/src/components/monaco-editor/components/monaco-js/MonacoJS.tsx b/redisinsight/ui/src/components/monaco-editor/components/monaco-js/MonacoJS.tsx new file mode 100644 index 0000000000..2bee099444 --- /dev/null +++ b/redisinsight/ui/src/components/monaco-editor/components/monaco-js/MonacoJS.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import { monaco as monacoEditor } from 'react-monaco-editor' + +import { MonacoEditor } from 'uiSrc/components/monaco-editor' +import { CommonProps } from 'uiSrc/components/monaco-editor/MonacoEditor' + +const MonacoJS = (props: CommonProps) => { + const editorDidMount = ( + editor: monacoEditor.editor.IStandaloneCodeEditor + ) => { + const messageContribution = editor.getContribution('editor.contrib.messageController') + editor.onDidAttemptReadOnlyEdit(() => messageContribution?.dispose()) + } + + return ( + + ) +} + +export default MonacoJS diff --git a/redisinsight/ui/src/components/monaco-editor/components/monaco-js/index.ts b/redisinsight/ui/src/components/monaco-editor/components/monaco-js/index.ts new file mode 100644 index 0000000000..f9f33b1669 --- /dev/null +++ b/redisinsight/ui/src/components/monaco-editor/components/monaco-js/index.ts @@ -0,0 +1,3 @@ +import MonacoJS from './MonacoJS' + +export default MonacoJS diff --git a/redisinsight/ui/src/components/monaco-editor/index.ts b/redisinsight/ui/src/components/monaco-editor/index.ts index 26f3b1e2f1..f733c92011 100644 --- a/redisinsight/ui/src/components/monaco-editor/index.ts +++ b/redisinsight/ui/src/components/monaco-editor/index.ts @@ -1,10 +1,12 @@ import MonacoEditor from './MonacoEditor' +import MonacoJS from './components/monaco-js' import MonacoJson from './components/monaco-json' import MonacoYaml from './components/monaco-yaml' import DedicatedEditor from './components/dedicated-editor' export { MonacoEditor, + MonacoJS, MonacoJson, MonacoYaml, DedicatedEditor, diff --git a/redisinsight/ui/src/components/navigation-menu/NavigationMenu.tsx b/redisinsight/ui/src/components/navigation-menu/NavigationMenu.tsx index 0eb523afd9..265fb8e544 100644 --- a/redisinsight/ui/src/components/navigation-menu/NavigationMenu.tsx +++ b/redisinsight/ui/src/components/navigation-menu/NavigationMenu.tsx @@ -352,7 +352,7 @@ const NavigationMenu = () => { orientation="vertical" /> diff --git a/redisinsight/ui/src/components/query/query-card/QueryCard.spec.tsx b/redisinsight/ui/src/components/query/query-card/QueryCard.spec.tsx index df5bdc922b..dfda49dd73 100644 --- a/redisinsight/ui/src/components/query/query-card/QueryCard.spec.tsx +++ b/redisinsight/ui/src/components/query/query-card/QueryCard.spec.tsx @@ -158,24 +158,6 @@ describe('QueryCard', () => { expect(queryCliResultEl).toBeInTheDocument() }) - it('should render properly result when it has pure number', () => { - const { getByTestId } = render( - - ) - const queryCliResultEl = getByTestId('query-cli-result') - - expect(queryCliResultEl.textContent).toBe('(integer) 1') - }) - it('should render QueryCardCliResult when result reached response size threshold even w/o flag', () => { const { queryByTestId } = render( { const isSizeLimitExceededResponse = (result: Maybe) => { const resultObj = result?.[0] // response.includes - to be backward compatible with responses which don't include sizeLimitExceeded flag - return resultObj?.sizeLimitExceeded === true || resultObj?.response?.includes?.('Results have been deleted') + return resultObj?.sizeLimitExceeded === true || resultObj?.response?.includes('Results have been deleted') } return ( diff --git a/redisinsight/ui/src/constants/browser.ts b/redisinsight/ui/src/constants/browser.ts index 493e0572bc..a5d374576a 100644 --- a/redisinsight/ui/src/constants/browser.ts +++ b/redisinsight/ui/src/constants/browser.ts @@ -34,10 +34,3 @@ export const TEXT_FAILED_CONVENT_FORMATTER = (format: KeyValueFormat) => `Failed export const DATABASE_OVERVIEW_REFRESH_INTERVAL = riConfig.browser.databaseOverviewRefreshInterval export const DATABASE_OVERVIEW_MINIMUM_REFRESH_INTERVAL = riConfig.browser.databaseOverviewMinimumRefreshInterval - -export enum BrowserColumns { - Size = 'size', - TTL = 'ttl', -} - -export const DEFAULT_SHOWN_COLUMNS = [BrowserColumns.Size, BrowserColumns.TTL] diff --git a/redisinsight/ui/src/constants/keys.ts b/redisinsight/ui/src/constants/keys.ts index a1e0dfb21c..58c0007204 100644 --- a/redisinsight/ui/src/constants/keys.ts +++ b/redisinsight/ui/src/constants/keys.ts @@ -27,7 +27,7 @@ export const GROUP_TYPES_DISPLAY = Object.freeze({ [KeyTypes.ReJSON]: 'JSON', [KeyTypes.JSON]: 'JSON', [KeyTypes.Stream]: 'Stream', - [ModulesKeyTypes.TimeSeries]: 'Time Series', + [ModulesKeyTypes.TimeSeries]: 'TS', [CommandGroup.Bitmap]: 'Bitmap', [CommandGroup.Cluster]: 'Cluster', [CommandGroup.Connection]: 'Connection', diff --git a/redisinsight/ui/src/constants/storage.ts b/redisinsight/ui/src/constants/storage.ts index c1fa35d003..d918c46fdf 100644 --- a/redisinsight/ui/src/constants/storage.ts +++ b/redisinsight/ui/src/constants/storage.ts @@ -5,7 +5,6 @@ enum BrowserStorageItem { rdiInstancesSorting = 'rdiInstancesSorting', theme = 'theme', browserViewType = 'browserViewType', - browserShownColumns = 'browserShownColumns', browserSearchMode = 'browserSearchMode', cliClientUuid = 'cliClientUuid', cliResizableContainer = 'cliResizableContainer', diff --git a/redisinsight/ui/src/packages/clients-list/.parcelrc b/redisinsight/ui/src/packages/clients-list/.parcelrc new file mode 100644 index 0000000000..c442c3093a --- /dev/null +++ b/redisinsight/ui/src/packages/clients-list/.parcelrc @@ -0,0 +1,8 @@ +{ + "extends": "@parcel/config-default", + "transformers": { + "global_styles.css": [], + "dark_theme.css": [], + "light_theme.css": [] + } +} diff --git a/redisinsight/ui/src/packages/clients-list/index.html b/redisinsight/ui/src/packages/clients-list/index.html deleted file mode 100644 index 1fb82c22e7..0000000000 --- a/redisinsight/ui/src/packages/clients-list/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - Client list plugin - - - - <% if(isDev){ %> - - - - <% } %> - - -
- - diff --git a/redisinsight/ui/src/packages/clients-list/package.json b/redisinsight/ui/src/packages/clients-list/package.json index e8c12ce8ca..a5c7635e61 100644 --- a/redisinsight/ui/src/packages/clients-list/package.json +++ b/redisinsight/ui/src/packages/clients-list/package.json @@ -12,9 +12,22 @@ "styles": "./dist/styles.css", "main": "./dist/index.js", "name": "client-list", - "version": "0.0.3", + "version": "0.0.2", "scripts": { - "dev": "vite -c ../vite.config.mjs" + "start": "cross-env NODE_ENV=development parcel serve src/index.html", + "build": "rimraf dist && cross-env NODE_ENV=production concurrently \"yarn build:js && yarn minify:js\" \"yarn build:css\" \"yarn build:assets\"", + "build:js": "parcel build src/main.tsx --no-source-maps --no-cache --dist-dir dist", + "build:css": "parcel build src/styles/styles.scss --no-source-maps --no-cache --dist-dir dist", + "build:css:dark": "parcel build src/styles/dark_theme.scss --no-source-maps --no-cache --dist-dir dist", + "build:css:light": "parcel build src/styles/light_theme.scss --no-source-maps --no-cache --dist-dir dist", + "build:assets": "parcel build src/assets/**/* --dist-dir dist", + "minify:js": "terser --compress --mangle -- dist/main.js > dist/index.js && rimraf dist/main.js" + }, + "targets": { + "main": false, + "module": { + "includeNodeModules": true + } }, "visualizations": [ { @@ -55,7 +68,19 @@ } ], "devDependencies": { - "vite": "file:../node_modules/vite" + "@babel/core": "^7.12.0", + "@parcel/transformer-sass": "^2.12.0", + "@types/json-bigint": "^1.0.1", + "@types/node": "^17.0.21", + "@types/react": "^17.0.40", + "@types/react-dom": "^17.0.13", + "concurrently": "^7.6.0", + "cross-env": "^7.0.3", + "parcel": "^2.12.0", + "process": "^0.11.10", + "rimraf": "^3.0.2", + "terser": "^5.16.6", + "typescript": ">=3.0.0" }, "dependencies": { "@elastic/datemath": "^5.0.3", @@ -69,6 +94,8 @@ "redisinsight-plugin-sdk": "^1.1.0" }, "resolutions": { + "@parcel/**/micromatch": "^4.0.8", + "@parcel/**/braces": "^3.0.3", "trim": "0.0.3", "**/semver": "^7.5.2" } diff --git a/redisinsight/ui/src/packages/clients-list/public/json_view_icon_dark.svg b/redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_dark.svg similarity index 86% rename from redisinsight/ui/src/packages/clients-list/public/json_view_icon_dark.svg rename to redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_dark.svg index c50b2fee5c..34df29dd84 100644 --- a/redisinsight/ui/src/packages/clients-list/public/json_view_icon_dark.svg +++ b/redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_dark.svg @@ -1,4 +1,5 @@ + + + + + Client list plugin + + + + + + +
+ + + diff --git a/redisinsight/ui/src/packages/clients-list/src/main.tsx b/redisinsight/ui/src/packages/clients-list/src/main.tsx index 4113628f63..6832b74bbd 100644 --- a/redisinsight/ui/src/packages/clients-list/src/main.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/main.tsx @@ -2,7 +2,6 @@ import React from 'react' import { render } from 'react-dom' import App, { CommonPlugin, RawMode } from './App' -import './styles/styles.scss' interface Props { command?: string diff --git a/redisinsight/ui/src/packages/clients-list/src/utils/cachedIcons.ts b/redisinsight/ui/src/packages/clients-list/src/utils/cachedIcons.ts index 2a48638a7e..c22bb13440 100644 --- a/redisinsight/ui/src/packages/clients-list/src/utils/cachedIcons.ts +++ b/redisinsight/ui/src/packages/clients-list/src/utils/cachedIcons.ts @@ -1,6 +1,11 @@ -import { icon as EuiIconArrowRight } from '@elastic/eui/es/components/icon/assets/arrow_right' -import { icon as EuiIconArrowLeft } from '@elastic/eui/es/components/icon/assets/arrow_left' -import { icon as EuiIconArrowDown } from '@elastic/eui/es/components/icon/assets/arrow_down' +import { icon as EuiIconArrowRight } from '../icons/arrow_right' +import { icon as EuiIconArrowLeft } from '../icons/arrow_left' +import { icon as EuiIconArrowDown } from '../icons/arrow_down' + +// [todo] Remove hardcoded icons. Jest is failing for this imports +// import { icon as EuiIconArrowRight } from '@elastic/eui/es/components/icon/assets/arrow_right' +// import { icon as EuiIconArrowLeft } from '@elastic/eui/es/components/icon/assets/arrow_left' +// import { icon as EuiIconArrowDown } from '@elastic/eui/es/components/icon/assets/arrow_down' export default { arrowRight: EuiIconArrowRight, diff --git a/redisinsight/ui/src/packages/clients-list/src/utils/parseResponse.ts b/redisinsight/ui/src/packages/clients-list/src/utils/parseResponse.ts index 4f0f7959d4..40c874e017 100644 --- a/redisinsight/ui/src/packages/clients-list/src/utils/parseResponse.ts +++ b/redisinsight/ui/src/packages/clients-list/src/utils/parseResponse.ts @@ -1,4 +1,4 @@ -import { Buffer } from 'buffer' +import { Buffer } from '../../node_modules/buffer/index' export const parseClientListResponse = (response: string) => response.split(/\r?\n/).filter((r: string) => r).map((row: string) => { const value = row.split(' ') diff --git a/redisinsight/ui/src/packages/clients-list/yarn.lock b/redisinsight/ui/src/packages/clients-list/yarn.lock index 681b4b4ae1..3ae68445bb 100644 --- a/redisinsight/ui/src/packages/clients-list/yarn.lock +++ b/redisinsight/ui/src/packages/clients-list/yarn.lock @@ -2,6 +2,176 @@ # yarn lockfile v1 +"@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" + +"@babel/code-frame@^7.0.0": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.9": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== + +"@babel/core@^7.12.0": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + "@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.15.4", "@babel/runtime@^7.9.2": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" @@ -9,6 +179,40 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@elastic/datemath@^5.0.3": version "5.0.3" resolved "https://registry.yarnpkg.com/@elastic/datemath/-/datemath-5.0.3.tgz#7baccdab672b9a3ecb7fe8387580670936b58573" @@ -60,130 +264,105 @@ uuid "^8.3.0" vfile "^4.2.0" -"@esbuild/aix-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" - integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== - -"@esbuild/android-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" - integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== - -"@esbuild/android-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" - integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== - -"@esbuild/android-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" - integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== - -"@esbuild/darwin-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" - integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== - -"@esbuild/darwin-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" - integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== - -"@esbuild/freebsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" - integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== - -"@esbuild/freebsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" - integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== - -"@esbuild/linux-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" - integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== - -"@esbuild/linux-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" - integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== - -"@esbuild/linux-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" - integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== - -"@esbuild/linux-loong64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" - integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== - -"@esbuild/linux-mips64el@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" - integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== - -"@esbuild/linux-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" - integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== - -"@esbuild/linux-riscv64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" - integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== - -"@esbuild/linux-s390x@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" - integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== - -"@esbuild/linux-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" - integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== - -"@esbuild/netbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" - integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== - -"@esbuild/netbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" - integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== - -"@esbuild/openbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" - integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== - -"@esbuild/openbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" - integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== - -"@esbuild/sunos-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" - integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== - -"@esbuild/win32-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" - integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== - -"@esbuild/win32-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" - integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== - -"@esbuild/win32-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" - integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" + integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.9": + 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" + +"@lezer/common@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049" + integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ== + +"@lezer/lr@^1.0.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.0.tgz#ed52a75dbbfbb0d1eb63710ea84c35ee647cb67e" + integrity sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg== + dependencies: + "@lezer/common" "^1.0.0" + +"@lmdb/lmdb-darwin-arm64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e" + integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw== + +"@lmdb/lmdb-darwin-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184" + integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug== + +"@lmdb/lmdb-linux-arm64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e" + integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww== + +"@lmdb/lmdb-linux-arm@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d" + integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg== + +"@lmdb/lmdb-linux-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302" + integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ== + +"@lmdb/lmdb-win32-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c" + integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ== "@mapbox/hast-util-table-cell-style@^0.2.0": version "0.2.0" @@ -192,111 +371,815 @@ dependencies: unist-util-visit "^1.4.1" -"@rollup/rollup-android-arm-eabi@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" - integrity sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q== - -"@rollup/rollup-android-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz#9d81ea54fc5650eb4ebbc0a7d84cee331bfa30ad" - integrity sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w== - -"@rollup/rollup-darwin-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz#29448cb1370cf678b50743d2e392be18470abc23" - integrity sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q== - -"@rollup/rollup-darwin-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz#0ca99741c3ed096700557a43bb03359450c7857d" - integrity sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA== - -"@rollup/rollup-freebsd-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz#233f8e4c2f54ad9b719cd9645887dcbd12b38003" - integrity sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ== - -"@rollup/rollup-freebsd-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz#dfba762a023063dc901610722995286df4a48360" - integrity sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw== - -"@rollup/rollup-linux-arm-gnueabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz#b9da54171726266c5ef4237f462a85b3c3cf6ac9" - integrity sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg== - -"@rollup/rollup-linux-arm-musleabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz#b9db69b3f85f5529eb992936d8f411ee6d04297b" - integrity sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug== - -"@rollup/rollup-linux-arm64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz#2550cf9bb4d47d917fd1ab4af756d7bbc3ee1528" - integrity sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw== - -"@rollup/rollup-linux-arm64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz#9d06b26d286c7dded6336961a2f83e48330e0c80" - integrity sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA== - -"@rollup/rollup-linux-loongarch64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz#e957bb8fee0c8021329a34ca8dfa825826ee0e2e" - integrity sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz#e8585075ddfb389222c5aada39ea62d6d2511ccc" - integrity sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw== - -"@rollup/rollup-linux-riscv64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz#7d0d40cee7946ccaa5a4e19a35c6925444696a9e" - integrity sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw== - -"@rollup/rollup-linux-s390x-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz#c2dcd8a4b08b2f2778eceb7a5a5dfde6240ebdea" - integrity sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA== - -"@rollup/rollup-linux-x64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz#183637d91456877cb83d0a0315eb4788573aa588" - integrity sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg== - -"@rollup/rollup-linux-x64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz#036a4c860662519f1f9453807547fd2a11d5bb01" - integrity sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow== - -"@rollup/rollup-win32-arm64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz#51cad812456e616bfe4db5238fb9c7497e042a52" - integrity sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw== - -"@rollup/rollup-win32-ia32-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz#661c8b3e4cd60f51deaa39d153aac4566e748e5e" - integrity sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw== - -"@rollup/rollup-win32-x64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" - integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== +"@mischnic/json-sourcemap@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" + integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/lr" "^1.0.0" + json5 "^2.2.1" + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" + integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== + +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" + integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== + +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" + integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== + +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" + integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== + +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" + integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== + +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" + integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== + +"@parcel/bundler-default@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.12.0.tgz#b8f6f3fc3f497714bd54e19882aaa116e97df4a4" + integrity sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/graph" "3.2.0" + "@parcel/plugin" "2.12.0" + "@parcel/rust" "2.12.0" + "@parcel/utils" "2.12.0" + nullthrows "^1.1.1" + +"@parcel/cache@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.12.0.tgz#b8fd2ea2bc7a2353a9b20344cc191bfb4f8284f3" + integrity sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw== + dependencies: + "@parcel/fs" "2.12.0" + "@parcel/logger" "2.12.0" + "@parcel/utils" "2.12.0" + lmdb "2.8.5" + +"@parcel/codeframe@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.12.0.tgz#9ea75bd7ae6c5f7fadf42a5e64657cf88fdcb29e" + integrity sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg== + dependencies: + chalk "^4.1.0" + +"@parcel/compressor-raw@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.12.0.tgz#71012b695c870f1d26bfd8d56983c14bf13fd996" + integrity sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A== + dependencies: + "@parcel/plugin" "2.12.0" + +"@parcel/config-default@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.12.0.tgz#7b213348db349c6042a80dfd4a7eab707a1dfbfa" + integrity sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg== + dependencies: + "@parcel/bundler-default" "2.12.0" + "@parcel/compressor-raw" "2.12.0" + "@parcel/namer-default" "2.12.0" + "@parcel/optimizer-css" "2.12.0" + "@parcel/optimizer-htmlnano" "2.12.0" + "@parcel/optimizer-image" "2.12.0" + "@parcel/optimizer-svgo" "2.12.0" + "@parcel/optimizer-swc" "2.12.0" + "@parcel/packager-css" "2.12.0" + "@parcel/packager-html" "2.12.0" + "@parcel/packager-js" "2.12.0" + "@parcel/packager-raw" "2.12.0" + "@parcel/packager-svg" "2.12.0" + "@parcel/packager-wasm" "2.12.0" + "@parcel/reporter-dev-server" "2.12.0" + "@parcel/resolver-default" "2.12.0" + "@parcel/runtime-browser-hmr" "2.12.0" + "@parcel/runtime-js" "2.12.0" + "@parcel/runtime-react-refresh" "2.12.0" + "@parcel/runtime-service-worker" "2.12.0" + "@parcel/transformer-babel" "2.12.0" + "@parcel/transformer-css" "2.12.0" + "@parcel/transformer-html" "2.12.0" + "@parcel/transformer-image" "2.12.0" + "@parcel/transformer-js" "2.12.0" + "@parcel/transformer-json" "2.12.0" + "@parcel/transformer-postcss" "2.12.0" + "@parcel/transformer-posthtml" "2.12.0" + "@parcel/transformer-raw" "2.12.0" + "@parcel/transformer-react-refresh-wrap" "2.12.0" + "@parcel/transformer-svg" "2.12.0" + +"@parcel/core@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.12.0.tgz#ea5734f008300bc57aaff2ba0f7949724c93b56d" + integrity sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/cache" "2.12.0" + "@parcel/diagnostic" "2.12.0" + "@parcel/events" "2.12.0" + "@parcel/fs" "2.12.0" + "@parcel/graph" "3.2.0" + "@parcel/logger" "2.12.0" + "@parcel/package-manager" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/profiler" "2.12.0" + "@parcel/rust" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.12.0" + "@parcel/utils" "2.12.0" + "@parcel/workers" "2.12.0" + abortcontroller-polyfill "^1.1.9" + base-x "^3.0.8" + browserslist "^4.6.6" + clone "^2.1.1" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" + json5 "^2.2.0" + msgpackr "^1.9.9" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/diagnostic@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.12.0.tgz#b38057d819ea2edc32018a1d51df434f07840be9" + integrity sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + nullthrows "^1.1.1" + +"@parcel/events@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.12.0.tgz#ef67e3fbb96806b3531a37bcf95e8fbb3818ffa2" + integrity sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA== + +"@parcel/fs@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.12.0.tgz#8c9029353888311ba2e9e2198dbe6c7c1da635c0" + integrity sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q== + dependencies: + "@parcel/rust" "2.12.0" + "@parcel/types" "2.12.0" + "@parcel/utils" "2.12.0" + "@parcel/watcher" "^2.0.7" + "@parcel/workers" "2.12.0" + +"@parcel/graph@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.2.0.tgz#309e6e3f19ef4ea7f71b2341ec1bcc08e7c43523" + integrity sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA== + dependencies: + nullthrows "^1.1.1" + +"@parcel/logger@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.12.0.tgz#0b866b7aee8a0a462596a80cd46bd8b29c318758" + integrity sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/events" "2.12.0" + +"@parcel/markdown-ansi@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.12.0.tgz#a4301321fa784a28ba817e65e41432fe8b3b3192" + integrity sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w== + dependencies: + chalk "^4.1.0" + +"@parcel/namer-default@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.12.0.tgz#f9903da8e4c5c3e33fc8ab70b222be520a46da5d" + integrity sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + nullthrows "^1.1.1" + +"@parcel/node-resolver-core@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.3.0.tgz#f40d80de800baa7cf230406b7122c8711ac4cdc8" + integrity sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/diagnostic" "2.12.0" + "@parcel/fs" "2.12.0" + "@parcel/rust" "2.12.0" + "@parcel/utils" "2.12.0" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/optimizer-css@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.12.0.tgz#f44f38dc7136b511a849343eea04714a42e1ba5f" + integrity sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.12.0" + browserslist "^4.6.6" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/optimizer-htmlnano@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.12.0.tgz#e389d56d3f5cd2f6dd464a756a0704a65e527a9b" + integrity sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ== + dependencies: + "@parcel/plugin" "2.12.0" + htmlnano "^2.0.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + svgo "^2.4.0" + +"@parcel/optimizer-image@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.12.0.tgz#46dd3c2a871700076c17376d27f6d46d030a0717" + integrity sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/rust" "2.12.0" + "@parcel/utils" "2.12.0" + "@parcel/workers" "2.12.0" + +"@parcel/optimizer-svgo@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.12.0.tgz#f1e411cbc3a3c56e05aa5fb2e1edd1ecc7016378" + integrity sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + svgo "^2.4.0" + +"@parcel/optimizer-swc@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.12.0.tgz#bacbdb4f6f4a7e0b7086f30b683e3f3f2f980c96" + integrity sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.12.0" + "@swc/core" "^1.3.36" + nullthrows "^1.1.1" + +"@parcel/package-manager@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.12.0.tgz#7e1eb5f652544e045f7240fa6cf92e5ff1627624" + integrity sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/fs" "2.12.0" + "@parcel/logger" "2.12.0" + "@parcel/node-resolver-core" "3.3.0" + "@parcel/types" "2.12.0" + "@parcel/utils" "2.12.0" + "@parcel/workers" "2.12.0" + "@swc/core" "^1.3.36" + semver "^7.5.2" + +"@parcel/packager-css@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.12.0.tgz#bee2908608f306186695c6505c3303548751a7b8" + integrity sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.12.0" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/packager-html@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.12.0.tgz#dd62a483043982880a63e68ce8d8132f60becd3d" + integrity sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/types" "2.12.0" + "@parcel/utils" "2.12.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + +"@parcel/packager-js@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.12.0.tgz#f81f64d16560b97e70bbb4cf568555f990afa2f6" + integrity sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/rust" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.12.0" + "@parcel/utils" "2.12.0" + globals "^13.2.0" + nullthrows "^1.1.1" + +"@parcel/packager-raw@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.12.0.tgz#043b704814ff2bcc884cf33e6542f72e246367e0" + integrity sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA== + dependencies: + "@parcel/plugin" "2.12.0" + +"@parcel/packager-svg@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.12.0.tgz#2c392243373d60fc834a08d15003f239c34f39a7" + integrity sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/types" "2.12.0" + "@parcel/utils" "2.12.0" + posthtml "^0.16.4" + +"@parcel/packager-wasm@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.12.0.tgz#39dbd91e7bf68456dbc9d19a412017e2b513736f" + integrity sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A== + dependencies: + "@parcel/plugin" "2.12.0" + +"@parcel/plugin@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.12.0.tgz#3db4237e8977ef5b5378b65eaffb809d2026431a" + integrity sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g== + dependencies: + "@parcel/types" "2.12.0" + +"@parcel/profiler@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.12.0.tgz#8541ca5d27500aebc843b1de081734442e5ee054" + integrity sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/events" "2.12.0" + chrome-trace-event "^1.0.2" + +"@parcel/reporter-cli@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.12.0.tgz#e067b4eeca49c7120d3455d99810bed5bc825920" + integrity sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/types" "2.12.0" + "@parcel/utils" "2.12.0" + chalk "^4.1.0" + term-size "^2.2.1" + +"@parcel/reporter-dev-server@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.12.0.tgz#bd4c9e3d6dc8d8b178564a336f46b4f70acf3e79" + integrity sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + +"@parcel/reporter-tracer@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.12.0.tgz#680e8be677277318c656c1825dbe98a8bfb64e16" + integrity sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + chrome-trace-event "^1.0.3" + nullthrows "^1.1.1" + +"@parcel/resolver-default@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.12.0.tgz#005b6bc01de9d166a97d7ef30daf339973c4898a" + integrity sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA== + dependencies: + "@parcel/node-resolver-core" "3.3.0" + "@parcel/plugin" "2.12.0" + +"@parcel/runtime-browser-hmr@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.12.0.tgz#9d045785b83760e305c9efd3d6300a9ff73bcfaf" + integrity sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + +"@parcel/runtime-js@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.12.0.tgz#da6f7da041cb157556822ad60fefcdbc790dda9c" + integrity sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + nullthrows "^1.1.1" + +"@parcel/runtime-react-refresh@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.12.0.tgz#58c17552766492ec2005ffedfa04ecb29386dd8b" + integrity sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + react-error-overlay "6.0.9" + react-refresh "^0.9.0" + +"@parcel/runtime-service-worker@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.12.0.tgz#67ee1e6dbc5441651fed04ecb2bd7ebe1e362679" + integrity sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + nullthrows "^1.1.1" + +"@parcel/rust@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.12.0.tgz#135df4dd8c63d97720379777c5bb4a2680a201cd" + integrity sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw== + +"@parcel/source-map@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" + integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== + dependencies: + detect-libc "^1.0.3" + +"@parcel/transformer-babel@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.12.0.tgz#29be68f2fad4688b33ef3f03ef2b8c3e9928b87f" + integrity sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.12.0" + browserslist "^4.6.6" + json5 "^2.2.0" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/transformer-css@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.12.0.tgz#218a98948c9410c17287183d80ca9bd9943cc9e9" + integrity sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.12.0" + browserslist "^4.6.6" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/transformer-html@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.12.0.tgz#8681b089e2b20c5fda1c966cefb8de4d8fb2ce80" + integrity sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/rust" "2.12.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + srcset "4" + +"@parcel/transformer-image@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.12.0.tgz#8ba2ca3b5d88287bf38c8244b2714158c9d34b2e" + integrity sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + "@parcel/workers" "2.12.0" + nullthrows "^1.1.1" + +"@parcel/transformer-js@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.12.0.tgz#e6bf0c312f78603faf98ce546086898506e3811f" + integrity sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/rust" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.12.0" + "@parcel/workers" "2.12.0" + "@swc/helpers" "^0.5.0" + browserslist "^4.6.6" + nullthrows "^1.1.1" + regenerator-runtime "^0.13.7" + semver "^7.5.2" + +"@parcel/transformer-json@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.12.0.tgz#16cc0454e4862350b605a5e2009d050c676c6ea5" + integrity sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ== + dependencies: + "@parcel/plugin" "2.12.0" + json5 "^2.2.0" + +"@parcel/transformer-postcss@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.12.0.tgz#195f4fb86f36f42b5de82076ea36b9d850f4832e" + integrity sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/rust" "2.12.0" + "@parcel/utils" "2.12.0" + clone "^2.1.1" + nullthrows "^1.1.1" + postcss-value-parser "^4.2.0" + semver "^7.5.2" + +"@parcel/transformer-posthtml@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.12.0.tgz#a906c26278e03455f6186b7dbd9f5b63eaa26948" + integrity sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + +"@parcel/transformer-raw@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.12.0.tgz#1ee7e02214f777cf3a5bf53580ee4dadfaf8a44c" + integrity sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ== + dependencies: + "@parcel/plugin" "2.12.0" + +"@parcel/transformer-react-refresh-wrap@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.12.0.tgz#cf079353126f2bb820209736a75f868d0df58d92" + integrity sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/utils" "2.12.0" + react-refresh "^0.9.0" + +"@parcel/transformer-sass@^2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-sass/-/transformer-sass-2.12.0.tgz#9132ee78197db04baf51d3024a1bf3c35f1df5ef" + integrity sha512-xLLoSLPST+2AHJwFRLl4foArDjjy6P1RChP3TxMU2MVS1sbKGJnfFhFpHAacH8ASjuGtu5rbpfpHRZePlvoZxw== + dependencies: + "@parcel/plugin" "2.12.0" + "@parcel/source-map" "^2.1.1" + sass "^1.38.0" + +"@parcel/transformer-svg@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.12.0.tgz#0281e89bf0f438ec161c19b59a8a8978434a3621" + integrity sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/plugin" "2.12.0" + "@parcel/rust" "2.12.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + +"@parcel/types@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.12.0.tgz#caf0af00ee0c7228b350eca5f4d3a5b85ce457ad" + integrity sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ== + dependencies: + "@parcel/cache" "2.12.0" + "@parcel/diagnostic" "2.12.0" + "@parcel/fs" "2.12.0" + "@parcel/package-manager" "2.12.0" + "@parcel/source-map" "^2.1.1" + "@parcel/workers" "2.12.0" + utility-types "^3.10.0" + +"@parcel/utils@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.12.0.tgz#ac900726e7cb12a9e6392081fa05b756183f65fd" + integrity sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g== + dependencies: + "@parcel/codeframe" "2.12.0" + "@parcel/diagnostic" "2.12.0" + "@parcel/logger" "2.12.0" + "@parcel/markdown-ansi" "2.12.0" + "@parcel/rust" "2.12.0" + "@parcel/source-map" "^2.1.1" + chalk "^4.1.0" + nullthrows "^1.1.1" + +"@parcel/watcher-android-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz#9c93763794153e4f76920994a423b6ea3257059d" + integrity sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA== + +"@parcel/watcher-darwin-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz#2c79c2abde16aa24cac67e555b60802fd13fe210" + integrity sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA== + +"@parcel/watcher-darwin-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz#23d82f198c5d033f047467c68d7c335f3df49b46" + integrity sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q== + +"@parcel/watcher-freebsd-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz#7310cc86abc27dacd57624bcdba1f0ba092e76df" + integrity sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA== + +"@parcel/watcher-linux-arm-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz#c31b76e695027eeb1078d3d6f1d641d0b900c335" + integrity sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ== + +"@parcel/watcher-linux-arm64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz#56e09b86e9d8a4096f606be118b588da6e965080" + integrity sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg== + +"@parcel/watcher-linux-arm64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz#27ffd5ca5f510ecd638f9ad22e2e813049db54e7" + integrity sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng== + +"@parcel/watcher-linux-x64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz#44cbbb1e5884a1ca900655f47a0775218318f934" + integrity sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ== + +"@parcel/watcher-linux-x64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz#4c33993618c8d5113722852806239cb80360494b" + integrity sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA== + +"@parcel/watcher-win32-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz#2a172fd2fda95fe5389298ca3e70b5a96316162a" + integrity sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg== + +"@parcel/watcher-win32-ia32@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz#279225b2ebe1fadd3c5137c9b2365ad422656904" + integrity sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA== + +"@parcel/watcher-win32-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz#93e0bd0ad1bda2c9a688764b9b30b71dc5b72a71" + integrity sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA== + +"@parcel/watcher@^2.0.7": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.0.tgz#2d3c4ef8832a5cdfdbb76b914f022489933e664f" + integrity sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.0" + "@parcel/watcher-darwin-arm64" "2.4.0" + "@parcel/watcher-darwin-x64" "2.4.0" + "@parcel/watcher-freebsd-x64" "2.4.0" + "@parcel/watcher-linux-arm-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-musl" "2.4.0" + "@parcel/watcher-linux-x64-glibc" "2.4.0" + "@parcel/watcher-linux-x64-musl" "2.4.0" + "@parcel/watcher-win32-arm64" "2.4.0" + "@parcel/watcher-win32-ia32" "2.4.0" + "@parcel/watcher-win32-x64" "2.4.0" + +"@parcel/workers@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.12.0.tgz#773182b5006741102de8ae36d18a5a9e3320ebd1" + integrity sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw== + dependencies: + "@parcel/diagnostic" "2.12.0" + "@parcel/logger" "2.12.0" + "@parcel/profiler" "2.12.0" + "@parcel/types" "2.12.0" + "@parcel/utils" "2.12.0" + nullthrows "^1.1.1" + +"@swc/core-darwin-arm64@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz#5f4096c00e71771ca1b18c824f0c92a052c70760" + integrity sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw== + +"@swc/core-darwin-x64@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz#867b7a4f094e6b64201090ca5fcbf3da7d0f3e22" + integrity sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ== + +"@swc/core-linux-arm-gnueabihf@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz#35bb43894def296d92aaa2cc9372d48042f37777" + integrity sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q== + +"@swc/core-linux-arm64-gnu@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz#8e2321cc4ec84cbfed8f8e16ff1ed7b854450443" + integrity sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q== + +"@swc/core-linux-arm64-musl@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz#b1c16e4b23ffa9ff19973eda6ffee35d2a7de7b0" + integrity sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg== + +"@swc/core-linux-x64-gnu@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz#388e2cc13a010cd28787aead2cecf31eb491836d" + integrity sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w== + +"@swc/core-linux-x64-musl@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz#51e0ff30981f26d7a5b97a7a7b5b291bad050d1a" + integrity sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ== + +"@swc/core-win32-arm64-msvc@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz#a7fdcc4074c34ee6a026506b594d00323383c11f" + integrity sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA== + +"@swc/core-win32-ia32-msvc@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz#ae7be6dde798eebee2000b8fd84e01a439b5bd6a" + integrity sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ== + +"@swc/core-win32-x64-msvc@1.7.26": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz#310d607004d7319085a4dec20c0c38c3405cc05b" + integrity sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w== + +"@swc/core@^1.3.36": + version "1.7.26" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.26.tgz#beda9b82063fcec7b56c958804a4d175aecf9a9d" + integrity sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.12" + optionalDependencies: + "@swc/core-darwin-arm64" "1.7.26" + "@swc/core-darwin-x64" "1.7.26" + "@swc/core-linux-arm-gnueabihf" "1.7.26" + "@swc/core-linux-arm64-gnu" "1.7.26" + "@swc/core-linux-arm64-musl" "1.7.26" + "@swc/core-linux-x64-gnu" "1.7.26" + "@swc/core-linux-x64-musl" "1.7.26" + "@swc/core-win32-arm64-msvc" "1.7.26" + "@swc/core-win32-ia32-msvc" "1.7.26" + "@swc/core-win32-x64-msvc" "1.7.26" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@^0.5.0": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== + dependencies: + tslib "^2.4.0" + +"@swc/types@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.12.tgz#7f632c06ab4092ce0ebd046ed77ff7557442282f" + integrity sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA== + dependencies: + "@swc/counter" "^0.1.3" + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/chroma-js@^2.0.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.4.0.tgz#476a16ae848c77478079d6749236fdb98837b92c" integrity sha512-JklMxityrwjBTjGY2anH8JaTx3yjRU3/sEHSblLH1ba5lqcSh1LnImXJZO5peJfXyqKYWjHTGy4s5Wz++hARrw== -"@types/estree@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - "@types/hast@^2.0.0": version "2.3.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" @@ -312,6 +1195,11 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/json-bigint@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/json-bigint/-/json-bigint-1.0.1.tgz#201062a6990119a8cc18023cfe1fed12fc2fc8a7" + integrity sha512-zpchZLNsNuzJHi6v64UBoFWAvQlPhch7XAi36FkH6tL1bbbmimIF+cS7vwkzY4u5RaSWMoflQfu+TshMPPw8uw== + "@types/lodash@^4.14.160": version "4.14.194" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" @@ -324,6 +1212,11 @@ dependencies: "@types/unist" "*" +"@types/node@^17.0.21": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + "@types/numeral@^0.0.28": version "0.0.28" resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.28.tgz#e43928f0bda10b169b6f7ecf99e3ddf836b8ebe4" @@ -351,6 +1244,13 @@ dependencies: "@types/react" "*" +"@types/react-dom@^17.0.13": + version "17.0.20" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.20.tgz#e0c8901469d732b36d8473b40b679ad899da1b53" + integrity sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA== + dependencies: + "@types/react" "^17" + "@types/react-input-autosize@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@types/react-input-autosize/-/react-input-autosize-2.2.1.tgz#6a335212e7fce1e1a4da56ae2095c8c5c35fbfe6" @@ -391,6 +1291,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^17", "@types/react@^17.0.40": + version "17.0.58" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.58.tgz#c8bbc82114e5c29001548ebe8ed6c4ba4d3c9fb0" + integrity sha512-c1GzVY97P0fGxwGxhYq989j4XwlcHQoto6wQISOC2v6wm3h0PORRWJFHlkRjfGsiG3y1609WdQ+J+tKxvrEd6A== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/refractor@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@types/refractor/-/refractor-3.0.2.tgz#2d42128d59f78f84d2c799ffc5ab5cadbcba2d82" @@ -420,6 +1329,48 @@ dependencies: vfile-message "*" +abortcontroller-polyfill@^1.1.9: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +acorn@^8.5.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-hidden@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" @@ -437,6 +1388,18 @@ bail@^1.0.0: resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -447,11 +1410,61 @@ bignumber.js@^9.0.0: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + brace@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" integrity sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.21.9: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + +browserslist@^4.6.6: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -460,11 +1473,43 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-lite@^1.0.30001541: + version "1.0.30001553" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz#e64e7dc8fd4885cd246bb476471420beb5e474b5" + integrity sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A== + +caniuse-lite@^1.0.30001587: + version "1.0.30001588" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" + integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== + ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-html4@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" @@ -485,26 +1530,150 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +"chokidar@>=3.0.0 <4.0.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chroma-js@^2.1.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.4.2.tgz#dffc214ed0c11fa8eefca2c36651d8e57cbfb2b0" integrity sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A== +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +chrome-trace-event@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + classnames@^2.2.6, classnames@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.0.0, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^7.6.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== + dependencies: + chalk "^4.1.0" + date-fns "^2.29.1" + lodash "^4.17.21" + rxjs "^7.0.0" + shell-quote "^1.7.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^17.3.1" + +convert-source-map@^2.0.0: + version "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== + +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.1: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + css-box-model@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" @@ -512,11 +1681,64 @@ css-box-model@^1.2.0: dependencies: tiny-invariant "^1.0.6" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + csstype@^3.0.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +date-fns@^2.29.1: + version "2.29.3" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== + +debug@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-libc@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + detect-node-es@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" @@ -527,41 +1749,92 @@ diff-match-patch@^1.0.4: resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== + +electron-to-chromium@^1.4.535: + version "1.4.565" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.565.tgz#205f3746a759ec3c43bce98b9eef5445f2721ea9" + integrity sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg== + +electron-to-chromium@^1.4.668: + version "1.4.673" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz#1f077d9a095761804aec7ec6346c3f4b69b56534" + integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emoticon@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== -esbuild@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" - integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.24.2" - "@esbuild/android-arm" "0.24.2" - "@esbuild/android-arm64" "0.24.2" - "@esbuild/android-x64" "0.24.2" - "@esbuild/darwin-arm64" "0.24.2" - "@esbuild/darwin-x64" "0.24.2" - "@esbuild/freebsd-arm64" "0.24.2" - "@esbuild/freebsd-x64" "0.24.2" - "@esbuild/linux-arm" "0.24.2" - "@esbuild/linux-arm64" "0.24.2" - "@esbuild/linux-ia32" "0.24.2" - "@esbuild/linux-loong64" "0.24.2" - "@esbuild/linux-mips64el" "0.24.2" - "@esbuild/linux-ppc64" "0.24.2" - "@esbuild/linux-riscv64" "0.24.2" - "@esbuild/linux-s390x" "0.24.2" - "@esbuild/linux-x64" "0.24.2" - "@esbuild/netbsd-arm64" "0.24.2" - "@esbuild/netbsd-x64" "0.24.2" - "@esbuild/openbsd-arm64" "0.24.2" - "@esbuild/openbsd-x64" "0.24.2" - "@esbuild/sunos-x64" "0.24.2" - "@esbuild/win32-arm64" "0.24.2" - "@esbuild/win32-ia32" "0.24.2" - "@esbuild/win32-x64" "0.24.2" +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== extend@^3.0.0: version "3.0.2" @@ -575,6 +1848,13 @@ file-selector@^0.4.0: dependencies: tslib "^2.0.3" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + focus-lock@^0.11.6: version "0.11.6" resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.11.6.tgz#e8821e21d218f03e100f7dc27b733f9c4f61e683" @@ -582,16 +1862,77 @@ focus-lock@^0.11.6: dependencies: tslib "^2.0.3" -fsevents@~2.3.2, fsevents@~2.3.3: +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== +get-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.2.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" @@ -699,12 +2040,52 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== +htmlnano@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.1.0.tgz#67b31b3cd3fad23f0b610ca628fdb48382209c3c" + integrity sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g== + dependencies: + cosmiconfig "^8.0.0" + posthtml "^0.16.5" + timsort "^0.3.0" + +htmlparser2@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" + ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -inherits@^2.0.0: +immutable@^4.0.0: + version "4.3.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" + integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + +import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -734,6 +2115,18 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -744,11 +2137,38 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-json@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" + integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" @@ -764,11 +2184,28 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -"js-tokens@^3.0.0 || ^4.0.0": +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + json-bigint@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" @@ -776,6 +2213,107 @@ json-bigint@^1.0.0: dependencies: bignumber.js "^9.0.0" +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.0, json5@^2.2.1, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +lightningcss-darwin-arm64@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz#565bd610533941cba648a70e105987578d82f996" + integrity sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ== + +lightningcss-darwin-x64@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz#c906a267237b1c7fe08bff6c5ac032c099bc9482" + integrity sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg== + +lightningcss-freebsd-x64@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz#a7c3c4d6ee18dffeb8fa69f14f8f9267f7dc0c34" + integrity sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA== + +lightningcss-linux-arm-gnueabihf@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz#c7c16432a571ec877bf734fe500e4a43d48c2814" + integrity sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA== + +lightningcss-linux-arm64-gnu@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz#cfd9e18df1cd65131da286ddacfa3aee6862a752" + integrity sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A== + +lightningcss-linux-arm64-musl@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz#6682ff6b9165acef9a6796bd9127a8e1247bb0ed" + integrity sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg== + +lightningcss-linux-x64-gnu@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz#714221212ad184ddfe974bbb7dbe9300dfde4bc0" + integrity sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A== + +lightningcss-linux-x64-musl@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz#247958daf622a030a6dc2285afa16b7184bdf21e" + integrity sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA== + +lightningcss-win32-arm64-msvc@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz#64cfe473c264ef5dc275a4d57a516d77fcac6bc9" + integrity sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ== + +lightningcss-win32-x64-msvc@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz#237d0dc87d9cdc9cf82536bcbc07426fa9f3f422" + integrity sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw== + +lightningcss@^1.22.1: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.27.0.tgz#d4608e63044343836dd9769f6c8b5d607867649a" + integrity sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ== + dependencies: + detect-libc "^1.0.3" + optionalDependencies: + lightningcss-darwin-arm64 "1.27.0" + lightningcss-darwin-x64 "1.27.0" + lightningcss-freebsd-x64 "1.27.0" + lightningcss-linux-arm-gnueabihf "1.27.0" + lightningcss-linux-arm64-gnu "1.27.0" + lightningcss-linux-arm64-musl "1.27.0" + lightningcss-linux-x64-gnu "1.27.0" + lightningcss-linux-x64-musl "1.27.0" + lightningcss-win32-arm64-msvc "1.27.0" + lightningcss-win32-x64-msvc "1.27.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lmdb@2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837" + integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ== + dependencies: + msgpackr "^1.9.5" + node-addon-api "^6.1.0" + node-gyp-build-optional-packages "5.1.1" + ordered-binary "^1.4.1" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "2.8.5" + "@lmdb/lmdb-darwin-x64" "2.8.5" + "@lmdb/lmdb-linux-arm" "2.8.5" + "@lmdb/lmdb-linux-arm64" "2.8.5" + "@lmdb/lmdb-linux-x64" "2.8.5" + "@lmdb/lmdb-win32-x64" "2.8.5" + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -798,6 +2336,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" @@ -831,6 +2376,11 @@ mdast-util-to-hast@^10.0.0, mdast-util-to-hast@^10.2.0: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -841,10 +2391,56 @@ mdurl@^1.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -nanoid@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== +micromatch@^4.0.5, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +msgpackr-extract@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" + integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== + dependencies: + node-gyp-build-optional-packages "5.0.7" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" + +msgpackr@^1.9.5, msgpackr@^1.9.9: + version "1.11.0" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.0.tgz#8321d52333048cadc749f56385e3231e65337091" + integrity sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw== + optionalDependencies: + msgpackr-extract "^3.0.2" + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== node-emoji@^1.10.0: version "1.11.0" @@ -853,6 +2449,45 @@ node-emoji@^1.10.0: dependencies: lodash "^4.17.21" +node-gyp-build-optional-packages@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" + integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== + +node-gyp-build-optional-packages@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== + dependencies: + detect-libc "^2.0.1" + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + numeral@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" @@ -863,6 +2498,45 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +ordered-binary@^1.4.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.2.tgz#2007072bcc4cb3454e250ca8ecc994f092ca03dc" + integrity sha512-JTo+4+4Fw7FreyAvlSLjb1BBVaxEQAacmjD3jjuyPZclpbEghTvQZbXBb2qPd2LeIMxiHwXBZUcpmG2Gl/mDEA== + +parcel@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.12.0.tgz#60529c268c2ce0754b225af835f1519da1364298" + integrity sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg== + dependencies: + "@parcel/config-default" "2.12.0" + "@parcel/core" "2.12.0" + "@parcel/diagnostic" "2.12.0" + "@parcel/events" "2.12.0" + "@parcel/fs" "2.12.0" + "@parcel/logger" "2.12.0" + "@parcel/package-manager" "2.12.0" + "@parcel/reporter-cli" "2.12.0" + "@parcel/reporter-dev-server" "2.12.0" + "@parcel/reporter-tracer" "2.12.0" + "@parcel/utils" "2.12.0" + chalk "^4.1.0" + commander "^7.0.0" + get-port "^4.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -875,30 +2549,90 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +posthtml-parser@^0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" + integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== + dependencies: + htmlparser2 "^7.1.1" + +posthtml-parser@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" + integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== + dependencies: + htmlparser2 "^7.1.1" + +posthtml-render@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" + integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== + dependencies: + is-json "^2.0.1" -postcss@^8.4.49: - version "8.5.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== +posthtml@^0.16.4, posthtml@^0.16.5: + version "0.16.6" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" + integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" + posthtml-parser "^0.11.0" + posthtml-render "^3.0.0" prismjs@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -974,6 +2708,11 @@ react-dropzone@^11.2.0: file-selector "^0.4.0" prop-types "^15.8.1" +react-error-overlay@6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + react-focus-lock@^2.9.2: version "2.9.4" resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.4.tgz#4753f6dcd167c39050c9d84f9c63c71b3ff8462e" @@ -1033,6 +2772,11 @@ react-redux@^7.2.0: prop-types "^15.7.2" react-is "^17.0.2" +react-refresh@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" + integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== + react-remove-scroll-bar@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" @@ -1082,6 +2826,13 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + redisinsight-plugin-sdk@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/redisinsight-plugin-sdk/-/redisinsight-plugin-sdk-1.1.0.tgz#5ac39dc5398b1f73f2357e67ce51e1875fbece4f" @@ -1103,7 +2854,7 @@ refractor@^3.4.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerator-runtime@^0.13.11: +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: 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== @@ -1173,38 +2924,48 @@ repeat-string@^1.5.4: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== +require-directory@^2.1.1: + version "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== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -rollup@^4.23.0: - version "4.30.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" - integrity sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w== +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.30.1" - "@rollup/rollup-android-arm64" "4.30.1" - "@rollup/rollup-darwin-arm64" "4.30.1" - "@rollup/rollup-darwin-x64" "4.30.1" - "@rollup/rollup-freebsd-arm64" "4.30.1" - "@rollup/rollup-freebsd-x64" "4.30.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" - "@rollup/rollup-linux-arm-musleabihf" "4.30.1" - "@rollup/rollup-linux-arm64-gnu" "4.30.1" - "@rollup/rollup-linux-arm64-musl" "4.30.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" - "@rollup/rollup-linux-riscv64-gnu" "4.30.1" - "@rollup/rollup-linux-s390x-gnu" "4.30.1" - "@rollup/rollup-linux-x64-gnu" "4.30.1" - "@rollup/rollup-linux-x64-musl" "4.30.1" - "@rollup/rollup-win32-arm64-msvc" "4.30.1" - "@rollup/rollup-win32-ia32-msvc" "4.30.1" - "@rollup/rollup-win32-x64-msvc" "4.30.1" - fsevents "~2.3.2" + glob "^7.1.3" + +rxjs@^7.0.0: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sass@^1.38.0: + version "1.71.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.71.0.tgz#b3085759b9b2ab503a977aecb7e91153bf941117" + integrity sha512-HKKIKf49Vkxlrav3F/w6qRuPcmImGVbIXJ2I3Kg0VMA+3Bav+8yE9G5XmP5lMj6nl4OlqbPftGAscNaNu28b8w== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" scheduler@^0.20.2: version "0.20.2" @@ -1214,28 +2975,82 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -semver@^7.5.2: +semver@^6.3.1, semver@^7.5.2: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +"source-map-js@>=0.6.2 <2.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== + +srcset@4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" + integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + stringify-entities@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" @@ -1245,6 +3060,13 @@ stringify-entities@^3.0.1: character-entities-legacy "^1.0.0" xtend "^4.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -1252,21 +3074,92 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +svgo@^2.4.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + tabbable@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-3.1.2.tgz#f2d16cccd01f400e38635c7181adfe0ad965a4a2" integrity sha512-wjB6puVXTYO0BSFtCmWQubA/KIn7Xvajw0x0l6eJUudMG/EAiJvIUnyNX6xO4NpGrJ16lbD0eUseB9WxW0vlpQ== +term-size@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +terser@^5.16.6: + version "5.17.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.1.tgz#948f10830454761e2eeedc6debe45c532c83fd69" + integrity sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + text-diff@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/text-diff/-/text-diff-1.0.1.tgz#6c105905435e337857375c9d2f6ca63e453ff565" integrity sha512-jAnlP3ggZk7FeLX1awaMR8Y2sMyil9P9FXvNjaIJIQBAom1zvpKGGH31htOVrUFp0vlyygmJJpNrbJ4rfjsxrA== +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== + tiny-invariant@^1.0.6: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" @@ -1292,6 +3185,21 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typescript@>=3.0.0: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -1389,6 +3297,14 @@ unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + url-parse@^1.5.0: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -1417,6 +3333,11 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" +utility-types@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== + uuid@^8.3.0: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -1453,30 +3374,75 @@ vfile@^4.0.0, vfile@^4.2.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -"vite@file:../node_modules/vite": - version "6.0.7" - dependencies: - esbuild "^0.24.2" - postcss "^8.4.49" - rollup "^4.23.0" - optionalDependencies: - fsevents "~2.3.3" +weak-lru-cache@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^5.0.5: + version "5.0.8" + 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" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" diff --git a/redisinsight/ui/src/packages/common/package.json b/redisinsight/ui/src/packages/common/package.json deleted file mode 100644 index 7e4bd716a1..0000000000 --- a/redisinsight/ui/src/packages/common/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "author": { - "name": "Redis Ltd.", - "email": "support@redis.com", - "url": "https://redis.com/redis-enterprise/redis-insight" - }, - "bugs": { - "url": "https://github.com/" - }, - "description": "Redis Insight common packages for plugins", - "main": "./index.js", - "name": "common", - "version": "0.0.1", - "visualizations": [], - "dependencies": {} -} diff --git a/redisinsight/ui/src/packages/package.json b/redisinsight/ui/src/packages/package.json deleted file mode 100644 index 31e3bec6d1..0000000000 --- a/redisinsight/ui/src/packages/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "author": { - "name": "Redis Ltd.", - "email": "support@redis.com", - "url": "https://redis.com/redis-enterprise/redis-insight" - }, - "bugs": { - "url": "https://github.com/" - }, - "description": "Redis Insight plugins", - "name": "shared", - "version": "0.0.1", - "scripts": { - "build": "vite build" - }, - "devDependencies": { - "@types/d3": "^7.1.0", - "@types/file-saver": "^2.0.5", - "@types/jest": "^27.4.1", - "concurrently": "^7.6.0", - "cross-env": "^7.0.3", - "esbuild": "^0.17.12", - "jest": "^29.7.0", - "process": "^0.11.10", - "rimraf": "^3.0.2", - "rollup-plugin-css-only": "^4.5.2", - "vite": "^6.0.7", - "vite-plugin-ejs": "^1.7.0", - "vite-plugin-static-copy": "^2.2.0" - }, - "dependencies": {} -} diff --git a/redisinsight/ui/src/packages/redisearch/.parcelrc b/redisinsight/ui/src/packages/redisearch/.parcelrc new file mode 100644 index 0000000000..91f825eb4a --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/.parcelrc @@ -0,0 +1,8 @@ +{ + "extends": "@parcel/config-default", + "transformers": { + "global_styles.css": [], + "dark_theme.css": [], + "light_theme.css": [] + } +} diff --git a/redisinsight/ui/src/packages/redisearch/index.html b/redisinsight/ui/src/packages/redisearch/index.html deleted file mode 100644 index 7c8398baa0..0000000000 --- a/redisinsight/ui/src/packages/redisearch/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - Redis Query Engine plugin - - - - <% if(isDev){ %> - - - - <% } %> - - -
- - diff --git a/redisinsight/ui/src/packages/redisearch/package.json b/redisinsight/ui/src/packages/redisearch/package.json index 73220b2755..7989f290ee 100644 --- a/redisinsight/ui/src/packages/redisearch/package.json +++ b/redisinsight/ui/src/packages/redisearch/package.json @@ -12,9 +12,22 @@ "styles": "./dist/styles.css", "main": "./dist/index.js", "name": "redisearch", - "version": "0.0.2", + "version": "0.0.1", "scripts": { - "dev": "vite -c ../vite.config.mjs" + "start": "cross-env NODE_ENV=development parcel serve src/index.html", + "build": "rimraf dist && cross-env NODE_ENV=production concurrently \"yarn build:js && yarn minify:js\" \"yarn build:css\" \"yarn build:assets\"", + "build:js": "parcel build src/main.tsx --no-source-maps --no-cache --dist-dir dist", + "build:css": "parcel build src/styles/styles.scss --no-source-maps --no-cache --dist-dir dist", + "build:css:dark": "parcel build src/styles/dark_theme.scss --no-source-maps --no-cache --dist-dir dist", + "build:css:light": "parcel build src/styles/light_theme.scss --no-source-maps --no-cache --dist-dir dist", + "build:assets": "parcel build src/assets/**/* --dist-dir dist", + "minify:js": "terser --compress -- dist/main.js > dist/index.js && rimraf dist/main.js" + }, + "targets": { + "main": false, + "module": { + "includeNodeModules": true + } }, "visualizations": [ { @@ -44,6 +57,16 @@ "default": false } ], + "devDependencies": { + "@parcel/compressor-brotli": "^2.8.3", + "@parcel/compressor-gzip": "^2.8.3", + "@parcel/transformer-sass": "^2.8.3", + "concurrently": "^7.6.0", + "cross-env": "^7.0.3", + "parcel": "^2.8.3", + "rimraf": "^3.0.2", + "terser": "^5.16.6" + }, "dependencies": { "@elastic/datemath": "^5.0.3", "@elastic/eui": "34.6.0", @@ -53,10 +76,9 @@ "react-dom": "^17.0.2", "redisinsight-plugin-sdk": "^1.0.0" }, - "devDependencies": { - "vite": "file:../node_modules/vite" - }, "resolutions": { + "@parcel/**/micromatch": "^4.0.8", + "@parcel/**/braces": "^3.0.3", "trim": "0.0.3", "**/semver": "^7.5.2" } diff --git a/redisinsight/ui/src/packages/redisearch/public/table_view_icon_dark.svg b/redisinsight/ui/src/packages/redisearch/src/assets/table_view_icon_dark.svg similarity index 100% rename from redisinsight/ui/src/packages/redisearch/public/table_view_icon_dark.svg rename to redisinsight/ui/src/packages/redisearch/src/assets/table_view_icon_dark.svg diff --git a/redisinsight/ui/src/packages/redisearch/public/table_view_icon_light.svg b/redisinsight/ui/src/packages/redisearch/src/assets/table_view_icon_light.svg similarity index 100% rename from redisinsight/ui/src/packages/redisearch/public/table_view_icon_light.svg rename to redisinsight/ui/src/packages/redisearch/src/assets/table_view_icon_light.svg diff --git a/redisinsight/ui/src/packages/redisearch/src/components/GroupBadge/GroupBadge.tsx b/redisinsight/ui/src/packages/redisearch/src/components/GroupBadge/GroupBadge.tsx index ad923894a9..07bd9ff374 100644 --- a/redisinsight/ui/src/packages/redisearch/src/components/GroupBadge/GroupBadge.tsx +++ b/redisinsight/ui/src/packages/redisearch/src/components/GroupBadge/GroupBadge.tsx @@ -3,8 +3,8 @@ import { EuiBadge, EuiText } from '@elastic/eui' import { GROUP_TYPES_COLORS, GROUP_TYPES_DISPLAY } from '../../constants' export interface Props { - type: any - name?: string + type: any; + name?: string, className?: string } diff --git a/redisinsight/ui/src/packages/redisearch/src/components/TableInfoResult/TableInfoResult.tsx b/redisinsight/ui/src/packages/redisearch/src/components/TableInfoResult/TableInfoResult.tsx index cf1a67d262..2a7b4acd1f 100644 --- a/redisinsight/ui/src/packages/redisearch/src/components/TableInfoResult/TableInfoResult.tsx +++ b/redisinsight/ui/src/packages/redisearch/src/components/TableInfoResult/TableInfoResult.tsx @@ -15,8 +15,8 @@ import GroupBadge from '../GroupBadge' import { InfoAttributesBoolean } from '../../constants' export interface Props { - query: string - result: any + query: string; + result: any; } const loadingMessage = 'loading...' diff --git a/redisinsight/ui/src/packages/redisearch/src/components/TableResult/TableResult.tsx b/redisinsight/ui/src/packages/redisearch/src/components/TableResult/TableResult.tsx index 49feb6954a..34cb00b762 100644 --- a/redisinsight/ui/src/packages/redisearch/src/components/TableResult/TableResult.tsx +++ b/redisinsight/ui/src/packages/redisearch/src/components/TableResult/TableResult.tsx @@ -14,10 +14,10 @@ import { CommandArgument, Command } from '../../constants' import { formatLongName, replaceSpaces } from '../../utils' export interface Props { - query: string - result: any - matched?: number - cursorId?: null | number + query: string; + result: any; + matched?: number; + cursorId?: null | number; } const loadingMessage = 'loading...' @@ -77,7 +77,6 @@ const TableResult = React.memo((props: Props) => { diff --git a/redisinsight/ui/src/packages/redisearch/src/global.d.ts b/redisinsight/ui/src/packages/redisearch/src/global.d.ts deleted file mode 100644 index f7b40bd272..0000000000 --- a/redisinsight/ui/src/packages/redisearch/src/global.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '@elastic/eui/es/components/icon/*' diff --git a/redisinsight/ui/src/packages/redisearch/src/icons/arrow_down.jsx b/redisinsight/ui/src/packages/redisearch/src/icons/arrow_down.jsx new file mode 100644 index 0000000000..ab2e2bff28 --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/src/icons/arrow_down.jsx @@ -0,0 +1,36 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconArrowDown = function EuiIconArrowDown(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + fillRule: "non-zero", + d: "M13.069 5.157L8.384 9.768a.546.546 0 01-.768 0L2.93 5.158a.552.552 0 00-.771 0 .53.53 0 000 .759l4.684 4.61c.641.631 1.672.63 2.312 0l4.684-4.61a.53.53 0 000-.76.552.552 0 00-.771 0z" + })); + } catch (e) { + return + } + +}; + +export var icon = EuiIconArrowDown; diff --git a/redisinsight/ui/src/packages/redisearch/src/icons/arrow_left.jsx b/redisinsight/ui/src/packages/redisearch/src/icons/arrow_left.jsx new file mode 100644 index 0000000000..ca9522a52a --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/src/icons/arrow_left.jsx @@ -0,0 +1,35 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconArrowLeft = function EuiIconArrowLeft(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + fillRule: "nonzero", + d: "M10.843 13.069L6.232 8.384a.546.546 0 010-.768l4.61-4.685a.552.552 0 000-.771.53.53 0 00-.759 0l-4.61 4.684a1.65 1.65 0 000 2.312l4.61 4.684a.53.53 0 00.76 0 .552.552 0 000-.771z" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconArrowLeft; diff --git a/redisinsight/ui/src/packages/redisearch/src/icons/arrow_right.jsx b/redisinsight/ui/src/packages/redisearch/src/icons/arrow_right.jsx new file mode 100644 index 0000000000..5263d407b8 --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/src/icons/arrow_right.jsx @@ -0,0 +1,42 @@ +import * as React from 'react' + +function _extends() { _extends = Object.assign || function (target) { for (let i = 1; i < arguments.length; i++) { const source = arguments[i]; for (const key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key] } } } return target }; return _extends.apply(this, arguments) } + +function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; const target = _objectWithoutPropertiesLoose(source, excluded); let key; let + i; if (Object.getOwnPropertySymbols) { const sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key] } } return target +} + +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; const target = {}; const sourceKeys = Object.keys(source); let key; let + i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key] } return target +} + +const EuiIconArrowRight = function EuiIconArrowRight(_ref) { + const { title } = _ref + const { titleId } = _ref + const props = _objectWithoutProperties(_ref, ['title', 'titleId']) + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /* #__PURE__ */React.createElement('svg', { + width: 16, + height: 16, + viewBox: '0 0 16 16', + xmlns: 'http://www.w3.org/2000/svg', + 'aria-labelledby': titleId, + ...props + }, title ? /* #__PURE__ */React.createElement('title', { + id: titleId + }, title) : null, /* #__PURE__ */React.createElement('path', { + fillRule: 'nonzero', + d: 'M5.157 13.069l4.611-4.685a.546.546 0 000-.768L5.158 2.93a.552.552 0 010-.771.53.53 0 01.759 0l4.61 4.684c.631.641.63 1.672 0 2.312l-4.61 4.684a.53.53 0 01-.76 0 .552.552 0 010-.771z' + })) + } catch (e) { + return + } +} + +export var icon = EuiIconArrowRight diff --git a/redisinsight/ui/src/packages/redisearch/src/icons/check.jsx b/redisinsight/ui/src/packages/redisearch/src/icons/check.jsx new file mode 100644 index 0000000000..bd8023fd8f --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/src/icons/check.jsx @@ -0,0 +1,35 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconCheck = function EuiIconCheck(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. TestCafe is failing for default icons + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + fillRule: "evenodd", + d: "M6.5 12a.502.502 0 01-.354-.146l-4-4a.502.502 0 01.708-.708L6.5 10.793l6.646-6.647a.502.502 0 01.708.708l-7 7A.502.502 0 016.5 12" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconCheck; diff --git a/redisinsight/ui/src/packages/redisearch/src/icons/copy.jsx b/redisinsight/ui/src/packages/redisearch/src/icons/copy.jsx new file mode 100644 index 0000000000..35a08cc6a0 --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/src/icons/copy.jsx @@ -0,0 +1,36 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconCopy = function EuiIconCopy(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + d: "M11.4 0c.235 0 .46.099.622.273l2.743 3c.151.162.235.378.235.602v9.25a.867.867 0 01-.857.875H3.857A.867.867 0 013 13.125V.875C3 .392 3.384 0 3.857 0H11.4zM14 4h-2.6a.4.4 0 01-.4-.4V1H4v12h10V4z" + }), /*#__PURE__*/React.createElement("path", { + d: "M3 1H2a1 1 0 00-1 1v13a1 1 0 001 1h10a1 1 0 001-1v-1h-1v1H2V2h1V1z" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconCopy; diff --git a/redisinsight/ui/src/packages/redisearch/src/icons/cross.jsx b/redisinsight/ui/src/packages/redisearch/src/icons/cross.jsx new file mode 100644 index 0000000000..c83a8931ec --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/src/icons/cross.jsx @@ -0,0 +1,34 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconCross = function EuiIconCross(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + d: "M7.293 8L3.146 3.854a.5.5 0 11.708-.708L8 7.293l4.146-4.147a.5.5 0 01.708.708L8.707 8l4.147 4.146a.5.5 0 01-.708.708L8 8.707l-4.146 4.147a.5.5 0 01-.708-.708L7.293 8z" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconCross; diff --git a/redisinsight/ui/src/packages/redisearch/src/icons/empty.jsx b/redisinsight/ui/src/packages/redisearch/src/icons/empty.jsx new file mode 100644 index 0000000000..2674c4de69 --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/src/icons/empty.jsx @@ -0,0 +1,30 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconEmpty = function EuiIconEmpty(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. TestCafe is failing for default icons + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props)); + } catch (e) { + return '' + } +}; + +export var icon = EuiIconEmpty; diff --git a/redisinsight/ui/src/packages/redisearch/src/index.html b/redisinsight/ui/src/packages/redisearch/src/index.html new file mode 100644 index 0000000000..344485e21a --- /dev/null +++ b/redisinsight/ui/src/packages/redisearch/src/index.html @@ -0,0 +1,18 @@ + + + + + + + Redis Query Engine plugin + + + + + + + +
+ + diff --git a/redisinsight/ui/src/packages/redisearch/src/main.tsx b/redisinsight/ui/src/packages/redisearch/src/main.tsx index 9c8653a90e..20eef2f49c 100644 --- a/redisinsight/ui/src/packages/redisearch/src/main.tsx +++ b/redisinsight/ui/src/packages/redisearch/src/main.tsx @@ -5,7 +5,6 @@ import result from './result2.json' // import result from './resultInfo.json' // import result from './result3.json' import App from './App' -import './styles/styles.scss' interface Props { command?: string diff --git a/redisinsight/ui/src/packages/redisearch/src/styles/styles.scss b/redisinsight/ui/src/packages/redisearch/src/styles/styles.scss index f55a7cc273..f3501be279 100644 --- a/redisinsight/ui/src/packages/redisearch/src/styles/styles.scss +++ b/redisinsight/ui/src/packages/redisearch/src/styles/styles.scss @@ -85,12 +85,6 @@ html { display: inline-block !important; } -// The style applies to the last div element in the tooltip, -// which is the one containing the text -.euiToolTipPopover.text-multiline-ellipsis > div:last-child { - @include eui.multiline-ellipsis($line-count: 7, $line-height: 1.5rem); -} - .cell { position: relative; } diff --git a/redisinsight/ui/src/packages/redisearch/src/utils/cachedIcons.ts b/redisinsight/ui/src/packages/redisearch/src/utils/cachedIcons.ts index 97f69b49dd..008167b3c0 100644 --- a/redisinsight/ui/src/packages/redisearch/src/utils/cachedIcons.ts +++ b/redisinsight/ui/src/packages/redisearch/src/utils/cachedIcons.ts @@ -1,10 +1,19 @@ -import { icon as EuiIconArrowRight } from '@elastic/eui/es/components/icon/assets/arrow_right' -import { icon as EuiIconArrowLeft } from '@elastic/eui/es/components/icon/assets/arrow_left' -import { icon as EuiIconArrowDown } from '@elastic/eui/es/components/icon/assets/arrow_down' -import { icon as EuiIconCheck } from '@elastic/eui/es/components/icon/assets/check' -import { icon as EuiIconCopy } from '@elastic/eui/es/components/icon/assets/copy' -import { icon as EuiIconCross } from '@elastic/eui/es/components/icon/assets/cross' -import { icon as EuiIconEmpty } from '@elastic/eui/es/components/icon/assets/empty' +import { icon as EuiIconArrowRight } from '../icons/arrow_right' +import { icon as EuiIconArrowLeft } from '../icons/arrow_left' +import { icon as EuiIconArrowDown } from '../icons/arrow_down' +import { icon as EuiIconCheck } from '../icons/check' +import { icon as EuiIconCopy } from '../icons/copy' +import { icon as EuiIconCross } from '../icons/cross' +import { icon as EuiIconEmpty } from '../icons/empty' + +// [todo] Remove hardcoded icons. Jest is failing for this imports +// import { icon as EuiIconArrowRight } from '@elastic/eui/es/components/icon/assets/arrow_right' +// import { icon as EuiIconArrowLeft } from '@elastic/eui/es/components/icon/assets/arrow_left' +// import { icon as EuiIconArrowDown } from '@elastic/eui/es/components/icon/assets/arrow_down' +// import { icon as EuiIconCheck } from '@elastic/eui/es/components/icon/assets/check' +// import { icon as EuiIconCopy } from '@elastic/eui/es/components/icon/assets/copy' +// import { icon as EuiIconCross } from '@elastic/eui/es/components/icon/assets/cross' +// import { icon as EuiIconEmpty } from '@elastic/eui/es/components/icon/assets/empty' export default { arrowRight: EuiIconArrowRight, diff --git a/redisinsight/ui/src/packages/redisearch/yarn.lock b/redisinsight/ui/src/packages/redisearch/yarn.lock index 3327461420..a250056b11 100644 --- a/redisinsight/ui/src/packages/redisearch/yarn.lock +++ b/redisinsight/ui/src/packages/redisearch/yarn.lock @@ -2,6 +2,28 @@ # yarn lockfile v1 +"@babel/code-frame@^7.0.0": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.15.4", "@babel/runtime@^7.9.2": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" @@ -60,130 +82,92 @@ uuid "^8.3.0" vfile "^4.2.0" -"@esbuild/aix-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" - integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== - -"@esbuild/android-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" - integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== - -"@esbuild/android-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" - integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== - -"@esbuild/android-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" - integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== - -"@esbuild/darwin-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" - integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== - -"@esbuild/darwin-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" - integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== - -"@esbuild/freebsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" - integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== - -"@esbuild/freebsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" - integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== - -"@esbuild/linux-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" - integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== - -"@esbuild/linux-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" - integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== - -"@esbuild/linux-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" - integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== - -"@esbuild/linux-loong64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" - integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== - -"@esbuild/linux-mips64el@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" - integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== - -"@esbuild/linux-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" - integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== - -"@esbuild/linux-riscv64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" - integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== - -"@esbuild/linux-s390x@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" - integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== - -"@esbuild/linux-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" - integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== - -"@esbuild/netbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" - integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== - -"@esbuild/netbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" - integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== - -"@esbuild/openbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" - integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== - -"@esbuild/openbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" - integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== - -"@esbuild/sunos-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" - integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== - -"@esbuild/win32-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" - integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== - -"@esbuild/win32-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" - integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== - -"@esbuild/win32-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" - integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" + integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.9": + 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" + +"@lezer/common@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049" + integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ== + +"@lezer/lr@^1.0.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.0.tgz#ed52a75dbbfbb0d1eb63710ea84c35ee647cb67e" + integrity sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg== + dependencies: + "@lezer/common" "^1.0.0" + +"@lmdb/lmdb-darwin-arm64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e" + integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw== + +"@lmdb/lmdb-darwin-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184" + integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug== + +"@lmdb/lmdb-linux-arm64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e" + integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww== + +"@lmdb/lmdb-linux-arm@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d" + integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg== + +"@lmdb/lmdb-linux-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302" + integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ== + +"@lmdb/lmdb-win32-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c" + integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ== "@mapbox/hast-util-table-cell-style@^0.2.0": version "0.2.0" @@ -192,111 +176,826 @@ dependencies: unist-util-visit "^1.4.1" -"@rollup/rollup-android-arm-eabi@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" - integrity sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q== - -"@rollup/rollup-android-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz#9d81ea54fc5650eb4ebbc0a7d84cee331bfa30ad" - integrity sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w== - -"@rollup/rollup-darwin-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz#29448cb1370cf678b50743d2e392be18470abc23" - integrity sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q== - -"@rollup/rollup-darwin-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz#0ca99741c3ed096700557a43bb03359450c7857d" - integrity sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA== - -"@rollup/rollup-freebsd-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz#233f8e4c2f54ad9b719cd9645887dcbd12b38003" - integrity sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ== - -"@rollup/rollup-freebsd-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz#dfba762a023063dc901610722995286df4a48360" - integrity sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw== - -"@rollup/rollup-linux-arm-gnueabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz#b9da54171726266c5ef4237f462a85b3c3cf6ac9" - integrity sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg== - -"@rollup/rollup-linux-arm-musleabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz#b9db69b3f85f5529eb992936d8f411ee6d04297b" - integrity sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug== - -"@rollup/rollup-linux-arm64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz#2550cf9bb4d47d917fd1ab4af756d7bbc3ee1528" - integrity sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw== - -"@rollup/rollup-linux-arm64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz#9d06b26d286c7dded6336961a2f83e48330e0c80" - integrity sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA== - -"@rollup/rollup-linux-loongarch64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz#e957bb8fee0c8021329a34ca8dfa825826ee0e2e" - integrity sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz#e8585075ddfb389222c5aada39ea62d6d2511ccc" - integrity sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw== - -"@rollup/rollup-linux-riscv64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz#7d0d40cee7946ccaa5a4e19a35c6925444696a9e" - integrity sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw== - -"@rollup/rollup-linux-s390x-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz#c2dcd8a4b08b2f2778eceb7a5a5dfde6240ebdea" - integrity sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA== - -"@rollup/rollup-linux-x64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz#183637d91456877cb83d0a0315eb4788573aa588" - integrity sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg== - -"@rollup/rollup-linux-x64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz#036a4c860662519f1f9453807547fd2a11d5bb01" - integrity sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow== - -"@rollup/rollup-win32-arm64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz#51cad812456e616bfe4db5238fb9c7497e042a52" - integrity sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw== - -"@rollup/rollup-win32-ia32-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz#661c8b3e4cd60f51deaa39d153aac4566e748e5e" - integrity sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw== - -"@rollup/rollup-win32-x64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" - integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== +"@mischnic/json-sourcemap@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" + integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/lr" "^1.0.0" + json5 "^2.2.1" + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" + integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== + +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" + integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== + +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" + integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== + +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" + integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== + +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" + integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== + +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" + integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== + +"@parcel/bundler-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.11.0.tgz#b682185ed93b1d977f4174779cbe426a4876cfc2" + integrity sha512-ZIs0865Lp871ZK83k5I9L4DeeE26muNMrHa7j8bvls6fKBJKAn8djrhfU4XOLyziU4aAOobcPwXU0+npWqs52g== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/graph" "3.1.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/cache@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.11.0.tgz#866f62ccf29207bd77bcc294bb4582e4986c4e75" + integrity sha512-RSSkGNjO00lJPyftzaC9eaNVs4jMjPSAm0VJNWQ9JSm2n4A9BzQtTFAt1vhJOzzW1UsQvvBge9DdfkB7a2gIOw== + dependencies: + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/utils" "2.11.0" + lmdb "2.8.5" + +"@parcel/codeframe@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.11.0.tgz#58cf1173ea514255b1ad19960d5035773f50736b" + integrity sha512-YHs9g/i5af/sd/JrWAojU9YFbKffcJ3Tx2EJaK0ME8OJsye91UaI/3lxSUYLmJG9e4WLNJtqci8V5FBMz//ZPg== + dependencies: + chalk "^4.1.0" + +"@parcel/compressor-brotli@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-brotli/-/compressor-brotli-2.11.0.tgz#77265ec498a3b3e88215bc755ec4e5cfd1cd3670" + integrity sha512-5e8aKADVikIbyB1A11YGk4A/oZ7GSmAwDPN5QquXhIB2WQ9hAz59GBSdu4YIpj4s43+Hpvh1ndm7hRY7XjePmA== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/compressor-gzip@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-gzip/-/compressor-gzip-2.11.0.tgz#ba7a50f9ef763f00653d84572c38cb50af680634" + integrity sha512-Tqn8WtqRnGeIUte7z823PMx7EeTcCjzL3zhHiUObZ418+9bJjskwOMSW2cE1nrzt7fP5Cq/cqlUC731zwD4RoA== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/compressor-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.11.0.tgz#44ec3484d1276ad5dc37bc59ea61d6176357e71a" + integrity sha512-RArhBPRTCfz77soX2IECH09NUd76UBWujXiPRcXGPIHK+C3L1cRuzsNcA39QeSb3thz3b99JcozMJ1nkC2Bsgw== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/config-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.11.0.tgz#78c94ba1c7c19615305fddc8067425c1816b7cb2" + integrity sha512-1e2+qcZkm5/0f4eI20p/DemcYiSxq9d/eyjpTXA7PulJaHbL1wonwUAuy3mvnAvDnLOJmAk/obDVgX1ZfxMGtg== + dependencies: + "@parcel/bundler-default" "2.11.0" + "@parcel/compressor-raw" "2.11.0" + "@parcel/namer-default" "2.11.0" + "@parcel/optimizer-css" "2.11.0" + "@parcel/optimizer-htmlnano" "2.11.0" + "@parcel/optimizer-image" "2.11.0" + "@parcel/optimizer-svgo" "2.11.0" + "@parcel/optimizer-swc" "2.11.0" + "@parcel/packager-css" "2.11.0" + "@parcel/packager-html" "2.11.0" + "@parcel/packager-js" "2.11.0" + "@parcel/packager-raw" "2.11.0" + "@parcel/packager-svg" "2.11.0" + "@parcel/packager-wasm" "2.11.0" + "@parcel/reporter-dev-server" "2.11.0" + "@parcel/resolver-default" "2.11.0" + "@parcel/runtime-browser-hmr" "2.11.0" + "@parcel/runtime-js" "2.11.0" + "@parcel/runtime-react-refresh" "2.11.0" + "@parcel/runtime-service-worker" "2.11.0" + "@parcel/transformer-babel" "2.11.0" + "@parcel/transformer-css" "2.11.0" + "@parcel/transformer-html" "2.11.0" + "@parcel/transformer-image" "2.11.0" + "@parcel/transformer-js" "2.11.0" + "@parcel/transformer-json" "2.11.0" + "@parcel/transformer-postcss" "2.11.0" + "@parcel/transformer-posthtml" "2.11.0" + "@parcel/transformer-raw" "2.11.0" + "@parcel/transformer-react-refresh-wrap" "2.11.0" + "@parcel/transformer-svg" "2.11.0" + +"@parcel/core@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.11.0.tgz#5bbe8729e042a216c130864fb9063a26f9455b6f" + integrity sha512-Npe0S6hVaqWEwRL+HI7gtOYOaoE5bJQZTgUDhsDoppWbau51jOlRYOZTXuvRK/jxXnze4/S1sdM24xBYAQ5qkw== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/cache" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/graph" "3.1.0" + "@parcel/logger" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/profiler" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + abortcontroller-polyfill "^1.1.9" + base-x "^3.0.8" + browserslist "^4.6.6" + clone "^2.1.1" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" + json5 "^2.2.0" + msgpackr "^1.9.9" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/diagnostic@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.11.0.tgz#d16dd6c6d5be20e7a61ce2e43b413bfb4172d0b6" + integrity sha512-4dJmOXVL5YGGQRRsQosQbSRONBcboB71mSwaeaEgz3pPdq9QXVPLACkGe/jTXSqa3OnAHu3g5vQLpE1g5xqBqw== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + nullthrows "^1.1.1" + +"@parcel/events@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.11.0.tgz#b0b5769f6afe0932eeae12286f2e21bac3c01cb1" + integrity sha512-K6SOjOrQsz1GdNl2qKBktq7KJ3Q3yxK8WXdmQYo10wG39dr051xtMb38aqieTp4eVhL8Yaq2iJgGkdr11fuBnA== + +"@parcel/fs@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.11.0.tgz#aecd502bbdf0fce3366b48a4728f5b986a146241" + integrity sha512-zWckdnnovdrgdFX4QYuQV4bbKCsh6IYCkmwaB4yp47rhw1MP0lkBINLt4yFPHBxWXOpElCfxjL+z69c9xJQRBQ== + dependencies: + "@parcel/rust" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/watcher" "^2.0.7" + "@parcel/workers" "2.11.0" + +"@parcel/graph@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.1.0.tgz#1cac1e0af72a31d6327c752358886bc0b3193b3f" + integrity sha512-d1dTW5C7A52HgDtoXlyvlET1ypSlmIxSIZOJ1xp3R9L9hgo3h1u3jHNyaoTe/WPkGVe2QnFxh0h+UibVJhu9vg== + dependencies: + nullthrows "^1.1.1" + +"@parcel/logger@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.11.0.tgz#19882e6687899f2085ce23f61ff4d9d588ca5b8f" + integrity sha512-HtMEdCq3LKnvv4T2CIskcqlf2gpBvHMm3pkeUFB/hc/7hW/hE1k6/HA2VOQvc0tBsaMpmEx7PCrfrH56usQSyA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + +"@parcel/markdown-ansi@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.11.0.tgz#35ff20abcc31eafbd395532a9cee3dd6570fa012" + integrity sha512-YA60EWbXi6cLOIzcwRC2wijotPauOGQbUi0vSbu0O6/mjQ68kWCMGz0hwZjDRQcPypQVJEIvTgMymLbvumxwhg== + dependencies: + chalk "^4.1.0" + +"@parcel/namer-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.11.0.tgz#72ae58dd3f83eacc7ca0b4d3b80a8f87a63fb320" + integrity sha512-DEwBSKSClg4DA2xAWimYkw9bFi7MFb9TdT7/TYZStMTsfYHPWOyyjGR7aVr3Ra4wNb+XX6g4rR41yp3HD6KO7A== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/node-resolver-core@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.2.0.tgz#f8e113bffc10b1fd4aa9bd551fc033bb3e8e93b7" + integrity sha512-XJRSxCkNbGFWjfmwFdcQZ/qlzWZd35qLtvLz2va8euGL7M5OMEQOv7dsvEhl0R+CC2zcnfFzZwxk78q6ezs8AQ== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/optimizer-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.11.0.tgz#3908c2e9ee0680c82c43531ce457fd230a38319e" + integrity sha512-bV97PRxshHV3dMwOpLRgcP1QNhrVWh6VVDfm2gmWULpvsjoykcPS6vrCFksY5CpQsSvNHqJBzQjWS8FubUI76w== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/optimizer-htmlnano@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.11.0.tgz#2d62e5a0f15a58feeee67cdd23bf54da528d0207" + integrity sha512-c20pz4EFF5DNFmqYgptlIj49eT6xjGLkDTdHH3RRzxKovuSXWfYSPs3GED3ZsjVuQyjNQif+/MAk9547F7hrdQ== + dependencies: + "@parcel/plugin" "2.11.0" + htmlnano "^2.0.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + svgo "^2.4.0" + +"@parcel/optimizer-image@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.11.0.tgz#7126b18c2e4cbacf9f63481f46e7859329489a66" + integrity sha512-jCaJww5QFG2GuNzYW8nlSW+Ea+Cv47TRnOPJNquFIajgfTLJ5ddsWbaNal0GQsL8yNiCBKWd1AV4W0RH9tG0Jg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + +"@parcel/optimizer-svgo@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.11.0.tgz#e9ecc314d2ffb7584e08ac507f2165c5a0db0445" + integrity sha512-TQpvfBhjV2IsuFHXUolbDS6XWB3DDR2rYTlqlA8LMmuOY7jQd9Bnkl4JnapzWm/bRuzRlzdGjjVCPGL8iShFvA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + svgo "^2.4.0" + +"@parcel/optimizer-swc@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.11.0.tgz#5391873164fe707401414737fff23b4e4311977b" + integrity sha512-ftf42F3JyZxJb6nnLlgNGyNQ273YOla4dFGH/tWC8iTwObHUpWe7cMbCGcrSJBvAlsLkZfLpFNAXFxUgxdKyHQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + "@swc/core" "^1.3.36" + nullthrows "^1.1.1" + +"@parcel/package-manager@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.11.0.tgz#4cef6da831563829e584c2fabb586cb6b19fafcb" + integrity sha512-QzdsrUYlAwIzb8by7WJjqYnbR1MoMKWbtE1MXUeYsZbFusV8B6pOH+lwqNJKS/BFtddZMRPYFueZS2N2fwzjig== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/node-resolver-core" "3.2.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + semver "^7.5.2" + +"@parcel/packager-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.11.0.tgz#1fad7a0448a516fd9686ab7d6796c22715fbd377" + integrity sha512-AyIxsp4eL8c22vp2oO2hSRnr3hSVNkARNZc9DG6uXxCc2Is5tUEX0I4PwxWnAx0EI44l+3zX/o414zT8yV9wwQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/packager-html@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.11.0.tgz#b30e611cf15f55ab4efbf5d101add4ca80449f2f" + integrity sha512-ho5AQ70naTV8IqkKIbKtK+jsXQ5TJfFgtBvmJlyB3YydRMbIc+3g4G0xgIvf15V4uCMw9Md0Sv1W65nQXHPQoA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + +"@parcel/packager-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.11.0.tgz#a591464e729698537c9f115b4a1f0b779a75127b" + integrity sha512-SxjCsd0xQfg5H73YtVJj9VOpr9s0rwMsSoeykjkatbkEla9NsZajsUkd/bfYf+/0WvEKOrB8oUBo15HkGOgKug== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + globals "^13.2.0" + nullthrows "^1.1.1" + +"@parcel/packager-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.11.0.tgz#638749e6f69968f9ffc82c7f60a7332b48ba9777" + integrity sha512-2/0JQ8DZrz7cVNXwD6OYoUUtSSnlr4dsz8ZkpFDKsBJhvMHtC78Sq+1EDixDGOMiUcalSEjNsoHtkpq9uNh+Xw== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/packager-svg@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.11.0.tgz#413fe1db971d1d48b6dea8ecf89396ca7ab07bc2" + integrity sha512-2wQBkzLwcaWFGWz8TP+bgsXgiueWPzrjKsWugWdDfq0FbXh8XVeR/599qnus3RFHZy4cH6L6yq/7zxcljtxK8A== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + posthtml "^0.16.4" + +"@parcel/packager-wasm@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.11.0.tgz#53ffc6f4e8452f5925dc9577425effbadb322421" + integrity sha512-tTy4EbDXeeiZ0oB7L2FWaHSD1mbmYZP6R5HXqkvc5dECGUKPU5Jz6ek2C5AM+HfQdQLKXPQ/Xw3eJnI/AmctVg== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/plugin@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.11.0.tgz#f9e076b67784ef4e5683c6d6877875076b9cdf49" + integrity sha512-9npuKBlhnPn7oeUpLJGecceg16GkXbvzbr6MNSZiHhkx3IBeITHQXlZnp2zAjUOFreNsYOfifwEF2S4KsARfBQ== + dependencies: + "@parcel/types" "2.11.0" + +"@parcel/profiler@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.11.0.tgz#5c8a353c35d1c1cb7af3d53534d9003215bb46b2" + integrity sha512-s10SS09prOdwnaAcjK8M5zO8o+zPJJW5oOqXPNdf6KH4NGD/ue7iOk2xM8QLw6ulSwxE7NDt++lyfW3AXgCZwg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + chrome-trace-event "^1.0.2" + +"@parcel/reporter-cli@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.11.0.tgz#727ee271ee5af002d137fa89ca25ccdca0f797fe" + integrity sha512-hY0iO0f+LifgJHDUIjGQJnxLFSkk2jlbfy+kIaft5oI3/IM+UljecfGO+14XH8mYlqRXXPsT09TJe8ZKQzp4ZQ== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + chalk "^4.1.0" + cli-progress "^3.12.0" + term-size "^2.2.1" + +"@parcel/reporter-dev-server@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.11.0.tgz#3d94b50736ff98de6c94b6051ac1a0103c52d881" + integrity sha512-T4ue1+oLFNdcd9maw8QWQuxzOS2kX2jOrSvYKwYd9oGnqiAr1rpiHYYKJhHng+PF5ybwWkj8dUJfGh2NoQysJA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + +"@parcel/reporter-tracer@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.11.0.tgz#01c77ad1e450fb49f4bf502ba03dc8fe20347459" + integrity sha512-33q4ftO26OPWHkUpEm0bzzSjW2kHEh6q/JFePwf8W6APTQVruj4mV46+Fh6rxX42ixs92K/QoiE0gYgWZQVDHA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + chrome-trace-event "^1.0.3" + nullthrows "^1.1.1" + +"@parcel/resolver-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.11.0.tgz#6b5ed85523ce9bbd46f4e9fe44899e12129f636d" + integrity sha512-suZNN2lE5W48LPTwAbG7gnj1IeubkCVEm0XspWXcXUtCzglimNJ8PVVBGx171o5CqDpdbGF3AqHjG9N3uOwXag== + dependencies: + "@parcel/node-resolver-core" "3.2.0" + "@parcel/plugin" "2.11.0" + +"@parcel/runtime-browser-hmr@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.11.0.tgz#a45efcefa6d55e415d24aeea406ce853c23d2798" + integrity sha512-uVwNBtoLMrlPHLvRS05BVhLseduMOpZT36yiIjS0YSBJcC6/otI9AY7ZiDPYmrB5xTqM0R+D554JhPaJHCuocw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + +"@parcel/runtime-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.11.0.tgz#5ceaa82030133db13520d8c79a36f2d872f78514" + integrity sha512-fH3nJoexINz7s4cDzp0Vjsx0k1pMYSa5ch38LbbNqCKTermy0pS0zZuvgfLfHFFP+AMRpFQenrF7h7N3bgDmHw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/runtime-react-refresh@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.11.0.tgz#ea610cc8e8d9c726ad8a13493d80da8a71200d98" + integrity sha512-Kfnc7gLjhoephLMnjABrkIkzVfzPrpJlxiJFIleY2Fm57YhmCfKsEYxm3lHOutNaYl1VArW0LKClPH/VHG9vfQ== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + react-error-overlay "6.0.9" + react-refresh "^0.9.0" + +"@parcel/runtime-service-worker@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.11.0.tgz#1eede22df67178a27f469591be836a7fe673c5ff" + integrity sha512-c8MaSpSbXIKuN5sA/g4UsrsH1BtBZ6Em+eSxt9AYbdPtWrW+qwCioNVZj9lugBRUzDMjVfJz0yK59nS42hABvw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/rust@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.11.0.tgz#8abc8d0b716568df240228f81026546d0d276b5a" + integrity sha512-UkLWdHOD8Md2YmJDPsqd3yIs9chhdl/ATfV/B/xdPKGmqtNouYpDCRlq+WxMt3mLoYgHEg9UwrWLTebo2rr2iQ== + +"@parcel/source-map@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" + integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== + dependencies: + detect-libc "^1.0.3" + +"@parcel/transformer-babel@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.11.0.tgz#3d751ec37d4aa96155494f1f3ff39442d17eeb7a" + integrity sha512-WKGblnp7r426VG+cpeQzc6dj/30EoUaYwyl4OEaigQSJizyuPWTBWTz6FUw+ih1/sg37h+D1BIh9C2FsVzpzbw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + json5 "^2.2.0" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/transformer-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.11.0.tgz#251b837960f7c7f1eed0992551afa68fac9d45f6" + integrity sha512-nFmBulF/ErNoafO87JbVrBavjBMNwE/kahbCRVxc2Mvlphz4F4lBW4eDRS5l4xBqFJaNkHr9R55ehLBBilF4Jw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/transformer-html@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.11.0.tgz#5b30b4e0b7ab06c838d776defabb2d911040c178" + integrity sha512-90vp7mbvvfqPr9XIINpMcELtywj56f1bxfOkLQgWU1bm22H0FT3i5dqdac++2My0IGDvMwhAEjQfbn4pA579NQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + srcset "4" + +"@parcel/transformer-image@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.11.0.tgz#7364f4da6e8768fbf29870e5d57d771ecc7b3556" + integrity sha512-QiZj18UHf3lVFsi65Vz8YbS3ydx9Pe9x8ktMxE1oh9qpznN8lD7gE/Z9DxuTZB84EZ9pKytKwcv5WGXP25xIFg== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/transformer-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.11.0.tgz#1067d929a5c7f577b3c40068d5f6cb6428398771" + integrity sha512-G1sv0n8/fJqHqwUs0iVnVdmRY0Kh8kWaDkuWcU/GJBHMGhUnLXKdNwxX2Av9UdBL14bU1nTINfr9qOfnQotXWg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + "@swc/helpers" "^0.5.0" + browserslist "^4.6.6" + nullthrows "^1.1.1" + regenerator-runtime "^0.13.7" + semver "^7.5.2" + +"@parcel/transformer-json@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.11.0.tgz#0ca1ca76a24ad3bf6941bf99ba7af77e845cd653" + integrity sha512-Wt/wgSBaRWmPL4gpvjkV0bCBRxFOtsuLNzsm8vYA5poxTFhuLY+AoyQ8S2+xXU4VxwBfdppfIr2Ny3SwGs8xbQ== + dependencies: + "@parcel/plugin" "2.11.0" + json5 "^2.2.0" + +"@parcel/transformer-postcss@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.11.0.tgz#df5e776a7383400a34c54a64a0bd8f998b656316" + integrity sha512-Ugy8XHBaUptGotsvwzq7gPCvkCopTIqqZ0JZ40Jmy9slGms8wnx06pNHA1Be/RcJwkJ2TbSu+7ncZdgmP5x5GQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + clone "^2.1.1" + nullthrows "^1.1.1" + postcss-value-parser "^4.2.0" + semver "^7.5.2" + +"@parcel/transformer-posthtml@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.11.0.tgz#dd28bfbc6f5d04e2e452f63ee7d9e02a62bb72e2" + integrity sha512-dMK4p1RRAoIJEjK/Wz9GOLqwHqdD/VQDhMPk+6sUKp5zf2MhSohUstpp5gKsSZivCM3PS2f8k9rgroacJ/ReuA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + +"@parcel/transformer-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.11.0.tgz#76e2d83e96b46c2b243d7d43a45a18fe86dd5986" + integrity sha512-2ltp3TgS+cxEqSM1vk5gDtJrYx4KMuRRtbSgSvkdldyOgPhflnLU3/HRz72hXSNGqYOV0/JN0+ocsfPnqR00ug== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/transformer-react-refresh-wrap@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.11.0.tgz#7ce085b7c29cf93e84bdfb4b8b0217f448974ace" + integrity sha512-6pY0CdIgIpXC6XpsDWizf+zLgiuEsJ106HjWLwF7/R72BrvDhLPZ6jRu4UTrnd6bM89KahPw9fZZzjKoA5Efcw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + react-refresh "^0.9.0" + +"@parcel/transformer-sass@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-sass/-/transformer-sass-2.11.0.tgz#8ae922d6af3dca53297ca83c8dc78182994dcdba" + integrity sha512-caVIj1UANPgtlZOXcsBrQ++ouAy04hcq+wTwxJrf5t3XA4pdXQmkiLs5WIIUUGBp5hwkV6/BSwc4ht87MunA0g== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + sass "^1.38.0" + +"@parcel/transformer-svg@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.11.0.tgz#3e0f2d623ad536ef527d543fd599baf3c0089345" + integrity sha512-GrTNi04OoQSXsyrB7FqQPeYREscEXFhIBPkyQ0q7WDG/yYynWljiA0kwITCtMjPfv2EDVks292dvM3EcnERRIA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + +"@parcel/types@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.11.0.tgz#c3e96a305d7d95ac3861611915c55e250f582484" + integrity sha512-lN5XlfV9b1s2rli8q1LqsLtu+D4ZwNI3sKmNcL/3tohSfQcF2EgF+MaiANGo9VzXOzoWFHt4dqWjO4OcdyC5tg== + dependencies: + "@parcel/cache" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/workers" "2.11.0" + utility-types "^3.10.0" + +"@parcel/utils@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.11.0.tgz#d99c8367ba9fc9d99adf8a864ee0491f5ac2df40" + integrity sha512-AcL70cXlIyE7eQdvjQbYxegN5l+skqvlJllxTWg4YkIZe9p8Gmv74jLAeLWh5F+IGl5WRn0TSy9JhNJjIMQGwQ== + dependencies: + "@parcel/codeframe" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/markdown-ansi" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + chalk "^4.1.0" + nullthrows "^1.1.1" + +"@parcel/watcher-android-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz#9c93763794153e4f76920994a423b6ea3257059d" + integrity sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA== + +"@parcel/watcher-darwin-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz#2c79c2abde16aa24cac67e555b60802fd13fe210" + integrity sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA== + +"@parcel/watcher-darwin-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz#23d82f198c5d033f047467c68d7c335f3df49b46" + integrity sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q== + +"@parcel/watcher-freebsd-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz#7310cc86abc27dacd57624bcdba1f0ba092e76df" + integrity sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA== + +"@parcel/watcher-linux-arm-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz#c31b76e695027eeb1078d3d6f1d641d0b900c335" + integrity sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ== + +"@parcel/watcher-linux-arm64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz#56e09b86e9d8a4096f606be118b588da6e965080" + integrity sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg== + +"@parcel/watcher-linux-arm64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz#27ffd5ca5f510ecd638f9ad22e2e813049db54e7" + integrity sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng== + +"@parcel/watcher-linux-x64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz#44cbbb1e5884a1ca900655f47a0775218318f934" + integrity sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ== + +"@parcel/watcher-linux-x64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz#4c33993618c8d5113722852806239cb80360494b" + integrity sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA== + +"@parcel/watcher-win32-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz#2a172fd2fda95fe5389298ca3e70b5a96316162a" + integrity sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg== + +"@parcel/watcher-win32-ia32@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz#279225b2ebe1fadd3c5137c9b2365ad422656904" + integrity sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA== + +"@parcel/watcher-win32-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz#93e0bd0ad1bda2c9a688764b9b30b71dc5b72a71" + integrity sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA== + +"@parcel/watcher@^2.0.7": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.0.tgz#2d3c4ef8832a5cdfdbb76b914f022489933e664f" + integrity sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.0" + "@parcel/watcher-darwin-arm64" "2.4.0" + "@parcel/watcher-darwin-x64" "2.4.0" + "@parcel/watcher-freebsd-x64" "2.4.0" + "@parcel/watcher-linux-arm-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-musl" "2.4.0" + "@parcel/watcher-linux-x64-glibc" "2.4.0" + "@parcel/watcher-linux-x64-musl" "2.4.0" + "@parcel/watcher-win32-arm64" "2.4.0" + "@parcel/watcher-win32-ia32" "2.4.0" + "@parcel/watcher-win32-x64" "2.4.0" + +"@parcel/workers@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.11.0.tgz#a818e51ad7f79b0c5b450502331dda851e8e905f" + integrity sha512-wjybqdSy6Nk0N9iBGsFcp7739W2zvx0WGfVxPVShqhz46pIkPOiFF/iSn+kFu5EmMKTRWeUif42+a6rRZ7pCnQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/profiler" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@swc/core-darwin-arm64@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.1.tgz#aa66ec80d9c43586888a79b2f80264aa2a96fdf3" + integrity sha512-ePyfx0348UbR4DOAW24TedeJbafnzha8liXFGuQ4bdXtEVXhLfPngprrxKrAddCuv42F9aTxydlF6+adD3FBhA== + +"@swc/core-darwin-x64@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.4.1.tgz#de4037efab46f2d17609b2fea0d0e05ac9f076b5" + integrity sha512-eLf4JSe6VkCMdDowjM8XNC5rO+BrgfbluEzAVtKR8L2HacNYukieumN7EzpYCi0uF1BYwu1ku6tLyG2r0VcGxA== + +"@swc/core-linux-arm-gnueabihf@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.1.tgz#20cf68d591161e84c0b6158af9b749b5ead78800" + integrity sha512-K8VtTLWMw+rkN/jDC9o/Q9SMmzdiHwYo2CfgkwVT29NsGccwmNhCQx6XoYiPKyKGIFKt4tdQnJHKUFzxUqQVtQ== + +"@swc/core-linux-arm64-gnu@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.1.tgz#44dc497e127c0f5651ca74f2e4977743bde3f8e7" + integrity sha512-0e8p4g0Bfkt8lkiWgcdiENH3RzkcqKtpRXIVNGOmVc0OBkvc2tpm2WTx/eoCnes2HpTT4CTtR3Zljj4knQ4Fvw== + +"@swc/core-linux-arm64-musl@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.1.tgz#0e21470421531e560ce0b80bde87ba08e19207fd" + integrity sha512-b/vWGQo2n7lZVUnSQ7NBq3Qrj85GrAPPiRbpqaIGwOytiFSk8VULFihbEUwDe0rXgY4LDm8z8wkgADZcLnmdUA== + +"@swc/core-linux-x64-gnu@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.1.tgz#b008be683e24aa4a7b13123b6dd70580e87b4167" + integrity sha512-AFMQlvkKEdNi1Vk2GFTxxJzbICttBsOQaXa98kFTeWTnFFIyiIj2w7Sk8XRTEJ/AjF8ia8JPKb1zddBWr9+bEQ== + +"@swc/core-linux-x64-musl@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.1.tgz#288b5742578beb9a0c94b5e885634e61eb797583" + integrity sha512-QX2MxIECX1gfvUVZY+jk528/oFkS9MAl76e3ZRvG2KC/aKlCQL0KSzcTSm13mOxkDKS30EaGRDRQWNukGpMeRg== + +"@swc/core-win32-arm64-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.1.tgz#e40a4273aab1509d85e2a561a818f6e705718305" + integrity sha512-OklkJYXXI/tntD2zaY8i3iZldpyDw5q+NAP3k9OlQ7wXXf37djRsHLV0NW4+ZNHBjE9xp2RsXJ0jlOJhfgGoFA== + +"@swc/core-win32-ia32-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.1.tgz#726731b618d0f99c5cdc8bab004df3dae14658a9" + integrity sha512-MBuc3/QfKX9FnLOU7iGN+6yHRTQaPQ9WskiC8s8JFiKQ+7I2p25tay2RplR9dIEEGgVAu6L7auv96LbNTh+FaA== + +"@swc/core-win32-x64-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.1.tgz#71382cfd60811b5fecdf1ece458bd21992a37ae5" + integrity sha512-lu4h4wFBb/bOK6N2MuZwg7TrEpwYXgpQf5R7ObNSXL65BwZ9BG8XRzD+dLJmALu8l5N08rP/TrpoKRoGT4WSxw== + +"@swc/core@^1.3.36": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.4.1.tgz#e6bee0fa5d0c93957b274eaa6186bbbad43f2063" + integrity sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ== + dependencies: + "@swc/counter" "^0.1.2" + "@swc/types" "^0.1.5" + optionalDependencies: + "@swc/core-darwin-arm64" "1.4.1" + "@swc/core-darwin-x64" "1.4.1" + "@swc/core-linux-arm-gnueabihf" "1.4.1" + "@swc/core-linux-arm64-gnu" "1.4.1" + "@swc/core-linux-arm64-musl" "1.4.1" + "@swc/core-linux-x64-gnu" "1.4.1" + "@swc/core-linux-x64-musl" "1.4.1" + "@swc/core-win32-arm64-msvc" "1.4.1" + "@swc/core-win32-ia32-msvc" "1.4.1" + "@swc/core-win32-x64-msvc" "1.4.1" + +"@swc/counter@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.6.tgz#d16d8566b7aea2bef90d059757e2d77f48224160" + integrity sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA== + dependencies: + tslib "^2.4.0" + +"@swc/types@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" + integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/chroma-js@^2.0.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.4.0.tgz#476a16ae848c77478079d6749236fdb98837b92c" integrity sha512-JklMxityrwjBTjGY2anH8JaTx3yjRU3/sEHSblLH1ba5lqcSh1LnImXJZO5peJfXyqKYWjHTGy4s5Wz++hARrw== -"@types/estree@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - "@types/hast@^2.0.0": version "2.3.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" @@ -420,6 +1119,48 @@ dependencies: vfile-message "*" +abortcontroller-polyfill@^1.1.9: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +acorn@^8.5.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-hidden@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" @@ -437,16 +1178,95 @@ bail@^1.0.0: resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + brace@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" integrity sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.6.6: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-lite@^1.0.30001587: + version "1.0.30001588" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" + integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== + ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-html4@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" @@ -467,26 +1287,147 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +"chokidar@>=3.0.0 <4.0.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chroma-js@^2.1.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.4.2.tgz#dffc214ed0c11fa8eefca2c36651d8e57cbfb2b0" integrity sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A== +chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + classnames@^2.2.6, classnames@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.0.0, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^7.6.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== + dependencies: + chalk "^4.1.0" + date-fns "^2.29.1" + lodash "^4.17.21" + rxjs "^7.0.0" + shell-quote "^1.7.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^17.3.1" + +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.1: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + css-box-model@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" @@ -494,11 +1435,57 @@ css-box-model@^1.2.0: dependencies: tiny-invariant "^1.0.6" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + csstype@^3.0.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +date-fns@^2.29.1: + version "2.29.3" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-libc@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + detect-node-es@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" @@ -509,41 +1496,87 @@ diff-match-patch@^1.0.4: resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== + +electron-to-chromium@^1.4.668: + version "1.4.673" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz#1f077d9a095761804aec7ec6346c3f4b69b56534" + integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emoticon@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== -esbuild@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" - integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.24.2" - "@esbuild/android-arm" "0.24.2" - "@esbuild/android-arm64" "0.24.2" - "@esbuild/android-x64" "0.24.2" - "@esbuild/darwin-arm64" "0.24.2" - "@esbuild/darwin-x64" "0.24.2" - "@esbuild/freebsd-arm64" "0.24.2" - "@esbuild/freebsd-x64" "0.24.2" - "@esbuild/linux-arm" "0.24.2" - "@esbuild/linux-arm64" "0.24.2" - "@esbuild/linux-ia32" "0.24.2" - "@esbuild/linux-loong64" "0.24.2" - "@esbuild/linux-mips64el" "0.24.2" - "@esbuild/linux-ppc64" "0.24.2" - "@esbuild/linux-riscv64" "0.24.2" - "@esbuild/linux-s390x" "0.24.2" - "@esbuild/linux-x64" "0.24.2" - "@esbuild/netbsd-arm64" "0.24.2" - "@esbuild/netbsd-x64" "0.24.2" - "@esbuild/openbsd-arm64" "0.24.2" - "@esbuild/openbsd-x64" "0.24.2" - "@esbuild/sunos-x64" "0.24.2" - "@esbuild/win32-arm64" "0.24.2" - "@esbuild/win32-ia32" "0.24.2" - "@esbuild/win32-x64" "0.24.2" +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== extend@^3.0.0: version "3.0.2" @@ -557,6 +1590,13 @@ file-selector@^0.4.0: dependencies: tslib "^2.0.3" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + focus-lock@^0.11.6: version "0.11.6" resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.11.6.tgz#e8821e21d218f03e100f7dc27b733f9c4f61e683" @@ -564,16 +1604,67 @@ focus-lock@^0.11.6: dependencies: tslib "^2.0.3" -fsevents@~2.3.2, fsevents@~2.3.3: +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== +get-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.2.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" @@ -681,7 +1772,47 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -inherits@^2.0.0: +htmlnano@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.1.0.tgz#67b31b3cd3fad23f0b610ca628fdb48382209c3c" + integrity sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g== + dependencies: + cosmiconfig "^8.0.0" + posthtml "^0.16.5" + timsort "^0.3.0" + +htmlparser2@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" + +immutable@^4.0.0: + version "4.3.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" + integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + +import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -711,6 +1842,18 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -721,11 +1864,38 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-json@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" + integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" @@ -741,11 +1911,118 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -"js-tokens@^3.0.0 || ^4.0.0": +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.0, json5@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +lightningcss-darwin-arm64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.23.0.tgz#11780f37158a458cead5e89202f74cd99b926e36" + integrity sha512-kl4Pk3Q2lnE6AJ7Qaij47KNEfY2/UXRZBT/zqGA24B8qwkgllr/j7rclKOf1axcslNXvvUdztjo4Xqh39Yq1aA== + +lightningcss-darwin-x64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.23.0.tgz#8394edaa04f0984b971eab42b6f68edb1258b3ed" + integrity sha512-KeRFCNoYfDdcolcFXvokVw+PXCapd2yHS1Diko1z1BhRz/nQuD5XyZmxjWdhmhN/zj5sH8YvWsp0/lPLVzqKpg== + +lightningcss-freebsd-x64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.23.0.tgz#d3f6faddc424f17ed046e8be9ca97868a5f804ed" + integrity sha512-xhnhf0bWPuZxcqknvMDRFFo2TInrmQRWZGB0f6YoAsZX8Y+epfjHeeOIGCfAmgF0DgZxHwYc8mIR5tQU9/+ROA== + +lightningcss-linux-arm-gnueabihf@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.23.0.tgz#040e9718c9a9dc088322da33983a894564ffcb10" + integrity sha512-fBamf/bULvmWft9uuX+bZske236pUZEoUlaHNBjnueaCTJ/xd8eXgb0cEc7S5o0Nn6kxlauMBnqJpF70Bgq3zg== + +lightningcss-linux-arm64-gnu@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.23.0.tgz#05cfcfa2cf47a042ca11cfce520ae9f91e4efcdb" + integrity sha512-RS7sY77yVLOmZD6xW2uEHByYHhQi5JYWmgVumYY85BfNoVI3DupXSlzbw+b45A9NnVKq45+oXkiN6ouMMtTwfg== + +lightningcss-linux-arm64-musl@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.23.0.tgz#3212a10dff37c70808113fbcf7cbd1b63c6cbc6f" + integrity sha512-cU00LGb6GUXCwof6ACgSMKo3q7XYbsyTj0WsKHLi1nw7pV0NCq8nFTn6ZRBYLoKiV8t+jWl0Hv8KkgymmK5L5g== + +lightningcss-linux-x64-gnu@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.23.0.tgz#3b27da32889285b1c5de3f26094ee234054634fc" + integrity sha512-q4jdx5+5NfB0/qMbXbOmuC6oo7caPnFghJbIAV90cXZqgV8Am3miZhC4p+sQVdacqxfd+3nrle4C8icR3p1AYw== + +lightningcss-linux-x64-musl@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.23.0.tgz#ad65b5a944f10d966cc10070bf20f81ddadd4240" + integrity sha512-G9Ri3qpmF4qef2CV/80dADHKXRAQeQXpQTLx7AiQrBYQHqBjB75oxqj06FCIe5g4hNCqLPnM9fsO4CyiT1sFSQ== + +lightningcss-win32-x64-msvc@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.23.0.tgz#62f3f619a7bb44f8713973103fbe1bcbd9d455f9" + integrity sha512-1rcBDJLU+obPPJM6qR5fgBUiCdZwZLafZM5f9kwjFLkb/UBNIzmae39uCSmh71nzPCTXZqHbvwu23OWnWEz+eg== + +lightningcss@^1.22.1: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.23.0.tgz#58c94a533d02d8416d4f2ec9ab87641f61943c78" + integrity sha512-SEArWKMHhqn/0QzOtclIwH5pXIYQOUEkF8DgICd/105O+GCgd7jxjNod/QPnBCSWvpRHQBGVz5fQ9uScby03zA== + dependencies: + detect-libc "^1.0.3" + optionalDependencies: + lightningcss-darwin-arm64 "1.23.0" + lightningcss-darwin-x64 "1.23.0" + lightningcss-freebsd-x64 "1.23.0" + lightningcss-linux-arm-gnueabihf "1.23.0" + lightningcss-linux-arm64-gnu "1.23.0" + lightningcss-linux-arm64-musl "1.23.0" + lightningcss-linux-x64-gnu "1.23.0" + lightningcss-linux-x64-musl "1.23.0" + lightningcss-win32-x64-msvc "1.23.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lmdb@2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837" + integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ== + dependencies: + msgpackr "^1.9.5" + node-addon-api "^6.1.0" + node-gyp-build-optional-packages "5.1.1" + ordered-binary "^1.4.1" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "2.8.5" + "@lmdb/lmdb-darwin-x64" "2.8.5" + "@lmdb/lmdb-linux-arm" "2.8.5" + "@lmdb/lmdb-linux-arm64" "2.8.5" + "@lmdb/lmdb-linux-x64" "2.8.5" + "@lmdb/lmdb-win32-x64" "2.8.5" + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -801,6 +2078,11 @@ mdast-util-to-hast@^10.0.0, mdast-util-to-hast@^10.2.0: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -811,10 +2093,51 @@ mdurl@^1.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -nanoid@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== +micromatch@^4.0.5, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +msgpackr-extract@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" + integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== + dependencies: + node-gyp-build-optional-packages "5.0.7" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" + +msgpackr@^1.9.5, msgpackr@^1.9.9: + version "1.10.1" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" + integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== + optionalDependencies: + msgpackr-extract "^3.0.2" + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== node-emoji@^1.10.0: version "1.11.0" @@ -823,6 +2146,40 @@ node-emoji@^1.10.0: dependencies: lodash "^4.17.21" +node-gyp-build-optional-packages@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" + integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== + +node-gyp-build-optional-packages@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== + dependencies: + detect-libc "^2.0.1" + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + numeral@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" @@ -833,6 +2190,45 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +ordered-binary@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.1.tgz#94ccbf14181711081ee23931db0dc3f58aaa0df6" + integrity sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A== + +parcel@^2.8.3: + version "2.11.0" + resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.11.0.tgz#9448269b677d7ba251c92a2a5ce4539fcf0dbf5c" + integrity sha512-H/RI1/DmuOkL8RuG/EpNPvtzrbF+7jA/R56ydEEm+lqFbYktKB4COR7JXdHkZXRgbSJyimrFB8d0r9+SaRnj0Q== + dependencies: + "@parcel/config-default" "2.11.0" + "@parcel/core" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/reporter-cli" "2.11.0" + "@parcel/reporter-dev-server" "2.11.0" + "@parcel/reporter-tracer" "2.11.0" + "@parcel/utils" "2.11.0" + chalk "^4.1.0" + commander "^7.0.0" + get-port "^4.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -845,24 +2241,79 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -postcss@^8.4.49: - version "8.5.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +posthtml-parser@^0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" + integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" + htmlparser2 "^7.1.1" + +posthtml-parser@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" + integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== + dependencies: + htmlparser2 "^7.1.1" + +posthtml-render@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" + integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== + dependencies: + is-json "^2.0.1" + +posthtml@^0.16.4, posthtml@^0.16.5: + version "0.16.6" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" + integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== + dependencies: + posthtml-parser "^0.11.0" + posthtml-render "^3.0.0" prismjs@~1.27.0: version "1.27.0" @@ -944,6 +2395,11 @@ react-dropzone@^11.2.0: file-selector "^0.4.0" prop-types "^15.8.1" +react-error-overlay@6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + react-focus-lock@^2.9.2: version "2.9.4" resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.4.tgz#4753f6dcd167c39050c9d84f9c63c71b3ff8462e" @@ -1003,6 +2459,11 @@ react-redux@^7.2.0: prop-types "^15.7.2" react-is "^17.0.2" +react-refresh@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" + integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== + react-remove-scroll-bar@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" @@ -1052,6 +2513,13 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + redisinsight-plugin-sdk@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/redisinsight-plugin-sdk/-/redisinsight-plugin-sdk-1.1.0.tgz#5ac39dc5398b1f73f2357e67ce51e1875fbece4f" @@ -1073,7 +2541,7 @@ refractor@^3.4.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerator-runtime@^0.13.11: +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: 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== @@ -1143,38 +2611,48 @@ repeat-string@^1.5.4: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== +require-directory@^2.1.1: + version "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== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -rollup@^4.23.0: - version "4.30.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" - integrity sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w== +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.30.1" - "@rollup/rollup-android-arm64" "4.30.1" - "@rollup/rollup-darwin-arm64" "4.30.1" - "@rollup/rollup-darwin-x64" "4.30.1" - "@rollup/rollup-freebsd-arm64" "4.30.1" - "@rollup/rollup-freebsd-x64" "4.30.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" - "@rollup/rollup-linux-arm-musleabihf" "4.30.1" - "@rollup/rollup-linux-arm64-gnu" "4.30.1" - "@rollup/rollup-linux-arm64-musl" "4.30.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" - "@rollup/rollup-linux-riscv64-gnu" "4.30.1" - "@rollup/rollup-linux-s390x-gnu" "4.30.1" - "@rollup/rollup-linux-x64-gnu" "4.30.1" - "@rollup/rollup-linux-x64-musl" "4.30.1" - "@rollup/rollup-win32-arm64-msvc" "4.30.1" - "@rollup/rollup-win32-ia32-msvc" "4.30.1" - "@rollup/rollup-win32-x64-msvc" "4.30.1" - fsevents "~2.3.2" + glob "^7.1.3" + +rxjs@^7.0.0: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sass@^1.38.0: + version "1.71.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.71.0.tgz#b3085759b9b2ab503a977aecb7e91153bf941117" + integrity sha512-HKKIKf49Vkxlrav3F/w6qRuPcmImGVbIXJ2I3Kg0VMA+3Bav+8yE9G5XmP5lMj6nl4OlqbPftGAscNaNu28b8w== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" scheduler@^0.20.2: version "0.20.2" @@ -1191,21 +2669,75 @@ semver@^7.5.2: dependencies: lru-cache "^6.0.0" -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +"source-map-js@>=0.6.2 <2.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== + +srcset@4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" + integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + stringify-entities@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" @@ -1215,6 +2747,13 @@ stringify-entities@^3.0.1: character-entities-legacy "^1.0.0" xtend "^4.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -1222,21 +2761,87 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +svgo@^2.4.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + tabbable@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-3.1.2.tgz#f2d16cccd01f400e38635c7181adfe0ad965a4a2" integrity sha512-wjB6puVXTYO0BSFtCmWQubA/KIn7Xvajw0x0l6eJUudMG/EAiJvIUnyNX6xO4NpGrJ16lbD0eUseB9WxW0vlpQ== +term-size@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +terser@^5.16.6: + version "5.17.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.1.tgz#948f10830454761e2eeedc6debe45c532c83fd69" + integrity sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + text-diff@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/text-diff/-/text-diff-1.0.1.tgz#6c105905435e337857375c9d2f6ca63e453ff565" integrity sha512-jAnlP3ggZk7FeLX1awaMR8Y2sMyil9P9FXvNjaIJIQBAom1zvpKGGH31htOVrUFp0vlyygmJJpNrbJ4rfjsxrA== +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== + tiny-invariant@^1.0.6: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" @@ -1262,6 +2867,16 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -1359,6 +2974,14 @@ unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + url-parse@^1.5.0: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -1387,6 +3010,11 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" +utility-types@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== + uuid@^8.3.0: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -1423,30 +3051,70 @@ vfile@^4.0.0, vfile@^4.2.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -"vite@file:../node_modules/vite": - version "6.0.7" - dependencies: - esbuild "^0.24.2" - postcss "^8.4.49" - rollup "^4.23.0" - optionalDependencies: - fsevents "~2.3.3" +weak-lru-cache@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" diff --git a/redisinsight/ui/src/packages/redisgraph/.parcelrc b/redisinsight/ui/src/packages/redisgraph/.parcelrc new file mode 100644 index 0000000000..c442c3093a --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/.parcelrc @@ -0,0 +1,8 @@ +{ + "extends": "@parcel/config-default", + "transformers": { + "global_styles.css": [], + "dark_theme.css": [], + "light_theme.css": [] + } +} diff --git a/redisinsight/ui/src/packages/redisgraph/index.html b/redisinsight/ui/src/packages/redisgraph/index.html deleted file mode 100644 index fb39b1faf2..0000000000 --- a/redisinsight/ui/src/packages/redisgraph/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - RedisGraph plugin - - - - <% if(isDev){ %> - - - - <% } %> - - -
- - diff --git a/redisinsight/ui/src/packages/redisgraph/package.json b/redisinsight/ui/src/packages/redisgraph/package.json index 01dffc56f2..0bc431307e 100644 --- a/redisinsight/ui/src/packages/redisgraph/package.json +++ b/redisinsight/ui/src/packages/redisgraph/package.json @@ -12,9 +12,20 @@ "styles": "./dist/styles.css", "main": "./dist/index.js", "name": "graph-plugin", - "version": "0.0.2", + "version": "0.0.1", "scripts": { - "dev": "vite -c ../vite.config.mjs" + "start": "cross-env NODE_ENV=development parcel serve src/index.html", + "build": "rimraf dist && cross-env NODE_ENV=production concurrently \"yarn build:js && yarn minify:js\" \"yarn build:css\"", + "build-lite": "rm dist/*.js && cross-env NODE_ENV=production concurrently \"yarn build:js && yarn minify:js\"", + "build:js": "parcel build src/main.tsx --no-source-maps --no-cache --dist-dir dist", + "build:css": "parcel build src/styles/styles.less --no-source-maps --no-cache --dist-dir dist", + "minify:js": "terser -- dist/main.js > dist/index.js && rimraf dist/main.js" + }, + "targets": { + "main": false, + "module": { + "includeNodeModules": true + } }, "visualizations": [ { @@ -30,7 +41,16 @@ } ], "devDependencies": { - "vite": "file:../node_modules/vite" + "@parcel/compressor-brotli": "2.3.2", + "@parcel/compressor-gzip": "2.3.2", + "@parcel/transformer-less": "2.3.2", + "@types/d3": "^7.1.0", + "@types/react-json-tree": "^0.13.0", + "concurrently": "^6.3.0", + "cross-env": "^7.0.3", + "parcel": "2.3.2", + "rimraf": "^3.0.2", + "terser": "^5.9.0" }, "dependencies": { "@elastic/eui": "34.6.0", @@ -44,6 +64,8 @@ "redisinsight-plugin-sdk": "^1.1.0" }, "resolutions": { + "@parcel/**/micromatch": "^4.0.8", + "@parcel/**/braces": "^3.0.3", "trim": "0.0.3", "**/semver": "^7.5.2" } diff --git a/redisinsight/ui/src/packages/redisgraph/src/global.d.ts b/redisinsight/ui/src/packages/redisgraph/src/global.d.ts deleted file mode 100644 index f7b40bd272..0000000000 --- a/redisinsight/ui/src/packages/redisgraph/src/global.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '@elastic/eui/es/components/icon/*' diff --git a/redisinsight/ui/src/packages/redisgraph/src/graphd3.ts b/redisinsight/ui/src/packages/redisgraph/src/graphd3.ts index d11e4bec1b..64c6896707 100644 --- a/redisinsight/ui/src/packages/redisgraph/src/graphd3.ts +++ b/redisinsight/ui/src/packages/redisgraph/src/graphd3.ts @@ -1281,7 +1281,7 @@ function GraphD3(_selector: HTMLDivElement, _options: any): IGraphD3 { } function tick() { - + simulation.tick(1) tickNodes() tickRelationships() diff --git a/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_down.js b/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_down.js new file mode 100644 index 0000000000..7aa44ea808 --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_down.js @@ -0,0 +1,35 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconArrowDown = function EuiIconArrowDown(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + +// For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + fillRule: "non-zero", + d: "M13.069 5.157L8.384 9.768a.546.546 0 01-.768 0L2.93 5.158a.552.552 0 00-.771 0 .53.53 0 000 .759l4.684 4.61c.641.631 1.672.63 2.312 0l4.684-4.61a.53.53 0 000-.76.552.552 0 00-.771 0z" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconArrowDown; diff --git a/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_left.js b/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_left.js new file mode 100644 index 0000000000..ca9522a52a --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_left.js @@ -0,0 +1,35 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconArrowLeft = function EuiIconArrowLeft(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + fillRule: "nonzero", + d: "M10.843 13.069L6.232 8.384a.546.546 0 010-.768l4.61-4.685a.552.552 0 000-.771.53.53 0 00-.759 0l-4.61 4.684a1.65 1.65 0 000 2.312l4.61 4.684a.53.53 0 00.76 0 .552.552 0 000-.771z" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconArrowLeft; diff --git a/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_right.js b/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_right.js new file mode 100644 index 0000000000..ece2917bb1 --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/icons/arrow_right.js @@ -0,0 +1,40 @@ +import * as React from 'react' + +function _extends() { _extends = Object.assign || function (target) { for (let i = 1; i < arguments.length; i++) { const source = arguments[i]; for (const key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key] } } } return target }; return _extends.apply(this, arguments) } + +function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; const target = _objectWithoutPropertiesLoose(source, excluded); let key; let + i; if (Object.getOwnPropertySymbols) { const sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key] } } return target +} + +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; const target = {}; const sourceKeys = Object.keys(source); let key; let + i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key] } return target +} + +const EuiIconArrowRight = function EuiIconArrowRight(_ref) { + const { title } = _ref + const { titleId } = _ref + const props = _objectWithoutProperties(_ref, ['title', 'titleId']) + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /* #__PURE__ */React.createElement('svg', { width: 16, + height: 16, + viewBox: '0 0 16 16', + xmlns: 'http://www.w3.org/2000/svg', + 'aria-labelledby': titleId, + ...props }, title ? /* #__PURE__ */React.createElement('title', { + id: titleId + }, title) : null, /* #__PURE__ */React.createElement('path', { + fillRule: 'nonzero', + d: 'M5.157 13.069l4.611-4.685a.546.546 0 000-.768L5.158 2.93a.552.552 0 010-.771.53.53 0 01.759 0l4.61 4.684c.631.641.63 1.672 0 2.312l-4.61 4.684a.53.53 0 01-.76 0 .552.552 0 010-.771z' + })) + } catch (e) { + return + } +} + +export var icon = EuiIconArrowRight diff --git a/redisinsight/ui/src/packages/redisgraph/src/icons/check.js b/redisinsight/ui/src/packages/redisgraph/src/icons/check.js new file mode 100644 index 0000000000..45c5436fb0 --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/icons/check.js @@ -0,0 +1,35 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconCheck = function EuiIconCheck(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + fillRule: "evenodd", + d: "M6.5 12a.502.502 0 01-.354-.146l-4-4a.502.502 0 01.708-.708L6.5 10.793l6.646-6.647a.502.502 0 01.708.708l-7 7A.502.502 0 016.5 12" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconCheck; diff --git a/redisinsight/ui/src/packages/redisgraph/src/icons/copy.js b/redisinsight/ui/src/packages/redisgraph/src/icons/copy.js new file mode 100644 index 0000000000..35a08cc6a0 --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/icons/copy.js @@ -0,0 +1,36 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconCopy = function EuiIconCopy(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + d: "M11.4 0c.235 0 .46.099.622.273l2.743 3c.151.162.235.378.235.602v9.25a.867.867 0 01-.857.875H3.857A.867.867 0 013 13.125V.875C3 .392 3.384 0 3.857 0H11.4zM14 4h-2.6a.4.4 0 01-.4-.4V1H4v12h10V4z" + }), /*#__PURE__*/React.createElement("path", { + d: "M3 1H2a1 1 0 00-1 1v13a1 1 0 001 1h10a1 1 0 001-1v-1h-1v1H2V2h1V1z" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconCopy; diff --git a/redisinsight/ui/src/packages/redisgraph/src/icons/cross.js b/redisinsight/ui/src/packages/redisgraph/src/icons/cross.js new file mode 100644 index 0000000000..c83a8931ec --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/icons/cross.js @@ -0,0 +1,34 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconCross = function EuiIconCross(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + // For e2e tests. Hammerhead cannot create svg throw createElementNS + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props), title ? /*#__PURE__*/React.createElement("title", { + id: titleId + }, title) : null, /*#__PURE__*/React.createElement("path", { + d: "M7.293 8L3.146 3.854a.5.5 0 11.708-.708L8 7.293l4.146-4.147a.5.5 0 01.708.708L8.707 8l4.147 4.146a.5.5 0 01-.708.708L8 8.707l-4.146 4.147a.5.5 0 01-.708-.708L7.293 8z" + })); + } catch (e) { + return + } +}; + +export var icon = EuiIconCross; diff --git a/redisinsight/ui/src/packages/redisgraph/src/icons/empty.js b/redisinsight/ui/src/packages/redisgraph/src/icons/empty.js new file mode 100644 index 0000000000..0dbaf4c5c4 --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/icons/empty.js @@ -0,0 +1,29 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +import * as React from 'react'; + +var EuiIconEmpty = function EuiIconEmpty(_ref) { + var title = _ref.title, + titleId = _ref.titleId, + props = _objectWithoutProperties(_ref, ["title", "titleId"]); + + try { + document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + return /*#__PURE__*/React.createElement("svg", _extends({ + width: 16, + height: 16, + viewBox: "0 0 16 16", + xmlns: "http://www.w3.org/2000/svg", + "aria-labelledby": titleId + }, props)); + } catch (e) { + return '' + } +}; + +export var icon = EuiIconEmpty; diff --git a/redisinsight/ui/src/packages/redisgraph/src/index.html b/redisinsight/ui/src/packages/redisgraph/src/index.html new file mode 100644 index 0000000000..2cd0103d73 --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/index.html @@ -0,0 +1,18 @@ + + + + + + + Client list plugin + + + + + + + + +
+ + diff --git a/redisinsight/ui/src/packages/redisgraph/src/main.tsx b/redisinsight/ui/src/packages/redisgraph/src/main.tsx index 9001b4d8b1..30d0820e99 100644 --- a/redisinsight/ui/src/packages/redisgraph/src/main.tsx +++ b/redisinsight/ui/src/packages/redisgraph/src/main.tsx @@ -2,7 +2,6 @@ import React from 'react' import { render } from 'react-dom' import { GraphApp, TableApp } from './App' -import './styles/styles.scss' interface Props { command?: string diff --git a/redisinsight/ui/src/packages/redisgraph/src/mockData/resultGraph.json b/redisinsight/ui/src/packages/redisgraph/src/mockData/resultGraph.json deleted file mode 100644 index c5a710cfec..0000000000 --- a/redisinsight/ui/src/packages/redisgraph/src/mockData/resultGraph.json +++ /dev/null @@ -1,66 +0,0 @@ -[ - { - "status": "success", - "response": [ - { - "status": "success", - "response": [ - [ - "r", - "t" - ], - [ - [ - [ - [ - "id", - 0 - ], - [ - "labels", - [ - "Rider" - ] - ], - [ - "properties", - [ - [ - "name", - "Valentino Rossi" - ] - ] - ] - ], - [ - [ - "id", - 1 - ], - [ - "labels", - [ - "Team" - ] - ], - [ - "properties", - [ - [ - "name", - "Yamaha" - ] - ] - ] - ] - ] - ], - [ - "Cached execution: 0", - "Query internal execution time: 26.122792 milliseconds" - ] - ] - } - ] - } -] diff --git a/redisinsight/ui/src/packages/redisgraph/src/styles/_dark_theme.less b/redisinsight/ui/src/packages/redisgraph/src/styles/_dark_theme.less new file mode 100644 index 0000000000..54175c82c7 --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/styles/_dark_theme.less @@ -0,0 +1,3 @@ +.theme_DARK { + @import (less)'../../node_modules/@elastic/eui/dist/eui_theme_dark.min.css'; +} diff --git a/redisinsight/ui/src/packages/redisgraph/src/styles/_light_theme.less b/redisinsight/ui/src/packages/redisgraph/src/styles/_light_theme.less new file mode 100644 index 0000000000..1177707d0f --- /dev/null +++ b/redisinsight/ui/src/packages/redisgraph/src/styles/_light_theme.less @@ -0,0 +1,3 @@ +.theme_LIGHT { + @import (less)'../../node_modules/@elastic/eui/dist/eui_theme_light.min.css'; +} diff --git a/redisinsight/ui/src/packages/redisgraph/src/styles/styles.scss b/redisinsight/ui/src/packages/redisgraph/src/styles/styles.less similarity index 98% rename from redisinsight/ui/src/packages/redisgraph/src/styles/styles.scss rename to redisinsight/ui/src/packages/redisgraph/src/styles/styles.less index f33d285a57..cfafed6922 100644 --- a/redisinsight/ui/src/packages/redisgraph/src/styles/styles.scss +++ b/redisinsight/ui/src/packages/redisgraph/src/styles/styles.less @@ -1,4 +1,6 @@ @charset "UTF-8"; +@import (less) "_dark_theme.less"; +@import (less) "_light_theme.less"; * { margin: 0px; diff --git a/redisinsight/ui/src/packages/redisgraph/yarn.lock b/redisinsight/ui/src/packages/redisgraph/yarn.lock index c80779d079..79a0dece38 100644 --- a/redisinsight/ui/src/packages/redisgraph/yarn.lock +++ b/redisinsight/ui/src/packages/redisgraph/yarn.lock @@ -35,7 +35,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.6", "@babel/runtime@^7.9.2": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== @@ -183,130 +183,88 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== -"@esbuild/aix-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" - integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== - -"@esbuild/android-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" - integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== - -"@esbuild/android-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" - integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== - -"@esbuild/android-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" - integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== - -"@esbuild/darwin-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" - integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== - -"@esbuild/darwin-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" - integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== - -"@esbuild/freebsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" - integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== - -"@esbuild/freebsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" - integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== - -"@esbuild/linux-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" - integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== - -"@esbuild/linux-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" - integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== - -"@esbuild/linux-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" - integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== - -"@esbuild/linux-loong64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" - integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== - -"@esbuild/linux-mips64el@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" - integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== - -"@esbuild/linux-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" - integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== - -"@esbuild/linux-riscv64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" - integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== - -"@esbuild/linux-s390x@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" - integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== - -"@esbuild/linux-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" - integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== - -"@esbuild/netbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" - integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== - -"@esbuild/netbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" - integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== - -"@esbuild/openbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" - integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== - -"@esbuild/openbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" - integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== - -"@esbuild/sunos-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" - integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== - -"@esbuild/win32-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" - integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== - -"@esbuild/win32-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" - integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== - -"@esbuild/win32-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" - integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" + integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.9": + 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" + +"@lmdb/lmdb-darwin-arm64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.9.2.tgz#da42cda48018eabfd678b9698e68a0102221b4ba" + integrity sha512-+GX51Fi8nZOrEXCFiQHnrCpKAzkfDA2sY5+M6Ry4wZEu711o2qlvg+7xXP+j7OT7+JsfB9ayGCdhra2AAaX02g== + +"@lmdb/lmdb-darwin-x64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.9.2.tgz#fb24813693175a858727d61b3dc33c277a739987" + integrity sha512-ajkq2oZTd/RXXpgaZqVm6LHoJYf4A42q+S+U4gYKRYpeR4ERGvG+VGCK9bi9MXInQfeq0KM1yv6rsYpvCOoNhQ== + +"@lmdb/lmdb-linux-arm64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.9.2.tgz#1fc10dfd165b7199b47c41ce9de99b22f46a8da4" + integrity sha512-WqQqWwFyL8JPVpKJyKnyyg7tnsVlD08PHEyxSMxDQC2EkPpvZuUz2oMqasDoy5tmYB0jANOI13/Qz3Mbh9endQ== + +"@lmdb/lmdb-linux-arm@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.9.2.tgz#2d4203c85e895cb75ffd6488791cc18de871a6b2" + integrity sha512-AAdmxDIh1tMYzXOUuDP+TNhvl9pLgvS63M6xhwgVArr79As4msraUSjIJ8J0jlhFKsN7nVoXzPB/jvpp8aK49w== + +"@lmdb/lmdb-linux-x64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.9.2.tgz#dc0f71c092c005b2ad9ddd3502151ecce7692702" + integrity sha512-rB4tE80EOxXwTJr9rsATWZghOVP8+mV085P5u/dBdttJSq3TLxY0CMZ8NKB/WJpryNnsfCI4OvjOAibF/fg+GQ== + +"@lmdb/lmdb-win32-x64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.9.2.tgz#84f561d05329c671f6e4119b483ce54410772bb6" + integrity sha512-VRrM/Zq/k8YEZlGuDvFi3NU753cm+vOa1kUcq4iNyeAEVXzjrSg5K3sHI0d6Od5gLsKctjlQeaFn6+21inU4bw== "@mapbox/hast-util-table-cell-style@^0.2.0": version "0.2.0" @@ -315,100 +273,695 @@ dependencies: unist-util-visit "^1.4.1" -"@rollup/rollup-android-arm-eabi@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" - integrity sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q== - -"@rollup/rollup-android-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz#9d81ea54fc5650eb4ebbc0a7d84cee331bfa30ad" - integrity sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w== - -"@rollup/rollup-darwin-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz#29448cb1370cf678b50743d2e392be18470abc23" - integrity sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q== - -"@rollup/rollup-darwin-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz#0ca99741c3ed096700557a43bb03359450c7857d" - integrity sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA== - -"@rollup/rollup-freebsd-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz#233f8e4c2f54ad9b719cd9645887dcbd12b38003" - integrity sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ== - -"@rollup/rollup-freebsd-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz#dfba762a023063dc901610722995286df4a48360" - integrity sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw== - -"@rollup/rollup-linux-arm-gnueabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz#b9da54171726266c5ef4237f462a85b3c3cf6ac9" - integrity sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg== - -"@rollup/rollup-linux-arm-musleabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz#b9db69b3f85f5529eb992936d8f411ee6d04297b" - integrity sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug== - -"@rollup/rollup-linux-arm64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz#2550cf9bb4d47d917fd1ab4af756d7bbc3ee1528" - integrity sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw== - -"@rollup/rollup-linux-arm64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz#9d06b26d286c7dded6336961a2f83e48330e0c80" - integrity sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA== - -"@rollup/rollup-linux-loongarch64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz#e957bb8fee0c8021329a34ca8dfa825826ee0e2e" - integrity sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz#e8585075ddfb389222c5aada39ea62d6d2511ccc" - integrity sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw== - -"@rollup/rollup-linux-riscv64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz#7d0d40cee7946ccaa5a4e19a35c6925444696a9e" - integrity sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw== - -"@rollup/rollup-linux-s390x-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz#c2dcd8a4b08b2f2778eceb7a5a5dfde6240ebdea" - integrity sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA== - -"@rollup/rollup-linux-x64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz#183637d91456877cb83d0a0315eb4788573aa588" - integrity sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg== - -"@rollup/rollup-linux-x64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz#036a4c860662519f1f9453807547fd2a11d5bb01" - integrity sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow== - -"@rollup/rollup-win32-arm64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz#51cad812456e616bfe4db5238fb9c7497e042a52" - integrity sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw== - -"@rollup/rollup-win32-ia32-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz#661c8b3e4cd60f51deaa39d153aac4566e748e5e" - integrity sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw== - -"@rollup/rollup-win32-x64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" - integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" + integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== + +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" + integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== + +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" + integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== + +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" + integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== + +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" + integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== + +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" + integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== + +"@parcel/bundler-default@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.3.2.tgz#329f171e210dfb22beaa52ae706ccde1dae384c1" + integrity sha512-JUrto4mjSD0ic9dEqRp0loL5o3HVYHja1ZIYSq+rBl2UWRV6/9cGTb07lXOCqqm0BWE+hQ4krUxB76qWaF0Lqw== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/hash" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + +"@parcel/cache@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.3.2.tgz#ba8c2af02fd45b90c7bc6f829bfc566d1ded0a13" + integrity sha512-Xxq+ekgcFEme6Fn1v7rEOBkyMOUOUu7eNqQw0l6HQS+INZ2Q7YzzfdW7pI8rEOAAICVg5BWKpmBQZpgJlT+HxQ== + dependencies: + "@parcel/fs" "2.3.2" + "@parcel/logger" "2.3.2" + "@parcel/utils" "2.3.2" + lmdb "^2.0.2" + +"@parcel/codeframe@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.3.2.tgz#73fb5a89910b977342808ca8f6ece61fa01b7690" + integrity sha512-ireQALcxxrTdIEpzTOoMo/GpfbFm1qlyezeGl3Hce3PMvHLg3a5S6u/Vcy7SAjdld5GfhHEqVY+blME6Z4CyXQ== + dependencies: + chalk "^4.1.0" + +"@parcel/compressor-brotli@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/compressor-brotli/-/compressor-brotli-2.3.2.tgz#91c7f9e79db47779c5080728b35bd9e5d9e6cb72" + integrity sha512-DwzmdS9AwUisKRYood38KkYz6gP9bdUZTEu35RJbmOaQhaBTri28JV+MSTMM0bEs5nIn2bRpT5wlhabZz9p9gw== + dependencies: + "@parcel/plugin" "2.3.2" + +"@parcel/compressor-gzip@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/compressor-gzip/-/compressor-gzip-2.3.2.tgz#85c8e2364ff280208a30c67a73c9966b4a56160d" + integrity sha512-XMH3PJRI+urjpHZfSFW/qVNgRhDEpApvLEdobL8KbAhI5qtsD66PlaNPbaixr00d/qW3r/CHjgKPz69idMikNA== + dependencies: + "@parcel/plugin" "2.3.2" + +"@parcel/compressor-raw@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.3.2.tgz#1a808ae9e61ed86f655935e1d2a984383b3c00a7" + integrity sha512-8dIoFwinYK6bOTpnZOAwwIv0v73y0ezsctPmfMnIqVQPn7wJwfhw/gbKVcmK5AkgQMkyid98hlLZoaZtGF1Mdg== + dependencies: + "@parcel/plugin" "2.3.2" + +"@parcel/config-default@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.3.2.tgz#3f21a37fa07b22de9cd6b1aea19bc310a02d4abb" + integrity sha512-E7/iA7fGCYvXU3u6zF9nxjeDVsgjCN6MVvDjymjaxYMoDWTIsPV245SBEXqzgtmzbMAV+VAl4rVWLMB4pzMt9g== + dependencies: + "@parcel/bundler-default" "2.3.2" + "@parcel/compressor-raw" "2.3.2" + "@parcel/namer-default" "2.3.2" + "@parcel/optimizer-cssnano" "2.3.2" + "@parcel/optimizer-htmlnano" "2.3.2" + "@parcel/optimizer-image" "2.3.2" + "@parcel/optimizer-svgo" "2.3.2" + "@parcel/optimizer-terser" "2.3.2" + "@parcel/packager-css" "2.3.2" + "@parcel/packager-html" "2.3.2" + "@parcel/packager-js" "2.3.2" + "@parcel/packager-raw" "2.3.2" + "@parcel/packager-svg" "2.3.2" + "@parcel/reporter-dev-server" "2.3.2" + "@parcel/resolver-default" "2.3.2" + "@parcel/runtime-browser-hmr" "2.3.2" + "@parcel/runtime-js" "2.3.2" + "@parcel/runtime-react-refresh" "2.3.2" + "@parcel/runtime-service-worker" "2.3.2" + "@parcel/transformer-babel" "2.3.2" + "@parcel/transformer-css" "2.3.2" + "@parcel/transformer-html" "2.3.2" + "@parcel/transformer-image" "2.3.2" + "@parcel/transformer-js" "2.3.2" + "@parcel/transformer-json" "2.3.2" + "@parcel/transformer-postcss" "2.3.2" + "@parcel/transformer-posthtml" "2.3.2" + "@parcel/transformer-raw" "2.3.2" + "@parcel/transformer-react-refresh-wrap" "2.3.2" + "@parcel/transformer-svg" "2.3.2" + +"@parcel/core@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.3.2.tgz#1b9a79c1ff96dba5e0f53d4277bed4e7ab4590d0" + integrity sha512-gdJzpsgeUhv9H8T0UKVmyuptiXdduEfKIUx0ci+/PGhq8cCoiFnlnuhW6H7oLr79OUc+YJStabDJuG4U2A6ysw== + dependencies: + "@parcel/cache" "2.3.2" + "@parcel/diagnostic" "2.3.2" + "@parcel/events" "2.3.2" + "@parcel/fs" "2.3.2" + "@parcel/graph" "2.3.2" + "@parcel/hash" "2.3.2" + "@parcel/logger" "2.3.2" + "@parcel/package-manager" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + "@parcel/types" "2.3.2" + "@parcel/utils" "2.3.2" + "@parcel/workers" "2.3.2" + abortcontroller-polyfill "^1.1.9" + base-x "^3.0.8" + browserslist "^4.6.6" + clone "^2.1.1" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" + json-source-map "^0.6.1" + json5 "^2.2.0" + msgpackr "^1.5.1" + nullthrows "^1.1.1" + semver "^5.7.1" + +"@parcel/diagnostic@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.3.2.tgz#1d3f0b55bfd9839c6f41d704ebbc89a96cca88dc" + integrity sha512-/xW93Az4AOiifuYW/c4CDbUcu3lx5FcUDAj9AGiR9NSTsF/ROC/RqnxvQ3AGtqa14R7vido4MXEpY3JEp6FsqA== + dependencies: + json-source-map "^0.6.1" + nullthrows "^1.1.1" + +"@parcel/events@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.3.2.tgz#b6bcfbbc96d883716ee9d0e6ab232acdee862790" + integrity sha512-WiYIwXMo4Vd+pi58vRoHkul8TPE5VEfMY+3FYwVCKPl/LYqSD+vz6wMx9uG18mEbB1d/ofefv5ZFQNtPGKO4tQ== + +"@parcel/fs-search@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.3.2.tgz#18611877ac1b370932c71987c2ec0e93a4a7e53d" + integrity sha512-u3DTEFnPtKuZvEtgGzfVjQUytegSSn3POi7WfwMwPIaeDPfYcyyhfl+c96z7VL9Gk/pqQ99/cGyAwFdFsnxxXA== + dependencies: + detect-libc "^1.0.3" + +"@parcel/fs@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.3.2.tgz#9628441a84c2582e1f6e69549feb0da0cc143e40" + integrity sha512-XV+OsnRpN01QKU37lBN0TFKvv7uPKfQGbqFqYOrMbXH++Ae8rBU0Ykz+Yu4tv2h7shMlde+AMKgRnRTAJZpWEQ== + dependencies: + "@parcel/fs-search" "2.3.2" + "@parcel/types" "2.3.2" + "@parcel/utils" "2.3.2" + "@parcel/watcher" "^2.0.0" + "@parcel/workers" "2.3.2" + +"@parcel/graph@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.3.2.tgz#4194816952ab322ab22a17f7d9ea17befbade64d" + integrity sha512-ltTBM3IEqumgmy4ABBFETT8NtAwSsjD9mY3WCyJ5P8rUshfVCg093rvBPbpuJYMaH/TV1AHVaWfZqaZ4JQDIQQ== + dependencies: + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + +"@parcel/hash@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.3.2.tgz#33b8ff04bb44f6661bdc1054b302ef1b6bd3acb3" + integrity sha512-SMtYTsHihws/wqdVnOr0QAGyGYsW9rJSJkkoRujUxo8l2ctnBN1ztv89eOUrdtgHsmcnj/oz1yw6sN38X+BUng== + dependencies: + detect-libc "^1.0.3" + xxhash-wasm "^0.4.2" + +"@parcel/logger@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.3.2.tgz#b5fc7a9c1664ee0286d0f67641c7c81c8fec1561" + integrity sha512-jIWd8TXDQf+EnNWSa7Q10lSQ6C1LSH8OZkTlaINrfVIw7s+3tVxO3I4pjp7/ARw7RX2gdNPlw6fH4Gn/HvvYbw== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/events" "2.3.2" + +"@parcel/markdown-ansi@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.3.2.tgz#2a5be7ce76a506a9d238ea2257cb28e43abe4902" + integrity sha512-l01ggmag5QScCk9mYA0xHh5TWSffR84uPFP2KvaAMQQ9NLNufcFiU0mn/Mtr3pCb5L5dSzmJ+Oo9s7P1Kh/Fmg== + dependencies: + chalk "^4.1.0" + +"@parcel/namer-default@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.3.2.tgz#84e17abfc84fd293b23b3f405280ed2e279c75d8" + integrity sha512-3QUMC0+5+3KMKfoAxYAbpZtuRqTgyZKsGDWzOpuqwemqp6P8ahAvNPwSCi6QSkGcTmvtYwBu9/NHPSONxIFOfg== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/plugin" "2.3.2" + nullthrows "^1.1.1" + +"@parcel/node-resolver-core@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-2.3.2.tgz#dd360f405949fdcd62980cd44825052ab28f6135" + integrity sha512-wmrnMNzJN4GuHw2Ftho+BWgSWR6UCkW3XoMdphqcxpw/ieAdS2a+xYSosYkZgQZ6lGutSvLyJ1CkVvP6RLIdQQ== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + +"@parcel/optimizer-cssnano@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-cssnano/-/optimizer-cssnano-2.3.2.tgz#70758f6646fd4debc26a90ae7dddf398928c0ce1" + integrity sha512-wTBOxMiBI38NAB9XIlQZRCjS59+EWjWR9M04D3TWyxl+dL5gYMc1cl4GNynUnmcPdz+3s1UbOdo5/8V90wjiiw== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + cssnano "^5.0.15" + postcss "^8.4.5" + +"@parcel/optimizer-htmlnano@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.3.2.tgz#4086736866621182f5dd1a8abe78e9f5764e1a28" + integrity sha512-U8C0TDSxsx8HmHaLW0Zc7ha1fXQynzhvBjCRMGYnOiLiw0MOfLQxzQ2WKVSeCotmdlF63ayCwxWsd6BuqStiKQ== + dependencies: + "@parcel/plugin" "2.3.2" + htmlnano "^2.0.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + svgo "^2.4.0" + +"@parcel/optimizer-image@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.3.2.tgz#0549cc1abc99fdd6f46bd44ce8551eb135e44d4f" + integrity sha512-HOk3r5qdvY/PmI7Q3i2qEgFH3kP2QWG4Wq3wmC4suaF1+c2gpiQc+HKHWp4QvfbH3jhT00c5NxQyqPhbXeNI9Q== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + "@parcel/workers" "2.3.2" + detect-libc "^1.0.3" + +"@parcel/optimizer-svgo@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.3.2.tgz#ebf2f48f356ad557d2bbfae361520d3d29bc1c37" + integrity sha512-l7WvZ5+e7D1mVmLUxMVaSb29cviXzuvSY2OpQs0ukdPACDqag+C65hWMzwTiOSSRGPMIu96kQKpeVru2YjibhA== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + svgo "^2.4.0" + +"@parcel/optimizer-terser@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-terser/-/optimizer-terser-2.3.2.tgz#790b69e6ecc6ef0d8f25b57e9a13806e1f1c2943" + integrity sha512-dOapHhfy0xiNZa2IoEyHGkhhla07xsja79NPem14e5jCqY6Oi40jKNV4ab5uu5u1elWUjJuw69tiYbkDZWbKQw== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + terser "^5.2.0" + +"@parcel/package-manager@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.3.2.tgz#380f0741c9d0c79c170c437efae02506484df315" + integrity sha512-pAQfywKVORY8Ee+NHAyKzzQrKbnz8otWRejps7urwhDaTVLfAd5C/1ZV64ATZ9ALYP9jyoQ8bTaxVd4opcSuwg== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/fs" "2.3.2" + "@parcel/logger" "2.3.2" + "@parcel/types" "2.3.2" + "@parcel/utils" "2.3.2" + "@parcel/workers" "2.3.2" + semver "^5.7.1" + +"@parcel/packager-css@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.3.2.tgz#4994d872449843c1c0cda524b6df3327e2f0a121" + integrity sha512-ByuF9xDnQnpVL1Hdu9aY6SpxOuZowd3TH7joh1qdRPLeMHTEvUywHBXoiAyNdrhnLGum8uPEdY8Ra5Xuo1U7kg== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + +"@parcel/packager-html@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.3.2.tgz#e54085fbaa49bed4258ffef80bc36b421895965f" + integrity sha512-YqAptdU+uqfgwSii76mRGcA/3TpuC6yHr8xG+11brqj/tEFLsurmX0naombzd7FgmrTE9w+kb0HUIMl2vRBn0A== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/types" "2.3.2" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + posthtml "^0.16.5" + +"@parcel/packager-js@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.3.2.tgz#2d2566bde0da921042b79aa827c71109665d795c" + integrity sha512-3OP0Ro9M1J+PIKZK4Ec2N5hjIPiqk++B2kMFeiUqvaNZjJgKrPPEICBhjS52rma4IE/NgmIMB3aI5pWqE/KwNA== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/hash" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + "@parcel/utils" "2.3.2" + globals "^13.2.0" + nullthrows "^1.1.1" + +"@parcel/packager-raw@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.3.2.tgz#869cc3e7bee8ff3655891a0af400cf4e7dd4f144" + integrity sha512-RnoZ7WgNAFWkEPrEefvyDqus7xfv9XGprHyTbfLittPaVAZpl+4eAv43nXyMfzk77Cgds6KcNpkosj3acEpNIQ== + dependencies: + "@parcel/plugin" "2.3.2" + +"@parcel/packager-svg@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.3.2.tgz#a7a02e22642ae93f42b8bfd7d122b4a159988743" + integrity sha512-iIC0VeczOXynS7M5jCi3naMBRyAznBVJ3iMg92/GaI9duxPlUMGAlHzLAKNtoXkc00HMXDH7rrmMb04VX6FYSg== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/types" "2.3.2" + "@parcel/utils" "2.3.2" + posthtml "^0.16.4" + +"@parcel/plugin@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.3.2.tgz#7701c40567d2eddd5d5b2b6298949cd03a2a22fa" + integrity sha512-SaLZAJX4KH+mrAmqmcy9KJN+V7L+6YNTlgyqYmfKlNiHu7aIjLL+3prX8QRcgGtjAYziCxvPj0cl1CCJssaiGg== + dependencies: + "@parcel/types" "2.3.2" + +"@parcel/reporter-cli@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.3.2.tgz#0617e088aac5ef7fa255d088e7016bb4f9d66a53" + integrity sha512-VYetmTXqW83npsvVvqlQZTbF3yVL3k/FCCl3kSWvOr9LZA0lmyqJWPjMHq37yIIOszQN/p5guLtgCjsP0UQw1Q== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/types" "2.3.2" + "@parcel/utils" "2.3.2" + chalk "^4.1.0" + +"@parcel/reporter-dev-server@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.3.2.tgz#46ee4c53ad08c8b8afd2c79fb37381b6ba55cfb5" + integrity sha512-E7LtnjAX4iiWMw2qKUyFBi3+bDz0UGjqgHoPQylUYYLi6opXjJz/oC+cCcCy4e3RZlkrl187XonvagS59YjDxA== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + +"@parcel/resolver-default@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.3.2.tgz#286070412ad7fe506f7c88409f39b362d2041798" + integrity sha512-y3r+xOwWsATrNGUWuZ6soA7q24f8E5tY1AZ9lHCufnkK2cdKZJ5O1cyd7ohkAiKZx2/pMd+FgmVZ/J3oxetXkA== + dependencies: + "@parcel/node-resolver-core" "2.3.2" + "@parcel/plugin" "2.3.2" + +"@parcel/runtime-browser-hmr@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.3.2.tgz#cb23a850324ea792168438a9be6a345ebb66eb6d" + integrity sha512-nRD6uOyF1+HGylP9GASbYmvUDOsDaNwvaxuGTSh8+5M0mmCgib+hVBiPEKbwdmKjGbUPt9wRFPyMa/JpeQZsIQ== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + +"@parcel/runtime-js@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.3.2.tgz#c0e14251ce43f95977577e23bb9ac5c2487f3bb1" + integrity sha512-SJepcHvYO/7CEe/Q85sngk+smcJ6TypuPh4D2R8kN+cAJPi5WvbQEe7+x5BEgbN+5Jumi/Uo3FfOOE5mYh+F6g== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + +"@parcel/runtime-react-refresh@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.3.2.tgz#11961d7429ae3333b7efe14c4f57515df57eb5f2" + integrity sha512-P+GRPO2XVDSBQ4HmRSj2xfbHSQvL9+ahTE/AB74IJExLTITv5l4SHAV3VsiKohuHYUAYHW3A/Oe7tEFCAb6Cug== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + react-refresh "^0.9.0" + +"@parcel/runtime-service-worker@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.3.2.tgz#aa91797e57d1bb5b2aac04ac62c5410709ae0a27" + integrity sha512-iREHj/eapphC4uS/zGUkiTJvG57q+CVbTrfE42kB8ECtf/RYNo5YC9htdvPZjRSXDPrEPc5NCoKp4X09ENNikw== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + +"@parcel/source-map@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" + integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== + dependencies: + detect-libc "^1.0.3" + +"@parcel/transformer-babel@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.3.2.tgz#2d8c0d1f95d9747936d132dc4c34edb0b6b80d39" + integrity sha512-QpWfH2V6jJ+kcUBIMM/uBBG8dGFvNaOGS+8jD6b+eTP+1owzm83RoWgqhRV2D/hhv2qMXEQzIljoc/wg2y+X4g== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + "@parcel/utils" "2.3.2" + browserslist "^4.6.6" + json5 "^2.2.0" + nullthrows "^1.1.1" + semver "^5.7.0" + +"@parcel/transformer-css@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.3.2.tgz#968826e42d7cac9963dc0a67a30d393ef996e48c" + integrity sha512-8lzvDny+78DIAqhcXam2Bf9FyaUoqzHdUQdNFn+PuXTHroG/QGPvln1kvqngJjn4/cpJS9vYmAPVXe+nai3P8g== + dependencies: + "@parcel/hash" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + postcss "^8.4.5" + postcss-value-parser "^4.2.0" + semver "^5.7.1" + +"@parcel/transformer-html@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.3.2.tgz#c240f09369445d287d16beba207407c925532d90" + integrity sha512-idT1I/8WM65IFYBqzRwpwT7sf0xGur4EDQDHhuPX1w+pIVZnh0lkLMAnEqs6ar1SPRMys4chzkuDNnqh0d76hg== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/hash" "2.3.2" + "@parcel/plugin" "2.3.2" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^5.7.1" + +"@parcel/transformer-image@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.3.2.tgz#24b6eda51a6b07c195886bbb67fb2ade14c325f3" + integrity sha512-0K7cJHXysli6hZsUz/zVGO7WCoaaIeVdzAxKpLA1Yl3LKw/ODiMyXKt08LiV/ljQ2xT5qb9EsXUWDRvcZ0b96A== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/workers" "2.3.2" + nullthrows "^1.1.1" + +"@parcel/transformer-js@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.3.2.tgz#24bcb488d5f82678343a5630fe4bbe822789ac33" + integrity sha512-U1fbIoAoqR5P49S+DMhH8BUd9IHRPwrTTv6ARYGsYnhuNsjTFhNYE0kkfRYboe/e0z7vEbeJICZXjnZ7eQDw5A== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + "@parcel/utils" "2.3.2" + "@parcel/workers" "2.3.2" + "@swc/helpers" "^0.2.11" + browserslist "^4.6.6" + detect-libc "^1.0.3" + nullthrows "^1.1.1" + regenerator-runtime "^0.13.7" + semver "^5.7.1" + +"@parcel/transformer-json@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.3.2.tgz#4c470e86659e87ee13b1f31e75a3621d3615b6bd" + integrity sha512-Pv2iPaxKINtFwOk5fDbHjQlSm2Vza/NLimQY896FLxiXPNAJxWGvMwdutgOPEBKksxRx9LZPyIOHiRVZ0KcA3w== + dependencies: + "@parcel/plugin" "2.3.2" + json5 "^2.2.0" + +"@parcel/transformer-less@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-less/-/transformer-less-2.3.2.tgz#5e9fe261e6d3a196f89cfb811e60c549f1034e37" + integrity sha512-elQ00PiUkadFM2DdZrqTciobXSQjPkZA5ZSfdC/lfW7aSP28bnLI1EV3FfHZhiwJcmJ/nccmT2ZwRVwJKus7hg== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/source-map" "^2.0.0" + less "^4.1.1" + +"@parcel/transformer-postcss@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.3.2.tgz#a428c81569dd66758c5fab866dca69b4c6e59743" + integrity sha512-Rpdxc1rt2aJFCh/y/ccaBc9J1crDjNY5o44xYoOemBoUNDMREsmg5sR5iO81qKKO5GxfoosGb2zh59aeTmywcg== + dependencies: + "@parcel/hash" "2.3.2" + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + clone "^2.1.1" + nullthrows "^1.1.1" + postcss-value-parser "^4.2.0" + semver "^5.7.1" + +"@parcel/transformer-posthtml@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.3.2.tgz#5da3f24bf240c3c49b2fdb17dcda5988d3057a30" + integrity sha512-tMdVExfdM+1G8A9KSHDsjg+S9xEGbhH5mApF2NslPnNZ4ciLKRNuHU2sSV/v8i0a6kacKvDTrwQXYBQJGOodBw== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^5.7.1" + +"@parcel/transformer-raw@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.3.2.tgz#40d21773e295bae3b16bfe7a89e414ccf534b9c5" + integrity sha512-lY7eOCaALZ90+GH+4PZRmAPGQRXoZ66NakSdhEtH6JSSAYOmZKDvNLGTMRo/vK1oELzWMuAHGdqvbcPDtNLLVw== + dependencies: + "@parcel/plugin" "2.3.2" + +"@parcel/transformer-react-refresh-wrap@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.3.2.tgz#43ecfe6f4567b88abb81db9fe56b8d860d6a69f7" + integrity sha512-FZaderyCExn0SBZ6D+zHPWc8JSn9YDcbfibv0wkCl+D7sYfeWZ22i7MRp5NwCe/TZ21WuxDWySCggEp/Waz2xg== + dependencies: + "@parcel/plugin" "2.3.2" + "@parcel/utils" "2.3.2" + react-refresh "^0.9.0" + +"@parcel/transformer-svg@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.3.2.tgz#9a66aef5011c7bbb1fa3ce9bb52ca56d8f0f964d" + integrity sha512-k9My6bePsaGgUh+tidDjFbbVgKPTzwCAQfoloZRMt7y396KgUbvCfqDruk04k6k+cJn7Jl1o/5lUpTEruBze7g== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/hash" "2.3.2" + "@parcel/plugin" "2.3.2" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^5.7.1" + +"@parcel/types@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.3.2.tgz#7eb6925bc852a518dd75b742419e51292418769f" + integrity sha512-C77Ct1xNM7LWjPTfe/dQ/9rq1efdsX5VJu2o8/TVi6qoFh64Wp/c5/vCHwKInOTBZUTchVO6z4PGJNIZoUVJuA== + dependencies: + "@parcel/cache" "2.3.2" + "@parcel/diagnostic" "2.3.2" + "@parcel/fs" "2.3.2" + "@parcel/package-manager" "2.3.2" + "@parcel/source-map" "^2.0.0" + "@parcel/workers" "2.3.2" + utility-types "^3.10.0" + +"@parcel/utils@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.3.2.tgz#4aab052fc9f3227811a504da7b9663ca75004f55" + integrity sha512-xzZ+0vWhrXlLzGoz7WlANaO5IPtyWGeCZruGtepUL3yheRWb1UU4zFN9xz7Z+j++Dmf1Fgkc3qdk/t4O8u9HLQ== + dependencies: + "@parcel/codeframe" "2.3.2" + "@parcel/diagnostic" "2.3.2" + "@parcel/hash" "2.3.2" + "@parcel/logger" "2.3.2" + "@parcel/markdown-ansi" "2.3.2" + "@parcel/source-map" "^2.0.0" + chalk "^4.1.0" + +"@parcel/watcher-android-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz#9c93763794153e4f76920994a423b6ea3257059d" + integrity sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA== + +"@parcel/watcher-darwin-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz#2c79c2abde16aa24cac67e555b60802fd13fe210" + integrity sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA== + +"@parcel/watcher-darwin-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz#23d82f198c5d033f047467c68d7c335f3df49b46" + integrity sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q== + +"@parcel/watcher-freebsd-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz#7310cc86abc27dacd57624bcdba1f0ba092e76df" + integrity sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA== + +"@parcel/watcher-linux-arm-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz#c31b76e695027eeb1078d3d6f1d641d0b900c335" + integrity sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ== + +"@parcel/watcher-linux-arm64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz#56e09b86e9d8a4096f606be118b588da6e965080" + integrity sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg== + +"@parcel/watcher-linux-arm64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz#27ffd5ca5f510ecd638f9ad22e2e813049db54e7" + integrity sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng== + +"@parcel/watcher-linux-x64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz#44cbbb1e5884a1ca900655f47a0775218318f934" + integrity sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ== + +"@parcel/watcher-linux-x64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz#4c33993618c8d5113722852806239cb80360494b" + integrity sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA== + +"@parcel/watcher-win32-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz#2a172fd2fda95fe5389298ca3e70b5a96316162a" + integrity sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg== + +"@parcel/watcher-win32-ia32@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz#279225b2ebe1fadd3c5137c9b2365ad422656904" + integrity sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA== + +"@parcel/watcher-win32-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz#93e0bd0ad1bda2c9a688764b9b30b71dc5b72a71" + integrity sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA== + +"@parcel/watcher@^2.0.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.0.tgz#2d3c4ef8832a5cdfdbb76b914f022489933e664f" + integrity sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.0" + "@parcel/watcher-darwin-arm64" "2.4.0" + "@parcel/watcher-darwin-x64" "2.4.0" + "@parcel/watcher-freebsd-x64" "2.4.0" + "@parcel/watcher-linux-arm-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-musl" "2.4.0" + "@parcel/watcher-linux-x64-glibc" "2.4.0" + "@parcel/watcher-linux-x64-musl" "2.4.0" + "@parcel/watcher-win32-arm64" "2.4.0" + "@parcel/watcher-win32-ia32" "2.4.0" + "@parcel/watcher-win32-x64" "2.4.0" + +"@parcel/workers@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.3.2.tgz#05ffa2da9169bfb83335892c2b8abce55686ceb1" + integrity sha512-JbOm+Ceuyymd1SuKGgodC2EXAiPuFRpaNUSJpz3NAsS3lVIt2TDAPMOWBivS7sML/KltspUfl/Q9YwO0TPUFNw== + dependencies: + "@parcel/diagnostic" "2.3.2" + "@parcel/logger" "2.3.2" + "@parcel/types" "2.3.2" + "@parcel/utils" "2.3.2" + chrome-trace-event "^1.0.2" + nullthrows "^1.1.1" + +"@swc/helpers@^0.2.11": + version "0.2.14" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.2.14.tgz#20288c3627442339dd3d743c944f7043ee3590f0" + integrity sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/base16@^1.0.2": version "1.0.2" @@ -420,10 +973,220 @@ resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.4.0.tgz#476a16ae848c77478079d6749236fdb98837b92c" integrity sha512-JklMxityrwjBTjGY2anH8JaTx3yjRU3/sEHSblLH1ba5lqcSh1LnImXJZO5peJfXyqKYWjHTGy4s5Wz++hARrw== -"@types/estree@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/d3-array@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.4.tgz#44eebe40be57476cad6a0cd6a85b0f57d54185a2" + integrity sha512-nwvEkG9vYOc0Ic7G7kwgviY4AQlTfYGIZ0fqB7CQHXGyYM6nO7kJh5EguSNA3jfh4rq7Sb7eMVq8isuvg2/miQ== + +"@types/d3-axis@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-3.0.2.tgz#96e11d51256baf5bdb2fa73a17d302993e79df07" + integrity sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-brush@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-3.0.2.tgz#a610aad5a1e76c375be63e11c5eee1ed9fd2fb40" + integrity sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-chord@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-3.0.2.tgz#cf6f05ad2d8faaad524e9e6f454b4fd06b200930" + integrity sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw== + +"@types/d3-color@*": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.0.tgz#6594da178ded6c7c3842f3cc0ac84b156f12f2d4" + integrity sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA== + +"@types/d3-contour@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-3.0.2.tgz#d8a0e4d12ec14f7d2bb6e59f3fbc1a527457d0b2" + integrity sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ== + dependencies: + "@types/d3-array" "*" + "@types/geojson" "*" + +"@types/d3-delaunay@*": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz#006b7bd838baec1511270cb900bf4fc377bbbf41" + integrity sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ== + +"@types/d3-dispatch@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.2.tgz#b2fa80bab3bcead68680766e966f59cd6cb9a69f" + integrity sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg== + +"@types/d3-drag@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.2.tgz#5562da3e7b33d782c2c1f9e65c5e91bb01ee82cf" + integrity sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-dsv@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.1.tgz#c51a3505cee42653454b74a00f8713dc3548c362" + integrity sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw== + +"@types/d3-ease@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.0.tgz#c29926f8b596f9dadaeca062a32a45365681eae0" + integrity sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA== + +"@types/d3-fetch@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.2.tgz#fe1f335243e07c9bd520c9a71756fed8330c54b1" + integrity sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA== + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-force@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.4.tgz#2d50bd2b695f709797e1745644f6bc123e6e5f5a" + integrity sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw== + +"@types/d3-format@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.1.tgz#194f1317a499edd7e58766f96735bdc0216bb89d" + integrity sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg== + +"@types/d3-geo@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.0.3.tgz#535e5f24be13722964c52354301be09b752f5d6e" + integrity sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@*": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b3a446b5437faededb30ac32b7cc0486559ab1e2" + integrity sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A== + +"@types/d3-interpolate@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz#e7d17fa4a5830ad56fe22ce3b4fac8541a9572dc" + integrity sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.0.0.tgz#939e3a784ae4f80b1fde8098b91af1776ff1312b" + integrity sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg== + +"@types/d3-polygon@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.0.tgz#5200a3fa793d7736fa104285fa19b0dbc2424b93" + integrity sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw== + +"@types/d3-quadtree@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz#433112a178eb7df123aab2ce11c67f51cafe8ff5" + integrity sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw== + +"@types/d3-random@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-3.0.1.tgz#5c8d42b36cd4c80b92e5626a252f994ca6bfc953" + integrity sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ== + +"@types/d3-scale-chromatic@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#103124777e8cdec85b20b51fd3397c682ee1e954" + integrity sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw== + +"@types/d3-scale@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.3.tgz#7a5780e934e52b6f63ad9c24b105e33dd58102b5" + integrity sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ== + dependencies: + "@types/d3-time" "*" + +"@types/d3-selection@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.5.tgz#27cd53b7672d405025e2414d98532d7934c16ebd" + integrity sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w== + +"@types/d3-shape@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.1.tgz#15cc497751dac31192d7aef4e67a8d2c62354b95" + integrity sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time-format@*": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.0.tgz#ee7b6e798f8deb2d9640675f8811d0253aaa1946" + integrity sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw== + +"@types/d3-time@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.0.tgz#e1ac0f3e9e195135361fa1a1d62f795d87e6e819" + integrity sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg== + +"@types/d3-timer@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.0.tgz#e2505f1c21ec08bda8915238e397fb71d2fc54ce" + integrity sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g== + +"@types/d3-transition@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.3.tgz#d4ac37d08703fb039c87f92851a598ba77400402" + integrity sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-zoom@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.2.tgz#067aa6a6ecbc75a78b753cc6f7a7f9f7e4e7d117" + integrity sha512-t09DDJVBI6AkM7N8kuPsnq/3d/ehtRKBN1xSiYjjMCgbiw6HM6Ged5VhvswmhprfKyGvzeTEL/4WBaK9llWvlA== + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + +"@types/d3@^7.1.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.0.tgz#fc5cac5b1756fc592a3cf1f3dc881bf08225f515" + integrity sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA== + dependencies: + "@types/d3-array" "*" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-color" "*" + "@types/d3-contour" "*" + "@types/d3-delaunay" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-fetch" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-random" "*" + "@types/d3-scale" "*" + "@types/d3-scale-chromatic" "*" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-zoom" "*" + +"@types/geojson@*": + version "7946.0.10" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249" + integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA== "@types/hast@^2.0.0": version "2.3.4" @@ -440,7 +1203,7 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" -"@types/lodash@^4.14.160", "@types/lodash@^4.14.178": +"@types/lodash@^4.14.160", "@types/lodash@^4.14.178", "@types/lodash@^4.14.191": version "4.14.194" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== @@ -491,6 +1254,13 @@ dependencies: "@types/react" "*" +"@types/react-json-tree@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@types/react-json-tree/-/react-json-tree-0.13.0.tgz#e34664ba7e7a9f8d60cc67ee6bfa5d5326f01637" + integrity sha512-ndAxicso7eqhsK4vnqGEwqx3KcJ1lg07KpMOVCjshpL2p6eGvSO57K+hPKTefWhYmEu0Ifmd+EUkDOw4FCzDnA== + dependencies: + react-json-tree "*" + "@types/react-redux@^7.1.20": version "7.1.25" resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.25.tgz#de841631205b24f9dfb4967dd4a7901e048f9a88" @@ -553,6 +1323,26 @@ dependencies: vfile-message "*" +abortcontroller-polyfill@^1.1.9: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +acorn@^8.5.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +acorn@^8.8.2: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -560,6 +1350,18 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-hidden@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" @@ -586,21 +1388,83 @@ bail@^1.0.0: resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + base16@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + brace@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" integrity sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q== +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.0.0, browserslist@^4.21.4, browserslist@^4.6.6: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587: + version "1.0.30001588" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" + integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== + ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" @@ -615,6 +1479,14 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-html4@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" @@ -640,11 +1512,30 @@ chroma-js@^2.1.0: resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.4.2.tgz#dffc214ed0c11fa8eefca2c36651d8e57cbfb2b0" integrity sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A== +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + classnames@^2.2.6, classnames@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" @@ -657,12 +1548,19 @@ color-convert@^1.9.0, color-convert@^1.9.3: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -683,21 +1581,57 @@ color@^3.2.1: color-convert "^1.9.3" color-string "^1.6.0" +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@7: +commander@7, commander@^7.0.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^6.3.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.5.1.tgz#4518c67f7ac680cf5c34d5adf399a2a2047edc8c" + integrity sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag== + dependencies: + chalk "^4.1.0" + date-fns "^2.16.1" + lodash "^4.17.21" + rxjs "^6.6.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^16.2.0" + convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -709,6 +1643,32 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.1: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + css-box-model@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" @@ -716,6 +1676,96 @@ css-box-model@^1.2.0: dependencies: tiny-invariant "^1.0.6" +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.15: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + csstype@^3.0.10, csstype@^3.0.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" @@ -965,6 +2015,11 @@ d3@^7.3.0: d3-transition "3" d3-zoom "3" +date-fns@^2.16.1: + version "2.29.3" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== + delaunator@5: version "5.0.0" resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b" @@ -972,21 +2027,98 @@ delaunator@5: dependencies: robust-predicates "^3.0.0" -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-libc@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + +diff-match-patch@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" + integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== + +electron-to-chromium@^1.4.668: + version "1.4.673" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz#1f077d9a095761804aec7ec6346c3f4b69b56534" + integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw== -diff-match-patch@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" - integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoticon@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -994,36 +2126,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -esbuild@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" - integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.24.2" - "@esbuild/android-arm" "0.24.2" - "@esbuild/android-arm64" "0.24.2" - "@esbuild/android-x64" "0.24.2" - "@esbuild/darwin-arm64" "0.24.2" - "@esbuild/darwin-x64" "0.24.2" - "@esbuild/freebsd-arm64" "0.24.2" - "@esbuild/freebsd-x64" "0.24.2" - "@esbuild/linux-arm" "0.24.2" - "@esbuild/linux-arm64" "0.24.2" - "@esbuild/linux-ia32" "0.24.2" - "@esbuild/linux-loong64" "0.24.2" - "@esbuild/linux-mips64el" "0.24.2" - "@esbuild/linux-ppc64" "0.24.2" - "@esbuild/linux-riscv64" "0.24.2" - "@esbuild/linux-s390x" "0.24.2" - "@esbuild/linux-x64" "0.24.2" - "@esbuild/netbsd-arm64" "0.24.2" - "@esbuild/netbsd-x64" "0.24.2" - "@esbuild/openbsd-arm64" "0.24.2" - "@esbuild/openbsd-x64" "0.24.2" - "@esbuild/sunos-x64" "0.24.2" - "@esbuild/win32-arm64" "0.24.2" - "@esbuild/win32-ia32" "0.24.2" - "@esbuild/win32-x64" "0.24.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" @@ -1047,6 +2153,13 @@ file-selector@^0.4.0: dependencies: tslib "^2.0.3" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -1059,26 +2172,65 @@ focus-lock@^0.11.6: dependencies: tslib "^2.0.3" -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== +get-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.2.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +graceful-fs@^4.1.2: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1193,14 +2345,38 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -iconv-lite@0.6: +htmlnano@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.1.0.tgz#67b31b3cd3fad23f0b610ca628fdb48382209c3c" + integrity sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g== + dependencies: + cosmiconfig "^8.0.0" + posthtml "^0.16.5" + timsort "^0.3.0" + +htmlparser2@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" + +iconv-lite@0.6, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -import-fresh@^3.2.1: +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -1208,7 +2384,15 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -inherits@^2.0.0: +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1270,16 +2454,48 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-json@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" + integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -1290,21 +2506,83 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/json-source-map/-/json-source-map-0.6.1.tgz#e0b1f6f4ce13a9ad57e2ae165a24d06e62c79a0f" + integrity sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg== + +json5@^2.2.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +less@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" + integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +lilconfig@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lmdb@^2.0.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.9.2.tgz#a67ed24cad282ba7ad21daf2a8a13c08dcb33f56" + integrity sha512-Q5SQzu4u4sdz4U8QT1uCS04beS7hS/1YYb1suJwaijqVETGAkrPBKr0ERxTeza/u2F6ei5+8UTnzm4ae3PJG3w== + dependencies: + msgpackr "^1.9.9" + node-addon-api "^6.1.0" + node-gyp-build-optional-packages "5.1.1" + ordered-binary "^1.4.1" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "2.9.2" + "@lmdb/lmdb-darwin-x64" "2.9.2" + "@lmdb/lmdb-linux-arm" "2.9.2" + "@lmdb/lmdb-linux-arm64" "2.9.2" + "@lmdb/lmdb-linux-x64" "2.9.2" + "@lmdb/lmdb-win32-x64" "2.9.2" + lodash.curry@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" @@ -1320,6 +2598,16 @@ lodash.isequal@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -1339,6 +2627,14 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" @@ -1365,6 +2661,11 @@ mdast-util-to-hast@^10.0.0, mdast-util-to-hast@^10.2.0: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -1375,10 +2676,69 @@ mdurl@^1.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -nanoid@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== +micromatch@^4.0.5, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +msgpackr-extract@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" + integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== + dependencies: + node-gyp-build-optional-packages "5.0.7" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" + +msgpackr@^1.5.1, msgpackr@^1.9.9: + version "1.10.1" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" + integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== + optionalDependencies: + msgpackr-extract "^3.0.2" + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +needle@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== + dependencies: + iconv-lite "^0.6.3" + sax "^1.2.4" + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== node-emoji@^1.10.0: version "1.11.0" @@ -1387,6 +2747,40 @@ node-emoji@^1.10.0: dependencies: lodash "^4.17.21" +node-gyp-build-optional-packages@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" + integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== + +node-gyp-build-optional-packages@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== + dependencies: + detect-libc "^2.0.1" + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + numeral@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" @@ -1397,6 +2791,38 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +ordered-binary@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.1.tgz#94ccbf14181711081ee23931db0dc3f58aaa0df6" + integrity sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A== + +parcel@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.3.2.tgz#d1cb475f27edae981edea7a7104e04d3a35a87ca" + integrity sha512-4jhgoBcQaiGKmnmBvNyKyOvZrxCgzgUzdEoVup/fRCOP99hNmvYIN5IErIIJxsU9ObcG/RGCFF8wa4kVRsWfIg== + dependencies: + "@parcel/config-default" "2.3.2" + "@parcel/core" "2.3.2" + "@parcel/diagnostic" "2.3.2" + "@parcel/events" "2.3.2" + "@parcel/fs" "2.3.2" + "@parcel/logger" "2.3.2" + "@parcel/package-manager" "2.3.2" + "@parcel/reporter-cli" "2.3.2" + "@parcel/reporter-dev-server" "2.3.2" + "@parcel/utils" "2.3.2" + chalk "^4.1.0" + commander "^7.0.0" + get-port "^4.2.0" + v8-compile-cache "^2.0.0" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -1416,7 +2842,7 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -1426,11 +2852,26 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -1441,19 +2882,268 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss@^8.4.49: - version "8.5.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.5: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +posthtml-parser@^0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" + integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== + dependencies: + htmlparser2 "^7.1.1" + +posthtml-parser@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" + integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== + dependencies: + htmlparser2 "^7.1.1" + +posthtml-render@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" + integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== + dependencies: + is-json "^2.0.1" + +posthtml@^0.16.4, posthtml@^0.16.5: + version "0.16.6" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" + integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== + dependencies: + posthtml-parser "^0.11.0" + posthtml-render "^3.0.0" prismjs@~1.27.0: version "1.27.0" @@ -1476,6 +3166,11 @@ property-information@^5.0.0, property-information@^5.3.0: dependencies: xtend "^4.0.0" +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -1595,6 +3290,15 @@ react-is@~16.3.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22" integrity sha512-ybEM7YOr4yBgFd6w8dJqwxegqZGJNBZl6U27HnGKuTZmDvVrD5quWOK/wAnMywiZzW+Qsk+l4X2c70+thp/A8Q== +react-json-tree@*: + version "0.18.0" + resolved "https://registry.yarnpkg.com/react-json-tree/-/react-json-tree-0.18.0.tgz#3c4bec7b091f50dcc9c09652d89c8f4373ebf3ea" + integrity sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA== + dependencies: + "@babel/runtime" "^7.20.6" + "@types/lodash" "^4.14.191" + react-base16-styling "^0.9.1" + react-json-tree@^0.16.1: version "0.16.2" resolved "https://registry.yarnpkg.com/react-json-tree/-/react-json-tree-0.16.2.tgz#697bd9413407d2448ddff3c8891cd4395342539e" @@ -1617,6 +3321,11 @@ react-redux@^7.2.0: prop-types "^15.7.2" react-is "^17.0.2" +react-refresh@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" + integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== + react-remove-scroll-bar@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" @@ -1687,7 +3396,7 @@ refractor@^3.4.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerator-runtime@^0.13.11: +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: 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== @@ -1757,6 +3466,11 @@ repeat-string@^1.5.4: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== +require-directory@^2.1.1: + version "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== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -1776,49 +3490,45 @@ resolve@^1.19.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + robust-predicates@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== -rollup@^4.23.0: - version "4.30.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" - integrity sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.30.1" - "@rollup/rollup-android-arm64" "4.30.1" - "@rollup/rollup-darwin-arm64" "4.30.1" - "@rollup/rollup-darwin-x64" "4.30.1" - "@rollup/rollup-freebsd-arm64" "4.30.1" - "@rollup/rollup-freebsd-x64" "4.30.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" - "@rollup/rollup-linux-arm-musleabihf" "4.30.1" - "@rollup/rollup-linux-arm64-gnu" "4.30.1" - "@rollup/rollup-linux-arm64-musl" "4.30.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" - "@rollup/rollup-linux-riscv64-gnu" "4.30.1" - "@rollup/rollup-linux-s390x-gnu" "4.30.1" - "@rollup/rollup-linux-x64-gnu" "4.30.1" - "@rollup/rollup-linux-x64-musl" "4.30.1" - "@rollup/rollup-win32-arm64-msvc" "4.30.1" - "@rollup/rollup-win32-ia32-msvc" "4.30.1" - "@rollup/rollup-win32-x64-msvc" "4.30.1" - fsevents "~2.3.2" - rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== +rxjs@^6.6.3: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sax@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + scheduler@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" @@ -1827,13 +3537,25 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -semver@^7.5.2: +semver@^5.6.0, semver@^5.7.0, semver@^5.7.1, semver@^7.5.2: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -1841,26 +3563,58 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + stringify-entities@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" @@ -1870,6 +3624,13 @@ stringify-entities@^3.0.1: character-entities-legacy "^1.0.0" xtend "^4.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -1877,6 +3638,14 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + stylis@4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" @@ -1889,21 +3658,73 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svgo@^2.4.0, svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + tabbable@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-3.1.2.tgz#f2d16cccd01f400e38635c7181adfe0ad965a4a2" integrity sha512-wjB6puVXTYO0BSFtCmWQubA/KIn7Xvajw0x0l6eJUudMG/EAiJvIUnyNX6xO4NpGrJ16lbD0eUseB9WxW0vlpQ== +terser@^5.2.0: + version "5.27.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.1.tgz#b0092975ea1b379d166088a1a57e32f0839d84a2" + integrity sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +terser@^5.9.0: + version "5.17.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.1.tgz#948f10830454761e2eeedc6debe45c532c83fd69" + integrity sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + text-diff@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/text-diff/-/text-diff-1.0.1.tgz#6c105905435e337857375c9d2f6ca63e453ff565" integrity sha512-jAnlP3ggZk7FeLX1awaMR8Y2sMyil9P9FXvNjaIJIQBAom1zvpKGGH31htOVrUFp0vlyygmJJpNrbJ4rfjsxrA== +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== + tiny-invariant@^1.0.6: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" @@ -1914,6 +3735,18 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" @@ -1929,11 +3762,26 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.3.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -2031,6 +3879,14 @@ unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + url-parse@^1.5.0: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -2059,11 +3915,26 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utility-types@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== + uuid@^8.3.0: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-compile-cache@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== + vfile-location@^3.0.0, vfile-location@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" @@ -2095,35 +3966,80 @@ vfile@^4.0.0, vfile@^4.2.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -"vite@file:../node_modules/vite": - version "6.0.7" - dependencies: - esbuild "^0.24.2" - postcss "^8.4.49" - rollup "^4.23.0" - optionalDependencies: - fsevents "~2.3.3" +weak-lru-cache@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xxhash-wasm@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" + integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: +yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" diff --git a/redisinsight/ui/src/packages/redistimeseries-app/.parcelrc b/redisinsight/ui/src/packages/redistimeseries-app/.parcelrc new file mode 100644 index 0000000000..c442c3093a --- /dev/null +++ b/redisinsight/ui/src/packages/redistimeseries-app/.parcelrc @@ -0,0 +1,8 @@ +{ + "extends": "@parcel/config-default", + "transformers": { + "global_styles.css": [], + "dark_theme.css": [], + "light_theme.css": [] + } +} diff --git a/redisinsight/ui/src/packages/redistimeseries-app/global.d.ts b/redisinsight/ui/src/packages/redistimeseries-app/global.d.ts deleted file mode 100644 index f7b40bd272..0000000000 --- a/redisinsight/ui/src/packages/redistimeseries-app/global.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '@elastic/eui/es/components/icon/*' diff --git a/redisinsight/ui/src/packages/redistimeseries-app/index.html b/redisinsight/ui/src/packages/redistimeseries-app/index.html deleted file mode 100644 index 5ce8e84dc9..0000000000 --- a/redisinsight/ui/src/packages/redistimeseries-app/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - RedisTimeseries plugin - - - - <% if(isDev){ %> - - - - <% } %> - - -
- - diff --git a/redisinsight/ui/src/packages/redistimeseries-app/mockData/resultTimeSeries.json b/redisinsight/ui/src/packages/redistimeseries-app/mockData/resultTimeSeries.json deleted file mode 100644 index d669d8b6e1..0000000000 --- a/redisinsight/ui/src/packages/redistimeseries-app/mockData/resultTimeSeries.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "status": "success", - "response": [ - [ - 1643846400000, - "4604.83" - ], - [ - 1644019200000, - "3924.99" - ], - [ - 1644364800000, - "4653.02" - ], - [ - 1644624000000, - "4171.72" - ] - ] - } -] diff --git a/redisinsight/ui/src/packages/redistimeseries-app/package.json b/redisinsight/ui/src/packages/redistimeseries-app/package.json index ce3597b085..f3142aa1df 100644 --- a/redisinsight/ui/src/packages/redistimeseries-app/package.json +++ b/redisinsight/ui/src/packages/redistimeseries-app/package.json @@ -12,10 +12,20 @@ "styles": "./dist/styles.css", "main": "./dist/index.js", "name": "redistimeseries", - "version": "0.0.2", - + "version": "0.0.1", "scripts": { - "dev": "vite -c ../vite.config.mjs" + "start": "cross-env NODE_ENV=development parcel serve src/index.html", + "build": "rimraf dist .parcel-cache && cross-env NODE_ENV=production yarn build:js && yarn build:css && yarn build:assets", + "build:js": "esbuild src/main.tsx --bundle --minify --format=esm --outfile=dist/index.js", + "build:css": "lessc src/styles/styles.less dist/styles.css", + "build:assets": "parcel build src/assets/**/* --dist-dir dist", + "test": "jest" + }, + "targets": { + "main": false, + "module": { + "includeNodeModules": true + } }, "visualizations": [ { @@ -33,7 +43,21 @@ } ], "devDependencies": { - "vite": "file:../node_modules/vite" + "@parcel/compressor-brotli": "^2.8.3", + "@parcel/compressor-gzip": "^2.8.3", + "@parcel/transformer-less": "^2.8.3", + "@parcel/transformer-sass": "2.8.3", + "@types/file-saver": "^2.0.5", + "@types/jest": "^27.4.1", + "@types/plotly.js-dist-min": "^2.3.0", + "concurrently": "^7.6.0", + "cross-env": "^7.0.3", + "esbuild": "^0.17.12", + "jest": "^29.7.0", + "less": "^4.1.2", + "parcel": "^2.8.3", + "rimraf": "^3.0.2", + "ts-jest": "^29.2.5" }, "dependencies": { "@elastic/eui": "34.6.0", diff --git a/redisinsight/ui/src/packages/redistimeseries-app/src/index.html b/redisinsight/ui/src/packages/redistimeseries-app/src/index.html new file mode 100644 index 0000000000..24da1850c3 --- /dev/null +++ b/redisinsight/ui/src/packages/redistimeseries-app/src/index.html @@ -0,0 +1,18 @@ + + + + + + + Client list plugin + + + + + + + + +
+ + diff --git a/redisinsight/ui/src/packages/redistimeseries-app/src/main.tsx b/redisinsight/ui/src/packages/redistimeseries-app/src/main.tsx index c954aba739..58217bfd7a 100644 --- a/redisinsight/ui/src/packages/redistimeseries-app/src/main.tsx +++ b/redisinsight/ui/src/packages/redistimeseries-app/src/main.tsx @@ -4,11 +4,9 @@ import { render } from 'react-dom' import { appendIconComponentCache } from '@elastic/eui/es/components/icon/icon' import { icon as EuiIconArrowRight } from '@elastic/eui/es/components/icon/assets/arrow_right' import App from './App' -import './styles/styles.scss' -import result from '../mockData/resultTimeSeries.json' appendIconComponentCache({ - arrowRight: EuiIconArrowRight, + arrowRight: EuiIconArrowRight, }) interface Props { @@ -25,8 +23,7 @@ const renderChart = (props:Props) => { } if (process.env.NODE_ENV === 'development') { - const command = 'TS.RANGE bike_sales_3_per_day - + FILTER_BY_VALUE 3000 5000' - renderChart({ command, data: result, mode: 'ASCII'}) + renderChart({ command: '', data: [] }) } // This is a required action - export the main function for execution of the visualization diff --git a/redisinsight/ui/src/packages/redistimeseries-app/src/styles/_dark_theme.less b/redisinsight/ui/src/packages/redistimeseries-app/src/styles/_dark_theme.less new file mode 100644 index 0000000000..54175c82c7 --- /dev/null +++ b/redisinsight/ui/src/packages/redistimeseries-app/src/styles/_dark_theme.less @@ -0,0 +1,3 @@ +.theme_DARK { + @import (less)'../../node_modules/@elastic/eui/dist/eui_theme_dark.min.css'; +} diff --git a/redisinsight/ui/src/packages/redistimeseries-app/src/styles/_light_theme.less b/redisinsight/ui/src/packages/redistimeseries-app/src/styles/_light_theme.less new file mode 100644 index 0000000000..442d1780b1 --- /dev/null +++ b/redisinsight/ui/src/packages/redistimeseries-app/src/styles/_light_theme.less @@ -0,0 +1,3 @@ +.theme_LIGHT { + @import (less) '../../node_modules/@elastic/eui/dist/eui_theme_light.min.css'; +} diff --git a/redisinsight/ui/src/packages/redistimeseries-app/src/styles/styles.scss b/redisinsight/ui/src/packages/redistimeseries-app/src/styles/styles.less similarity index 96% rename from redisinsight/ui/src/packages/redistimeseries-app/src/styles/styles.scss rename to redisinsight/ui/src/packages/redistimeseries-app/src/styles/styles.less index d54b25254a..0a8cf724e2 100644 --- a/redisinsight/ui/src/packages/redistimeseries-app/src/styles/styles.scss +++ b/redisinsight/ui/src/packages/redistimeseries-app/src/styles/styles.less @@ -1,4 +1,6 @@ @charset "UTF-8"; +@import "_dark_theme.less"; +@import "_light_theme.less"; // disable plotly notifier div.plotly-notifier { @@ -125,7 +127,6 @@ div.plotly-notifier { outline: unset; } .euiButtonGroupButton.euiButtonGroupButton--text:not([class*=isDisabled]) { - color: var(--wbTextColor); background: black; border-radius: 1px; text-decoration: none; @@ -144,16 +145,6 @@ div.plotly-notifier { } } } - - .button-point { - background-color: black; - border: 1px solid #465282; - } - - .button-selected { - color: #8BA2FF; - background-color: #292F47; - } } .rangeslider-handle-min, .rangeslider-handle-max { @@ -304,19 +295,6 @@ div.plotly-notifier { } } } - - .new-button { - color: #343741; - } - - .button-point { - border: 1px solid #243DAC; - } - - .button-selected { - color: #3163D8; - background-color: #D7E3FA; - } } body { @@ -324,6 +302,11 @@ body { overflow: hidden; } +* { + margin: 0px; + padding: 0px; +} + * div, * span { font-family: 'Graphik', sans-serif !important; @@ -457,6 +440,7 @@ body { border-radius: 2px; cursor: pointer; height: 32px; + border: 1px solid hsla(0, 0%, 100%, 0.1); overflow: visible; display: flex; diff --git a/redisinsight/ui/src/packages/redistimeseries-app/yarn.lock b/redisinsight/ui/src/packages/redistimeseries-app/yarn.lock index 9796872c68..c0c28858de 100644 --- a/redisinsight/ui/src/packages/redistimeseries-app/yarn.lock +++ b/redisinsight/ui/src/packages/redistimeseries-app/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@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" + "@babel/code-frame@^7.0.0": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" @@ -9,6 +17,136 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/code-frame@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" + integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== + dependencies: + "@babel/highlight" "^7.25.7" + picocolors "^1.0.0" + +"@babel/compat-data@^7.22.9": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== + +"@babel/compat-data@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" + integrity sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw== + +"@babel/core@^7.11.6", "@babel/core@^7.23.9": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece" + integrity sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/helper-compilation-targets" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.7" + "@babel/helpers" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.12.3": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.23.0", "@babel/generator@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/generator@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" + integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== + dependencies: + "@babel/types" "^7.25.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-compilation-targets@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4" + integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A== + dependencies: + "@babel/compat-data" "^7.25.7" + "@babel/helper-validator-option" "^7.25.7" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-module-imports@^7.16.7": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" @@ -16,16 +154,131 @@ dependencies: "@babel/types" "^7.21.4" +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-imports@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472" + integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-module-transforms@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a" + integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ== + dependencies: + "@babel/helper-module-imports" "^7.25.7" + "@babel/helper-simple-access" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + "@babel/traverse" "^7.25.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-plugin-utils@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" + integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-simple-access@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0" + integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.19.4": version "7.19.4" 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.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-string-parser@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54" + integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== + "@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" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-identifier@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5" + integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helper-validator-option@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729" + integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ== + +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + +"@babel/helpers@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2" + integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA== + dependencies: + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -35,6 +288,135 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/highlight@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" + integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/parser@^7.23.9", "@babel/parser@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.7.tgz#99b927720f4ddbfeb8cd195a363ed4532f87c590" + integrity sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw== + dependencies: + "@babel/types" "^7.25.7" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@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== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz#5352d398d11ea5e7ef330c854dea1dae0bf18165" + integrity sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + +"@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" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.9.2": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" @@ -42,6 +424,62 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/template@^7.22.15", "@babel/template@^7.3.3": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/template@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" + integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" + integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@babel/types@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" @@ -51,6 +489,20 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.7.tgz#1b7725c1d3a59f328cb700ce704c46371e6eef9b" + integrity sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ== + dependencies: + "@babel/helper-string-parser" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + 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" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@elastic/eui@34.6.0": version "34.6.0" resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-34.6.0.tgz#a7188bc97d9c3120cd65e52ed423377872b604bd" @@ -183,130 +635,467 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== -"@esbuild/aix-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" - integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== - -"@esbuild/android-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" - integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== - -"@esbuild/android-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" - integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== - -"@esbuild/android-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" - integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== - -"@esbuild/darwin-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" - integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== - -"@esbuild/darwin-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" - integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== - -"@esbuild/freebsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" - integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== - -"@esbuild/freebsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" - integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== - -"@esbuild/linux-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" - integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== - -"@esbuild/linux-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" - integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== - -"@esbuild/linux-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" - integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== - -"@esbuild/linux-loong64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" - integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== - -"@esbuild/linux-mips64el@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" - integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== - -"@esbuild/linux-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" - integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== - -"@esbuild/linux-riscv64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" - integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== - -"@esbuild/linux-s390x@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" - integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== - -"@esbuild/linux-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" - integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== - -"@esbuild/netbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" - integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== - -"@esbuild/netbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" - integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== - -"@esbuild/openbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" - integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== - -"@esbuild/openbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" - integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== - -"@esbuild/sunos-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" - integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== - -"@esbuild/win32-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" - integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== - -"@esbuild/win32-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" - integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== - -"@esbuild/win32-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" - integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== +"@esbuild/android-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz#4aa8d8afcffb4458736ca9b32baa97d7cb5861ea" + integrity sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw== + +"@esbuild/android-arm@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.18.tgz#74a7e95af4ee212ebc9db9baa87c06a594f2a427" + integrity sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw== + +"@esbuild/android-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.18.tgz#1dcd13f201997c9fe0b204189d3a0da4eb4eb9b6" + integrity sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg== + +"@esbuild/darwin-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz#444f3b961d4da7a89eb9bd35cfa4415141537c2a" + integrity sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ== + +"@esbuild/darwin-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz#a6da308d0ac8a498c54d62e0b2bfb7119b22d315" + integrity sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A== + +"@esbuild/freebsd-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz#b83122bb468889399d0d63475d5aea8d6829c2c2" + integrity sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA== + +"@esbuild/freebsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz#af59e0e03fcf7f221b34d4c5ab14094862c9c864" + integrity sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew== + +"@esbuild/linux-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz#8551d72ba540c5bce4bab274a81c14ed01eafdcf" + integrity sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ== + +"@esbuild/linux-arm@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz#e09e76e526df4f665d4d2720d28ff87d15cdf639" + integrity sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg== + +"@esbuild/linux-ia32@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz#47878860ce4fe73a36fd8627f5647bcbbef38ba4" + integrity sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ== + +"@esbuild/linux-loong64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz#3f8fbf5267556fc387d20b2e708ce115de5c967a" + integrity sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ== + +"@esbuild/linux-mips64el@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz#9d896d8f3c75f6c226cbeb840127462e37738226" + integrity sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA== + +"@esbuild/linux-ppc64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz#3d9deb60b2d32c9985bdc3e3be090d30b7472783" + integrity sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ== + +"@esbuild/linux-riscv64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz#8a943cf13fd24ff7ed58aefb940ef178f93386bc" + integrity sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA== + +"@esbuild/linux-s390x@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz#66cb01f4a06423e5496facabdce4f7cae7cb80e5" + integrity sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw== + +"@esbuild/linux-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz#23c26050c6c5d1359c7b774823adc32b3883b6c9" + integrity sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA== + +"@esbuild/netbsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz#789a203d3115a52633ff6504f8cbf757f15e703b" + integrity sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg== + +"@esbuild/openbsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz#d7b998a30878f8da40617a10af423f56f12a5e90" + integrity sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA== + +"@esbuild/sunos-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz#ecad0736aa7dae07901ba273db9ef3d3e93df31f" + integrity sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg== + +"@esbuild/win32-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz#58dfc177da30acf956252d7c8ae9e54e424887c4" + integrity sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg== + +"@esbuild/win32-ia32@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz#340f6163172b5272b5ae60ec12c312485f69232b" + integrity sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw== + +"@esbuild/win32-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa" + integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@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.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@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 "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + 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.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.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.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.9": + 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" + +"@lezer/common@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049" + integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ== + +"@lezer/lr@^1.0.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.0.tgz#ed52a75dbbfbb0d1eb63710ea84c35ee647cb67e" + integrity sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg== + dependencies: + "@lezer/common" "^1.0.0" + +"@lmdb/lmdb-darwin-arm64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz#bc66fa43286b5c082e8fee0eacc17995806b6fbe" + integrity sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A== + +"@lmdb/lmdb-darwin-arm64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e" + integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw== + +"@lmdb/lmdb-darwin-x64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz#89d8390041bce6bab24a82a20392be22faf54ffc" + integrity sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA== + +"@lmdb/lmdb-darwin-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184" + integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug== + +"@lmdb/lmdb-linux-arm64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz#14fe4c96c2bb1285f93797f45915fa35ee047268" + integrity sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ== + +"@lmdb/lmdb-linux-arm64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e" + integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww== + +"@lmdb/lmdb-linux-arm@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz#05bde4573ab10cf21827339fe687148f2590cfa1" + integrity sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw== + +"@lmdb/lmdb-linux-arm@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d" + integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg== + +"@lmdb/lmdb-linux-x64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz#d2f85afd857d2c33d2caa5b057944574edafcfee" + integrity sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q== + +"@lmdb/lmdb-linux-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302" + integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ== + +"@lmdb/lmdb-win32-x64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5" + integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA== + +"@lmdb/lmdb-win32-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c" + integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ== "@mapbox/hast-util-table-cell-style@^0.2.0": version "0.2.0" @@ -315,110 +1104,1027 @@ dependencies: unist-util-visit "^1.4.1" -"@rollup/rollup-android-arm-eabi@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" - integrity sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q== - -"@rollup/rollup-android-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz#9d81ea54fc5650eb4ebbc0a7d84cee331bfa30ad" - integrity sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w== - -"@rollup/rollup-darwin-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz#29448cb1370cf678b50743d2e392be18470abc23" - integrity sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q== - -"@rollup/rollup-darwin-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz#0ca99741c3ed096700557a43bb03359450c7857d" - integrity sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA== - -"@rollup/rollup-freebsd-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz#233f8e4c2f54ad9b719cd9645887dcbd12b38003" - integrity sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ== - -"@rollup/rollup-freebsd-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz#dfba762a023063dc901610722995286df4a48360" - integrity sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw== - -"@rollup/rollup-linux-arm-gnueabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz#b9da54171726266c5ef4237f462a85b3c3cf6ac9" - integrity sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg== - -"@rollup/rollup-linux-arm-musleabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz#b9db69b3f85f5529eb992936d8f411ee6d04297b" - integrity sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug== - -"@rollup/rollup-linux-arm64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz#2550cf9bb4d47d917fd1ab4af756d7bbc3ee1528" - integrity sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw== - -"@rollup/rollup-linux-arm64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz#9d06b26d286c7dded6336961a2f83e48330e0c80" - integrity sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA== - -"@rollup/rollup-linux-loongarch64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz#e957bb8fee0c8021329a34ca8dfa825826ee0e2e" - integrity sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz#e8585075ddfb389222c5aada39ea62d6d2511ccc" - integrity sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw== - -"@rollup/rollup-linux-riscv64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz#7d0d40cee7946ccaa5a4e19a35c6925444696a9e" - integrity sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw== - -"@rollup/rollup-linux-s390x-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz#c2dcd8a4b08b2f2778eceb7a5a5dfde6240ebdea" - integrity sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA== - -"@rollup/rollup-linux-x64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz#183637d91456877cb83d0a0315eb4788573aa588" - integrity sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg== - -"@rollup/rollup-linux-x64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz#036a4c860662519f1f9453807547fd2a11d5bb01" - integrity sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow== - -"@rollup/rollup-win32-arm64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz#51cad812456e616bfe4db5238fb9c7497e042a52" - integrity sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw== - -"@rollup/rollup-win32-ia32-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz#661c8b3e4cd60f51deaa39d153aac4566e748e5e" - integrity sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw== - -"@rollup/rollup-win32-x64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" - integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== +"@mischnic/json-sourcemap@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" + integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/lr" "^1.0.0" + json5 "^2.2.1" + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" + integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== + +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" + integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== + +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" + integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== + +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" + integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== + +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" + integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== + +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" + integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== + +"@parcel/bundler-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.11.0.tgz#b682185ed93b1d977f4174779cbe426a4876cfc2" + integrity sha512-ZIs0865Lp871ZK83k5I9L4DeeE26muNMrHa7j8bvls6fKBJKAn8djrhfU4XOLyziU4aAOobcPwXU0+npWqs52g== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/graph" "3.1.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/cache@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.11.0.tgz#866f62ccf29207bd77bcc294bb4582e4986c4e75" + integrity sha512-RSSkGNjO00lJPyftzaC9eaNVs4jMjPSAm0VJNWQ9JSm2n4A9BzQtTFAt1vhJOzzW1UsQvvBge9DdfkB7a2gIOw== + dependencies: + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/utils" "2.11.0" + lmdb "2.8.5" + +"@parcel/cache@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.8.3.tgz#169e130cf59913c0ed9fadce1a450e68f710e16f" + integrity sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ== + dependencies: + "@parcel/fs" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/utils" "2.8.3" + lmdb "2.5.2" + +"@parcel/codeframe@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.11.0.tgz#58cf1173ea514255b1ad19960d5035773f50736b" + integrity sha512-YHs9g/i5af/sd/JrWAojU9YFbKffcJ3Tx2EJaK0ME8OJsye91UaI/3lxSUYLmJG9e4WLNJtqci8V5FBMz//ZPg== + dependencies: + chalk "^4.1.0" + +"@parcel/codeframe@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.8.3.tgz#84fb529ef70def7f5bc64f6c59b18d24826f5fcc" + integrity sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg== + dependencies: + chalk "^4.1.0" + +"@parcel/compressor-brotli@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-brotli/-/compressor-brotli-2.11.0.tgz#77265ec498a3b3e88215bc755ec4e5cfd1cd3670" + integrity sha512-5e8aKADVikIbyB1A11YGk4A/oZ7GSmAwDPN5QquXhIB2WQ9hAz59GBSdu4YIpj4s43+Hpvh1ndm7hRY7XjePmA== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/compressor-gzip@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-gzip/-/compressor-gzip-2.11.0.tgz#ba7a50f9ef763f00653d84572c38cb50af680634" + integrity sha512-Tqn8WtqRnGeIUte7z823PMx7EeTcCjzL3zhHiUObZ418+9bJjskwOMSW2cE1nrzt7fP5Cq/cqlUC731zwD4RoA== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/compressor-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.11.0.tgz#44ec3484d1276ad5dc37bc59ea61d6176357e71a" + integrity sha512-RArhBPRTCfz77soX2IECH09NUd76UBWujXiPRcXGPIHK+C3L1cRuzsNcA39QeSb3thz3b99JcozMJ1nkC2Bsgw== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/config-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.11.0.tgz#78c94ba1c7c19615305fddc8067425c1816b7cb2" + integrity sha512-1e2+qcZkm5/0f4eI20p/DemcYiSxq9d/eyjpTXA7PulJaHbL1wonwUAuy3mvnAvDnLOJmAk/obDVgX1ZfxMGtg== + dependencies: + "@parcel/bundler-default" "2.11.0" + "@parcel/compressor-raw" "2.11.0" + "@parcel/namer-default" "2.11.0" + "@parcel/optimizer-css" "2.11.0" + "@parcel/optimizer-htmlnano" "2.11.0" + "@parcel/optimizer-image" "2.11.0" + "@parcel/optimizer-svgo" "2.11.0" + "@parcel/optimizer-swc" "2.11.0" + "@parcel/packager-css" "2.11.0" + "@parcel/packager-html" "2.11.0" + "@parcel/packager-js" "2.11.0" + "@parcel/packager-raw" "2.11.0" + "@parcel/packager-svg" "2.11.0" + "@parcel/packager-wasm" "2.11.0" + "@parcel/reporter-dev-server" "2.11.0" + "@parcel/resolver-default" "2.11.0" + "@parcel/runtime-browser-hmr" "2.11.0" + "@parcel/runtime-js" "2.11.0" + "@parcel/runtime-react-refresh" "2.11.0" + "@parcel/runtime-service-worker" "2.11.0" + "@parcel/transformer-babel" "2.11.0" + "@parcel/transformer-css" "2.11.0" + "@parcel/transformer-html" "2.11.0" + "@parcel/transformer-image" "2.11.0" + "@parcel/transformer-js" "2.11.0" + "@parcel/transformer-json" "2.11.0" + "@parcel/transformer-postcss" "2.11.0" + "@parcel/transformer-posthtml" "2.11.0" + "@parcel/transformer-raw" "2.11.0" + "@parcel/transformer-react-refresh-wrap" "2.11.0" + "@parcel/transformer-svg" "2.11.0" + +"@parcel/core@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.11.0.tgz#5bbe8729e042a216c130864fb9063a26f9455b6f" + integrity sha512-Npe0S6hVaqWEwRL+HI7gtOYOaoE5bJQZTgUDhsDoppWbau51jOlRYOZTXuvRK/jxXnze4/S1sdM24xBYAQ5qkw== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/cache" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/graph" "3.1.0" + "@parcel/logger" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/profiler" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + abortcontroller-polyfill "^1.1.9" + base-x "^3.0.8" + browserslist "^4.6.6" + clone "^2.1.1" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" + json5 "^2.2.0" + msgpackr "^1.9.9" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/diagnostic@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.11.0.tgz#d16dd6c6d5be20e7a61ce2e43b413bfb4172d0b6" + integrity sha512-4dJmOXVL5YGGQRRsQosQbSRONBcboB71mSwaeaEgz3pPdq9QXVPLACkGe/jTXSqa3OnAHu3g5vQLpE1g5xqBqw== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + nullthrows "^1.1.1" + +"@parcel/diagnostic@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.8.3.tgz#d560276d5d2804b48beafa1feaf3fc6b2ac5e39d" + integrity sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + nullthrows "^1.1.1" + +"@parcel/events@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.11.0.tgz#b0b5769f6afe0932eeae12286f2e21bac3c01cb1" + integrity sha512-K6SOjOrQsz1GdNl2qKBktq7KJ3Q3yxK8WXdmQYo10wG39dr051xtMb38aqieTp4eVhL8Yaq2iJgGkdr11fuBnA== + +"@parcel/events@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.8.3.tgz#205f8d874e6ecc2cbdb941bf8d54bae669e571af" + integrity sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w== + +"@parcel/fs-search@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.8.3.tgz#1c7d812c110b808758f44c56e61dfffdb09e9451" + integrity sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ== + dependencies: + detect-libc "^1.0.3" + +"@parcel/fs@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.11.0.tgz#aecd502bbdf0fce3366b48a4728f5b986a146241" + integrity sha512-zWckdnnovdrgdFX4QYuQV4bbKCsh6IYCkmwaB4yp47rhw1MP0lkBINLt4yFPHBxWXOpElCfxjL+z69c9xJQRBQ== + dependencies: + "@parcel/rust" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/watcher" "^2.0.7" + "@parcel/workers" "2.11.0" + +"@parcel/fs@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.8.3.tgz#80536afe877fc8a2bd26be5576b9ba27bb4c5754" + integrity sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ== + dependencies: + "@parcel/fs-search" "2.8.3" + "@parcel/types" "2.8.3" + "@parcel/utils" "2.8.3" + "@parcel/watcher" "^2.0.7" + "@parcel/workers" "2.8.3" + +"@parcel/graph@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.1.0.tgz#1cac1e0af72a31d6327c752358886bc0b3193b3f" + integrity sha512-d1dTW5C7A52HgDtoXlyvlET1ypSlmIxSIZOJ1xp3R9L9hgo3h1u3jHNyaoTe/WPkGVe2QnFxh0h+UibVJhu9vg== + dependencies: + nullthrows "^1.1.1" + +"@parcel/hash@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.8.3.tgz#bc2499a27395169616cad2a99e19e69b9098f6e9" + integrity sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw== + dependencies: + detect-libc "^1.0.3" + xxhash-wasm "^0.4.2" + +"@parcel/logger@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.11.0.tgz#19882e6687899f2085ce23f61ff4d9d588ca5b8f" + integrity sha512-HtMEdCq3LKnvv4T2CIskcqlf2gpBvHMm3pkeUFB/hc/7hW/hE1k6/HA2VOQvc0tBsaMpmEx7PCrfrH56usQSyA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + +"@parcel/logger@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.8.3.tgz#e14e4debafb3ca9e87c07c06780f9afc38b2712c" + integrity sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/events" "2.8.3" + +"@parcel/markdown-ansi@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.11.0.tgz#35ff20abcc31eafbd395532a9cee3dd6570fa012" + integrity sha512-YA60EWbXi6cLOIzcwRC2wijotPauOGQbUi0vSbu0O6/mjQ68kWCMGz0hwZjDRQcPypQVJEIvTgMymLbvumxwhg== + dependencies: + chalk "^4.1.0" + +"@parcel/markdown-ansi@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.8.3.tgz#1337d421bb1133ad178f386a8e1b746631bba4a1" + integrity sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ== + dependencies: + chalk "^4.1.0" + +"@parcel/namer-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.11.0.tgz#72ae58dd3f83eacc7ca0b4d3b80a8f87a63fb320" + integrity sha512-DEwBSKSClg4DA2xAWimYkw9bFi7MFb9TdT7/TYZStMTsfYHPWOyyjGR7aVr3Ra4wNb+XX6g4rR41yp3HD6KO7A== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/node-resolver-core@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.2.0.tgz#f8e113bffc10b1fd4aa9bd551fc033bb3e8e93b7" + integrity sha512-XJRSxCkNbGFWjfmwFdcQZ/qlzWZd35qLtvLz2va8euGL7M5OMEQOv7dsvEhl0R+CC2zcnfFzZwxk78q6ezs8AQ== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/optimizer-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.11.0.tgz#3908c2e9ee0680c82c43531ce457fd230a38319e" + integrity sha512-bV97PRxshHV3dMwOpLRgcP1QNhrVWh6VVDfm2gmWULpvsjoykcPS6vrCFksY5CpQsSvNHqJBzQjWS8FubUI76w== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/optimizer-htmlnano@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.11.0.tgz#2d62e5a0f15a58feeee67cdd23bf54da528d0207" + integrity sha512-c20pz4EFF5DNFmqYgptlIj49eT6xjGLkDTdHH3RRzxKovuSXWfYSPs3GED3ZsjVuQyjNQif+/MAk9547F7hrdQ== + dependencies: + "@parcel/plugin" "2.11.0" + htmlnano "^2.0.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + svgo "^2.4.0" + +"@parcel/optimizer-image@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.11.0.tgz#7126b18c2e4cbacf9f63481f46e7859329489a66" + integrity sha512-jCaJww5QFG2GuNzYW8nlSW+Ea+Cv47TRnOPJNquFIajgfTLJ5ddsWbaNal0GQsL8yNiCBKWd1AV4W0RH9tG0Jg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + +"@parcel/optimizer-svgo@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.11.0.tgz#e9ecc314d2ffb7584e08ac507f2165c5a0db0445" + integrity sha512-TQpvfBhjV2IsuFHXUolbDS6XWB3DDR2rYTlqlA8LMmuOY7jQd9Bnkl4JnapzWm/bRuzRlzdGjjVCPGL8iShFvA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + svgo "^2.4.0" + +"@parcel/optimizer-swc@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.11.0.tgz#5391873164fe707401414737fff23b4e4311977b" + integrity sha512-ftf42F3JyZxJb6nnLlgNGyNQ273YOla4dFGH/tWC8iTwObHUpWe7cMbCGcrSJBvAlsLkZfLpFNAXFxUgxdKyHQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + "@swc/core" "^1.3.36" + nullthrows "^1.1.1" + +"@parcel/package-manager@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.11.0.tgz#4cef6da831563829e584c2fabb586cb6b19fafcb" + integrity sha512-QzdsrUYlAwIzb8by7WJjqYnbR1MoMKWbtE1MXUeYsZbFusV8B6pOH+lwqNJKS/BFtddZMRPYFueZS2N2fwzjig== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/node-resolver-core" "3.2.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + semver "^7.5.2" + +"@parcel/package-manager@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.8.3.tgz#ddd0d62feae3cf0fb6cc0537791b3a16296ad458" + integrity sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/fs" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/types" "2.8.3" + "@parcel/utils" "2.8.3" + "@parcel/workers" "2.8.3" + semver "^5.7.1" + +"@parcel/packager-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.11.0.tgz#1fad7a0448a516fd9686ab7d6796c22715fbd377" + integrity sha512-AyIxsp4eL8c22vp2oO2hSRnr3hSVNkARNZc9DG6uXxCc2Is5tUEX0I4PwxWnAx0EI44l+3zX/o414zT8yV9wwQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/packager-html@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.11.0.tgz#b30e611cf15f55ab4efbf5d101add4ca80449f2f" + integrity sha512-ho5AQ70naTV8IqkKIbKtK+jsXQ5TJfFgtBvmJlyB3YydRMbIc+3g4G0xgIvf15V4uCMw9Md0Sv1W65nQXHPQoA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + +"@parcel/packager-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.11.0.tgz#a591464e729698537c9f115b4a1f0b779a75127b" + integrity sha512-SxjCsd0xQfg5H73YtVJj9VOpr9s0rwMsSoeykjkatbkEla9NsZajsUkd/bfYf+/0WvEKOrB8oUBo15HkGOgKug== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + globals "^13.2.0" + nullthrows "^1.1.1" + +"@parcel/packager-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.11.0.tgz#638749e6f69968f9ffc82c7f60a7332b48ba9777" + integrity sha512-2/0JQ8DZrz7cVNXwD6OYoUUtSSnlr4dsz8ZkpFDKsBJhvMHtC78Sq+1EDixDGOMiUcalSEjNsoHtkpq9uNh+Xw== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/packager-svg@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.11.0.tgz#413fe1db971d1d48b6dea8ecf89396ca7ab07bc2" + integrity sha512-2wQBkzLwcaWFGWz8TP+bgsXgiueWPzrjKsWugWdDfq0FbXh8XVeR/599qnus3RFHZy4cH6L6yq/7zxcljtxK8A== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + posthtml "^0.16.4" + +"@parcel/packager-wasm@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.11.0.tgz#53ffc6f4e8452f5925dc9577425effbadb322421" + integrity sha512-tTy4EbDXeeiZ0oB7L2FWaHSD1mbmYZP6R5HXqkvc5dECGUKPU5Jz6ek2C5AM+HfQdQLKXPQ/Xw3eJnI/AmctVg== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/plugin@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.11.0.tgz#f9e076b67784ef4e5683c6d6877875076b9cdf49" + integrity sha512-9npuKBlhnPn7oeUpLJGecceg16GkXbvzbr6MNSZiHhkx3IBeITHQXlZnp2zAjUOFreNsYOfifwEF2S4KsARfBQ== + dependencies: + "@parcel/types" "2.11.0" + +"@parcel/plugin@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.8.3.tgz#7bb30a5775eaa6473c27f002a0a3ee7308d6d669" + integrity sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw== + dependencies: + "@parcel/types" "2.8.3" + +"@parcel/profiler@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.11.0.tgz#5c8a353c35d1c1cb7af3d53534d9003215bb46b2" + integrity sha512-s10SS09prOdwnaAcjK8M5zO8o+zPJJW5oOqXPNdf6KH4NGD/ue7iOk2xM8QLw6ulSwxE7NDt++lyfW3AXgCZwg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + chrome-trace-event "^1.0.2" + +"@parcel/reporter-cli@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.11.0.tgz#727ee271ee5af002d137fa89ca25ccdca0f797fe" + integrity sha512-hY0iO0f+LifgJHDUIjGQJnxLFSkk2jlbfy+kIaft5oI3/IM+UljecfGO+14XH8mYlqRXXPsT09TJe8ZKQzp4ZQ== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + chalk "^4.1.0" + cli-progress "^3.12.0" + term-size "^2.2.1" + +"@parcel/reporter-dev-server@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.11.0.tgz#3d94b50736ff98de6c94b6051ac1a0103c52d881" + integrity sha512-T4ue1+oLFNdcd9maw8QWQuxzOS2kX2jOrSvYKwYd9oGnqiAr1rpiHYYKJhHng+PF5ybwWkj8dUJfGh2NoQysJA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + +"@parcel/reporter-tracer@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.11.0.tgz#01c77ad1e450fb49f4bf502ba03dc8fe20347459" + integrity sha512-33q4ftO26OPWHkUpEm0bzzSjW2kHEh6q/JFePwf8W6APTQVruj4mV46+Fh6rxX42ixs92K/QoiE0gYgWZQVDHA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + chrome-trace-event "^1.0.3" + nullthrows "^1.1.1" + +"@parcel/resolver-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.11.0.tgz#6b5ed85523ce9bbd46f4e9fe44899e12129f636d" + integrity sha512-suZNN2lE5W48LPTwAbG7gnj1IeubkCVEm0XspWXcXUtCzglimNJ8PVVBGx171o5CqDpdbGF3AqHjG9N3uOwXag== + dependencies: + "@parcel/node-resolver-core" "3.2.0" + "@parcel/plugin" "2.11.0" + +"@parcel/runtime-browser-hmr@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.11.0.tgz#a45efcefa6d55e415d24aeea406ce853c23d2798" + integrity sha512-uVwNBtoLMrlPHLvRS05BVhLseduMOpZT36yiIjS0YSBJcC6/otI9AY7ZiDPYmrB5xTqM0R+D554JhPaJHCuocw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + +"@parcel/runtime-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.11.0.tgz#5ceaa82030133db13520d8c79a36f2d872f78514" + integrity sha512-fH3nJoexINz7s4cDzp0Vjsx0k1pMYSa5ch38LbbNqCKTermy0pS0zZuvgfLfHFFP+AMRpFQenrF7h7N3bgDmHw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/runtime-react-refresh@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.11.0.tgz#ea610cc8e8d9c726ad8a13493d80da8a71200d98" + integrity sha512-Kfnc7gLjhoephLMnjABrkIkzVfzPrpJlxiJFIleY2Fm57YhmCfKsEYxm3lHOutNaYl1VArW0LKClPH/VHG9vfQ== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + react-error-overlay "6.0.9" + react-refresh "^0.9.0" + +"@parcel/runtime-service-worker@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.11.0.tgz#1eede22df67178a27f469591be836a7fe673c5ff" + integrity sha512-c8MaSpSbXIKuN5sA/g4UsrsH1BtBZ6Em+eSxt9AYbdPtWrW+qwCioNVZj9lugBRUzDMjVfJz0yK59nS42hABvw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/rust@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.11.0.tgz#8abc8d0b716568df240228f81026546d0d276b5a" + integrity sha512-UkLWdHOD8Md2YmJDPsqd3yIs9chhdl/ATfV/B/xdPKGmqtNouYpDCRlq+WxMt3mLoYgHEg9UwrWLTebo2rr2iQ== + +"@parcel/source-map@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" + integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== + dependencies: + detect-libc "^1.0.3" + +"@parcel/transformer-babel@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.11.0.tgz#3d751ec37d4aa96155494f1f3ff39442d17eeb7a" + integrity sha512-WKGblnp7r426VG+cpeQzc6dj/30EoUaYwyl4OEaigQSJizyuPWTBWTz6FUw+ih1/sg37h+D1BIh9C2FsVzpzbw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + json5 "^2.2.0" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/transformer-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.11.0.tgz#251b837960f7c7f1eed0992551afa68fac9d45f6" + integrity sha512-nFmBulF/ErNoafO87JbVrBavjBMNwE/kahbCRVxc2Mvlphz4F4lBW4eDRS5l4xBqFJaNkHr9R55ehLBBilF4Jw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/transformer-html@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.11.0.tgz#5b30b4e0b7ab06c838d776defabb2d911040c178" + integrity sha512-90vp7mbvvfqPr9XIINpMcELtywj56f1bxfOkLQgWU1bm22H0FT3i5dqdac++2My0IGDvMwhAEjQfbn4pA579NQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + srcset "4" + +"@parcel/transformer-image@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.11.0.tgz#7364f4da6e8768fbf29870e5d57d771ecc7b3556" + integrity sha512-QiZj18UHf3lVFsi65Vz8YbS3ydx9Pe9x8ktMxE1oh9qpznN8lD7gE/Z9DxuTZB84EZ9pKytKwcv5WGXP25xIFg== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/transformer-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.11.0.tgz#1067d929a5c7f577b3c40068d5f6cb6428398771" + integrity sha512-G1sv0n8/fJqHqwUs0iVnVdmRY0Kh8kWaDkuWcU/GJBHMGhUnLXKdNwxX2Av9UdBL14bU1nTINfr9qOfnQotXWg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + "@swc/helpers" "^0.5.0" + browserslist "^4.6.6" + nullthrows "^1.1.1" + regenerator-runtime "^0.13.7" + semver "^7.5.2" + +"@parcel/transformer-json@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.11.0.tgz#0ca1ca76a24ad3bf6941bf99ba7af77e845cd653" + integrity sha512-Wt/wgSBaRWmPL4gpvjkV0bCBRxFOtsuLNzsm8vYA5poxTFhuLY+AoyQ8S2+xXU4VxwBfdppfIr2Ny3SwGs8xbQ== + dependencies: + "@parcel/plugin" "2.11.0" + json5 "^2.2.0" + +"@parcel/transformer-less@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-less/-/transformer-less-2.11.0.tgz#6a2decfa92fc0dace6a703ccb4c244d26cc152e5" + integrity sha512-6mPGUFYp70dowY5LUz6Q03xxMhj2zwjRmmPWNPtu730M0wPFZFjq+ROPLDWQMMQHgiW5A8DiXK14H5LPabutRA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + less "^4.1.1" + +"@parcel/transformer-postcss@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.11.0.tgz#df5e776a7383400a34c54a64a0bd8f998b656316" + integrity sha512-Ugy8XHBaUptGotsvwzq7gPCvkCopTIqqZ0JZ40Jmy9slGms8wnx06pNHA1Be/RcJwkJ2TbSu+7ncZdgmP5x5GQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + clone "^2.1.1" + nullthrows "^1.1.1" + postcss-value-parser "^4.2.0" + semver "^7.5.2" + +"@parcel/transformer-posthtml@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.11.0.tgz#dd28bfbc6f5d04e2e452f63ee7d9e02a62bb72e2" + integrity sha512-dMK4p1RRAoIJEjK/Wz9GOLqwHqdD/VQDhMPk+6sUKp5zf2MhSohUstpp5gKsSZivCM3PS2f8k9rgroacJ/ReuA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + +"@parcel/transformer-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.11.0.tgz#76e2d83e96b46c2b243d7d43a45a18fe86dd5986" + integrity sha512-2ltp3TgS+cxEqSM1vk5gDtJrYx4KMuRRtbSgSvkdldyOgPhflnLU3/HRz72hXSNGqYOV0/JN0+ocsfPnqR00ug== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/transformer-react-refresh-wrap@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.11.0.tgz#7ce085b7c29cf93e84bdfb4b8b0217f448974ace" + integrity sha512-6pY0CdIgIpXC6XpsDWizf+zLgiuEsJ106HjWLwF7/R72BrvDhLPZ6jRu4UTrnd6bM89KahPw9fZZzjKoA5Efcw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + react-refresh "^0.9.0" + +"@parcel/transformer-sass@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/transformer-sass/-/transformer-sass-2.8.3.tgz#d3a0388e77c1e6279b488ccd0abf612d3a0897ff" + integrity sha512-ak196rjvXdsBOGi5aTkBEKv6i4LKQgOkHuaKEjeT8g2a3CU6Z36J+j2GbZzsznfws/hH+CRTf8bAsbkxtKlkjQ== + dependencies: + "@parcel/plugin" "2.8.3" + "@parcel/source-map" "^2.1.1" + sass "^1.38.0" + +"@parcel/transformer-svg@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.11.0.tgz#3e0f2d623ad536ef527d543fd599baf3c0089345" + integrity sha512-GrTNi04OoQSXsyrB7FqQPeYREscEXFhIBPkyQ0q7WDG/yYynWljiA0kwITCtMjPfv2EDVks292dvM3EcnERRIA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + +"@parcel/types@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.11.0.tgz#c3e96a305d7d95ac3861611915c55e250f582484" + integrity sha512-lN5XlfV9b1s2rli8q1LqsLtu+D4ZwNI3sKmNcL/3tohSfQcF2EgF+MaiANGo9VzXOzoWFHt4dqWjO4OcdyC5tg== + dependencies: + "@parcel/cache" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/workers" "2.11.0" + utility-types "^3.10.0" + +"@parcel/types@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.8.3.tgz#3306bc5391b6913bd619914894b8cd84a24b30fa" + integrity sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw== + dependencies: + "@parcel/cache" "2.8.3" + "@parcel/diagnostic" "2.8.3" + "@parcel/fs" "2.8.3" + "@parcel/package-manager" "2.8.3" + "@parcel/source-map" "^2.1.1" + "@parcel/workers" "2.8.3" + utility-types "^3.10.0" + +"@parcel/utils@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.11.0.tgz#d99c8367ba9fc9d99adf8a864ee0491f5ac2df40" + integrity sha512-AcL70cXlIyE7eQdvjQbYxegN5l+skqvlJllxTWg4YkIZe9p8Gmv74jLAeLWh5F+IGl5WRn0TSy9JhNJjIMQGwQ== + dependencies: + "@parcel/codeframe" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/markdown-ansi" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + chalk "^4.1.0" + nullthrows "^1.1.1" + +"@parcel/utils@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.8.3.tgz#0d56c9e8e22c119590a5e044a0e01031965da40e" + integrity sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA== + dependencies: + "@parcel/codeframe" "2.8.3" + "@parcel/diagnostic" "2.8.3" + "@parcel/hash" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/markdown-ansi" "2.8.3" + "@parcel/source-map" "^2.1.1" + chalk "^4.1.0" + +"@parcel/watcher-android-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz#9c93763794153e4f76920994a423b6ea3257059d" + integrity sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA== + +"@parcel/watcher-darwin-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz#2c79c2abde16aa24cac67e555b60802fd13fe210" + integrity sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA== + +"@parcel/watcher-darwin-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz#23d82f198c5d033f047467c68d7c335f3df49b46" + integrity sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q== + +"@parcel/watcher-freebsd-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz#7310cc86abc27dacd57624bcdba1f0ba092e76df" + integrity sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA== + +"@parcel/watcher-linux-arm-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz#c31b76e695027eeb1078d3d6f1d641d0b900c335" + integrity sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ== + +"@parcel/watcher-linux-arm64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz#56e09b86e9d8a4096f606be118b588da6e965080" + integrity sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg== + +"@parcel/watcher-linux-arm64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz#27ffd5ca5f510ecd638f9ad22e2e813049db54e7" + integrity sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng== + +"@parcel/watcher-linux-x64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz#44cbbb1e5884a1ca900655f47a0775218318f934" + integrity sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ== + +"@parcel/watcher-linux-x64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz#4c33993618c8d5113722852806239cb80360494b" + integrity sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA== + +"@parcel/watcher-win32-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz#2a172fd2fda95fe5389298ca3e70b5a96316162a" + integrity sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg== + +"@parcel/watcher-win32-ia32@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz#279225b2ebe1fadd3c5137c9b2365ad422656904" + integrity sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA== + +"@parcel/watcher-win32-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz#93e0bd0ad1bda2c9a688764b9b30b71dc5b72a71" + integrity sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA== + +"@parcel/watcher@^2.0.7": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.0.tgz#2d3c4ef8832a5cdfdbb76b914f022489933e664f" + integrity sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.0" + "@parcel/watcher-darwin-arm64" "2.4.0" + "@parcel/watcher-darwin-x64" "2.4.0" + "@parcel/watcher-freebsd-x64" "2.4.0" + "@parcel/watcher-linux-arm-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-musl" "2.4.0" + "@parcel/watcher-linux-x64-glibc" "2.4.0" + "@parcel/watcher-linux-x64-musl" "2.4.0" + "@parcel/watcher-win32-arm64" "2.4.0" + "@parcel/watcher-win32-ia32" "2.4.0" + "@parcel/watcher-win32-x64" "2.4.0" + +"@parcel/workers@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.11.0.tgz#a818e51ad7f79b0c5b450502331dda851e8e905f" + integrity sha512-wjybqdSy6Nk0N9iBGsFcp7739W2zvx0WGfVxPVShqhz46pIkPOiFF/iSn+kFu5EmMKTRWeUif42+a6rRZ7pCnQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/profiler" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/workers@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.8.3.tgz#255450ccf4db234082407e4ddda5fd575f08c235" + integrity sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/types" "2.8.3" + "@parcel/utils" "2.8.3" + chrome-trace-event "^1.0.2" + nullthrows "^1.1.1" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + 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" + +"@swc/core-darwin-arm64@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.1.tgz#aa66ec80d9c43586888a79b2f80264aa2a96fdf3" + integrity sha512-ePyfx0348UbR4DOAW24TedeJbafnzha8liXFGuQ4bdXtEVXhLfPngprrxKrAddCuv42F9aTxydlF6+adD3FBhA== + +"@swc/core-darwin-x64@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.4.1.tgz#de4037efab46f2d17609b2fea0d0e05ac9f076b5" + integrity sha512-eLf4JSe6VkCMdDowjM8XNC5rO+BrgfbluEzAVtKR8L2HacNYukieumN7EzpYCi0uF1BYwu1ku6tLyG2r0VcGxA== + +"@swc/core-linux-arm-gnueabihf@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.1.tgz#20cf68d591161e84c0b6158af9b749b5ead78800" + integrity sha512-K8VtTLWMw+rkN/jDC9o/Q9SMmzdiHwYo2CfgkwVT29NsGccwmNhCQx6XoYiPKyKGIFKt4tdQnJHKUFzxUqQVtQ== + +"@swc/core-linux-arm64-gnu@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.1.tgz#44dc497e127c0f5651ca74f2e4977743bde3f8e7" + integrity sha512-0e8p4g0Bfkt8lkiWgcdiENH3RzkcqKtpRXIVNGOmVc0OBkvc2tpm2WTx/eoCnes2HpTT4CTtR3Zljj4knQ4Fvw== + +"@swc/core-linux-arm64-musl@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.1.tgz#0e21470421531e560ce0b80bde87ba08e19207fd" + integrity sha512-b/vWGQo2n7lZVUnSQ7NBq3Qrj85GrAPPiRbpqaIGwOytiFSk8VULFihbEUwDe0rXgY4LDm8z8wkgADZcLnmdUA== + +"@swc/core-linux-x64-gnu@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.1.tgz#b008be683e24aa4a7b13123b6dd70580e87b4167" + integrity sha512-AFMQlvkKEdNi1Vk2GFTxxJzbICttBsOQaXa98kFTeWTnFFIyiIj2w7Sk8XRTEJ/AjF8ia8JPKb1zddBWr9+bEQ== + +"@swc/core-linux-x64-musl@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.1.tgz#288b5742578beb9a0c94b5e885634e61eb797583" + integrity sha512-QX2MxIECX1gfvUVZY+jk528/oFkS9MAl76e3ZRvG2KC/aKlCQL0KSzcTSm13mOxkDKS30EaGRDRQWNukGpMeRg== + +"@swc/core-win32-arm64-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.1.tgz#e40a4273aab1509d85e2a561a818f6e705718305" + integrity sha512-OklkJYXXI/tntD2zaY8i3iZldpyDw5q+NAP3k9OlQ7wXXf37djRsHLV0NW4+ZNHBjE9xp2RsXJ0jlOJhfgGoFA== + +"@swc/core-win32-ia32-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.1.tgz#726731b618d0f99c5cdc8bab004df3dae14658a9" + integrity sha512-MBuc3/QfKX9FnLOU7iGN+6yHRTQaPQ9WskiC8s8JFiKQ+7I2p25tay2RplR9dIEEGgVAu6L7auv96LbNTh+FaA== + +"@swc/core-win32-x64-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.1.tgz#71382cfd60811b5fecdf1ece458bd21992a37ae5" + integrity sha512-lu4h4wFBb/bOK6N2MuZwg7TrEpwYXgpQf5R7ObNSXL65BwZ9BG8XRzD+dLJmALu8l5N08rP/TrpoKRoGT4WSxw== + +"@swc/core@^1.3.36": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.4.1.tgz#e6bee0fa5d0c93957b274eaa6186bbbad43f2063" + integrity sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ== + dependencies: + "@swc/counter" "^0.1.2" + "@swc/types" "^0.1.5" + optionalDependencies: + "@swc/core-darwin-arm64" "1.4.1" + "@swc/core-darwin-x64" "1.4.1" + "@swc/core-linux-arm-gnueabihf" "1.4.1" + "@swc/core-linux-arm64-gnu" "1.4.1" + "@swc/core-linux-arm64-musl" "1.4.1" + "@swc/core-linux-x64-gnu" "1.4.1" + "@swc/core-linux-x64-musl" "1.4.1" + "@swc/core-win32-arm64-msvc" "1.4.1" + "@swc/core-win32-ia32-msvc" "1.4.1" + "@swc/core-win32-x64-msvc" "1.4.1" + +"@swc/counter@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.6.tgz#d16d8566b7aea2bef90d059757e2d77f48224160" + integrity sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA== + dependencies: + tslib "^2.4.0" + +"@swc/types@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" + integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/babel__core@^7.1.14": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== + dependencies: + "@babel/types" "^7.20.7" "@types/chroma-js@^2.0.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.4.0.tgz#476a16ae848c77478079d6749236fdb98837b92c" integrity sha512-JklMxityrwjBTjGY2anH8JaTx3yjRU3/sEHSblLH1ba5lqcSh1LnImXJZO5peJfXyqKYWjHTGy4s5Wz++hARrw== -"@types/estree@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/file-saver@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.5.tgz#9ee342a5d1314bb0928375424a2f162f97c310c7" + integrity sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ== + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" "@types/hast@^2.0.0": version "2.3.4" @@ -435,6 +2141,38 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-coverage@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^27.4.1": + version "27.5.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" + integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== + dependencies: + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" + "@types/lodash@^4.14.160": version "4.14.194" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" @@ -447,6 +2185,11 @@ dependencies: "@types/unist" "*" +"@types/node@*": + version "18.16.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.1.tgz#5db121e9c5352925bb1f1b892c4ae620e3526799" + integrity sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA== + "@types/numeral@^0.0.28": version "0.0.28" resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.28.tgz#e43928f0bda10b169b6f7ecf99e3ddf836b8ebe4" @@ -462,6 +2205,18 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== +"@types/plotly.js-dist-min@^2.3.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/plotly.js-dist-min/-/plotly.js-dist-min-2.3.1.tgz#514745f5ddcfd25201b2c8d65fbc4f0497bd1d96" + integrity sha512-9+rTvlyKDclIB9twal6ou6unUN6iTATLcRvakoFYaHGPnVRNe06LbUGOcgD8O+sddBFz3y2kS2hTKbUPGeVsHA== + dependencies: + "@types/plotly.js" "*" + +"@types/plotly.js@*": + version "2.12.18" + resolved "https://registry.yarnpkg.com/@types/plotly.js/-/plotly.js-2.12.18.tgz#7a231ce72a73fafe4842096b8c99d10a41b60962" + integrity sha512-ff+CIEWnqZNjZqHtQZvkEAVuLs9fkm1f54QnPVmgoET7wMHdSqUka2hasVN4e5yfHD05YwGjsAtCseewJh/BMw== + "@types/prismjs@*": version "1.26.0" resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.0.tgz#a1c3809b0ad61c62cac6d4e0c56d610c910b7654" @@ -536,6 +2291,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== +"@types/stack-utils@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== + "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" @@ -546,7 +2306,36 @@ resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== dependencies: - vfile-message "*" + vfile-message "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +abortcontroller-polyfill@^1.1.9: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" @@ -555,6 +2344,38 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-hidden@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" @@ -562,11 +2383,50 @@ aria-hidden@^1.2.2: dependencies: tslib "^2.0.0" +async@^3.2.3: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + attr-accept@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + 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-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -576,34 +2436,171 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + brace@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" integrity sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q== -braces@^3.0.3: +braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: fill-range "^7.1.1" +browserslist@^4.21.9: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + +browserslist@^4.24.0: + version "4.24.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== + dependencies: + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + +browserslist@^4.6.6: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001541: + version "1.0.30001553" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz#e64e7dc8fd4885cd246bb476471420beb5e474b5" + integrity sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A== + +caniuse-lite@^1.0.30001587: + version "1.0.30001588" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" + integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== + +caniuse-lite@^1.0.30001663: + version "1.0.30001667" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz#99fc5ea0d9c6e96897a104a8352604378377f949" + integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw== + ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -612,6 +2609,19 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + character-entities-html4@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" @@ -632,21 +2642,82 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +"chokidar@>=3.0.0 <4.0.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chroma-js@^2.1.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.4.2.tgz#dffc214ed0c11fa8eefca2c36651d8e57cbfb2b0" integrity sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A== +chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + classnames@^2.2.6, classnames@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -654,21 +2725,70 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +commander@^7.0.0, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^7.6.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== + dependencies: + chalk "^4.1.0" + date-fns "^2.29.1" + lodash "^4.17.21" + rxjs "^7.0.0" + shell-quote "^1.7.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^17.3.1" + convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "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== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -680,7 +2800,37 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cross-spawn@^7.0.5: +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.5: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -696,16 +2846,93 @@ css-box-model@^1.2.0: dependencies: tiny-invariant "^1.0.6" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + csstype@^3.0.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -date-fns@^2.28.0: +date-fns@^2.28.0, date-fns@^2.29.1: version "2.29.3" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^4.3.1: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +dedent@^1.0.0: + version "1.5.3" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-libc@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + detect-node-es@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" @@ -716,11 +2943,110 @@ diff-match-patch@^1.0.4: resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== + +ejs@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.535: + version "1.4.565" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.565.tgz#205f3746a759ec3c43bce98b9eef5445f2721ea9" + integrity sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg== + +electron-to-chromium@^1.4.668: + version "1.4.673" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz#1f077d9a095761804aec7ec6346c3f4b69b56534" + integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw== + +electron-to-chromium@^1.5.28: + version "1.5.35" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.35.tgz#1d38d386186c72b1fa6e74c3a7de5f888b503100" + integrity sha512-hOSRInrIDm0Brzp4IHW2F/VM+638qOL2CzE0DgpnGzKW27C95IqqeqgKz/hxHGnvPxvQGpHUGD5qRVC9EZY2+A== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emoticon@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -728,52 +3054,112 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -esbuild@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" - integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== +esbuild@^0.17.12: + version "0.17.18" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.18.tgz#f4f8eb6d77384d68cd71c53eb6601c7efe05e746" + integrity sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w== optionalDependencies: - "@esbuild/aix-ppc64" "0.24.2" - "@esbuild/android-arm" "0.24.2" - "@esbuild/android-arm64" "0.24.2" - "@esbuild/android-x64" "0.24.2" - "@esbuild/darwin-arm64" "0.24.2" - "@esbuild/darwin-x64" "0.24.2" - "@esbuild/freebsd-arm64" "0.24.2" - "@esbuild/freebsd-x64" "0.24.2" - "@esbuild/linux-arm" "0.24.2" - "@esbuild/linux-arm64" "0.24.2" - "@esbuild/linux-ia32" "0.24.2" - "@esbuild/linux-loong64" "0.24.2" - "@esbuild/linux-mips64el" "0.24.2" - "@esbuild/linux-ppc64" "0.24.2" - "@esbuild/linux-riscv64" "0.24.2" - "@esbuild/linux-s390x" "0.24.2" - "@esbuild/linux-x64" "0.24.2" - "@esbuild/netbsd-arm64" "0.24.2" - "@esbuild/netbsd-x64" "0.24.2" - "@esbuild/openbsd-arm64" "0.24.2" - "@esbuild/openbsd-x64" "0.24.2" - "@esbuild/sunos-x64" "0.24.2" - "@esbuild/win32-arm64" "0.24.2" - "@esbuild/win32-ia32" "0.24.2" - "@esbuild/win32-x64" "0.24.2" + "@esbuild/android-arm" "0.17.18" + "@esbuild/android-arm64" "0.17.18" + "@esbuild/android-x64" "0.17.18" + "@esbuild/darwin-arm64" "0.17.18" + "@esbuild/darwin-x64" "0.17.18" + "@esbuild/freebsd-arm64" "0.17.18" + "@esbuild/freebsd-x64" "0.17.18" + "@esbuild/linux-arm" "0.17.18" + "@esbuild/linux-arm64" "0.17.18" + "@esbuild/linux-ia32" "0.17.18" + "@esbuild/linux-loong64" "0.17.18" + "@esbuild/linux-mips64el" "0.17.18" + "@esbuild/linux-ppc64" "0.17.18" + "@esbuild/linux-riscv64" "0.17.18" + "@esbuild/linux-s390x" "0.17.18" + "@esbuild/linux-x64" "0.17.18" + "@esbuild/netbsd-x64" "0.17.18" + "@esbuild/openbsd-x64" "0.17.18" + "@esbuild/sunos-x64" "0.17.18" + "@esbuild/win32-arm64" "0.17.18" + "@esbuild/win32-ia32" "0.17.18" + "@esbuild/win32-x64" "0.17.18" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + extend@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + file-saver@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" @@ -786,6 +3172,13 @@ file-selector@^0.4.0: dependencies: tslib "^2.0.3" +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -798,6 +3191,14 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + focus-lock@^0.11.6: version "0.11.6" resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.11.6.tgz#e8821e21d218f03e100f7dc27b733f9c4f61e683" @@ -805,12 +3206,17 @@ focus-lock@^0.11.6: dependencies: tslib "^2.0.3" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + fscreen@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fscreen/-/fscreen-1.2.0.tgz#1a8c88e06bc16a07b473ad96196fb06d6657f59e" integrity sha512-hlq4+BU0hlPmwsFjwGGzZ+OZ9N/wq9Ljg/sq3pX+2CD7hrJsX9tJgWWK/wiNTFM212CLHWhicOoqwXyZGGetJg== -fsevents@~2.3.2, fsevents@~2.3.3: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -820,16 +3226,87 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.2.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +graceful-fs@^4.1.2, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -837,6 +3314,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" @@ -939,12 +3423,58 @@ hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react- dependencies: react-is "^16.7.0" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + html-void-elements@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -import-fresh@^3.2.1: +htmlnano@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.1.0.tgz#67b31b3cd3fad23f0b610ca628fdb48382209c3c" + integrity sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g== + dependencies: + cosmiconfig "^8.0.0" + posthtml "^0.16.5" + timsort "^0.3.0" + +htmlparser2@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +immutable@^4.0.0: + version "4.3.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" + integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -952,7 +3482,28 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -inherits@^2.0.0: +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -987,6 +3538,13 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -999,16 +3557,50 @@ is-core-module@^2.11.0: dependencies: has "^1.0.3" +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-json@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" + integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1019,6 +3611,16 @@ is-plain-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -1029,26 +3631,651 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.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.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@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.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^27.0.0: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@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.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + 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/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json5@^2.2.0, json5@^2.2.1, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +less@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" + integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +less@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lightningcss-darwin-arm64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.23.0.tgz#11780f37158a458cead5e89202f74cd99b926e36" + integrity sha512-kl4Pk3Q2lnE6AJ7Qaij47KNEfY2/UXRZBT/zqGA24B8qwkgllr/j7rclKOf1axcslNXvvUdztjo4Xqh39Yq1aA== + +lightningcss-darwin-x64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.23.0.tgz#8394edaa04f0984b971eab42b6f68edb1258b3ed" + integrity sha512-KeRFCNoYfDdcolcFXvokVw+PXCapd2yHS1Diko1z1BhRz/nQuD5XyZmxjWdhmhN/zj5sH8YvWsp0/lPLVzqKpg== + +lightningcss-freebsd-x64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.23.0.tgz#d3f6faddc424f17ed046e8be9ca97868a5f804ed" + integrity sha512-xhnhf0bWPuZxcqknvMDRFFo2TInrmQRWZGB0f6YoAsZX8Y+epfjHeeOIGCfAmgF0DgZxHwYc8mIR5tQU9/+ROA== + +lightningcss-linux-arm-gnueabihf@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.23.0.tgz#040e9718c9a9dc088322da33983a894564ffcb10" + integrity sha512-fBamf/bULvmWft9uuX+bZske236pUZEoUlaHNBjnueaCTJ/xd8eXgb0cEc7S5o0Nn6kxlauMBnqJpF70Bgq3zg== + +lightningcss-linux-arm64-gnu@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.23.0.tgz#05cfcfa2cf47a042ca11cfce520ae9f91e4efcdb" + integrity sha512-RS7sY77yVLOmZD6xW2uEHByYHhQi5JYWmgVumYY85BfNoVI3DupXSlzbw+b45A9NnVKq45+oXkiN6ouMMtTwfg== + +lightningcss-linux-arm64-musl@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.23.0.tgz#3212a10dff37c70808113fbcf7cbd1b63c6cbc6f" + integrity sha512-cU00LGb6GUXCwof6ACgSMKo3q7XYbsyTj0WsKHLi1nw7pV0NCq8nFTn6ZRBYLoKiV8t+jWl0Hv8KkgymmK5L5g== + +lightningcss-linux-x64-gnu@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.23.0.tgz#3b27da32889285b1c5de3f26094ee234054634fc" + integrity sha512-q4jdx5+5NfB0/qMbXbOmuC6oo7caPnFghJbIAV90cXZqgV8Am3miZhC4p+sQVdacqxfd+3nrle4C8icR3p1AYw== + +lightningcss-linux-x64-musl@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.23.0.tgz#ad65b5a944f10d966cc10070bf20f81ddadd4240" + integrity sha512-G9Ri3qpmF4qef2CV/80dADHKXRAQeQXpQTLx7AiQrBYQHqBjB75oxqj06FCIe5g4hNCqLPnM9fsO4CyiT1sFSQ== + +lightningcss-win32-x64-msvc@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.23.0.tgz#62f3f619a7bb44f8713973103fbe1bcbd9d455f9" + integrity sha512-1rcBDJLU+obPPJM6qR5fgBUiCdZwZLafZM5f9kwjFLkb/UBNIzmae39uCSmh71nzPCTXZqHbvwu23OWnWEz+eg== + +lightningcss@^1.22.1: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.23.0.tgz#58c94a533d02d8416d4f2ec9ab87641f61943c78" + integrity sha512-SEArWKMHhqn/0QzOtclIwH5pXIYQOUEkF8DgICd/105O+GCgd7jxjNod/QPnBCSWvpRHQBGVz5fQ9uScby03zA== + dependencies: + detect-libc "^1.0.3" + optionalDependencies: + lightningcss-darwin-arm64 "1.23.0" + lightningcss-darwin-x64 "1.23.0" + lightningcss-freebsd-x64 "1.23.0" + lightningcss-linux-arm-gnueabihf "1.23.0" + lightningcss-linux-arm64-gnu "1.23.0" + lightningcss-linux-arm64-musl "1.23.0" + lightningcss-linux-x64-gnu "1.23.0" + lightningcss-linux-x64-musl "1.23.0" + lightningcss-win32-x64-msvc "1.23.0" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lmdb@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.5.2.tgz#37e28a9fb43405f4dc48c44cec0e13a14c4a6ff1" + integrity sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA== + dependencies: + msgpackr "^1.5.4" + node-addon-api "^4.3.0" + node-gyp-build-optional-packages "5.0.3" + ordered-binary "^1.2.4" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "2.5.2" + "@lmdb/lmdb-darwin-x64" "2.5.2" + "@lmdb/lmdb-linux-arm" "2.5.2" + "@lmdb/lmdb-linux-arm64" "2.5.2" + "@lmdb/lmdb-linux-x64" "2.5.2" + "@lmdb/lmdb-win32-x64" "2.5.2" + +lmdb@2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837" + integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ== + dependencies: + msgpackr "^1.9.5" + node-addon-api "^6.1.0" + node-gyp-build-optional-packages "5.1.1" + ordered-binary "^1.4.1" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "2.8.5" + "@lmdb/lmdb-darwin-x64" "2.8.5" + "@lmdb/lmdb-linux-arm" "2.8.5" + "@lmdb/lmdb-linux-arm64" "2.8.5" + "@lmdb/lmdb-linux-x64" "2.8.5" + "@lmdb/lmdb-win32-x64" "2.8.5" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -1059,6 +4286,11 @@ lodash.isequal@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -1071,6 +4303,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" @@ -1078,6 +4317,33 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" @@ -1104,6 +4370,11 @@ mdast-util-to-hast@^10.0.0, mdast-util-to-hast@^10.2.0: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -1114,7 +4385,12 @@ mdurl@^1.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -micromatch@^4.0.8: +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -1122,10 +4398,89 @@ micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" -nanoid@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +msgpackr-extract@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" + integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== + dependencies: + node-gyp-build-optional-packages "5.0.7" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" + +msgpackr@^1.5.4, msgpackr@^1.9.5, msgpackr@^1.9.9: + version "1.10.1" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" + integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== + optionalDependencies: + msgpackr-extract "^3.0.2" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +needle@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44" + integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" + +node-addon-api@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== node-emoji@^1.10.0: version "1.11.0" @@ -1134,6 +4489,67 @@ node-emoji@^1.10.0: dependencies: lodash "^4.17.21" +node-gyp-build-optional-packages@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" + integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== + +node-gyp-build-optional-packages@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" + integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== + +node-gyp-build-optional-packages@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== + dependencies: + detect-libc "^2.0.1" + +node-int64@^0.4.0: + version "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.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + numeral@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" @@ -1144,6 +4560,71 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +ordered-binary@^1.2.4, ordered-binary@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.1.tgz#94ccbf14181711081ee23931db0dc3f58aaa0df6" + integrity sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parcel@^2.8.3: + version "2.11.0" + resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.11.0.tgz#9448269b677d7ba251c92a2a5ce4539fcf0dbf5c" + integrity sha512-H/RI1/DmuOkL8RuG/EpNPvtzrbF+7jA/R56ydEEm+lqFbYktKB4COR7JXdHkZXRgbSJyimrFB8d0r9+SaRnj0Q== + dependencies: + "@parcel/config-default" "2.11.0" + "@parcel/core" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/reporter-cli" "2.11.0" + "@parcel/reporter-dev-server" "2.11.0" + "@parcel/reporter-tracer" "2.11.0" + "@parcel/utils" "2.11.0" + chalk "^4.1.0" + commander "^7.0.0" + get-port "^4.2.0" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -1163,7 +4644,7 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -1173,12 +4654,27 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -path-key@^3.1.0: +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -1193,35 +4689,108 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== -picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + plotly.js-dist-min@^2.9.0: version "2.21.0" resolved "https://registry.yarnpkg.com/plotly.js-dist-min/-/plotly.js-dist-min-2.21.0.tgz#7f83cc7675a02c02816bbb371565d81ba3adaa8b" integrity sha512-+GJDHV7ZKBMwb93U0sRS7/E1I9XNdgjd5aEsa03QHdMtOnARMDyvzwARCcKSn2bHNtwFx95DK9c9XNL1O877rw== -postcss@^8.4.49: - version "8.5.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +posthtml-parser@^0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" + integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" + htmlparser2 "^7.1.1" + +posthtml-parser@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" + integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== + dependencies: + htmlparser2 "^7.1.1" + +posthtml-render@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" + integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== + dependencies: + is-json "^2.0.1" + +posthtml@^0.16.4, posthtml@^0.16.5: + version "0.16.6" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" + integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== + dependencies: + posthtml-parser "^0.11.0" + posthtml-render "^3.0.0" + +pretty-format@^27.0.0, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" prismjs@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -1238,6 +4807,16 @@ property-information@^5.0.0, property-information@^5.3.0: dependencies: xtend "^4.0.0" +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pure-rand@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -1297,6 +4876,11 @@ react-dropzone@^11.2.0: file-selector "^0.4.0" prop-types "^15.8.1" +react-error-overlay@6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + react-focus-lock@^2.9.2: version "2.9.4" resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.4.tgz#4753f6dcd167c39050c9d84f9c63c71b3ff8462e" @@ -1334,11 +4918,16 @@ react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.2: +react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + react-is@~16.3.0: version "16.3.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22" @@ -1356,6 +4945,11 @@ react-redux@^7.2.0: prop-types "^15.7.2" react-is "^17.0.2" +react-refresh@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" + integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== + react-remove-scroll-bar@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" @@ -1405,6 +4999,13 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + redux@^4.0.0, redux@^4.0.4: version "4.2.1" resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" @@ -1421,7 +5022,7 @@ refractor@^3.4.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerator-runtime@^0.13.11: +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: 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== @@ -1491,16 +5092,38 @@ repeat-string@^1.5.4: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== +require-directory@^2.1.1: + version "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== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +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.19.0: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" @@ -1510,33 +5133,52 @@ resolve@^1.19.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -rollup@^4.23.0: - version "4.30.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" - integrity sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w== +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.30.1" - "@rollup/rollup-android-arm64" "4.30.1" - "@rollup/rollup-darwin-arm64" "4.30.1" - "@rollup/rollup-darwin-x64" "4.30.1" - "@rollup/rollup-freebsd-arm64" "4.30.1" - "@rollup/rollup-freebsd-x64" "4.30.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" - "@rollup/rollup-linux-arm-musleabihf" "4.30.1" - "@rollup/rollup-linux-arm64-gnu" "4.30.1" - "@rollup/rollup-linux-arm64-musl" "4.30.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" - "@rollup/rollup-linux-riscv64-gnu" "4.30.1" - "@rollup/rollup-linux-s390x-gnu" "4.30.1" - "@rollup/rollup-linux-x64-gnu" "4.30.1" - "@rollup/rollup-linux-x64-musl" "4.30.1" - "@rollup/rollup-win32-arm64-msvc" "4.30.1" - "@rollup/rollup-win32-ia32-msvc" "4.30.1" - "@rollup/rollup-win32-x64-msvc" "4.30.1" - fsevents "~2.3.2" + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rxjs@^7.0.0: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@^1.38.0: + version "1.71.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.71.0.tgz#b3085759b9b2ab503a977aecb7e91153bf941117" + integrity sha512-HKKIKf49Vkxlrav3F/w6qRuPcmImGVbIXJ2I3Kg0VMA+3Bav+8yE9G5XmP5lMj6nl4OlqbPftGAscNaNu28b8w== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== scheduler@^0.20.2: version "0.20.2" @@ -1546,7 +5188,7 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -semver@^7.5.2: +semver@^5.6.0, semver@^5.7.1, semver@^6.3.0, semver@^6.3.1, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -1565,26 +5207,103 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +"source-map-js@>=0.6.2 <2.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +srcset@4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" + integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + stringify-entities@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" @@ -1594,6 +5313,28 @@ stringify-entities@^3.0.1: character-entities-legacy "^1.0.0" xtend "^4.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -1613,26 +5354,77 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0, supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svgo@^2.4.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + tabbable@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-3.1.2.tgz#f2d16cccd01f400e38635c7181adfe0ad965a4a2" integrity sha512-wjB6puVXTYO0BSFtCmWQubA/KIn7Xvajw0x0l6eJUudMG/EAiJvIUnyNX6xO4NpGrJ16lbD0eUseB9WxW0vlpQ== +term-size@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-diff@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/text-diff/-/text-diff-1.0.1.tgz#6c105905435e337857375c9d2f6ca63e453ff565" integrity sha512-jAnlP3ggZk7FeLX1awaMR8Y2sMyil9P9FXvNjaIJIQBAom1zvpKGGH31htOVrUFp0vlyygmJJpNrbJ4rfjsxrA== +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== + tiny-invariant@^1.0.6: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -1645,6 +5437,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" @@ -1660,11 +5457,46 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: +ts-jest@^29.2.5: + version "29.2.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" + integrity sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.6.3" + yargs-parser "^21.1.1" + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -1762,6 +5594,22 @@ unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +update-browserslist-db@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + url-parse@^1.5.0: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -1790,11 +5638,25 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" +utility-types@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== + uuid@^8.3.0: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + vfile-location@^3.0.0, vfile-location@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" @@ -1826,14 +5688,17 @@ vfile@^4.0.0, vfile@^4.2.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -"vite@file:../node_modules/vite": - version "6.0.7" +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - esbuild "^0.24.2" - postcss "^8.4.49" - rollup "^4.23.0" - optionalDependencies: - fsevents "~2.3.3" + makeerror "1.0.12" + +weak-lru-cache@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== web-namespaces@^1.0.0: version "1.1.4" @@ -1847,11 +5712,48 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +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== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xxhash-wasm@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" + integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA== + +y18n@^5.0.5: + version "5.0.8" + 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" @@ -1862,6 +5764,29 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" diff --git a/redisinsight/ui/src/packages/ri-explain/.parcelrc b/redisinsight/ui/src/packages/ri-explain/.parcelrc new file mode 100644 index 0000000000..c442c3093a --- /dev/null +++ b/redisinsight/ui/src/packages/ri-explain/.parcelrc @@ -0,0 +1,8 @@ +{ + "extends": "@parcel/config-default", + "transformers": { + "global_styles.css": [], + "dark_theme.css": [], + "light_theme.css": [] + } +} diff --git a/redisinsight/ui/src/packages/ri-explain/index.html b/redisinsight/ui/src/packages/ri-explain/index.html deleted file mode 100644 index 580dde647c..0000000000 --- a/redisinsight/ui/src/packages/ri-explain/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - Explain plugin - - - - <% if(isDev){ %> - - - - <% } %> - - -
- - diff --git a/redisinsight/ui/src/packages/ri-explain/package.json b/redisinsight/ui/src/packages/ri-explain/package.json index 5dd22b5157..6e63895320 100644 --- a/redisinsight/ui/src/packages/ri-explain/package.json +++ b/redisinsight/ui/src/packages/ri-explain/package.json @@ -12,9 +12,15 @@ "styles": "./dist/styles.css", "main": "./dist/index.js", "name": "explain-plugin", - "version": "0.0.2", + "version": "0.0.1", "scripts": { - "dev": "vite -c ../vite.config.mjs" + "start": "cross-env NODE_ENV=development parcel serve src/index.html", + "build": "rimraf dist && cross-env NODE_ENV=production concurrently \"yarn build:js && yarn minify:js\" \"yarn build:css\" \"yarn build:assets\"", + "build-lite": "rm dist/*.js && cross-env NODE_ENV=production concurrently \"yarn build:js && yarn minify:js\"", + "build:js": "parcel build src/main.tsx --no-source-maps --no-cache --dist-dir dist", + "build:css": "parcel build src/styles/styles.less --no-source-maps --no-cache --dist-dir dist", + "build:assets": "parcel build src/assets/**/* --dist-dir dist", + "minify:js": "terser -- dist/main.js > dist/index.js && rimraf dist/main.js" }, "targets": { "main": false, @@ -41,7 +47,14 @@ } ], "devDependencies": { - "vite": "file:../node_modules/vite" + "@parcel/compressor-brotli": "^2.8.3", + "@parcel/compressor-gzip": "^2.8.3", + "@parcel/transformer-less": "^2.8.3", + "concurrently": "^7.6.0", + "cross-env": "^7.0.3", + "parcel": "^2.8.3", + "rimraf": "^3.0.2", + "terser": "^5.16.6" }, "dependencies": { "@antv/hierarchy": "^0.6.8", @@ -57,6 +70,8 @@ "uuid": "^9.0.0" }, "resolutions": { + "@parcel/**/micromatch": "^4.0.8", + "@parcel/**/braces": "^3.0.3", "trim": "0.0.3", "**/semver": "^7.5.2" } diff --git a/redisinsight/ui/src/packages/ri-explain/src/Explain.tsx b/redisinsight/ui/src/packages/ri-explain/src/Explain.tsx index 740bdd3c5c..649afcbb06 100644 --- a/redisinsight/ui/src/packages/ri-explain/src/Explain.tsx +++ b/redisinsight/ui/src/packages/ri-explain/src/Explain.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState, useRef } from 'react' import { Model, Graph } from '@antv/x6' -import { register } from '@antv/x6-react-shape' +import { register} from '@antv/x6-react-shape' import Hierarchy from '@antv/hierarchy' import { formatRedisReply } from 'redisinsight-plugin-sdk' @@ -24,16 +24,15 @@ import { ParseExplain, ParseGraphV2, ParseProfile, + ParseProfileCluster, GetAncestors, GetTotalExecutionTime, - transformProfileResult, - findFlatProfile, } from './parser' import { ExplainNode, ProfileNode } from './Node' interface IExplain { command: string - data: [{ response: string[] | string | any }] + data: [{response: string[] | string | any}] } function getEdgeSize(c: number) { @@ -51,11 +50,11 @@ function getEdgeColor(isDarkTheme: boolean) { export default function Explain(props: IExplain): JSX.Element { const command = props.command.split(' ')[0].toLowerCase() if (command.startsWith('graph')) { - const info = props.data[0].response + const info = props.data[0].response const resp = ParseGraphV2(info) let profilingTime: IProfilingTime = {} - const t = command.endsWith('explain') ? CoreType.Explain : CoreType.Profile + let t = command.endsWith('explain') ? CoreType.Explain : CoreType.Profile if (t === CoreType.Profile) { profilingTime = { 'Total Execution Time': GetTotalExecutionTime(resp) @@ -77,7 +76,7 @@ export default function Explain(props: IExplain): JSX.Element { const [parsedRedisReply, setParsedRedisReply] = useState('') useEffect(() => { - if (command === 'ft.profile') { + if (command == 'ft.profile') { const getParsedResponse = async () => { const formattedResponse = await formatRedisReply(props.data[0].response, props.command) setParsedRedisReply(formattedResponse) @@ -86,40 +85,54 @@ export default function Explain(props: IExplain): JSX.Element { } }) - if (command === 'ft.profile') { - try { - const { data } = props - const isNewResponse = typeof data[0].response[1]?.[0] === 'string' + if (command == 'ft.profile') { + const info = props.data[0].response[1] - const [, profiles] = data[0].response || [] - const transformedProfiles = isNewResponse ? profiles : transformProfileResult(profiles) - const [shard] = findFlatProfile('Shards', transformedProfiles) - const profileInfo: EntityInfo = ParseProfile(shard) - - const profilingTime = { - 'Total Profile Time': findFlatProfile('Total Profile Time', shard), - 'Parsing Time': findFlatProfile('Parsing Time', shard), - 'Pipeline Creation Time': findFlatProfile('Pipeline Creation Time', shard), - } + let data: EntityInfo + let profilingTime: IProfilingTime = {} + if (info.length > 5 && typeof info[0] === 'string' && info[0].toLowerCase().startsWith('shard')) { + let [cluster, entityInfo] = ParseProfileCluster(info) + cluster['Coordinator'].forEach((kv: [string, string]) => profilingTime[kv[0]] = kv[1]) + data = entityInfo return ( - + <> +
Visualization is not supported for a clustered database.
+
{parsedRedisReply}
+ ) - } catch (e) { - console.error(e) - + } else if (typeof info[0] === 'string' && info[0].toLowerCase().startsWith('coordinator')) { + const resultsProfile = info[2] + data = ParseProfile(resultsProfile) + profilingTime = { + 'Total Coordinator time': info[4], + 'Total profile time': resultsProfile[0][1], + 'Parsing time': resultsProfile[1][1], + 'Pipeline creation time': resultsProfile[2][1], + } return ( <> -
Some error happened during parsing the data.
+
Visualization is not supported for a clustered database.
{parsedRedisReply}
) + } else { + data = ParseProfile(info) + profilingTime = { + 'Total Profile Time': info[0][1], + 'Parsing Time': info[1][1], + 'Pipeline Creation Time': info[2][1], + } } + + return ( + + ) } const resp = props.data[0].response @@ -156,7 +169,7 @@ interface IProfilingTime { [key: string]: string } -function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: CoreType, module: ModuleType, profilingTime?: IProfilingTime }): JSX.Element { +function ExplainDraw({data, type, module, profilingTime}: {data: any, type: CoreType, module: ModuleType, profilingTime?: IProfilingTime}): JSX.Element { const container = useRef(null) const [done, setDone] = useState(false) @@ -173,7 +186,7 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C const height = Math.max((b?.height || 585) + 100, parent.document.body.offsetHeight) if (type !== CoreType.Profile && collapse) { core?.resize(width, window.outerHeight - 250) - core?.positionContent('top') + core?.positionContent("top") } else { core?.resize(width, height) } @@ -181,7 +194,7 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C setIsFullScreen(false) if (type !== CoreType.Profile && collapse) { core?.resize(width, 400) - core?.positionContent('top') + core?.positionContent("top") } else { core?.resize(width, (b?.height || 585) + 100) } @@ -190,6 +203,7 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C window.addEventListener('resize', resize) useEffect(() => { + if (done) return setDone(true) @@ -209,14 +223,14 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C setCore(graph) - graph.on('resize', () => graph.centerContent()) - graph.on('node:mouseenter', (x) => { - const { id } = x.node.getData() + graph.on("resize", () => graph.centerContent()) + graph.on("node:mouseenter", x => { + const {id} = x.node.getData() // Find ancestors of a node - const ancestors = GetAncestors(data, id, { found: false, pairs: [] }) - ancestors.pairs.forEach((p) => { + const ancestors = GetAncestors(data, id, {found: false, pairs: []}) + ancestors.pairs.forEach(p => { // Highlight ancestor and their ancestor - document.querySelector(`#node-${p[0]}`)?.setAttribute('style', 'outline: 1px solid #85A2FE !important;') + document.querySelector(`#node-${p[0]}`)?.setAttribute("style", "outline: 1px solid #85A2FE !important;") // Get edge size of parent ancestor to apply the right edge stroke const edge = graph.getCellById(`${p[0]}-${p[1]}`) const edgeColor = '#85A2FE' @@ -229,11 +243,11 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C }) }) - graph.on('node:mouseleave', (x) => { - const { id } = x.node.getData() - const ancestors = GetAncestors(data, id, { found: false, pairs: [] }) - ancestors.pairs.forEach((p) => { - document.querySelector(`#node-${p[0]}`)?.setAttribute('style', '') + graph.on("node:mouseleave", x => { + const {id} = x.node.getData() + const ancestors = GetAncestors(data, id, {found: false, pairs: []}) + ancestors.pairs.forEach(p => { + document.querySelector(`#node-${p[0]}`)?.setAttribute("style", "") const edge = graph.getCellById(`${p[0]}-${p[1]}`) const edgeColor = getEdgeColor(isDarkTheme) edge.setAttrs({ @@ -301,12 +315,13 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C } } - const portId = `${data.id}-source` - const targetPort = {} + + const portId = data.id + '-source' + let targetPort = {} const targetItem: any = [] if (info.parentId) { - targetItem.push({ id: `${info.id}-${info.parentId}-target`, group: `${info.parentId}-target` }) - targetPort[`${info.parentId}-target`] = { + targetItem.push({id: `${info.id}-${info.parentId}-target`, group: `${info.parentId}-target`}) + targetPort[info.parentId+'-target'] = { position: { name: 'bottom' }, attrs: { circle: { @@ -340,7 +355,7 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C ...targetPort, }, items: [ - ...data.children.map((c) => ({ + ...data.children.map(c => ({ id: `${data.id}-${c.id}`, group: portId })), ...targetItem, @@ -394,59 +409,63 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C graph.fromJSON(model) graph.centerContent() + }, [done]) - const ele = document.querySelector('#container-parent') + const ele = document.querySelector("#container-parent") - let pos = { top: 0, left: 0, x: 0, y: 0 } + let pos = { top: 0, left: 0, x: 0, y: 0 } - const mouseMoveHandler = function (e) { - // How far the mouse has been moved - const dx = e.clientX - pos.x - const dy = e.clientY - pos.y + const mouseMoveHandler = function (e) { + // How far the mouse has been moved + const dx = e.clientX - pos.x + const dy = e.clientY - pos.y - // Scroll the element - if (ele) { - ele.scrollTop = pos.top - dy - ele.scrollLeft = pos.left - dx + // Scroll the element + if (ele) { + ele.scrollTop = pos.top - dy + ele.scrollLeft = pos.left - dx + } } - } - const mouseUpHandler = function () { - document.removeEventListener('mousemove', mouseMoveHandler) - document.removeEventListener('mouseup', mouseUpHandler) - } - const mouseDownHandler = function (e) { - pos = { - // The current scroll - left: ele?.scrollLeft || 0, - top: ele?.scrollTop || 0, - // Get the current mouse position - x: e.clientX, - y: e.clientY, + const mouseUpHandler = function () { + document.removeEventListener('mousemove', mouseMoveHandler) + document.removeEventListener('mouseup', mouseUpHandler) } - document.addEventListener('mousemove', mouseMoveHandler) - setTimeout(() => document.addEventListener('mouseup', mouseUpHandler), 100) - } - ele?.addEventListener('mousedown', mouseDownHandler) + const mouseDownHandler = function (e) { + pos = { + // The current scroll + left: ele?.scrollLeft || 0, + top: ele?.scrollTop || 0, + // Get the current mouse position + x: e.clientX, + y: e.clientY, + } + + document.addEventListener('mousemove', mouseMoveHandler) + setTimeout(() => document.addEventListener('mouseup', mouseUpHandler), 100) + } + + ele?.addEventListener('mousedown', mouseDownHandler) + if (type !== CoreType.Profile && collapse) { core?.resize(undefined, isFullScreen ? (window.outerHeight - 250) : 400) - core?.positionContent('top') + core?.positionContent("top") } else { core?.resize(undefined, core?.getContentBBox().height + 100) } return (
- { type !== CoreType.Profile && collapse &&
} + { type !== CoreType.Profile && collapse &&
}
( + ].map(item => ( )} - { type !== CoreType.Profile - && ( + { type !== CoreType.Profile &&
{ + onClick={e => { e.preventDefault() setTimeout(() => document.addEventListener('mouseup', mouseUpHandler), 100) - if (!collapse) { // About to collapse? + if (!collapse) { // About to collapse? core?.zoomTo(1) core?.resize(undefined, core?.getContentBBox().height + 50) } @@ -517,28 +535,26 @@ function ExplainDraw({ data, type, module, profilingTime }: { data: any, type: C > { collapse - ? ( - <> -
Expand
- - - ) - : ( - <> -
Collapse
- - - ) + ? + <> +
Expand
+ + + : + <> +
Collapse
+ + }
- )} - { profilingTime - && ( - module === ModuleType.Search - && ( + } + { profilingTime && + ( + module === ModuleType.Search && + (
{ - Object.keys(profilingTime).map((key) => ( + Object.keys(profilingTime).map(key => (
{profilingTime[key]}
{key}
diff --git a/redisinsight/ui/src/packages/ri-explain/public/profile_icon_dark.svg b/redisinsight/ui/src/packages/ri-explain/src/assets/profile_icon_dark.svg similarity index 100% rename from redisinsight/ui/src/packages/ri-explain/public/profile_icon_dark.svg rename to redisinsight/ui/src/packages/ri-explain/src/assets/profile_icon_dark.svg diff --git a/redisinsight/ui/src/packages/ri-explain/public/profile_icon_light.svg b/redisinsight/ui/src/packages/ri-explain/src/assets/profile_icon_light.svg similarity index 100% rename from redisinsight/ui/src/packages/ri-explain/public/profile_icon_light.svg rename to redisinsight/ui/src/packages/ri-explain/src/assets/profile_icon_light.svg diff --git a/redisinsight/ui/src/packages/ri-explain/src/global.d.ts b/redisinsight/ui/src/packages/ri-explain/src/global.d.ts deleted file mode 100644 index f7b40bd272..0000000000 --- a/redisinsight/ui/src/packages/ri-explain/src/global.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '@elastic/eui/es/components/icon/*' diff --git a/redisinsight/ui/src/packages/ri-explain/src/index.html b/redisinsight/ui/src/packages/ri-explain/src/index.html new file mode 100644 index 0000000000..5f3e317f0f --- /dev/null +++ b/redisinsight/ui/src/packages/ri-explain/src/index.html @@ -0,0 +1,18 @@ + + + + + + + Profile/Explain Plugin Visualization + + + + + + + + +
+ + diff --git a/redisinsight/ui/src/packages/ri-explain/src/main.tsx b/redisinsight/ui/src/packages/ri-explain/src/main.tsx index fea8ea0658..3fd1f2bf62 100644 --- a/redisinsight/ui/src/packages/ri-explain/src/main.tsx +++ b/redisinsight/ui/src/packages/ri-explain/src/main.tsx @@ -1,6 +1,12 @@ /* eslint-disable react/jsx-filename-extension */ import React from 'react' import { render } from 'react-dom' +import { App } from './App' + +interface Props { + command?: string + data?: { response: any, status: string }[] +} import { appendIconComponentCache } from '@elastic/eui/es/components/icon/icon' import { icon as EuiIconMagnifyWithPlus } from '@elastic/eui/es/components/icon/assets/magnifyWithPlus' @@ -11,19 +17,6 @@ import { icon as EuiIconClock } from '@elastic/eui/es/components/icon/assets/clo import { icon as EuiIconReportingApp } from '@elastic/eui/es/components/icon/assets/app_reporting' import { icon as EuiIconArrowUp } from '@elastic/eui/es/components/icon/assets/arrow_up' import { icon as EuiIconArrowDown } from '@elastic/eui/es/components/icon/assets/arrow_down' -import { App } from './App' -import './styles/styles.scss' - -// import data from '../test-data/result-explain.json' -// import data from '../test-data/result-profile_r7.json' -import data from '../test-data/result-profile_r7--aggregate.json' -// import data from '../test-data/result-profile_r8.json' - -interface Props { - command?: string - data?: { response: any, status: string }[] - mode?: string -} appendIconComponentCache({ magnifyWithPlus: EuiIconMagnifyWithPlus, @@ -45,11 +38,5 @@ const renderCore = (props: Props) => renderApp( ) -if (process.env.NODE_ENV === 'development') { - const command = 'FT.PROFILE \'idx:bicycle\' SEARCH QUERY \'*\' NOCONTENT' - - renderCore({ command, data, mode: 'ASCII' }) -} - // This is a required action - export the main function for execution of the visualization export default { renderCore } diff --git a/redisinsight/ui/src/packages/ri-explain/src/parser.ts b/redisinsight/ui/src/packages/ri-explain/src/parser.ts index d9f4f810e2..d838163770 100644 --- a/redisinsight/ui/src/packages/ri-explain/src/parser.ts +++ b/redisinsight/ui/src/packages/ri-explain/src/parser.ts @@ -45,14 +45,14 @@ enum TokenType { } class Token { - T: TokenType + T: TokenType + Data: string - Data: string + constructor(t: TokenType, data: string) { + this.T = t + this.Data = data + } - constructor(t: TokenType, data: string) { - this.T = t - this.Data = data - } } const KEYWORDS = { @@ -68,14 +68,12 @@ const KEYWORDS = { [TokenType.TAG.toString()]: TokenType.TAG, [TokenType.NUMERIC.toString()]: TokenType.NUMERIC, - inf: TokenType.NUMBER, + 'inf': TokenType.NUMBER, } class Lexer { Input: string - Position: number - ReadPosition: number C?: string @@ -97,12 +95,13 @@ class Lexer { } this.Position = this.ReadPosition++ } - + PeekChar() { if (this.ReadPosition >= this.Input.length) { return null + } else { + return this.Input[this.ReadPosition] } - return this.Input[this.ReadPosition] } SkipWhitespace() { @@ -128,26 +127,26 @@ class Lexer { while ( this.C !== undefined && ( - isLetter(this.C) - || ['@', ':', '\\'].includes(this.C) - || (startsWithAt && isDigit(this.C)) + isLetter(this.C) || + ['@', ':', '\\'].includes(this.C) || + (startsWithAt && isDigit(this.C)) || // Text can be searched in multiple schemas via '|' // // Example: // FT.CREATE idx SCHEMA t1 TEXT t2 TEXT // FT.EXPLAIN idx '@t1|t2:(text value)' - || (startsWithAt && this.C === '|') - || str.startsWith('TAG:@') && isDigit(this.C) - || prevEscape + (startsWithAt && this.C === '|') || + str.startsWith('TAG:@') && isDigit(this.C) || + prevEscape ) ) { - str += this.C + str = str + this.C if (this.C === '\\' && this.PeekChar() === '\\') { // '\' appears twice query result when escaped a character. // // For example, if space has to be escaped, instead of '\ ', you will find '\\ '. - this.ReadChar() // read of extra '\' + this.ReadChar() // read of extra '\' prevEscape = true } else { prevEscape = false @@ -159,8 +158,8 @@ class Lexer { ReadNumber(): string { let str = '' - while (this.C !== undefined && (isDigit(this.C) || this.C === '.') && !Number.isNaN(parseFloat(str + this.C))) { - str += this.C + while (this.C !== undefined && (isDigit(this.C) || this.C === '.') && parseFloat(str + this.C) != NaN) { + str = str + this.C this.ReadChar() } return str @@ -192,22 +191,22 @@ class Lexer { break case '-':// TODO: This should be MINUS token t = new Token(TokenType.IDENTIFIER, this.C) - const p = this.PeekChar() - if (p !== null && isDigit(p)) { + let p = this.PeekChar() + if (p !== null && isDigit(p)){ this.ReadChar() const n = this.ReadNumber() - t = new Token(TokenType.NUMBER, `-${n}`) + t = new Token(TokenType.NUMBER, '-' + n) return t } break case ',': t = new Token(TokenType.COMMA, this.C) break - case '.': - t = new Token(TokenType.DOT, this.C) - break + case '.': + t = new Token(TokenType.DOT, this.C) + break case '<': - const lPeekChar = this.PeekChar() + let lPeekChar = this.PeekChar() if (lPeekChar !== null && lPeekChar === '=') { t = new Token(TokenType.LESS_EQUAL, '<=') this.ReadChar() @@ -216,7 +215,7 @@ class Lexer { } break case '>': - const rPeekChar = this.PeekChar() + let rPeekChar = this.PeekChar() if (rPeekChar !== null && rPeekChar === '=') { t = new Token(TokenType.GREATER_EQUAL, '>=') this.ReadChar() @@ -225,7 +224,7 @@ class Lexer { } break case '=': - const ePeekChar = this.PeekChar() + let ePeekChar = this.PeekChar() if (ePeekChar !== null && ePeekChar === '=') { t = new Token(TokenType.EQUAL, '==') this.ReadChar() @@ -270,12 +269,13 @@ class Lexer { } t = new Token(tokenType, literal) return t - } if (this.C !== undefined && isDigit(this.C)) { + } else if (this.C !== undefined && isDigit(this.C)) { const n = this.ReadNumber() t = new Token(TokenType.NUMBER, n) return t + } else { + t = new Token(TokenType.ILLEGAL, this.C) } - t = new Token(TokenType.ILLEGAL, this.C) } this.ReadChar() return t @@ -312,6 +312,7 @@ export enum EntityType { CLUSTER_MERGE = 'CLUSTER MERGE' } + export interface EntityInfo { id: string type: EntityType, @@ -339,30 +340,29 @@ export function GetAncestors(info: EntityInfo, searchId: string, a: IAncestors): found: true, pairs: info.parentId ? [[info.parentId, info.id]] : [] } - } - const r: IAncestors = { ...a } - for (let i = 0; i < info.children.length; i++) { - const c = info.children[i] - const ci = GetAncestors(c, searchId, a) - if (ci.found) { - r.found = true - r.pairs = [...a.pairs, ...ci.pairs] - if (info.parentId) { - r.pairs = [...r.pairs, [info.parentId, info.id]] + } else { + let r: IAncestors = {...a} + for (let i = 0; i < info.children.length; i++) { + let c = info.children[i] + let ci = GetAncestors(c, searchId, a) + if (ci.found) { + r.found = true + r.pairs = [...a.pairs, ...ci.pairs] + if (info.parentId) { + r.pairs = [...r.pairs, [info.parentId, info.id]] + } + return r } - return r } + return r } - return r } + class Expr { Core: string - SubType: EntityType - Time?: string - Info?: string constructor(expr: string, subType: EntityType, info: string | undefined = undefined) { @@ -372,7 +372,8 @@ class Expr { } toJSON(): EntityInfo { - let snippet: string | undefined + + let snippet: string | undefined = undefined if (this.SubType === EntityType.TAG && this.Info?.startsWith('TAG:')) { snippet = this.Info?.substr(4) @@ -389,7 +390,7 @@ class Expr { // snippet: this.Core, type: EntityType.Expr, subType: this.SubType, - snippet, + snippet: snippet, data: this.Core, children: [], time: this.Time, @@ -399,15 +400,14 @@ class Expr { class NumericExpr { Left: number - LSign: Token Identifier: Token Right: number - RSign: Token + constructor(left: number, lsign: Token, identifier: Token, rsign: Token, right: number) { this.Left = left this.LSign = lsign @@ -433,9 +433,7 @@ type ExprTuple2 = SearchExpr[] class ExpandExpr { Type: EntityType - Info?: string - Core: ExprTuple2 constructor(type: EntityType, e: ExprTuple2, info?: string) { @@ -447,7 +445,7 @@ class ExpandExpr { toJSON(): EntityInfo { const id = uuidv4() - let snippet: string | undefined + let snippet: string | undefined = undefined if (this.Type === EntityType.TAG && this.Info?.startsWith('TAG:')) { snippet = this.Info?.substr(4) @@ -461,7 +459,7 @@ class ExpandExpr { id, type: this.Type, snippet, - children: this.Core.map((x) => x.toJSON()).map((d: EntityInfo) => ({ + children: this.Core.map(x => x.toJSON()).map((d: EntityInfo) => ({ ...d, parentId: id, parentSnippet: snippet, @@ -470,18 +468,16 @@ class ExpandExpr { } } + class Parser { private L: Lexer - CurrentToken: Token - PeekToken: Token - Errors: string[] constructor(l: Lexer) { this.L = l - + this.Errors = [] this.CurrentToken = new Token(TokenType.INIT, '') this.PeekToken = new Token(TokenType.INIT, '') @@ -517,17 +513,18 @@ class Parser { // Example: // { { ... } ( { ... } ...) } parseExpandExpr(t: EntityType): ExpandExpr { + assertExpandEntity(t) this.assertToken(t as unknown as TokenType) - const data = this.CurrentToken.Data + let data = this.CurrentToken.Data this.nextToken() this.assertToken(TokenType.LBRACE) - const Exprs: SearchExpr[] = [] + let Exprs: SearchExpr[] = [] this.nextToken() this.assertToken(TokenType.NEW_LINE) @@ -535,12 +532,14 @@ class Parser { this.nextToken() while (true) { + if (this.CurrentToken.T === TokenType.RBRACE && this.PeekToken.T === TokenType.NEW_LINE) { + this.nextToken() break } - const t = this.CurrentToken.T + const t = this.CurrentToken.T; if (this.CurrentToken?.T === TokenType.NUMERIC) { Exprs.push(this.parseNumericExpr()) @@ -587,7 +586,7 @@ class Parser { this.assertToken(TokenType.IDENTIFIER) - const first = this.CurrentToken.Data + let first = this.CurrentToken.Data this.nextToken() @@ -603,7 +602,7 @@ class Parser { this.nextToken() - const second = this.CurrentToken.Data + let second = this.CurrentToken.Data this.nextToken() @@ -621,13 +620,14 @@ class Parser { this.nextToken() - const ids: number[] = [] + let ids: number[] = [] while (this.CurrentToken.T !== TokenType.RBRACE) { ids.push(parseInt(this.CurrentToken.Data)) this.nextToken() + this.assertToken(TokenType.COMMA) this.nextToken() @@ -660,16 +660,18 @@ class Parser { // TODO: Once fixed by redisearch team, remove this. this.assertToken(TokenType.RBRACE) - return new Expr('', EntityType.WILDCARD) + + return new Expr("", EntityType.WILDCARD) } parseExpr() { + this.assertToken(TokenType.IDENTIFIER) let str = '' while (this.CurrentToken.T !== TokenType.NEW_LINE) { - str += this.CurrentToken.Data + str = str + this.CurrentToken.Data this.nextToken() } @@ -679,6 +681,7 @@ class Parser { // Parse a very simple entity with format: // { } parseSimpleExpr(e: EntityType) { + assertSimpleEntity(e) this.assertToken(TokenType[e]) @@ -691,7 +694,7 @@ class Parser { this.assertToken(TokenType.IDENTIFIER) - const identifierData = this.CurrentToken.Data + let identifierData = this.CurrentToken.Data; this.nextToken() @@ -705,13 +708,13 @@ class Parser { parseGeoExpr() { this.assertToken(TokenType.GEO_EXPR) - const geoData = this.CurrentToken.Data + let geoData = this.CurrentToken.Data this.nextToken() this.assertToken(TokenType.IDENTIFIER) - const identifierData = this.CurrentToken.Data + let identifierData = this.CurrentToken.Data this.nextToken() @@ -721,7 +724,7 @@ class Parser { this.assertToken(TokenType.NUMBER) - const first = this.CurrentToken.Data + let first = this.CurrentToken.Data; this.nextToken() @@ -731,19 +734,19 @@ class Parser { this.assertToken(TokenType.NUMBER) - const second = this.CurrentToken.Data + let second = this.CurrentToken.Data; this.nextToken() this.assertToken(TokenType.IDENTIFIER) - assert(this.CurrentToken.Data === '-', 'Expected Identifier to be MINUS') + assert(this.CurrentToken.Data === '-', "Expected Identifier to be MINUS") this.nextToken() this.assertToken(TokenType.IDENTIFIER) - assert(this.CurrentToken.Data === '-', 'Expected Identifier to be MINUS') + assert(this.CurrentToken.Data === '-', "Expected Identifier to be MINUS") this.nextToken() @@ -753,13 +756,13 @@ class Parser { this.assertToken(TokenType.NUMBER) - const third = this.CurrentToken.Data + let third = this.CurrentToken.Data; this.nextToken() this.assertToken(TokenType.IDENTIFIER) - const metric = this.CurrentToken.Data + let metric = this.CurrentToken.Data; this.nextToken() @@ -781,57 +784,61 @@ class Parser { this.assertToken(TokenType.NUMBER) - const left = this.CurrentToken?.Data + let left = this.CurrentToken?.Data this.nextToken() - const lsign = this.CurrentToken // TODO: Check sign + let lsign = this.CurrentToken // TODO: Check sign this.nextToken() this.assertToken(TokenType.IDENTIFIER) - const identifier = this.CurrentToken + let identifier = this.CurrentToken this.nextToken() while (this.CurrentToken.T === TokenType.IDENTIFIER) { - identifier.Data += this.CurrentToken.Data + identifier.Data = identifier.Data + this.CurrentToken.Data this.nextToken() } - const rsign = this.CurrentToken + + let rsign = this.CurrentToken this.nextToken() + this.assertToken(TokenType.NUMBER) - const right = this.CurrentToken?.Data + let right = this.CurrentToken?.Data this.nextToken() + this.assertToken(TokenType.RBRACE) this.nextToken()// read off RBRACE // assertToken(TokenType.NEW_LINE, this.CurrentToken?.T) - // + // // this.nextToken() // read off new line return new NumericExpr(left !== 'inf' ? parseFloat(left) : Infinity, lsign, identifier, rsign, right !== 'inf' ? parseFloat(right) : Infinity) } } + function Parse(data: string): SearchExpr { const l = new Lexer(data) - const p = new Parser(l) - - const t = p.CurrentToken.T + let p = new Parser(l) + + const t = p.CurrentToken.T; if (p.CurrentToken?.T === TokenType.NUMERIC) { return p.parseNumericExpr() - } if ([ + } else if ([ TokenType.UNION, TokenType.INTERSECT, TokenType.NOT, @@ -841,32 +848,35 @@ function Parse(data: string): SearchExpr { TokenType.TAG, ].includes(t)) { return p.parseExpandExpr(EntityType[t]) - } if (p.CurrentToken.T === TokenType.GEO_EXPR) { + } else if (p.CurrentToken.T === TokenType.GEO_EXPR) { return p.parseGeoExpr() - } if ([TokenType.FUZZY, TokenType.WILDCARD, TokenType.PREFIX].includes(t)) { + } else if ([TokenType.FUZZY, TokenType.WILDCARD, TokenType.PREFIX].includes(t)) { return p.parseSimpleExpr(EntityType[t]) - } if (p.CurrentToken.T === TokenType.IDS_EXPR) { + } else if (p.CurrentToken.T === TokenType.IDS_EXPR) { return p.parseIdsExpr() - } if (p.CurrentToken.T === TokenType.LEXRANGE_EXPR) { + } else if (p.CurrentToken.T === TokenType.LEXRANGE_EXPR) { return p.parseLexrangeExpr() - } if (p.CurrentToken.T === TokenType.LESS) { + } else if (p.CurrentToken.T === TokenType.LESS) { return p.parseWildcardEmpty() + } else { + return p.parseExpr() } - return p.parseExpr() } export function ParseExplain(output: string) { return Parse(output).toJSON() } + function isLetter(str: string): boolean { return str.length === 1 && (str.match(/[a-z]/i) !== null) } function isDigit(str: string): boolean { - return str >= '0' && str <= '9' + return str >='0' && str <= '9' } + function assert(c: boolean, errorMsg: string) { if (!c) { throw new Error(errorMsg) @@ -875,7 +885,7 @@ function assert(c: boolean, errorMsg: string) { function assertToken(expected: TokenType, actual: TokenType | undefined) { if (actual === undefined) { - throw new Error('Token is undefined') + throw new Error("Token is undefined") } assert(expected === actual, `Expected ${expected}, Actual: ${actual}`) @@ -895,6 +905,7 @@ function assertExpandEntity(t: EntityType) { } } + function assertSimpleEntity(t: EntityType) { if (![ EntityType.FUZZY, @@ -906,26 +917,27 @@ function assertSimpleEntity(t: EntityType) { } export function ParseProfileCluster(info: any[]): [Object, EntityInfo] { - const clusterInfo: { [key: string]: any[] } = {} + + let clusterInfo: {[key: string]: any[]} = {} let key: string = '' let i = 0 while (i < info.length) { if (Array.isArray(info[i])) { clusterInfo[key].push(info[i]) - } else if (typeof (info[i]) === 'string') { + } else if (typeof(info[i]) === 'string') { key = info[i] clusterInfo[key] = [] } else { - throw new Error(`Expected array or string - ${JSON.stringify(info)}`) + throw new Error("Expected array or string - " + JSON.stringify(info)) } i++ } - const shards: EntityInfo[] = [] + let shards: EntityInfo[] = [] - Object.keys(clusterInfo).map((k) => { + Object.keys(clusterInfo).map(k => { if (k.toLowerCase().startsWith('shard')) { - const shardProfileInfo = ParseProfile(clusterInfo[k]) + let shardProfileInfo = ParseProfile(clusterInfo[k]) shards.push({ id: uuidv4(), type: k as EntityType, @@ -940,55 +952,59 @@ export function ParseProfileCluster(info: any[]): [Object, EntityInfo] { id: uuidv4(), type: EntityType.CLUSTER_MERGE, // children: shards, - children: Object.keys(clusterInfo).filter((k) => k.toLowerCase().startsWith('shard')).map((k) => - ParseProfile(clusterInfo[k])) + children: Object.keys(clusterInfo).filter(k => k.toLowerCase().startsWith('shard')).map(k => + ParseProfile(clusterInfo[k]) + ) } ] } -export function ParseProfile(shard: Array): EntityInfo { - const iterators = findFlatProfile('Iterators profile', shard) - let result = iterators ? ParseIteratorProfile(iterators) : null - const processorsProfile: string[][] = findFlatProfile('Result processors profile', shard) +export function ParseProfile(info: any[][]): EntityInfo { + const parserData: any = info[info.length - 2] + let resp = parserData[0].toLowerCase().startsWith('iterators') ? ParseIteratorProfile(parserData[1]) : null + + const processorsProfile: string[][] = info[info.length - 1].slice(1) for (let i = 0; i < processorsProfile.length; i++) { const e = processorsProfile[i] - const id = uuidv4() - result = { + let id = uuidv4() + resp = { id, type: e[1] as EntityType, time: e[3], counter: e[5], - children: result ? [{ ...result, parentId: id }] : [], + children: resp ? [{...resp, parentId: id}] : [], } } - return result as EntityInfo + return resp as EntityInfo } export function ParseIteratorProfile(data: any[]): EntityInfo { - const props: { [key: string]: any } = {} + + let props: {[key: string]: any} = {} // Parse items with the following format [key1, value1, key2, value2, null, key3, value3, key4, value4_1[], value4_2[]] for (let x = 0; x < data.length; x += 2) { let key = data[x] if (key === null) { + while (data[x] === null) { - x += 1 + x = x + 1 } key = data[x] } let val = data[x + 1] - while (data[x + 1] === null) x += 1 + while (data[x + 1] === null) x = x + 1 val = data[x + 1] if (Array.isArray(val)) { - const arr: any[] = [] + let arr: any[] = [] while ((x + 1) < data.length && Array.isArray(data[x + 1])) { arr.push(data[x + 1]) - x += 1 + x = x + 1 } props[key] = arr } else { @@ -996,17 +1012,17 @@ export function ParseIteratorProfile(data: any[]): EntityInfo { } } - const childrens = props['Child iterators'] || props['Child Iterators'] || [] + let childrens = props['Child iterators'] || props['Child Iterators'] || [] const id = uuidv4() return { id, - type: props.Type || props.TYPE, - time: props.Time, - counter: props.Counter, - size: props.Size, - data: props.Term, - children: childrens.map(ParseIteratorProfile).map((d: EntityInfo) => ({ ...d, parentId: id })), + type: props['Type'] || props['TYPE'], + time: props['Time'], + counter: props['Counter'], + size: props['Size'], + data: props['Term'], + children: childrens.map(ParseIteratorProfile).map((d: EntityInfo) => ({...d, parentId: id})), } // const t: EntityType = props['Type'] @@ -1061,13 +1077,13 @@ export function getOutputLevel(output: string) { function ParseEntity(entity: string, children: EntityInfo[]): EntityInfo { const info = entity.trim().split('|') - let time: string | undefined = ''; let - size: string | undefined = '' + let time: string | undefined = '', size: string | undefined = '' const metaData = info.slice(-1)[0].trim() // Is GRAPH.PROFILE output if (metaData.startsWith('Records produced')) { + [size, time] = metaData.trim().split(',') size = size.split(': ')[1] @@ -1089,20 +1105,21 @@ function ParseEntity(entity: string, children: EntityInfo[]): EntityInfo { } } + export function ParseGraphV2(output: string[]) { - const level = getOutputLevel(output[0]) + 1 - const entity = ParseEntity(output[0], []) - const children: EntityInfo[] = [] + const level = getOutputLevel(output[0]) + 1 - const pairs: [number, number][] = [] + let entity = ParseEntity(output[0], []) + let children: EntityInfo[] = [] - let s: number | null = null; const - e: number | null = null + let pairs: [number, number][] = [] + + let s: number | null = null, e: number | null = null let i = 1 while (i < output.length) { - const l = getOutputLevel(output[i]) + let l = getOutputLevel(output[i]) if (l === level) { if (s == null) { s = i @@ -1119,48 +1136,15 @@ export function ParseGraphV2(output: string[]) { } for (let k = 0; k < pairs.length; k++) { - const p = pairs[k] - children.push({ ...ParseGraphV2(output.slice(p[0], p[1])), parentId: entity.id }) + let p = pairs[k] + children.push({...ParseGraphV2(output.slice(p[0], p[1])), parentId: entity.id}) } entity.children = children return entity } + export function GetTotalExecutionTime(g: EntityInfo) { return parseFloat(g.time || '') + g.children.reduce((a, c) => a + GetTotalExecutionTime(c), 0) } - -export const findFlatProfile = (key: string, profiles: any) => { - const index = profiles.findIndex((k: string) => k?.toLowerCase?.() === key?.toLowerCase?.()) - return index > -1 ? profiles[index + 1] : undefined -} - -// Helper to find a profile by key (redis < 8) -export const findProfile = (key: string, profiles: Array<[string, any]>, defautlVal: any = []) => { - const [, ...rest] = profiles.find(([k]) => k?.toLowerCase?.() === key?.toLowerCase?.()) || [] - return rest?.length ? rest : [defautlVal] -} - -// transform profile result to be campatible with redis 8+ -export const transformProfileResult = (profiles: Array<[string, any]>,) => [ - 'Shards', - [ - [ - 'Total profile time', - ...findProfile('Total profile time', profiles), - 'Parsing time', - ...findProfile('Parsing time', profiles), - 'Pipeline creation time', - ...findProfile('Pipeline creation time', profiles), - 'Warning', - ...findProfile('Warning', profiles, 'None'), - 'Iterators profile', - ...findProfile('Iterators profile', profiles), - 'Result processors profile', - findProfile('Result processors profile', profiles) - ] - ], - 'Coordinator', - [] -] diff --git a/redisinsight/ui/src/packages/ri-explain/src/styles/styles.scss b/redisinsight/ui/src/packages/ri-explain/src/styles/styles.less similarity index 99% rename from redisinsight/ui/src/packages/ri-explain/src/styles/styles.scss rename to redisinsight/ui/src/packages/ri-explain/src/styles/styles.less index 1607b33dfb..657f46bccb 100644 --- a/redisinsight/ui/src/packages/ri-explain/src/styles/styles.scss +++ b/redisinsight/ui/src/packages/ri-explain/src/styles/styles.less @@ -1,4 +1,6 @@ @charset "UTF-8"; +@import "_dark_theme.less"; +@import "_light_theme.less"; * { margin: 0px; diff --git a/redisinsight/ui/src/packages/ri-explain/test-data/result-explain.json b/redisinsight/ui/src/packages/ri-explain/test-data/result-explain.json deleted file mode 100644 index bf5f8734b7..0000000000 --- a/redisinsight/ui/src/packages/ri-explain/test-data/result-explain.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "status": "success", - "response": [ - "Results", - " Project", - " Conditional Traverse | (h:State)->(p:President)", - " Filter", - " Node By Label Scan | (h:State)" - ] - } -] diff --git a/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r7--aggregate.json b/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r7--aggregate.json deleted file mode 100644 index 6879d063a6..0000000000 --- a/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r7--aggregate.json +++ /dev/null @@ -1,59 +0,0 @@ -[ - { - "status": "success", - "response": [ - [ - 1, - [], - [], - [], - [], - [], - [], - [], - [], - [], - [] - ], - [ - [ - "Total profile time", - "0" - ], - [ - "Parsing time", - "0" - ], - [ - "Pipeline creation time", - "0" - ], - [ - "Warning" - ], - [ - "Iterators profile", - [ - "Type", - "WILDCARD", - "Time", - "0", - "Counter", - 10 - ] - ], - [ - "Result processors profile", - [ - "Type", - "Index", - "Time", - "0", - "Counter", - 10 - ] - ] - ] - ] - } -] diff --git a/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r7.json b/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r7.json deleted file mode 100644 index 53fc71dec1..0000000000 --- a/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r7.json +++ /dev/null @@ -1,75 +0,0 @@ -[ - { - "status": "success", - "response": [ - [ - 10, - "bicycle:1", - "bicycle:2", - "bicycle:4", - "bicycle:5", - "bicycle:0", - "bicycle:6", - "bicycle:7", - "bicycle:9", - "bicycle:3", - "bicycle:8" - ], - [ - [ - "Total profile time", - "1" - ], - [ - "Parsing time", - "2" - ], - [ - "Pipeline creation time", - "3" - ], - [ - "Warning" - ], - [ - "Iterators profile", - [ - "Type", - "WILDCARD", - "Time", - "0", - "Counter", - 10 - ] - ], - [ - "Result processors profile", - [ - "Type", - "Index", - "Time", - "0", - "Counter", - 10 - ], - [ - "Type", - "Scorer", - "Time", - "0", - "Counter", - 10 - ], - [ - "Type", - "Sorter", - "Time", - "0", - "Counter", - 10 - ] - ] - ] - ] - } -] diff --git a/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r8.json b/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r8.json deleted file mode 100644 index c623ef9100..0000000000 --- a/redisinsight/ui/src/packages/ri-explain/test-data/result-profile_r8.json +++ /dev/null @@ -1,73 +0,0 @@ -[ - { - "status": "success", - "response": [ - [ - 10, - "bicycle:1", - "bicycle:2", - "bicycle:4", - "bicycle:5", - "bicycle:0", - "bicycle:6", - "bicycle:7", - "bicycle:9", - "bicycle:3", - "bicycle:8" - ], - [ - "Shards", - [ - [ - "Total profile time", - "1", - "Parsing time", - "2", - "Pipeline creation time", - "3", - "Warning", - "None", - "Iterators profile", - [ - "Type", - "WILDCARD", - "Time", - "0", - "Counter", - 10 - ], - "Result processors profile", - [ - [ - "Type", - "Index", - "Time", - "0", - "Counter", - 10 - ], - [ - "Type", - "Scorer", - "Time", - "0", - "Counter", - 10 - ], - [ - "Type", - "Sorter", - "Time", - "0", - "Counter", - 10 - ] - ] - ] - ], - "Coordinator", - [] - ] - ] - } -] diff --git a/redisinsight/ui/src/packages/ri-explain/yarn.lock b/redisinsight/ui/src/packages/ri-explain/yarn.lock index bad7871768..53e69221eb 100644 --- a/redisinsight/ui/src/packages/ri-explain/yarn.lock +++ b/redisinsight/ui/src/packages/ri-explain/yarn.lock @@ -225,130 +225,92 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== -"@esbuild/aix-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" - integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== - -"@esbuild/android-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" - integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== - -"@esbuild/android-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" - integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== - -"@esbuild/android-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" - integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== - -"@esbuild/darwin-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" - integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== - -"@esbuild/darwin-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" - integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== - -"@esbuild/freebsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" - integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== - -"@esbuild/freebsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" - integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== - -"@esbuild/linux-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" - integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== - -"@esbuild/linux-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" - integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== - -"@esbuild/linux-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" - integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== - -"@esbuild/linux-loong64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" - integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== - -"@esbuild/linux-mips64el@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" - integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== - -"@esbuild/linux-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" - integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== - -"@esbuild/linux-riscv64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" - integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== - -"@esbuild/linux-s390x@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" - integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== - -"@esbuild/linux-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" - integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== - -"@esbuild/netbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" - integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== - -"@esbuild/netbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" - integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== - -"@esbuild/openbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" - integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== - -"@esbuild/openbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" - integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== - -"@esbuild/sunos-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" - integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== - -"@esbuild/win32-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" - integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== - -"@esbuild/win32-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" - integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== - -"@esbuild/win32-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" - integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" + integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.9": + 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" + +"@lezer/common@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049" + integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ== + +"@lezer/lr@^1.0.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.0.tgz#ed52a75dbbfbb0d1eb63710ea84c35ee647cb67e" + integrity sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg== + dependencies: + "@lezer/common" "^1.0.0" + +"@lmdb/lmdb-darwin-arm64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e" + integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw== + +"@lmdb/lmdb-darwin-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184" + integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug== + +"@lmdb/lmdb-linux-arm64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e" + integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww== + +"@lmdb/lmdb-linux-arm@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d" + integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg== + +"@lmdb/lmdb-linux-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302" + integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ== + +"@lmdb/lmdb-win32-x64@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c" + integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ== "@mapbox/hast-util-table-cell-style@^0.2.0": version "0.2.0" @@ -357,111 +319,826 @@ dependencies: unist-util-visit "^1.4.1" -"@rollup/rollup-android-arm-eabi@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" - integrity sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q== - -"@rollup/rollup-android-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz#9d81ea54fc5650eb4ebbc0a7d84cee331bfa30ad" - integrity sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w== - -"@rollup/rollup-darwin-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz#29448cb1370cf678b50743d2e392be18470abc23" - integrity sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q== - -"@rollup/rollup-darwin-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz#0ca99741c3ed096700557a43bb03359450c7857d" - integrity sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA== - -"@rollup/rollup-freebsd-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz#233f8e4c2f54ad9b719cd9645887dcbd12b38003" - integrity sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ== - -"@rollup/rollup-freebsd-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz#dfba762a023063dc901610722995286df4a48360" - integrity sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw== - -"@rollup/rollup-linux-arm-gnueabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz#b9da54171726266c5ef4237f462a85b3c3cf6ac9" - integrity sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg== - -"@rollup/rollup-linux-arm-musleabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz#b9db69b3f85f5529eb992936d8f411ee6d04297b" - integrity sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug== - -"@rollup/rollup-linux-arm64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz#2550cf9bb4d47d917fd1ab4af756d7bbc3ee1528" - integrity sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw== - -"@rollup/rollup-linux-arm64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz#9d06b26d286c7dded6336961a2f83e48330e0c80" - integrity sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA== - -"@rollup/rollup-linux-loongarch64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz#e957bb8fee0c8021329a34ca8dfa825826ee0e2e" - integrity sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz#e8585075ddfb389222c5aada39ea62d6d2511ccc" - integrity sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw== - -"@rollup/rollup-linux-riscv64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz#7d0d40cee7946ccaa5a4e19a35c6925444696a9e" - integrity sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw== - -"@rollup/rollup-linux-s390x-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz#c2dcd8a4b08b2f2778eceb7a5a5dfde6240ebdea" - integrity sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA== - -"@rollup/rollup-linux-x64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz#183637d91456877cb83d0a0315eb4788573aa588" - integrity sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg== - -"@rollup/rollup-linux-x64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz#036a4c860662519f1f9453807547fd2a11d5bb01" - integrity sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow== - -"@rollup/rollup-win32-arm64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz#51cad812456e616bfe4db5238fb9c7497e042a52" - integrity sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw== - -"@rollup/rollup-win32-ia32-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz#661c8b3e4cd60f51deaa39d153aac4566e748e5e" - integrity sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw== - -"@rollup/rollup-win32-x64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" - integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== +"@mischnic/json-sourcemap@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" + integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/lr" "^1.0.0" + json5 "^2.2.1" + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" + integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== + +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" + integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== + +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" + integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== + +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" + integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== + +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" + integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== + +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" + integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== + +"@parcel/bundler-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.11.0.tgz#b682185ed93b1d977f4174779cbe426a4876cfc2" + integrity sha512-ZIs0865Lp871ZK83k5I9L4DeeE26muNMrHa7j8bvls6fKBJKAn8djrhfU4XOLyziU4aAOobcPwXU0+npWqs52g== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/graph" "3.1.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/cache@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.11.0.tgz#866f62ccf29207bd77bcc294bb4582e4986c4e75" + integrity sha512-RSSkGNjO00lJPyftzaC9eaNVs4jMjPSAm0VJNWQ9JSm2n4A9BzQtTFAt1vhJOzzW1UsQvvBge9DdfkB7a2gIOw== + dependencies: + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/utils" "2.11.0" + lmdb "2.8.5" + +"@parcel/codeframe@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.11.0.tgz#58cf1173ea514255b1ad19960d5035773f50736b" + integrity sha512-YHs9g/i5af/sd/JrWAojU9YFbKffcJ3Tx2EJaK0ME8OJsye91UaI/3lxSUYLmJG9e4WLNJtqci8V5FBMz//ZPg== + dependencies: + chalk "^4.1.0" + +"@parcel/compressor-brotli@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-brotli/-/compressor-brotli-2.11.0.tgz#77265ec498a3b3e88215bc755ec4e5cfd1cd3670" + integrity sha512-5e8aKADVikIbyB1A11YGk4A/oZ7GSmAwDPN5QquXhIB2WQ9hAz59GBSdu4YIpj4s43+Hpvh1ndm7hRY7XjePmA== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/compressor-gzip@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-gzip/-/compressor-gzip-2.11.0.tgz#ba7a50f9ef763f00653d84572c38cb50af680634" + integrity sha512-Tqn8WtqRnGeIUte7z823PMx7EeTcCjzL3zhHiUObZ418+9bJjskwOMSW2cE1nrzt7fP5Cq/cqlUC731zwD4RoA== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/compressor-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.11.0.tgz#44ec3484d1276ad5dc37bc59ea61d6176357e71a" + integrity sha512-RArhBPRTCfz77soX2IECH09NUd76UBWujXiPRcXGPIHK+C3L1cRuzsNcA39QeSb3thz3b99JcozMJ1nkC2Bsgw== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/config-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.11.0.tgz#78c94ba1c7c19615305fddc8067425c1816b7cb2" + integrity sha512-1e2+qcZkm5/0f4eI20p/DemcYiSxq9d/eyjpTXA7PulJaHbL1wonwUAuy3mvnAvDnLOJmAk/obDVgX1ZfxMGtg== + dependencies: + "@parcel/bundler-default" "2.11.0" + "@parcel/compressor-raw" "2.11.0" + "@parcel/namer-default" "2.11.0" + "@parcel/optimizer-css" "2.11.0" + "@parcel/optimizer-htmlnano" "2.11.0" + "@parcel/optimizer-image" "2.11.0" + "@parcel/optimizer-svgo" "2.11.0" + "@parcel/optimizer-swc" "2.11.0" + "@parcel/packager-css" "2.11.0" + "@parcel/packager-html" "2.11.0" + "@parcel/packager-js" "2.11.0" + "@parcel/packager-raw" "2.11.0" + "@parcel/packager-svg" "2.11.0" + "@parcel/packager-wasm" "2.11.0" + "@parcel/reporter-dev-server" "2.11.0" + "@parcel/resolver-default" "2.11.0" + "@parcel/runtime-browser-hmr" "2.11.0" + "@parcel/runtime-js" "2.11.0" + "@parcel/runtime-react-refresh" "2.11.0" + "@parcel/runtime-service-worker" "2.11.0" + "@parcel/transformer-babel" "2.11.0" + "@parcel/transformer-css" "2.11.0" + "@parcel/transformer-html" "2.11.0" + "@parcel/transformer-image" "2.11.0" + "@parcel/transformer-js" "2.11.0" + "@parcel/transformer-json" "2.11.0" + "@parcel/transformer-postcss" "2.11.0" + "@parcel/transformer-posthtml" "2.11.0" + "@parcel/transformer-raw" "2.11.0" + "@parcel/transformer-react-refresh-wrap" "2.11.0" + "@parcel/transformer-svg" "2.11.0" + +"@parcel/core@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.11.0.tgz#5bbe8729e042a216c130864fb9063a26f9455b6f" + integrity sha512-Npe0S6hVaqWEwRL+HI7gtOYOaoE5bJQZTgUDhsDoppWbau51jOlRYOZTXuvRK/jxXnze4/S1sdM24xBYAQ5qkw== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/cache" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/graph" "3.1.0" + "@parcel/logger" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/profiler" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + abortcontroller-polyfill "^1.1.9" + base-x "^3.0.8" + browserslist "^4.6.6" + clone "^2.1.1" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" + json5 "^2.2.0" + msgpackr "^1.9.9" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/diagnostic@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.11.0.tgz#d16dd6c6d5be20e7a61ce2e43b413bfb4172d0b6" + integrity sha512-4dJmOXVL5YGGQRRsQosQbSRONBcboB71mSwaeaEgz3pPdq9QXVPLACkGe/jTXSqa3OnAHu3g5vQLpE1g5xqBqw== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + nullthrows "^1.1.1" + +"@parcel/events@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.11.0.tgz#b0b5769f6afe0932eeae12286f2e21bac3c01cb1" + integrity sha512-K6SOjOrQsz1GdNl2qKBktq7KJ3Q3yxK8WXdmQYo10wG39dr051xtMb38aqieTp4eVhL8Yaq2iJgGkdr11fuBnA== + +"@parcel/fs@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.11.0.tgz#aecd502bbdf0fce3366b48a4728f5b986a146241" + integrity sha512-zWckdnnovdrgdFX4QYuQV4bbKCsh6IYCkmwaB4yp47rhw1MP0lkBINLt4yFPHBxWXOpElCfxjL+z69c9xJQRBQ== + dependencies: + "@parcel/rust" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/watcher" "^2.0.7" + "@parcel/workers" "2.11.0" + +"@parcel/graph@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.1.0.tgz#1cac1e0af72a31d6327c752358886bc0b3193b3f" + integrity sha512-d1dTW5C7A52HgDtoXlyvlET1ypSlmIxSIZOJ1xp3R9L9hgo3h1u3jHNyaoTe/WPkGVe2QnFxh0h+UibVJhu9vg== + dependencies: + nullthrows "^1.1.1" + +"@parcel/logger@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.11.0.tgz#19882e6687899f2085ce23f61ff4d9d588ca5b8f" + integrity sha512-HtMEdCq3LKnvv4T2CIskcqlf2gpBvHMm3pkeUFB/hc/7hW/hE1k6/HA2VOQvc0tBsaMpmEx7PCrfrH56usQSyA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + +"@parcel/markdown-ansi@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.11.0.tgz#35ff20abcc31eafbd395532a9cee3dd6570fa012" + integrity sha512-YA60EWbXi6cLOIzcwRC2wijotPauOGQbUi0vSbu0O6/mjQ68kWCMGz0hwZjDRQcPypQVJEIvTgMymLbvumxwhg== + dependencies: + chalk "^4.1.0" + +"@parcel/namer-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.11.0.tgz#72ae58dd3f83eacc7ca0b4d3b80a8f87a63fb320" + integrity sha512-DEwBSKSClg4DA2xAWimYkw9bFi7MFb9TdT7/TYZStMTsfYHPWOyyjGR7aVr3Ra4wNb+XX6g4rR41yp3HD6KO7A== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/node-resolver-core@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.2.0.tgz#f8e113bffc10b1fd4aa9bd551fc033bb3e8e93b7" + integrity sha512-XJRSxCkNbGFWjfmwFdcQZ/qlzWZd35qLtvLz2va8euGL7M5OMEQOv7dsvEhl0R+CC2zcnfFzZwxk78q6ezs8AQ== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/optimizer-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.11.0.tgz#3908c2e9ee0680c82c43531ce457fd230a38319e" + integrity sha512-bV97PRxshHV3dMwOpLRgcP1QNhrVWh6VVDfm2gmWULpvsjoykcPS6vrCFksY5CpQsSvNHqJBzQjWS8FubUI76w== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/optimizer-htmlnano@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.11.0.tgz#2d62e5a0f15a58feeee67cdd23bf54da528d0207" + integrity sha512-c20pz4EFF5DNFmqYgptlIj49eT6xjGLkDTdHH3RRzxKovuSXWfYSPs3GED3ZsjVuQyjNQif+/MAk9547F7hrdQ== + dependencies: + "@parcel/plugin" "2.11.0" + htmlnano "^2.0.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + svgo "^2.4.0" + +"@parcel/optimizer-image@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.11.0.tgz#7126b18c2e4cbacf9f63481f46e7859329489a66" + integrity sha512-jCaJww5QFG2GuNzYW8nlSW+Ea+Cv47TRnOPJNquFIajgfTLJ5ddsWbaNal0GQsL8yNiCBKWd1AV4W0RH9tG0Jg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + +"@parcel/optimizer-svgo@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.11.0.tgz#e9ecc314d2ffb7584e08ac507f2165c5a0db0445" + integrity sha512-TQpvfBhjV2IsuFHXUolbDS6XWB3DDR2rYTlqlA8LMmuOY7jQd9Bnkl4JnapzWm/bRuzRlzdGjjVCPGL8iShFvA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + svgo "^2.4.0" + +"@parcel/optimizer-swc@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.11.0.tgz#5391873164fe707401414737fff23b4e4311977b" + integrity sha512-ftf42F3JyZxJb6nnLlgNGyNQ273YOla4dFGH/tWC8iTwObHUpWe7cMbCGcrSJBvAlsLkZfLpFNAXFxUgxdKyHQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + "@swc/core" "^1.3.36" + nullthrows "^1.1.1" + +"@parcel/package-manager@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.11.0.tgz#4cef6da831563829e584c2fabb586cb6b19fafcb" + integrity sha512-QzdsrUYlAwIzb8by7WJjqYnbR1MoMKWbtE1MXUeYsZbFusV8B6pOH+lwqNJKS/BFtddZMRPYFueZS2N2fwzjig== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/node-resolver-core" "3.2.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + semver "^7.5.2" + +"@parcel/packager-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.11.0.tgz#1fad7a0448a516fd9686ab7d6796c22715fbd377" + integrity sha512-AyIxsp4eL8c22vp2oO2hSRnr3hSVNkARNZc9DG6uXxCc2Is5tUEX0I4PwxWnAx0EI44l+3zX/o414zT8yV9wwQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/packager-html@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.11.0.tgz#b30e611cf15f55ab4efbf5d101add4ca80449f2f" + integrity sha512-ho5AQ70naTV8IqkKIbKtK+jsXQ5TJfFgtBvmJlyB3YydRMbIc+3g4G0xgIvf15V4uCMw9Md0Sv1W65nQXHPQoA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + +"@parcel/packager-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.11.0.tgz#a591464e729698537c9f115b4a1f0b779a75127b" + integrity sha512-SxjCsd0xQfg5H73YtVJj9VOpr9s0rwMsSoeykjkatbkEla9NsZajsUkd/bfYf+/0WvEKOrB8oUBo15HkGOgKug== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + globals "^13.2.0" + nullthrows "^1.1.1" + +"@parcel/packager-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.11.0.tgz#638749e6f69968f9ffc82c7f60a7332b48ba9777" + integrity sha512-2/0JQ8DZrz7cVNXwD6OYoUUtSSnlr4dsz8ZkpFDKsBJhvMHtC78Sq+1EDixDGOMiUcalSEjNsoHtkpq9uNh+Xw== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/packager-svg@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.11.0.tgz#413fe1db971d1d48b6dea8ecf89396ca7ab07bc2" + integrity sha512-2wQBkzLwcaWFGWz8TP+bgsXgiueWPzrjKsWugWdDfq0FbXh8XVeR/599qnus3RFHZy4cH6L6yq/7zxcljtxK8A== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + posthtml "^0.16.4" + +"@parcel/packager-wasm@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.11.0.tgz#53ffc6f4e8452f5925dc9577425effbadb322421" + integrity sha512-tTy4EbDXeeiZ0oB7L2FWaHSD1mbmYZP6R5HXqkvc5dECGUKPU5Jz6ek2C5AM+HfQdQLKXPQ/Xw3eJnI/AmctVg== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/plugin@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.11.0.tgz#f9e076b67784ef4e5683c6d6877875076b9cdf49" + integrity sha512-9npuKBlhnPn7oeUpLJGecceg16GkXbvzbr6MNSZiHhkx3IBeITHQXlZnp2zAjUOFreNsYOfifwEF2S4KsARfBQ== + dependencies: + "@parcel/types" "2.11.0" + +"@parcel/profiler@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.11.0.tgz#5c8a353c35d1c1cb7af3d53534d9003215bb46b2" + integrity sha512-s10SS09prOdwnaAcjK8M5zO8o+zPJJW5oOqXPNdf6KH4NGD/ue7iOk2xM8QLw6ulSwxE7NDt++lyfW3AXgCZwg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + chrome-trace-event "^1.0.2" + +"@parcel/reporter-cli@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.11.0.tgz#727ee271ee5af002d137fa89ca25ccdca0f797fe" + integrity sha512-hY0iO0f+LifgJHDUIjGQJnxLFSkk2jlbfy+kIaft5oI3/IM+UljecfGO+14XH8mYlqRXXPsT09TJe8ZKQzp4ZQ== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + chalk "^4.1.0" + cli-progress "^3.12.0" + term-size "^2.2.1" + +"@parcel/reporter-dev-server@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.11.0.tgz#3d94b50736ff98de6c94b6051ac1a0103c52d881" + integrity sha512-T4ue1+oLFNdcd9maw8QWQuxzOS2kX2jOrSvYKwYd9oGnqiAr1rpiHYYKJhHng+PF5ybwWkj8dUJfGh2NoQysJA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + +"@parcel/reporter-tracer@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.11.0.tgz#01c77ad1e450fb49f4bf502ba03dc8fe20347459" + integrity sha512-33q4ftO26OPWHkUpEm0bzzSjW2kHEh6q/JFePwf8W6APTQVruj4mV46+Fh6rxX42ixs92K/QoiE0gYgWZQVDHA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + chrome-trace-event "^1.0.3" + nullthrows "^1.1.1" + +"@parcel/resolver-default@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.11.0.tgz#6b5ed85523ce9bbd46f4e9fe44899e12129f636d" + integrity sha512-suZNN2lE5W48LPTwAbG7gnj1IeubkCVEm0XspWXcXUtCzglimNJ8PVVBGx171o5CqDpdbGF3AqHjG9N3uOwXag== + dependencies: + "@parcel/node-resolver-core" "3.2.0" + "@parcel/plugin" "2.11.0" + +"@parcel/runtime-browser-hmr@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.11.0.tgz#a45efcefa6d55e415d24aeea406ce853c23d2798" + integrity sha512-uVwNBtoLMrlPHLvRS05BVhLseduMOpZT36yiIjS0YSBJcC6/otI9AY7ZiDPYmrB5xTqM0R+D554JhPaJHCuocw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + +"@parcel/runtime-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.11.0.tgz#5ceaa82030133db13520d8c79a36f2d872f78514" + integrity sha512-fH3nJoexINz7s4cDzp0Vjsx0k1pMYSa5ch38LbbNqCKTermy0pS0zZuvgfLfHFFP+AMRpFQenrF7h7N3bgDmHw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/runtime-react-refresh@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.11.0.tgz#ea610cc8e8d9c726ad8a13493d80da8a71200d98" + integrity sha512-Kfnc7gLjhoephLMnjABrkIkzVfzPrpJlxiJFIleY2Fm57YhmCfKsEYxm3lHOutNaYl1VArW0LKClPH/VHG9vfQ== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + react-error-overlay "6.0.9" + react-refresh "^0.9.0" + +"@parcel/runtime-service-worker@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.11.0.tgz#1eede22df67178a27f469591be836a7fe673c5ff" + integrity sha512-c8MaSpSbXIKuN5sA/g4UsrsH1BtBZ6Em+eSxt9AYbdPtWrW+qwCioNVZj9lugBRUzDMjVfJz0yK59nS42hABvw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/rust@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.11.0.tgz#8abc8d0b716568df240228f81026546d0d276b5a" + integrity sha512-UkLWdHOD8Md2YmJDPsqd3yIs9chhdl/ATfV/B/xdPKGmqtNouYpDCRlq+WxMt3mLoYgHEg9UwrWLTebo2rr2iQ== + +"@parcel/source-map@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" + integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== + dependencies: + detect-libc "^1.0.3" + +"@parcel/transformer-babel@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.11.0.tgz#3d751ec37d4aa96155494f1f3ff39442d17eeb7a" + integrity sha512-WKGblnp7r426VG+cpeQzc6dj/30EoUaYwyl4OEaigQSJizyuPWTBWTz6FUw+ih1/sg37h+D1BIh9C2FsVzpzbw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + json5 "^2.2.0" + nullthrows "^1.1.1" + semver "^7.5.2" + +"@parcel/transformer-css@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.11.0.tgz#251b837960f7c7f1eed0992551afa68fac9d45f6" + integrity sha512-nFmBulF/ErNoafO87JbVrBavjBMNwE/kahbCRVxc2Mvlphz4F4lBW4eDRS5l4xBqFJaNkHr9R55ehLBBilF4Jw== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + browserslist "^4.6.6" + lightningcss "^1.22.1" + nullthrows "^1.1.1" + +"@parcel/transformer-html@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.11.0.tgz#5b30b4e0b7ab06c838d776defabb2d911040c178" + integrity sha512-90vp7mbvvfqPr9XIINpMcELtywj56f1bxfOkLQgWU1bm22H0FT3i5dqdac++2My0IGDvMwhAEjQfbn4pA579NQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + srcset "4" + +"@parcel/transformer-image@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.11.0.tgz#7364f4da6e8768fbf29870e5d57d771ecc7b3556" + integrity sha512-QiZj18UHf3lVFsi65Vz8YbS3ydx9Pe9x8ktMxE1oh9qpznN8lD7gE/Z9DxuTZB84EZ9pKytKwcv5WGXP25xIFg== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + nullthrows "^1.1.1" + +"@parcel/transformer-js@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.11.0.tgz#1067d929a5c7f577b3c40068d5f6cb6428398771" + integrity sha512-G1sv0n8/fJqHqwUs0iVnVdmRY0Kh8kWaDkuWcU/GJBHMGhUnLXKdNwxX2Av9UdBL14bU1nTINfr9qOfnQotXWg== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.11.0" + "@parcel/workers" "2.11.0" + "@swc/helpers" "^0.5.0" + browserslist "^4.6.6" + nullthrows "^1.1.1" + regenerator-runtime "^0.13.7" + semver "^7.5.2" + +"@parcel/transformer-json@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.11.0.tgz#0ca1ca76a24ad3bf6941bf99ba7af77e845cd653" + integrity sha512-Wt/wgSBaRWmPL4gpvjkV0bCBRxFOtsuLNzsm8vYA5poxTFhuLY+AoyQ8S2+xXU4VxwBfdppfIr2Ny3SwGs8xbQ== + dependencies: + "@parcel/plugin" "2.11.0" + json5 "^2.2.0" + +"@parcel/transformer-less@^2.8.3": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-less/-/transformer-less-2.11.0.tgz#6a2decfa92fc0dace6a703ccb4c244d26cc152e5" + integrity sha512-6mPGUFYp70dowY5LUz6Q03xxMhj2zwjRmmPWNPtu730M0wPFZFjq+ROPLDWQMMQHgiW5A8DiXK14H5LPabutRA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/source-map" "^2.1.1" + less "^4.1.1" + +"@parcel/transformer-postcss@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.11.0.tgz#df5e776a7383400a34c54a64a0bd8f998b656316" + integrity sha512-Ugy8XHBaUptGotsvwzq7gPCvkCopTIqqZ0JZ40Jmy9slGms8wnx06pNHA1Be/RcJwkJ2TbSu+7ncZdgmP5x5GQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/utils" "2.11.0" + clone "^2.1.1" + nullthrows "^1.1.1" + postcss-value-parser "^4.2.0" + semver "^7.5.2" + +"@parcel/transformer-posthtml@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.11.0.tgz#dd28bfbc6f5d04e2e452f63ee7d9e02a62bb72e2" + integrity sha512-dMK4p1RRAoIJEjK/Wz9GOLqwHqdD/VQDhMPk+6sUKp5zf2MhSohUstpp5gKsSZivCM3PS2f8k9rgroacJ/ReuA== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + +"@parcel/transformer-raw@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.11.0.tgz#76e2d83e96b46c2b243d7d43a45a18fe86dd5986" + integrity sha512-2ltp3TgS+cxEqSM1vk5gDtJrYx4KMuRRtbSgSvkdldyOgPhflnLU3/HRz72hXSNGqYOV0/JN0+ocsfPnqR00ug== + dependencies: + "@parcel/plugin" "2.11.0" + +"@parcel/transformer-react-refresh-wrap@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.11.0.tgz#7ce085b7c29cf93e84bdfb4b8b0217f448974ace" + integrity sha512-6pY0CdIgIpXC6XpsDWizf+zLgiuEsJ106HjWLwF7/R72BrvDhLPZ6jRu4UTrnd6bM89KahPw9fZZzjKoA5Efcw== + dependencies: + "@parcel/plugin" "2.11.0" + "@parcel/utils" "2.11.0" + react-refresh "^0.9.0" + +"@parcel/transformer-svg@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.11.0.tgz#3e0f2d623ad536ef527d543fd599baf3c0089345" + integrity sha512-GrTNi04OoQSXsyrB7FqQPeYREscEXFhIBPkyQ0q7WDG/yYynWljiA0kwITCtMjPfv2EDVks292dvM3EcnERRIA== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/plugin" "2.11.0" + "@parcel/rust" "2.11.0" + nullthrows "^1.1.1" + posthtml "^0.16.5" + posthtml-parser "^0.10.1" + posthtml-render "^3.0.0" + semver "^7.5.2" + +"@parcel/types@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.11.0.tgz#c3e96a305d7d95ac3861611915c55e250f582484" + integrity sha512-lN5XlfV9b1s2rli8q1LqsLtu+D4ZwNI3sKmNcL/3tohSfQcF2EgF+MaiANGo9VzXOzoWFHt4dqWjO4OcdyC5tg== + dependencies: + "@parcel/cache" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/source-map" "^2.1.1" + "@parcel/workers" "2.11.0" + utility-types "^3.10.0" + +"@parcel/utils@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.11.0.tgz#d99c8367ba9fc9d99adf8a864ee0491f5ac2df40" + integrity sha512-AcL70cXlIyE7eQdvjQbYxegN5l+skqvlJllxTWg4YkIZe9p8Gmv74jLAeLWh5F+IGl5WRn0TSy9JhNJjIMQGwQ== + dependencies: + "@parcel/codeframe" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/markdown-ansi" "2.11.0" + "@parcel/rust" "2.11.0" + "@parcel/source-map" "^2.1.1" + chalk "^4.1.0" + nullthrows "^1.1.1" + +"@parcel/watcher-android-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz#9c93763794153e4f76920994a423b6ea3257059d" + integrity sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA== + +"@parcel/watcher-darwin-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz#2c79c2abde16aa24cac67e555b60802fd13fe210" + integrity sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA== + +"@parcel/watcher-darwin-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz#23d82f198c5d033f047467c68d7c335f3df49b46" + integrity sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q== + +"@parcel/watcher-freebsd-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz#7310cc86abc27dacd57624bcdba1f0ba092e76df" + integrity sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA== + +"@parcel/watcher-linux-arm-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz#c31b76e695027eeb1078d3d6f1d641d0b900c335" + integrity sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ== + +"@parcel/watcher-linux-arm64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz#56e09b86e9d8a4096f606be118b588da6e965080" + integrity sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg== + +"@parcel/watcher-linux-arm64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz#27ffd5ca5f510ecd638f9ad22e2e813049db54e7" + integrity sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng== + +"@parcel/watcher-linux-x64-glibc@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz#44cbbb1e5884a1ca900655f47a0775218318f934" + integrity sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ== + +"@parcel/watcher-linux-x64-musl@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz#4c33993618c8d5113722852806239cb80360494b" + integrity sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA== + +"@parcel/watcher-win32-arm64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz#2a172fd2fda95fe5389298ca3e70b5a96316162a" + integrity sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg== + +"@parcel/watcher-win32-ia32@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz#279225b2ebe1fadd3c5137c9b2365ad422656904" + integrity sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA== + +"@parcel/watcher-win32-x64@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz#93e0bd0ad1bda2c9a688764b9b30b71dc5b72a71" + integrity sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA== + +"@parcel/watcher@^2.0.7": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.0.tgz#2d3c4ef8832a5cdfdbb76b914f022489933e664f" + integrity sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.0" + "@parcel/watcher-darwin-arm64" "2.4.0" + "@parcel/watcher-darwin-x64" "2.4.0" + "@parcel/watcher-freebsd-x64" "2.4.0" + "@parcel/watcher-linux-arm-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-glibc" "2.4.0" + "@parcel/watcher-linux-arm64-musl" "2.4.0" + "@parcel/watcher-linux-x64-glibc" "2.4.0" + "@parcel/watcher-linux-x64-musl" "2.4.0" + "@parcel/watcher-win32-arm64" "2.4.0" + "@parcel/watcher-win32-ia32" "2.4.0" + "@parcel/watcher-win32-x64" "2.4.0" + +"@parcel/workers@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.11.0.tgz#a818e51ad7f79b0c5b450502331dda851e8e905f" + integrity sha512-wjybqdSy6Nk0N9iBGsFcp7739W2zvx0WGfVxPVShqhz46pIkPOiFF/iSn+kFu5EmMKTRWeUif42+a6rRZ7pCnQ== + dependencies: + "@parcel/diagnostic" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/profiler" "2.11.0" + "@parcel/types" "2.11.0" + "@parcel/utils" "2.11.0" + nullthrows "^1.1.1" + +"@swc/core-darwin-arm64@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.1.tgz#aa66ec80d9c43586888a79b2f80264aa2a96fdf3" + integrity sha512-ePyfx0348UbR4DOAW24TedeJbafnzha8liXFGuQ4bdXtEVXhLfPngprrxKrAddCuv42F9aTxydlF6+adD3FBhA== + +"@swc/core-darwin-x64@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.4.1.tgz#de4037efab46f2d17609b2fea0d0e05ac9f076b5" + integrity sha512-eLf4JSe6VkCMdDowjM8XNC5rO+BrgfbluEzAVtKR8L2HacNYukieumN7EzpYCi0uF1BYwu1ku6tLyG2r0VcGxA== + +"@swc/core-linux-arm-gnueabihf@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.1.tgz#20cf68d591161e84c0b6158af9b749b5ead78800" + integrity sha512-K8VtTLWMw+rkN/jDC9o/Q9SMmzdiHwYo2CfgkwVT29NsGccwmNhCQx6XoYiPKyKGIFKt4tdQnJHKUFzxUqQVtQ== + +"@swc/core-linux-arm64-gnu@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.1.tgz#44dc497e127c0f5651ca74f2e4977743bde3f8e7" + integrity sha512-0e8p4g0Bfkt8lkiWgcdiENH3RzkcqKtpRXIVNGOmVc0OBkvc2tpm2WTx/eoCnes2HpTT4CTtR3Zljj4knQ4Fvw== + +"@swc/core-linux-arm64-musl@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.1.tgz#0e21470421531e560ce0b80bde87ba08e19207fd" + integrity sha512-b/vWGQo2n7lZVUnSQ7NBq3Qrj85GrAPPiRbpqaIGwOytiFSk8VULFihbEUwDe0rXgY4LDm8z8wkgADZcLnmdUA== + +"@swc/core-linux-x64-gnu@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.1.tgz#b008be683e24aa4a7b13123b6dd70580e87b4167" + integrity sha512-AFMQlvkKEdNi1Vk2GFTxxJzbICttBsOQaXa98kFTeWTnFFIyiIj2w7Sk8XRTEJ/AjF8ia8JPKb1zddBWr9+bEQ== + +"@swc/core-linux-x64-musl@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.1.tgz#288b5742578beb9a0c94b5e885634e61eb797583" + integrity sha512-QX2MxIECX1gfvUVZY+jk528/oFkS9MAl76e3ZRvG2KC/aKlCQL0KSzcTSm13mOxkDKS30EaGRDRQWNukGpMeRg== + +"@swc/core-win32-arm64-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.1.tgz#e40a4273aab1509d85e2a561a818f6e705718305" + integrity sha512-OklkJYXXI/tntD2zaY8i3iZldpyDw5q+NAP3k9OlQ7wXXf37djRsHLV0NW4+ZNHBjE9xp2RsXJ0jlOJhfgGoFA== + +"@swc/core-win32-ia32-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.1.tgz#726731b618d0f99c5cdc8bab004df3dae14658a9" + integrity sha512-MBuc3/QfKX9FnLOU7iGN+6yHRTQaPQ9WskiC8s8JFiKQ+7I2p25tay2RplR9dIEEGgVAu6L7auv96LbNTh+FaA== + +"@swc/core-win32-x64-msvc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.1.tgz#71382cfd60811b5fecdf1ece458bd21992a37ae5" + integrity sha512-lu4h4wFBb/bOK6N2MuZwg7TrEpwYXgpQf5R7ObNSXL65BwZ9BG8XRzD+dLJmALu8l5N08rP/TrpoKRoGT4WSxw== + +"@swc/core@^1.3.36": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.4.1.tgz#e6bee0fa5d0c93957b274eaa6186bbbad43f2063" + integrity sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ== + dependencies: + "@swc/counter" "^0.1.2" + "@swc/types" "^0.1.5" + optionalDependencies: + "@swc/core-darwin-arm64" "1.4.1" + "@swc/core-darwin-x64" "1.4.1" + "@swc/core-linux-arm-gnueabihf" "1.4.1" + "@swc/core-linux-arm64-gnu" "1.4.1" + "@swc/core-linux-arm64-musl" "1.4.1" + "@swc/core-linux-x64-gnu" "1.4.1" + "@swc/core-linux-x64-musl" "1.4.1" + "@swc/core-win32-arm64-msvc" "1.4.1" + "@swc/core-win32-ia32-msvc" "1.4.1" + "@swc/core-win32-x64-msvc" "1.4.1" + +"@swc/counter@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.6.tgz#d16d8566b7aea2bef90d059757e2d77f48224160" + integrity sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA== + dependencies: + tslib "^2.4.0" + +"@swc/types@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" + integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/chroma-js@^2.0.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.4.0.tgz#476a16ae848c77478079d6749236fdb98837b92c" integrity sha512-JklMxityrwjBTjGY2anH8JaTx3yjRU3/sEHSblLH1ba5lqcSh1LnImXJZO5peJfXyqKYWjHTGy4s5Wz++hARrw== -"@types/estree@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - "@types/hast@^2.0.0": version "2.3.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" @@ -590,6 +1267,21 @@ dependencies: vfile-message "*" +abortcontroller-polyfill@^1.1.9: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +acorn@^8.5.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -597,6 +1289,18 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-hidden@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" @@ -623,16 +1327,68 @@ bail@^1.0.0: resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + brace@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" integrity sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q== +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.6.6: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +caniuse-lite@^1.0.30001587: + version "1.0.30001588" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" + integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== + ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" @@ -647,6 +1403,14 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-html4@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" @@ -672,11 +1436,37 @@ chroma-js@^2.1.0: resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.4.2.tgz#dffc214ed0c11fa8eefca2c36651d8e57cbfb2b0" integrity sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A== +chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + classnames@^2.2.6, classnames@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" @@ -689,21 +1479,70 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.0.0, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^7.6.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== + dependencies: + chalk "^4.1.0" + date-fns "^2.29.1" + lodash "^4.17.21" + rxjs "^7.0.0" + shell-quote "^1.7.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^17.3.1" + convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -715,6 +1554,32 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.1: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + css-box-model@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" @@ -722,11 +1587,57 @@ css-box-model@^1.2.0: dependencies: tiny-invariant "^1.0.6" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + csstype@^3.0.2, csstype@^3.0.8: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +date-fns@^2.29.1: + version "2.29.3" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-libc@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + detect-node-es@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" @@ -737,11 +1648,78 @@ diff-match-patch@^1.0.4: resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== + +electron-to-chromium@^1.4.668: + version "1.4.673" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz#1f077d9a095761804aec7ec6346c3f4b69b56534" + integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emoticon@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -749,36 +1727,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -esbuild@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" - integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.24.2" - "@esbuild/android-arm" "0.24.2" - "@esbuild/android-arm64" "0.24.2" - "@esbuild/android-x64" "0.24.2" - "@esbuild/darwin-arm64" "0.24.2" - "@esbuild/darwin-x64" "0.24.2" - "@esbuild/freebsd-arm64" "0.24.2" - "@esbuild/freebsd-x64" "0.24.2" - "@esbuild/linux-arm" "0.24.2" - "@esbuild/linux-arm64" "0.24.2" - "@esbuild/linux-ia32" "0.24.2" - "@esbuild/linux-loong64" "0.24.2" - "@esbuild/linux-mips64el" "0.24.2" - "@esbuild/linux-ppc64" "0.24.2" - "@esbuild/linux-riscv64" "0.24.2" - "@esbuild/linux-s390x" "0.24.2" - "@esbuild/linux-x64" "0.24.2" - "@esbuild/netbsd-arm64" "0.24.2" - "@esbuild/netbsd-x64" "0.24.2" - "@esbuild/openbsd-arm64" "0.24.2" - "@esbuild/openbsd-x64" "0.24.2" - "@esbuild/sunos-x64" "0.24.2" - "@esbuild/win32-arm64" "0.24.2" - "@esbuild/win32-ia32" "0.24.2" - "@esbuild/win32-x64" "0.24.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" @@ -802,6 +1754,13 @@ file-selector@^0.4.0: dependencies: tslib "^2.0.3" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -814,26 +1773,65 @@ focus-lock@^0.11.6: dependencies: tslib "^2.0.3" -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== +get-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.2.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +graceful-fs@^4.1.2: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -948,7 +1946,38 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -import-fresh@^3.2.1: +htmlnano@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.1.0.tgz#67b31b3cd3fad23f0b610ca628fdb48382209c3c" + integrity sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g== + dependencies: + cosmiconfig "^8.0.0" + posthtml "^0.16.5" + timsort "^0.3.0" + +htmlparser2@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -956,7 +1985,15 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -inherits@^2.0.0: +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1008,16 +2045,48 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-json@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" + integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -1028,21 +2097,135 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json5@^2.2.0, json5@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +less@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" + integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +lightningcss-darwin-arm64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.23.0.tgz#11780f37158a458cead5e89202f74cd99b926e36" + integrity sha512-kl4Pk3Q2lnE6AJ7Qaij47KNEfY2/UXRZBT/zqGA24B8qwkgllr/j7rclKOf1axcslNXvvUdztjo4Xqh39Yq1aA== + +lightningcss-darwin-x64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.23.0.tgz#8394edaa04f0984b971eab42b6f68edb1258b3ed" + integrity sha512-KeRFCNoYfDdcolcFXvokVw+PXCapd2yHS1Diko1z1BhRz/nQuD5XyZmxjWdhmhN/zj5sH8YvWsp0/lPLVzqKpg== + +lightningcss-freebsd-x64@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.23.0.tgz#d3f6faddc424f17ed046e8be9ca97868a5f804ed" + integrity sha512-xhnhf0bWPuZxcqknvMDRFFo2TInrmQRWZGB0f6YoAsZX8Y+epfjHeeOIGCfAmgF0DgZxHwYc8mIR5tQU9/+ROA== + +lightningcss-linux-arm-gnueabihf@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.23.0.tgz#040e9718c9a9dc088322da33983a894564ffcb10" + integrity sha512-fBamf/bULvmWft9uuX+bZske236pUZEoUlaHNBjnueaCTJ/xd8eXgb0cEc7S5o0Nn6kxlauMBnqJpF70Bgq3zg== + +lightningcss-linux-arm64-gnu@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.23.0.tgz#05cfcfa2cf47a042ca11cfce520ae9f91e4efcdb" + integrity sha512-RS7sY77yVLOmZD6xW2uEHByYHhQi5JYWmgVumYY85BfNoVI3DupXSlzbw+b45A9NnVKq45+oXkiN6ouMMtTwfg== + +lightningcss-linux-arm64-musl@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.23.0.tgz#3212a10dff37c70808113fbcf7cbd1b63c6cbc6f" + integrity sha512-cU00LGb6GUXCwof6ACgSMKo3q7XYbsyTj0WsKHLi1nw7pV0NCq8nFTn6ZRBYLoKiV8t+jWl0Hv8KkgymmK5L5g== + +lightningcss-linux-x64-gnu@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.23.0.tgz#3b27da32889285b1c5de3f26094ee234054634fc" + integrity sha512-q4jdx5+5NfB0/qMbXbOmuC6oo7caPnFghJbIAV90cXZqgV8Am3miZhC4p+sQVdacqxfd+3nrle4C8icR3p1AYw== + +lightningcss-linux-x64-musl@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.23.0.tgz#ad65b5a944f10d966cc10070bf20f81ddadd4240" + integrity sha512-G9Ri3qpmF4qef2CV/80dADHKXRAQeQXpQTLx7AiQrBYQHqBjB75oxqj06FCIe5g4hNCqLPnM9fsO4CyiT1sFSQ== + +lightningcss-win32-x64-msvc@1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.23.0.tgz#62f3f619a7bb44f8713973103fbe1bcbd9d455f9" + integrity sha512-1rcBDJLU+obPPJM6qR5fgBUiCdZwZLafZM5f9kwjFLkb/UBNIzmae39uCSmh71nzPCTXZqHbvwu23OWnWEz+eg== + +lightningcss@^1.22.1: + version "1.23.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.23.0.tgz#58c94a533d02d8416d4f2ec9ab87641f61943c78" + integrity sha512-SEArWKMHhqn/0QzOtclIwH5pXIYQOUEkF8DgICd/105O+GCgd7jxjNod/QPnBCSWvpRHQBGVz5fQ9uScby03zA== + dependencies: + detect-libc "^1.0.3" + optionalDependencies: + lightningcss-darwin-arm64 "1.23.0" + lightningcss-darwin-x64 "1.23.0" + lightningcss-freebsd-x64 "1.23.0" + lightningcss-linux-arm-gnueabihf "1.23.0" + lightningcss-linux-arm64-gnu "1.23.0" + lightningcss-linux-arm64-musl "1.23.0" + lightningcss-linux-x64-gnu "1.23.0" + lightningcss-linux-x64-musl "1.23.0" + lightningcss-win32-x64-msvc "1.23.0" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lmdb@2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837" + integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ== + dependencies: + msgpackr "^1.9.5" + node-addon-api "^6.1.0" + node-gyp-build-optional-packages "5.1.1" + ordered-binary "^1.4.1" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "2.8.5" + "@lmdb/lmdb-darwin-x64" "2.8.5" + "@lmdb/lmdb-linux-arm" "2.8.5" + "@lmdb/lmdb-linux-arm64" "2.8.5" + "@lmdb/lmdb-linux-x64" "2.8.5" + "@lmdb/lmdb-win32-x64" "2.8.5" + lodash-es@^4.17.15: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" @@ -1077,6 +2260,14 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" @@ -1103,6 +2294,11 @@ mdast-util-to-hast@^10.0.0, mdast-util-to-hast@^10.2.0: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -1113,10 +2309,64 @@ mdurl@^1.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -nanoid@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== +micromatch@^4.0.5, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +msgpackr-extract@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" + integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== + dependencies: + node-gyp-build-optional-packages "5.0.7" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" + +msgpackr@^1.9.5, msgpackr@^1.9.9: + version "1.10.1" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" + integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== + optionalDependencies: + msgpackr-extract "^3.0.2" + +needle@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== + dependencies: + iconv-lite "^0.6.3" + sax "^1.2.4" + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== node-emoji@^1.10.0: version "1.11.0" @@ -1125,6 +2375,35 @@ node-emoji@^1.10.0: dependencies: lodash "^4.17.21" +node-gyp-build-optional-packages@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" + integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== + +node-gyp-build-optional-packages@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== + dependencies: + detect-libc "^2.0.1" + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + numeral@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" @@ -1135,6 +2414,38 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +ordered-binary@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.1.tgz#94ccbf14181711081ee23931db0dc3f58aaa0df6" + integrity sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A== + +parcel@^2.8.3: + version "2.11.0" + resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.11.0.tgz#9448269b677d7ba251c92a2a5ce4539fcf0dbf5c" + integrity sha512-H/RI1/DmuOkL8RuG/EpNPvtzrbF+7jA/R56ydEEm+lqFbYktKB4COR7JXdHkZXRgbSJyimrFB8d0r9+SaRnj0Q== + dependencies: + "@parcel/config-default" "2.11.0" + "@parcel/core" "2.11.0" + "@parcel/diagnostic" "2.11.0" + "@parcel/events" "2.11.0" + "@parcel/fs" "2.11.0" + "@parcel/logger" "2.11.0" + "@parcel/package-manager" "2.11.0" + "@parcel/reporter-cli" "2.11.0" + "@parcel/reporter-dev-server" "2.11.0" + "@parcel/reporter-tracer" "2.11.0" + "@parcel/utils" "2.11.0" + chalk "^4.1.0" + commander "^7.0.0" + get-port "^4.2.0" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -1154,7 +2465,7 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -1164,11 +2475,26 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -1179,19 +2505,54 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +posthtml-parser@^0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" + integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== + dependencies: + htmlparser2 "^7.1.1" + +posthtml-parser@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" + integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== + dependencies: + htmlparser2 "^7.1.1" + +posthtml-render@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" + integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== + dependencies: + is-json "^2.0.1" -postcss@^8.4.49: - version "8.5.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== +posthtml@^0.16.4, posthtml@^0.16.5: + version "0.16.6" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" + integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" + posthtml-parser "^0.11.0" + posthtml-render "^3.0.0" prismjs@~1.27.0: version "1.27.0" @@ -1214,6 +2575,11 @@ property-information@^5.0.0, property-information@^5.3.0: dependencies: xtend "^4.0.0" +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -1272,6 +2638,11 @@ react-dropzone@^11.2.0: file-selector "^0.4.0" prop-types "^15.8.1" +react-error-overlay@6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + react-focus-lock@^2.9.2: version "2.9.4" resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.4.tgz#4753f6dcd167c39050c9d84f9c63c71b3ff8462e" @@ -1331,6 +2702,11 @@ react-redux@^7.2.0: prop-types "^15.7.2" react-is "^17.0.2" +react-refresh@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" + integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== + react-remove-scroll-bar@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" @@ -1400,7 +2776,7 @@ refractor@^3.4.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerator-runtime@^0.13.11: +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: 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== @@ -1470,6 +2846,11 @@ repeat-string@^1.5.4: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== +require-directory@^2.1.1: + version "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== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -1489,33 +2870,34 @@ resolve@^1.19.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -rollup@^4.23.0: - version "4.30.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" - integrity sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w== +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.30.1" - "@rollup/rollup-android-arm64" "4.30.1" - "@rollup/rollup-darwin-arm64" "4.30.1" - "@rollup/rollup-darwin-x64" "4.30.1" - "@rollup/rollup-freebsd-arm64" "4.30.1" - "@rollup/rollup-freebsd-x64" "4.30.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" - "@rollup/rollup-linux-arm-musleabihf" "4.30.1" - "@rollup/rollup-linux-arm64-gnu" "4.30.1" - "@rollup/rollup-linux-arm64-musl" "4.30.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" - "@rollup/rollup-linux-riscv64-gnu" "4.30.1" - "@rollup/rollup-linux-s390x-gnu" "4.30.1" - "@rollup/rollup-linux-x64-gnu" "4.30.1" - "@rollup/rollup-linux-x64-musl" "4.30.1" - "@rollup/rollup-win32-arm64-msvc" "4.30.1" - "@rollup/rollup-win32-ia32-msvc" "4.30.1" - "@rollup/rollup-win32-x64-msvc" "4.30.1" - fsevents "~2.3.2" + glob "^7.1.3" + +rxjs@^7.0.0: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== scheduler@^0.23.0: version "0.23.0" @@ -1524,33 +2906,82 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -semver@^7.5.2: +semver@^5.6.0, semver@^7.5.2: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== + +srcset@4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" + integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + stringify-entities@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" @@ -1560,6 +2991,13 @@ stringify-entities@^3.0.1: character-entities-legacy "^1.0.0" xtend "^4.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -1579,21 +3017,68 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svgo@^2.4.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + tabbable@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-3.1.2.tgz#f2d16cccd01f400e38635c7181adfe0ad965a4a2" integrity sha512-wjB6puVXTYO0BSFtCmWQubA/KIn7Xvajw0x0l6eJUudMG/EAiJvIUnyNX6xO4NpGrJ16lbD0eUseB9WxW0vlpQ== +term-size@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +terser@^5.16.6: + version "5.17.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.1.tgz#948f10830454761e2eeedc6debe45c532c83fd69" + integrity sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + text-diff@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/text-diff/-/text-diff-1.0.1.tgz#6c105905435e337857375c9d2f6ca63e453ff565" integrity sha512-jAnlP3ggZk7FeLX1awaMR8Y2sMyil9P9FXvNjaIJIQBAom1zvpKGGH31htOVrUFp0vlyygmJJpNrbJ4rfjsxrA== +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== + tiny-invariant@^1.0.6: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" @@ -1604,6 +3089,18 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" @@ -1624,6 +3121,16 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.3.0, tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -1721,6 +3228,14 @@ unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + url-parse@^1.5.0: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -1795,25 +3310,47 @@ vfile@^4.0.0, vfile@^4.2.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -"vite@file:../node_modules/vite": - version "6.0.7" - dependencies: - esbuild "^0.24.2" - postcss "^8.4.49" - rollup "^4.23.0" - optionalDependencies: - fsevents "~2.3.3" +weak-lru-cache@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -1824,6 +3361,24 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" diff --git a/redisinsight/ui/src/packages/vite.config.mjs b/redisinsight/ui/src/packages/vite.config.mjs deleted file mode 100644 index 2ca5557685..0000000000 --- a/redisinsight/ui/src/packages/vite.config.mjs +++ /dev/null @@ -1,97 +0,0 @@ -import { defineConfig } from 'vite' -import { transform } from 'esbuild' -import react from '@vitejs/plugin-react' -import svgr from 'vite-plugin-svgr' -import { ViteEjsPlugin } from 'vite-plugin-ejs' -import { viteStaticCopy } from 'vite-plugin-static-copy' -import { resolve } from 'path' - -const riPlugins = [ - { name: 'redisearch', entry: 'src/main.tsx' }, - { name: 'clients-list', entry: 'src/main.tsx' }, - { name: 'redisgraph', entry: 'src/main.tsx' }, - { name: 'redistimeseries-app', entry: 'src/main.tsx' }, - { name: 'ri-explain', entry: 'src/main.tsx' }, -] - -/** - * @type {import('vite').UserConfig} - */ -export default defineConfig({ - plugins: [ - react(), - svgr({ include: ['**/*.svg?react'] }), - ViteEjsPlugin(), - minifyEs(), - // Copy public static for all plugins - viteStaticCopy({ - silent: true, - targets: riPlugins.map(({ name: pluginDir }) => ({ - src: `./${pluginDir}/public/*`, - dest: `./${pluginDir}/dist/`, - })) - }), - ], - resolve: { - alias: { - lodash: 'lodash-es', - '@elastic/eui$': '@elastic/eui/optimize/lib', - }, - }, - server: { - port: 8081, - fs: { - allow: [ - '..', - ], - }, - }, - envPrefix: 'RI_', - build: { - outDir: './', - cssCodeSplit: true, - lib: { - // Multi entries - entry: Object.fromEntries( - riPlugins.map(({ name: pluginDir, entry }) => [pluginDir, resolve(__dirname, `./${pluginDir}/${entry}`)]) - ), - }, - - rollupOptions: { - output: [ - { - dir: './', - format: 'esm', - entryFileNames: '[name]/dist/index.js', - assetFileNames: '[name]/dist/styles.css', - chunkFileNames: 'common/index.js', - }, - ], - }, - target: 'es2022', - minify: 'esbuild', - - define: { - this: 'window', - }, - }, - define: { - global: 'globalThis', - 'process.env': {}, - }, -}) - -function minifyEs() { - return { - name: 'minifyEs', - renderChunk: { - order: 'post', - async handler(code, chunk, outputOptions) { - if (outputOptions.format === 'es' && chunk.fileName.endsWith('.js')) { - return transform(code, { minify: true }) - } - return code - }, - } - } -} diff --git a/redisinsight/ui/src/packages/yarn.lock b/redisinsight/ui/src/packages/yarn.lock deleted file mode 100644 index 0e4dc35a88..0000000000 --- a/redisinsight/ui/src/packages/yarn.lock +++ /dev/null @@ -1,3093 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== - dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/compat-data@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.5.tgz#df93ac37f4417854130e21d72c66ff3d4b897fc7" - integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" - integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.0" - "@babel/generator" "^7.26.0" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.0" - "@babel/parser" "^7.26.0" - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.26.0" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.26.0", "@babel/generator@^7.26.5", "@babel/generator@^7.7.2": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.5.tgz#e44d4ab3176bbcaf78a5725da5f1dc28802a9458" - integrity sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw== - dependencies: - "@babel/parser" "^7.26.5" - "@babel/types" "^7.26.5" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - -"@babel/helper-compilation-targets@^7.25.9": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz#75d92bb8d8d51301c0d49e52a65c9a7fe94514d8" - integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA== - dependencies: - "@babel/compat-data" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" - integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== - -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== - -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== - -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== - -"@babel/helpers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" - integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== - dependencies: - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.5.tgz#6fec9aebddef25ca57a935c86dbb915ae2da3e1f" - integrity sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw== - dependencies: - "@babel/types" "^7.26.5" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" - integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-syntax-import-meta@^7.10.4": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" - integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - 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" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" - integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/runtime@^7.21.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" - integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.25.9", "@babel/template@^7.3.3": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" - integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== - dependencies: - "@babel/code-frame" "^7.25.9" - "@babel/parser" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/traverse@^7.25.9": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.5.tgz#6d0be3e772ff786456c1a37538208286f6e79021" - integrity sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.5" - "@babel/parser" "^7.26.5" - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.5" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.5", "@babel/types@^7.3.3": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.5.tgz#7a1e1c01d28e26d1fe7f8ec9567b3b92b9d07747" - integrity sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg== - dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - -"@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" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@esbuild/aix-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" - integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== - -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" - integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" - integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/android-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" - integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" - integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/darwin-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" - integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" - integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/freebsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" - integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" - integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" - integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" - integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-loong64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" - integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-mips64el@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" - integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" - integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-riscv64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" - integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@esbuild/linux-s390x@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" - integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== - -"@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/linux-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" - integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== - -"@esbuild/netbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" - integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/netbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" - integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== - -"@esbuild/openbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" - integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/openbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" - integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/sunos-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" - integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" - integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" - integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== - -"@esbuild/win32-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" - integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@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.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@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 "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - 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.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.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.3.5": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - 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" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@rollup/pluginutils@5": - version "5.1.4" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a" - integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^4.0.2" - -"@rollup/rollup-android-arm-eabi@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" - integrity sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q== - -"@rollup/rollup-android-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz#9d81ea54fc5650eb4ebbc0a7d84cee331bfa30ad" - integrity sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w== - -"@rollup/rollup-darwin-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz#29448cb1370cf678b50743d2e392be18470abc23" - integrity sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q== - -"@rollup/rollup-darwin-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz#0ca99741c3ed096700557a43bb03359450c7857d" - integrity sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA== - -"@rollup/rollup-freebsd-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz#233f8e4c2f54ad9b719cd9645887dcbd12b38003" - integrity sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ== - -"@rollup/rollup-freebsd-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz#dfba762a023063dc901610722995286df4a48360" - integrity sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw== - -"@rollup/rollup-linux-arm-gnueabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz#b9da54171726266c5ef4237f462a85b3c3cf6ac9" - integrity sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg== - -"@rollup/rollup-linux-arm-musleabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz#b9db69b3f85f5529eb992936d8f411ee6d04297b" - integrity sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug== - -"@rollup/rollup-linux-arm64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz#2550cf9bb4d47d917fd1ab4af756d7bbc3ee1528" - integrity sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw== - -"@rollup/rollup-linux-arm64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz#9d06b26d286c7dded6336961a2f83e48330e0c80" - integrity sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA== - -"@rollup/rollup-linux-loongarch64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz#e957bb8fee0c8021329a34ca8dfa825826ee0e2e" - integrity sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz#e8585075ddfb389222c5aada39ea62d6d2511ccc" - integrity sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw== - -"@rollup/rollup-linux-riscv64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz#7d0d40cee7946ccaa5a4e19a35c6925444696a9e" - integrity sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw== - -"@rollup/rollup-linux-s390x-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz#c2dcd8a4b08b2f2778eceb7a5a5dfde6240ebdea" - integrity sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA== - -"@rollup/rollup-linux-x64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz#183637d91456877cb83d0a0315eb4788573aa588" - integrity sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg== - -"@rollup/rollup-linux-x64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz#036a4c860662519f1f9453807547fd2a11d5bb01" - integrity sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow== - -"@rollup/rollup-win32-arm64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz#51cad812456e616bfe4db5238fb9c7497e042a52" - integrity sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw== - -"@rollup/rollup-win32-ia32-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz#661c8b3e4cd60f51deaa39d153aac4566e748e5e" - integrity sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw== - -"@rollup/rollup-win32-x64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" - integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - 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" - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== - dependencies: - "@babel/types" "^7.20.7" - -"@types/d3-array@*": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" - integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== - -"@types/d3-axis@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-3.0.6.tgz#e760e5765b8188b1defa32bc8bb6062f81e4c795" - integrity sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-brush@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-3.0.6.tgz#c2f4362b045d472e1b186cdbec329ba52bdaee6c" - integrity sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-chord@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-3.0.6.tgz#1706ca40cf7ea59a0add8f4456efff8f8775793d" - integrity sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg== - -"@types/d3-color@*": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" - integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== - -"@types/d3-contour@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-3.0.6.tgz#9ada3fa9c4d00e3a5093fed0356c7ab929604231" - integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== - dependencies: - "@types/d3-array" "*" - "@types/geojson" "*" - -"@types/d3-delaunay@*": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz#185c1a80cc807fdda2a3fe960f7c11c4a27952e1" - integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== - -"@types/d3-dispatch@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz#096efdf55eb97480e3f5621ff9a8da552f0961e7" - integrity sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ== - -"@types/d3-drag@*": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.7.tgz#b13aba8b2442b4068c9a9e6d1d82f8bcea77fc02" - integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-dsv@*": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.7.tgz#0a351f996dc99b37f4fa58b492c2d1c04e3dac17" - integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== - -"@types/d3-ease@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" - integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== - -"@types/d3-fetch@*": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.7.tgz#c04a2b4f23181aa376f30af0283dbc7b3b569980" - integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== - dependencies: - "@types/d3-dsv" "*" - -"@types/d3-force@*": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.10.tgz#6dc8fc6e1f35704f3b057090beeeb7ac674bff1a" - integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw== - -"@types/d3-format@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" - integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== - -"@types/d3-geo@*": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.1.0.tgz#b9e56a079449174f0a2c8684a9a4df3f60522440" - integrity sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ== - dependencies: - "@types/geojson" "*" - -"@types/d3-hierarchy@*": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz#6023fb3b2d463229f2d680f9ac4b47466f71f17b" - integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg== - -"@types/d3-interpolate@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" - integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== - dependencies: - "@types/d3-color" "*" - -"@types/d3-path@*": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.1.0.tgz#2b907adce762a78e98828f0b438eaca339ae410a" - integrity sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ== - -"@types/d3-polygon@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz#dfae54a6d35d19e76ac9565bcb32a8e54693189c" - integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== - -"@types/d3-quadtree@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz#d4740b0fe35b1c58b66e1488f4e7ed02952f570f" - integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== - -"@types/d3-random@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-3.0.3.tgz#ed995c71ecb15e0cd31e22d9d5d23942e3300cfb" - integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ== - -"@types/d3-scale-chromatic@*": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" - integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== - -"@types/d3-scale@*": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.8.tgz#d409b5f9dcf63074464bf8ddfb8ee5a1f95945bb" - integrity sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ== - dependencies: - "@types/d3-time" "*" - -"@types/d3-selection@*": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.11.tgz#bd7a45fc0a8c3167a631675e61bc2ca2b058d4a3" - integrity sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w== - -"@types/d3-shape@*": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.7.tgz#2b7b423dc2dfe69c8c93596e673e37443348c555" - integrity sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg== - dependencies: - "@types/d3-path" "*" - -"@types/d3-time-format@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.3.tgz#d6bc1e6b6a7db69cccfbbdd4c34b70632d9e9db2" - integrity sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg== - -"@types/d3-time@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.4.tgz#8472feecd639691450dd8000eb33edd444e1323f" - integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== - -"@types/d3-timer@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" - integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== - -"@types/d3-transition@*": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.9.tgz#1136bc57e9ddb3c390dccc9b5ff3b7d2b8d94706" - integrity sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-zoom@*": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz#dccb32d1c56b1e1c6e0f1180d994896f038bc40b" - integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== - dependencies: - "@types/d3-interpolate" "*" - "@types/d3-selection" "*" - -"@types/d3@^7.1.0": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.3.tgz#d4550a85d08f4978faf0a4c36b848c61eaac07e2" - integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== - dependencies: - "@types/d3-array" "*" - "@types/d3-axis" "*" - "@types/d3-brush" "*" - "@types/d3-chord" "*" - "@types/d3-color" "*" - "@types/d3-contour" "*" - "@types/d3-delaunay" "*" - "@types/d3-dispatch" "*" - "@types/d3-drag" "*" - "@types/d3-dsv" "*" - "@types/d3-ease" "*" - "@types/d3-fetch" "*" - "@types/d3-force" "*" - "@types/d3-format" "*" - "@types/d3-geo" "*" - "@types/d3-hierarchy" "*" - "@types/d3-interpolate" "*" - "@types/d3-path" "*" - "@types/d3-polygon" "*" - "@types/d3-quadtree" "*" - "@types/d3-random" "*" - "@types/d3-scale" "*" - "@types/d3-scale-chromatic" "*" - "@types/d3-selection" "*" - "@types/d3-shape" "*" - "@types/d3-time" "*" - "@types/d3-time-format" "*" - "@types/d3-timer" "*" - "@types/d3-transition" "*" - "@types/d3-zoom" "*" - -"@types/estree@1.0.6", "@types/estree@^1.0.0": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - -"@types/file-saver@^2.0.5": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.7.tgz#8dbb2f24bdc7486c54aa854eb414940bbd056f7d" - integrity sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A== - -"@types/geojson@*": - version "7946.0.15" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.15.tgz#f9d55fd5a0aa2de9dc80b1b04e437538b7298868" - integrity sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA== - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^27.4.1": - version "27.5.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" - integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== - dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" - -"@types/node@*": - version "22.10.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.7.tgz#14a1ca33fd0ebdd9d63593ed8d3fbc882a6d28d7" - integrity sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg== - dependencies: - undici-types "~6.20.0" - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.33" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" - integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== - dependencies: - "@types/yargs-parser" "*" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -async@^3.2.3: - version "3.2.6" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" - integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" - integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@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" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - 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" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browserslist@^4.24.0: - version "4.24.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" - integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== - dependencies: - caniuse-lite "^1.0.30001688" - electron-to-chromium "^1.5.73" - node-releases "^2.0.19" - update-browserslist-db "^1.1.1" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001688: - version "1.0.30001692" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz#4585729d95e6b95be5b439da6ab55250cd125bf9" - integrity sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A== - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cjs-module-lexer@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" - integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concurrently@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" - integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== - dependencies: - chalk "^4.1.0" - date-fns "^2.29.1" - lodash "^4.17.21" - rxjs "^7.0.0" - shell-quote "^1.7.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^17.3.1" - -convert-source-map@^2.0.0: - version "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== - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-spawn@^7.0.1, cross-spawn@^7.0.3: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -date-fns@^2.29.1: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== - dependencies: - ms "^2.1.3" - -dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -ejs@^3.1.9: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.5.73: - version "1.5.83" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz#3f74078f0c83e24bf7e692eaa855a998d1bec34f" - integrity sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ== - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -esbuild@^0.17.12: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== - optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" - -esbuild@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" - integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.24.2" - "@esbuild/android-arm" "0.24.2" - "@esbuild/android-arm64" "0.24.2" - "@esbuild/android-x64" "0.24.2" - "@esbuild/darwin-arm64" "0.24.2" - "@esbuild/darwin-x64" "0.24.2" - "@esbuild/freebsd-arm64" "0.24.2" - "@esbuild/freebsd-x64" "0.24.2" - "@esbuild/linux-arm" "0.24.2" - "@esbuild/linux-arm64" "0.24.2" - "@esbuild/linux-ia32" "0.24.2" - "@esbuild/linux-loong64" "0.24.2" - "@esbuild/linux-mips64el" "0.24.2" - "@esbuild/linux-ppc64" "0.24.2" - "@esbuild/linux-riscv64" "0.24.2" - "@esbuild/linux-s390x" "0.24.2" - "@esbuild/linux-x64" "0.24.2" - "@esbuild/netbsd-arm64" "0.24.2" - "@esbuild/netbsd-x64" "0.24.2" - "@esbuild/openbsd-arm64" "0.24.2" - "@esbuild/openbsd-x64" "0.24.2" - "@esbuild/sunos-x64" "0.24.2" - "@esbuild/win32-arm64" "0.24.2" - "@esbuild/win32-ia32" "0.24.2" - "@esbuild/win32-x64" "0.24.2" - -escalade@^3.1.1, escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -fast-glob@^3.2.11: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - -fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fastq@^1.6.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" - integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -fs-extra@^11.1.0: - version "11.3.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" - integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^7.1.3, glob@^7.1.4: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -import-local@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" - integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.16.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" - integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jake@^10.8.5: - version "10.9.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" - integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.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.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@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.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^27.0.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@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.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - 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/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsesc@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" - integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -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" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4, micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-int64@^0.4.0: - version "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.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" - integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -picocolors@^1.0.0, picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -postcss@^8.4.49: - version "8.5.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== - dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -pretty-format@^27.0.0, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-is@^18.0.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -require-directory@^2.1.1: - version "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== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve.exports@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" - integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== - -resolve@^1.20.0: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== - dependencies: - is-core-module "^2.16.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup-plugin-css-only@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-css-only/-/rollup-plugin-css-only-4.5.2.tgz#f3a74bf889b538f3cc73c40b391cbc6b4bbb0ee4" - integrity sha512-7rj9+jB17Pz8LNcPgtMUb16JcgD8lxQMK9HcGfAVhMK3na/WXes3oGIo5QsrQQVqtgAU6q6KnQNXJrYunaUIQQ== - dependencies: - "@rollup/pluginutils" "5" - -rollup@^4.23.0: - version "4.30.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" - integrity sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.30.1" - "@rollup/rollup-android-arm64" "4.30.1" - "@rollup/rollup-darwin-arm64" "4.30.1" - "@rollup/rollup-darwin-x64" "4.30.1" - "@rollup/rollup-freebsd-arm64" "4.30.1" - "@rollup/rollup-freebsd-x64" "4.30.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" - "@rollup/rollup-linux-arm-musleabihf" "4.30.1" - "@rollup/rollup-linux-arm64-gnu" "4.30.1" - "@rollup/rollup-linux-arm64-musl" "4.30.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" - "@rollup/rollup-linux-riscv64-gnu" "4.30.1" - "@rollup/rollup-linux-s390x-gnu" "4.30.1" - "@rollup/rollup-linux-x64-gnu" "4.30.1" - "@rollup/rollup-linux-x64-musl" "4.30.1" - "@rollup/rollup-win32-arm64-msvc" "4.30.1" - "@rollup/rollup-win32-ia32-msvc" "4.30.1" - "@rollup/rollup-win32-x64-msvc" "4.30.1" - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.0.0: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.5.3, semver@^7.5.4: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.7.3: - version "1.8.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" - integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== - -signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spawn-command@^0.0.2-1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" - integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0, supports-color@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -tslib@^2.1.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -update-browserslist-db@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz#97e9c96ab0ae7bcac08e9ae5151d26e6bc6b5580" - integrity sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.1" - -v8-to-istanbul@^9.0.1: - version "9.3.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" - integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -vite-plugin-ejs@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/vite-plugin-ejs/-/vite-plugin-ejs-1.7.0.tgz#c0229729d5a26e9eb57b8abadc75f7070d470d23" - integrity sha512-JNP3zQDC4mSbfoJ3G73s5mmZITD8NGjUmLkq4swxyahy/W0xuokK9U9IJGXw7KCggq6UucT6hJ0p+tQrNtqTZw== - dependencies: - ejs "^3.1.9" - -vite-plugin-static-copy@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vite-plugin-static-copy/-/vite-plugin-static-copy-2.2.0.tgz#8eec750f016e508b09234da880e9310cd1367b9b" - integrity sha512-ytMrKdR9iWEYHbUxs6x53m+MRl4SJsOSoMu1U1+Pfg0DjPeMlsRVx3RR5jvoonineDquIue83Oq69JvNsFSU5w== - dependencies: - chokidar "^3.5.3" - fast-glob "^3.2.11" - fs-extra "^11.1.0" - picocolors "^1.0.0" - -vite@^6.0.7: - version "6.0.7" - resolved "https://registry.yarnpkg.com/vite/-/vite-6.0.7.tgz#f0f8c120733b04af52b4a1e3e7cb54eb851a799b" - integrity sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ== - dependencies: - esbuild "^0.24.2" - postcss "^8.4.49" - rollup "^4.23.0" - optionalDependencies: - fsevents "~2.3.3" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -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== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -y18n@^5.0.5: - version "5.0.8" - 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== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.3.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/redisinsight/ui/src/pages/browser/BrowserPage.test.tsx b/redisinsight/ui/src/pages/browser/BrowserPage.test.tsx index 6e1bcf9098..4158cd7a47 100644 --- a/redisinsight/ui/src/pages/browser/BrowserPage.test.tsx +++ b/redisinsight/ui/src/pages/browser/BrowserPage.test.tsx @@ -6,8 +6,6 @@ import { render, screen, fireEvent, mockedStore, cleanup, act, waitForEuiToolTip import { KeyTypes } from 'uiSrc/constants' import { RootState } from 'uiSrc/slices/store' import { setSelectedKeyRefreshDisabled, toggleBrowserFullScreen } from 'uiSrc/slices/browser/keys' -import { sendPageViewTelemetry, TelemetryPageView } from 'uiSrc/telemetry' -import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances' import BrowserPage from './BrowserPage' import KeyList, { Props as KeyListProps } from './components/key-list/KeyList' @@ -79,55 +77,12 @@ const selectKey = (state: any, selectedKey: any, data?: any = {}) => { })) } -jest.mock('uiSrc/telemetry', () => ({ - ...jest.requireActual('uiSrc/telemetry'), - sendPageViewTelemetry: jest.fn(), -})) - -jest.mock('uiSrc/slices/instances/instances', () => ({ - ...jest.requireActual('uiSrc/slices/instances/instances'), - connectedInstanceSelector: jest.fn(), -})) /** * BrowserPage tests * * @group component */ -const originalUseSelector = jest.requireActual('react-redux').useSelector - -describe('BrowserPage', () => { - const commonOptions = { - id: 'instanceId', - name: 'test', - connectionType: 'CLUSTER', - provider: 'RE_CLOUD', - } - - beforeAll(() => { - (useSelector as jest.Mock).mockImplementation(originalUseSelector) - }) - - it.each([true, false])('should call proper sendPageViewTelemetry when isFreeDb is %s', (isFreeDb) => { - const sendPageViewTelemetryMock = jest.fn(); - (sendPageViewTelemetry as jest.Mock).mockImplementation(() => sendPageViewTelemetryMock); - (connectedInstanceSelector as jest.Mock).mockImplementation(() => ({ - ...commonOptions, - isFreeDb, - })) - - render() - - expect(sendPageViewTelemetry).toBeCalledWith({ - name: TelemetryPageView.BROWSER_PAGE, - eventData: { - databaseId: 'instanceId', - isFree: isFreeDb, - }, - }) - }) -}) - describe('KeyDetailsHeader', () => { beforeAll(() => { KeyList.mockImplementation(mockKeyList) diff --git a/redisinsight/ui/src/pages/browser/BrowserPage.tsx b/redisinsight/ui/src/pages/browser/BrowserPage.tsx index 3228777e96..c78a4e9ced 100644 --- a/redisinsight/ui/src/pages/browser/BrowserPage.tsx +++ b/redisinsight/ui/src/pages/browser/BrowserPage.tsx @@ -61,7 +61,7 @@ const isOneSideMode = (isInsightsOpen: boolean) => const BrowserPage = () => { const { instanceId } = useParams<{ instanceId: string }>() - const { name: connectedInstanceName, db = 0, isFreeDb } = useSelector(connectedInstanceSelector) + const { name: connectedInstanceName, db = 0 } = useSelector(connectedInstanceSelector) const { panelSizes, keyList: { selectedKey: selectedKeyContext }, @@ -154,8 +154,7 @@ const BrowserPage = () => { sendPageViewTelemetry({ name: TelemetryPageView.BROWSER_PAGE, eventData: { - databaseId: instanceId, - isFree: isFreeDb, + databaseId: instanceId } }) setIsPageViewSent(true) diff --git a/redisinsight/ui/src/pages/browser/components/browser-search-panel/BrowserSearchPanel.tsx b/redisinsight/ui/src/pages/browser/components/browser-search-panel/BrowserSearchPanel.tsx index 71c1249439..71d55e6fcf 100644 --- a/redisinsight/ui/src/pages/browser/components/browser-search-panel/BrowserSearchPanel.tsx +++ b/redisinsight/ui/src/pages/browser/components/browser-search-panel/BrowserSearchPanel.tsx @@ -224,7 +224,7 @@ const BrowserSearchPanel = (props: Props) => { {SearchModeSwitch()} {searchMode === SearchMode.Pattern ? ( - + ) : ( )} diff --git a/redisinsight/ui/src/pages/browser/components/delete-key-popover/DeleteKeyPopover.spec.tsx b/redisinsight/ui/src/pages/browser/components/delete-key-popover/DeleteKeyPopover.spec.tsx deleted file mode 100644 index 6c01a1ea36..0000000000 --- a/redisinsight/ui/src/pages/browser/components/delete-key-popover/DeleteKeyPopover.spec.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react' -import { render, screen, fireEvent } from 'uiSrc/utils/test-utils' -import { stringToBuffer } from 'uiSrc/utils' -import { KeyTypes } from 'uiSrc/constants' -import { DeleteKeyPopover } from './DeleteKeyPopover' - -describe('DeleteKeyPopover', () => { - const mockProps = { - nameString: 'test-key', - name: stringToBuffer('test-key'), - type: KeyTypes.String, - rowId: 1, - onDelete: jest.fn(), - onOpenPopover: jest.fn(), - } - - beforeEach(() => { - jest.clearAllMocks() - }) - - it('should render delete button with proper data-testid', () => { - render() - - expect(screen.getByTestId(`delete-key-btn-${mockProps.nameString}`)).toBeInTheDocument() - }) - - it('should not show popover content by default', () => { - render() - - expect(screen.queryByText('will be deleted.')).not.toBeInTheDocument() - expect(screen.queryByTestId('submit-delete-key')).not.toBeInTheDocument() - }) - - it('should show popover content when deletePopoverId matches rowId', () => { - render() - - expect(screen.getByText('will be deleted.')).toBeInTheDocument() - expect(screen.getByTestId('submit-delete-key')).toBeInTheDocument() - }) - - it('should call onOpenPopover when delete button is clicked', () => { - render() - - fireEvent.click(screen.getByTestId(`delete-key-btn-${mockProps.nameString}`)) - - expect(mockProps.onOpenPopover).toHaveBeenCalledWith(mockProps.rowId, mockProps.type) - }) - - it('should call onOpenPopover with -1 when closing the popover', () => { - const { container } = render() - - container.querySelector('.euiPopover') - const closePopover = () => mockProps.onOpenPopover(-1, mockProps.type) - closePopover() - - expect(mockProps.onOpenPopover).toHaveBeenCalledWith(-1, mockProps.type) - }) - - it('should call onDelete with proper arguments when confirm button is clicked', () => { - render() - - fireEvent.click(screen.getByTestId('submit-delete-key')) - - expect(mockProps.onDelete).toHaveBeenCalledWith(mockProps.name) - }) - - it('should disable delete button when deleting is true', () => { - render() - - expect(screen.getByTestId('submit-delete-key')).toBeDisabled() - }) - - it('should format long names in the confirmation message', () => { - const longNameProps = { - ...mockProps, - nameString: 'very-long-key-name-that-might-need-formatting', - deletePopoverId: mockProps.rowId - } - - render() - - expect(screen.getByText(longNameProps.nameString)).toBeInTheDocument() - }) -}) diff --git a/redisinsight/ui/src/pages/browser/components/delete-key-popover/DeleteKeyPopover.tsx b/redisinsight/ui/src/pages/browser/components/delete-key-popover/DeleteKeyPopover.tsx deleted file mode 100644 index 67f4284a17..0000000000 --- a/redisinsight/ui/src/pages/browser/components/delete-key-popover/DeleteKeyPopover.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { EuiButton, EuiButtonIcon, EuiPopover, EuiSpacer, EuiText } from '@elastic/eui' - -import React from 'react' - -import cx from 'classnames' -import { KeyTypes, ModulesKeyTypes } from 'uiSrc/constants' -import { formatLongName } from 'uiSrc/utils' -import { RedisResponseBuffer } from 'uiSrc/slices/interfaces' - -export interface DeleteProps { - nameString: string - name: RedisResponseBuffer - type: KeyTypes | ModulesKeyTypes - rowId: number - deletePopoverId?: number - deleting?: boolean - onDelete: (key: RedisResponseBuffer) => void - onOpenPopover: (index: number, type: KeyTypes | ModulesKeyTypes) => void -} - -export const DeleteKeyPopover = ({ - nameString, - name, - type, - rowId, - deletePopoverId, - deleting, - onDelete, - onOpenPopover, -}: DeleteProps) => ( - onOpenPopover(-1, type)} - panelPaddingSize="l" - button={( - onOpenPopover(rowId, type)} - aria-label="Delete Key" - data-testid={`delete-key-btn-${nameString}`} - /> - )} - onClick={(e) => e.stopPropagation()} - > - <> - -

{formatLongName(nameString)}

- will be deleted. -
- - onDelete(name)} - data-testid="submit-delete-key" - > - Delete - - -
-) diff --git a/redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.spec.tsx b/redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.spec.tsx index 23da99eb33..57b2cced54 100644 --- a/redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.spec.tsx @@ -14,7 +14,6 @@ import { loadKeys, setFilter } from 'uiSrc/slices/browser/keys' import { connectedInstanceOverviewSelector } from 'uiSrc/slices/instances/instances' import { FeatureFlags, KeyTypes } from 'uiSrc/constants' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' -import { RedisDefaultModules } from 'uiSrc/slices/interfaces' import FilterKeyType from './FilterKeyType' let store: typeof mockedStore @@ -121,18 +120,9 @@ describe('FilterKeyType', () => { }) }) - it('should filter out graph if redis db does not have graph module', () => { - const { queryByText } = render() - - fireEvent.click(screen.getByTestId(filterSelectId)) - - const graphElement = queryByText('Graph') - expect(graphElement).not.toBeInTheDocument() - }) - it('should not filter out items if required feature flags are set to true', () => { const { queryByText } = render( - + ) fireEvent.click(screen.getByTestId(filterSelectId)) diff --git a/redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.tsx b/redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.tsx index 15bccb5f84..d96f9f9848 100644 --- a/redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.tsx +++ b/redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.tsx @@ -20,18 +20,13 @@ import { FilterNotAvailable } from 'uiSrc/components' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import { resetBrowserTree } from 'uiSrc/slices/app/context' import { appFeatureFlagsFeaturesSelector } from 'uiSrc/slices/app/features' -import { AdditionalRedisModule } from 'uiSrc/slices/interfaces' import { FILTER_KEY_TYPE_OPTIONS } from './constants' import styles from './styles.module.scss' const ALL_KEY_TYPES_VALUE = 'all' -export interface Props { - modules?: AdditionalRedisModule[] -} - -const FilterKeyType = ({ modules }: Props) => { +const FilterKeyType = () => { const [isSelectOpen, setIsSelectOpen] = useState(false) const [typeSelected, setTypeSelected] = useState('all') const [isVersionSupported, setIsVersionSupported] = useState(true) @@ -58,12 +53,7 @@ const FilterKeyType = ({ modules }: Props) => { }, [filter]) const options: EuiSuperSelectOption[] = FILTER_KEY_TYPE_OPTIONS - .filter(({ featureFlag, skipIfNoModule }) => { - if (skipIfNoModule && !modules?.some(({ name }) => name === skipIfNoModule)) { - return false - } - return !featureFlag || features[featureFlag]?.flag - }) + .filter(({ featureFlag }) => !featureFlag || features[featureFlag]?.flag) .map( (item) => { const { value, color, text } = item diff --git a/redisinsight/ui/src/pages/browser/components/filter-key-type/constants.ts b/redisinsight/ui/src/pages/browser/components/filter-key-type/constants.ts index 5d7c8d761f..cece9795d9 100644 --- a/redisinsight/ui/src/pages/browser/components/filter-key-type/constants.ts +++ b/redisinsight/ui/src/pages/browser/components/filter-key-type/constants.ts @@ -4,7 +4,6 @@ import { ModulesKeyTypes, FeatureFlags } from 'uiSrc/constants' -import { RedisDefaultModules } from 'uiSrc/slices/interfaces' export const FILTER_KEY_TYPE_OPTIONS = [ { @@ -46,11 +45,10 @@ export const FILTER_KEY_TYPE_OPTIONS = [ text: 'Graph', value: ModulesKeyTypes.Graph, color: GROUP_TYPES_COLORS[ModulesKeyTypes.Graph], - skipIfNoModule: RedisDefaultModules.Graph, featureFlag: FeatureFlags.envDependent }, { - text: 'Time Series', + text: 'TS', value: ModulesKeyTypes.TimeSeries, color: GROUP_TYPES_COLORS[ModulesKeyTypes.TimeSeries], }, diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx index 5dd1ffefa5..598131120b 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx @@ -5,7 +5,6 @@ import { cleanup, mockedStore, render, waitFor, screen, clearStoreActions } from import { KeysStoreData, KeyViewType, SearchMode } from 'uiSrc/slices/interfaces/keys' import { deleteKey, keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' import { apiService } from 'uiSrc/services' -import { BrowserColumns } from 'uiSrc/constants' import KeyList from './KeyList' const propsMock = { @@ -45,33 +44,18 @@ const propsMock = { selectKey: jest.fn(), loadMoreItems: jest.fn(), handleAddKeyPanel: jest.fn(), - onDelete: jest.fn(), - commonFilterType: null, - onAddKeyPanel: jest.fn(), -} - -const mockedKeySlice = { - viewType: KeyViewType.Browser, - searchMode: SearchMode.Pattern, - isSearch: false, - isFiltered: false, - deleting: false, - data: { - keys: [], - nextCursor: '0', - previousResultCount: 0, - total: 0, - scanned: 0, - lastRefreshTime: Date.now() - }, - selectedKey: { - data: null - } } jest.mock('uiSrc/slices/browser/keys', () => ({ ...jest.requireActual('uiSrc/slices/browser/keys'), - keysSelector: jest.fn().mockImplementation(() => mockedKeySlice), + // TODO: find solution for mock "setLastBatchKeys" action + // setLastBatchKeys: jest.fn(), + keysSelector: jest.fn().mockResolvedValue({ + viewType: 'Browser', + searchMode: 'Pattern', + isSearch: false, + isFiltered: false, + }), })) let store: typeof mockedStore @@ -81,6 +65,10 @@ beforeEach(() => { store.clearActions() }) +// afterEach(() => { +// setLastBatchKeys.mockRestore() +// }) + describe('KeyList', () => { it('should render', () => { expect(render()).toBeTruthy() @@ -96,7 +84,12 @@ describe('KeyList', () => { // TODO: find solution for mock "setLastBatchKeys" action it.skip('should call "setLastBatchKeys" after unmount for Browser view', () => { - (keysSelector as jest.Mock).mockImplementation(() => (mockedKeySlice)) + keysSelector.mockImplementation(() => ({ + searchMode: SearchMode.Pattern, + viewType: KeyViewType.Browser, + isSearch: false, + isFiltered: false, + })) const { unmount } = render() expect(setLastBatchKeys).not.toBeCalled() @@ -108,9 +101,10 @@ describe('KeyList', () => { // TODO: find solution for mock "setLastBatchKeys" action it.skip('should not call "setLastBatchKeys" after unmount for Tree view', () => { - (keysSelector as jest.Mock).mockImplementation(() => ({ - ...mockedKeySlice, + keysSelector.mockImplementation(() => ({ viewType: KeyViewType.Tree, + isSearch: false, + isFiltered: false, })) const { unmount } = render() @@ -131,8 +125,7 @@ describe('KeyList', () => { {...propsMock} keysState={{ ...propsMock.keysState, - keys: propsMock.keysState.keys.map(({ name }) => ({ name })) - }} + keys: propsMock.keysState.keys.map(({ name }) => ({ name })) }} />) await waitFor(async () => { @@ -155,20 +148,19 @@ describe('KeyList', () => { keys: [ ...cloneDeep(propsMock.keysState.keys).map(({ name }) => ({ name })), { name: 'key5', size: 100, length: 100 }, // key with info - ] - }} + ] }} />) await waitFor(async () => { expect(apiServiceMock.mock.calls[0]).toEqual([ '/databases//keys/get-metadata', - { keys: ['key1'], includeSize: true, includeTTL: true }, + { keys: ['key1'] }, params, ]) expect(apiServiceMock.mock.calls[1]).toEqual([ '/databases//keys/get-metadata', - { keys: ['key1', 'key2', 'key3'], includeSize: true, includeTTL: true }, + { keys: ['key1', 'key2', 'key3'] }, params, ]) }, { timeout: 150 }) @@ -185,8 +177,7 @@ describe('KeyList', () => { ...propsMock.keysState, keys: [ ...cloneDeep(propsMock).keysState.keys.map(({ name }) => ({ name })), - ] - }} + ] }} />) expect(queryAllByTestId(/ttl-loading/).length).toEqual(propsMock.keysState.keys.length) @@ -209,62 +200,4 @@ describe('KeyList', () => { ] expect(clearStoreActions(store.getActions().slice(-1))).toEqual(clearStoreActions(expectedActions)) }) - - it('should refetch metadata when columns change', async () => { - const spy = jest.spyOn(apiService, 'post') - - const keySelectorMocked = keysSelector as jest.Mock - - keySelectorMocked.mockReturnValue({ - ...mockedKeySlice, - shownColumns: [], - }) - - const { rerender } = render( - - ) - - keySelectorMocked.mockReturnValue({ - ...mockedKeySlice, - shownColumns: [BrowserColumns.TTL], - }) - - rerender( - - ) - - await waitFor(() => { - expect(spy).toHaveBeenCalled() - }, { timeout: 1000 }) - }) - - it.each` - columns | description - ${[]} | ${'no columns are shown'} - ${[BrowserColumns.TTL]} | ${'only TTL column is shown'} - ${[BrowserColumns.Size]} | ${'only Size column is shown'} - ${[BrowserColumns.TTL, BrowserColumns.Size]} | ${'both TTL and Size columns are shown'} - `('should render DeleteKeyPopover when $description', ({ columns }) => { - (keysSelector as jest.Mock).mockImplementation(() => ({ - ...mockedKeySlice, - shownColumns: columns, - })) - - const { container } = render() - - expect(container.querySelector(`[data-testid="delete-key-btn-${propsMock.keysState.keys[0].nameString}"]`)) - .toBeInTheDocument() - }) }) diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx index c23caed284..61da55dbd3 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx @@ -24,13 +24,12 @@ import { setBrowserPatternScrollPosition, setBrowserIsNotRendered, setBrowserRedisearchScrollPosition, - appContextDbConfig, } from 'uiSrc/slices/app/context' import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api' import { KeysStoreData, SearchMode } from 'uiSrc/slices/interfaces/keys' import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable' import { ITableColumn } from 'uiSrc/components/virtual-table/interfaces' -import { BrowserColumns, KeyTypes, ModulesKeyTypes, TableCellAlignment, TableCellTextAlignment } from 'uiSrc/constants' +import { KeyTypes, ModulesKeyTypes, TableCellAlignment, TableCellTextAlignment } from 'uiSrc/constants' import { IKeyPropTypes } from 'uiSrc/constants/prop-types/keys' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import { RedisResponseBuffer } from 'uiSrc/slices/interfaces' @@ -42,7 +41,6 @@ import KeyRowType from 'uiSrc/pages/browser/components/key-row-type' import { GetKeyInfoResponse } from 'apiSrc/modules/browser/keys/dto' import NoKeysMessage from '../no-keys-message' -import { DeleteKeyPopover } from '../delete-key-popover/DeleteKeyPopover' import styles from './styles.module.scss' export interface Props { @@ -83,8 +81,7 @@ const KeyList = forwardRef((props: Props, ref) => { const selectedKey = useSelector(selectedKeySelector) const { nextCursor, previousResultCount } = useSelector(keysDataSelector) - const { isSearched, isFiltered, searchMode } = useSelector(keysSelector) - const { shownColumns } = useSelector(appContextDbConfig) + const { isSearched, isFiltered, searchMode, deleting } = useSelector(keysSelector) const { keyList: { isNotRendered: isNotRenderedContext } } = useSelector(appContextBrowser) const [, rerender] = useState({}) @@ -99,9 +96,6 @@ const KeyList = forwardRef((props: Props, ref) => { const dispatch = useDispatch() - const prevIncludeSize = useRef(shownColumns?.includes(BrowserColumns.Size)) - const prevIncludeTTL = useRef(shownColumns?.includes(BrowserColumns.TTL)) - useImperativeHandle(ref, () => ({ handleLoadMoreItems(config: { startIndex: number; stopIndex: number }) { onLoadMoreItems(config) @@ -137,29 +131,6 @@ const KeyList = forwardRef((props: Props, ref) => { rerender({}) }, [keysState.keys]) - useEffect(() => { - const isSizeReenabled = !prevIncludeSize.current && shownColumns.includes(BrowserColumns.Size) - const isTtlReenabled = !prevIncludeTTL.current && shownColumns.includes(BrowserColumns.TTL) - - if ((isSizeReenabled || isTtlReenabled) && firstDataLoaded && itemsRef.current.length > 0) { - cancelAllMetadataRequests() - controller.current = new AbortController() - - const { startIndex, lastIndex } = renderedRowsIndexesRef.current - const visibleItems = bufferFormatRangeItems( - itemsRef.current, - startIndex, - lastIndex, - formatItem - ) - - getMetadata(startIndex, visibleItems, true) - } - - prevIncludeSize.current = shownColumns.includes(BrowserColumns.Size) - prevIncludeTTL.current = shownColumns.includes(BrowserColumns.TTL) - }, [shownColumns]) - const cancelAllMetadataRequests = () => { controller.current?.abort() } @@ -261,31 +232,23 @@ const KeyList = forwardRef((props: Props, ref) => { } const getMetadata = useCallback(( - initialStartIndex: number, - itemsInit: IKeyPropTypes[] = [], - forceRefresh?: boolean + startIndex: number, + itemsInit: IKeyPropTypes[] = [] ): void => { const isSomeNotUndefined = ({ type, size, length }: IKeyPropTypes) => (!commonFilterType && !isUndefined(type)) || !isUndefined(size) || !isUndefined(length) - let startIndex = initialStartIndex - let itemsToProcess = itemsInit - - if (!forceRefresh) { - const firstEmptyItemIndex = findIndex(itemsInit, (item) => !isSomeNotUndefined(item)) - if (firstEmptyItemIndex === -1) return + const firstEmptyItemIndex = findIndex(itemsInit, (item) => !isSomeNotUndefined(item)) + if (firstEmptyItemIndex === -1) return - startIndex = initialStartIndex + firstEmptyItemIndex - itemsToProcess = itemsInit.slice(firstEmptyItemIndex) - } - - const itemsToFetch = forceRefresh ? itemsToProcess : reject(itemsToProcess, isSomeNotUndefined) + const emptyItems = reject(itemsInit, isSomeNotUndefined) dispatch(fetchKeysMetadata( - itemsToFetch.map(({ name }) => name), + emptyItems.map(({ name }) => name), commonFilterType, controller.current?.signal, - (loadedItems) => onSuccessFetchedMetadata(startIndex, loadedItems), + (loadedItems) => + onSuccessFetchedMetadata(startIndex + firstEmptyItemIndex, loadedItems), () => { rerender({}) } )) }, [commonFilterType]) @@ -300,9 +263,6 @@ const KeyList = forwardRef((props: Props, ref) => { rerender({}) } - const isTtlTheLastColumn = !shownColumns.includes(BrowserColumns.Size) - const ttlColumnSize = isTtlTheLastColumn ? 146 : 86 - const columns: ITableColumn[] = [ { id: 'type', @@ -318,82 +278,49 @@ const KeyList = forwardRef((props: Props, ref) => { label: 'Key', minWidth: 94, truncateText: true, - render: (cellData: string, { name, type }: IKeyPropTypes, _expanded, rowIndex) => ( - <> - - {columns[columns.length - 1].id === 'nameString' && ( - - )} - + render: (cellData: string) => ( + ) }, - shownColumns.includes(BrowserColumns.TTL) ? { + { id: 'ttl', label: 'TTL', - absoluteWidth: ttlColumnSize, - minWidth: ttlColumnSize, + absoluteWidth: 86, + minWidth: 86, truncateText: true, alignment: TableCellAlignment.Right, - render: (cellData: number, { nameString, name, type }: IKeyPropTypes, _expanded, rowIndex) => ( - <> - - {isTtlTheLastColumn && ( - - )} - + render: (cellData: number, { nameString }: IKeyPropTypes, _expanded, rowIndex) => ( + ) - } : null, - shownColumns.includes(BrowserColumns.Size) ? { + }, + { id: 'size', label: 'Size', absoluteWidth: 90, minWidth: 90, alignment: TableCellAlignment.Right, textAlignment: TableCellTextAlignment.Right, - render: (cellData: number, { nameString, name, type }: IKeyPropTypes, _expanded, rowIndex) => ( - <> - - {columns[columns.length - 1].id === 'size' && ( - - )} - + render: ( + cellData: number, + { nameString, type, name: bufferName }: IKeyPropTypes, + _expanded, + rowIndex + ) => ( + ) - } : null - ].filter((el) => !!el) + }, + ] const noItemsMessage = NoItemsMessage() diff --git a/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss b/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss index 6e9c719d0e..ddefddc587 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss @@ -29,30 +29,17 @@ .ReactVirtualized__Table__rowColumn { .moveOnHoverKey { transition: transform ease 0.3s; - - &.hide { - transform: translateX(-8px) - } + &.hide { transform: translateX(-8px) } } - .showOnHoverKey { display: none; - - &.show { - display: block !important; - } - } + &.show { display: block !important; }} } &:hover { .ReactVirtualized__Table__rowColumn { - .moveOnHoverKey { - transform: translateX(-8px) - } - - .showOnHoverKey { - display: block !important; - } + .moveOnHoverKey { transform: translateX(-8px) } + .showOnHoverKey { display: block !important; } } } } @@ -92,4 +79,4 @@ :global(.table-row-selected) .action { opacity: 1; -} \ No newline at end of file +} diff --git a/redisinsight/ui/src/pages/browser/components/key-row-size/KeyRowSize.tsx b/redisinsight/ui/src/pages/browser/components/key-row-size/KeyRowSize.tsx index 0024f562ca..e0dce54212 100644 --- a/redisinsight/ui/src/pages/browser/components/key-row-size/KeyRowSize.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-row-size/KeyRowSize.tsx @@ -1,13 +1,19 @@ import React from 'react' import cx from 'classnames' import { + EuiButton, + EuiButtonIcon, EuiLoadingContent, + EuiPopover, + EuiSpacer, EuiText, EuiToolTip, } from '@elastic/eui' import { isUndefined } from 'lodash' -import { Maybe, formatBytes } from 'uiSrc/utils' +import { Maybe, formatBytes, formatLongName } from 'uiSrc/utils' +import { KeyTypes, ModulesKeyTypes } from 'uiSrc/constants' +import { RedisResponseBuffer } from 'uiSrc/slices/interfaces' import styles from './styles.module.scss' export interface Props { @@ -15,14 +21,26 @@ export interface Props { deletePopoverId: Maybe rowId: number | string nameString: string + type: KeyTypes | ModulesKeyTypes + deleting: boolean + nameBuffer: RedisResponseBuffer + setDeletePopoverId: (id: any) => void + handleDeletePopoverOpen: (id: any, type: KeyTypes | ModulesKeyTypes) => void + handleDelete: (key: RedisResponseBuffer) => void } const KeyRowSize = (props: Props) => { const { size, nameString, + nameBuffer, deletePopoverId, + deleting, rowId, + type, + setDeletePopoverId, + handleDeletePopoverOpen, + handleDelete, } = props if (isUndefined(size)) { @@ -70,6 +88,46 @@ const KeyRowSize = (props: Props) => {
+ setDeletePopoverId(undefined)} + panelPaddingSize="l" + panelClassName={styles.deletePopover} + button={( + handleDeletePopoverOpen(rowId, type)} + aria-label="Delete Key" + data-testid={`delete-key-btn-${nameString}`} + /> + )} + onClick={(e) => e.stopPropagation()} + > + <> + +

{formatLongName(nameString)}

+ will be deleted. +
+ + handleDelete(nameBuffer)} + data-testid="submit-delete-key" + > + Delete + + +
) } diff --git a/redisinsight/ui/src/pages/browser/components/key-tree/KeyTreeSettings/KeyTreeSettings.tsx b/redisinsight/ui/src/pages/browser/components/key-tree/KeyTreeSettings/KeyTreeSettings.tsx index 80504a5c98..58a000e626 100644 --- a/redisinsight/ui/src/pages/browser/components/key-tree/KeyTreeSettings/KeyTreeSettings.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-tree/KeyTreeSettings/KeyTreeSettings.tsx @@ -134,7 +134,9 @@ const KeyTreeSettings = ({ loading }: Props) => { button={button} > - + + Filters +
Delimiter
{ - cleanup() - store = cloneDeep(mockedStore) - store.clearActions(); - - (keysSlice.keysSelector as jest.Mock).mockReturnValue({ - ...mockSelectorData, - }) -}) - -jest.mock('uiSrc/slices/browser/keys', () => ({ - ...jest.requireActual('uiSrc/slices/browser/keys'), - keysSelector: jest.fn().mockReturnValue(mockSelectorData) -})) - const propsMock = { keysState: { keys: [ @@ -59,18 +41,17 @@ const propsMock = { loadKeys: jest.fn(), loadMoreItems: jest.fn(), handleAddKeyPanel: jest.fn(), - nextCursor: '0', - isSearched: false, - handleScanMoreClick: jest.fn(), } -const mockSelectorData = { - searchMode: SearchMode.Pattern, - viewType: KeyViewType.Browser, - isSearch: false, - isFiltered: false, - shownColumns: [BrowserColumns.TTL, BrowserColumns.Size], -} +jest.mock('uiSrc/slices/browser/keys', () => ({ + ...jest.requireActual('uiSrc/slices/browser/keys'), + keysSelector: jest.fn().mockResolvedValue({ + viewType: 'Browser', + searchMode: 'Pattern', + isSearch: false, + isFiltered: false, + }), +})) describe('KeysHeader', () => { it('should render', () => { @@ -85,31 +66,32 @@ describe('KeysHeader', () => { }) it('should render Scan more button if total => keys.length', () => { - (keysSlice.keysSelector as jest.Mock).mockReturnValue({ - ...mockSelectorData, + keysSelector.mockImplementation(() => ({ searchMode: SearchMode.Redisearch, - viewType: KeyViewType.Tree - }) + viewType: KeyViewType.Tree, + isSearch: false, + isFiltered: false, + })) const { queryByTestId } = render() expect(queryByTestId('scan-more')).toBeInTheDocument() }) it('should not render Scan more button for if searchMode = "Redisearch" and keys.length > maxResults', () => { - (keysSlice.keysSelector as jest.Mock).mockReturnValue({ - ...mockSelectorData, + keysSelector.mockImplementation(() => ({ searchMode: SearchMode.Redisearch, viewType: KeyViewType.Tree, - }) + isSearch: false, + isFiltered: false, + })) const { queryByTestId } = render( { const { id: instanceId } = useSelector(connectedInstanceSelector) const { viewType, searchMode, isFiltered } = useSelector(keysSelector) - const { shownColumns } = useSelector(appContextDbConfig) const { selectedIndex } = useSelector(redisearchSelector) - const [columnsConfigShown, setColumnsConfigShown] = useState(false) - const rootDivRef: Ref = useRef(null) const dispatch = useDispatch() @@ -118,8 +113,6 @@ const KeysHeader = (props: Props) => { height: '36px !important', } - const toggleColumnsConfigVisibility = () => setColumnsConfigShown(!columnsConfigShown) - const handleRefreshKeys = () => { dispatch(fetchKeys( { @@ -181,30 +174,6 @@ const KeysHeader = (props: Props) => { }, 0) } - const changeColumnsShown = (status: boolean, columnType: BrowserColumns) => { - const shown = [] - const hidden = [] - const newColumns = status - ? [...shownColumns, columnType] - : shownColumns.filter((col) => col !== columnType) - - if (columnType === BrowserColumns.TTL) { - status ? shown.push(BrowserColumns.TTL) : hidden.push(BrowserColumns.TTL) - } else if (columnType === BrowserColumns.Size) { - status ? shown.push(BrowserColumns.Size) : hidden.push(BrowserColumns.Size) - } - - dispatch(setBrowserShownColumns(newColumns)) - sendEventTelemetry({ - event: TelemetryEvent.SHOW_BROWSER_COLUMN_CLICKED, - eventData: { - databaseId: instanceId, - shown, - hidden - } - }) - } - const ViewSwitch = () => (
{ onChangeAutoRefreshRate={handleChangeAutoRefreshRate} testid="keys" /> -
- setColumnsConfigShown(false)} - button={( - - Columns - - )} - > - - - changeColumnsShown(e.target.checked, BrowserColumns.Size)} - data-testid="show-key-size" - className={styles.checkbox} - /> - - - - - - - - changeColumnsShown(e.target.checked, BrowserColumns.TTL)} - data-testid="show-ttl" - /> - -
{ViewSwitch()}
diff --git a/redisinsight/ui/src/pages/browser/components/keys-header/styles.module.scss b/redisinsight/ui/src/pages/browser/components/keys-header/styles.module.scss index e4916ce8d3..c82821ab06 100644 --- a/redisinsight/ui/src/pages/browser/components/keys-header/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/keys-header/styles.module.scss @@ -36,13 +36,12 @@ color: var(--euiTextSubduedColor) !important; } - svg>g>path { + svg > g > path { fill: var(--euiTextSubduedColor) !important; } &:hover { - background-color: var(--euiColorLightestShade) !important; - ; + background-color: var(--euiColorLightestShade) !important;; } &.active { @@ -52,7 +51,7 @@ color: var(--euiColorPrimary) !important; } - svg>g>path { + svg > g > path { fill: var(--euiColorPrimary) !important; } } @@ -67,17 +66,3 @@ align-items: center; margin: 4px 4px 4px auto; } - -.columnsButton { - padding: 4px 6px 4px 4px; - border-color: transparent !important; - box-shadow: none !important; -} - -.columnsButtonPopup { - margin-left: 20px; -} - -.checkbox { - white-space: nowrap; -} \ No newline at end of file diff --git a/redisinsight/ui/src/pages/browser/components/virtual-tree/VirtualTree.tsx b/redisinsight/ui/src/pages/browser/components/virtual-tree/VirtualTree.tsx index 47080519fa..b31520116c 100644 --- a/redisinsight/ui/src/pages/browser/components/virtual-tree/VirtualTree.tsx +++ b/redisinsight/ui/src/pages/browser/components/virtual-tree/VirtualTree.tsx @@ -7,7 +7,7 @@ import { FixedSizeTree as Tree, } from 'react-vtree' import { EuiIcon, EuiImage, EuiLoadingSpinner, EuiProgress } from '@elastic/eui' -import { useDispatch, useSelector } from 'react-redux' +import { useDispatch } from 'react-redux' import { bufferToString, Maybe, Nullable } from 'uiSrc/utils' import { useDisposableWebworker } from 'uiSrc/services' @@ -18,7 +18,6 @@ import KeyLightSVG from 'uiSrc/assets/img/sidebar/browser.svg' import KeyDarkSVG from 'uiSrc/assets/img/sidebar/browser_active.svg' import { RedisResponseBuffer, RedisString } from 'uiSrc/slices/interfaces' import { fetchKeysMetadataTree } from 'uiSrc/slices/browser/keys' -import { appContextDbConfig } from 'uiSrc/slices/app/context' import { GetKeyInfoResponse } from 'apiSrc/modules/browser/keys/dto' import { Node } from './components/Node' @@ -252,7 +251,7 @@ const VirtualTree = (props: Props) => { {({ height, width }) => (
- {nodes.current.length > 0 && ( + { nodes.current.length > 0 && ( <> {loading && ( { )} - {nodes.current.length === 0 && loading && ( + { nodes.current.length === 0 && loading && (
diff --git a/redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.spec.tsx b/redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.spec.tsx index f13aa62f86..a5df9953fe 100644 --- a/redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.spec.tsx @@ -1,10 +1,9 @@ import React from 'react' import { NodePublicState } from 'react-vtree/dist/es/Tree' import { instance, mock } from 'ts-mockito' -import { cloneDeep } from 'lodash' -import { cleanup, mockedStore, render, screen } from 'uiSrc/utils/test-utils' +import { render, screen } from 'uiSrc/utils/test-utils' import { stringToBuffer } from 'uiSrc/utils' -import { KeyTypes, BrowserColumns } from 'uiSrc/constants' +import { KeyTypes } from 'uiSrc/constants' import Node from './Node' import { TreeData } from '../../interfaces' import { mockVirtualTreeResult } from '../../VirtualTree.spec' @@ -12,7 +11,6 @@ import { mockVirtualTreeResult } from '../../VirtualTree.spec' const mockDataFullName = 'test' const mockedProps = mock>() const mockedPropsData = mock() - const mockedData: TreeData = { ...instance(mockedPropsData), nestingLevel: 3, @@ -35,13 +33,6 @@ jest.mock('uiSrc/services', () => ({ useDisposableWebworker: () => ({ result: mockVirtualTreeResult, run: jest.fn() }), })) -let store: typeof mockedStore -beforeEach(() => { - cleanup() - store = cloneDeep(mockedStore) - store.clearActions() -}) - describe('Node', () => { it('should render', () => { expect(render()).toBeTruthy() @@ -155,127 +146,4 @@ describe('Node', () => { expect(mockUpdateStatusOpen).toHaveBeenCalledWith(mockDataFullName, !mockIsOpen) expect(mockSetOpen).toBeCalledWith(!mockIsOpen) }) - - describe('Node metadata and column visibility', () => { - it('should call getMetadata when node is clicked and TTL column is visible', () => { - const mockGetMetadata = jest.fn() - const mockUpdateStatusSelected = jest.fn() - const mockUpdateStatusOpen = jest.fn() - - const mockData: TreeData = { - ...mockedData, - getMetadata: mockGetMetadata, - updateStatusSelected: mockUpdateStatusSelected, - updateStatusOpen: mockUpdateStatusOpen, - } - - render() - - screen.getByTestId(`node-item_${mockDataFullName}`).click() - - expect(mockGetMetadata).toBeCalledWith(mockedData.nameBuffer, mockedData.path) - expect(mockUpdateStatusSelected).toBeCalledWith(mockedData.nameBuffer) - expect(mockUpdateStatusOpen).toBeCalledWith(mockDataFullName, true) - }) - - it('should not call getMetadata when node is clicked and metadata exists', () => { - const mockGetMetadata = jest.fn() - const mockUpdateStatusSelected = jest.fn() - const mockUpdateStatusOpen = jest.fn() - - const mockData: TreeData = { - ...mockedDataWithMetadata, - getMetadata: mockGetMetadata, - updateStatusSelected: mockUpdateStatusSelected, - updateStatusOpen: mockUpdateStatusOpen, - } - - render() - - screen.getByTestId(`node-item_${mockDataFullName}`).click() - - expect(mockUpdateStatusSelected).toBeCalledWith(mockedDataWithMetadata.nameBuffer) - expect(mockUpdateStatusOpen).toBeCalledWith(mockDataFullName, true) - expect(mockGetMetadata).not.toBeCalled() - }) - - it('should render TTL and Size when metadata exists', () => { - render() - - expect(screen.getByTestId(`ttl-${mockDataFullName}`)).toBeInTheDocument() - expect(screen.getByTestId(`size-${mockDataFullName}`)).toBeInTheDocument() - }) - - it('should not render TTL and Size when metadata does not exist', () => { - render() - - expect(screen.queryByTestId(`ttl-${mockDataFullName}`)).not.toBeInTheDocument() - expect(screen.queryByTestId(`size-${mockDataFullName}`)).not.toBeInTheDocument() - }) - - it.each` - description | initialState | updatedState - ${'TTL column'} | ${{ app: { context: { dbConfig: { shownColumns: [] } } } }} | ${{ app: { context: { dbConfig: { shownColumns: [BrowserColumns.TTL] } } } }} - ${'Size column'} | ${{ app: { context: { dbConfig: { shownColumns: [] } } } }} | ${{ app: { context: { dbConfig: { shownColumns: [BrowserColumns.Size] } } } }} - `('should refetch metadata when $description is re-enabled even with existing metadata', ({ initialState, updatedState }) => { - const mockGetMetadata = jest.fn() - const mockData: TreeData = { - ...mockedDataWithMetadata, - getMetadata: mockGetMetadata, - } - - const store = { - getState: () => initialState, - subscribe: jest.fn(), - dispatch: jest.fn(), - } - - const { rerender } = render( - , - { store } - ) - - store.getState = () => updatedState - - rerender() - - expect(mockGetMetadata).toHaveBeenCalledWith(mockData.nameBuffer, mockData.path) - }) - - it.each` - columns | description - ${[]} | ${'no columns are shown'} - ${[BrowserColumns.TTL]} | ${'only TTL column is shown'} - ${[BrowserColumns.Size]} | ${'only Size column is shown'} - ${[BrowserColumns.TTL, BrowserColumns.Size]} | ${'both TTL and Size columns are shown'} - `('should render DeleteKeyPopover when $description', ({ columns }) => { - const mockData: TreeData = { - ...mockedDataWithMetadata, - onDelete: jest.fn(), - onDeleteClicked: jest.fn(), - } - - const store = { - getState: () => ({ - app: { - context: { - dbConfig: { - shownColumns: columns - } - } - } - }), - subscribe: jest.fn(), - dispatch: jest.fn(), - } - - const { container } = render( - , - { store } - ) - - expect(container.querySelector(`[data-testid="delete-key-btn-${mockData.nameString}"]`)) - .toBeInTheDocument() - }) - }) }) diff --git a/redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.tsx b/redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.tsx index a647fa31ef..15f96473ad 100644 --- a/redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.tsx +++ b/redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState, useRef } from 'react' +import React, { useEffect, useState } from 'react' import { NodePublicState } from 'react-vtree/dist/es/Tree' import cx from 'classnames' import { @@ -7,18 +7,15 @@ import { keys as ElasticKeys, } from '@elastic/eui' -import { useSelector } from 'react-redux' import { Maybe, } from 'uiSrc/utils' -import { KeyTypes, ModulesKeyTypes, BrowserColumns } from 'uiSrc/constants' +import { KeyTypes, ModulesKeyTypes } from 'uiSrc/constants' import KeyRowTTL from 'uiSrc/pages/browser/components/key-row-ttl' import KeyRowSize from 'uiSrc/pages/browser/components/key-row-size' import KeyRowName from 'uiSrc/pages/browser/components/key-row-name' import KeyRowType from 'uiSrc/pages/browser/components/key-row-type' import { RedisResponseBuffer } from 'uiSrc/slices/interfaces' -import { appContextDbConfig } from 'uiSrc/slices/app/context' -import { DeleteKeyPopover } from '../../../delete-key-popover/DeleteKeyPopover' import { TreeData } from '../../interfaces' import styles from './styles.module.scss' @@ -60,25 +57,16 @@ const Node = ({ const delimiterView = delimiters.length === 1 ? delimiters[0] : '-' - const { shownColumns } = useSelector(appContextDbConfig) - const includeSize = shownColumns.includes(BrowserColumns.Size) - const includeTTL = shownColumns.includes(BrowserColumns.TTL) - const [deletePopoverId, setDeletePopoverId] = useState>(undefined) - const prevIncludeSize = useRef(includeSize) - const prevIncludeTTL = useRef(includeTTL) useEffect(() => { - const isSizeReenabled = !prevIncludeSize.current && includeSize - const isTtlReenabled = !prevIncludeTTL.current && includeTTL - - if (isLeaf && nameBuffer && ((isSizeReenabled || isTtlReenabled) || (!size && !ttl))) { + if (!isLeaf || !nameBuffer) { + return + } + if (!size || !ttl) { getMetadata?.(nameBuffer, path) } - - prevIncludeSize.current = includeSize - prevIncludeTTL.current = includeTTL - }, [includeSize, includeTTL, isLeaf, nameBuffer, size, ttl]) + }, []) const handleClick = () => { if (isLeaf) { @@ -131,7 +119,7 @@ const Node = ({
- {keyApproximate ? `${keyApproximate < 1 ? '<1' : Math.round(keyApproximate)}%` : ''} + {keyApproximate ? `${keyApproximate < 1 ? '<1' : Math.round(keyApproximate)}%` : '' }
{keyCount ?? ''}
@@ -143,24 +131,18 @@ const Node = ({ <> - {includeTTL && } - {includeSize && ( - - )} - + ) @@ -174,7 +156,7 @@ const Node = ({ onClick={handleClick} onKeyDown={handleKeyDown} tabIndex={0} - onFocus={() => { }} + onFocus={() => {}} data-testid={`node-item_${fullName}${isOpen && !isLeaf ? '--expanded' : ''}`} > {!isLeaf && } @@ -205,8 +187,7 @@ const Node = ({ paddingLeft: (nestingLevel > MAX_NESTING_LEVEL ? MAX_NESTING_LEVEL : nestingLevel) * 8, }} className={cx( - styles.nodeContainer, - { + styles.nodeContainer, { [styles.nodeSelected]: isSelected && isLeaf, [styles.nodeRowEven]: index % 2 === 0, } diff --git a/redisinsight/ui/src/pages/browser/modules/key-details-header/components/key-details-header-size-length/KeyDetailsHeaderSizeLength.spec.tsx b/redisinsight/ui/src/pages/browser/modules/key-details-header/components/key-details-header-size-length/KeyDetailsHeaderSizeLength.spec.tsx index 951e7fa37a..6d9471e304 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details-header/components/key-details-header-size-length/KeyDetailsHeaderSizeLength.spec.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details-header/components/key-details-header-size-length/KeyDetailsHeaderSizeLength.spec.tsx @@ -1,55 +1,12 @@ import React from 'react' import { instance, mock } from 'ts-mockito' -import { cloneDeep } from 'lodash' -import userEvent from '@testing-library/user-event' -import { cleanup, mockedStore, render, screen } from 'uiSrc/utils/test-utils' -import * as keysSlice from 'uiSrc/slices/browser/keys' +import { render } from 'uiSrc/utils/test-utils' import { Props, KeyDetailsHeaderSizeLength } from './KeyDetailsHeaderSizeLength' -let store: typeof mockedStore - const mockedProps = mock() -jest.mock('uiSrc/slices/browser/keys', () => ({ - ...jest.requireActual('uiSrc/slices/browser/keys'), - selectedKeyDataSelector: jest.fn() -})) - describe('KeyDetailsHeaderSizeLength', () => { - beforeEach(() => { - cleanup() - store = cloneDeep(mockedStore) - store.clearActions() - }) - - it('should render normal size correctly', () => { - (keysSlice.selectedKeyDataSelector as jest.Mock).mockReturnValueOnce({ - type: 'string', - size: 1024, - length: 1 - }) - - render() - - expect(screen.getByTestId('key-size-text')).toBeInTheDocument() - expect(screen.queryByTestId('key-size-info-icon')).not.toBeInTheDocument() - }) - - it('should render too large size with warning icon and expected tooltip', async () => { - (keysSlice.selectedKeyDataSelector as jest.Mock).mockReturnValueOnce({ - type: 'string', - size: -1, - length: 1 - }) - - render() - - expect(screen.getByTestId('key-size-info-icon')).toBeInTheDocument() - - const infoIcon = screen.getByTestId('key-size-info-icon') - userEvent.hover(infoIcon) - - const tooltipText = await screen.findByText('The key size is too large to run the MEMORY USAGE command, as it may lead to performance issues.') - expect(tooltipText).toBeInTheDocument() + it('should render', () => { + expect(render()).toBeTruthy() }) }) diff --git a/redisinsight/ui/src/pages/browser/modules/key-details-header/components/key-details-header-size-length/KeyDetailsHeaderSizeLength.tsx b/redisinsight/ui/src/pages/browser/modules/key-details-header/components/key-details-header-size-length/KeyDetailsHeaderSizeLength.tsx index a476b2e146..37fa8eb94e 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details-header/components/key-details-header-size-length/KeyDetailsHeaderSizeLength.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details-header/components/key-details-header-size-length/KeyDetailsHeaderSizeLength.tsx @@ -1,6 +1,5 @@ import { EuiFlexItem, - EuiIcon, EuiText, EuiToolTip, } from '@elastic/eui' @@ -26,8 +25,6 @@ const KeyDetailsHeaderSizeLength = ({ length, } = useSelector(selectedKeyDataSelector) ?? initialKeyInfo - const isSizeTooLarge = size === -1 - return ( <> {size && ( @@ -44,25 +41,13 @@ const KeyDetailsHeaderSizeLength = ({ position="left" content={( <> - {isSizeTooLarge ? 'The key size is too large to run the MEMORY USAGE command, as it may lead to performance issues.' : formatBytes(size, 3)} + {formatBytes(size, 3)} - )} + )} > <> {width > MIDDLE_SCREEN_RESOLUTION && 'Key Size: '} {formatBytes(size, 0)} - {isSizeTooLarge && ( - <> - {' '} - - - )} diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.tsx index fa7ab2a5c7..6aeec82272 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.tsx @@ -9,19 +9,21 @@ const UnsupportedTypeDetails = () => ( -

This key type is not currently supported.

+

This data type is coming soon!

- See{' '} + We are constantly working to launch support for more data types. + If you have any ideas or suggestions, please + {' '} - our repository + contact us - {' '}for the list of supported key types. + .
diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/ConnectionUrl.spec.tsx b/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/ConnectionUrl.spec.tsx deleted file mode 100644 index 2817ac54a8..0000000000 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/ConnectionUrl.spec.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { render, screen, fireEvent } from 'uiSrc/utils/test-utils' - -import ConnectionUrl from './ConnectionUrl' - -describe('ConnectionUrl', () => { - it('should render', () => { - expect(render( {}} />)).toBeTruthy() - }) - - it('should change connection url', () => { - const onChangeMock = jest.fn() - render() - - expect(screen.getByTestId('connection-url')).toHaveValue('val') - - fireEvent.change(screen.getByTestId('connection-url'), { target: { value: 'val1' } }) - - expect(onChangeMock).toBeCalled() - }) -}) diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/ConnectionUrl.tsx b/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/ConnectionUrl.tsx deleted file mode 100644 index 4770fdd736..0000000000 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/ConnectionUrl.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react' -import { EuiFormRow, EuiIcon, EuiTextArea, EuiToolTip } from '@elastic/eui' - -import styles from './styles.module.scss' - -export interface Props { - value: string - onChange: (e: React.ChangeEvent) => void -} - -const ConnectionUrl = ({ value, onChange }: Props) => ( - -
Connection URL
- -
  • redis://[[username]:[password]]@host:port
  • -
  • rediss://[[username]:[password]]@host:port
  • -
  • host:port
  • - - )} - > - -
    -
    - )} - > - - -) - -export default ConnectionUrl diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/styles.module.scss b/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/styles.module.scss deleted file mode 100644 index 57d39b81ed..0000000000 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/styles.module.scss +++ /dev/null @@ -1,8 +0,0 @@ -.connectionUrlInfo { - display: flex; - align-items: center; - - > :global(.euiToolTipAnchor) { - margin-left: 4px; - } -} diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/styles.module.scss b/redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/styles.module.scss deleted file mode 100644 index bd2340df78..0000000000 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/styles.module.scss +++ /dev/null @@ -1,73 +0,0 @@ -.sectionTitle { - font-weight: 400 !important; - display: flex; - align-items: center; -} - -.cloudSection { - .typeBtn { - min-width: 160px !important; - } -} - -.typeBtn { - position: relative; - width: 100%; - height: 84px !important; - padding: 0 12px; - - border-color: var(--separatorColorLight) !important; - color: var(--buttonSecondaryTextColor) !important; - box-shadow: none !important; - - &.small { - padding: 0 8px; - height: 52px !important; - - :global(.euiButton__text) { - flex-direction: row; - } - - .btnIcon { - margin-right: 8px; - } - } - - &:hover { - background-color: transparent !important; - } - - :global(.euiButton__text) { - display: flex; - flex-direction: column; - align-items: center; - font-weight: 400 !important; - } - - &:not(.small) { - .btnIcon { - margin-bottom: 8px; - - &.rocket { - fill: currentColor; - height: 24px; - width: 24px; - } - } - } - - - - .freeBadge { - position: absolute; - top: 0; - left: 50%; - transform: translate(-50%, -50%); - z-index: 1; - - text-transform: uppercase; - background-color: var(--euiColorLightestShade); - border: 1px solid var(--euiColorPrimary); - border-radius: 2px !important; - } -} diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/constants.tsx b/redisinsight/ui/src/pages/home/components/add-database-screen/constants.tsx deleted file mode 100644 index 2413c77334..0000000000 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/constants.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import { EuiIcon } from '@elastic/eui' -import { AddDbType } from 'uiSrc/pages/home/constants' - -import ShieldIcon from 'uiSrc/assets/img/shield.svg?react' -import RedisSoftwareIcon from 'uiSrc/assets/img/redis-software.svg?react' - -export interface Values { - connectionURL: string -} - -export const CONNECTIVITY_OPTIONS = [ - { - id: 'sentinel', - title: 'Redis Sentinel', - type: AddDbType.sentinel, - icon: (props: Record = {}) => - }, - { - id: 'software', - title: 'Redis Software', - type: AddDbType.software, - icon: (props: Record = {}) => - }, - { - id: 'import', - title: 'Import from file', - type: AddDbType.import, - icon: (props: Record = {}) => - } -] diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/index.ts b/redisinsight/ui/src/pages/home/components/add-database-screen/index.ts deleted file mode 100644 index 77de7d6258..0000000000 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import AddDatabaseScreen from './AddDatabaseScreen' - -export default AddDatabaseScreen diff --git a/redisinsight/ui/src/pages/home/components/cloud-connection/cloud-connection-form/CloudConnectionForm.tsx b/redisinsight/ui/src/pages/home/components/cloud-connection/cloud-connection-form/CloudConnectionForm.tsx index f841223e09..734d2cc4e5 100644 --- a/redisinsight/ui/src/pages/home/components/cloud-connection/cloud-connection-form/CloudConnectionForm.tsx +++ b/redisinsight/ui/src/pages/home/components/cloud-connection/cloud-connection-form/CloudConnectionForm.tsx @@ -220,7 +220,7 @@ const CloudConnectionForm = (props: Props) => { ) return ( -
    +
    Connect with: diff --git a/redisinsight/ui/src/pages/home/components/cluster-connection/cluster-connection-form/ClusterConnectionForm.tsx b/redisinsight/ui/src/pages/home/components/cluster-connection/cluster-connection-form/ClusterConnectionForm.tsx index cdce17145e..b679ec3336 100644 --- a/redisinsight/ui/src/pages/home/components/cluster-connection/cluster-connection-form/ClusterConnectionForm.tsx +++ b/redisinsight/ui/src/pages/home/components/cluster-connection/cluster-connection-form/ClusterConnectionForm.tsx @@ -225,7 +225,7 @@ const ClusterConnectionForm = (props: Props) => { } return ( -
    +

    diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/AddDatabaseScreen.spec.tsx b/redisinsight/ui/src/pages/home/components/connection-url/ConnectionUrl.spec.tsx similarity index 83% rename from redisinsight/ui/src/pages/home/components/add-database-screen/AddDatabaseScreen.spec.tsx rename to redisinsight/ui/src/pages/home/components/connection-url/ConnectionUrl.spec.tsx index f62c9d5fe0..0c2053eac4 100644 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/AddDatabaseScreen.spec.tsx +++ b/redisinsight/ui/src/pages/home/components/connection-url/ConnectionUrl.spec.tsx @@ -5,7 +5,7 @@ import { render, screen, fireEvent, mockedStore, cleanup, act } from 'uiSrc/util import { defaultInstanceChanging } from 'uiSrc/slices/instances/instances' import { AddDbType } from 'uiSrc/pages/home/constants' -import AddDatabaseScreen, { Props } from './AddDatabaseScreen' +import ConnectionUrl, { Props } from './ConnectionUrl' const mockedProps = mock() @@ -16,13 +16,13 @@ beforeEach(() => { store.clearActions() }) -describe('AddDatabaseScreen', () => { +describe('ConnectionUrl', () => { it('should render', () => { - expect(render()).toBeTruthy() + expect(render()).toBeTruthy() }) it('should call proper actions with empty connection url', async () => { - render() + render() await act(async () => { fireEvent.click(screen.getByTestId('btn-submit')) @@ -32,7 +32,7 @@ describe('AddDatabaseScreen', () => { }) it('should disable test connection and submit buttons when connection url is invalid', async () => { - render() + render() await act(async () => { fireEvent.change( @@ -46,7 +46,7 @@ describe('AddDatabaseScreen', () => { }) it('should not disable buttons with proper connection url', async () => { - render() + render() await act(async () => { fireEvent.change( @@ -61,7 +61,7 @@ describe('AddDatabaseScreen', () => { it('should call proper actions after click manual settings', async () => { const onSelectOptionMock = jest.fn() - render() + render() await act(async () => { fireEvent.change( @@ -90,7 +90,7 @@ describe('AddDatabaseScreen', () => { it('should call proper actions after click connectivity option', async () => { const onSelectOptionMock = jest.fn() - render() + render() await act(async () => { fireEvent.click(screen.getByTestId('option-btn-sentinel')) diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/AddDatabaseScreen.tsx b/redisinsight/ui/src/pages/home/components/connection-url/ConnectionUrl.tsx similarity index 76% rename from redisinsight/ui/src/pages/home/components/add-database-screen/AddDatabaseScreen.tsx rename to redisinsight/ui/src/pages/home/components/connection-url/ConnectionUrl.tsx index c77493b8d5..46d1b06e1e 100644 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/AddDatabaseScreen.tsx +++ b/redisinsight/ui/src/pages/home/components/connection-url/ConnectionUrl.tsx @@ -5,7 +5,10 @@ import { EuiFlexGroup, EuiFlexItem, EuiForm, + EuiFormRow, + EuiIcon, EuiSpacer, + EuiTextArea, EuiToolTip } from '@elastic/eui' import { useFormik } from 'formik' @@ -22,8 +25,6 @@ import { } from 'uiSrc/slices/instances/instances' import { Pages } from 'uiSrc/constants' import ConnectivityOptions from './components/connectivity-options' -import ConnectionUrl from './components/connection-url' -import { Values } from './constants' import styles from './styles.module.scss' @@ -56,7 +57,7 @@ const ConnectionUrlError = ( ) -const AddDatabaseScreen = (props: Props) => { +const ConnectionUrl = (props: Props) => { const { onSelectOption, onClose } = props const [isInvalid, setIsInvalid] = useState(false) const { loadingChanging: isLoading } = useSelector(instancesSelector) @@ -64,9 +65,9 @@ const AddDatabaseScreen = (props: Props) => { const dispatch = useDispatch() const history = useHistory() - const validate = (values: Values) => { + const validate = (values: any) => { const payload = getPayload(values.connectionURL, true) - setIsInvalid(!payload && !!values.connectionURL) + setIsInvalid(!payload && values.connectionURL) } const handleTestConnection = () => { @@ -88,7 +89,7 @@ const AddDatabaseScreen = (props: Props) => { })) } - const formik = useFormik({ + const formik = useFormik({ initialValues: { connectionURL: 'redis://default@127.0.0.1:6379' }, @@ -99,7 +100,7 @@ const AddDatabaseScreen = (props: Props) => { }) return ( -
    +
    { > - + +
    Connection URL
    + +
  • redis://[[username]:[password]]@host:port
  • +
  • rediss://[[username]:[password]]@host:port
  • +
  • host:port
  • + + )} + > + +
    +
    + )} + > + + @@ -178,4 +210,4 @@ const AddDatabaseScreen = (props: Props) => { ) } -export default AddDatabaseScreen +export default ConnectionUrl diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/ConnectivityOptions.spec.tsx b/redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/ConnectivityOptions.spec.tsx similarity index 100% rename from redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/ConnectivityOptions.spec.tsx rename to redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/ConnectivityOptions.spec.tsx diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/ConnectivityOptions.tsx b/redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/ConnectivityOptions.tsx similarity index 73% rename from redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/ConnectivityOptions.tsx rename to redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/ConnectivityOptions.tsx index cc08b09469..c34e529b24 100644 --- a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/ConnectivityOptions.tsx +++ b/redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/ConnectivityOptions.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { EuiBadge, EuiButton, EuiFlexGrid, EuiFlexItem, EuiSpacer, EuiTitle } from '@elastic/eui' +import { EuiButton, EuiFlexGrid, EuiFlexItem, EuiSpacer, EuiTitle } from '@elastic/eui' import cx from 'classnames' import { AddDbType } from 'uiSrc/pages/home/constants' import { OAuthSsoHandlerDialog } from 'uiSrc/components' @@ -8,7 +8,7 @@ import { EXTERNAL_LINKS, UTM_CAMPAINGS } from 'uiSrc/constants/links' import { OAuthSocialAction, OAuthSocialSource } from 'uiSrc/slices/interfaces' import CloudIcon from 'uiSrc/assets/img/oauth/cloud_centered.svg?react' -import RocketIcon from 'uiSrc/assets/img/oauth/rocket.svg?react' +import StarIcon from 'uiSrc/assets/img/icons/star.svg?react' import { CONNECTIVITY_OPTIONS } from '../../constants' @@ -24,31 +24,30 @@ const ConnectivityOptions = (props: Props) => { return ( <> -
    +
    - Get started with Redis Cloud account + Get started with Redis Cloud account - - + + onClickOption(AddDbType.cloud)} data-testid="discover-cloud-btn" > - - Add databases + Add Cloud databases - + {(ssoCloudHandlerClick, isSSOEnabled) => ( { }} data-testid="create-free-db-btn" > - Free - - New database + + Create free database )} @@ -78,16 +76,15 @@ const ConnectivityOptions = (props: Props) => { More connectivity options - - {CONNECTIVITY_OPTIONS.map(({ id, type, title, icon }) => ( - + + {CONNECTIVITY_OPTIONS.map(({ id, type, title }) => ( + onClickOption(type)} data-testid={`option-btn-${id}`} > - {icon?.({ className: styles.btnIcon })} {title} diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/index.ts b/redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/index.ts similarity index 100% rename from redisinsight/ui/src/pages/home/components/add-database-screen/components/connectivity-options/index.ts rename to redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/index.ts diff --git a/redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/styles.module.scss b/redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/styles.module.scss new file mode 100644 index 0000000000..20d4a68b0a --- /dev/null +++ b/redisinsight/ui/src/pages/home/components/connection-url/components/connectivity-options/styles.module.scss @@ -0,0 +1,30 @@ +.sectionTitle { + font-weight: 400 !important; + display: flex; + align-items: center; + + .cloudIcon { + margin-right: 8px; + } +} + +.typeBtn { + width: 100%; + height: 76px !important; + + border-color: var(--separatorColorLight) !important; + color: var(--buttonSecondaryTextColor) !important; + box-shadow: none !important; + + &.primary { + border-color: var(--euiColorSecondary) !important; + } + + &:hover { + background-color: transparent !important; + } +} + +.star { + margin-right: 4px; +} diff --git a/redisinsight/ui/src/pages/home/components/connection-url/constants.ts b/redisinsight/ui/src/pages/home/components/connection-url/constants.ts new file mode 100644 index 0000000000..6aea20bf59 --- /dev/null +++ b/redisinsight/ui/src/pages/home/components/connection-url/constants.ts @@ -0,0 +1,23 @@ +import { AddDbType } from 'uiSrc/pages/home/constants' + +export interface Values { + connectionURL?: string +} + +export const CONNECTIVITY_OPTIONS = [ + { + id: 'sentinel', + title: 'Redis Sentinel', + type: AddDbType.sentinel + }, + { + id: 'software', + title: 'Redis Software', + type: AddDbType.software + }, + { + id: 'import', + title: 'Import from file', + type: AddDbType.import + } +] diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/index.ts b/redisinsight/ui/src/pages/home/components/connection-url/index.ts similarity index 100% rename from redisinsight/ui/src/pages/home/components/add-database-screen/components/connection-url/index.ts rename to redisinsight/ui/src/pages/home/components/connection-url/index.ts diff --git a/redisinsight/ui/src/pages/home/components/add-database-screen/styles.module.scss b/redisinsight/ui/src/pages/home/components/connection-url/styles.module.scss similarity index 100% rename from redisinsight/ui/src/pages/home/components/add-database-screen/styles.module.scss rename to redisinsight/ui/src/pages/home/components/connection-url/styles.module.scss diff --git a/redisinsight/ui/src/pages/home/components/database-alias/DatabaseAlias.tsx b/redisinsight/ui/src/pages/home/components/database-alias/DatabaseAlias.tsx index efd54f05d8..ed09aefd2b 100644 --- a/redisinsight/ui/src/pages/home/components/database-alias/DatabaseAlias.tsx +++ b/redisinsight/ui/src/pages/home/components/database-alias/DatabaseAlias.tsx @@ -250,7 +250,7 @@ const DatabaseAlias = (props: Props) => { {!isCloneMode && ( - + { const Form = () => ( <> {connectionType === null && ( - diff --git a/redisinsight/ui/src/pages/home/components/database-panel-dialog/styles.module.scss b/redisinsight/ui/src/pages/home/components/database-panel-dialog/styles.module.scss index 4e627ff3a4..8e88029104 100644 --- a/redisinsight/ui/src/pages/home/components/database-panel-dialog/styles.module.scss +++ b/redisinsight/ui/src/pages/home/components/database-panel-dialog/styles.module.scss @@ -7,9 +7,10 @@ } .formWrapper { + @include eui.scrollBar; flex-grow: 1; + overflow-y: auto; padding: 16px 24px; - height: 100%; .softwareTypes { display: flex; diff --git a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionForm.tsx b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionForm.tsx index fdc4a24374..c6f8c66957 100644 --- a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionForm.tsx +++ b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionForm.tsx @@ -1,34 +1,53 @@ -import { EuiButtonIcon, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiTab, EuiTabs, EuiTitle, keys } from '@elastic/eui' +import { + EuiForm, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + keys, + EuiTitle, + EuiButtonIcon, EuiFormRow, EuiFieldText, +} from '@elastic/eui' import { FormikErrors, useFormik } from 'formik' import { isEmpty, pick } from 'lodash' import React, { useEffect, useRef, useState } from 'react' import ReactDOM from 'react-dom' import { useDispatch, useSelector } from 'react-redux' -import cx from 'classnames' import { resetInstanceUpdateAction } from 'uiSrc/slices/instances/instances' import { ConnectionType } from 'uiSrc/slices/interfaces' import { BuildType } from 'uiSrc/constants/env' import { appRedirectionSelector } from 'uiSrc/slices/app/url-handling' import { UrlHandlingActions } from 'uiSrc/slices/interfaces/urlHandling' -import { fieldDisplayNames, SubmitBtnText, } from 'uiSrc/pages/home/constants' +import { + fieldDisplayNames, + SubmitBtnText, +} from 'uiSrc/pages/home/constants' import { getFormErrors } from 'uiSrc/pages/home/utils' import { DbConnectionInfo } from 'uiSrc/pages/home/interfaces' -import { DbInfo, } from 'uiSrc/pages/home/components/form' -import { DbInfoSentinel, } from 'uiSrc/pages/home/components/form/sentinel' +import { + DbIndex, + DbInfo, + TlsDetails, + DatabaseForm, + DbCompressor, + SSHDetails, +} from 'uiSrc/pages/home/components/form' +import { + DbInfoSentinel, + PrimaryGroupSentinel, + SentinelMasterDatabase, +} from 'uiSrc/pages/home/components/form/sentinel' import { caCertsSelector } from 'uiSrc/slices/instances/caCerts' import { clientCertsSelector } from 'uiSrc/slices/instances/clientCerts' +import Divider from 'uiSrc/components/divider/Divider' import { appInfoSelector } from 'uiSrc/slices/app/info' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import { selectOnFocus } from 'uiSrc/utils' import { useModalHeader } from 'uiSrc/contexts/ModalTitleProvider' -import { MANUAL_FORM_TABS, ManualFormTab } from './constants' import CloneConnection from './components/CloneConnection' import FooterActions from './components/FooterActions' -import { AddConnection, EditConnection, EditSentinelConnection } from './forms' - -import styles from './styles.module.scss' export interface Props { formFields: DbConnectionInfo @@ -42,6 +61,7 @@ export interface Props { onTestConnection: (values: DbConnectionInfo) => void onHostNamePaste: (content: string) => boolean onClose?: () => void + onClickBack?: () => void } const getInitFieldsDisplayNames = ({ host, port, name }: any) => { @@ -55,6 +75,7 @@ const ManualConnectionForm = (props: Props) => { const { formFields, onClose, + onClickBack, onSubmit, onTestConnection, onHostNamePaste, @@ -87,7 +108,6 @@ const ManualConnectionForm = (props: Props) => { const [errors, setErrors] = useState>( getInitFieldsDisplayNames({ host, port, name }) ) - const [activeTab, setActiveTab] = useState(ManualFormTab.General) const { setModalHeader } = useModalHeader() @@ -190,10 +210,6 @@ const ManualConnectionForm = (props: Props) => { }) } - const handleTabClick = (tab: ManualFormTab) => { - setActiveTab(tab) - } - const Footer = () => { const footerEl = document.getElementById('footerDatabaseForm') @@ -213,43 +229,47 @@ const ManualConnectionForm = (props: Props) => { ) } - const Tabs = () => ( - - {MANUAL_FORM_TABS.map(({ id, title }) => ( - handleTabClick(id)} - data-testid={`manual-form-tab-${id}`} - > - {title} - - ))} - - ) - return ( -
    +
    {isEditMode && !isCloneMode && server?.buildType !== BuildType.RedisStack && ( )} -
    +
    {!isEditMode && !isFromCloud && ( - <> - - -
    - -
    - + + + + + + + + + {buildType !== BuildType.RedisStack && ( + <> + + + + )} + )} {(isEditMode || isCloneMode || isFromCloud) && connectionType !== ConnectionType.Sentinel && ( <> @@ -268,52 +288,151 @@ const ManualConnectionForm = (props: Props) => { )} - - -
    - + + {isCloneMode && ( + <> + + + + )} + + + + -
    + {buildType !== BuildType.RedisStack && ( + <> + + + + )} + )} {(isEditMode || isCloneMode) && connectionType === ConnectionType.Sentinel && ( <> - {!isCloneMode && ( - <> - - - - )} - - -
    - -
    + + {!isCloneMode && ( + <> + + + + + + + + + + + + Datababase + + + + + Sentinel + + + + + + )} + {isCloneMode && ( + <> + + + Datababase + + + + Sentinel + + + + + + + + + + )} + )}
    diff --git a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionFrom.spec.tsx b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionFrom.spec.tsx index f502dd87fc..b06eef8e86 100644 --- a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionFrom.spec.tsx +++ b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/ManualConnectionFrom.spec.tsx @@ -208,9 +208,6 @@ describe('InstanceForm', () => { />
    ) - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) - await act(() => { fireEvent.click(screen.getByTestId('tls')) }) @@ -347,8 +344,6 @@ describe('InstanceForm', () => { />
    ) - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('sni')) }) @@ -394,8 +389,6 @@ describe('InstanceForm', () => { />
    ) - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('sni')) }) @@ -447,8 +440,6 @@ describe('InstanceForm', () => { />
    ) - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('verify-tls-cert')) }) @@ -492,8 +483,6 @@ describe('InstanceForm', () => { />
    ) - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('select-ca-cert')) }) @@ -560,7 +549,6 @@ describe('InstanceForm', () => {
    ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) expect(screen.getByTestId(QA_CA_CERT)).toBeInTheDocument() await act(() => { fireEvent.change(screen.getByTestId(QA_CA_CERT), { @@ -616,8 +604,6 @@ describe('InstanceForm', () => { />
    ) - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('tls-required-checkbox')) }) @@ -663,7 +649,6 @@ describe('InstanceForm', () => {
    ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) expect(screen.getByTestId('select-cert')).toBeInTheDocument() await act(() => { @@ -739,13 +724,10 @@ describe('InstanceForm', () => { }} /> ) - const fieldsTestIds = ['host', 'port', 'username', 'password', 'showDb'] + const fieldsTestIds = ['host', 'port', 'username', 'password', 'showDb', 'tls'] fieldsTestIds.forEach((id) => { expect(screen.getByTestId(id)).toBeTruthy() }) - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) - expect(screen.getByTestId('tls')).toBeTruthy() }) it('should render proper fields for sentinel db', () => { @@ -770,13 +752,11 @@ describe('InstanceForm', () => { 'username', 'password', 'showDb', + 'tls' ] fieldsTestIds.forEach((id) => { expect(screen.getByTestId(id)).toBeTruthy() }) - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) - expect(screen.getByTestId('tls')).toBeTruthy() }) it('should render selected logical database with proper db index', () => { @@ -840,7 +820,6 @@ describe('InstanceForm', () => {
    ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) act(() => { fireEvent.click(screen.getByTestId('use-ssh')) }) @@ -883,7 +862,6 @@ describe('InstanceForm', () => {
    ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) act(() => { fireEvent.click(screen.getByTestId('use-ssh')) }) @@ -913,7 +891,6 @@ describe('InstanceForm', () => {
    ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('use-ssh')) fireEvent.click( @@ -949,7 +926,6 @@ describe('InstanceForm', () => { expect(screen.getByTestId(BTN_SUBMIT)).not.toBeDisabled() - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('use-ssh')) }) @@ -1002,7 +978,6 @@ describe('InstanceForm', () => { expect(screen.getByTestId(BTN_SUBMIT)).not.toBeDisabled() - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('use-ssh')) fireEvent.click( @@ -1055,7 +1030,6 @@ describe('InstanceForm', () => {
    ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('use-ssh')) }) @@ -1111,7 +1085,6 @@ describe('InstanceForm', () => {
    ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) await act(() => { fireEvent.click(screen.getByTestId('use-ssh')) fireEvent.click( @@ -1189,18 +1162,13 @@ describe('InstanceForm', () => { expect(screen.getByTestId('password')).toHaveAttribute('value', '••••••••••••') expect(screen.getByTestId('password')).toHaveAttribute('type', 'password') - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) expect(screen.getByTestId('sshPassphrase')).toHaveAttribute('value', '••••••••••••') expect(screen.getByTestId('sshPassphrase')).toHaveAttribute('type', 'password') - fireEvent.click(screen.getByTestId('manual-form-tab-general')) fireEvent.focus(screen.getByTestId('password')) + fireEvent.focus(screen.getByTestId('sshPassphrase')) expect(screen.getByTestId('password')).toHaveAttribute('value', '') - - fireEvent.click(screen.getByTestId('manual-form-tab-security')) - fireEvent.focus(screen.getByTestId('sshPassphrase')) expect(screen.getByTestId('sshPassphrase')).toHaveAttribute('value', '') }) @@ -1218,7 +1186,6 @@ describe('InstanceForm', () => { /> ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) expect(screen.getByTestId('sshPassword')).toHaveAttribute('value', '••••••••••••') expect(screen.getByTestId('sshPassword')).toHaveAttribute('type', 'password') @@ -1240,7 +1207,6 @@ describe('InstanceForm', () => { /> ) - fireEvent.click(screen.getByTestId('manual-form-tab-security')) expect(screen.getByTestId('sshPassword')).toHaveAttribute('maxLength', '10000') }) diff --git a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/components/CloneConnection.tsx b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/components/CloneConnection.tsx index 9a65ecbe64..7a8b0292f2 100644 --- a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/components/CloneConnection.tsx +++ b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/components/CloneConnection.tsx @@ -22,7 +22,7 @@ const CloneConnection = (props: Props) => { return ( <> - + - onKeyDown: (event: React.KeyboardEvent) => void - onHostNamePaste: (content: string) => boolean - caCertificates?: { id: string; name: string }[] - certificates?: { id: number; name: string }[] - buildType?: BuildType -} - -const AddConnection = (props: Props) => { - const { - activeTab, - formik, - onKeyDown, - onHostNamePaste, - certificates, - caCertificates, - buildType - } = props - - return ( - - {activeTab === ManualFormTab.General && ( - <> - - - - - )} - {activeTab === ManualFormTab.Security && ( - <> - - {buildType !== BuildType.RedisStack && ( - <> - - - - )} - - )} - {activeTab === ManualFormTab.Decompression && ( - - )} - - ) -} - -export default AddConnection diff --git a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/EditConnection.tsx b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/EditConnection.tsx deleted file mode 100644 index 9faea5d338..0000000000 --- a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/EditConnection.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import React from 'react' -import { EuiForm } from '@elastic/eui' -import { FormikProps } from 'formik' -import { DatabaseForm, DbCompressor, DbIndex, SSHDetails, TlsDetails } from 'uiSrc/pages/home/components/form' -import Divider from 'uiSrc/components/divider/Divider' -import { BuildType } from 'uiSrc/constants/env' -import { DbConnectionInfo } from 'uiSrc/pages/home/interfaces' - -import { ManualFormTab } from '../constants' - -export interface Props { - activeTab: ManualFormTab - isEditMode: boolean - isCloneMode: boolean - isFromCloud: boolean - formik: FormikProps - onKeyDown: (event: React.KeyboardEvent) => void - onHostNamePaste: (content: string) => boolean - caCertificates?: { id: string; name: string }[] - certificates?: { id: number; name: string }[] - buildType?: BuildType -} - -const EditConnection = (props: Props) => { - const { - activeTab, - isCloneMode, - isEditMode, - isFromCloud, - formik, - onKeyDown, - onHostNamePaste, - certificates, - caCertificates, - buildType - } = props - - return ( - - {activeTab === ManualFormTab.General && ( - <> - - {isCloneMode && ( - <> - - - - )} - - )} - {activeTab === ManualFormTab.Security && ( - <> - - {buildType !== BuildType.RedisStack && ( - <> - - - - )} - - )} - {activeTab === ManualFormTab.Decompression && ( - - )} - - ) -} - -export default EditConnection diff --git a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/EditSentinelConnection.tsx b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/EditSentinelConnection.tsx deleted file mode 100644 index 6a5ed0e9b8..0000000000 --- a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/EditSentinelConnection.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import React from 'react' -import { EuiFieldText, EuiFlexGroup, EuiFlexItem, EuiForm, EuiFormRow, EuiSpacer, EuiTitle } from '@elastic/eui' -import { FormikProps } from 'formik' -import { PrimaryGroupSentinel, SentinelMasterDatabase } from 'uiSrc/pages/home/components/form/sentinel' -import { Nullable, selectOnFocus } from 'uiSrc/utils' -import Divider from 'uiSrc/components/divider/Divider' -import { DatabaseForm, DbCompressor, DbIndex, TlsDetails } from 'uiSrc/pages/home/components/form' -import { DbConnectionInfo } from 'uiSrc/pages/home/interfaces' -import { ManualFormTab } from '../constants' - -export interface Props { - activeTab: ManualFormTab - isCloneMode: boolean - formik: FormikProps - onKeyDown: (event: React.KeyboardEvent) => void - onHostNamePaste: (content: string) => boolean - caCertificates?: { id: string; name: string }[] - certificates?: { id: number; name: string }[] - db: Nullable -} - -const EditSentinelConnection = (props: Props) => { - const { - activeTab, - isCloneMode, - formik, - onKeyDown, - onHostNamePaste, - certificates, - caCertificates, - db - } = props - - const GeneralFormClodeMode = ( - <> - - - Datababase - - - - Sentinel - - - - - - ) - - const GeneralFormEditMode = ( - <> - - - - - - - - - - Datababase - - - - Sentinel - - - - ) - - return ( - - {activeTab === ManualFormTab.General && ( - <>{isCloneMode ? GeneralFormClodeMode : GeneralFormEditMode } - )} - {activeTab === ManualFormTab.Security && ( - - )} - - {activeTab === ManualFormTab.Decompression && ( - - )} - - ) -} - -export default EditSentinelConnection diff --git a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/index.ts b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/index.ts deleted file mode 100644 index f55cf02364..0000000000 --- a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/forms/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import AddConnection from './AddConnection' -import EditConnection from './EditConnection' -import EditSentinelConnection from './EditSentinelConnection' - -export { - AddConnection, - EditConnection, - EditSentinelConnection -} diff --git a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/styles.module.scss b/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/styles.module.scss deleted file mode 100644 index 924f3e90e8..0000000000 --- a/redisinsight/ui/src/pages/home/components/manual-connection/manual-connection-form/styles.module.scss +++ /dev/null @@ -1,24 +0,0 @@ -.container { - position: relative; - display: flex; - flex-direction: column; -} - -.tabs { - border-bottom: 1px solid var(--separatorColor); - - :global(.euiTab) { - margin-right: 12px; - } - - :global(.euiTab:not(.euiTab-isSelected)) { - border-bottom-color: transparent !important; - } -} - -.content { - display: flex; - flex-direction: column; - flex-grow: 1; - overflow: hidden; -} diff --git a/redisinsight/ui/src/pages/home/components/sentinel-connection/SentinelConnectionWrapper.tsx b/redisinsight/ui/src/pages/home/components/sentinel-connection/SentinelConnectionWrapper.tsx index 006e060fd3..6c724d25b6 100644 --- a/redisinsight/ui/src/pages/home/components/sentinel-connection/SentinelConnectionWrapper.tsx +++ b/redisinsight/ui/src/pages/home/components/sentinel-connection/SentinelConnectionWrapper.tsx @@ -106,15 +106,17 @@ const SentinelConnectionWrapper = (props: Props) => { ) return ( - +
    + +
    ) } diff --git a/redisinsight/ui/src/pages/home/components/sentinel-connection/sentinel-connection-form/SentinelConnectionForm.tsx b/redisinsight/ui/src/pages/home/components/sentinel-connection/sentinel-connection-form/SentinelConnectionForm.tsx index 54c14e56a9..5b7865486c 100644 --- a/redisinsight/ui/src/pages/home/components/sentinel-connection/sentinel-connection-form/SentinelConnectionForm.tsx +++ b/redisinsight/ui/src/pages/home/components/sentinel-connection/sentinel-connection-form/SentinelConnectionForm.tsx @@ -145,8 +145,8 @@ const SentinelConnectionForm = (props: Props) => { } return ( -
    -
    +
    +

    { clearExpertChatHistory(), setAppContextConnectedInstanceId(INSTANCE_ID_MOCK), setDbConfig(undefined), + resetRdiConnectedInstance(), ] expect(store.getActions().slice(0, expectedActions.length)).toEqual(expectedActions) diff --git a/redisinsight/ui/src/pages/instance/InstancePage.tsx b/redisinsight/ui/src/pages/instance/InstancePage.tsx index 88a28b1660..b08e14be26 100644 --- a/redisinsight/ui/src/pages/instance/InstancePage.tsx +++ b/redisinsight/ui/src/pages/instance/InstancePage.tsx @@ -97,6 +97,9 @@ const InstancePage = ({ routes = [] }: Props) => { dispatch(setAppContextConnectedInstanceId(connectionInstanceId)) dispatch(setDbConfig(localStorageService.get(BrowserStorageItem.dbConfig + connectionInstanceId))) + // clear rdi connection + dispatch(resetRdiConnectedInstance()) + return () => { intervalId && clearInterval(intervalId) } diff --git a/redisinsight/ui/src/pages/rdi/home/instance-list/RdiInstancesListWrapper.tsx b/redisinsight/ui/src/pages/rdi/home/instance-list/RdiInstancesListWrapper.tsx index 287b7a1293..89b8d81eca 100644 --- a/redisinsight/ui/src/pages/rdi/home/instance-list/RdiInstancesListWrapper.tsx +++ b/redisinsight/ui/src/pages/rdi/home/instance-list/RdiInstancesListWrapper.tsx @@ -13,6 +13,7 @@ import { deleteInstancesAction, checkConnectToRdiInstanceAction, instancesSelector, + resetConnectedInstance as resetConnectedRdiInstance, } from 'uiSrc/slices/rdi/instances' import { TelemetryEvent, sendEventTelemetry } from 'uiSrc/telemetry' import { Nullable, formatLongName, lastConnectionFormat } from 'uiSrc/utils' @@ -79,7 +80,10 @@ const RdiInstancesListWrapper = ({ width, onEditInstance, editedInstance, onDele dispatch(checkConnectToRdiInstanceAction( id, (id: string) => history.push(Pages.rdiPipeline(id)), - () => dispatch(setAppContextConnectedRdiInstanceId('')) + () => { + dispatch(resetConnectedRdiInstance()) + dispatch(setAppContextConnectedRdiInstanceId('')) + } )) } diff --git a/redisinsight/ui/src/pages/rdi/instance/InstancePage.spec.tsx b/redisinsight/ui/src/pages/rdi/instance/InstancePage.spec.tsx index 6a01e4b88d..e243943f85 100644 --- a/redisinsight/ui/src/pages/rdi/instance/InstancePage.spec.tsx +++ b/redisinsight/ui/src/pages/rdi/instance/InstancePage.spec.tsx @@ -13,6 +13,7 @@ import { resetPipelineManagement, setAppContextConnectedRdiInstanceId, setAppContextInitialState, + setPipelineDialogState, } from 'uiSrc/slices/app/context' import { resetCliHelperSettings } from 'uiSrc/slices/cli/cli-settings' import { resetRedisearchKeysData, setRedisearchInitialState } from 'uiSrc/slices/browser/redisearch' @@ -27,7 +28,7 @@ import { } from 'uiSrc/slices/instances/instances' import { setConnectedInstance, loadInstances as loadRdiInstances } from 'uiSrc/slices/rdi/instances' import { PageNames, Pages } from 'uiSrc/constants' -import { getPipelineStatus, setPipelineConfig, setPipelineInitialState, setPipelineJobs } from 'uiSrc/slices/rdi/pipeline' +import { getPipelineStatus, setPipelineInitialState } from 'uiSrc/slices/rdi/pipeline' import { clearExpertChatHistory } from 'uiSrc/slices/panels/aiAssistant' import InstancePage, { Props } from './InstancePage' @@ -105,8 +106,6 @@ describe('InstancePage', () => { loadRdiInstances(), setAppContextConnectedRdiInstanceId(''), setPipelineInitialState(), - setPipelineConfig(''), - setPipelineJobs([]), resetPipelineManagement(), setConnectedInstance(), setAppContextConnectedRdiInstanceId('rdiInstanceId'), @@ -137,8 +136,6 @@ describe('InstancePage', () => { loadRdiInstances(), setAppContextConnectedRdiInstanceId(''), setPipelineInitialState(), - setPipelineConfig(''), - setPipelineJobs([]), resetPipelineManagement(), setConnectedInstance() ] @@ -190,4 +187,20 @@ describe('InstancePage', () => { expect(pushMock).toBeCalledWith(Pages.rdiStatistics(RDI_INSTANCE_ID_MOCK)) }) + + it('should save proper page on unmount', () => { + const { unmount } = render( + + + + ) + + unmount() + const expectedActions = [ + setPipelineInitialState(), + setPipelineDialogState(true) + ] + + expect(store.getActions().slice(0 - expectedActions.length)).toEqual(expectedActions) + }) }) diff --git a/redisinsight/ui/src/pages/rdi/instance/InstancePage.tsx b/redisinsight/ui/src/pages/rdi/instance/InstancePage.tsx index 74019edde6..8ce66deb58 100644 --- a/redisinsight/ui/src/pages/rdi/instance/InstancePage.tsx +++ b/redisinsight/ui/src/pages/rdi/instance/InstancePage.tsx @@ -1,6 +1,7 @@ -import React, { useEffect } from 'react' +import React, { useEffect, useRef, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { useHistory, useLocation, useParams } from 'react-router-dom' +import { Formik, FormikProps } from 'formik' import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui' import { @@ -8,6 +9,7 @@ import { resetDatabaseContext, resetRdiContext, setAppContextConnectedRdiInstanceId, + setPipelineDialogState, } from 'uiSrc/slices/app/context' import { IRoute, PageNames, Pages } from 'uiSrc/constants' import { @@ -20,17 +22,36 @@ import { fetchInstancesAction, instancesSelector as dbInstancesSelector } from 'uiSrc/slices/instances/instances' +import { + deployPipelineAction, + getPipelineStatusAction, + rdiPipelineSelector, + resetPipelineAction, + resetPipelineChecked, + setPipelineInitialState, +} from 'uiSrc/slices/rdi/pipeline' +import { IActionPipelineResultProps, IPipeline } from 'uiSrc/slices/interfaces' +import { createAxiosError, isContainJSONModule, Nullable, pipelineToJson } from 'uiSrc/utils' +import { rdiErrorMessages } from 'uiSrc/pages/rdi/constants' +import { addErrorNotification } from 'uiSrc/slices/app/notifications' import { RdiInstancePageTemplate } from 'uiSrc/templates' import { RdiInstanceHeader } from 'uiSrc/components' +import { TelemetryEvent, sendEventTelemetry } from 'uiSrc/telemetry' import InstancePageRouter from './InstancePageRouter' -import { RdiPipelineHeader } from './components' +import { ConfirmLeavePagePopup, RdiPipelineHeader } from './components' +import { useUndeployedChangesPrompt } from './hooks' import styles from './styles.module.scss' export interface Props { routes: IRoute[] } +const getInitialValues = (data: Nullable): IPipeline => ({ + config: data?.config ?? '', + jobs: data?.jobs ?? [], +}) + const RdiInstancePage = ({ routes = [] }: Props) => { const dispatch = useDispatch() const history = useHistory() @@ -38,8 +59,13 @@ const RdiInstancePage = ({ routes = [] }: Props) => { const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>() const { lastPage, contextRdiInstanceId } = useSelector(appContextSelector) + const { data, resetChecked } = useSelector(rdiPipelineSelector) const { data: rdiInstances } = useSelector(rdiInstancesSelector) const { data: dbInstances } = useSelector(dbInstancesSelector) + const { showModal, handleCloseModal, handleConfirmLeave } = useUndeployedChangesPrompt() + + const [initialFormValues, setInitialFormValues] = useState(getInitialValues(data)) + const formikRef = useRef>(null) useEffect(() => { if (!dbInstances?.length) { @@ -73,18 +99,74 @@ const RdiInstancePage = ({ routes = [] }: Props) => { } }, []) + useEffect(() => { + setInitialFormValues(getInitialValues(data)) + formikRef.current?.resetForm() + }, [data]) + + // set initial values + useEffect(() => () => { + dispatch(setPipelineInitialState()) + dispatch(setPipelineDialogState(true)) + }, []) + + const actionPipelineCallback = (event: TelemetryEvent, result: IActionPipelineResultProps) => { + sendEventTelemetry({ + event, + eventData: { + id: rdiInstanceId, + ...result, + } + }) + dispatch(getPipelineStatusAction(rdiInstanceId)) + } + + const updatePipelineStatus = () => { + if (resetChecked) { + dispatch(resetPipelineChecked(false)) + dispatch(resetPipelineAction(rdiInstanceId, + (result: IActionPipelineResultProps) => actionPipelineCallback(TelemetryEvent.RDI_PIPELINE_RESET, result), + (result: IActionPipelineResultProps) => actionPipelineCallback(TelemetryEvent.RDI_PIPELINE_RESET, result))) + } else { + dispatch(getPipelineStatusAction(rdiInstanceId)) + } + } + + const onSubmit = (values: IPipeline) => { + const JSONValues = pipelineToJson(values, (errors) => { + dispatch(addErrorNotification(createAxiosError({ + message: rdiErrorMessages.invalidStructure(errors[0].filename, errors[0].msg) + }))) + }) + if (!JSONValues) { + return + } + dispatch(deployPipelineAction(rdiInstanceId, JSONValues, updatePipelineStatus, + () => dispatch(getPipelineStatusAction(rdiInstanceId))),) + } + return ( - - - - - - - - - - - + + <> + + + + + + + + + + {showModal && } + + + + ) } diff --git a/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.spec.tsx b/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.spec.tsx new file mode 100644 index 0000000000..6f76d7683e --- /dev/null +++ b/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.spec.tsx @@ -0,0 +1,56 @@ +import React from 'react' +import { useFormikContext } from 'formik' +import { render, fireEvent, screen } from 'uiSrc/utils/test-utils' +import { MOCK_RDI_PIPELINE_DATA } from 'uiSrc/mocks/data/rdi' +import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import ConfirmLeavePagePopup, { Props } from './ConfirmLeavePagePopup' + +const mockProps: Props = { + onClose: jest.fn(), + onConfirm: jest.fn() +} + +jest.mock('formik') + +jest.mock('uiSrc/telemetry', () => ({ + ...jest.requireActual('uiSrc/telemetry'), + sendEventTelemetry: jest.fn() +})) + +describe('ConfirmLeavePagePopup', () => { + beforeEach(() => { + const mockUseFormikContext = { + setFieldValue: jest.fn, + values: MOCK_RDI_PIPELINE_DATA, + }; + (useFormikContext as jest.Mock).mockReturnValue(mockUseFormikContext) + }) + + it('should render', () => { + expect(render()).toBeTruthy() + }) + + it('should call proper telemetry event', async () => { + const sendEventTelemetryMock = jest.fn(); + (sendEventTelemetry as jest.Mock).mockImplementation(() => sendEventTelemetryMock) + + render() + + expect(sendEventTelemetry).toBeCalledWith({ + event: TelemetryEvent.RDI_UNSAVED_CHANGES_MESSAGE_DISPLAYED, + eventData: { + id: 'rdiInstanceId', + } + }); + (sendEventTelemetry as jest.Mock).mockRestore() + }) + + it('should call onConfirm', async () => { + const onConfirmMock = jest.fn() + render() + + fireEvent.click(screen.getByTestId('confirm-leave-page')) + + expect(onConfirmMock).toBeCalled() + }) +}) diff --git a/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.tsx b/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.tsx new file mode 100644 index 0000000000..92fe0e2f99 --- /dev/null +++ b/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/ConfirmLeavePagePopup.tsx @@ -0,0 +1,64 @@ +import React, { useEffect } from 'react' +import { + EuiModal, + EuiModalBody, + EuiTitle, EuiText, EuiButton, +} from '@elastic/eui' +import { useParams } from 'react-router-dom' + +import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import Download from 'uiSrc/pages/rdi/instance/components/download/Download' + +import styles from './styles.module.scss' + +export interface Props { + onClose: () => void + onConfirm: () => void +} + +const ConfirmLeavePagePopup = (props: Props) => { + const { onClose, onConfirm } = props + + const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>() + + useEffect(() => { + sendEventTelemetry({ + event: TelemetryEvent.RDI_UNSAVED_CHANGES_MESSAGE_DISPLAYED, + eventData: { + id: rdiInstanceId, + } + }) + }, []) + + return ( + + +
    + +

    Leaving pipeline?

    +
    + + There are undeployed changes that could be lost if you navigate away. + Consider downloading the pipeline to save changes locally. + +
    +
    + + onConfirm()} + data-testid="confirm-leave-page" + aria-labelledby="confirm leave the page" + > + Proceed + +
    +
    +
    + ) +} + +export default ConfirmLeavePagePopup diff --git a/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/index.ts b/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/index.ts new file mode 100644 index 0000000000..370f48a375 --- /dev/null +++ b/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/index.ts @@ -0,0 +1,3 @@ +import ConfirmLeavePagePopup from './ConfirmLeavePagePopup' + +export default ConfirmLeavePagePopup diff --git a/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/styles.module.scss b/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/styles.module.scss new file mode 100644 index 0000000000..bdad22ccd2 --- /dev/null +++ b/redisinsight/ui/src/pages/rdi/instance/components/confirm-leave-page-popup/styles.module.scss @@ -0,0 +1,42 @@ +.container { + width: 612px !important; + min-width: 612px !important; + padding: 40px; + background-color: var(--euiColorEmptyShade); +} + +.title { + font-size: 28px !important; + font-style: normal; + font-weight: 500; + line-height: 34px; + padding: 16px 0; +} + +.text { + font: normal normal normal 14px/17px Graphik, sans-serif !important; + color: var(--euiTextSubduedColor) !important; +} + +.footer { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 40px; + padding-bottom: 6px; +} + +.button { + height: 36px !important; + + :global(.euiButtonContent.euiButton__content) { + padding: 0 16px; + } +} + +:global { + .euiButtonIcon.euiModal__closeIcon { + right: 35px; + top: 35px; + } +} diff --git a/redisinsight/ui/src/pages/rdi/instance/components/download/Download.spec.tsx b/redisinsight/ui/src/pages/rdi/instance/components/download/Download.spec.tsx index 0f1dc857ab..86bfa0cbed 100644 --- a/redisinsight/ui/src/pages/rdi/instance/components/download/Download.spec.tsx +++ b/redisinsight/ui/src/pages/rdi/instance/components/download/Download.spec.tsx @@ -9,11 +9,19 @@ jest.mock('uiSrc/slices/rdi/pipeline', () => ({ ...jest.requireActual('uiSrc/slices/rdi/pipeline'), rdiPipelineSelector: jest.fn().mockReturnValue({ loading: false, - config: 'value', - jobs: [ - { name: 'job1', value: 'value' }, - { name: 'job2', value: 'value' } - ] + }) +})) + +jest.mock('formik', () => ({ + ...jest.requireActual('formik'), + useFormikContext: jest.fn().mockReturnValue({ + values: { + config: 'value', + jobs: [ + { name: 'job1', value: 'value' }, + { name: 'job2', value: 'value' } + ] + } }) })) diff --git a/redisinsight/ui/src/pages/rdi/instance/components/download/Download.tsx b/redisinsight/ui/src/pages/rdi/instance/components/download/Download.tsx index cb1c442533..aaabcf1b61 100644 --- a/redisinsight/ui/src/pages/rdi/instance/components/download/Download.tsx +++ b/redisinsight/ui/src/pages/rdi/instance/components/download/Download.tsx @@ -1,10 +1,12 @@ import { EuiButtonEmpty } from '@elastic/eui' import { saveAs } from 'file-saver' +import { useFormikContext } from 'formik' import JSZip from 'jszip' import React from 'react' import { useSelector } from 'react-redux' import { useParams } from 'react-router-dom' +import { IPipeline } from 'uiSrc/slices/interfaces' import { rdiPipelineSelector } from 'uiSrc/slices/rdi/pipeline' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import saveIcon from 'uiSrc/assets/img/rdi/save.svg?react' @@ -17,25 +19,27 @@ interface Props { } const Download = ({ dataTestid, onClose }: Props) => { - const { loading, jobs, config } = useSelector(rdiPipelineSelector) + const { loading } = useSelector(rdiPipelineSelector) const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>() + const { values } = useFormikContext() + const handleDownloadClick = async () => { sendEventTelemetry({ event: TelemetryEvent.RDI_PIPELINE_DOWNLOAD_CLICKED, eventData: { id: rdiInstanceId, - jobsNumber: jobs?.length + jobsNumber: values?.jobs?.length } }) // zip config and job contents const zip = new JSZip() - zip.file('config.yaml', config || '') + zip.file('config.yaml', values?.config || '') - const rdiJobs = zip.folder('jobs') - jobs.forEach(({ name, value }) => rdiJobs?.file(`${name}.yaml`, value)) + const jobs = zip.folder('jobs') + values?.jobs.forEach(({ name, value }) => jobs?.file(`${name}.yaml`, value)) const content = await zip.generateAsync({ type: 'blob' }) saveAs(content, 'RDI_pipeline.zip') diff --git a/redisinsight/ui/src/pages/rdi/instance/components/header/components/buttons/deploy-pipeline-button/DeployPipelineButton.spec.tsx b/redisinsight/ui/src/pages/rdi/instance/components/header/components/buttons/deploy-pipeline-button/DeployPipelineButton.spec.tsx index ba2e7bec48..7864301149 100644 --- a/redisinsight/ui/src/pages/rdi/instance/components/header/components/buttons/deploy-pipeline-button/DeployPipelineButton.spec.tsx +++ b/redisinsight/ui/src/pages/rdi/instance/components/header/components/buttons/deploy-pipeline-button/DeployPipelineButton.spec.tsx @@ -21,11 +21,13 @@ jest.mock('uiSrc/slices/rdi/pipeline', () => ({ ...jest.requireActual('uiSrc/slices/rdi/pipeline'), rdiPipelineSelector: jest.fn().mockReturnValue({ loading: false, - config: 'value', - jobs: [{ name: 'job1', value: '1' }, { name: 'job2', value: '2' }] }), })) +jest.mock('formik') + +const mockHandleSubmit = jest.fn() + let store: typeof mockedStore beforeEach(() => { cleanup() @@ -34,6 +36,14 @@ beforeEach(() => { }) describe('DeployPipelineButton', () => { + beforeEach(() => { + const mockUseFormikContext = { + handleSubmit: mockHandleSubmit, + values: MOCK_RDI_PIPELINE_DATA, + }; + (useFormikContext as jest.Mock).mockReturnValue(mockUseFormikContext) + }) + it('should render', () => { expect(render()).toBeTruthy() }) @@ -89,4 +99,13 @@ describe('DeployPipelineButton', () => { expect(screen.queryByTestId('deploy-confirm-btn')).toBeInTheDocument() }) + + it('should call onSubmit and close popover', () => { + render() + + fireEvent.click(screen.getByTestId('deploy-rdi-pipeline')) + fireEvent.click(screen.getByTestId('deploy-confirm-btn')) + + expect(mockHandleSubmit).toBeCalled() + }) }) diff --git a/redisinsight/ui/src/pages/rdi/instance/components/header/components/buttons/deploy-pipeline-button/DeployPipelineButton.tsx b/redisinsight/ui/src/pages/rdi/instance/components/header/components/buttons/deploy-pipeline-button/DeployPipelineButton.tsx index 786fd5f556..1072755d2b 100644 --- a/redisinsight/ui/src/pages/rdi/instance/components/header/components/buttons/deploy-pipeline-button/DeployPipelineButton.tsx +++ b/redisinsight/ui/src/pages/rdi/instance/components/header/components/buttons/deploy-pipeline-button/DeployPipelineButton.tsx @@ -12,64 +12,43 @@ import { EuiToolTip, } from '@elastic/eui' import cx from 'classnames' +import { useFormikContext } from 'formik' import React, { useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' +import { useDispatch } from 'react-redux' import { useParams } from 'react-router-dom' +import { RdiPipeline } from 'src/modules/rdi/models' import RocketIcon from 'uiSrc/assets/img/rdi/rocket.svg?react' -import { deployPipelineAction, getPipelineStatusAction, rdiPipelineSelector, resetPipelineChecked } from 'uiSrc/slices/rdi/pipeline' +import { resetPipelineChecked } from 'uiSrc/slices/rdi/pipeline' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' -import { createAxiosError, pipelineToJson } from 'uiSrc/utils' -import { addErrorNotification } from 'uiSrc/slices/app/notifications' -import { rdiErrorMessages } from 'uiSrc/pages/rdi/constants' import styles from './styles.module.scss' export interface Props { loading: boolean disabled: boolean - onReset: () => void } -const DeployPipelineButton = ({ loading, disabled, onReset }: Props) => { +const DeployPipelineButton = ({ loading, disabled }: Props) => { const [isPopoverOpen, setIsPopoverOpen] = useState(false) const [resetPipeline, setResetPipeline] = useState(false) - const { config, jobs, resetChecked } = useSelector(rdiPipelineSelector) - + const { values, handleSubmit } = useFormikContext() const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>() const dispatch = useDispatch() - const updatePipelineStatus = () => { - if (resetChecked) { - dispatch(resetPipelineChecked(false)) - onReset?.() - } else { - dispatch(getPipelineStatusAction(rdiInstanceId)) - } - } - const handleDeployPipeline = () => { sendEventTelemetry({ event: TelemetryEvent.RDI_DEPLOY_CLICKED, eventData: { id: rdiInstanceId, reset: resetPipeline, - jobsNumber: jobs?.length + jobsNumber: values?.jobs?.length } }) setIsPopoverOpen(false) setResetPipeline(false) - const JSONValues = pipelineToJson({ config, jobs }, (errors) => { - dispatch(addErrorNotification(createAxiosError({ - message: rdiErrorMessages.invalidStructure(errors[0].filename, errors[0].msg) - }))) - }) - if (!JSONValues) { - return - } - dispatch(deployPipelineAction(rdiInstanceId, JSONValues, updatePipelineStatus, - () => dispatch(getPipelineStatusAction(rdiInstanceId))),) + handleSubmit() } const handleClosePopover = () => { diff --git a/redisinsight/ui/src/pages/rdi/instance/components/header/components/fetch-pipeline-popover/FetchPipelinePopover.tsx b/redisinsight/ui/src/pages/rdi/instance/components/header/components/fetch-pipeline-popover/FetchPipelinePopover.tsx index 4f41f23a38..4945266aac 100644 --- a/redisinsight/ui/src/pages/rdi/instance/components/header/components/fetch-pipeline-popover/FetchPipelinePopover.tsx +++ b/redisinsight/ui/src/pages/rdi/instance/components/header/components/fetch-pipeline-popover/FetchPipelinePopover.tsx @@ -3,11 +3,13 @@ import { EuiButtonEmpty, EuiText } from '@elastic/eui' +import { useFormikContext } from 'formik' import React from 'react' import { useDispatch, useSelector } from 'react-redux' import { useParams } from 'react-router-dom' import ConfirmationPopover from 'uiSrc/pages/rdi/components/confirmation-popover/ConfirmationPopover' +import { IPipeline } from 'uiSrc/slices/interfaces' import { fetchRdiPipeline, rdiPipelineSelector } from 'uiSrc/slices/rdi/pipeline' import { TelemetryEvent, sendEventTelemetry } from 'uiSrc/telemetry' import Download from 'uiSrc/pages/rdi/instance/components/download/Download' @@ -22,6 +24,8 @@ export interface Props { const FetchPipelinePopover = ({ onClose }: Props) => { const { loading, data } = useSelector(rdiPipelineSelector) + const { resetForm } = useFormikContext() + const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>() const dispatch = useDispatch() @@ -29,6 +33,7 @@ const FetchPipelinePopover = ({ onClose }: Props) => { const handleRefreshClick = () => { dispatch( fetchRdiPipeline(rdiInstanceId, () => { + resetForm() onClose?.() }) ) diff --git a/redisinsight/ui/src/pages/rdi/instance/components/header/components/pipeline-actions/PipelineActions.tsx b/redisinsight/ui/src/pages/rdi/instance/components/header/components/pipeline-actions/PipelineActions.tsx index 2e49d8f3db..b953139ea6 100644 --- a/redisinsight/ui/src/pages/rdi/instance/components/header/components/pipeline-actions/PipelineActions.tsx +++ b/redisinsight/ui/src/pages/rdi/instance/components/header/components/pipeline-actions/PipelineActions.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from 'react' +import React from 'react' import { EuiFlexGroup, EuiFlexItem, @@ -36,7 +36,7 @@ const PipelineActions = ({ collectorStatus, pipelineStatus }: Props) => { const dispatch = useDispatch() - const actionPipelineCallback = useCallback((event: TelemetryEvent, result: IActionPipelineResultProps) => { + const actionPipelineCallback = (event: TelemetryEvent, result: IActionPipelineResultProps) => { sendEventTelemetry({ event, eventData: { @@ -45,17 +45,7 @@ const PipelineActions = ({ collectorStatus, pipelineStatus }: Props) => { } }) dispatch(getPipelineStatusAction(rdiInstanceId)) - }, [rdiInstanceId]) - - const resetPipeline = useCallback(() => { - dispatch(resetPipelineAction( - rdiInstanceId, - (result: IActionPipelineResultProps) => - actionPipelineCallback(TelemetryEvent.RDI_PIPELINE_RESET, result), - (result: IActionPipelineResultProps) => - actionPipelineCallback(TelemetryEvent.RDI_PIPELINE_RESET, result) - )) - }, [rdiInstanceId]) + } const onReset = () => { sendEventTelemetry({ @@ -65,7 +55,13 @@ const PipelineActions = ({ collectorStatus, pipelineStatus }: Props) => { pipelineStatus, } }) - resetPipeline() + dispatch(resetPipelineAction( + rdiInstanceId, + (result: IActionPipelineResultProps) => + actionPipelineCallback(TelemetryEvent.RDI_PIPELINE_RESET, result), + (result: IActionPipelineResultProps) => + actionPipelineCallback(TelemetryEvent.RDI_PIPELINE_RESET, result) + )) } const onStartPipeline = () => { @@ -129,7 +125,6 @@ const PipelineActions = ({ collectorStatus, pipelineStatus }: Props) => { diff --git a/redisinsight/ui/src/pages/rdi/instance/components/index.ts b/redisinsight/ui/src/pages/rdi/instance/components/index.ts index ec7354a193..e312f1620e 100644 --- a/redisinsight/ui/src/pages/rdi/instance/components/index.ts +++ b/redisinsight/ui/src/pages/rdi/instance/components/index.ts @@ -1,7 +1,9 @@ +import ConfirmLeavePagePopup from './confirm-leave-page-popup' import Download from './download/Download' import RdiPipelineHeader from './header' export { + ConfirmLeavePagePopup, Download, RdiPipelineHeader, } diff --git a/redisinsight/ui/src/pages/rdi/instance/hooks/index.ts b/redisinsight/ui/src/pages/rdi/instance/hooks/index.ts new file mode 100644 index 0000000000..0017962770 --- /dev/null +++ b/redisinsight/ui/src/pages/rdi/instance/hooks/index.ts @@ -0,0 +1 @@ +export * from './useUndeployedChangesPrompt' diff --git a/redisinsight/ui/src/pages/rdi/instance/hooks/useUndeployedChangesPrompt.ts b/redisinsight/ui/src/pages/rdi/instance/hooks/useUndeployedChangesPrompt.ts new file mode 100644 index 0000000000..67fbcdd5eb --- /dev/null +++ b/redisinsight/ui/src/pages/rdi/instance/hooks/useUndeployedChangesPrompt.ts @@ -0,0 +1,59 @@ +import { useEffect, useState } from 'react' +import { useSelector } from 'react-redux' +import { useHistory, useParams } from 'react-router-dom' +import { Location } from 'history' +import { rdiPipelineSelector } from 'uiSrc/slices/rdi/pipeline' +import { Pages } from 'uiSrc/constants' +import { Nullable } from 'uiSrc/utils' + +export const useUndeployedChangesPrompt = () => { + const { changes } = useSelector(rdiPipelineSelector) + const [showModal, setShowModal] = useState(false) + const [nextLocation, setNextLocation] = useState>>(null) + const [shouldBlockLeaving, setShouldBlockLeaving] = useState(false) + + const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>() + const history = useHistory() + + useEffect(() => { + setShouldBlockLeaving(!!Object.keys(changes).length) + }, [changes]) + + useEffect(() => { + // @ts-ignore + const unlistenBlockChecker = history.block((location: Location) => { + if (shouldBlockLeaving && !location?.pathname.startsWith(Pages.rdiPipeline(rdiInstanceId))) { + setNextLocation(location) + setShowModal(true) + return false + } + return true + }) + + return () => { + unlistenBlockChecker() + } + }, [shouldBlockLeaving]) + + const handleCloseModal = () => { + setShowModal(false) + setNextLocation(null) + } + + const handleConfirmLeave = () => { + setShowModal(false) + setShouldBlockLeaving(false) + } + + useEffect(() => { + if (!shouldBlockLeaving && nextLocation) { + history.push(nextLocation.pathname) + } + }, [shouldBlockLeaving, nextLocation, history]) + + return { + showModal, + handleCloseModal, + handleConfirmLeave + } +} diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/components/jobs-tree/JobsTree.spec.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/components/jobs-tree/JobsTree.spec.tsx index 4a475bf187..e08d9cb62e 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/components/jobs-tree/JobsTree.spec.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/components/jobs-tree/JobsTree.spec.tsx @@ -13,10 +13,19 @@ jest.mock('uiSrc/slices/rdi/pipeline', () => ({ ...jest.requireActual('uiSrc/slices/rdi/pipeline'), rdiPipelineSelector: jest.fn().mockReturnValue({ loading: false, - error: '', - jobs: [ - { name: 'job1', value: 'value' } - ] + error: '' + }) +})) + +jest.mock('formik', () => ({ + ...jest.requireActual('formik'), + useFormikContext: jest.fn().mockReturnValue({ + values: { + jobs: [ + { name: 'job1', value: 'value' } + ] + }, + setFieldValue: jest.fn() }) })) @@ -49,9 +58,10 @@ describe('JobsTree', () => { }) it('should not render count of job if it is "0"', () => { - (rdiPipelineSelector as jest.Mock).mockImplementationOnce(() => ({ + const useFormikContextMock = jest.fn().mockReturnValue({ values: { jobs: [] } - })) + }); + (useFormikContext as jest.Mock).mockImplementationOnce(useFormikContextMock) render() diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/components/jobs-tree/JobsTree.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/components/jobs-tree/JobsTree.tsx index b3c8a63bdb..41fa2c052e 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/components/jobs-tree/JobsTree.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/components/jobs-tree/JobsTree.tsx @@ -19,7 +19,7 @@ import InlineItemEditor from 'uiSrc/components/inline-item-editor' import { PageNames } from 'uiSrc/constants' import ConfirmationPopover from 'uiSrc/pages/rdi/components/confirmation-popover/ConfirmationPopover' import { FileChangeType, IPipeline, IRdiPipelineJob } from 'uiSrc/slices/interfaces' -import { deleteChangedFile, deletePipelineJob, rdiPipelineSelector, setChangedFile, setPipelineJobs } from 'uiSrc/slices/rdi/pipeline' +import { deleteChangedFile, deletePipelineJob, rdiPipelineSelector, setChangedFile } from 'uiSrc/slices/rdi/pipeline' import { TelemetryEvent, sendEventTelemetry } from 'uiSrc/telemetry' import { isEqualPipelineFile, Nullable } from 'uiSrc/utils' @@ -66,15 +66,16 @@ const JobsTree = (props: IProps) => { const [isNewJob, setIsNewJob] = useState(false) const [hideTooltip, setHideTooltip] = useState(false) - const { loading, data, jobs } = useSelector(rdiPipelineSelector) + const { loading, data } = useSelector(rdiPipelineSelector) + const { values, setFieldValue } = useFormikContext() const dispatch = useDispatch() const handleDeleteClick = (name: string) => { dispatch(deletePipelineJob(name)) - const newJobs = jobs.filter((el) => el.name !== name) - dispatch(setPipelineJobs(newJobs)) + const newJobs = values.jobs.filter((el) => el.name !== name) + setFieldValue('jobs', newJobs) sendEventTelemetry({ event: TelemetryEvent.RDI_PIPELINE_JOB_DELETED, @@ -100,15 +101,9 @@ const JobsTree = (props: IProps) => { const handleApplyJobName = (value: string, idx?: number) => { const isJobExists = isNumber(idx) - const updatedJobs = isJobExists - ? [ - ...jobs.slice(0, idx), - { ...jobs[idx], name: value }, - ...jobs.slice(idx + 1), - ] - : [...jobs, { name: value, value: '' }] + const editJobIndex = isJobExists ? idx : values.jobs.length - dispatch(setPipelineJobs(updatedJobs)) + setFieldValue(`jobs.${editJobIndex}.name`, value) const deployedJob = data?.jobs.find((el) => el.name === value) @@ -119,7 +114,7 @@ const JobsTree = (props: IProps) => { if ( deployedJob && isJobExists - && isEqualPipelineFile(jobs[idx].value, deployedJob.value) + && isEqualPipelineFile(values.jobs[idx].value, deployedJob.value) ) { dispatch(deleteChangedFile(deployedJob.value)) } @@ -197,8 +192,8 @@ const JobsTree = (props: IProps) => { controlsPosition="right" onApply={(value: string) => handleApplyJobName(value, idx)} onDecline={handleDeclineJobName} - disableByValidation={(value) => !!validateJobName(value, currentJobName, jobs)} - getError={(value) => validateJobName(value, currentJobName, jobs)} + disableByValidation={(value) => !!validateJobName(value, currentJobName, values.jobs)} + getError={(value) => validateJobName(value, currentJobName, values.jobs)} isLoading={loading} declineOnUnmount={false} controlsClassName={styles.inputControls} @@ -270,7 +265,7 @@ const JobsTree = (props: IProps) => { {'Jobs '} {!loading && ( - {jobs?.length ? `(${jobs?.length})` : ''} + {values?.jobs?.length ? `(${values?.jobs?.length})` : ''} )} {loading && } @@ -333,7 +328,7 @@ const JobsTree = (props: IProps) => { )} - {renderJobsList(jobs ?? [])} + {renderJobsList(values?.jobs ?? [])} ) } diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/components/upload-modal/UploadModal.spec.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/components/upload-modal/UploadModal.spec.tsx index 17ccd3b8df..d241d1b54c 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/components/upload-modal/UploadModal.spec.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/components/upload-modal/UploadModal.spec.tsx @@ -2,7 +2,7 @@ import React from 'react' import { loadAsync } from 'jszip' import { cloneDeep } from 'lodash' -import { rdiPipelineSelector, setChangedFiles, setPipelineConfig, setPipelineJobs } from 'uiSrc/slices/rdi/pipeline' +import { rdiPipelineSelector, setChangedFiles } from 'uiSrc/slices/rdi/pipeline' import { TelemetryEvent, sendEventTelemetry } from 'uiSrc/telemetry' import { act, cleanup, fireEvent, mockedStore, render, screen, waitFor } from 'uiSrc/utils/test-utils' import { FileChangeType } from 'uiSrc/slices/interfaces' @@ -11,12 +11,22 @@ import UploadModal from './UploadModal' jest.mock('uiSrc/slices/rdi/pipeline', () => ({ ...jest.requireActual('uiSrc/slices/rdi/pipeline'), rdiPipelineSelector: jest.fn().mockReturnValue({ - loading: false, - config: 'value', - jobs: [ - { name: 'job1', value: 'value' }, - { name: 'job2', value: 'value' } - ] + loading: false + }) +})) + +jest.mock('formik', () => ({ + ...jest.requireActual('formik'), + useFormikContext: jest.fn().mockReturnValue({ + values: { + config: 'value', + jobs: [ + { name: 'job1', value: 'value' }, + { name: 'job2', value: 'value' } + ] + }, + resetForm: jest.fn(), + setFieldValue: jest.fn() }) })) @@ -96,12 +106,7 @@ describe('UploadModal', () => { }) const expectedActions = [ - setChangedFiles({ config: FileChangeType.Added, job1: FileChangeType.Added, job2: FileChangeType.Added }), - setPipelineConfig('config'), - setPipelineJobs([ - { name: 'job1', value: 'value1' }, - { name: 'job2', value: 'value2' } - ]), + setChangedFiles({ config: FileChangeType.Added, job1: FileChangeType.Added, job2: FileChangeType.Added }) ] expect(store.getActions()).toEqual(expectedActions) diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/components/upload-modal/UploadModal.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/components/upload-modal/UploadModal.tsx index 5bf9e58ebd..3078a7a7fc 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/components/upload-modal/UploadModal.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/components/upload-modal/UploadModal.tsx @@ -1,10 +1,11 @@ +import { useFormikContext } from 'formik' import JSZip from 'jszip' import React, { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { useParams } from 'react-router-dom' -import { FileChangeType } from 'uiSrc/slices/interfaces' -import { rdiPipelineSelector, setChangedFiles, setPipelineConfig, setPipelineJobs } from 'uiSrc/slices/rdi/pipeline' +import { FileChangeType, IPipeline } from 'uiSrc/slices/interfaces' +import { rdiPipelineSelector, setChangedFiles } from 'uiSrc/slices/rdi/pipeline' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import UploadDialog from './components/upload-dialog/UploadDialog' @@ -28,12 +29,14 @@ const UploadModal = (props: Props) => { const [isUploaded, setIsUploaded] = useState(false) const [error, setError] = useState() - const { loading, config: pipelineConfig, jobs: pipelineJobs } = useSelector(rdiPipelineSelector) + const { loading } = useSelector(rdiPipelineSelector) const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>() const dispatch = useDispatch() + const { values, setFieldValue, resetForm } = useFormikContext() + const validateZip = (zip: JSZip) => { // check if config.yaml exists if (zip.file('config.yaml') === null) { @@ -88,8 +91,9 @@ const UploadModal = (props: Props) => { dispatch(setChangedFiles(uploadFiles)) - dispatch(setPipelineConfig(config || '')) - dispatch(setPipelineJobs(jobs)) + resetForm() + setFieldValue('config', config) + setFieldValue('jobs', jobs) sendEventTelemetry({ event: TelemetryEvent.RDI_PIPELINE_UPLOAD_SUCCEEDED, @@ -141,7 +145,7 @@ const UploadModal = (props: Props) => { onConfirm={handleConfirmModal} onFileChange={handleFileChangeModal} isUploaded={isUploaded} - showWarning={(!!pipelineConfig || !!pipelineJobs?.length) && !isUploaded && !error} + showWarning={(!!values?.config || !!values?.jobs?.length) && !isUploaded && !error} error={error} loading={loading} /> diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/config/Config.spec.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/config/Config.spec.tsx index 29a8d6ba06..166c36cd29 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/config/Config.spec.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/config/Config.spec.tsx @@ -1,11 +1,13 @@ import React from 'react' +import { useFormikContext } from 'formik' import { cloneDeep } from 'lodash' import { AxiosError } from 'axios' -import { rdiPipelineSelector, setChangedFile, deleteChangedFile, setPipelineConfig } from 'uiSrc/slices/rdi/pipeline' +import { rdiPipelineSelector, setChangedFile, deleteChangedFile } from 'uiSrc/slices/rdi/pipeline' import { rdiTestConnectionsSelector } from 'uiSrc/slices/rdi/testConnections' import { act, cleanup, fireEvent, mockedStore, render, screen } from 'uiSrc/utils/test-utils' import { sendPageViewTelemetry, TelemetryPageView } from 'uiSrc/telemetry' +import { MOCK_RDI_PIPELINE_DATA } from 'uiSrc/mocks/data/rdi' import { FileChangeType } from 'uiSrc/slices/interfaces' import { addErrorNotification } from 'uiSrc/slices/app/notifications' import Config from './Config' @@ -21,23 +23,6 @@ jest.mock('uiSrc/slices/rdi/pipeline', () => ({ loading: false, schema: { config: { test: {} } }, data: null, - config: `connections: - target: - type: redis - `, - jobs: [{ - name: 'jobName', - value: `job: - transform: - type: sql - ` - }, { - name: 'job2', - value: `job2: - transform: - type: redis - ` - }], }), })) @@ -48,6 +33,8 @@ jest.mock('uiSrc/slices/rdi/testConnections', () => ({ }), })) +jest.mock('formik') + let store: typeof mockedStore beforeEach(() => { cleanup() @@ -56,6 +43,15 @@ beforeEach(() => { }) describe('Config', () => { + const mockSetFieldValue = jest.fn() + beforeEach(() => { + const mockUseFormikContext = { + setFieldValue: mockSetFieldValue, + values: MOCK_RDI_PIPELINE_DATA, + }; + (useFormikContext as jest.Mock).mockReturnValue(mockUseFormikContext) + }) + it('should render', () => { expect(render()).toBeTruthy() }) @@ -74,6 +70,17 @@ describe('Config', () => { }) }) + it('should call setFieldValue with proper values', () => { + render() + const fieldName = screen.getByTestId('rdi-monaco-config') + fireEvent.change( + fieldName, + { target: { value: '123' } } + ) + + expect(mockSetFieldValue).toBeCalledWith('config', '123') + }) + it('should call proper actions', () => { render() const fieldName = screen.getByTestId('rdi-monaco-config') @@ -83,7 +90,6 @@ describe('Config', () => { ) const expectedActions = [ - setPipelineConfig('123'), setChangedFile({ name: 'config', status: FileChangeType.Added }) ] @@ -107,7 +113,6 @@ describe('Config', () => { ) const expectedActions = [ - setPipelineConfig('123'), deleteChangedFile('config') ] @@ -131,8 +136,7 @@ describe('Config', () => { ) const expectedActions = [ - setPipelineConfig('123'), - setChangedFile({ name: 'config', status: FileChangeType.Modified }), + setChangedFile({ name: 'config', status: FileChangeType.Modified }) ] expect(store.getActions()).toEqual(expectedActions) @@ -169,9 +173,11 @@ describe('Config', () => { }) it('should render error notification', async () => { - (rdiPipelineSelector as jest.Mock).mockImplementationOnce(() => ({ - config: 'sources:incorrect\n target:' - })) + const mockUseFormikContext = { + setFieldValue: mockSetFieldValue, + values: { config: 'sources:incorrect\n target:' }, + }; + (useFormikContext as jest.Mock).mockReturnValue(mockUseFormikContext) const { queryByTestId } = render() diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/config/Config.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/config/Config.tsx index 5dd5b3f171..6daca1a1b8 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/config/Config.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/config/Config.tsx @@ -1,6 +1,7 @@ import React, { useCallback, useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { EuiText, EuiLink, EuiButton, EuiLoadingSpinner } from '@elastic/eui' +import { useFormikContext } from 'formik' import cx from 'classnames' import { useParams } from 'react-router-dom' import { get, throttle } from 'lodash' @@ -8,8 +9,8 @@ import { get, throttle } from 'lodash' import { sendPageViewTelemetry, sendEventTelemetry, TelemetryPageView, TelemetryEvent } from 'uiSrc/telemetry' import { EXTERNAL_LINKS, UTM_MEDIUMS } from 'uiSrc/constants/links' import { getUtmExternalLink } from 'uiSrc/utils/links' -import { rdiPipelineSelector, setChangedFile, deleteChangedFile, setPipelineConfig } from 'uiSrc/slices/rdi/pipeline' -import { FileChangeType, RdiPipelineTabs } from 'uiSrc/slices/interfaces' +import { rdiPipelineSelector, setChangedFile, deleteChangedFile } from 'uiSrc/slices/rdi/pipeline' +import { FileChangeType, IPipeline, RdiPipelineTabs } from 'uiSrc/slices/interfaces' import MonacoYaml from 'uiSrc/components/monaco-editor/components/monaco-yaml' import TestConnectionsPanel from 'uiSrc/pages/rdi/pipeline-management/components/test-connections-panel' import TemplatePopover from 'uiSrc/pages/rdi/pipeline-management/components/template-popover' @@ -25,10 +26,12 @@ const Config = () => { const [isPanelOpen, setIsPanelOpen] = useState(false) const [isPopoverOpen, setIsPopoverOpen] = useState(false) - const { loading: pipelineLoading, schema, data, config } = useSelector(rdiPipelineSelector) + const { loading: pipelineLoading, schema, data } = useSelector(rdiPipelineSelector) const { loading: testingConnections } = useSelector(rdiTestConnectionsSelector) const { isOpenDialog } = useSelector(appContextPipelineManagement) + const { values: { config = '' }, setFieldValue } = useFormikContext() + const { rdiInstanceId } = useParams<{ rdiInstanceId: string }>() const dispatch = useDispatch() @@ -91,8 +94,7 @@ const Config = () => { }, 2000), [data]) const handleChange = useCallback((value: string) => { - dispatch(setPipelineConfig(value)) - + setFieldValue('config', value) checkIsFileUpdated(value) }, [data]) @@ -110,13 +112,13 @@ const Config = () => { isPopoverOpen={isPopoverOpen && !isOpenDialog} setIsPopoverOpen={setIsPopoverOpen} value={config} - setFieldValue={(template) => dispatch(setPipelineConfig(template))} + setFieldValue={(template) => setFieldValue('config', template)} loading={pipelineLoading} source={RdiPipelineTabs.Config} />
    - {'Provide '} + {'Configure target instance '} { > connection details - {' for source and target databases and other collector configurations, such as tables and columns to track.'} + {' and applier settings.'} {pipelineLoading ? (
    diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/Job.spec.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/Job.spec.tsx index 6326618d86..da8a287c99 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/Job.spec.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/Job.spec.tsx @@ -1,5 +1,6 @@ import React from 'react' import reactRouterDom from 'react-router-dom' +import { useFormikContext } from 'formik' import { cloneDeep } from 'lodash' import { instance, mock } from 'ts-mockito' import { @@ -7,10 +8,10 @@ import { rdiPipelineSelector, setChangedFile, deleteChangedFile, - setPipelineJobs, } from 'uiSrc/slices/rdi/pipeline' import { act, cleanup, fireEvent, mockedStore, render, screen } from 'uiSrc/utils/test-utils' +import { MOCK_RDI_PIPELINE_DATA } from 'uiSrc/mocks/data/rdi' import { FileChangeType } from 'uiSrc/slices/interfaces' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import Job, { Props } from './Job' @@ -27,26 +28,11 @@ jest.mock('uiSrc/slices/rdi/pipeline', () => ({ rdiPipelineSelector: jest.fn().mockReturnValue({ loading: false, schema: { jobs: { test: {} } }, - config: `connections: - target: - type: redis - `, - jobs: [{ - name: 'jobName', - value: `job: - transform: - type: sql - ` - }, { - name: 'job2', - value: `job2: - transform: - type: redis - ` - }], }), })) +jest.mock('formik') + let store: typeof mockedStore beforeEach(() => { cleanup() @@ -55,6 +41,14 @@ beforeEach(() => { }) describe('Job', () => { + beforeEach(() => { + const mockUseFormikContext = { + setFieldValue: jest.fn, + values: MOCK_RDI_PIPELINE_DATA, + }; + (useFormikContext as jest.Mock).mockReturnValue(mockUseFormikContext) + }) + it('should render', () => { expect(render()).toBeTruthy() }) @@ -64,23 +58,6 @@ describe('Job', () => { loading: false, schema: { jobs: { test: {} } }, error: '', - config: `connections: - target: - type: redis - `, - jobs: [{ - name: 'jobName', - value: `job: - transform: - type: sql - ` - }, { - name: 'job2', - value: `job2: - transform: - type: redis - ` - }], }); (rdiPipelineSelector as jest.Mock).mockImplementation(rdiPipelineSelectorMock) const pushMock = jest.fn() @@ -114,7 +91,6 @@ describe('Job', () => { const expectedActions = [ getPipelineStrategies(), - setPipelineJobs(expect.any(Array)), ] expect(store.getActions()).toEqual(expectedActions) @@ -131,7 +107,6 @@ describe('Job', () => { const expectedActions = [ getPipelineStrategies(), - setPipelineJobs(expect.any(Array)), setChangedFile({ name: 'jobName', status: FileChangeType.Modified }), ] @@ -149,7 +124,6 @@ describe('Job', () => { const expectedActions = [ getPipelineStrategies(), - setPipelineJobs(expect.any(Array)), deleteChangedFile('jobName') ] diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/Job.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/Job.tsx index 066e3e09d0..d9bac37133 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/Job.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/Job.tsx @@ -1,14 +1,15 @@ import React, { useState, useEffect, useRef, useCallback } from 'react' import { useDispatch, useSelector } from 'react-redux' import { EuiText, EuiLink, EuiButton, EuiLoadingSpinner, EuiToolTip } from '@elastic/eui' +import { useFormikContext } from 'formik' import { get, throttle } from 'lodash' import cx from 'classnames' import { monaco as monacoEditor } from 'react-monaco-editor' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import { EXTERNAL_LINKS, UTM_MEDIUMS } from 'uiSrc/constants/links' -import { deleteChangedFile, fetchPipelineStrategies, rdiPipelineSelector, setChangedFile, setPipeline, setPipelineJobs } from 'uiSrc/slices/rdi/pipeline' -import { FileChangeType } from 'uiSrc/slices/interfaces' +import { deleteChangedFile, fetchPipelineStrategies, rdiPipelineSelector, setChangedFile } from 'uiSrc/slices/rdi/pipeline' +import { FileChangeType, IPipeline } from 'uiSrc/slices/interfaces' import MonacoYaml from 'uiSrc/components/monaco-editor/components/monaco-yaml' import DryRunJobPanel from 'uiSrc/pages/rdi/pipeline-management/components/jobs-panel' import { rdiErrorMessages } from 'uiSrc/pages/rdi/constants' @@ -41,7 +42,9 @@ const Job = (props: Props) => { const deployedJobValueRef = useRef>(deployedJobValue) const jobNameRef = useRef(name) - const { loading, schema, jobFunctions, jobs } = useSelector(rdiPipelineSelector) + const { loading, schema, jobFunctions } = useSelector(rdiPipelineSelector) + + const { setFieldValue } = useFormikContext() useEffect(() => { dispatch(fetchPipelineStrategies(rdiInstanceId)) @@ -94,13 +97,7 @@ const Job = (props: Props) => { }, 2000), [deployedJobValue, jobNameRef.current]) const handleChange = (value: string) => { - const newJobs = jobs.map((job, index) => { - if (index === jobIndexRef.current) { - return { ...job, value } - } - return job - }) - dispatch(setPipelineJobs(newJobs)) + setFieldValue(`jobs.${jobIndexRef.current}.value`, value) checkIsFileUpdated(value) } @@ -178,20 +175,12 @@ const Job = (props: Props) => { { - const newJobs = jobs.map((job, index) => { - if (index === jobIndexRef.current) { - return { ...job, value: template } - } - return job - }) - dispatch(setPipelineJobs(newJobs)) - }} + setFieldValue={(template) => setFieldValue(`jobs.${jobIndexRef.current ?? -1}.value`, template)} />
    - {'Create a job per source table to filter, transform, and '} + {'Describe the '} { } )} > - map data + transformation logic - {' to Redis.'} + {' to perform on data from a single source'} {loading ? (
    diff --git a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/JobWrapper.tsx b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/JobWrapper.tsx index 8e6e857ac6..f64bd52857 100644 --- a/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/JobWrapper.tsx +++ b/redisinsight/ui/src/pages/rdi/pipeline-management/pages/job/JobWrapper.tsx @@ -1,14 +1,14 @@ import React, { useState, useEffect } from 'react' -import { useDispatch, useSelector } from 'react-redux' +import { useSelector } from 'react-redux' import { useHistory, useParams } from 'react-router-dom' import { useFormikContext } from 'formik' import { findIndex } from 'lodash' import { sendPageViewTelemetry, TelemetryPageView } from 'uiSrc/telemetry' -import { rdiPipelineSelector, setPipeline } from 'uiSrc/slices/rdi/pipeline' +import { rdiPipelineSelector } from 'uiSrc/slices/rdi/pipeline' import { IPipeline } from 'uiSrc/slices/interfaces' import { Pages } from 'uiSrc/constants' -import { convertTimestampToMilliseconds, Maybe } from 'uiSrc/utils' +import { Maybe } from 'uiSrc/utils' import Job from './Job' const JobWrapper = () => { @@ -20,16 +20,18 @@ const JobWrapper = () => { const history = useHistory() - const { data, jobs } = useSelector(rdiPipelineSelector) + const { data } = useSelector(rdiPipelineSelector) + + const { values } = useFormikContext() useEffect(() => { - const jobIndex = findIndex(jobs, (({ name }) => name === decodedJobName)) + const jobIndex = findIndex(values?.jobs, (({ name }) => name === decodedJobName)) setJobIndex(jobIndex) if (jobIndex === -1) { history.push(Pages.rdiPipelineConfig(rdiInstanceId)) } - }, [decodedJobName, rdiInstanceId, jobs?.length]) + }, [decodedJobName, rdiInstanceId, values?.jobs?.length]) useEffect(() => { setDecodedJobName(decodeURIComponent(jobName)) @@ -53,7 +55,7 @@ const JobWrapper = () => { return ( ({ rdiPipelineSelector: jest.fn().mockReturnValue({ loading: false, schema: { jobs: { test: {} } }, - config: `connections: - target: - type: redis - `, - jobs: [{ - name: 'jobName', - value: `job: - transform: - type: sql - ` - }, { - name: 'job2', - value: `job2: - transform: - type: redis - ` - }], }), })) +jest.mock('formik') + let store: typeof mockedStore beforeEach(() => { cleanup() @@ -51,6 +36,14 @@ beforeEach(() => { }) describe('JobWrapper', () => { + beforeEach(() => { + const mockUseFormikContext = { + setFieldValue: jest.fn, + values: MOCK_RDI_PIPELINE_DATA, + }; + (useFormikContext as jest.Mock).mockReturnValue(mockUseFormikContext) + }) + it('should render', () => { expect(render()).toBeTruthy() }) @@ -69,16 +62,31 @@ describe('JobWrapper', () => { }) }) + it('should render loading spinner', () => { + const rdiPipelineSelectorMock = jest.fn().mockReturnValue({ + loading: true, + }); + (rdiPipelineSelector as jest.Mock).mockImplementation(rdiPipelineSelectorMock) + + render() + + expect(screen.getByTestId('rdi-job-loading')).toBeInTheDocument() + }) + it('should push to config page', () => { const rdiPipelineSelectorMock = jest.fn().mockReturnValue({ loading: false, - config: MOCK_RDI_PIPELINE_CONFIG, - jobs: [MOCK_RDI_PIPELINE_JOB2], }); - (rdiPipelineSelector as jest.Mock).mockImplementationOnce(rdiPipelineSelectorMock) + (rdiPipelineSelector as jest.Mock).mockImplementation(rdiPipelineSelectorMock) const pushMock = jest.fn() reactRouterDom.useHistory = jest.fn().mockReturnValueOnce({ push: pushMock }) + const mockUseFormikContext = { + setFieldValue: jest.fn, + values: { config: MOCK_RDI_PIPELINE_CONFIG, jobs: [MOCK_RDI_PIPELINE_JOB2] }, + }; + (useFormikContext as jest.Mock).mockReturnValueOnce(mockUseFormikContext) + render() expect(pushMock).toBeCalledWith('/integrate/rdiInstanceId/pipeline-management/config') @@ -89,7 +97,7 @@ describe('JobWrapper', () => { loading: false, error: '', }); - (rdiPipelineSelector as jest.Mock).mockImplementationOnce(rdiPipelineSelectorMock) + (rdiPipelineSelector as jest.Mock).mockImplementation(rdiPipelineSelectorMock) const pushMock = jest.fn() reactRouterDom.useHistory = jest.fn().mockReturnValueOnce({ push: pushMock }) @@ -133,10 +141,9 @@ describe('JobWrapper', () => { const rdiPipelineSelectorMock = jest.fn().mockReturnValue({ loading: false, schema: { jobs: { test: {} } }, - data: { jobs: [{ name: 'jobName', value: 'value' }] }, - jobs: [{ name: 'jobName', value: 'value' }] + data: { jobs: [{ name: 'jobName', value: 'value' }] } }); - (rdiPipelineSelector as jest.Mock).mockImplementationOnce(rdiPipelineSelectorMock) + (rdiPipelineSelector as jest.Mock).mockImplementation(rdiPipelineSelectorMock) render() @@ -148,7 +155,6 @@ describe('JobWrapper', () => { const expectedActions = [ getPipelineStrategies(), - setPipelineJobs(expect.any(Array)), setChangedFile({ name: 'jobName', status: FileChangeType.Modified }) ] @@ -159,8 +165,7 @@ describe('JobWrapper', () => { const rdiPipelineSelectorMock = jest.fn().mockReturnValue({ loading: false, schema: { jobs: { test: {} } }, - data: { jobs: [{ name: 'jobName', value: '123' }] }, - jobs: [{ name: 'jobName' }], + data: { jobs: [{ name: 'jobName', value: '123' }] } }); (rdiPipelineSelector as jest.Mock).mockImplementation(rdiPipelineSelectorMock) @@ -174,7 +179,6 @@ describe('JobWrapper', () => { const expectedActions = [ getPipelineStrategies(), - setPipelineJobs([{ name: 'jobName', value: '123' }]), deleteChangedFile('jobName') ] @@ -185,12 +189,16 @@ describe('JobWrapper', () => { const rdiPipelineSelectorMock = jest.fn().mockReturnValue({ loading: false, schema: { jobs: { test: {} } }, - data: { jobs: [{ name: 'jobName', value: 'sources:incorrect\n target:' }] }, - config: MOCK_RDI_PIPELINE_CONFIG, - jobs: [{ name: 'jobName', value: 'sources:incorrect\n target:' }] + data: { jobs: [{ name: 'jobName', value: 'sources:incorrect\n target:' }] } }); (rdiPipelineSelector as jest.Mock).mockImplementation(rdiPipelineSelectorMock) + const mockUseFormikContext = { + setFieldValue: jest.fn, + values: { config: MOCK_RDI_PIPELINE_CONFIG, jobs: [{ name: 'jobName', value: 'sources:incorrect\n target:' }] }, + }; + (useFormikContext as jest.Mock).mockReturnValue(mockUseFormikContext) + const { queryByTestId } = render() fireEvent.click(screen.getByTestId('rdi-job-dry-run')) diff --git a/redisinsight/ui/src/pages/rdi/statistics/status/Status.tsx b/redisinsight/ui/src/pages/rdi/statistics/status/Status.tsx index 2b69d1a78e..cbbef24564 100644 --- a/redisinsight/ui/src/pages/rdi/statistics/status/Status.tsx +++ b/redisinsight/ui/src/pages/rdi/statistics/status/Status.tsx @@ -25,6 +25,8 @@ interface Props { const Status = ({ data }: Props) => ( + + diff --git a/redisinsight/ui/src/pages/settings/components/workbench-settings/WorkbenchSettings.tsx b/redisinsight/ui/src/pages/settings/components/workbench-settings/WorkbenchSettings.tsx index f62dde4fcb..64663b9429 100644 --- a/redisinsight/ui/src/pages/settings/components/workbench-settings/WorkbenchSettings.tsx +++ b/redisinsight/ui/src/pages/settings/components/workbench-settings/WorkbenchSettings.tsx @@ -68,7 +68,7 @@ const WorkbenchSettings = () => { diff --git a/redisinsight/ui/src/pages/workbench/components/query/Query/Query.tsx b/redisinsight/ui/src/pages/workbench/components/query/Query/Query.tsx index b1bc073d7d..8e014eb9ba 100644 --- a/redisinsight/ui/src/pages/workbench/components/query/Query/Query.tsx +++ b/redisinsight/ui/src/pages/workbench/components/query/Query/Query.tsx @@ -1,11 +1,11 @@ import React, { useContext, useEffect, useMemo, useRef, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { compact, first } from 'lodash' +import { compact, first, isFinite } from 'lodash' import cx from 'classnames' import MonacoEditor, { monaco as monacoEditor } from 'react-monaco-editor' import { useParams } from 'react-router-dom' -import { DSLNaming, IRedisCommand, MonacoLanguage, Theme, } from 'uiSrc/constants' +import { DSLNaming, ICommandTokenType, IRedisCommand, MonacoLanguage, Theme, } from 'uiSrc/constants' import { actionTriggerParameterHints, createSyntaxWidget, @@ -28,6 +28,7 @@ import { stopProcessing, workbenchResultsSelector } from 'uiSrc/slices/workbench import DedicatedEditor from 'uiSrc/components/monaco-editor/components/dedicated-editor' import { QueryActions, QueryTutorials } from 'uiSrc/components/query' +import { addOwnTokenToArgs, findCurrentArgument, } from 'uiSrc/pages/workbench/utils/query' import { getRange, getRediSearchSignutureProvider, } from 'uiSrc/pages/workbench/utils/monaco' import { CursorContext } from 'uiSrc/pages/workbench/types' import { asSuggestionsRef, getCommandsSuggestions, isIndexComplete } from 'uiSrc/pages/workbench/utils/suggestions' @@ -35,7 +36,6 @@ import { COMMANDS_TO_GET_INDEX_INFO, COMPOSITE_ARGS, EmptySuggestionsIds, } from import { useDebouncedEffect } from 'uiSrc/services' import { fetchRedisearchInfoAction } from 'uiSrc/slices/browser/redisearch' import { findSuggestionsByArg } from 'uiSrc/pages/workbench/utils/searchSuggestions' -import { findSuggestionsByQueryArgs } from 'uiSrc/pages/workbench/utils/query' import { argInQuotesRegExp, aroundQuotesRegExp, @@ -104,6 +104,12 @@ const Query = (props: Props) => { const { theme } = useContext(ThemeContext) const monacoObjects = useRef>(null) + // TODO: need refactor to avoid this + const REDIS_COMMANDS = useMemo( + () => commands.map((command) => ({ ...addOwnTokenToArgs(command.name!, command) })), + [commands] + ) + const compositeTokens = useMemo(() => commands .filter((command) => command.token && command.token.includes(' ')) @@ -429,7 +435,12 @@ const Query = (props: Props) => { } const [beforeOffsetArgs, [currentOffsetArg]] = command.args - const foundArg = findSuggestionsByQueryArgs([{ ...command.info, token: command.name }], beforeOffsetArgs) + const foundArg = findCurrentArgument([{ + ...command.info, + type: ICommandTokenType.Block, + token: command.name, + arguments: command.info?.arguments + }], beforeOffsetArgs) const DSL = foundArg?.stopArg?.dsl if (DSL && argInQuotesRegExp.test(currentOffsetArg)) { @@ -564,7 +575,7 @@ const Query = (props: Props) => { const cursorContext: CursorContext = { ...cursor, currentOffsetArg, offset: command.commandCursorPosition, range } const { suggestions, helpWidget } = findSuggestionsByArg( - commands, + REDIS_COMMANDS, command, cursorContext, { fields: attributesRef.current, indexes: indexesRef.current }, diff --git a/redisinsight/ui/src/pages/workbench/types.ts b/redisinsight/ui/src/pages/workbench/types.ts index fd3b06e40a..05c961c1a1 100644 --- a/redisinsight/ui/src/pages/workbench/types.ts +++ b/redisinsight/ui/src/pages/workbench/types.ts @@ -8,12 +8,12 @@ export enum ArgName { } export interface FoundCommandArgument { - isComplete?: boolean + isComplete: boolean stopArg: Maybe isBlocked: boolean append: Maybe> parent: Maybe - token?: Maybe + token: Maybe } export interface CursorContext { @@ -26,9 +26,3 @@ export interface CursorContext { argRightOffset: number range: monacoEditor.IRange } - -export interface BlockTokensTree { - queryArgs: string[] - command?: IRedisCommand - parent?: BlockTokensTree -} diff --git a/redisinsight/ui/src/pages/workbench/utils/helpers.ts b/redisinsight/ui/src/pages/workbench/utils/helpers.ts index 61914d1cbd..72617c0d7c 100644 --- a/redisinsight/ui/src/pages/workbench/utils/helpers.ts +++ b/redisinsight/ui/src/pages/workbench/utils/helpers.ts @@ -1,12 +1,17 @@ import { ICommandTokenType, IRedisCommand } from 'uiSrc/constants' +import { Maybe } from 'uiSrc/utils' export const isStringsEqual = (str1?: string, str2?: string) => str1?.toLowerCase() === str2?.toLowerCase() -export const isPureTokenType = (command?: IRedisCommand) => command?.type === ICommandTokenType.PureToken -export const isBlockType = (command?: IRedisCommand) => command?.type === ICommandTokenType.Block -export const isOneOfType = (command?: IRedisCommand) => command?.type === ICommandTokenType.OneOf -export const isPureToken = (command?: IRedisCommand, arg?: string) => - isPureTokenType(command) && isStringsEqual(arg, command?.token) +export const isTokenEqualsArg = (token: IRedisCommand, arg: string) => { + if (token.type === ICommandTokenType.OneOf) { + return token.arguments + ?.some((oneOfArg: IRedisCommand) => isStringsEqual(oneOfArg?.token, arg)) + } + if (isStringsEqual(token.token, arg)) return true + if (token.type === ICommandTokenType.Block) return isStringsEqual(token.arguments?.[0]?.token, arg) + return false +} -export const isArgInOneOf = (command?: IRedisCommand, arg?: string) => - command?.arguments?.some(({ token }) => isStringsEqual(arg, token)) +export const findArgByToken = (list: IRedisCommand[], arg: string): Maybe => + list.find((command) => isTokenEqualsArg(command, arg)) diff --git a/redisinsight/ui/src/pages/workbench/utils/query.ts b/redisinsight/ui/src/pages/workbench/utils/query.ts index a16266b0a7..1b55fb5389 100644 --- a/redisinsight/ui/src/pages/workbench/utils/query.ts +++ b/redisinsight/ui/src/pages/workbench/utils/query.ts @@ -1,311 +1,331 @@ /* eslint-disable no-continue */ + import { findLastIndex, isNumber, toNumber } from 'lodash' -import { CommandProvider, ICommandTokenType, IRedisCommand, IRedisCommandTree } from 'uiSrc/constants' import { generateArgsNames, Maybe, Nullable } from 'uiSrc/utils' -import { ArgName, FoundCommandArgument } from 'uiSrc/pages/workbench/types' -import { isBlockType, isStringsEqual, isOneOfType, isPureToken, isArgInOneOf } from './helpers' - -interface BlockTokensTree { - queryArgs: string[] - command?: IRedisCommand - currentArg?: IRedisCommand - parent?: BlockTokensTree -} - -export const findSuggestionsByQueryArgs = ( - commands: IRedisCommand[], - queryArgs: string[], +import { CommandProvider, IRedisCommand, IRedisCommandTree, ICommandTokenType } from 'uiSrc/constants' +import { isStringsEqual } from './helpers' +import { ArgName, FoundCommandArgument } from '../types' + +export const findCurrentArgument = ( + args: IRedisCommand[], + prev: string[], + untilTokenArgs: string[] = [], + parent?: IRedisCommandTree ): Nullable => { - const firstQueryArg = queryArgs[0] - const scopeCommand = firstQueryArg - ? commands.find((command) => isStringsEqual(command.token, firstQueryArg)) - : undefined + for (let i = prev.length - 1; i >= 0; i--) { + const arg = prev[i] + const currentArg = findArgByToken(args, arg) + const currentWithParent: IRedisCommandTree = { ...currentArg, parent } - const nextArgs = queryArgs.slice(scopeCommand ? 1 : 0) - const blockToken: BlockTokensTree = { queryArgs: nextArgs, command: scopeCommand } + if (currentArg?.arguments && currentArg?.type === ICommandTokenType.Block) { + return findCurrentArgument(currentArg.arguments, prev.slice(i), prev, currentWithParent) + } - return findStopArgumentWithSuggestions(blockToken) -} + const tokenIndex = args.findIndex((cArg) => isStringsEqual(cArg.token, arg)) + const token = args[tokenIndex] -const skipOptionalArguments = ( - queryArg: string, - commandIndex: number, - commandArguments: IRedisCommand[], - withLastMandatory = false -): { - currentArgument: Maybe - optionalArguments: IRedisCommand[] - index: number -} => { - const optionalArguments = [] - let index = commandIndex + 1 - let currentArgument = commandArguments[index] - while (index < commandArguments.length) { - const argumentToken = currentArgument.token || currentArgument.arguments?.[0]?.token - const isOptionalWithInput = isStringsEqual(queryArg, argumentToken) - - if (isOptionalWithInput || (currentArgument && !currentArgument.optional)) { + if (token) { + const pastArgs = prev.slice(i) + const commandArgs = parent ? args.slice(tokenIndex, args.length) : [token] + + // getArgByRest - here we preparing the list of arguments which can be inserted, + // this is the main function which creates the list of arguments return { - optionalArguments: withLastMandatory ? [...optionalArguments, currentArgument] : optionalArguments, - currentArgument, - index + ...getArgumentSuggestions({ tokenArgs: pastArgs, untilTokenArgs }, commandArgs, parent), + token, + parent: parent || token } } - - optionalArguments.push(currentArgument) - index++ - currentArgument = commandArguments[index] } - return { optionalArguments, currentArgument, index } + return null } -const isCountArg = (arg?: Nullable) => arg?.name === ArgName.NArgs || arg?.name === ArgName.Count -const isCountPositive = (count?: Maybe) => isNumber(count) && count > 0 -export const findStopArgument = ( +const findStopArgumentInQuery = ( queryArgs: string[], - command?: IRedisCommandTree, - count?: Maybe, - forceReturn = false, - parentSkippedArguments: IRedisCommand[][] = [] -) => { - let commandIndex = 0 - let isBlocked = true - let argsCount = count + restCommandArgs: Maybe = [], +): { + restArguments: IRedisCommand[] + stopArgIndex: number + argumentsIntered?: number + isBlocked: boolean + parent?: IRedisCommand +} => { + let currentCommandArgIndex = 0 + let argumentsIntered = 0 + let isBlockedOnCommand = false + let multipleIndexStart = 0 + let multipleCountNumber = 0 + + const moveToNextCommandArg = () => { + currentCommandArgIndex++ + argumentsIntered++ + } + const blockCommand = () => { isBlockedOnCommand = true } + const unBlockCommand = () => { isBlockedOnCommand = false } - if (!command?.arguments) return null + const skipArg = () => { + argumentsIntered -= 1 + moveToNextCommandArg() + unBlockCommand() + } for (let i = 0; i < queryArgs.length; i++) { - const queryArg = queryArgs[i] - let currentArgument: Maybe = command?.arguments[commandIndex] - const prevMandatoryIndex = findLastIndex( - command.arguments.slice(0, commandIndex), - (arg) => !arg.optional - ) - - // handle optional arguments, iterate until we get token or non optional arguments - // we check if we not blocked on optional token argument - if (!isBlocked && (currentArgument?.optional || !forceReturn)) { - const arg = skipOptionalArguments(queryArg, prevMandatoryIndex, command.arguments) - const { index, currentArgument: nextCurrentArgument } = arg - - currentArgument = nextCurrentArgument - commandIndex = index - } + const arg = queryArgs[i] + const currentCommandArg = restCommandArgs[currentCommandArgIndex] - // handle case when we proceed all arguments from command but it is multiple and should return to 0 index - if (!currentArgument && isCountPositive(argsCount)) { - commandIndex = 0 - currentArgument = command?.arguments[commandIndex] + if (currentCommandArg?.type === ICommandTokenType.PureToken) { + skipArg() + continue } - if (!currentArgument && forceReturn) { - const arg = skipOptionalArguments(queryArg, prevMandatoryIndex, command.arguments) - const { optionalArguments: allRestArguments } = skipOptionalArguments('', prevMandatoryIndex, command.arguments) - const { index, currentArgument: nextCurrentArgument } = arg - const restOptional = removeSuggestedArgs(queryArgs, allRestArguments) - - if (!nextCurrentArgument) { - return { - queryArgsIterated: i, - stopArgument: currentArgument, - skippedArguments: allRestArguments, - isCompleteByNArgs: argsCount === 0 - } - } + if (!isBlockedOnCommand && currentCommandArg?.optional) { + const isNotToken = currentCommandArg?.token && !isStringsEqual(currentCommandArg.token, arg) + const isNotOneOfToken = !currentCommandArg?.token && currentCommandArg?.type === ICommandTokenType.OneOf + && currentCommandArg?.arguments?.every(({ token }) => !isStringsEqual(token, arg)) - // Continue iterating through optional arguments - currentArgument = nextCurrentArgument - - if (restOptional?.length) { - commandIndex = index + if (isNotToken || isNotOneOfToken) { + moveToNextCommandArg() + skipArg() + continue } } - // check count to understand that we in block nargs scope, if completed all arguments then return - if (isCountPositive(count) && argsCount === 0) { - return { - queryArgsIterated: i, - stopArgument: currentArgument, - skippedArguments: parentSkippedArguments, - isBlocked: false, - isCompleteByNArgs: true - } - } + if (currentCommandArg?.type === ICommandTokenType.Block) { + let blockArguments = currentCommandArg.arguments ? [...currentCommandArg.arguments] : [] + const nArgs = toNumber(queryArgs[i - 1]) || 0 - // handle pure token, if arg equals, then move to next command - if (isPureToken(currentArgument, queryArg)) { - isBlocked = false - commandIndex++ - isNumber(argsCount) && argsCount-- - continue - } - - // handle first iteration of token, if arg equals - stay on it and move on to check itself - if (currentArgument?.token) { - if (isStringsEqual(queryArg, currentArgument.token)) { - isBlocked = true - continue + // if block is multiple - we duplicate nArgs inner arguments + if (currentCommandArg?.multiple && nArgs) { + blockArguments = Array(nArgs).fill(currentCommandArg.arguments).flat() } - if (isBlocked) isBlocked = false + const currentQueryArg = queryArgs.slice(i)?.[0] + const isBlockHasToken = isStringsEqual(blockArguments?.[0]?.token, currentQueryArg) - // token can be on block type - if (!isBlockType(currentArgument) && !isCountArg(currentArgument)) { - commandIndex++ - isNumber(argsCount) && argsCount-- - continue + if (currentCommandArg.token && !isBlockHasToken && currentQueryArg) { + blockArguments.unshift({ + type: ICommandTokenType.PureToken, + token: currentQueryArg + }) } - } - // handle block, we call the same function for block arguments - if (isBlockType(currentArgument)) { - const { optionalArguments } = skipOptionalArguments('', prevMandatoryIndex, command.arguments) - const filteredArguments = removeSuggestedArgs(queryArgs, optionalArguments) - const parentArgs = [filteredArguments, ...parentSkippedArguments] - const restQeuryArgs = queryArgs.slice(i) - const blockResult: any = findStopArgument(restQeuryArgs, currentArgument, argsCount, true, parentArgs) || {} - const { stopArgument, isCompleteByNArgs, queryArgsIterated, lastArgument, skippedArguments } = blockResult - - const isCountCompleted = isCountPositive(argsCount) && isCompleteByNArgs - i += (queryArgsIterated || 1) - 1 - - // entered all multiple counted arguments, move to next command arg - if (isCountCompleted) { - argsCount = undefined - isBlocked = false - commandIndex++ - continue - } + const blockSuggestion = findStopArgumentInQuery(queryArgs.slice(i), blockArguments) + const stopArg = blockSuggestion.restArguments?.[blockSuggestion.stopArgIndex] + const { argumentsIntered } = blockSuggestion - // we found an argument which is needed to be inserted - if (stopArgument) { - return { - ...blockResult, - blockParent: currentArgument - } + if (nArgs && currentCommandArg?.multiple && isNumber(argumentsIntered) && argumentsIntered >= nArgs) { + i += queryArgs.slice(i).length - 1 + skipArg() + continue } - if (lastArgument?.optional && skippedArguments?.[0]?.length) { + if (blockSuggestion.isBlocked || stopArg) { return { - ...blockResult + ...blockSuggestion, + parent: currentCommandArg } } - if (currentArgument && (!currentArgument.multiple)) commandIndex++ + i += queryArgs.slice(i).length - 1 + skipArg() + continue + } - isBlocked = false - argsCount = undefined + // if we are on token - that requires one more argument + if (isStringsEqual(currentCommandArg?.token, arg)) { + blockCommand() continue } - // handle one-of argument - if (isOneOfType(currentArgument)) { - const isArgOneOf = isArgInOneOf(currentArgument, queryArg) - if (isArgOneOf) { - commandIndex++ - isNumber(argsCount) && argsCount-- - isBlocked = false + if (currentCommandArg?.name === ArgName.NArgs || currentCommandArg?.name === ArgName.Count) { + const numberOfArgs = toNumber(arg) + + if (numberOfArgs === 0) { + moveToNextCommandArg() + skipArg() continue } - isBlocked = true + moveToNextCommandArg() + blockCommand() + continue } - // handle multiple arguments, argsCount - number of arguments which have to be inserted - if (currentArgument?.multiple) { - isNumber(argsCount) && argsCount-- - - if (argsCount === 0) { - commandIndex++ - isBlocked = false + if (currentCommandArg?.type === ICommandTokenType.OneOf && currentCommandArg?.optional) { + // if oneof is optional then we can switch to another argument + if (!currentCommandArg?.arguments?.some(({ token }) => isStringsEqual(token, arg))) { + moveToNextCommandArg() } + skipArg() continue } - // handle count argument with next multiple - const nextArgument = command?.arguments?.[commandIndex + 1] - if (isCountArg(currentArgument) && nextArgument?.multiple) { - argsCount = toNumber(queryArg) || 0 + if (currentCommandArg?.multiple) { + if (!multipleIndexStart) { + multipleCountNumber = toNumber(queryArgs[i - 1]) + multipleIndexStart = i - 1 + } - if (argsCount === 0) { - // skip next argument - commandIndex += 2 + if (i - multipleIndexStart >= multipleCountNumber) { + skipArg() + multipleIndexStart = 0 continue } - commandIndex++ - isBlocked = true + blockCommand() continue } - commandIndex++ - isNumber(argsCount) && argsCount-- - - if (isCountPositive(argsCount)) { - continue - } + moveToNextCommandArg() - isBlocked = false + isBlockedOnCommand = false } - const stopArgument: Maybe = command?.arguments?.[commandIndex] - const prevMandatoryIndex = findLastIndex( - command.arguments.slice(0, commandIndex), - (arg) => !arg.optional - ) - - const data = skipOptionalArguments('', prevMandatoryIndex, command.arguments, true) - const currentLvlArgs = removeSuggestedArgs(queryArgs, data.optionalArguments) - return { - skippedArguments: stopArgument && !stopArgument.optional - ? [currentLvlArgs] - : [currentLvlArgs, ...parentSkippedArguments], - lastArgument: command?.arguments?.[commandIndex - 1], - stopArgument, - isBlocked, - queryArgsIterated: queryArgs.length, - isCompleteByNArgs: argsCount === 0 + restArguments: restCommandArgs, + stopArgIndex: currentCommandArgIndex, + argumentsIntered, + isBlocked: isBlockedOnCommand } } -export const findStopArgumentWithSuggestions = (currentBlock: BlockTokensTree): Nullable => { - const { queryArgs, command } = currentBlock +export const getArgumentSuggestions = ( + { tokenArgs, untilTokenArgs }: { + tokenArgs: string[], + untilTokenArgs: string[] + }, + pastCommandArgs: IRedisCommand[], + current?: IRedisCommandTree +): { + isComplete: boolean + stopArg: Maybe, + isBlocked: boolean, + append: Array, +} => { const { - isBlocked, - stopArgument, - skippedArguments, - blockParent, - } = findStopArgument(queryArgs, command) + restArguments, + stopArgIndex, + isBlocked: isWasBlocked, + parent + } = findStopArgumentInQuery(tokenArgs, pastCommandArgs) - if (isBlocked) { - const isBlockedWithSuggestions = stopArgument.type === ICommandTokenType.OneOf + const prevArg = restArguments[stopArgIndex - 1] + const stopArgument = restArguments[stopArgIndex] + const restNotFilledArgs = restArguments.slice(stopArgIndex) + const isOneOfArgument = stopArgument?.type === ICommandTokenType.OneOf + || (stopArgument?.type === ICommandTokenType.PureToken && current?.parent?.type === ICommandTokenType.OneOf) + + if (isWasBlocked) { return { + isComplete: false, stopArg: stopArgument, - append: [ - fillArgsByType( - isBlockedWithSuggestions ? stopArgument.arguments : [stopArgument.arguments?.[0]] || [stopArgument] - ) - ], - isBlocked: !isBlockedWithSuggestions, - parent: blockParent || command + isBlocked: !isOneOfArgument, + append: isOneOfArgument ? [stopArgument.arguments!] : [], } } - const append = skippedArguments.map((args: IRedisCommand[]) => fillArgsByType(args, true)) + const isPrevArgWasMandatory = prevArg && !prevArg.optional + if (isPrevArgWasMandatory && stopArgument && !stopArgument.optional) { + const isCanAppend = stopArgument?.token || isOneOfArgument + const append = isCanAppend ? [[isOneOfArgument ? stopArgument.arguments! : stopArgument].flat()] : [] + + return { + isComplete: false, + stopArg: stopArgument, + isBlocked: !isCanAppend, + append, + } + } + + // if we finished argument - stopArgument will be undefined, then we get it as token + const lastArgument = stopArgument ?? restArguments[0] + const isBlockHasParent = current?.arguments?.some(({ name }) => parent?.name && name === parent?.name) + const foundParent = isBlockHasParent ? { ...parent, parent: current } : (parent || current) + + const isBlockComplete = !stopArgument && isPrevArgWasMandatory + const beforeMandatoryOptionalArgs = getAllRestArguments(foundParent, lastArgument, untilTokenArgs, isBlockComplete) + const requiredArgsLength = restNotFilledArgs.filter((arg) => !arg.optional).length return { - append, + isComplete: requiredArgsLength === 0, stopArg: stopArgument, - isBlocked, - parent: blockParent || command + isBlocked: false, + append: beforeMandatoryOptionalArgs, + } +} + +export const getRestArguments = ( + current: Maybe, + stopArgument: Nullable +): IRedisCommandTree[] => { + const argumentIndexInArg = current?.arguments + ?.findIndex(({ name }) => name === stopArgument?.name) + const nextMandatoryIndex = stopArgument && !stopArgument.optional + ? argumentIndexInArg + : argumentIndexInArg && argumentIndexInArg > -1 ? current?.arguments + ?.findIndex(({ optional }, i) => !optional && i > argumentIndexInArg) : -1 + + const prevMandatory = current?.arguments?.slice(0, argumentIndexInArg).reverse() + .find(({ optional }) => !optional) + const prevMandatoryIndex = current?.arguments?.findIndex(({ name }) => name === prevMandatory?.name) + + const beforeMandatoryOptionalArgs = ( + nextMandatoryIndex && nextMandatoryIndex > -1 + ? current?.arguments?.slice(prevMandatoryIndex, nextMandatoryIndex) + : current?.arguments?.slice((prevMandatoryIndex || 0) + 1) + ) || [] + + const nextMandatoryArg = nextMandatoryIndex && nextMandatoryIndex > -1 + ? current?.arguments?.[nextMandatoryIndex] + : undefined + + if (nextMandatoryArg?.token) { + beforeMandatoryOptionalArgs.unshift(nextMandatoryArg) + } + + if (nextMandatoryArg?.type === ICommandTokenType.OneOf) { + beforeMandatoryOptionalArgs.unshift(...(nextMandatoryArg.arguments || [])) } + + return beforeMandatoryOptionalArgs.map((arg) => ({ ...arg, parent: current })) } -export const removeSuggestedArgs = (args: string[], commandArgs: IRedisCommandTree[]) => +export const getAllRestArguments = ( + current: Maybe, + stopArgument: Nullable, + untilTokenArgs: string[] = [], + skipLevel = false +) => { + const appendArgs: Array = [] + + const currentToken = current?.type === ICommandTokenType.Block ? current?.arguments?.[0].token : current?.token + const lastTokenIndex = findLastIndex( + untilTokenArgs, + (arg) => isStringsEqual(arg, currentToken) + ) + const currentLvlNextArgs = removeNotSuggestedArgs( + untilTokenArgs.slice(lastTokenIndex > 0 ? lastTokenIndex : 0), + getRestArguments(current, stopArgument) + ) + + if (!skipLevel) { + appendArgs.push(fillArgsByType(currentLvlNextArgs)) + } + + if (current?.parent) { + const parentArgs = getAllRestArguments(current.parent, current, untilTokenArgs) + if (parentArgs?.length) { + appendArgs.push(...parentArgs) + } + } + + return appendArgs +} + +export const removeNotSuggestedArgs = (args: string[], commandArgs: IRedisCommandTree[]) => commandArgs.filter((arg) => { if (arg.token && arg.multiple) return true @@ -316,11 +336,12 @@ export const removeSuggestedArgs = (args: string[], commandArgs: IRedisCommandTr } if (arg.type === ICommandTokenType.Block) { - if (arg.token) return !args.includes(arg.token) || arg.multiple - return arg.arguments?.[0]?.token && (!args.includes(arg.arguments?.[0]?.token?.toUpperCase()) || arg.multiple) + if (arg.token) return !args.some((queryArg) => isStringsEqual(queryArg, arg.token)) || arg.multiple + return arg.arguments?.[0]?.token + && (!args.some(((queryArg) => isStringsEqual(queryArg, arg.arguments?.[0]?.token))) || arg.multiple) } - return arg.token && !args.includes(arg.token) + return arg.token && !args.some((queryArg) => isStringsEqual(queryArg, arg.token)) }) export const fillArgsByType = (args: IRedisCommand[], expandBlock = true): IRedisCommandTree[] => { @@ -329,16 +350,16 @@ export const fillArgsByType = (args: IRedisCommand[], expandBlock = true): IRedi for (let i = 0; i < args.length; i++) { const currentArg = args[i] - if (expandBlock && currentArg?.type === ICommandTokenType.OneOf && !currentArg?.token) { + if (expandBlock && currentArg.type === ICommandTokenType.OneOf && !currentArg.token) { result.push(...(currentArg?.arguments?.map((arg) => ({ ...arg, parent: currentArg })) || [])) } - if (currentArg?.token) { + if (currentArg.token) { result.push(currentArg) continue } - if (currentArg?.type === ICommandTokenType.Block) { + if (currentArg.type === ICommandTokenType.Block) { result.push({ multiple: currentArg.multiple, optional: currentArg.optional, @@ -351,6 +372,12 @@ export const fillArgsByType = (args: IRedisCommand[], expandBlock = true): IRedi return result } +export const findArgByToken = (list: IRedisCommand[], arg: string): Maybe => + list.find((cArg) => + (cArg.type === ICommandTokenType.OneOf + ? cArg.arguments?.some((oneOfArg: IRedisCommand) => isStringsEqual(oneOfArg?.token, arg)) + : isStringsEqual(cArg.arguments?.[0].token, arg))) + export const generateDetail = (command: Maybe) => { if (!command) return '' if (command.arguments) { @@ -368,3 +395,10 @@ export const generateDetail = (command: Maybe) => { return '' } + +export const addOwnTokenToArgs = (token: string, command: IRedisCommand) => { + if (command.arguments) { + return ({ ...command, arguments: [{ token, type: ICommandTokenType.PureToken }, ...command.arguments] }) + } + return command +} diff --git a/redisinsight/ui/src/pages/workbench/utils/query_old.ts b/redisinsight/ui/src/pages/workbench/utils/query_old.ts deleted file mode 100644 index 1b55fb5389..0000000000 --- a/redisinsight/ui/src/pages/workbench/utils/query_old.ts +++ /dev/null @@ -1,404 +0,0 @@ -/* eslint-disable no-continue */ - -import { findLastIndex, isNumber, toNumber } from 'lodash' -import { generateArgsNames, Maybe, Nullable } from 'uiSrc/utils' -import { CommandProvider, IRedisCommand, IRedisCommandTree, ICommandTokenType } from 'uiSrc/constants' -import { isStringsEqual } from './helpers' -import { ArgName, FoundCommandArgument } from '../types' - -export const findCurrentArgument = ( - args: IRedisCommand[], - prev: string[], - untilTokenArgs: string[] = [], - parent?: IRedisCommandTree -): Nullable => { - for (let i = prev.length - 1; i >= 0; i--) { - const arg = prev[i] - const currentArg = findArgByToken(args, arg) - const currentWithParent: IRedisCommandTree = { ...currentArg, parent } - - if (currentArg?.arguments && currentArg?.type === ICommandTokenType.Block) { - return findCurrentArgument(currentArg.arguments, prev.slice(i), prev, currentWithParent) - } - - const tokenIndex = args.findIndex((cArg) => isStringsEqual(cArg.token, arg)) - const token = args[tokenIndex] - - if (token) { - const pastArgs = prev.slice(i) - const commandArgs = parent ? args.slice(tokenIndex, args.length) : [token] - - // getArgByRest - here we preparing the list of arguments which can be inserted, - // this is the main function which creates the list of arguments - return { - ...getArgumentSuggestions({ tokenArgs: pastArgs, untilTokenArgs }, commandArgs, parent), - token, - parent: parent || token - } - } - } - - return null -} - -const findStopArgumentInQuery = ( - queryArgs: string[], - restCommandArgs: Maybe = [], -): { - restArguments: IRedisCommand[] - stopArgIndex: number - argumentsIntered?: number - isBlocked: boolean - parent?: IRedisCommand -} => { - let currentCommandArgIndex = 0 - let argumentsIntered = 0 - let isBlockedOnCommand = false - let multipleIndexStart = 0 - let multipleCountNumber = 0 - - const moveToNextCommandArg = () => { - currentCommandArgIndex++ - argumentsIntered++ - } - const blockCommand = () => { isBlockedOnCommand = true } - const unBlockCommand = () => { isBlockedOnCommand = false } - - const skipArg = () => { - argumentsIntered -= 1 - moveToNextCommandArg() - unBlockCommand() - } - - for (let i = 0; i < queryArgs.length; i++) { - const arg = queryArgs[i] - const currentCommandArg = restCommandArgs[currentCommandArgIndex] - - if (currentCommandArg?.type === ICommandTokenType.PureToken) { - skipArg() - continue - } - - if (!isBlockedOnCommand && currentCommandArg?.optional) { - const isNotToken = currentCommandArg?.token && !isStringsEqual(currentCommandArg.token, arg) - const isNotOneOfToken = !currentCommandArg?.token && currentCommandArg?.type === ICommandTokenType.OneOf - && currentCommandArg?.arguments?.every(({ token }) => !isStringsEqual(token, arg)) - - if (isNotToken || isNotOneOfToken) { - moveToNextCommandArg() - skipArg() - continue - } - } - - if (currentCommandArg?.type === ICommandTokenType.Block) { - let blockArguments = currentCommandArg.arguments ? [...currentCommandArg.arguments] : [] - const nArgs = toNumber(queryArgs[i - 1]) || 0 - - // if block is multiple - we duplicate nArgs inner arguments - if (currentCommandArg?.multiple && nArgs) { - blockArguments = Array(nArgs).fill(currentCommandArg.arguments).flat() - } - - const currentQueryArg = queryArgs.slice(i)?.[0] - const isBlockHasToken = isStringsEqual(blockArguments?.[0]?.token, currentQueryArg) - - if (currentCommandArg.token && !isBlockHasToken && currentQueryArg) { - blockArguments.unshift({ - type: ICommandTokenType.PureToken, - token: currentQueryArg - }) - } - - const blockSuggestion = findStopArgumentInQuery(queryArgs.slice(i), blockArguments) - const stopArg = blockSuggestion.restArguments?.[blockSuggestion.stopArgIndex] - const { argumentsIntered } = blockSuggestion - - if (nArgs && currentCommandArg?.multiple && isNumber(argumentsIntered) && argumentsIntered >= nArgs) { - i += queryArgs.slice(i).length - 1 - skipArg() - continue - } - - if (blockSuggestion.isBlocked || stopArg) { - return { - ...blockSuggestion, - parent: currentCommandArg - } - } - - i += queryArgs.slice(i).length - 1 - skipArg() - continue - } - - // if we are on token - that requires one more argument - if (isStringsEqual(currentCommandArg?.token, arg)) { - blockCommand() - continue - } - - if (currentCommandArg?.name === ArgName.NArgs || currentCommandArg?.name === ArgName.Count) { - const numberOfArgs = toNumber(arg) - - if (numberOfArgs === 0) { - moveToNextCommandArg() - skipArg() - continue - } - - moveToNextCommandArg() - blockCommand() - continue - } - - if (currentCommandArg?.type === ICommandTokenType.OneOf && currentCommandArg?.optional) { - // if oneof is optional then we can switch to another argument - if (!currentCommandArg?.arguments?.some(({ token }) => isStringsEqual(token, arg))) { - moveToNextCommandArg() - } - - skipArg() - continue - } - - if (currentCommandArg?.multiple) { - if (!multipleIndexStart) { - multipleCountNumber = toNumber(queryArgs[i - 1]) - multipleIndexStart = i - 1 - } - - if (i - multipleIndexStart >= multipleCountNumber) { - skipArg() - multipleIndexStart = 0 - continue - } - - blockCommand() - continue - } - - moveToNextCommandArg() - - isBlockedOnCommand = false - } - - return { - restArguments: restCommandArgs, - stopArgIndex: currentCommandArgIndex, - argumentsIntered, - isBlocked: isBlockedOnCommand - } -} - -export const getArgumentSuggestions = ( - { tokenArgs, untilTokenArgs }: { - tokenArgs: string[], - untilTokenArgs: string[] - }, - pastCommandArgs: IRedisCommand[], - current?: IRedisCommandTree -): { - isComplete: boolean - stopArg: Maybe, - isBlocked: boolean, - append: Array, -} => { - const { - restArguments, - stopArgIndex, - isBlocked: isWasBlocked, - parent - } = findStopArgumentInQuery(tokenArgs, pastCommandArgs) - - const prevArg = restArguments[stopArgIndex - 1] - const stopArgument = restArguments[stopArgIndex] - const restNotFilledArgs = restArguments.slice(stopArgIndex) - - const isOneOfArgument = stopArgument?.type === ICommandTokenType.OneOf - || (stopArgument?.type === ICommandTokenType.PureToken && current?.parent?.type === ICommandTokenType.OneOf) - - if (isWasBlocked) { - return { - isComplete: false, - stopArg: stopArgument, - isBlocked: !isOneOfArgument, - append: isOneOfArgument ? [stopArgument.arguments!] : [], - } - } - - const isPrevArgWasMandatory = prevArg && !prevArg.optional - if (isPrevArgWasMandatory && stopArgument && !stopArgument.optional) { - const isCanAppend = stopArgument?.token || isOneOfArgument - const append = isCanAppend ? [[isOneOfArgument ? stopArgument.arguments! : stopArgument].flat()] : [] - - return { - isComplete: false, - stopArg: stopArgument, - isBlocked: !isCanAppend, - append, - } - } - - // if we finished argument - stopArgument will be undefined, then we get it as token - const lastArgument = stopArgument ?? restArguments[0] - const isBlockHasParent = current?.arguments?.some(({ name }) => parent?.name && name === parent?.name) - const foundParent = isBlockHasParent ? { ...parent, parent: current } : (parent || current) - - const isBlockComplete = !stopArgument && isPrevArgWasMandatory - const beforeMandatoryOptionalArgs = getAllRestArguments(foundParent, lastArgument, untilTokenArgs, isBlockComplete) - const requiredArgsLength = restNotFilledArgs.filter((arg) => !arg.optional).length - - return { - isComplete: requiredArgsLength === 0, - stopArg: stopArgument, - isBlocked: false, - append: beforeMandatoryOptionalArgs, - } -} - -export const getRestArguments = ( - current: Maybe, - stopArgument: Nullable -): IRedisCommandTree[] => { - const argumentIndexInArg = current?.arguments - ?.findIndex(({ name }) => name === stopArgument?.name) - const nextMandatoryIndex = stopArgument && !stopArgument.optional - ? argumentIndexInArg - : argumentIndexInArg && argumentIndexInArg > -1 ? current?.arguments - ?.findIndex(({ optional }, i) => !optional && i > argumentIndexInArg) : -1 - - const prevMandatory = current?.arguments?.slice(0, argumentIndexInArg).reverse() - .find(({ optional }) => !optional) - const prevMandatoryIndex = current?.arguments?.findIndex(({ name }) => name === prevMandatory?.name) - - const beforeMandatoryOptionalArgs = ( - nextMandatoryIndex && nextMandatoryIndex > -1 - ? current?.arguments?.slice(prevMandatoryIndex, nextMandatoryIndex) - : current?.arguments?.slice((prevMandatoryIndex || 0) + 1) - ) || [] - - const nextMandatoryArg = nextMandatoryIndex && nextMandatoryIndex > -1 - ? current?.arguments?.[nextMandatoryIndex] - : undefined - - if (nextMandatoryArg?.token) { - beforeMandatoryOptionalArgs.unshift(nextMandatoryArg) - } - - if (nextMandatoryArg?.type === ICommandTokenType.OneOf) { - beforeMandatoryOptionalArgs.unshift(...(nextMandatoryArg.arguments || [])) - } - - return beforeMandatoryOptionalArgs.map((arg) => ({ ...arg, parent: current })) -} - -export const getAllRestArguments = ( - current: Maybe, - stopArgument: Nullable, - untilTokenArgs: string[] = [], - skipLevel = false -) => { - const appendArgs: Array = [] - - const currentToken = current?.type === ICommandTokenType.Block ? current?.arguments?.[0].token : current?.token - const lastTokenIndex = findLastIndex( - untilTokenArgs, - (arg) => isStringsEqual(arg, currentToken) - ) - const currentLvlNextArgs = removeNotSuggestedArgs( - untilTokenArgs.slice(lastTokenIndex > 0 ? lastTokenIndex : 0), - getRestArguments(current, stopArgument) - ) - - if (!skipLevel) { - appendArgs.push(fillArgsByType(currentLvlNextArgs)) - } - - if (current?.parent) { - const parentArgs = getAllRestArguments(current.parent, current, untilTokenArgs) - if (parentArgs?.length) { - appendArgs.push(...parentArgs) - } - } - - return appendArgs -} - -export const removeNotSuggestedArgs = (args: string[], commandArgs: IRedisCommandTree[]) => - commandArgs.filter((arg) => { - if (arg.token && arg.multiple) return true - - if (arg.type === ICommandTokenType.OneOf) { - return !args - .some((queryArg) => arg.arguments - ?.some((oneOfArg) => isStringsEqual(oneOfArg.token, queryArg))) - } - - if (arg.type === ICommandTokenType.Block) { - if (arg.token) return !args.some((queryArg) => isStringsEqual(queryArg, arg.token)) || arg.multiple - return arg.arguments?.[0]?.token - && (!args.some(((queryArg) => isStringsEqual(queryArg, arg.arguments?.[0]?.token))) || arg.multiple) - } - - return arg.token && !args.some((queryArg) => isStringsEqual(queryArg, arg.token)) - }) - -export const fillArgsByType = (args: IRedisCommand[], expandBlock = true): IRedisCommandTree[] => { - const result: IRedisCommandTree[] = [] - - for (let i = 0; i < args.length; i++) { - const currentArg = args[i] - - if (expandBlock && currentArg.type === ICommandTokenType.OneOf && !currentArg.token) { - result.push(...(currentArg?.arguments?.map((arg) => ({ ...arg, parent: currentArg })) || [])) - } - - if (currentArg.token) { - result.push(currentArg) - continue - } - - if (currentArg.type === ICommandTokenType.Block) { - result.push({ - multiple: currentArg.multiple, - optional: currentArg.optional, - parent: currentArg, - ...(currentArg?.arguments?.[0] as IRedisCommand || {}), - }) - } - } - - return result -} - -export const findArgByToken = (list: IRedisCommand[], arg: string): Maybe => - list.find((cArg) => - (cArg.type === ICommandTokenType.OneOf - ? cArg.arguments?.some((oneOfArg: IRedisCommand) => isStringsEqual(oneOfArg?.token, arg)) - : isStringsEqual(cArg.arguments?.[0].token, arg))) - -export const generateDetail = (command: Maybe) => { - if (!command) return '' - if (command.arguments) { - const isTokenInArguemnts = command.token === command.arguments?.[0]?.token - const args = generateArgsNames( - CommandProvider.Main, - command.arguments.slice(isTokenInArguemnts ? 1 : 0) - ).join(' ') - return command.token ? `${command.token} ${args}` : args - } - if (command.token) { - if (command.type === ICommandTokenType.PureToken) return command.token - return `${command.token}` - } - - return '' -} - -export const addOwnTokenToArgs = (token: string, command: IRedisCommand) => { - if (command.arguments) { - return ({ ...command, arguments: [{ token, type: ICommandTokenType.PureToken }, ...command.arguments] }) - } - return command -} diff --git a/redisinsight/ui/src/pages/workbench/utils/query_refactor.ts b/redisinsight/ui/src/pages/workbench/utils/query_refactor.ts new file mode 100644 index 0000000000..774892d4a3 --- /dev/null +++ b/redisinsight/ui/src/pages/workbench/utils/query_refactor.ts @@ -0,0 +1,71 @@ +/* eslint-disable no-continue */ +import { ICommandTokenType, IRedisCommand } from 'uiSrc/constants' +import { Maybe } from 'uiSrc/utils' +import { isStringsEqual, isTokenEqualsArg } from './helpers' + +interface BlockTokensTree { + queryArgs: string[] + command?: IRedisCommand + parent?: BlockTokensTree +} + +export const findSuggestionsByQueryArgs = ( + commands: IRedisCommand[], + queryArgs: string[], +) => { + const firstQueryArg = queryArgs[0] + const scopeCommand = firstQueryArg + ? commands.find((command) => isStringsEqual(command.token, firstQueryArg)) + : undefined + + const getLastBlock = ( + args: string[], + command?: IRedisCommand, + parent?: any, + ): BlockTokensTree => { + for (let i = args.length - 1; i >= 0; i--) { + const arg = args[i] + const currentArg = findArgByToken(command?.arguments || [], arg) + + if (currentArg?.type === ICommandTokenType.Block) { + return getLastBlock(args.slice(i), currentArg, { queryArgs: queryArgs.slice(i), command: currentArg, parent }) + } + } + + return parent + } + + const blockToken: BlockTokensTree = { queryArgs: queryArgs.slice(scopeCommand ? 1 : 0), command: scopeCommand } + const currentBlock = getLastBlock(queryArgs, scopeCommand, blockToken) + const stopArgument = findStopArgumentWithSuggestions(currentBlock) + + console.log(stopArgument) + + return null +} + +const getStopArgument = ( + queryArgs: string[], + command: Maybe +) => { + let currentCommandArgIndex = 0 + + for (let i = 0; i < queryArgs.length; i++) { + const arg = queryArgs[i] + const currentCommandArg = command?.arguments?.[currentCommandArgIndex] + + currentCommandArgIndex++ + } + + return null +} + +const findStopArgumentWithSuggestions = (currentBlock: BlockTokensTree) => { + console.log(currentBlock) + const stopArgument = getStopArgument(currentBlock.queryArgs, currentBlock.command) + + return null +} + +const findArgByToken = (list: IRedisCommand[], arg: string): Maybe => + list.find((command) => isTokenEqualsArg(command, arg)) diff --git a/redisinsight/ui/src/pages/workbench/utils/searchSuggestions.ts b/redisinsight/ui/src/pages/workbench/utils/searchSuggestions.ts index 5e20f1c27e..f17c477a6f 100644 --- a/redisinsight/ui/src/pages/workbench/utils/searchSuggestions.ts +++ b/redisinsight/ui/src/pages/workbench/utils/searchSuggestions.ts @@ -2,6 +2,7 @@ import { monaco as monacoEditor } from 'react-monaco-editor' import { isNumber } from 'lodash' import { IMonacoQuery, Nullable, splitQueryByArgs } from 'uiSrc/utils' import { CursorContext, FoundCommandArgument } from 'uiSrc/pages/workbench/types' +import { findCurrentArgument } from 'uiSrc/pages/workbench/utils/query' import { IRedisCommand } from 'uiSrc/constants' import { asSuggestionsRef, @@ -9,7 +10,7 @@ import { getFunctionsSuggestions, getGeneralSuggestions, getIndexesSuggestions, - getNoIndexesSuggestion, + getNoIndexesSuggestion } from 'uiSrc/pages/workbench/utils/suggestions' import { COMMANDS_WITHOUT_INDEX_PROPOSE, @@ -17,7 +18,6 @@ import { FIELD_START_SYMBOL, ModuleCommandPrefix } from 'uiSrc/pages/workbench/constants' -import { findSuggestionsByQueryArgs } from 'uiSrc/pages/workbench/utils/query' export const findSuggestionsByArg = ( listOfCommands: IRedisCommand[], @@ -44,7 +44,10 @@ export const findSuggestionsByArg = ( } } - const foundArg = findSuggestionsByQueryArgs(listOfCommands, beforeOffsetArgs) + const scopedList = command.name + ? listOfCommands.filter(({ token }) => token === command?.name) + : listOfCommands + const foundArg = findCurrentArgument(scopedList, beforeOffsetArgs) if (!command.name.startsWith(ModuleCommandPrefix.RediSearch)) { return { @@ -53,7 +56,7 @@ export const findSuggestionsByArg = ( } } - if (prevCursorChar === FIELD_START_SYMBOL || currentOffsetArg?.startsWith(FIELD_START_SYMBOL)) { + if (prevCursorChar === FIELD_START_SYMBOL) { return handleFieldSuggestions(additionData.fields || [], foundArg, cursorContext.range) } diff --git a/redisinsight/ui/src/pages/workbench/utils/suggestions.ts b/redisinsight/ui/src/pages/workbench/utils/suggestions.ts index dad9e8fa3a..997e0186d3 100644 --- a/redisinsight/ui/src/pages/workbench/utils/suggestions.ts +++ b/redisinsight/ui/src/pages/workbench/utils/suggestions.ts @@ -160,7 +160,9 @@ export const getCommandSuggestions = ( for (let i = 0; i < appendCommands.length; i++) { const isLastLevel = i === appendCommands.length - 1 - const filteredFileldArgs = appendCommands[i] + const filteredFileldArgs = isLastLevel + ? removeNotSuggestedArgs(allArgs, appendCommands[i]) + : appendCommands[i] const leveledSuggestions = filteredFileldArgs .map((arg) => buildSuggestion(arg, range, { @@ -187,13 +189,9 @@ export const getGeneralSuggestions = ( forceHide?: boolean helpWidgetData?: any } => { - if (foundArg) { - // TODO: check result + if (foundArg && !foundArg.isComplete) { return { - // TODO: hope I need to recive proper append - suggestions: foundArg?.stopArg && !foundArg?.stopArg.optional - ? getMandatoryArgumentSuggestions(foundArg, fields, range) - : getCommandSuggestions(foundArg, allArgs, range), + suggestions: getMandatoryArgumentSuggestions(foundArg, fields, range), helpWidgetData: { isOpen: !!foundArg?.stopArg, data: { @@ -228,14 +226,3 @@ export const isIndexComplete = (index: string) => { return !escape } - -export const getParentWithOwnToken = (command?: IRedisCommand) => { - if (command?.token) { - return { - ...command, - arguments: command?.arguments ? [{ name: command.token }, ...command.arguments] : undefined - } - } - - return command -} diff --git a/redisinsight/ui/src/pages/workbench/utils/tests/query.spec.ts b/redisinsight/ui/src/pages/workbench/utils/tests/query.spec.ts index d59fccd245..07010aaa38 100644 --- a/redisinsight/ui/src/pages/workbench/utils/tests/query.spec.ts +++ b/redisinsight/ui/src/pages/workbench/utils/tests/query.spec.ts @@ -1,13 +1,12 @@ import { Maybe, splitQueryByArgs } from 'uiSrc/utils' import { MOCKED_REDIS_COMMANDS } from 'uiSrc/mocks/data/mocked_redis_commands' import { IRedisCommand, ICommandTokenType } from 'uiSrc/constants' -import { - findSuggestionsByQueryArgs, - generateDetail -} from 'uiSrc/pages/workbench/utils/query' import { commonfindCurrentArgumentCases, + findArgumentftAggreageTests, + findArgumentftSearchTests } from './test-cases' +import { addOwnTokenToArgs, findCurrentArgument, generateDetail } from '../query' const ftSearchCommand = MOCKED_REDIS_COMMANDS['FT.SEARCH'] const ftAggregateCommand = MOCKED_REDIS_COMMANDS['FT.AGGREGATE'] @@ -19,22 +18,22 @@ const COMPOSITE_ARGS = COMMANDS .filter((command) => command.name && command.name.includes(' ')) .map(({ name }) => name) -describe('findSuggestionsByQueryArgs', () => { +describe('findCurrentArgument', () => { describe('with list of commands', () => { commonfindCurrentArgumentCases.forEach(({ input, result, appendIncludes, appendNotIncludes }) => { it(`should return proper suggestions for ${input}`, () => { const { args } = splitQueryByArgs(input, 0, COMPOSITE_ARGS.concat('LOAD *')) const COMMANDS_LIST = COMMANDS.map((command) => ({ - ...command, + ...addOwnTokenToArgs(command.name!, command), token: command.name!, type: ICommandTokenType.Block })) - const testResult = findSuggestionsByQueryArgs( + const testResult = findCurrentArgument( COMMANDS_LIST, args.flat() ) - expect(result.stopArg ? testResult?.stopArg : undefined).toEqual(result.stopArg) + expect(testResult).toEqual(result) expect( testResult?.append?.flat()?.map((arg) => arg.token) ).toEqual( @@ -53,6 +52,30 @@ describe('findSuggestionsByQueryArgs', () => { }) }) }) + + describe('FT.AGGREGATE', () => { + findArgumentftAggreageTests.forEach(({ args, result: testResult }) => { + it(`should return proper suggestions for ${args.join(' ')}`, () => { + const result = findCurrentArgument( + ftAggregateCommand.arguments as IRedisCommand[], + args + ) + expect(testResult).toEqual(result) + }) + }) + }) + + describe('FT.SEARCH', () => { + findArgumentftSearchTests.forEach(({ args, result: testResult }) => { + it(`should return proper suggestions for ${args.join(' ')}`, () => { + const result = findCurrentArgument( + ftSearchCommand.arguments as IRedisCommand[], + args + ) + expect(testResult).toEqual(result) + }) + }) + }) }) const generateDetailTests: Array<{ input: Maybe, result: any }> = [ @@ -80,3 +103,11 @@ describe('generateDetail', () => { expect(testResult).toEqual(result) }) }) + +describe('addOwnTokenToArgs', () => { + it('should add FT.SEARCH to args', () => { + const result = addOwnTokenToArgs('FT.SEARCH', { arguments: [] }) + + expect({ arguments: [{ token: 'FT.SEARCH', type: 'pure-token' }] }).toEqual(result) + }) +}) diff --git a/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/common.ts b/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/common.ts index 0ffebff1e1..02ace2613c 100644 --- a/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/common.ts +++ b/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/common.ts @@ -117,10 +117,8 @@ export const commonfindCurrentArgumentCases = [ appendIncludes: ['AS', 'GEO', 'TEXT', 'VECTOR'], appendNotIncludes: ['SCHEMA', 'SCORE', 'NOHL'], }, - // TODO: need to investigte the case when we have NOINDEX 'FT.CREATE "idx:schools" ON JSON SCHEMA address TEXT NOINDEX ' - // TODO: in this case we switch to field, but need to check?(or maybe not) all previous optional tokens { - input: 'FT.CREATE "idx:schools" ON JSON SCHEMA address TEXT INDEXMISSING ', + input: 'FT.CREATE "idx:schools" ON JSON SCHEMA address TEXT NOINDEX INDEXMISSING ', result: { stopArg: expect.any(Object), append: expect.any(Array), @@ -129,20 +127,7 @@ export const commonfindCurrentArgumentCases = [ parent: expect.any(Object), token: expect.any(Object) }, - appendIncludes: ['INDEXEMPTY', 'SORTABLE', 'WITHSUFFIXTRIE', 'NOINDEX'], - appendNotIncludes: ['SCHEMA', 'SCORE', 'NOHL'], - }, - { - input: 'FT.CREATE "idx:schools" ON JSON SCHEMA address TEXT INDEXMISSING SORTABLE ', - result: { - stopArg: expect.any(Object), - append: expect.any(Array), - isBlocked: false, - isComplete: true, - parent: expect.any(Object), - token: expect.any(Object) - }, - appendIncludes: ['INDEXEMPTY', 'UNF', 'WITHSUFFIXTRIE'], + appendIncludes: ['INDEXEMPTY', 'SORTABLE', 'WITHSUFFIXTRIE'], appendNotIncludes: ['SCHEMA', 'SCORE', 'NOHL'], }, { @@ -305,13 +290,13 @@ export const commonfindCurrentArgumentCases = [ appendIncludes: ['APPLY', 'LOAD', 'SORTBY', 'GROUPBY'], }, { - input: 'FT.AGGREGATE \'idx:articles\' \'@body:(term) \' SORTBY 1 property ', + input: 'FT.AGGREGATE \'idx:articles\' \'@body:(term) \' SORTBY nargs property ', result: expect.any(Object), - appendIncludes: ['MAX', 'APPLY', 'GROUPBY'], - appendNotIncludes: ['REDUCE', 'ASC', 'DESC'], + appendIncludes: ['ASC', 'DESC'], + appendNotIncludes: ['REDUCE', 'APPLY', 'LOAD', 'SORTBY', 'GROUPBY'], }, { - input: 'FT.AGGREGATE \'idx:articles\' \'@body:(term) \' SORTBY 2 property ASC ', + input: 'FT.AGGREGATE \'idx:articles\' \'@body:(term) \' SORTBY nargs property ASC ', result: expect.any(Object), appendIncludes: ['MAX', 'APPLY', 'LOAD', 'GROUPBY'], appendNotIncludes: ['SORTBY'], @@ -358,7 +343,7 @@ export const commonfindCurrentArgumentCases = [ appendNotIncludes: ['LIMITED'], }, { - input: 'FT.SPELLCHECK \'idx:articles\' \'test\' DIALECT d DISTANCE d TERMS ', + input: 'FT.SPELLCHECK \'idx:articles\' \'test\' DIALECT dialect DISTANCE distance TERMS ', result: expect.any(Object), appendIncludes: ['EXCLUDE', 'INCLUDE'], appendNotIncludes: ['DIALECT', 'DISTANCE', 'TERMS'], @@ -369,41 +354,4 @@ export const commonfindCurrentArgumentCases = [ appendIncludes: ['SKIPINITIALSCAN'], appendNotIncludes: ['DIALECT', 'DISTANCE', 'TERMS', 'INCLUDE', 'SCHEMA', 'APPLY', 'LOAD', 'SORTBY', 'GROUPBY'], }, - { - input: 'FT.SEARCH \'idx\' \'query to search\' PARAMS 2 p1 p2 RETURN 3 p1 p2 p3 DIALECT ', - result: { - append: [], - isBlocked: true, - isComplete: false, - parent: expect.any(Object), - token: expect.any(Object), - stopArg: { - name: 'dialect', - type: 'integer', - optional: true, - token: 'DIALECT', - since: '2.4.3' - } - }, - appendIncludes: [], - }, - // TODO: fix this case - { - input: 'FT.SEARCH \'idx\' \'query to search\' SORTBY a ASC PARAMS 3 a a2 a3 DIALECT ', - result: { - append: [], - isBlocked: true, - isComplete: false, - parent: expect.any(Object), - token: expect.any(Object), - stopArg: { - name: 'dialect', - type: 'integer', - optional: true, - token: 'DIALECT', - since: '2.4.3' - } - }, - appendIncludes: [], - }, ] diff --git a/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/ft-aggregate.ts b/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/ft-aggregate.ts index da95f3720f..03211cafbe 100644 --- a/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/ft-aggregate.ts +++ b/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/ft-aggregate.ts @@ -1,4 +1,6 @@ export const findArgumentftAggreageTests = [ + { args: [''], result: null }, + { args: ['', ''], result: null }, { args: ['index', '"query"', 'APPLY'], result: { diff --git a/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/ft-search.ts b/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/ft-search.ts index 44fb78ff1c..a9d54d33e3 100644 --- a/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/ft-search.ts +++ b/redisinsight/ui/src/pages/workbench/utils/tests/test-cases/ft-search.ts @@ -1,4 +1,6 @@ export const findArgumentftSearchTests = [ + { args: [''], result: null }, + { args: ['', ''], result: null }, { args: ['', '', 'SUMMARIZE'], result: { @@ -135,7 +137,7 @@ export const findArgumentftSearchTests = [ { args: ['', '', 'RETURN', '1', 'iden'], result: { - stopArg: expect.any(Object), + stopArg: undefined, append: [], isBlocked: false, isComplete: true, diff --git a/redisinsight/ui/src/slices/app/context.ts b/redisinsight/ui/src/slices/app/context.ts index 92b18e03d8..842a5e4fb5 100644 --- a/redisinsight/ui/src/slices/app/context.ts +++ b/redisinsight/ui/src/slices/app/context.ts @@ -11,8 +11,6 @@ import { DEFAULT_TREE_SORTING, KeyTypes, Pages, SortOrder, - BrowserColumns, - DEFAULT_SHOWN_COLUMNS, } from 'uiSrc/constants' import { localStorageService, setCapabilityStorageField, setDBConfigStorageField } from 'uiSrc/services' import { clearExpertChatHistory } from 'uiSrc/slices/panels/aiAssistant' @@ -26,7 +24,7 @@ import { setClusterDetailsInitialState } from 'uiSrc/slices/analytics/clusterDet import { setDatabaseAnalysisInitialState } from 'uiSrc/slices/analytics/dbAnalysis' import { setInitialAnalyticsSettings } from 'uiSrc/slices/analytics/settings' import { setInitialRecommendationsState } from 'uiSrc/slices/recommendations/recommendations' -import { setPipelineConfig, setPipelineInitialState, setPipelineJobs } from 'uiSrc/slices/rdi/pipeline' +import { setPipelineInitialState } from 'uiSrc/slices/rdi/pipeline' import { resetOutput } from 'uiSrc/slices/cli/cli-output' import { SearchMode } from '../interfaces/keys' import { AppWorkspace, RedisResponseBuffer, StateAppContext } from '../interfaces' @@ -44,7 +42,6 @@ export const initialState: StateAppContext = { treeViewSort: DEFAULT_TREE_SORTING, slowLogDurationUnit: DEFAULT_SLOWLOG_DURATION_UNIT, showHiddenRecommendations: DEFAULT_SHOW_HIDDEN_RECOMMENDATIONS, - shownColumns: DEFAULT_SHOWN_COLUMNS, }, dbIndex: { disabled: false @@ -134,7 +131,6 @@ const appContextSlice = createSlice({ state.dbConfig.treeViewSort = payload?.treeViewSort ?? DEFAULT_TREE_SORTING state.dbConfig.slowLogDurationUnit = payload?.slowLogDurationUnit ?? DEFAULT_SLOWLOG_DURATION_UNIT state.dbConfig.showHiddenRecommendations = payload?.showHiddenRecommendations - state.dbConfig.shownColumns = payload?.shownColumns ?? DEFAULT_SHOWN_COLUMNS }, setSlowLogUnits: (state, { payload }) => { state.dbConfig.slowLogDurationUnit = payload @@ -148,10 +144,6 @@ const appContextSlice = createSlice({ state.dbConfig.treeViewSort = payload setDBConfigStorageField(state.contextInstanceId, BrowserStorageItem.treeViewSort, payload) }, - setBrowserShownColumns: (state, { payload }: PayloadAction) => { - state.dbConfig.shownColumns = payload - setDBConfigStorageField(state.contextInstanceId, BrowserStorageItem.browserShownColumns, payload) - }, setRecommendationsShowHidden: (state, { payload }: { payload: boolean }) => { state.dbConfig.showHiddenRecommendations = payload setDBConfigStorageField(state.contextInstanceId, BrowserStorageItem.showHiddenRecommendations, payload) @@ -283,7 +275,6 @@ export const { setLastPipelineManagementPage, setPipelineDialogState, resetPipelineManagement, - setBrowserShownColumns, } = appContextSlice.actions // Selectors @@ -353,8 +344,6 @@ export function resetRdiContext() { return async (dispatch: AppDispatch) => { dispatch(setAppContextConnectedRdiInstanceId('')) dispatch(setPipelineInitialState()) - dispatch(setPipelineConfig('')) - dispatch(setPipelineJobs([])) dispatch(resetPipelineManagement()) } } diff --git a/redisinsight/ui/src/slices/browser/keys.ts b/redisinsight/ui/src/slices/browser/keys.ts index 6e52f06669..0d7047d52f 100644 --- a/redisinsight/ui/src/slices/browser/keys.ts +++ b/redisinsight/ui/src/slices/browser/keys.ts @@ -1,7 +1,6 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { cloneDeep, remove, get, isUndefined } from 'lodash' import axios, { AxiosError, CancelTokenSource } from 'axios' -import { useSelector } from 'react-redux' import { apiService, localStorageService } from 'uiSrc/services' import { ApiEndpoints, @@ -13,8 +12,7 @@ import { SearchHistoryMode, SortOrder, STRING_MAX_LENGTH, - ModulesKeyTypes, - BrowserColumns + ModulesKeyTypes } from 'uiSrc/constants' import { getApiErrorMessage, @@ -32,7 +30,7 @@ import { DEFAULT_SEARCH_MATCH, SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api' import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent, getAdditionalAddedEventData, getMatchType } from 'uiSrc/telemetry' import successMessages from 'uiSrc/components/notifications/success-messages' import { IFetchKeyArgs, IKeyPropTypes } from 'uiSrc/constants/prop-types/keys' -import { appContextDbConfig, resetBrowserTree } from 'uiSrc/slices/app/context' +import { resetBrowserTree } from 'uiSrc/slices/app/context' import { CreateListWithExpireDto, } from 'apiSrc/modules/browser/list/dto' import { SetStringWithExpireDto } from 'apiSrc/modules/browser/string/dto' @@ -423,7 +421,7 @@ const keysSlice = createSlice({ }, setSelectedKeyRefreshDisabled: (state, { payload }: PayloadAction) => { state.selectedKey.isRefreshDisabled = payload - }, + } }, }) @@ -539,7 +537,7 @@ export function fetchPatternKeysAction( type, match: match || DEFAULT_SEARCH_MATCH, keysInfo: false, - scanThreshold, + scanThreshold }, { params: { encoding }, @@ -662,7 +660,7 @@ export function fetchKeyInfo( ) { return async (dispatch: AppDispatch, stateInit: () => RootState) => { dispatch(defaultSelectedKeyAction()) - const { shownColumns } = stateInit()?.app?.context?.dbConfig + try { const state = stateInit() const { encoding } = state.app.info @@ -671,10 +669,7 @@ export function fetchKeyInfo( state.connections.instances?.connectedInstance?.id ?? '', ApiEndpoints.KEY_INFO ), - { - keyName: key, - includeSize: shownColumns.includes(BrowserColumns.Size) - }, + { keyName: key }, { params: { encoding } } ) @@ -731,7 +726,6 @@ export function fetchKeyInfo( // Asynchronous thunk action export function refreshKeyInfoAction(key: RedisResponseBuffer) { return async (dispatch: AppDispatch, stateInit: () => RootState) => { - const { shownColumns } = stateInit()?.app?.context?.dbConfig dispatch(refreshKeyInfo()) try { const state = stateInit() @@ -741,10 +735,7 @@ export function refreshKeyInfoAction(key: RedisResponseBuffer) { state.connections.instances?.connectedInstance?.id ?? '', ApiEndpoints.KEY_INFO ), - { - keyName: key, - includeSize: shownColumns.includes(BrowserColumns.Size) - }, + { keyName: key }, { params: { encoding } } ) if (isStatusSuccessful(status)) { @@ -1043,7 +1034,6 @@ export function fetchKeysMetadata( onFailAction?: () => void ) { return async (_dispatch: AppDispatch, stateInit: () => RootState) => { - const { shownColumns } = stateInit()?.app?.context?.dbConfig try { const state = stateInit() const { data } = await apiService.post( @@ -1051,12 +1041,7 @@ export function fetchKeysMetadata( state.connections.instances?.connectedInstance?.id, ApiEndpoints.KEYS_METADATA ), - { - keys, - type: filter || undefined, - includeSize: shownColumns.includes(BrowserColumns.Size), - includeTTL: shownColumns.includes(BrowserColumns.TTL), - }, + { keys, type: filter || undefined }, { params: { encoding: state.app.info.encoding }, signal } ) @@ -1080,7 +1065,6 @@ export function fetchKeysMetadataTree( onFailAction?: () => void ) { return async (_dispatch: AppDispatch, stateInit: () => RootState) => { - const { shownColumns } = stateInit()?.app?.context?.dbConfig try { const state = stateInit() const { data } = await apiService.post( @@ -1088,12 +1072,7 @@ export function fetchKeysMetadataTree( state.connections.instances?.connectedInstance?.id, ApiEndpoints.KEYS_METADATA ), - { - keys: keys.map(([, nameBuffer]) => nameBuffer), - type: filter || undefined, - includeSize: shownColumns.includes(BrowserColumns.Size), - includeTTL: shownColumns.includes(BrowserColumns.TTL), - }, + { keys: keys.map(([, nameBuffer]) => nameBuffer), type: filter || undefined }, { params: { encoding: state.app.info.encoding }, signal } ) diff --git a/redisinsight/ui/src/slices/browser/zset.ts b/redisinsight/ui/src/slices/browser/zset.ts index e533a563a6..f248a7c975 100644 --- a/redisinsight/ui/src/slices/browser/zset.ts +++ b/redisinsight/ui/src/slices/browser/zset.ts @@ -55,7 +55,7 @@ const zsetSlice = createSlice({ state.data.members = payload }, // load ZSet members - loadZSetMembers: (state, { payload: [sortOrder, resetData = true] }: PayloadAction<[SortOrder, Maybe]>) => { + loadZSetMembers: (state, { payload: [sortOrder, resetData = true] }:PayloadAction<[SortOrder, Maybe]>) => { state.loading = true state.searching = false state.error = '' diff --git a/redisinsight/ui/src/slices/interfaces/app.ts b/redisinsight/ui/src/slices/interfaces/app.ts index d97a8b45eb..0060a85608 100644 --- a/redisinsight/ui/src/slices/interfaces/app.ts +++ b/redisinsight/ui/src/slices/interfaces/app.ts @@ -2,7 +2,7 @@ import { AxiosError } from 'axios' import { EuiComboBoxOptionOption } from '@elastic/eui' import { RelativeWidthSizes } from 'uiSrc/components/virtual-table/interfaces' import { Nullable } from 'uiSrc/utils' -import { BrowserColumns, DurationUnits, FeatureFlags, ICommands, SortOrder } from 'uiSrc/constants' +import { DurationUnits, FeatureFlags, ICommands, SortOrder } from 'uiSrc/constants' import { GetServerInfoResponse } from 'apiSrc/modules/server/dto/server.dto' import { RedisString as RedisStringAPI } from 'apiSrc/common/constants/redis-string' @@ -74,7 +74,6 @@ export interface StateAppContext { treeViewSort: SortOrder slowLogDurationUnit: DurationUnits showHiddenRecommendations: boolean - shownColumns: BrowserColumns[] } dbIndex: { disabled: boolean diff --git a/redisinsight/ui/src/slices/interfaces/instances.ts b/redisinsight/ui/src/slices/interfaces/instances.ts index df6a2005b3..ac8de24808 100644 --- a/redisinsight/ui/src/slices/interfaces/instances.ts +++ b/redisinsight/ui/src/slices/interfaces/instances.ts @@ -9,6 +9,7 @@ import { GetListElementsResponse, } from 'apiSrc/modules/browser/list/dto' import { Database as DatabaseInstanceResponse } from 'apiSrc/modules/database/models/database' +import { AdditionalRedisModule } from 'apiSrc/modules/database/models/additional.redis.module' import { SearchZSetMembersResponse } from 'apiSrc/modules/browser/z-set/dto' import { SentinelMaster } from 'apiSrc/modules/redis-sentinel/models/sentinel-master' import { CreateSentinelDatabaseDto } from 'apiSrc/modules/redis-sentinel/dto/create.sentinel.database.dto' @@ -54,12 +55,6 @@ export interface Instance extends Partial { isFreeDb?: boolean } -export interface AdditionalRedisModule { - name: string - version: number - semanticVersion: string -} - interface CaCertificate { id?: string name?: string diff --git a/redisinsight/ui/src/slices/interfaces/keys.ts b/redisinsight/ui/src/slices/interfaces/keys.ts index 68f580fe43..22ee384cd9 100644 --- a/redisinsight/ui/src/slices/interfaces/keys.ts +++ b/redisinsight/ui/src/slices/interfaces/keys.ts @@ -1,4 +1,4 @@ -import { BrowserColumns, KeyTypes, KeyValueCompressor, KeyValueFormat } from 'uiSrc/constants' +import { KeyTypes, KeyValueCompressor, KeyValueFormat } from 'uiSrc/constants' import { IKeyPropTypes } from 'uiSrc/constants/prop-types/keys' import { Maybe, Nullable } from 'uiSrc/utils' import { GetKeyInfoResponse } from 'apiSrc/modules/browser/keys/dto' @@ -52,7 +52,6 @@ export interface KeysStore { data: null | Array loading: boolean } - shownColumns: BrowserColumns[] } export interface SearchHistoryItem { diff --git a/redisinsight/ui/src/slices/interfaces/rdi.ts b/redisinsight/ui/src/slices/interfaces/rdi.ts index 64bfdf57a3..4f4479354d 100644 --- a/redisinsight/ui/src/slices/interfaces/rdi.ts +++ b/redisinsight/ui/src/slices/interfaces/rdi.ts @@ -178,8 +178,6 @@ export interface IStateRdiPipeline { loading: boolean error: string data: Nullable - config: string - jobs: IRdiPipelineJob[] resetChecked: boolean schema: Nullable strategies: IRdiPipelineStrategies diff --git a/redisinsight/ui/src/slices/rdi/pipeline.ts b/redisinsight/ui/src/slices/rdi/pipeline.ts index 1e9250ff30..375136faab 100644 --- a/redisinsight/ui/src/slices/rdi/pipeline.ts +++ b/redisinsight/ui/src/slices/rdi/pipeline.ts @@ -12,7 +12,6 @@ import { IPipelineStatus, IActionPipelineResultProps, PipelineAction, - IRdiPipelineJob, } from 'uiSrc/slices/interfaces/rdi' import { getApiErrorMessage, @@ -33,8 +32,6 @@ export const initialState: IStateRdiPipeline = { loading: false, error: '', data: null, - config: '', - jobs: [], resetChecked: false, schema: null, strategies: { @@ -73,19 +70,11 @@ const rdiPipelineSlice = createSlice({ getPipelineSuccess: (state, { payload }: PayloadAction) => { state.loading = false state.data = payload - state.config = payload?.config || '' - state.jobs = payload?.jobs || '' }, getPipelineFailure: (state, { payload }: PayloadAction) => { state.loading = false state.error = payload }, - setPipelineConfig: (state, { payload }: PayloadAction) => { - state.config = payload - }, - setPipelineJobs: (state, { payload }: PayloadAction) => { - state.jobs = payload - }, deployPipeline: (state) => { state.loading = true }, @@ -178,8 +167,6 @@ export const { getPipelineStrategiesSuccess, getPipelineStrategiesFailure, setPipeline, - setPipelineConfig, - setPipelineJobs, setPipelineInitialState, setChangedFile, setChangedFiles, diff --git a/redisinsight/ui/src/slices/tests/browser/hash.spec.ts b/redisinsight/ui/src/slices/tests/browser/hash.spec.ts index 39646d9f2b..fab1fd5ff3 100644 --- a/redisinsight/ui/src/slices/tests/browser/hash.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/hash.spec.ts @@ -93,10 +93,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, loadHashFields(['*', undefined])) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -127,10 +126,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, loadHashFieldsSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) @@ -158,10 +156,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, loadHashFieldsSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -180,10 +177,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, loadHashFieldsFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -201,10 +197,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, loadMoreHashFields()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -233,10 +228,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, loadMoreHashFieldsSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) @@ -262,10 +256,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, loadMoreHashFieldsSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -284,10 +277,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, loadMoreHashFieldsFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -304,10 +296,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, removeHashFields()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -328,10 +319,9 @@ describe('hash slice', () => { const nextState = reducer(initailStateRemove, removeHashFieldsSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(initailStateRemove) }) }) @@ -350,10 +340,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, removeHashFieldsFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -388,10 +377,9 @@ describe('hash slice', () => { const nextState = reducer(initialStateRemove, removeFieldsFromList(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -412,10 +400,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, updateValue()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -436,10 +423,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, updateValueSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -461,10 +447,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, updateValueFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -485,10 +470,9 @@ describe('hash slice', () => { const nextState = reducer(initialState, resetUpdateValue()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { hash: nextState }, - } + }) expect(hashSelector(rootState)).toEqual(state) }) }) @@ -524,7 +508,7 @@ describe('hash slice', () => { describe('fetchMoreHashFields', () => { it( 'call fetchMoreHashFields, loadMoreHashFieldsSuccess,' - + ' when fetch is successed', + + ' when fetch is successed', async () => { // Arrange const data = { @@ -582,19 +566,15 @@ describe('hash slice', () => { describe('deleteHashFields', () => { it( 'call removeHashFields, removeHashFieldsSuccess,' - + ' and removeFieldsFromList when fetch is successed', + + ' and removeFieldsFromList when fetch is successed', async () => { // Arrange const key = stringToBuffer('key') const fields = ['hash field', 'hash field 2'].map((field) => stringToBuffer(field)) const responsePayload = { status: 200, data: { affected: 2 } } - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { - keys: { - ...initialStateDefault.browser.keys, - }, hash: { ...initialState, data: { @@ -603,7 +583,7 @@ describe('hash slice', () => { } } }, - } + }) const mockedStore = mockStore(nextState) @@ -642,8 +622,7 @@ describe('hash slice', () => { const key = 'key' const fields = ['hash field', 'hash field 2'] const responsePayload = { status: 200, data: { affected: 2 } } - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { hash: { ...initialState, @@ -653,7 +632,7 @@ describe('hash slice', () => { } } }, - } + }) const mockedStore = mockStore(nextState) @@ -689,7 +668,7 @@ describe('hash slice', () => { apiService.put = jest.fn().mockResolvedValue(responsePayload) // Act - await mockedStore.dispatch(addHashFieldsAction({ keyName, fields })) + await store.dispatch(addHashFieldsAction({ keyName, fields })) // Assert const expectedActions = [ @@ -765,7 +744,7 @@ describe('hash slice', () => { apiService.put = jest.fn().mockRejectedValue(responsePayload) // Act - await mockedStore.dispatch(updateHashFieldsAction({ keyName, fields })) + await store.dispatch(updateHashFieldsAction({ keyName, fields })) // Assert const expectedActions = [ diff --git a/redisinsight/ui/src/slices/tests/browser/keys.spec.ts b/redisinsight/ui/src/slices/tests/browser/keys.spec.ts index 9d3afd67e2..96b8ca3c8c 100644 --- a/redisinsight/ui/src/slices/tests/browser/keys.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/keys.spec.ts @@ -1,16 +1,14 @@ import { cloneDeep } from 'lodash' import { AxiosError } from 'axios' -import { configureStore } from '@reduxjs/toolkit' -import { BrowserColumns, DEFAULT_SHOWN_COLUMNS, KeyTypes, KeyValueFormat, ModulesKeyTypes } from 'uiSrc/constants' +import { KeyTypes, KeyValueFormat, ModulesKeyTypes } from 'uiSrc/constants' import { apiService } from 'uiSrc/services' import { parseKeysListResponse, stringToBuffer, UTF8ToBuffer } from 'uiSrc/utils' -import { cleanup, clearStoreActions, initialStateDefault, mockedStore, mockStore } from 'uiSrc/utils/test-utils' +import { cleanup, clearStoreActions, initialStateDefault, mockedStore } from 'uiSrc/utils/test-utils' import { addErrorNotification, addMessageNotification } from 'uiSrc/slices/app/notifications' import successMessages from 'uiSrc/components/notifications/success-messages' import { SearchHistoryItem, SearchMode } from 'uiSrc/slices/interfaces/keys' import { resetBrowserTree } from 'uiSrc/slices/app/context' import { MOCK_TIMESTAMP } from 'uiSrc/mocks/data/dateNow' -import { rootReducer } from 'uiSrc/slices/store' import { CreateHashWithExpireDto } from 'apiSrc/modules/browser/hash/dto' import { CreateListWithExpireDto, ListElementDestination } from 'apiSrc/modules/browser/list/dto' import { CreateRejsonRlWithExpireDto } from 'apiSrc/modules/browser/rejson-rl/dto' @@ -403,7 +401,7 @@ describe('keys slice', () => { describe('setLastBatchKeys', () => { it('should properly set the state', () => { // Arrange - const strToKey = (name: string) => ({ name, nameString: name, ttl: 1, size: 1, type: 'hash' }) + const strToKey = (name:string) => ({ name, nameString: name, ttl: 1, size: 1, type: 'hash' }) const data = ['44', '55', '66'].map(strToKey) const state = { @@ -1616,181 +1614,114 @@ describe('keys slice', () => { }) }) - const shownColumnsTestCases = [ - { - name: 'size and ttl', - shownColumns: [BrowserColumns.Size, BrowserColumns.TTL], - }, - { - name: 'size only', - shownColumns: [BrowserColumns.Size], - }, - { - name: 'ttl only', - shownColumns: [BrowserColumns.TTL], - }, - { - name: 'no columns', - shownColumns: [], - } - ] describe('fetchKeysMetadata', () => { - shownColumnsTestCases.forEach(({ name, shownColumns }) => { - it(`success to fetch keys metadata with ${name}`, async () => { - const initialStateWithColumns = { - ...initialStateDefault, - app: { - context: { - dbConfig: { - shownColumns, - }, - }, - }, - } + it('success to fetch keys metadata', async () => { + // Arrange + const data = [ + { + name: stringToBuffer('key1'), + type: 'hash', + ttl: -1, + size: 100, + length: 100, + }, + { + name: stringToBuffer('key2'), + type: 'hash', + ttl: -1, + size: 150, + length: 100, + }, + { + name: stringToBuffer('key3'), + type: 'hash', + ttl: -1, + size: 110, + length: 100, + }, + ] + const responsePayload = { data, status: 200 } - const testStore = configureStore({ - reducer: rootReducer, - preloadedState: initialStateWithColumns - }) + const apiServiceMock = jest.fn().mockResolvedValue(responsePayload) + const onSuccessMock = jest.fn() + apiService.post = apiServiceMock + const controller = new AbortController() - const data = [ - { - name: stringToBuffer('key1'), - type: 'hash', - ttl: -1, - size: 100, - length: 100 - }, - { - name: stringToBuffer('key2'), - type: 'hash', - ttl: -1, - size: 150, - length: 100 - }, - { - name: stringToBuffer('key3'), - type: 'hash', - ttl: -1, - size: 110, - length: 100 - }, - ] - const responsePayload = { data, status: 200 } - - const apiServiceMock = jest.fn().mockResolvedValue(responsePayload) - const onSuccessMock = jest.fn() - apiService.post = apiServiceMock - const controller = new AbortController() - - // Act - await testStore.dispatch( - fetchKeysMetadata( - data.map(({ name }) => ({ name })), - null, - controller.signal, - onSuccessMock - ) + // Act + await store.dispatch( + fetchKeysMetadata( + data.map(({ name }) => ({ name })), + null, + controller.signal, + onSuccessMock ) + ) - const expectedData = { - keys: data.map(({ name }) => ({ name })), - type: undefined, - } - - expectedData.includeTTL = shownColumns.includes(BrowserColumns.TTL) - expectedData.includeSize = shownColumns.includes(BrowserColumns.Size) - - expect(apiServiceMock).toBeCalledWith( - '/databases//keys/get-metadata', - expectedData, - { params: { encoding: 'buffer' }, signal: controller.signal }, - ) + // Assert + expect(apiServiceMock).toBeCalledWith( + '/databases//keys/get-metadata', + { keys: data.map(({ name }) => ({ name })) }, + { params: { encoding: 'buffer' }, signal: controller.signal }, + ) - expect(onSuccessMock).toBeCalledWith(data) - }) + expect(onSuccessMock).toBeCalledWith(data) }) }) describe('fetchKeysMetadataTree', () => { - shownColumnsTestCases.forEach(({ name, shownColumns }) => { - it(`success to fetch keys metadata with ${name}`, async () => { - const initialStateWithColumns = { - ...initialStateDefault, - app: { - context: { - dbConfig: { - shownColumns, - }, - }, - }, - } - - const testStore = configureStore({ - reducer: rootReducer, - preloadedState: initialStateWithColumns - }) + it('success to fetch keys metadata', async () => { + // Arrange + const data = [ + { + name: stringToBuffer('key1'), + type: 'hash', + ttl: -1, + size: 100, + path: 0, + length: 100, + }, + { + name: stringToBuffer('key2'), + type: 'hash', + ttl: -1, + size: 150, + path: 1, + length: 100, + }, + { + name: stringToBuffer('key3'), + type: 'hash', + ttl: -1, + size: 110, + path: 2, + length: 100, + }, + ] + const responsePayload = { data, status: 200 } - const data = [ - { - name: stringToBuffer('key1'), - type: 'hash', - ttl: -1, - size: 100, - path: 0, - length: 100, - }, - { - name: stringToBuffer('key2'), - type: 'hash', - ttl: -1, - size: 150, - path: 1, - length: 100, - }, - { - name: stringToBuffer('key3'), - type: 'hash', - ttl: -1, - size: 110, - path: 2, - length: 100, - }, - ] + const apiServiceMock = jest.fn().mockResolvedValue(responsePayload) + const onSuccessMock = jest.fn() + apiService.post = apiServiceMock + const controller = new AbortController() - const responsePayload = { data, status: 200 } - const apiServiceMock = jest.fn().mockResolvedValue(responsePayload) - const onSuccessMock = jest.fn() - apiService.post = apiServiceMock - const controller = new AbortController() - - // Act - await testStore.dispatch( - fetchKeysMetadataTree( - data.map(({ name }, i) => ([i, name])), - null, - controller.signal, - onSuccessMock, - ) + // Act + await store.dispatch( + fetchKeysMetadataTree( + data.map(({ name }, i) => ([i, name])), + null, + controller.signal, + onSuccessMock, ) + ) - const expectedData = { - keys: data.map(({ name }) => (name)), - type: undefined - } - - expectedData.includeTTL = shownColumns.includes(BrowserColumns.TTL) - expectedData.includeSize = shownColumns.includes(BrowserColumns.Size) - - // Assert - expect(apiServiceMock).toBeCalledWith( - '/databases//keys/get-metadata', - expectedData, - { params: { encoding: 'buffer' }, signal: controller.signal }, - ) + // Assert + expect(apiServiceMock).toBeCalledWith( + '/databases//keys/get-metadata', + { keys: data.map(({ name }, i) => (name)), type: undefined }, + { params: { encoding: 'buffer' }, signal: controller.signal }, + ) - expect(onSuccessMock).toBeCalledWith(data) - }) + expect(onSuccessMock).toBeCalledWith(data) }) }) diff --git a/redisinsight/ui/src/slices/tests/browser/list.spec.ts b/redisinsight/ui/src/slices/tests/browser/list.spec.ts index ecbe6106fd..b48707b29a 100644 --- a/redisinsight/ui/src/slices/tests/browser/list.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/list.spec.ts @@ -83,10 +83,9 @@ describe('list slice', () => { const nextState = reducer(initialState, setListInitialState()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -103,10 +102,9 @@ describe('list slice', () => { const nextState = reducer(initialState, loadListElements()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -138,10 +136,9 @@ describe('list slice', () => { const nextState = reducer(initialState, loadListElementsSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -160,10 +157,9 @@ describe('list slice', () => { const nextState = reducer(initialState, loadListElementsFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -181,10 +177,9 @@ describe('list slice', () => { const nextState = reducer(initialState, loadMoreListElements()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -225,10 +220,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) @@ -247,10 +241,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(initialState) }) }) @@ -272,10 +265,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -296,10 +288,9 @@ describe('list slice', () => { const nextState = reducer(initialState, updateValue()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -320,10 +311,9 @@ describe('list slice', () => { const nextState = reducer(initialState, updateValueSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -345,10 +335,9 @@ describe('list slice', () => { const nextState = reducer(initialState, updateValueFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -369,10 +358,9 @@ describe('list slice', () => { const nextState = reducer(initialState, resetUpdateValue()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -398,10 +386,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -431,10 +418,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) @@ -461,10 +447,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -486,10 +471,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -508,10 +492,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -530,10 +513,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -555,10 +537,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -577,10 +558,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -599,10 +579,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -624,10 +603,9 @@ describe('list slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { list: nextState }, - } + }) expect(listSelector(rootState)).toEqual(state) }) }) @@ -834,10 +812,8 @@ describe('list slice', () => { it('succeed to delete elements from list', async () => { // Arrange const responsePayload = { status: 200, data: { elements: ['zx', 'zz'] } } - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { - ...initialStateDefault.browser, list: { ...initialState, data: { @@ -846,7 +822,7 @@ describe('list slice', () => { } } }, - } + }) const mockedStore = mockStore(nextState) @@ -875,8 +851,7 @@ describe('list slice', () => { it('succeed to delete all elements from list', async () => { // Arrange const responsePayload = { status: 200 } - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { list: { ...initialState, @@ -886,7 +861,7 @@ describe('list slice', () => { } } }, - } + }) const mockedStore = mockStore(nextState) diff --git a/redisinsight/ui/src/slices/tests/browser/rejson.spec.ts b/redisinsight/ui/src/slices/tests/browser/rejson.spec.ts index a19091e3cc..5c4beb8a0e 100644 --- a/redisinsight/ui/src/slices/tests/browser/rejson.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/rejson.spec.ts @@ -54,8 +54,7 @@ beforeEach(() => { type: 'object', } - const rootStateWithSelectedKey = { - ...initialStateDefault, + const rootStateWithSelectedKey = Object.assign(initialStateDefault, { browser: { keys: { selectedKey: { @@ -65,7 +64,7 @@ beforeEach(() => { }, }, }, - } + }) storeWithSelectedKey = mockStore(rootStateWithSelectedKey) }) @@ -96,12 +95,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, loadRejsonBranch()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -123,12 +121,11 @@ describe('rejson slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) @@ -146,12 +143,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, loadRejsonBranchSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -170,12 +166,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, loadRejsonBranchFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -192,12 +187,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, appendReJSONArrayItem()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -213,12 +207,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, appendReJSONArrayItemSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -237,12 +230,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, appendReJSONArrayItemFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -259,12 +251,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, setReJSONData()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -280,12 +271,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, setReJSONDataSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -304,12 +294,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, setReJSONDataFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -326,12 +315,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, removeRejsonKey()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -347,12 +335,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, removeRejsonKeySuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) @@ -371,12 +358,11 @@ describe('rejson slice', () => { const nextState = reducer(initialState, removeRejsonKeyFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { rejson: nextState, }, - } + }) expect(rejsonSelector(rootState)).toEqual(state) }) }) diff --git a/redisinsight/ui/src/slices/tests/browser/set.spec.ts b/redisinsight/ui/src/slices/tests/browser/set.spec.ts index abba87fd98..db9f298942 100644 --- a/redisinsight/ui/src/slices/tests/browser/set.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/set.spec.ts @@ -86,10 +86,9 @@ describe('set slice', () => { const nextState = reducer(initialState, loadSetMembers(['', undefined])) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -118,10 +117,9 @@ describe('set slice', () => { const nextState = reducer(initialState, loadSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) @@ -145,10 +143,9 @@ describe('set slice', () => { const nextState = reducer(initialState, loadSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -174,10 +171,9 @@ describe('set slice', () => { const nextState = reducer(initialState, loadSetMembersFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -202,10 +198,9 @@ describe('set slice', () => { const nextState = reducer(initialState, loadMoreSetMembers()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -233,10 +228,9 @@ describe('set slice', () => { const nextState = reducer(initialState, loadMoreSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) @@ -263,10 +257,9 @@ describe('set slice', () => { const nextState = reducer(initialState, loadMoreSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -292,10 +285,9 @@ describe('set slice', () => { const nextState = reducer(initialState, loadMoreSetMembersFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -312,10 +304,9 @@ describe('set slice', () => { const nextState = reducer(initialState, addSetMembers()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -332,10 +323,9 @@ describe('set slice', () => { const nextState = reducer(initialState, addSetMembersSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -354,10 +344,9 @@ describe('set slice', () => { const nextState = reducer(initialState, addSetMembersFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -374,10 +363,9 @@ describe('set slice', () => { const nextState = reducer(initialState, removeSetMembers()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -398,10 +386,9 @@ describe('set slice', () => { const nextState = reducer(initailStateRemove, removeSetMembersSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(initailStateRemove) }) }) @@ -427,10 +414,9 @@ describe('set slice', () => { const nextState = reducer(initialState, removeSetMembersFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -464,10 +450,9 @@ describe('set slice', () => { ) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { set: nextState }, - } + }) expect(setSelector(rootState)).toEqual(state) }) }) @@ -628,10 +613,8 @@ describe('set slice', () => { const responsePayload = { status: 200, data: { affected: 3 } } apiService.delete = jest.fn().mockResolvedValue(responsePayload) - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { - ...initialStateDefault.browser, set: { ...initialState, data: { @@ -640,7 +623,7 @@ describe('set slice', () => { } } }, - } + }) const mockedStore = mockStore(nextState) @@ -670,8 +653,7 @@ describe('set slice', () => { const responsePayload = { status: 200, data: { affected: 3 } } apiService.delete = jest.fn().mockResolvedValue(responsePayload) - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { set: { ...initialState, @@ -681,7 +663,7 @@ describe('set slice', () => { } } }, - } + }) const mockedStore = mockStore(nextState) diff --git a/redisinsight/ui/src/slices/tests/browser/stream.spec.ts b/redisinsight/ui/src/slices/tests/browser/stream.spec.ts index 35a95e6cdd..abb5544c5e 100644 --- a/redisinsight/ui/src/slices/tests/browser/stream.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/stream.spec.ts @@ -171,10 +171,9 @@ describe('stream slice', () => { describe('setStreamInitialState', () => { it('should properly set initial state', () => { const nextState = reducer(initialState, setStreamInitialState()) - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(initialState) }) }) @@ -191,10 +190,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadEntries(true)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -218,10 +216,9 @@ describe('stream slice', () => { const nextState = omit({ ...tempState }, 'data.lastRefreshTime') // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -240,10 +237,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadEntriesFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -260,10 +256,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadMoreEntries()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -286,10 +281,9 @@ describe('stream slice', () => { const nextState = omit({ ...tempState }, 'data.lastRefreshTime') // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -308,10 +302,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadMoreEntriesFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -328,10 +321,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, addNewEntries()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -349,10 +341,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, addNewEntriesSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -371,10 +362,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, addNewEntriesFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -391,10 +381,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, removeStreamEntries()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -412,10 +401,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, removeStreamEntriesSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -434,10 +422,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, removeStreamEntriesFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -457,10 +444,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, updateStart('10')) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -480,10 +466,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, updateEnd('100')) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -507,10 +492,9 @@ describe('stream slice', () => { const nextState = reducer(startState, cleanRangeFilter()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamRangeSelector(rootState)).toEqual(stateRange) }) }) @@ -527,10 +511,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, setStreamViewType(StreamViewType.Messages)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -551,10 +534,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadConsumerGroups()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -585,10 +567,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadConsumerGroupsSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -619,10 +600,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadConsumersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -653,10 +633,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadConsumerMessagesSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -679,10 +658,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadConsumerMessagesFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -705,10 +683,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadConsumersFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -730,10 +707,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadConsumerGroupsFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -758,10 +734,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, setSelectedGroup(group)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -784,10 +759,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, setSelectedConsumer(consumer)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -821,10 +795,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, loadMoreConsumerMessagesSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -844,10 +817,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, ackPendingEntries()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -868,10 +840,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, ackPendingEntriesSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -893,10 +864,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, ackPendingEntriesFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -916,10 +886,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, claimConsumerMessages()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -940,10 +909,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, claimConsumerMessagesSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) @@ -966,10 +934,9 @@ describe('stream slice', () => { const nextState = reducer(initialState, claimConsumerMessagesFailure(error)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { stream: nextState }, - } + }) expect(streamSelector(rootState)).toEqual(state) }) }) diff --git a/redisinsight/ui/src/slices/tests/browser/string.spec.ts b/redisinsight/ui/src/slices/tests/browser/string.spec.ts index 87af643951..b5c0fd76a4 100644 --- a/redisinsight/ui/src/slices/tests/browser/string.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/string.spec.ts @@ -76,12 +76,11 @@ describe('string slice', () => { const nextState = reducer(initialState, getString()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -107,12 +106,11 @@ describe('string slice', () => { const nextState = reducer(initialState, getStringSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -137,12 +135,11 @@ describe('string slice', () => { const nextState = reducer(initialState, getStringSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -162,12 +159,11 @@ describe('string slice', () => { const nextState = reducer(initialState, getStringFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -185,12 +181,11 @@ describe('string slice', () => { const nextState = reducer(initialState, downloadString()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -209,12 +204,11 @@ describe('string slice', () => { const nextState = reducer(initialState, downloadStringSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -230,12 +224,11 @@ describe('string slice', () => { const nextState = reducer(initialState, downloadStringSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -255,12 +248,11 @@ describe('string slice', () => { const nextState = reducer(initialState, downloadStringFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -278,12 +270,11 @@ describe('string slice', () => { const nextState = reducer(initialState, updateValue()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -307,12 +298,11 @@ describe('string slice', () => { const nextState = reducer(initialState, updateValueSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -334,12 +324,11 @@ describe('string slice', () => { const nextState = reducer(initialState, updateValueSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -359,12 +348,11 @@ describe('string slice', () => { const nextState = reducer(initialState, updateValueFailure(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -381,12 +369,11 @@ describe('string slice', () => { const nextState = reducer(initialState, resetStringValue()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) @@ -405,12 +392,11 @@ describe('string slice', () => { const nextState = reducer(initialState, setIsStringCompressed(true)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { string: nextState, }, - } + }) expect(stringSelector(rootState)).toEqual(state) expect(stringDataSelector(rootState)).toEqual(state.data) }) diff --git a/redisinsight/ui/src/slices/tests/browser/zset.spec.ts b/redisinsight/ui/src/slices/tests/browser/zset.spec.ts index 235183edf6..3fda96ae39 100644 --- a/redisinsight/ui/src/slices/tests/browser/zset.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/zset.spec.ts @@ -94,10 +94,9 @@ describe('zset slice', () => { describe('setZsetInitialState', () => { it('should properly set initial state', () => { const nextState = reducer(initialState, setZsetInitialState()) - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(initialState) }) }) @@ -114,10 +113,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, loadZSetMembers([initialState.data.sortOrder, undefined])) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -149,10 +147,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, loadZSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) @@ -177,10 +174,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, loadZSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -203,10 +199,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, loadZSetMembersFailure(errorMessage)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -226,10 +221,9 @@ describe('zset slice', () => { // Act const nextState = reducer(initialState, searchZSetMembers('*')) - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -259,10 +253,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, searchZSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(state) }) @@ -290,10 +283,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, searchZSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -310,10 +302,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, searchZSetMembersFailure(errorMessage)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -335,10 +326,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, searchMoreZSetMembers(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -363,10 +353,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, searchMoreZSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(state) }) @@ -382,10 +371,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, searchMoreZSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(initialState) }) }) @@ -402,10 +390,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, searchMoreZSetMembersFailure(errorMessage)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -422,10 +409,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, loadMoreZSetMembers()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -460,10 +446,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, loadMoreZSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) @@ -481,10 +466,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, loadMoreZSetMembersSuccess(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(initialState) }) }) @@ -502,10 +486,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, loadMoreZSetMembersFailure(errorMessage)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -522,10 +505,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, removeZsetMembers()) // Assert - const rootSate = { - ...initialStateDefault, + const rootSate = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootSate)).toEqual(state) }) }) @@ -544,10 +526,9 @@ describe('zset slice', () => { const nextState = reducer(initialStateRemove, removeZsetMembersSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(initialStateRemove) }) }) @@ -564,10 +545,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, removeZsetMembersFailure(errorMessage)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState } - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -602,10 +582,9 @@ describe('zset slice', () => { const nextState = reducer(initialStateRemove, removeMembersFromList(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -626,10 +605,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, updateScore()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -649,10 +627,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, updateScoreSuccess()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -673,10 +650,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, updateScoreFailure(errorMessage)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -697,10 +673,9 @@ describe('zset slice', () => { const nextState = reducer(initialState, resetUpdateScore()) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -748,10 +723,9 @@ describe('zset slice', () => { const nextState = reducer(initialStateToUpdate, updateMembersInList(data)) // Assert - const rootState = { - ...initialStateDefault, + const rootState = Object.assign(initialStateDefault, { browser: { zset: nextState }, - } + }) expect(zsetSelector(rootState)).toEqual(state) }) }) @@ -928,10 +902,8 @@ describe('zset slice', () => { const responsePayload = { status: 200, data: { affected: 2 } } apiService.delete = jest.fn().mockResolvedValue(responsePayload) - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { - ...initialStateDefault.browser, zset: { ...initialState, data: { @@ -940,7 +912,7 @@ describe('zset slice', () => { } } }, - } + }) const mockedStore = mockStore(nextState) @@ -972,8 +944,7 @@ describe('zset slice', () => { const responsePayload = { status: 200, data: { affected: 2 } } apiService.delete = jest.fn().mockResolvedValue(responsePayload) - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { zset: { ...initialState, @@ -983,7 +954,7 @@ describe('zset slice', () => { } } }, - } + }) const mockedStore = mockStore(nextState) @@ -1236,15 +1207,14 @@ describe('zset slice', () => { const data = { members: [] } const responsePayload = { status: 200, data } // Act - const nextState = { - ...initialStateDefault, + const nextState = Object.assign(initialStateDefault, { browser: { zset: { ...initialState, searching: true } }, - } + }) const mockedStore = mockStore(nextState) apiService.post = jest.fn().mockResolvedValue(responsePayload) diff --git a/redisinsight/ui/src/slices/tests/rdi/pipeline.spec.ts b/redisinsight/ui/src/slices/tests/rdi/pipeline.spec.ts index cdb34a03b2..e716370b43 100644 --- a/redisinsight/ui/src/slices/tests/rdi/pipeline.spec.ts +++ b/redisinsight/ui/src/slices/tests/rdi/pipeline.spec.ts @@ -40,8 +40,6 @@ import reducer, { triggerPipelineActionSuccess, triggerPipelineActionFailure, rdiPipelineActionSelector, - setPipelineConfig, - setPipelineJobs, } from 'uiSrc/slices/rdi/pipeline' import { apiService } from 'uiSrc/services' import { addErrorNotification, addInfiniteNotification, addMessageNotification } from 'uiSrc/slices/app/notifications' @@ -121,8 +119,6 @@ describe('rdi pipe slice', () => { ...initialState, loading: false, data: MOCK_RDI_PIPELINE_DATA, - config: MOCK_RDI_PIPELINE_DATA.config, - jobs: MOCK_RDI_PIPELINE_DATA.jobs, } // Act const nextState = reducer(initialState, getPipelineSuccess(MOCK_RDI_PIPELINE_DATA)) @@ -137,46 +133,6 @@ describe('rdi pipe slice', () => { }) }) - describe('setPipelineConfig', () => { - it('should properly set state', () => { - // Arrange - const state = { - ...initialState, - config: MOCK_RDI_PIPELINE_DATA.config, - } - // Act - const nextState = reducer(initialState, setPipelineConfig(MOCK_RDI_PIPELINE_DATA.config)) - - // Assert - const rootState = Object.assign(initialStateDefault, { - rdi: { - pipeline: nextState, - } - }) - expect(rdiPipelineSelector(rootState)).toEqual(state) - }) - }) - - describe('setPipelineJobs', () => { - it('should properly set state', () => { - // Arrange - const state = { - ...initialState, - jobs: MOCK_RDI_PIPELINE_DATA.jobs, - } - // Act - const nextState = reducer(initialState, setPipelineJobs(MOCK_RDI_PIPELINE_DATA.jobs)) - - // Assert - const rootState = Object.assign(initialStateDefault, { - rdi: { - pipeline: nextState, - } - }) - expect(rdiPipelineSelector(rootState)).toEqual(state) - }) - }) - describe('getPipelineFailure', () => { it('should properly set state', () => { // Arrange diff --git a/redisinsight/ui/src/styles/mixins/_eui.scss b/redisinsight/ui/src/styles/mixins/_eui.scss index 510c958ab9..de9148b9a5 100644 --- a/redisinsight/ui/src/styles/mixins/_eui.scss +++ b/redisinsight/ui/src/styles/mixins/_eui.scss @@ -86,12 +86,3 @@ $euiBreakpointKeys: map-keys($euiBreakpoints); $alpha: 1 - $factor; color: rgba($color, $alpha); } - -@mixin multiline-ellipsis($line-count, $line-height) { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: $line-count; - line-height: $line-height; - text-overflow: ellipsis; - overflow: hidden; -} \ No newline at end of file diff --git a/redisinsight/ui/src/telemetry/events.ts b/redisinsight/ui/src/telemetry/events.ts index 6020b00eeb..c4112e2bed 100644 --- a/redisinsight/ui/src/telemetry/events.ts +++ b/redisinsight/ui/src/telemetry/events.ts @@ -81,7 +81,6 @@ export enum TelemetryEvent { BROWSER_WORKBENCH_LINK_CLICKED = 'BROWSER_WORKBENCH_LINK_CLICKED', BROWSER_DATABASE_INDEX_CHANGED = 'BROWSER_DATABASE_INDEX_CHANGED', BROWSER_FILTER_MODE_CHANGE_FAILED = 'BROWSER_FILTER_MODE_CHANGE_FAILED', - SHOW_BROWSER_COLUMN_CLICKED = 'SHOW_BROWSER_COLUMN_CLICKED', LIST_VIEW_OPENED = 'LIST_VIEW_OPENED', CLI_OPENED = 'CLI_OPENED', diff --git a/redisinsight/ui/src/telemetry/telemetryUtils.ts b/redisinsight/ui/src/telemetry/telemetryUtils.ts index 9c2a0ed191..fb5901b000 100644 --- a/redisinsight/ui/src/telemetry/telemetryUtils.ts +++ b/redisinsight/ui/src/telemetry/telemetryUtils.ts @@ -35,27 +35,6 @@ export const getProviderData = (dbId: string): { return { provider, serverName } } -const FREE_DB_IDENTIFIER_TELEMETRY_EVENTS = [ - TelemetryEvent.INSIGHTS_PANEL_OPENED, - TelemetryEvent.INSIGHTS_PANEL_CLOSED, - TelemetryEvent.EXPLORE_PANEL_TUTORIAL_OPENED, - TelemetryEvent.EXPLORE_PANEL_COMMAND_COPIED, - TelemetryEvent.EXPLORE_PANEL_COMMAND_RUN_CLICKED, - TelemetryEvent.EXPLORE_PANEL_LINK_CLICKED, -] - -const getFreeDbFlag = ( - event: TelemetryEvent, - freeDbEvents: TelemetryEvent[] = FREE_DB_IDENTIFIER_TELEMETRY_EVENTS -): { isFree?: boolean } => { - if (freeDbEvents.includes(event)) { - const state = get(store.getState(), 'connections.instances.connectedInstance') - return state ? { isFree: state.isFreeDb } : {} - } - - return {} -} - const TELEMETRY_EMPTY_VALUE = 'none' const sendEventTelemetry = async ({ event, eventData = {}, traits = {} }: ITelemetrySendEvent) => { @@ -69,11 +48,8 @@ const sendEventTelemetry = async ({ event, eventData = {}, traits = {} }: ITelem if (eventData.databaseId) { providerData = getProviderData(eventData.databaseId) } - - const freeDbIdentifier = getFreeDbFlag(event) - await apiService.post(`${ApiEndpoints.ANALYTICS_SEND_EVENT}`, - { event, eventData: { ...providerData, ...eventData, ...freeDbIdentifier }, traits }) + { event, eventData: { ...providerData, ...eventData }, traits }) } catch (e) { // continue regardless of error } @@ -248,5 +224,4 @@ export { getAdditionalAddedEventData, getMatchType, getRedisModulesSummary, - getFreeDbFlag, } diff --git a/redisinsight/ui/src/telemetry/tests/telemetryUtils.spec.ts b/redisinsight/ui/src/telemetry/tests/telemetryUtils.spec.ts index f91b263118..0ad104d960 100644 --- a/redisinsight/ui/src/telemetry/tests/telemetryUtils.spec.ts +++ b/redisinsight/ui/src/telemetry/tests/telemetryUtils.spec.ts @@ -1,6 +1,4 @@ -import { RootState, store } from 'uiSrc/slices/store' -import { TelemetryEvent } from '../events' -import { getRedisModulesSummary, getFreeDbFlag } from '../telemetryUtils' +import { getRedisModulesSummary } from '../telemetryUtils' const DEFAULT_SUMMARY = Object.freeze( { @@ -74,57 +72,3 @@ describe('getRedisModulesSummary', () => { expect(result).toEqual(expected) }) }) - -describe('determineFreeDbFlag', () => { - describe.each` - isFreeDb - ${true} - ${false} -`('when isFreeDb=$isFreeDb', ({ isFreeDb }) => { - beforeEach(() => { - jest.spyOn(store, 'getState').mockImplementation(() => ({ - connections: { - instances: { - connectedInstance: { - isFreeDb, - }, - }, - }, - } as RootState)) - }) - - it(`returns { isFree: ${isFreeDb} } for an event in the freeDbEvents list`, () => { - const freeDbEvents = [TelemetryEvent.INSIGHTS_PANEL_OPENED, TelemetryEvent.INSIGHTS_PANEL_CLOSED] - const event = TelemetryEvent.INSIGHTS_PANEL_OPENED - - const result = getFreeDbFlag(event, freeDbEvents) - - expect(result).toEqual({ isFree: isFreeDb }) - }) - - it('returns {} for an event NOT in the freeDbEvents list', () => { - const freeDbEvents = [TelemetryEvent.INSIGHTS_PANEL_OPENED, TelemetryEvent.INSIGHTS_PANEL_CLOSED] - const event = TelemetryEvent.AI_CHAT_BOT_COMMAND_RUN_CLICKED - - const result = getFreeDbFlag(event, freeDbEvents) - - expect(result).toEqual({}) - }) - }) - - it('returns {} if there is no connected instance', () => { - jest.spyOn(store, 'getState').mockImplementation(() => - ({ - connections: { - instances: {}, - }, - } as RootState)) - - const freeDbEvents = [TelemetryEvent.INSIGHTS_PANEL_OPENED, TelemetryEvent.INSIGHTS_PANEL_CLOSED] - const event = TelemetryEvent.INSIGHTS_PANEL_OPENED - - const result = getFreeDbFlag(event, freeDbEvents) - - expect(result).toEqual({}) - }) -}) diff --git a/redisinsight/ui/src/utils/dom/index.ts b/redisinsight/ui/src/utils/dom/index.ts index 3772140e23..5504d2ba94 100644 --- a/redisinsight/ui/src/utils/dom/index.ts +++ b/redisinsight/ui/src/utils/dom/index.ts @@ -4,8 +4,6 @@ export * from './scrollIntoView' export * from './handlePlatforms' export * from './handleBrowsers' -export { removePagePlaceholder } from './pagePlaceholder' - export { setTitle, } diff --git a/redisinsight/ui/src/utils/dom/pagePlaceholder.ts b/redisinsight/ui/src/utils/dom/pagePlaceholder.ts deleted file mode 100644 index 4688c37d12..0000000000 --- a/redisinsight/ui/src/utils/dom/pagePlaceholder.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const PAGE_PLACEHOLDER_ID = 'page-placeholder' - -export const removePagePlaceholder = () => { - const placeholderEl = document.getElementById(PAGE_PLACEHOLDER_ID) - placeholderEl?.remove() -} diff --git a/redisinsight/ui/src/utils/test-utils.tsx b/redisinsight/ui/src/utils/test-utils.tsx index b035e64638..c92add800b 100644 --- a/redisinsight/ui/src/utils/test-utils.tsx +++ b/redisinsight/ui/src/utils/test-utils.tsx @@ -222,7 +222,7 @@ const waitForEuiPopoverVisible = async () => { } export const waitForStack = async (timeout = 0) => { - await waitFor(() => { }, { timeout }) + await waitFor(() => {}, { timeout }) } // mock useHistory diff --git a/redisinsight/ui/vite.config.mjs b/redisinsight/ui/vite.config.mjs index 9b45f18b9a..7e92fa4001 100644 --- a/redisinsight/ui/vite.config.mjs +++ b/redisinsight/ui/vite.config.mjs @@ -4,7 +4,6 @@ import react from '@vitejs/plugin-react' import svgr from 'vite-plugin-svgr' import fixReactVirtualized from 'esbuild-plugin-react-virtualized' import { reactClickToComponent } from 'vite-plugin-react-click-to-component' -import { ViteEjsPlugin } from 'vite-plugin-ejs' // import { compression } from 'vite-plugin-compression2' import { fileURLToPath, URL } from 'url' import path from 'path' @@ -31,7 +30,6 @@ export default defineConfig({ react(), svgr({ include: ['**/*.svg?react'] }), reactClickToComponent(), - ViteEjsPlugin(), // !isElectron && compression({ // include: [/\.(js)$/, /\.(css)$/], // deleteOriginalAssets: true @@ -84,13 +82,10 @@ export default defineConfig({ minify: 'esbuild', rollupOptions: { output: { + // TODO chunks manualChunks(id) { if (id.includes('node_modules')) { - return id.toString().split('node_modules/')[1].split('/')[0].toString() - } - - if (id.includes('ui/src/assets')) { - return 'assets' + return 'vendor' } return 'index' }, diff --git a/scripts/build-statics.cmd b/scripts/build-statics.cmd index de324cbfe6..f334e2cc62 100644 --- a/scripts/build-statics.cmd +++ b/scripts/build-statics.cmd @@ -13,61 +13,46 @@ xcopy ".\redisinsight\ui\src\assets\fonts\inconsolata" ".\vendor\fonts\" /s /e / if not exist %PLUGINS_VENDOR_DIR% mkdir %PLUGINS_VENDOR_DIR% xcopy ".\vendor\." "%PLUGINS_VENDOR_DIR%" /s /e /y -:: Install developing tools for plugins -set PACKAGES_DIR=".\redisinsight\ui\src\packages" -call yarn --cwd "%PACKAGES_DIR%" - -:: Install plugins dependencies +:: Build redisearch plugin set REDISEARCH_DIR=".\redisinsight\ui\src\packages\redisearch" call yarn --cwd "%REDISEARCH_DIR%" - -set REDISGRAPH_DIR=".\redisinsight\ui\src\packages\redisgraph" -call yarn --cwd "%REDISGRAPH_DIR%" - -set REDISTIMESERSIES_DIR=".\redisinsight\ui\src\packages\redistimeseries-app" -call yarn --cwd "%REDISTIMESERSIES_DIR%" - -set RI_EXPLIAIN_DIR=".\redisinsight\ui\src\packages\ri-explain" -call yarn --cwd "%RI_EXPLIAIN_DIR%" - -set CLIENTS_LIST_DIR=".\redisinsight\ui\src\packages\clients-list" -call yarn --cwd "%CLIENTS_LIST_DIR%" - -:: Build all plugins and common libraries -call yarn --cwd "%PACKAGES_DIR%" build - -:: Copy common libraries to plugins -set COMMON_DIR=".\redisinsight\ui\src\packages\common" -if not exist "%PLUGINS_DIR%\common" mkdir "%PLUGINS_DIR%\common" -xcopy /E /Y "%COMMON_DIR%\index*.js" "%PLUGINS_DIR%\common" -copy "%COMMON_DIR%\package.json" "%PLUGINS_DIR%\common\" - - -:: Copy redisearch plugin +call yarn --cwd "%REDISEARCH_DIR%" build if not exist "%PLUGINS_DIR%\redisearch" mkdir "%PLUGINS_DIR%\redisearch" if not exist "%PLUGINS_DIR%\redisearch\dist" mkdir "%PLUGINS_DIR%\redisearch\dist" xcopy "%REDISEARCH_DIR%\dist" "%PLUGINS_DIR%\redisearch\dist\" /s /e /y copy "%REDISEARCH_DIR%\package.json" "%PLUGINS_DIR%\redisearch\" -:: Copy redisgraph plugin +:: Build redisgraph plugin +set REDISGRAPH_DIR=".\redisinsight\ui\src\packages\redisgraph" +call yarn --cwd "%REDISGRAPH_DIR%" +call yarn --cwd "%REDISGRAPH_DIR%" build if not exist "%PLUGINS_DIR%\redisgraph" mkdir "%PLUGINS_DIR%\redisgraph" if not exist "%PLUGINS_DIR%\redisgraph\dist" mkdir "%PLUGINS_DIR%\redisgraph\dist" xcopy "%REDISGRAPH_DIR%\dist" "%PLUGINS_DIR%\redisgraph\dist\" /s /e /y copy "%REDISGRAPH_DIR%\package.json" "%PLUGINS_DIR%\redisgraph\" -:: Copy redistimeseries plugin +:: Build redistimeseries plugin +set REDISTIMESERSIES_DIR=".\redisinsight\ui\src\packages\redistimeseries-app" +call yarn --cwd "%REDISTIMESERSIES_DIR%" +call yarn --cwd "%REDISTIMESERSIES_DIR%" build if not exist "%PLUGINS_DIR%\redistimeseries-app" mkdir "%PLUGINS_DIR%\redistimeseries-app" if not exist "%PLUGINS_DIR%\redistimeseries-app\dist" mkdir "%PLUGINS_DIR%\redistimeseries-app\dist" xcopy "%REDISTIMESERSIES_DIR%\dist" "%PLUGINS_DIR%\redistimeseries-app\dist\" /s /e /y copy "%REDISTIMESERSIES_DIR%\package.json" "%PLUGINS_DIR%\redistimeseries-app\" -:: Copy ri-explain plugin +:: Build ri-explain plugin +set RI_EXPLIAIN_DIR=".\redisinsight\ui\src\packages\ri-explain" +call yarn --cwd "%RI_EXPLIAIN_DIR%" +call yarn --cwd "%RI_EXPLIAIN_DIR%" build if not exist "%PLUGINS_DIR%\ri-explain" mkdir "%PLUGINS_DIR%\ri-explain" if not exist "%PLUGINS_DIR%\ri-explain\dist" mkdir "%PLUGINS_DIR%\ri-explain\dist" xcopy "%RI_EXPLIAIN_DIR%\dist" "%PLUGINS_DIR%\ri-explain\dist\" /s /e /y copy "%RI_EXPLIAIN_DIR%\package.json" "%PLUGINS_DIR%\ri-explain\" -:: Copy clients-list and json plugin +:: Build clients-list plugin +set CLIENTS_LIST_DIR=".\redisinsight\ui\src\packages\clients-list" +call yarn --cwd "%CLIENTS_LIST_DIR%" +call yarn --cwd "%CLIENTS_LIST_DIR%" build if not exist "%PLUGINS_DIR%\clients-list" mkdir "%PLUGINS_DIR%\clients-list" if not exist "%PLUGINS_DIR%\clients-list\dist" mkdir "%PLUGINS_DIR%\clients-list\dist" xcopy "%CLIENTS_LIST_DIR%\dist" "%PLUGINS_DIR%\clients-list\dist\" /s /e /y diff --git a/scripts/build-statics.sh b/scripts/build-statics.sh index 06a31c6199..575aa5686f 100644 --- a/scripts/build-statics.sh +++ b/scripts/build-statics.sh @@ -17,63 +17,48 @@ mkdir -p "${PLUGINS_VENDOR_DIR}" cp -R "./vendor/." "${PLUGINS_VENDOR_DIR}" -# Install developing tools for plugins -PACKAGES_DIR="./redisinsight/ui/src/packages" -yarn --cwd "${PACKAGES_DIR}" - -# Install plugins dependencies +# Build redisearch plugin REDISEARCH_DIR="./redisinsight/ui/src/packages/redisearch" yarn --cwd "${REDISEARCH_DIR}" - -REDISGRAPH_DIR="./redisinsight/ui/src/packages/redisgraph" -yarn --cwd "${REDISGRAPH_DIR}" - -REDISTIMESERIES_DIR="./redisinsight/ui/src/packages/redistimeseries-app" -yarn --cwd "${REDISTIMESERIES_DIR}" - -RI_EXPLIAIN_DIR="./redisinsight/ui/src/packages/ri-explain" -yarn --cwd "${RI_EXPLIAIN_DIR}" - -CLIENTS_LIST_DIR="./redisinsight/ui/src/packages/clients-list" -yarn --cwd "${CLIENTS_LIST_DIR}" - -# Build all plugins and common libraries -NODE_OPTIONS=--max_old_space_size=4096 yarn --cwd "${PACKAGES_DIR}" build - -# Copy common libraries to plugins -COMMON_DIR="./redisinsight/ui/src/packages/common" -if [ $pluginsOnlyInstall != 1 ]; then - mkdir -p "${PLUGINS_DIR}/common" - cp -R "${COMMON_DIR}/index"*.js "${COMMON_DIR}/package.json" "${PLUGINS_DIR}/common" -fi - -# Copy redisearch plugin if [ $pluginsOnlyInstall != 1 ]; then + yarn --cwd "${REDISEARCH_DIR}" build mkdir -p "${PLUGINS_DIR}/redisearch" cp -R "${REDISEARCH_DIR}/dist" "${REDISEARCH_DIR}/package.json" "${PLUGINS_DIR}/redisearch" fi -# Copy redisgraph plugin +# Build redisgraph plugin +REDISGRAPH_DIR="./redisinsight/ui/src/packages/redisgraph" +yarn --cwd "${REDISGRAPH_DIR}" if [ $pluginsOnlyInstall != 1 ]; then + yarn --cwd "${REDISGRAPH_DIR}" build mkdir -p "${PLUGINS_DIR}/redisgraph" cp -R "${REDISGRAPH_DIR}/dist" "${REDISGRAPH_DIR}/package.json" "${PLUGINS_DIR}/redisgraph" fi -# Copy timeseries plugin +# Build timeseries plugin +REDISTIMESERIES_DIR="./redisinsight/ui/src/packages/redistimeseries-app" +yarn --cwd "${REDISTIMESERIES_DIR}" if [ $pluginsOnlyInstall != 1 ]; then + yarn --cwd "${REDISTIMESERIES_DIR}" build mkdir -p "${PLUGINS_DIR}/redistimeseries-app" cp -R "${REDISTIMESERIES_DIR}/dist" "${REDISTIMESERIES_DIR}/package.json" "${PLUGINS_DIR}/redistimeseries-app" fi -# Copy ri-explain plugin +# Build ri-explain plugin +RI_EXPLIAIN_DIR="./redisinsight/ui/src/packages/ri-explain" +yarn --cwd "${RI_EXPLIAIN_DIR}" if [ $pluginsOnlyInstall != 1 ]; then + yarn --cwd "${RI_EXPLIAIN_DIR}" build mkdir -p "${PLUGINS_DIR}/ri-explain" cp -R "${RI_EXPLIAIN_DIR}/dist" "${RI_EXPLIAIN_DIR}/package.json" "${PLUGINS_DIR}/ri-explain" fi -# Copy clients-list and json plugins +# Build clients-list and json plugin +CLIENTS_LIST_DIR="./redisinsight/ui/src/packages/clients-list" +yarn --cwd "${CLIENTS_LIST_DIR}" if [ $pluginsOnlyInstall != 1 ]; then + yarn --cwd "${CLIENTS_LIST_DIR}" build mkdir -p "${PLUGINS_DIR}/clients-list" cp -R "${CLIENTS_LIST_DIR}/dist" "${CLIENTS_LIST_DIR}/package.json" "${PLUGINS_DIR}/clients-list" fi diff --git a/scripts/deb-after-install.sh b/scripts/deb-after-install.sh deleted file mode 100755 index 96ec8f9f41..0000000000 --- a/scripts/deb-after-install.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -set -ex - -# Define paths -OLD_INSTALL_PATH="/opt/Redis Insight" # Path with space -NEW_INSTALL_PATH="/opt/redisinsight" # New path without space -DESKTOP_FILE="/usr/share/applications/redisinsight.desktop" - -# Check if old directory exists and rename it -if [ -d "$OLD_INSTALL_PATH" ]; then - echo "Renaming $OLD_INSTALL_PATH to $NEW_INSTALL_PATH" - sudo mv "$OLD_INSTALL_PATH" "$NEW_INSTALL_PATH" -fi - -# Update desktop file to use new path -if [ -f "$DESKTOP_FILE" ]; then - echo "Updating desktop file to use new path" - sudo sed -i "s|$OLD_INSTALL_PATH|$NEW_INSTALL_PATH|g" "$DESKTOP_FILE" -fi - -# Update binary link -sudo ln -sf "$NEW_INSTALL_PATH/redisinsight" "/usr/bin/redisinsight" - -# Set basic executable permissions -sudo chmod +x "$NEW_INSTALL_PATH/redisinsight" - -# Set correct ownership and permissions for chrome-sandbox -sudo chown root:root "$NEW_INSTALL_PATH/chrome-sandbox" -sudo chmod 4755 "$NEW_INSTALL_PATH/chrome-sandbox" - -echo "RedisInsight post-installation setup completed successfully" diff --git a/tests/e2e/helpers/constants.ts b/tests/e2e/helpers/constants.ts index c63025005c..b1b2ddb2fa 100644 --- a/tests/e2e/helpers/constants.ts +++ b/tests/e2e/helpers/constants.ts @@ -7,7 +7,7 @@ export enum KeyTypesTexts { ReJSON = 'JSON', Stream = 'Stream', Graph = 'Graph', - TimeSeries = 'Time Series', + TimeSeries = 'TS', } export const keyLength = 50; diff --git a/tests/e2e/pageObjects/browser-page.ts b/tests/e2e/pageObjects/browser-page.ts index 7caa9a02a2..7f45b11a65 100644 --- a/tests/e2e/pageObjects/browser-page.ts +++ b/tests/e2e/pageObjects/browser-page.ts @@ -99,7 +99,6 @@ export class BrowserPage extends InstancePage { downloadAllValueBtn = Selector('[data-testid=download-all-value-btn]'); openTutorialsBtn = Selector('[data-testid=explore-msg-btn]') keyItem = Selector('[data-testid*="node-item"][data-testid*="keys:"]'); - columnsBtn = Selector('[data-testid=btn-columns-actions]') //CONTAINERS streamGroupsContainer = Selector('[data-testid=stream-groups-container]'); streamConsumersContainer = Selector('[data-testid=stream-consumers-container]'); @@ -247,15 +246,11 @@ export class BrowserPage extends InstancePage { noReadySearchDialogTitle = Selector('[data-testid=welcome-page-title]'); //checkbox showTtlCheckbox = Selector('[data-testid=test-check-ttl]~label'); - showTtlColumnCheckbox = Selector('[data-testid=show-ttl]~label'); - showSizeColumnCheckbox = Selector('[data-testid=show-key-size]~label'); //Get Hash key field ttl value //for Redis databases 7.4 and higher getHashTtlFieldInput = (fieldName: string): Selector => (Selector(`[data-testid=hash-ttl_content-value-${fieldName}]`)); getListElementInput = (count: number): Selector => (Selector(`[data-testid*=element-${count}]`)); - getKeySize = (keyName: string): Selector => (Selector(`[data-testid=size-${keyName}]`)); - getKeyTTl = (keyName: string): Selector => (Selector(`[data-testid=ttl-${keyName}]`)); /** diff --git a/tests/e2e/pageObjects/components/navigation/navigation-header.ts b/tests/e2e/pageObjects/components/navigation/navigation-header.ts index 47bc2e1f02..0b9664da9e 100644 --- a/tests/e2e/pageObjects/components/navigation/navigation-header.ts +++ b/tests/e2e/pageObjects/components/navigation/navigation-header.ts @@ -5,11 +5,6 @@ export class NavigationHeader { insightsTriggerButton = Selector('[data-testid=insights-trigger]'); cloudSignInButton = Selector('[data-testid=cloud-sign-in-btn]'); copilotButton = Selector('[data-testid=copilot-trigger]'); - dbName = Selector('[data-testid=nav-instance-popover-btn]'); - homeLinkNavigation = Selector('[class*=homePageLink]'); - dbListInstance = Selector('[data-testid^=instance-item-]'); - rdiNavigationTab = Selector('[data-testid*=Integration-tab-id]'); - dbListInput = Selector('[data-testid=instances-nav-popover-search]'); /** * Open/Close Panel @@ -22,18 +17,4 @@ export class NavigationHeader { await t.click(this.insightsTriggerButton); } } - - /** - * Get all databases from List of DBs page - */ - async getAllDatabases(): Promise { - const databases: string[] = []; - const n = await this.dbListInstance.count; - - for(let k = 0; k < n; k++) { - const name = await this.dbListInstance.nth(k).textContent; - databases.push(name); - } - return databases; - } } diff --git a/tests/e2e/pageObjects/components/overview-panel.ts b/tests/e2e/pageObjects/components/overview-panel.ts index 2b1c6811eb..d0d4ca445e 100644 --- a/tests/e2e/pageObjects/components/overview-panel.ts +++ b/tests/e2e/pageObjects/components/overview-panel.ts @@ -14,12 +14,18 @@ export class OverviewPanel { myRedisDBLink = Selector('[data-testid=my-redis-db-btn]', { timeout: 1000 }); changeIndexBtn = Selector('[data-testid=change-index-btn]'); databaseInfoIcon = Selector('[data-testid=db-info-icon]'); + dbName = Selector('[data-testid=nav-instance-popover-btn]'); + homeLinkNavigation = Selector('[class*=homePageLink]'); + dbListInstance = Selector('[data-testid^=instance-item-]'); + rdiNavigationTab = Selector('[data-testid*=Integration-tab-id]'); autoRefreshArrow = Selector('[data-testid=auto-refresh-overview-auto-refresh-config-btn]'); autoRefreshCheckbox = Selector('[data-testid=auto-refresh-overview-auto-refresh-switch]'); // PANEL databaseInfoToolTip = Selector('[data-testid=db-info-tooltip]', { timeout: 2000 }); // INPUTS changeIndexInput = Selector('[data-testid=change-index-input]'); + dbListInput = Selector('[data-testid=instances-nav-popover-search]'); + autoRefreshRateInput = Selector('[data-testid=auto-refresh-overview-refresh-rate]'); inlineItemEditor = Selector('[data-testid=inline-item-editor]'); @@ -49,6 +55,20 @@ export class OverviewPanel { await t.expect(this.overviewSpinner.visible).notOk('cpu is not calculated, spinner is still displayed'); } + /** + * Get all databases from List of DBs page + */ + async getAllDatabases(): Promise { + const databases: string[] = []; + const n = await this.dbListInstance.count; + + for(let k = 0; k < n; k++) { + const name = await this.dbListInstance.nth(k).textContent; + databases.push(name); + } + return databases; + } + /** * set auto refresh rate * @param rate rate value diff --git a/tests/e2e/pageObjects/dialogs/add-redis-database-dialog.ts b/tests/e2e/pageObjects/dialogs/add-redis-database-dialog.ts index ffac503bd8..e26cbc3ea3 100644 --- a/tests/e2e/pageObjects/dialogs/add-redis-database-dialog.ts +++ b/tests/e2e/pageObjects/dialogs/add-redis-database-dialog.ts @@ -28,9 +28,6 @@ export class AddRedisDatabaseDialog { cancelButton = Selector('[data-testid=btn-cancel]'); testConnectionBtn = Selector('[data-testid=btn-test-connection]'); backButton = Selector('[data-testid=back-btn]'); - generalTab = Selector('[data-testid=manual-form-tab-general]'); - securityTab = Selector('[data-testid=manual-form-tab-security]'); - decompressionTab = Selector('[data-testid=manual-form-tab-decompression]'); // TEXT INPUTS (also referred to as 'Text fields') disabledDatabaseInfo = Selector('[class=euiListGroupItem__label]'); @@ -75,9 +72,7 @@ export class AddRedisDatabaseDialog { aiChatMessage = Selector('[data-testid=ai-chat-message-btn]'); aiCloseMessage = Selector('[aria-label="Closes this modal window"]'); - trashIconMsk = (certificate: TlsCertificates) => `[data-testid^=delete-${certificate}-cert]` - - getDeleteCertificate = (certificate: TlsCertificates) => Selector(this.trashIconMsk(certificate)); + getDeleteCertificate = (certificate: TlsCertificates) => Selector(`[data-testid^=delete-${certificate}-cert]`); /** * Adding a new redis database @@ -108,6 +103,7 @@ export class AddRedisDatabaseDialog { * @param index the logical index of database */ async addLogicalRedisDatabase(parameters: AddNewDatabaseParameters, index: string): Promise { + await t .click(this.addDatabaseButton) .click(this.customSettingsButton); @@ -151,7 +147,6 @@ export class AddRedisDatabaseDialog { await t.typeText(this.passwordInput, databaseParameters.databasePassword, { replace: true, paste: true }); } // Select SSH Tunnel checkbox - await t.click(this.securityTab); await t.click(this.useSSHCheckbox); // Enter SSH fields await t @@ -255,10 +250,10 @@ export class AddRedisDatabaseDialog { * @param compressor - compressor value */ async setCompressorValue(compressor: string): Promise { + if(!await this.selectCompressor.exists) { await t.click(this.dataCompressorLabel); } - await t.click(this.selectCompressor); await t.click(Selector(`[id="${compressor}"]`)); } @@ -269,21 +264,20 @@ export class AddRedisDatabaseDialog { * @param name - name of the certificate */ async removeCertificateButton(certificate: TlsCertificates, name: string): Promise { - await t.click(this.securityTab); + const row = Selector('button') .find('div') .withText(name); - const removeButton = this.trashIconMsk(certificate); + const removeButton = String(this.getDeleteCertificate(certificate)); const removeButtonFooter = Selector('[class^=_popoverFooter]'); - if (certificate === TlsCertificates.CA) { + if(certificate === TlsCertificates.CA){ await t.click(this.caCertField); - } else { + } + else { await t.click(this.clientCertField); } - await t.click(row.find(removeButton)); - await t.click(removeButtonFooter.find(removeButton)); } } diff --git a/tests/e2e/tests/electron/critical-path/database/add-ssh-db.e2e.ts b/tests/e2e/tests/electron/critical-path/database/add-ssh-db.e2e.ts index 9881c57f88..fe390ac1dc 100644 --- a/tests/e2e/tests/electron/critical-path/database/add-ssh-db.e2e.ts +++ b/tests/e2e/tests/electron/critical-path/database/add-ssh-db.e2e.ts @@ -73,7 +73,6 @@ test await t .click(myRedisDatabasePage.AddRedisDatabaseDialog.addDatabaseButton) .click(myRedisDatabasePage.AddRedisDatabaseDialog.customSettingsButton) - .click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab) .click(myRedisDatabasePage.AddRedisDatabaseDialog.useSSHCheckbox) .click(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyRadioBtn) .hover(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton); @@ -101,14 +100,12 @@ test // Verify that user can edit SSH parameters for existing database connections await t.click(browserPage.OverviewPanel.myRedisDBLink); await myRedisDatabasePage.clickOnEditDBByName(sshDbPrivateKey.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t .typeText(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput, sshWithPassphrase.sshPrivateKey, { replace: true, paste: true }) .typeText(myRedisDatabasePage.AddRedisDatabaseDialog.sshPassphraseInput, sshWithPassphrase.sshPassphrase, { replace: true, paste: true }); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton.exists).notOk('Edit database panel still displayed'); await databaseHelper.clickOnEditDatabaseByName(sshDbPrivateKey.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); // Verify that password, passphrase and private key are hidden for SSH option await t .expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput.textContent).eql(hiddenPass, 'Edited Private key not saved') @@ -116,7 +113,6 @@ test // Verify that user can clone database with SSH tunnel await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cloneDatabaseButton); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.generalTab); // Edit Database alias before cloning await t.typeText(myRedisDatabasePage.AddRedisDatabaseDialog.databaseAliasInput, newClonedDatabaseAlias, { replace: true }); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton); diff --git a/tests/e2e/tests/web/critical-path/browser/filtering.e2e.ts b/tests/e2e/tests/web/critical-path/browser/filtering.e2e.ts index 6bc2ac8001..3e837d3558 100644 --- a/tests/e2e/tests/web/critical-path/browser/filtering.e2e.ts +++ b/tests/e2e/tests/web/critical-path/browser/filtering.e2e.ts @@ -105,7 +105,7 @@ test await browserPage.selectFilterGroupType(textType); // Check key type label await t.expect((await browserPage.filterByKeyTypeDropDown.innerText).toUpperCase).eql(textType.toUpperCase, `The label of type ${textType} is displayed`); - if (['Stream', 'Graph', 'Time Series'].includes(textType)) { + if (['Stream', 'Graph', 'TS'].includes(textType)) { await t.expect(browserPage.keysNumberOfResults.textContent).eql('0', 'Number of found keys'); } else { diff --git a/tests/e2e/tests/web/critical-path/database/connecting-to-the-db.e2e.ts b/tests/e2e/tests/web/critical-path/database/connecting-to-the-db.e2e.ts index 63b48892c7..2277dfd312 100644 --- a/tests/e2e/tests/web/critical-path/database/connecting-to-the-db.e2e.ts +++ b/tests/e2e/tests/web/critical-path/database/connecting-to-the-db.e2e.ts @@ -125,8 +125,8 @@ test await t .click(myRedisDatabasePage.AddRedisDatabaseDialog.addDatabaseButton) - .click(myRedisDatabasePage.AddRedisDatabaseDialog.customSettingsButton) - .click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); + .click(myRedisDatabasePage.AddRedisDatabaseDialog.customSettingsButton); + await t .click(myRedisDatabasePage.AddRedisDatabaseDialog.useSSHCheckbox) .click(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyRadioBtn) @@ -155,14 +155,12 @@ test // Verify that user can edit SSH parameters for existing database connections await t.click(browserPage.OverviewPanel.myRedisDBLink); await myRedisDatabasePage.clickOnEditDBByName(sshDbPrivateKey.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t .typeText(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput, sshWithPassphrase.sshPrivateKey, { replace: true, paste: true }) .typeText(myRedisDatabasePage.AddRedisDatabaseDialog.sshPassphraseInput, sshWithPassphrase.sshPassphrase, { replace: true, paste: true }); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton.exists).notOk('Edit database panel still displayed'); await databaseHelper.clickOnEditDatabaseByName(sshDbPrivateKey.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); // Verify that password, passphrase and private key are hidden for SSH option await t .expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput.textContent).eql(hiddenPass, 'Edited Private key not saved') diff --git a/tests/e2e/tests/web/critical-path/database/export-databases.e2e.ts b/tests/e2e/tests/web/critical-path/database/export-databases.e2e.ts index 5869116e81..8d128d7187 100644 --- a/tests/e2e/tests/web/critical-path/database/export-databases.e2e.ts +++ b/tests/e2e/tests/web/critical-path/database/export-databases.e2e.ts @@ -50,7 +50,6 @@ test const compressor = 'Brotli'; await databaseHelper.clickOnEditDatabaseByName(ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.decompressionTab); await myRedisDatabasePage.AddRedisDatabaseDialog.setCompressorValue(compressor); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton); @@ -90,13 +89,11 @@ test await t.expect(modulesDbRedisStackIcon.exists).ok('module icon is displayed'); await databaseHelper.clickOnEditDatabaseByName(databaseNames[1]); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).contains('ca', 'CA certificate import incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).contains('client', 'Client certificate import incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); await databaseHelper.clickOnEditDatabaseByName(ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.decompressionTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.selectCompressor.textContent).eql(compressor, 'Compressor import incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); }); diff --git a/tests/e2e/tests/web/critical-path/database/import-databases.e2e.ts b/tests/e2e/tests/web/critical-path/database/import-databases.e2e.ts index 4a3720f1d5..e7bbc26501 100644 --- a/tests/e2e/tests/web/critical-path/database/import-databases.e2e.ts +++ b/tests/e2e/tests/web/critical-path/database/import-databases.e2e.ts @@ -164,33 +164,28 @@ test('Connection import from JSON', async t => { Verify that user can see the certificate name as the certificate file name */ await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmHost+Port+Name+CaCert')); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('ca', 'CA certificate import incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.exists).notOk('Client certificate was imported'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); // Verify that user can import database with Client certificate, Client private key await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmHost+Port+Name+clientCert+privateKey')); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('No CA Certificate', 'CA certificate was imported'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('client', 'Client certificate import incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); // Verify that user can import database with all certificates await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmHost+Port+Name+CaCert+clientCert+privateKey')); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('ca', 'CA certificate import incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('client', 'Client certificate import incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); // Verify that certificate not imported when any certificate field has not been parsed await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmCaCertInvalidBody')); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('No CA Certificate', 'CA certificate was imported'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.exists).notOk('Client certificate was imported'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); await databaseHelper.clickOnEditDatabaseByName(await findImportedRdmDbNameInList('rdmInvalidClientCert')); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('No CA Certificate', 'CA certificate was imported'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.exists).notOk('Client certificate was imported'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); @@ -215,40 +210,34 @@ test('Certificates import with/without path', async t => { // Verify that when user imports a certificate and the same certificate body already exists, the existing certificate (with its name) is applied await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[0].name); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql(rdmListOfCertsDB[0].caCert.name, 'CA certificate import incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql(rdmListOfCertsDB[0].clientCert.name, 'Client certificate import incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[1].name); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql(rdmListOfCertsDB[0].caCert.name, 'CA certificate name with the same body is incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql(rdmListOfCertsDB[0].clientCert.name, 'Client certificate name with the same body is incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); // Verify that when user imports a certificate and the same certificate name exists but with a different body, the certificate imported with "({incremental_number})_certificate_name" name await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[2].name); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql(`1_${rdmListOfCertsDB[0].caCert.name}`, 'CA certificate name with the same body is incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql(`1_${rdmListOfCertsDB[0].clientCert.name}`, 'Client certificate name with the same body is incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); // Verify that when user imports a certificate by path and the same certificate body already exists, the existing certificate (with its name) is applied await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[3].name); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('caPath', 'CA certificate import incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('clientPath', 'Client certificate import incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[4].name); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('caPath', 'CA certificate import incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('clientPath', 'Client certificate import incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); // Verify that when user imports a certificate by path and the same certificate name exists but with a different body, the certificate imported with "({incremental_number})certificate_name" name await databaseHelper.clickOnEditDatabaseByName(rdmListOfCertsDB[5].name); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).eql('1_caPath', 'CA certificate import incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).eql('1_clientPath', 'Client certificate import incorrect'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); @@ -273,7 +262,6 @@ test('Import SSH parameters', async t => { await t.click(myRedisDatabasePage.closeImportBtn); await databaseHelper.clickOnEditDatabaseByName(racompListOfSSHDB[0].name); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); // Verify that user can import the SSH parameters with Password await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshHostInput.value).eql(racompListOfSSHDB[0].sshHost, 'SSH host import incorrect'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPortInput.value).eql((racompListOfSSHDB[0].sshPort).toString(), 'SSH port import incorrect'); @@ -283,7 +271,6 @@ test('Import SSH parameters', async t => { await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.cancelButton); await databaseHelper.clickOnEditDatabaseByName(racompListOfSSHDB[1].name); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); // Verify that user can import the SSH Private Key both by its value specified in the file and by the file path await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.sshPrivateKeyInput.textContent).contains(hiddenPassword, 'SSH Private key import incorrect'); // Verify that user can import the SSH parameters with Passcode diff --git a/tests/e2e/tests/web/critical-path/rdi/navigation.e2e.ts b/tests/e2e/tests/web/critical-path/rdi/navigation.e2e.ts index c9a59c86fd..39468d410f 100644 --- a/tests/e2e/tests/web/critical-path/rdi/navigation.e2e.ts +++ b/tests/e2e/tests/web/critical-path/rdi/navigation.e2e.ts @@ -26,13 +26,6 @@ const rdiInstance: AddNewRdiParameters = { password: '111' }; -const rdiInstance2: AddNewRdiParameters = { - name: 'testInstance2', - url: 'https://11.111.111.214', - username: 'username', - password: '111' -}; - //skip the tests until rdi integration is added fixture.skip `Rdi Navigation` .meta({ type: 'critical_path', feature: 'rdi' }) @@ -114,31 +107,3 @@ test('Verify that confirmation message is displayed, if there are unsaved change await t.click(rdiInstancePage.proceedNavigateDialog); await t.expect(rdiInstancesListPage.addRdiInstanceButton.exists).ok('the user is not navigated to the panel'); }); -test.before(async() => { - await rdiApiRequests.addNewRdiApi(rdiInstance); - await rdiApiRequests.addNewRdiApi(rdiInstance2); - await databaseHelper.acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig)}) -('Verify that context is saved when user switches to db', async() => { - const jobName = 'jobName'; - const textForMonaco = 'here should be a job'; - - await myRedisDatabasePage.setActivePage(RedisOverviewPage.Rdi); - await rdiInstancesListPage.clickRdiByName(rdiInstance.name); - await rdiInstancePage.selectStartPipelineOption(RdiPopoverOptions.Pipeline); - - await t.click(rdiInstancePage.templateCancelButton); - await rdiInstancePage.MonacoEditor.sendTextToMonaco(rdiInstancePage.jobsInput, textForMonaco, false); - await t.click(rdiInstancePage.NavigationHeader.dbName); - await t.click(rdiInstancePage.NavigationHeader.dbListInstance.withText(ossStandaloneConfig.databaseName)); - - await t.click(rdiInstancePage.NavigationHeader.dbName); - await t.click(rdiInstancePage.NavigationHeader.dbListInstance.withText(rdiInstance.name)); - - const text = await rdiInstancePage.MonacoEditor.getTextFromMonaco(); - await t.expect(text).eql(textForMonaco, 'rdi context is not saved between rdi and db'); - - await t.click(rdiInstancePage.NavigationHeader.dbName); - await t.click(rdiInstancePage.NavigationHeader.dbListInstance.withText(rdiInstance2.name)); - - await t.expect(rdiInstancePage.selectOptionDialog.exists).ok('rdi context is saved between rdi') -}); diff --git a/tests/e2e/tests/web/regression/browser/list-key.e2e.ts b/tests/e2e/tests/web/regression/browser/list-key.e2e.ts index 213e3fd6a4..8af002c2da 100644 --- a/tests/e2e/tests/web/regression/browser/list-key.e2e.ts +++ b/tests/e2e/tests/web/regression/browser/list-key.e2e.ts @@ -116,26 +116,3 @@ test('Verify that user can edit a multiple fields', async t => { count = await browserPage.listElementsList.count; await t.expect(browserPage.listElementsList.nth(count - 1).textContent).eql(elementsValue[1], 'the last element is not corrected for add in head'); }); -test('Verify that user can hide fields', async t => { - await t.expect(browserPage.getKeySize(keyName).exists).ok('size is not displayed') - await t.expect(browserPage.getKeyTTl(keyName).exists).ok('ttl is not displayed') - - await t.click(browserPage.columnsBtn); - await t.click(browserPage.showTtlColumnCheckbox); - await t.click(browserPage.columnsBtn); - await t.expect(browserPage.getKeySize(keyName).exists).ok('size is not displayed') - await t.expect(browserPage.getKeyTTl(keyName).exists).notOk('ttl is displayed') - - await t.click(browserPage.columnsBtn); - await t.click(browserPage.showSizeColumnCheckbox); - await t.click(browserPage.columnsBtn); - await t.expect(browserPage.getKeySize(keyName).exists).notOk('size is not displayed') - await t.expect(browserPage.getKeyTTl(keyName).exists).notOk('ttl is displayed') - - await t.click(browserPage.columnsBtn); - await t.click(browserPage.showSizeColumnCheckbox); - await t.click(browserPage.showTtlColumnCheckbox); - await t.click(browserPage.columnsBtn); - await t.expect(browserPage.getKeySize(keyName).exists).ok('size is not displayed') - await t.expect(browserPage.getKeyTTl(keyName).exists).ok('ttl is displayed') -}); diff --git a/tests/e2e/tests/web/regression/database-overview/database-tls-certificates.e2e.ts b/tests/e2e/tests/web/regression/database-overview/database-tls-certificates.e2e.ts index ff874d7f4e..df069916ac 100644 --- a/tests/e2e/tests/web/regression/database-overview/database-tls-certificates.e2e.ts +++ b/tests/e2e/tests/web/regression/database-overview/database-tls-certificates.e2e.ts @@ -26,7 +26,6 @@ fixture `tls certificates` test('Verify that user can remove added certificates', async t => { await t.click(browserPage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await myRedisDatabasePage.AddRedisDatabaseDialog.removeCertificateButton(TlsCertificates.CA, 'ca'); // remove if other Certificates were added if( await myRedisDatabasePage.AddRedisDatabaseDialog.getDeleteCertificate(TlsCertificates.CA).exists){ @@ -36,7 +35,6 @@ test('Verify that user can remove added certificates', async t => { // wait for dbs are displayed await t.expect(myRedisDatabasePage.dbNameList.count).gt(0); await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); //verify that ca certificate is deleted await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).contains('No CA Certificate', 'CA certificate was not deleted'); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField); @@ -49,13 +47,11 @@ test('Verify that user can remove added certificates', async t => { // wait for dbs are displayed await t.expect(myRedisDatabasePage.dbNameList.count).gt(0); await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.requiresTlsClientCheckbox); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).contains('Add new certificate', 'Client certificate was not deleted'); await myRedisDatabasePage.reloadPage(); await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.requiresTlsClientCheckbox.checked).notOk('the certificate was not removed'); await myRedisDatabasePage.reloadPage(); diff --git a/tests/e2e/tests/web/regression/database/navigation.e2e.ts b/tests/e2e/tests/web/regression/database/navigation.e2e.ts index d2cbf32cb3..b41f48c0df 100644 --- a/tests/e2e/tests/web/regression/database/navigation.e2e.ts +++ b/tests/e2e/tests/web/regression/database/navigation.e2e.ts @@ -50,13 +50,13 @@ test('Verify that user can navigate to instances using navigation widget', async await myRedisDatabasePage.clickOnDBByName( ossStandaloneConfig.databaseName ); - await t.click(browserPage.NavigationHeader.dbName) - let dbWidgetNames = await browserPage.NavigationHeader.getAllDatabases(); + await t.click(browserPage.OverviewPanel.dbName) + let dbWidgetNames = await browserPage.OverviewPanel.getAllDatabases(); await t.expect(dbListPageNames).eql(dbWidgetNames, 'DB Lists have the same names'); - await t.click(browserPage.NavigationHeader.dbListInstance.withText(ossStandaloneV7Config.databaseName)); - await t.expect(browserPage.NavigationHeader.dbName.textContent).eql(ossStandaloneV7Config.databaseName, 'user can not be navigated'); - await t.click(browserPage.NavigationHeader.dbName) - await t.click(browserPage.NavigationHeader.homeLinkNavigation); + await t.click(browserPage.OverviewPanel.dbListInstance.withText(ossStandaloneV7Config.databaseName)); + await t.expect(browserPage.OverviewPanel.dbName.textContent).eql(ossStandaloneV7Config.databaseName, 'user can not be navigated'); + await t.click(browserPage.OverviewPanel.dbName) + await t.click(browserPage.OverviewPanel.homeLinkNavigation); await t.expect(myRedisDatabasePage.hostPort.exists).ok('Db list page is not opened'); @@ -64,12 +64,12 @@ test('Verify that user can navigate to instances using navigation widget', async ossStandaloneConfig.databaseName ) await t.debug(); - await t.click(browserPage.NavigationHeader.dbName) - await t.typeText(browserPage.NavigationHeader.dbListInput, ossStandaloneV7Config.databaseName); + await t.click(browserPage.OverviewPanel.dbName) + await t.typeText(browserPage.OverviewPanel.dbListInput, ossStandaloneV7Config.databaseName); await t.debug(); - dbWidgetNames = await browserPage.NavigationHeader.getAllDatabases(); + dbWidgetNames = await browserPage.OverviewPanel.getAllDatabases(); await t.expect(dbWidgetNames.length).eql(1, 'DB List is not searched'); - await t.click(browserPage.NavigationHeader.rdiNavigationTab); + await t.click(browserPage.OverviewPanel.rdiNavigationTab); //TODO uncomment when RDI e2e starts running //await t.expect(dbListPageNames.length).eql(1, 'RDI List is not searched'); diff --git a/tests/e2e/tests/web/regression/url-handling/url-handling.e2e.ts b/tests/e2e/tests/web/regression/url-handling/url-handling.e2e.ts index 6affdd29c2..2a6facde89 100644 --- a/tests/e2e/tests/web/regression/url-handling/url-handling.e2e.ts +++ b/tests/e2e/tests/web/regression/url-handling/url-handling.e2e.ts @@ -50,7 +50,6 @@ test ]; await t.navigateTo(generateLink(connectUrlParams)); - await t.click(myRedisDatabasePage.AddRedisDatabaseDialog.securityTab); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.caCertField.textContent).contains('Add new CA certificate', 'add CA certificate is not shown'); await t.expect(myRedisDatabasePage.AddRedisDatabaseDialog.clientCertField.textContent).contains('Add new certificate', 'add client certificate is not shown'); await t.hover(myRedisDatabasePage.AddRedisDatabaseDialog.addRedisDatabaseButton); diff --git a/yarn.lock b/yarn.lock index 65daad6cb3..88fd2934cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1047,7 +1047,14 @@ core-js-pure "^3.25.1" regenerator-runtime "^0.13.11" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.9", "@babel/runtime@^7.15.4", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.13.9": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== @@ -3879,10 +3886,10 @@ axe-core@^4.0.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== -axios@^1.7.8: - version "1.7.8" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.8.tgz#1997b1496b394c21953e68c14aaa51b7b5de3d6e" - integrity sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw== +axios@^1.7.4: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" @@ -5721,7 +5728,7 @@ ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: dependencies: safe-buffer "^5.0.1" -ejs@^3.1.10, ejs@^3.1.8, ejs@^3.1.9: +ejs@^3.1.10, ejs@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== @@ -13725,13 +13732,6 @@ vite-plugin-compression2@^1.1.0: gunzip-maybe "^1.4.2" tar-stream "^3.1.7" -vite-plugin-ejs@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/vite-plugin-ejs/-/vite-plugin-ejs-1.7.0.tgz#c0229729d5a26e9eb57b8abadc75f7070d470d23" - integrity sha512-JNP3zQDC4mSbfoJ3G73s5mmZITD8NGjUmLkq4swxyahy/W0xuokK9U9IJGXw7KCggq6UucT6hJ0p+tQrNtqTZw== - dependencies: - ejs "^3.1.9" - vite-plugin-electron-renderer@^0.14.5: version "0.14.5" resolved "https://registry.yarnpkg.com/vite-plugin-electron-renderer/-/vite-plugin-electron-renderer-0.14.5.tgz#2ac36f31773cb23a09353fabb6fb788bdad94f50" @@ -13756,10 +13756,10 @@ vite-plugin-svgr@^4.2.0: "@svgr/core" "^8.1.0" "@svgr/plugin-jsx" "^8.1.0" -vite@^5.4.12: - version "5.4.12" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.12.tgz#627d12ff06de3942557dfe8632fd712a12a072c7" - integrity sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA== +vite@^5.4.9: + version "5.4.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.9.tgz#215c80cbebfd09ccbb9ceb8c0621391c9abdc19c" + integrity sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg== dependencies: esbuild "^0.21.3" postcss "^8.4.43"