From 504305cc397eedf3ac5a0ed5ee45168e53f4b8f6 Mon Sep 17 00:00:00 2001 From: Jacob Bandes-Storch Date: Fri, 23 Apr 2021 16:26:47 -1000 Subject: [PATCH] Improve Jest performance (#640) On my M1 MacBook Air I can now run **all** the tests in about 16 seconds. Running a single small test file is down from 15sec to <2sec. There were a few components to this: - Jest would take several seconds to load `jest.config.ts` files (https://github.com/facebook/jest/issues/11337). Fixed by replacing them with `jest.config.json` files. - Jest tries to use the native `find` if available over node fs, but it doesn't pass any exclude options to find, which means that it has to wait a few seconds for `find`, then filter a huge list of all .js files in app/node_modules. Upgrading jest lets us pass a config option to force it to use node fs instead (https://github.com/facebook/jest/pull/11264#issuecomment-825377579). - `jsdom` is no longer the default environment in jest, and there is some overhead to jsdom. We are embracing this change by only enabling jsdom in certain test files that need it. Unfortunately Jest only recognizes the `/** @jest-environment jsdom */` comment if it is at the very beginning of the file, so I had to replace our eslint-plugin-header rule with a custom rule to enforce the presence of license headers. - Converted the custom `?raw` transformer to .js instead of .ts, since we are not using ts-node anymore. - Actually executing the test files with ts-jest was slow, because it has to run the TS compiler. Instead we can use babel-jest which doesn't do type checking. https://github.com/kulshekhar/ts-jest/issues/961#issuecomment-458294885 (This also requires enabling `isolatedModules` in tsconfig.) For better or worse, our regular webpack build already typechecks our test files. --- .eslintrc.yaml | 8 +- .vscode/settings.json | 3 +- app/PanelAPI/useBlocksByTopic.test.tsx | 1 + app/PanelAPI/useDataSourceInfo.test.tsx | 1 + app/PanelAPI/useMessageReducer.test.tsx | 1 + app/PanelAPI/useMessagesByTopic.test.tsx | 1 + app/components/ButtonBase.test.tsx | 1 + app/components/DocumentDropListener.test.tsx | 1 + .../ExperimentalFeatureSettings.test.tsx | 1 + app/components/GlobalKeyListener.test.tsx | 1 + app/components/Icon.test.tsx | 1 + .../MessagePathInput.test.ts | 1 + .../useCachedGetMessagePathDataItems.test.tsx | 1 + .../useLatestMessageDataItem.test.tsx | 1 + .../useMessagesByPath.test.tsx | 1 + app/components/MessagePipeline/index.test.tsx | 12 +- app/components/Panel.test.tsx | 1 + app/components/ShareJsonModal.test.tsx | 1 + app/components/Tree/index.stories.tsx | 3 +- app/components/Tree/index.tsx | 3 - .../CombinedDataProvider.test.ts | 1 + .../ParseMessagesDataProvider.test.ts | 1 + app/dataProviders/RpcDataProvider.test.ts | 1 + app/dataProviders/getRemoteBagGuid.test.ts | 1 + app/hooks/useContextSelector.test.tsx | 1 + app/hooks/usePrompt.test.tsx | 1 + app/jest.config.json | 23 + app/jest.config.ts | 30 - app/package.json | 1 + app/panels/Internals.test.tsx | 1 + app/panels/Plot/PlotMenu.test.ts | 1 + app/panels/Publish/index.test.tsx | 1 + .../FrameCompatibility.test.tsx | 1 + .../ThreeDimensionalViz/SearchText.test.tsx | 1 + .../useSceneBuilderAndTransformsData.test.tsx | 1 + .../TopicTree/useTopicTree.test.tsx | 1 + .../diagnostics/DiagnosticsHistory.test.ts | 1 + app/players/RandomAccessPlayer.test.ts | 1 + app/players/UserNodePlayer/index.test.ts | 1 + .../typescript/userUtils/.eslintrc.yaml | 2 +- .../automatedRun/AutomatedRunPlayer.test.ts | 1 + .../performanceMeasuringClient.test.ts | 1 + app/players/types.ts | 2 +- app/reducers/layoutHistory.test.ts | 1 + app/reducers/panels.test.ts | 1 + app/reducers/recentLayouts.test.ts | 1 + app/test/mocks/fileMock.ts | 2 +- app/test/mocks/styleMock.ts | 2 +- app/test/sentry-stub.ts | 12 - app/test/setup.ts | 13 +- app/test/setupTestFramework.test.ts | 2 + .../transformers/rawImportPreprocessor.ts | 37 - .../typescriptTransformerWithRawImports.js | 29 + app/util/Rpc.test.ts | 1 + app/util/RpcUtils.test.ts | 1 + app/util/Storage.test.ts | 1 + app/util/layout.test.ts | 1 + app/util/parseMessageDefinitionsCache.test.ts | 1 + babel.config.json | 8 + ci/jest.config.json | 5 + ci/jest.config.ts | 8 - eslint-rules/foxglove-license-header.js | 37 + jest.config.json | 8 + jest.config.ts | 14 - package.json | 23 +- packages/electron-socket/package.json | 2 +- packages/ros1/jest.config.json | 6 + packages/ros1/jest.config.ts | 9 - packages/ros1/package.json | 4 +- packages/rosmsg-deser/jest.config.json | 5 + packages/rosmsg-deser/jest.config.ts | 8 - packages/rosmsg-deser/package.json | 2 +- packages/velodyne-cloud/jest.config.json | 6 + packages/velodyne-cloud/jest.config.ts | 9 - packages/velodyne-cloud/package.json | 4 +- packages/wasm-bz2/jest.config.json | 6 + packages/wasm-bz2/jest.config.ts | 16 - packages/wasm-bz2/package.json | 2 +- packages/xmlrpc/jest.config.json | 6 + packages/xmlrpc/jest.config.ts | 9 - packages/xmlrpc/package.json | 4 +- test/jest.config.json | 6 + test/jest.config.ts | 14 - tsconfig.base.json | 3 + tsconfig.json | 1 + yarn.lock | 1517 +++++++++-------- 86 files changed, 1069 insertions(+), 898 deletions(-) create mode 100644 app/jest.config.json delete mode 100644 app/jest.config.ts delete mode 100644 app/test/sentry-stub.ts delete mode 100644 app/test/transformers/rawImportPreprocessor.ts create mode 100644 app/test/transformers/typescriptTransformerWithRawImports.js create mode 100644 babel.config.json create mode 100644 ci/jest.config.json delete mode 100644 ci/jest.config.ts create mode 100644 eslint-rules/foxglove-license-header.js create mode 100644 jest.config.json delete mode 100644 jest.config.ts create mode 100644 packages/ros1/jest.config.json delete mode 100644 packages/ros1/jest.config.ts create mode 100644 packages/rosmsg-deser/jest.config.json delete mode 100644 packages/rosmsg-deser/jest.config.ts create mode 100644 packages/velodyne-cloud/jest.config.json delete mode 100644 packages/velodyne-cloud/jest.config.ts create mode 100644 packages/wasm-bz2/jest.config.json delete mode 100644 packages/wasm-bz2/jest.config.ts create mode 100644 packages/xmlrpc/jest.config.json delete mode 100644 packages/xmlrpc/jest.config.ts create mode 100644 test/jest.config.json delete mode 100644 test/jest.config.ts diff --git a/.eslintrc.yaml b/.eslintrc.yaml index a55bab6af3..9e9c880dee 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -16,7 +16,6 @@ plugins: - react - react-hooks - "@typescript-eslint" - - header - file-progress extends: @@ -88,12 +87,7 @@ rules: - error - additionalHooks: "(useAsync(?!AppConfigurationValue))" no-new-func: error - header/header: - - error - - line - - - " This Source Code Form is subject to the terms of the Mozilla Public" - - " License, v2.0. If a copy of the MPL was not distributed with this" - - " file, You can obtain one at http://mozilla.org/MPL/2.0/" + foxglove-license-header: error curly: error "@typescript-eslint/no-unused-vars": diff --git a/.vscode/settings.json b/.vscode/settings.json index 85e66d83e8..f013971d63 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,7 +19,8 @@ "typescript.tsdk": "node_modules/typescript/lib", "typescript.preferences.importModuleSpecifier": "non-relative", "eslint.options": { - "reportUnusedDisableDirectives": true + "reportUnusedDisableDirectives": true, + "rulePaths": ["eslint-rules"] }, // enable intellisense in custom snippets (see snippets.code-snippets) "editor.suggest.snippetsPreventQuickSuggestions": false diff --git a/app/PanelAPI/useBlocksByTopic.test.tsx b/app/PanelAPI/useBlocksByTopic.test.tsx index 9385f406dd..39c890c840 100644 --- a/app/PanelAPI/useBlocksByTopic.test.tsx +++ b/app/PanelAPI/useBlocksByTopic.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/PanelAPI/useDataSourceInfo.test.tsx b/app/PanelAPI/useDataSourceInfo.test.tsx index 11961c46bd..d28aea9f17 100644 --- a/app/PanelAPI/useDataSourceInfo.test.tsx +++ b/app/PanelAPI/useDataSourceInfo.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/PanelAPI/useMessageReducer.test.tsx b/app/PanelAPI/useMessageReducer.test.tsx index d915f134c3..e600e20ae4 100644 --- a/app/PanelAPI/useMessageReducer.test.tsx +++ b/app/PanelAPI/useMessageReducer.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/PanelAPI/useMessagesByTopic.test.tsx b/app/PanelAPI/useMessagesByTopic.test.tsx index d7632d8c8c..b7a06bf8a6 100644 --- a/app/PanelAPI/useMessagesByTopic.test.tsx +++ b/app/PanelAPI/useMessagesByTopic.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/ButtonBase.test.tsx b/app/components/ButtonBase.test.tsx index 702b769609..102e4c70dc 100644 --- a/app/components/ButtonBase.test.tsx +++ b/app/components/ButtonBase.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/DocumentDropListener.test.tsx b/app/components/DocumentDropListener.test.tsx index d08bd2c277..9178cfc1ad 100644 --- a/app/components/DocumentDropListener.test.tsx +++ b/app/components/DocumentDropListener.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/ExperimentalFeatureSettings.test.tsx b/app/components/ExperimentalFeatureSettings.test.tsx index ce381041ae..39149bcb3a 100644 --- a/app/components/ExperimentalFeatureSettings.test.tsx +++ b/app/components/ExperimentalFeatureSettings.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/GlobalKeyListener.test.tsx b/app/components/GlobalKeyListener.test.tsx index 4f881c4c62..ed5f66a1b3 100644 --- a/app/components/GlobalKeyListener.test.tsx +++ b/app/components/GlobalKeyListener.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/Icon.test.tsx b/app/components/Icon.test.tsx index f0ad3addb8..35eaf84e13 100644 --- a/app/components/Icon.test.tsx +++ b/app/components/Icon.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/MessagePathSyntax/MessagePathInput.test.ts b/app/components/MessagePathSyntax/MessagePathInput.test.ts index 6554f6f307..8b1ebc3d2c 100644 --- a/app/components/MessagePathSyntax/MessagePathInput.test.ts +++ b/app/components/MessagePathSyntax/MessagePathInput.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/MessagePathSyntax/useCachedGetMessagePathDataItems.test.tsx b/app/components/MessagePathSyntax/useCachedGetMessagePathDataItems.test.tsx index 72ca97dbb3..29f94199aa 100644 --- a/app/components/MessagePathSyntax/useCachedGetMessagePathDataItems.test.tsx +++ b/app/components/MessagePathSyntax/useCachedGetMessagePathDataItems.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/MessagePathSyntax/useLatestMessageDataItem.test.tsx b/app/components/MessagePathSyntax/useLatestMessageDataItem.test.tsx index a30f2d2abf..dd38b42859 100644 --- a/app/components/MessagePathSyntax/useLatestMessageDataItem.test.tsx +++ b/app/components/MessagePathSyntax/useLatestMessageDataItem.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/MessagePathSyntax/useMessagesByPath.test.tsx b/app/components/MessagePathSyntax/useMessagesByPath.test.tsx index 77888702bf..9be843eee0 100644 --- a/app/components/MessagePathSyntax/useMessagesByPath.test.tsx +++ b/app/components/MessagePathSyntax/useMessagesByPath.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/MessagePipeline/index.test.tsx b/app/components/MessagePipeline/index.test.tsx index a17cf2fb07..b566c7ccd1 100644 --- a/app/components/MessagePipeline/index.test.tsx +++ b/app/components/MessagePipeline/index.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ @@ -164,26 +165,27 @@ describe("MessagePipelineProvider/useMessagePipeline", () => { it("waits for the previous frame to finish before calling setGlobalVariables again", async () => { const player = new FakePlayer(); - jest.spyOn(player, "setGlobalVariables"); + const mockSetGlobalVariables = jest.spyOn(player, "setGlobalVariables"); const { result, rerender } = renderHook(Hook, { wrapper: Wrapper, initialProps: { maybePlayer: { player }, globalVariables: {} }, }); await tick(); + await tick(); - expect(player.setGlobalVariables).toHaveBeenCalledWith({}); - expect(player.setGlobalVariables).toHaveBeenCalledTimes(1); + expect(mockSetGlobalVariables.mock.calls).toEqual([[{}]]); const onFrameRendered = result.current.pauseFrame("Wait"); // Pass in new globalVariables and make sure they aren't used until the frame is done rerender({ maybePlayer: { player }, globalVariables: { futureTime: 1 } }); await tick(); - expect(player.setGlobalVariables).toHaveBeenCalledTimes(1); + expect(mockSetGlobalVariables.mock.calls).toEqual([[{}]]); // Once the frame is done, setGlobalVariables will be called with the new value onFrameRendered(); await tick(); - expect(player.setGlobalVariables).toHaveBeenCalledWith({ futureTime: 1 }); + await tick(); + expect(mockSetGlobalVariables.mock.calls).toEqual([[{}], [{ futureTime: 1 }]]); }); it("sets subscriptions", () => { diff --git a/app/components/Panel.test.tsx b/app/components/Panel.test.tsx index 720bace62b..fd1f672b12 100644 --- a/app/components/Panel.test.tsx +++ b/app/components/Panel.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/ShareJsonModal.test.tsx b/app/components/ShareJsonModal.test.tsx index 896568fbcc..d13377b462 100644 --- a/app/components/ShareJsonModal.test.tsx +++ b/app/components/ShareJsonModal.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/components/Tree/index.stories.tsx b/app/components/Tree/index.stories.tsx index 3d079517bf..6dd522f314 100644 --- a/app/components/Tree/index.stories.tsx +++ b/app/components/Tree/index.stories.tsx @@ -17,7 +17,8 @@ import { storiesOf } from "@storybook/react"; import { useState } from "react"; import Menu from "@foxglove-studio/app/components/Menu"; -import Tree, { Node } from "@foxglove-studio/app/components/Tree"; +import Tree from "@foxglove-studio/app/components/Tree"; +import { Node } from "@foxglove-studio/app/components/Tree/Node"; function getInitialState() { const root = { diff --git a/app/components/Tree/index.tsx b/app/components/Tree/index.tsx index 5c1ea5932d..385fd210f9 100644 --- a/app/components/Tree/index.tsx +++ b/app/components/Tree/index.tsx @@ -16,9 +16,6 @@ import React, { PureComponent } from "react"; import { Node } from "./Node"; import TreeNode from "./TreeNode"; -// export the node flow type -export { Node } from "./Node"; - type Props = { disableCheckbox?: boolean; enableVisibilityToggle?: boolean; diff --git a/app/dataProviders/CombinedDataProvider.test.ts b/app/dataProviders/CombinedDataProvider.test.ts index 201486f7fa..5d63713f8e 100644 --- a/app/dataProviders/CombinedDataProvider.test.ts +++ b/app/dataProviders/CombinedDataProvider.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/dataProviders/ParseMessagesDataProvider.test.ts b/app/dataProviders/ParseMessagesDataProvider.test.ts index 9c8e93317a..62e5e1804b 100644 --- a/app/dataProviders/ParseMessagesDataProvider.test.ts +++ b/app/dataProviders/ParseMessagesDataProvider.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/dataProviders/RpcDataProvider.test.ts b/app/dataProviders/RpcDataProvider.test.ts index bc4ab4140c..343116dc79 100644 --- a/app/dataProviders/RpcDataProvider.test.ts +++ b/app/dataProviders/RpcDataProvider.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/dataProviders/getRemoteBagGuid.test.ts b/app/dataProviders/getRemoteBagGuid.test.ts index 49c2f9525c..f5fb60d2fa 100644 --- a/app/dataProviders/getRemoteBagGuid.test.ts +++ b/app/dataProviders/getRemoteBagGuid.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/hooks/useContextSelector.test.tsx b/app/hooks/useContextSelector.test.tsx index 9b6ffc46be..b1037792ad 100644 --- a/app/hooks/useContextSelector.test.tsx +++ b/app/hooks/useContextSelector.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/hooks/usePrompt.test.tsx b/app/hooks/usePrompt.test.tsx index 16ed8a3958..47c75f4ca1 100644 --- a/app/hooks/usePrompt.test.tsx +++ b/app/hooks/usePrompt.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/jest.config.json b/app/jest.config.json new file mode 100644 index 0000000000..7a3d8a582f --- /dev/null +++ b/app/jest.config.json @@ -0,0 +1,23 @@ +{ + "//": "Note: we use babel-jest rather than ts-jest for performance reasons.", + "transform": { + "\\.tsx?$": "/test/transformers/typescriptTransformerWithRawImports.js", + "\\.ne$": "/test/transformers/neTransformer.js", + "\\.(bin|template|wasm)$": "/test/transformers/rawTransformer.js" + }, + "globals": { + "ReactNull": null + }, + "setupFiles": ["/test/setup.ts", "/test/setupEnzyme.ts", "jest-canvas-mock"], + "setupFilesAfterEnv": ["/test/setupTestFramework.ts"], + "restoreMocks": true, + "moduleNameMapper": { + "\\.svg$": "/test/mocks/MockSvg.tsx", + "react-monaco-editor": "/test/stubs/MonacoEditor.tsx", + "\\.(glb|md|png)$": "/test/mocks/fileMock.ts", + "\\.(css|scss)$": "/test/mocks/styleMock.ts" + }, + "testRunner": "jest-circus/runner", + "//": "Native find is slow because it does not exclude files: https://github.com/facebook/jest/pull/11264#issuecomment-825377579", + "haste": { "forceNodeFilesystemAPI": true } +} diff --git a/app/jest.config.ts b/app/jest.config.ts deleted file mode 100644 index e6b8eda624..0000000000 --- a/app/jest.config.ts +++ /dev/null @@ -1,30 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -export default { - preset: "ts-jest", - transform: { - "\\.tsx?$": "/test/transformers/rawImportPreprocessor.ts", - "\\.ne$": "/test/transformers/neTransformer.js", - "\\.(bin|template|wasm)$": "/test/transformers/rawTransformer.js", - }, - globals: { - ReactNull: null, // eslint-disable-line no-restricted-syntax - "ts-jest": { - babelConfig: { - plugins: ["babel-plugin-transform-import-meta", "@babel/plugin-transform-modules-commonjs"], - }, - }, - }, - setupFiles: ["/test/setup.ts", "/test/setupEnzyme.ts", "jest-canvas-mock"], - setupFilesAfterEnv: ["/test/setupTestFramework.ts"], - restoreMocks: true, - moduleNameMapper: { - "\\.svg$": "/test/mocks/MockSvg.tsx", - "react-monaco-editor": "/test/stubs/MonacoEditor.tsx", - "\\.(glb|md|png)$": "/test/mocks/fileMock.ts", - "\\.(css|scss)$": "/test/mocks/styleMock.ts", - }, - testRunner: "jest-circus/runner", -}; diff --git a/app/package.json b/app/package.json index d60b6124c2..48c862ba60 100644 --- a/app/package.json +++ b/app/package.json @@ -89,6 +89,7 @@ "@storybook/addon-essentials": "6.2.5", "@storybook/builder-webpack5": "6.2.5", "@storybook/react": "6.2.5", + "@testing-library/dom": "7.30.1", "@testing-library/react": "11.2.6", "@testing-library/react-hooks": "5.1.1", "@types/argparse": "^2.0.5", diff --git a/app/panels/Internals.test.tsx b/app/panels/Internals.test.tsx index 9deb70e9cc..c32d1c5e5f 100644 --- a/app/panels/Internals.test.tsx +++ b/app/panels/Internals.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/panels/Plot/PlotMenu.test.ts b/app/panels/Plot/PlotMenu.test.ts index 1d7d34f41e..0818877c3d 100644 --- a/app/panels/Plot/PlotMenu.test.ts +++ b/app/panels/Plot/PlotMenu.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/panels/Publish/index.test.tsx b/app/panels/Publish/index.test.tsx index c054feb1cf..3d45b762dc 100644 --- a/app/panels/Publish/index.test.tsx +++ b/app/panels/Publish/index.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/panels/ThreeDimensionalViz/FrameCompatibility.test.tsx b/app/panels/ThreeDimensionalViz/FrameCompatibility.test.tsx index 77ed2d58eb..b15751e9c2 100644 --- a/app/panels/ThreeDimensionalViz/FrameCompatibility.test.tsx +++ b/app/panels/ThreeDimensionalViz/FrameCompatibility.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/panels/ThreeDimensionalViz/SearchText.test.tsx b/app/panels/ThreeDimensionalViz/SearchText.test.tsx index 8127a95a00..e7302a7b6d 100644 --- a/app/panels/ThreeDimensionalViz/SearchText.test.tsx +++ b/app/panels/ThreeDimensionalViz/SearchText.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/panels/ThreeDimensionalViz/TopicTree/useSceneBuilderAndTransformsData.test.tsx b/app/panels/ThreeDimensionalViz/TopicTree/useSceneBuilderAndTransformsData.test.tsx index d3b1f57ad9..dc2a58a379 100644 --- a/app/panels/ThreeDimensionalViz/TopicTree/useSceneBuilderAndTransformsData.test.tsx +++ b/app/panels/ThreeDimensionalViz/TopicTree/useSceneBuilderAndTransformsData.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/panels/ThreeDimensionalViz/TopicTree/useTopicTree.test.tsx b/app/panels/ThreeDimensionalViz/TopicTree/useTopicTree.test.tsx index 0cc0d41bfa..b6462758e9 100644 --- a/app/panels/ThreeDimensionalViz/TopicTree/useTopicTree.test.tsx +++ b/app/panels/ThreeDimensionalViz/TopicTree/useTopicTree.test.tsx @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/panels/diagnostics/DiagnosticsHistory.test.ts b/app/panels/diagnostics/DiagnosticsHistory.test.ts index ab09ee4c3b..513470f07b 100644 --- a/app/panels/diagnostics/DiagnosticsHistory.test.ts +++ b/app/panels/diagnostics/DiagnosticsHistory.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/players/RandomAccessPlayer.test.ts b/app/players/RandomAccessPlayer.test.ts index 2df4241020..3059c98916 100644 --- a/app/players/RandomAccessPlayer.test.ts +++ b/app/players/RandomAccessPlayer.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/players/UserNodePlayer/index.test.ts b/app/players/UserNodePlayer/index.test.ts index 57b3602a02..e9ad639ee6 100644 --- a/app/players/UserNodePlayer/index.test.ts +++ b/app/players/UserNodePlayer/index.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/players/UserNodePlayer/nodeTransformerWorker/typescript/userUtils/.eslintrc.yaml b/app/players/UserNodePlayer/nodeTransformerWorker/typescript/userUtils/.eslintrc.yaml index 9977a24350..b8ca1aae6b 100644 --- a/app/players/UserNodePlayer/nodeTransformerWorker/typescript/userUtils/.eslintrc.yaml +++ b/app/players/UserNodePlayer/nodeTransformerWorker/typescript/userUtils/.eslintrc.yaml @@ -1,3 +1,3 @@ rules: # do not require license header for userUtils - "header/header": off + foxglove-license-header: off diff --git a/app/players/automatedRun/AutomatedRunPlayer.test.ts b/app/players/automatedRun/AutomatedRunPlayer.test.ts index 85779f8810..f71a6e9a64 100644 --- a/app/players/automatedRun/AutomatedRunPlayer.test.ts +++ b/app/players/automatedRun/AutomatedRunPlayer.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/players/automatedRun/performanceMeasuringClient.test.ts b/app/players/automatedRun/performanceMeasuringClient.test.ts index 4a4ce17fbb..3cf6cb3db9 100644 --- a/app/players/automatedRun/performanceMeasuringClient.test.ts +++ b/app/players/automatedRun/performanceMeasuringClient.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/players/types.ts b/app/players/types.ts index 729c3e1bc2..fdcbb928b1 100644 --- a/app/players/types.ts +++ b/app/players/types.ts @@ -87,7 +87,7 @@ export interface Player { setGlobalVariables(globalVariables: GlobalVariables): void; } -export const enum PlayerPresence { +export enum PlayerPresence { NOT_PRESENT = "NOT_PRESENT", CONSTRUCTING = "CONSTRUCTING", INITIALIZING = "INITIALIZING", diff --git a/app/reducers/layoutHistory.test.ts b/app/reducers/layoutHistory.test.ts index 623ce71aff..4f0d04430d 100644 --- a/app/reducers/layoutHistory.test.ts +++ b/app/reducers/layoutHistory.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/reducers/panels.test.ts b/app/reducers/panels.test.ts index 6f64a6bc04..64435aaa21 100644 --- a/app/reducers/panels.test.ts +++ b/app/reducers/panels.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/reducers/recentLayouts.test.ts b/app/reducers/recentLayouts.test.ts index 26795b5642..64a5c13991 100644 --- a/app/reducers/recentLayouts.test.ts +++ b/app/reducers/recentLayouts.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/test/mocks/fileMock.ts b/app/test/mocks/fileMock.ts index 90e74e471f..cb86b4c2b8 100644 --- a/app/test/mocks/fileMock.ts +++ b/app/test/mocks/fileMock.ts @@ -2,4 +2,4 @@ // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ -module.exports = "test-file-stub"; +export default "test-file-stub"; diff --git a/app/test/mocks/styleMock.ts b/app/test/mocks/styleMock.ts index b54be0e0cc..3848c9fa2b 100644 --- a/app/test/mocks/styleMock.ts +++ b/app/test/mocks/styleMock.ts @@ -2,4 +2,4 @@ // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ -module.exports = {}; +export default {}; diff --git a/app/test/sentry-stub.ts b/app/test/sentry-stub.ts deleted file mode 100644 index f049fc53f8..0000000000 --- a/app/test/sentry-stub.ts +++ /dev/null @@ -1,12 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ -// -// This file incorporates work covered by the following copyright and -// permission notice: -// -// Copyright 2018-2021 Cruise LLC -// -// This source code is licensed under the Apache License, Version 2.0, -// found at http://www.apache.org/licenses/LICENSE-2.0 -// You may not use this file except in compliance with the License. diff --git a/app/test/setup.ts b/app/test/setup.ts index a16f4311c2..bc13394f1a 100644 --- a/app/test/setup.ts +++ b/app/test/setup.ts @@ -15,6 +15,7 @@ import UrlSearchParams from "url-search-params"; import util from "util"; import { resetLogEventForTests } from "@foxglove-studio/app/util/logEvent"; +import setImmediate from "@foxglove-studio/app/util/setImmediate"; process.env.WASM_LZ4_ENVIRONMENT = "NODE"; @@ -22,14 +23,18 @@ function noOp() { // no-op } -if (typeof window.URL.createObjectURL === "undefined") { - Object.defineProperty(window.URL, "createObjectURL", { value: noOp }); -} - if (typeof window !== "undefined") { global.TextDecoder = util.TextDecoder as typeof TextDecoder; // polyfill URLSearchParams in jsdom window.URLSearchParams = UrlSearchParams; + + if (typeof window.URL.createObjectURL === "undefined") { + Object.defineProperty(window.URL, "createObjectURL", { value: noOp }); + } + + // jsdom removes Node's setImmediate from global, but we have tests & app code that use it + // https://github.com/facebook/jest/pull/11222 + (window as any).setImmediate ??= setImmediate; } global.TextEncoder = util.TextEncoder; diff --git a/app/test/setupTestFramework.test.ts b/app/test/setupTestFramework.test.ts index 1b0bb0dee3..058192fef4 100644 --- a/app/test/setupTestFramework.test.ts +++ b/app/test/setupTestFramework.test.ts @@ -44,3 +44,5 @@ describe("custom expectations", () => { }); }); }); + +export {}; // for isolatedModules diff --git a/app/test/transformers/rawImportPreprocessor.ts b/app/test/transformers/rawImportPreprocessor.ts deleted file mode 100644 index 522dbc2e89..0000000000 --- a/app/test/transformers/rawImportPreprocessor.ts +++ /dev/null @@ -1,37 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -import type { CacheKeyOptions, TransformOptions } from "@jest/transform"; -import type { Config } from "@jest/types"; -import fs from "fs"; -import { createTransformer } from "ts-jest"; - -const transformer = createTransformer(); - -// look for `?raw` import statements -// re-write these into `const variable = "string source";`; -const importRegEx = /^import (.*) from "(.*)\?raw";$/gm; -const importReplacer = (_: unknown, p1: string, p2: string) => { - const resolved = require.resolve(p2); - const rawFile = fs.readFileSync(resolved, { encoding: "utf-8" }); - return `const ${p1} = ${JSON.stringify(rawFile.toString())};`; -}; - -function rewriteSource(source: string) { - return source.replace(importRegEx, importReplacer); -} - -module.exports = { - process( - source: string, - filePath: string, - config: Config.ProjectConfig, - options?: TransformOptions, - ) { - return transformer.process(rewriteSource(source), filePath, config, options); - }, - getCacheKey(source: string, filePath: string, config: string, options: CacheKeyOptions) { - return transformer.getCacheKey(rewriteSource(source), filePath, config, options); - }, -}; diff --git a/app/test/transformers/typescriptTransformerWithRawImports.js b/app/test/transformers/typescriptTransformerWithRawImports.js new file mode 100644 index 0000000000..01e805ae33 --- /dev/null +++ b/app/test/transformers/typescriptTransformerWithRawImports.js @@ -0,0 +1,29 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/ + +/* eslint-disable @typescript-eslint/no-var-requires */ +const babelJest = require("babel-jest").default; +const fs = require("fs"); + +// look for `?raw` import statements +// re-write these into `const variable = "string source";`; +const importRegEx = /^import (.*) from "(.*)\?raw";$/gm; +const importReplacer = (_, p1, p2) => { + const resolved = require.resolve(p2); + const rawFile = fs.readFileSync(resolved, { encoding: "utf-8" }); + return `const ${p1} = ${JSON.stringify(rawFile.toString())};`; +}; + +function rewriteSource(source) { + return source.replace(importRegEx, importReplacer); +} + +module.exports = { + process(sourceText, ...args) { + return babelJest.process(rewriteSource(sourceText), ...args); + }, + getCacheKey(sourceText, ...args) { + return babelJest.getCacheKey(rewriteSource(sourceText), ...args); + }, +}; diff --git a/app/util/Rpc.test.ts b/app/util/Rpc.test.ts index dc703dd869..d83b33a7af 100644 --- a/app/util/Rpc.test.ts +++ b/app/util/Rpc.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/util/RpcUtils.test.ts b/app/util/RpcUtils.test.ts index 86fdcebac5..5bb6f14ad7 100644 --- a/app/util/RpcUtils.test.ts +++ b/app/util/RpcUtils.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/util/Storage.test.ts b/app/util/Storage.test.ts index f84879141e..db38fcb073 100644 --- a/app/util/Storage.test.ts +++ b/app/util/Storage.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/util/layout.test.ts b/app/util/layout.test.ts index d5ac546c30..f184e52d66 100644 --- a/app/util/layout.test.ts +++ b/app/util/layout.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/app/util/parseMessageDefinitionsCache.test.ts b/app/util/parseMessageDefinitionsCache.test.ts index 33d804d7ef..d6c020115c 100644 --- a/app/util/parseMessageDefinitionsCache.test.ts +++ b/app/util/parseMessageDefinitionsCache.test.ts @@ -1,3 +1,4 @@ +/** @jest-environment jsdom */ // This Source Code Form is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/ diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 0000000000..0749c0ba83 --- /dev/null +++ b/babel.config.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["@babel/preset-env", { "targets": { "node": "14" } }], + "@babel/preset-typescript", + "@babel/preset-react" + ], + "plugins": ["babel-plugin-transform-import-meta", "@babel/plugin-transform-modules-commonjs"] +} diff --git a/ci/jest.config.json b/ci/jest.config.json new file mode 100644 index 0000000000..587c5f884e --- /dev/null +++ b/ci/jest.config.json @@ -0,0 +1,5 @@ +{ + "testRunner": "jest-circus/runner", + "//": "Native find is slow because it does not exclude files: https://github.com/facebook/jest/pull/11264#issuecomment-825377579", + "haste": { "forceNodeFilesystemAPI": true } +} diff --git a/ci/jest.config.ts b/ci/jest.config.ts deleted file mode 100644 index 75c5e7ed8f..0000000000 --- a/ci/jest.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -export default { - preset: "ts-jest", - testRunner: "jest-circus/runner", -}; diff --git a/eslint-rules/foxglove-license-header.js b/eslint-rules/foxglove-license-header.js new file mode 100644 index 0000000000..6b5974de90 --- /dev/null +++ b/eslint-rules/foxglove-license-header.js @@ -0,0 +1,37 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/ + +// A custom eslint rule checking for the existence of a license header comment, while allowing +// certain prefixes that cannot be moved below the license header. + +const ALLOWED_PREFIX_LINES = ["/** @jest-environment jsdom */"]; +const LICENSE_HEADER = ` +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/ +`.trim(); + +module.exports = { + create: (context) => { + return { + Program: () => { + const source = context.getSourceCode().getText(); + const headerIndex = source.indexOf(LICENSE_HEADER); + const prefixLines = source.substring(0, headerIndex).trim().split("\n"); + const prefixLinesAreValid = prefixLines.every( + (line) => line === "" || ALLOWED_PREFIX_LINES.includes(line), + ); + if (headerIndex === -1 || !prefixLinesAreValid) { + context.report({ + message: "Missing license header", + loc: { start: 0, end: +source.indexOf("\n") + 1 }, + fix: () => { + return { range: [0, 0], text: LICENSE_HEADER + "\n" }; + }, + }); + } + }, + }; + }, +}; diff --git a/jest.config.json b/jest.config.json new file mode 100644 index 0000000000..d8b09e1f4d --- /dev/null +++ b/jest.config.json @@ -0,0 +1,8 @@ +{ + "//": "Our top level jest config to reference all the projects under our monorepo. We exclude the integration test since it involves performing a webpack build and doesn't support 'watch' or 'debug' in the same way", + "projects": [ + "/app/jest.config.json", + "/ci/jest.config.json", + "/packages/*/jest.config.json" + ] +} diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index fd0dbdbfbe..0000000000 --- a/jest.config.ts +++ /dev/null @@ -1,14 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -// Or top level jest config to reference all the projects under our monorepo -export default { - // We exclude the integration test since it involves performing a webpack build and - // doesn't support "watch" or "debug" in the same way - projects: [ - "/app/jest.config.ts", - "/ci/jest.config.ts", - "/packages/*/jest.config.ts", - ], -}; diff --git a/package.json b/package.json index 3b7d354dcf..5ce45357cf 100644 --- a/package.json +++ b/package.json @@ -23,11 +23,11 @@ "build:prod": "webpack --mode production --progress", "build:dev": "webpack --mode development --progress", "serve": "webpack serve --mode development --progress", - "lint": "TIMING=1 eslint --report-unused-disable-directives --fix .", - "lint:ci": "TIMING=1 NODE_OPTIONS='--max-old-space-size=4096' eslint --report-unused-disable-directives --config .eslintrc.ci.yaml .", - "test": "NODE_OPTIONS='-r ts-node/register' jest", - "test:debug": "NODE_OPTIONS='-r ts-node/register --inspect-brk' jest", - "test:watch": "NODE_OPTIONS='-r ts-node/register' jest --watch", + "lint": "TIMING=1 eslint --rulesdir eslint-rules --report-unused-disable-directives --fix .", + "lint:ci": "TIMING=1 NODE_OPTIONS='--max-old-space-size=4096' eslint --rulesdir eslint-rules --report-unused-disable-directives --config .eslintrc.ci.yaml .", + "test": "jest", + "test:debug": "NODE_OPTIONS='--inspect-brk' jest", + "test:watch": "jest --watch", "test:integration": "jest --forceExit --projects test", "package:win": "yarn package --win", "package:darwin": "yarn package --mac", @@ -47,15 +47,21 @@ }, "devDependencies": { "@actions/exec": "1.0.4", + "@babel/core": "7.13.16", + "@babel/preset-env": "7.13.15", + "@babel/preset-typescript": "7.13.0", "@foxglove/electron-socket": "workspace:packages/electron-socket", "@foxglove/velodyne-cloud": "workspace:packages/velodyne-cloud", "@jest/types": "26.6.2", "@pmmmwh/react-refresh-webpack-plugin": "0.5.0-beta.1", "@sentry/electron": "2.4.0", "@types/amplitude-js": "7.0.1", + "@types/babel__core": "^7", + "@types/babel__preset-env": "^7", "@types/case-sensitive-paths-webpack-plugin": "2.1.5", "@types/circular-dependency-plugin": "^5.0.2", "@types/electron-devtools-installer": "2.2.0", + "@types/jest": "26.0.22", "@types/license-checker": "^25.0.1", "@types/nearley": "2.11.1", "@types/pngjs": "^6", @@ -67,6 +73,7 @@ "@typescript-eslint/eslint-plugin": "4.21.0", "@typescript-eslint/parser": "4.21.0", "amplitude-js": "8.1.0", + "babel-jest": "27.0.0-next.8", "babel-plugin-transform-import-meta": "1.0.1", "browserify-zlib": "0.2.0", "circular-dependency-plugin": "5.2.2", @@ -84,16 +91,15 @@ "eslint-config-prettier": "8.1.0", "eslint-import-resolver-webpack": "0.13.0", "eslint-plugin-file-progress": "1.1.1", - "eslint-plugin-header": "github:amacneil/eslint-plugin-header#notemplate", "eslint-plugin-import": "2.22.1", "eslint-plugin-prettier": "3.3.1", "eslint-plugin-react": "7.23.1", "eslint-plugin-react-hooks": "4.2.0", "fork-ts-checker-webpack-plugin": "6.2.1", "html-webpack-plugin": "5.3.1", - "jest": "26.6.3", + "jest": "27.0.0-next.8", "jest-canvas-mock": "2.3.1", - "jest-circus": "26.6.3", + "jest-circus": "27.0.0-next.8", "license-checker": "25.0.1", "monaco-editor-webpack-plugin": "3.0.1", "nearley": "2.20.1", @@ -112,7 +118,6 @@ "spectron": "https://github.com/foxglove/spectron.git#commit=7f88e8fe148ee14b3efc14c3646c08c4ed0a6747", "string-replace-loader": "3.0.1", "style-loader": "2.0.0", - "ts-jest": "26.5.2", "ts-loader": "8.1.0", "ts-node": "9.1.1", "typescript": "4.2.2", diff --git a/packages/electron-socket/package.json b/packages/electron-socket/package.json index a340779dbc..624fdadff8 100644 --- a/packages/electron-socket/package.json +++ b/packages/electron-socket/package.json @@ -23,7 +23,7 @@ "scripts": {}, "devDependencies": { "@jest/types": "26.6.2", - "jest": "26.6.3", + "jest": "27.0.0-next.8", "tslib": "2.2.0", "typescript": "4.2.2" }, diff --git a/packages/ros1/jest.config.json b/packages/ros1/jest.config.json new file mode 100644 index 0000000000..044d520cd2 --- /dev/null +++ b/packages/ros1/jest.config.json @@ -0,0 +1,6 @@ +{ + "testRunner": "jest-circus/runner", + "testMatch": ["/src/**/*.test.ts"], + "//": "Native find is slow because it does not exclude files: https://github.com/facebook/jest/pull/11264#issuecomment-825377579", + "haste": { "forceNodeFilesystemAPI": true } +} diff --git a/packages/ros1/jest.config.ts b/packages/ros1/jest.config.ts deleted file mode 100644 index bb5377397f..0000000000 --- a/packages/ros1/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -export default { - preset: "ts-jest", - testRunner: "jest-circus/runner", - testMatch: ["/src/**/*.test.ts"], -}; diff --git a/packages/ros1/package.json b/packages/ros1/package.json index 1c7beab883..5da1347148 100644 --- a/packages/ros1/package.json +++ b/packages/ros1/package.json @@ -25,8 +25,8 @@ }, "devDependencies": { "@jest/types": "26.6.2", - "jest": "26.6.3", - "jest-circus": "26.6.3", + "jest": "27.0.0-next.8", + "jest-circus": "27.0.0-next.8", "tslib": "2.2.0", "typescript": "4.2.2" }, diff --git a/packages/rosmsg-deser/jest.config.json b/packages/rosmsg-deser/jest.config.json new file mode 100644 index 0000000000..587c5f884e --- /dev/null +++ b/packages/rosmsg-deser/jest.config.json @@ -0,0 +1,5 @@ +{ + "testRunner": "jest-circus/runner", + "//": "Native find is slow because it does not exclude files: https://github.com/facebook/jest/pull/11264#issuecomment-825377579", + "haste": { "forceNodeFilesystemAPI": true } +} diff --git a/packages/rosmsg-deser/jest.config.ts b/packages/rosmsg-deser/jest.config.ts deleted file mode 100644 index 75c5e7ed8f..0000000000 --- a/packages/rosmsg-deser/jest.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -export default { - preset: "ts-jest", - testRunner: "jest-circus/runner", -}; diff --git a/packages/rosmsg-deser/package.json b/packages/rosmsg-deser/package.json index 5a97d7684e..e2bd22fe24 100644 --- a/packages/rosmsg-deser/package.json +++ b/packages/rosmsg-deser/package.json @@ -5,7 +5,7 @@ "main": "src/index.ts", "module": "src/index.ts", "devDependencies": { - "jest": "26.6.3", + "jest": "27.0.0-next.8", "typescript": "4.2.2" } } diff --git a/packages/velodyne-cloud/jest.config.json b/packages/velodyne-cloud/jest.config.json new file mode 100644 index 0000000000..044d520cd2 --- /dev/null +++ b/packages/velodyne-cloud/jest.config.json @@ -0,0 +1,6 @@ +{ + "testRunner": "jest-circus/runner", + "testMatch": ["/src/**/*.test.ts"], + "//": "Native find is slow because it does not exclude files: https://github.com/facebook/jest/pull/11264#issuecomment-825377579", + "haste": { "forceNodeFilesystemAPI": true } +} diff --git a/packages/velodyne-cloud/jest.config.ts b/packages/velodyne-cloud/jest.config.ts deleted file mode 100644 index bb5377397f..0000000000 --- a/packages/velodyne-cloud/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -export default { - preset: "ts-jest", - testRunner: "jest-circus/runner", - testMatch: ["/src/**/*.test.ts"], -}; diff --git a/packages/velodyne-cloud/package.json b/packages/velodyne-cloud/package.json index 08829ef9cb..0367b06721 100644 --- a/packages/velodyne-cloud/package.json +++ b/packages/velodyne-cloud/package.json @@ -25,8 +25,8 @@ }, "devDependencies": { "@jest/types": "26.6.2", - "jest": "26.6.3", - "jest-circus": "26.6.3", + "jest": "27.0.0-next.8", + "jest-circus": "27.0.0-next.8", "kelonio": "0.6.0", "rosbag": "github:foxglove/rosbag.js#fc61125fbc01ff55698c5ed48987b2d9e7599572", "tslib": "2.2.0", diff --git a/packages/wasm-bz2/jest.config.json b/packages/wasm-bz2/jest.config.json new file mode 100644 index 0000000000..044d520cd2 --- /dev/null +++ b/packages/wasm-bz2/jest.config.json @@ -0,0 +1,6 @@ +{ + "testRunner": "jest-circus/runner", + "testMatch": ["/src/**/*.test.ts"], + "//": "Native find is slow because it does not exclude files: https://github.com/facebook/jest/pull/11264#issuecomment-825377579", + "haste": { "forceNodeFilesystemAPI": true } +} diff --git a/packages/wasm-bz2/jest.config.ts b/packages/wasm-bz2/jest.config.ts deleted file mode 100644 index 856392fb30..0000000000 --- a/packages/wasm-bz2/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -export default { - preset: "ts-jest", - globals: { - "ts-jest": { - babelConfig: { - plugins: ["babel-plugin-transform-import-meta", "@babel/plugin-transform-modules-commonjs"], - }, - }, - }, - testRunner: "jest-circus/runner", - testMatch: ["/src/**/*.test.ts"], -}; diff --git a/packages/wasm-bz2/package.json b/packages/wasm-bz2/package.json index 52d7c9fe82..f09180bb64 100644 --- a/packages/wasm-bz2/package.json +++ b/packages/wasm-bz2/package.json @@ -17,6 +17,6 @@ "module": "src/index.ts", "devDependencies": { "@types/emscripten": "1.39.4", - "jest": "26.6.3" + "jest": "27.0.0-next.8" } } diff --git a/packages/xmlrpc/jest.config.json b/packages/xmlrpc/jest.config.json new file mode 100644 index 0000000000..044d520cd2 --- /dev/null +++ b/packages/xmlrpc/jest.config.json @@ -0,0 +1,6 @@ +{ + "testRunner": "jest-circus/runner", + "testMatch": ["/src/**/*.test.ts"], + "//": "Native find is slow because it does not exclude files: https://github.com/facebook/jest/pull/11264#issuecomment-825377579", + "haste": { "forceNodeFilesystemAPI": true } +} diff --git a/packages/xmlrpc/jest.config.ts b/packages/xmlrpc/jest.config.ts deleted file mode 100644 index bb5377397f..0000000000 --- a/packages/xmlrpc/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -export default { - preset: "ts-jest", - testRunner: "jest-circus/runner", - testMatch: ["/src/**/*.test.ts"], -}; diff --git a/packages/xmlrpc/package.json b/packages/xmlrpc/package.json index aa7ced5e27..8a342b5fe1 100644 --- a/packages/xmlrpc/package.json +++ b/packages/xmlrpc/package.json @@ -33,8 +33,8 @@ "devDependencies": { "@jest/types": "26.6.2", "@types/sax": "^1.2.1", - "jest": "26.6.3", - "jest-circus": "26.6.3", + "jest": "27.0.0-next.8", + "jest-circus": "27.0.0-next.8", "tslib": "2.2.0", "typescript": "4.2.2" } diff --git a/test/jest.config.json b/test/jest.config.json new file mode 100644 index 0000000000..2dfb2d6e37 --- /dev/null +++ b/test/jest.config.json @@ -0,0 +1,6 @@ +{ + "globalSetup": "/globalSetup.ts", + "testRunner": "jest-circus/runner", + "//": "Native find is slow because it does not exclude files: https://github.com/facebook/jest/pull/11264#issuecomment-825377579", + "haste": { "forceNodeFilesystemAPI": true } +} diff --git a/test/jest.config.ts b/test/jest.config.ts deleted file mode 100644 index 7bc41f27d1..0000000000 --- a/test/jest.config.ts +++ /dev/null @@ -1,14 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/ - -export default { - preset: "ts-jest", - globals: { - "ts-jest": { - tsconfig: "/../tsconfig.json", - }, - }, - globalSetup: "/globalSetup.ts", - testRunner: "jest-circus/runner", -}; diff --git a/tsconfig.base.json b/tsconfig.base.json index 5fb65252e7..fd945c5c64 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -11,6 +11,9 @@ "esModuleInterop": true, "importHelpers": false, + // required for testing with babel-jest + babel-plugin-transform-typescript + "isolatedModules": true, + // webpack handles JS imports for us "allowJs": false, diff --git a/tsconfig.json b/tsconfig.json index f0fbf51ed1..c68c33b866 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,6 +8,7 @@ "./*.js", "./**/jest.config.ts", "./ci/**/*.ts", + "./eslint-rules/*.js", "./test/**/*.ts", "./resources/notarize.ts" ], diff --git a/yarn.lock b/yarn.lock index 7aa5ef252c..459395449a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -107,10 +107,10 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.13.0, @babel/compat-data@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/compat-data@npm:7.13.8" - checksum: e07e24737973206dd17439224945a354352ce0896d5a0bdd22fc637464eb650bdf6651a42352dc35fa8d55842ce1b66e545a1e3c096ee8f45947dcc32a44be44 +"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.13.15, @babel/compat-data@npm:^7.13.8": + version: 7.13.15 + resolution: "@babel/compat-data@npm:7.13.15" + checksum: 6abe95cbd36e54217cdcc51829e377cf31451ed0a64ff43cc82e0ce728d9e265990c5e079d5c3f9ee0afd49e20d6c90112fe2093ed0699c2ffc62f5172df24fa languageName: node linkType: hard @@ -138,38 +138,37 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.13.8, @babel/core@npm:^7.0.0, @babel/core@npm:^7.1.0, @babel/core@npm:^7.12.10, @babel/core@npm:^7.4.5, @babel/core@npm:^7.7.5": - version: 7.13.8 - resolution: "@babel/core@npm:7.13.8" +"@babel/core@npm:7.13.16, @babel/core@npm:^7.0.0, @babel/core@npm:^7.1.0, @babel/core@npm:^7.12.10, @babel/core@npm:^7.4.5, @babel/core@npm:^7.7.5": + version: 7.13.16 + resolution: "@babel/core@npm:7.13.16" dependencies: "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.0 - "@babel/helper-compilation-targets": ^7.13.8 - "@babel/helper-module-transforms": ^7.13.0 - "@babel/helpers": ^7.13.0 - "@babel/parser": ^7.13.4 + "@babel/generator": ^7.13.16 + "@babel/helper-compilation-targets": ^7.13.16 + "@babel/helper-module-transforms": ^7.13.14 + "@babel/helpers": ^7.13.16 + "@babel/parser": ^7.13.16 "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 + "@babel/traverse": ^7.13.15 + "@babel/types": ^7.13.16 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.1.2 - lodash: ^4.17.19 semver: ^6.3.0 source-map: ^0.5.0 - checksum: f3c61e635aa41e127775d1191a65aedd4cf90008625eb93ddbd86214ebae6b0793cefd10503b2a4df8aa510d0e1108dfd15e29bde9bbffc899a50015f56f49c4 + checksum: 1a53b70629fae3c5b714af1c582a92ffbb1a87d0f8fe705292faed6281476bf0a35ffa19d9d28ad791610d203fdbb8928e28aedb52a02023a561caaa44a9ee61 languageName: node linkType: hard -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.12.5, @babel/generator@npm:^7.13.0": - version: 7.13.9 - resolution: "@babel/generator@npm:7.13.9" +"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.12.5, @babel/generator@npm:^7.13.16, @babel/generator@npm:^7.7.2": + version: 7.13.16 + resolution: "@babel/generator@npm:7.13.16" dependencies: - "@babel/types": ^7.13.0 + "@babel/types": ^7.13.16 jsesc: ^2.5.1 source-map: ^0.5.0 - checksum: d9cf7db910dd703a55c3ba147a8024564d51de06f5e3e61aef6ca197bcd80a6cb0a633fe4688c8c9f6226c70ee6f32a747050a8e420972b45cc98a6b3fc5ae66 + checksum: 299bf875ea550f52d157260804bf5b1acdc27269ae7287e53a1a5a602ff6052a466f4a4c03dc7377b3f2d5240eea5ee92162e2a943acb4d28e017ac89ab89e9d languageName: node linkType: hard @@ -192,17 +191,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/helper-compilation-targets@npm:7.13.8" +"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.13, @babel/helper-compilation-targets@npm:^7.13.16, @babel/helper-compilation-targets@npm:^7.13.8": + version: 7.13.16 + resolution: "@babel/helper-compilation-targets@npm:7.13.16" dependencies: - "@babel/compat-data": ^7.13.8 + "@babel/compat-data": ^7.13.15 "@babel/helper-validator-option": ^7.12.17 browserslist: ^4.14.5 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: dbee371e5ff226bb03a036d1af858f038ab6e71fac1ff5014bf69411b71af187bcdb0e49d5352ec5ef5e83186c9b88ee83b74295ba900691095b31017ec59f89 + checksum: baa1e4cdd562996c6af0a8cedb097cd72f67c44577faf4b657015f477d4930ebcc40ca21dc1e5fcffe91a1517de6e4114bc21f805ca701dfac2ddd2e9b006228 languageName: node linkType: hard @@ -251,6 +250,24 @@ __metadata: languageName: node linkType: hard +"@babel/helper-define-polyfill-provider@npm:^0.2.0": + version: 0.2.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.2.0" + dependencies: + "@babel/helper-compilation-targets": ^7.13.0 + "@babel/helper-module-imports": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/traverse": ^7.13.0 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + semver: ^6.1.2 + peerDependencies: + "@babel/core": ^7.4.0-0 + checksum: 575785f62b10ee5cd9d8c092b6077f8bad8eed42ac50a8d55b82430c6958f94da11f5b20de650e31b400f7c7a0af08b6e4476669fd2a3b24414d1a9db89d531f + languageName: node + linkType: hard + "@babel/helper-explode-assignable-expression@npm:^7.12.13": version: 7.13.0 resolution: "@babel/helper-explode-assignable-expression@npm:7.13.0" @@ -290,38 +307,37 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.13.0" +"@babel/helper-member-expression-to-functions@npm:^7.13.0, @babel/helper-member-expression-to-functions@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-member-expression-to-functions@npm:7.13.12" dependencies: - "@babel/types": ^7.13.0 - checksum: 9baaab9910a96c0f201b71c6cc39037dce5d32a321f61347ac489ddbef2bcbd232adcadeaa8e44d8c9a7216226c009b57f9d65697d90d7a8ed2c27682932d959 + "@babel/types": ^7.13.12 + checksum: 2c075f72e5bda1432c74484548272577485d45c4d6c7cc9e84c5d053eaa6e0890e93c9b018bab97f65cbb81ac04dd9cdca73d5ae0e94b03cfc00d10972b99185 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-module-imports@npm:7.12.13" +"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-module-imports@npm:7.13.12" dependencies: - "@babel/types": ^7.12.13 - checksum: 9832436fb44361b2d7a0b7d99f18b7c0529afb94202ab92b578147aba062447e9a1cff33bc95db33189686fa922c62f23da296870958eee2f862b3aa89809159 + "@babel/types": ^7.13.12 + checksum: 4d1d3364bec0820e50c782b5a5c81e7987c260c14772bc594ca8dbfdb3b6e43bd9b4e5071fd2a5f777c822dc7440781fa904f643e2069755db9ba5033cb2beac languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-module-transforms@npm:7.13.0" +"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.13.14": + version: 7.13.14 + resolution: "@babel/helper-module-transforms@npm:7.13.14" dependencies: - "@babel/helper-module-imports": ^7.12.13 - "@babel/helper-replace-supers": ^7.13.0 - "@babel/helper-simple-access": ^7.12.13 + "@babel/helper-module-imports": ^7.13.12 + "@babel/helper-replace-supers": ^7.13.12 + "@babel/helper-simple-access": ^7.13.12 "@babel/helper-split-export-declaration": ^7.12.13 "@babel/helper-validator-identifier": ^7.12.11 "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - lodash: ^4.17.19 - checksum: b7e45c67eeaca488fa7a7bb0afebaec25b91f94cb04d32229ef799bd3a31ef5b566737fefd139b20c6525817528816e43bf492372c77e352e2a0e4d03b1fe21b + "@babel/traverse": ^7.13.13 + "@babel/types": ^7.13.14 + checksum: 576e86d0d41674e01703754a16e94495e424c7972f932e1eedb30206092b410b3659c0d0a7a06c61e024cee9b6020215db4732903ae49ebbd19d813feb0a90da languageName: node linkType: hard @@ -359,24 +375,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-replace-supers@npm:7.13.0" +"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.0, @babel/helper-replace-supers@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-replace-supers@npm:7.13.12" dependencies: - "@babel/helper-member-expression-to-functions": ^7.13.0 + "@babel/helper-member-expression-to-functions": ^7.13.12 "@babel/helper-optimise-call-expression": ^7.12.13 "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: b32ab3f4d6a4e7f80c361eb9c0a001c2ae498f885248cb567c8de2475fb3dcbdf7ddd32a9e9a926abf55cf4f46faad7ceebfd3d035dea5508c3d9ba55d4083cc + "@babel/types": ^7.13.12 + checksum: 38b79cb56a9a5324e32567660fcafbac4efae6f2c2c2ef048deb2d022476fc1c7acfda5ab841f7135d07b4f39e62142f9d253cfe824232030432c86f94d226f1 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-simple-access@npm:7.12.13" +"@babel/helper-simple-access@npm:^7.12.13, @babel/helper-simple-access@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-simple-access@npm:7.13.12" dependencies: - "@babel/types": ^7.12.13 - checksum: 34f19da4b8129006d660ff6d704d493a447852268a1360727a7de32087c7cead4c2548a3bb73c8fee7afa2dcad85087d53f9b0cabe071f3bf5cc27f35de9e7c8 + "@babel/types": ^7.13.12 + checksum: eff532a1572a4ac562c5918a409871ddf9baee9ece197b98a54622184d3b9e01bdd465597f27ca3d452e71638c913a14819cf261dc095a466032dfd92a88bc73 languageName: node linkType: hard @@ -424,14 +440,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helpers@npm:7.13.0" +"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.13.16": + version: 7.13.17 + resolution: "@babel/helpers@npm:7.13.17" dependencies: "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: 6c435aefe108e85b999570eed9fc2ec10944cb1ed4c3ff6656936c90a6f986174bd5c80ec48ecbbb7042e5eca5761364f484d7e0238a3aa77c2f5099dcac8df0 + "@babel/traverse": ^7.13.17 + "@babel/types": ^7.13.17 + checksum: 3e2b18d6bad7e7fa4e268a4e28f7ba5a15893efd39a57af9ae38613fe11bf4cff03cb2a56d4e6e18eeabe0934bfa689432ce3578bf59bb43bf926c956771b4b4 languageName: node linkType: hard @@ -446,25 +462,38 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.13.0, @babel/parser@npm:^7.13.4": - version: 7.13.9 - resolution: "@babel/parser@npm:7.13.9" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.7.2": + version: 7.13.16 + resolution: "@babel/parser@npm:7.13.16" bin: parser: ./bin/babel-parser.js - checksum: de61d40db87a09a2bf230b06cd33121e25a650cf82efb3af7d348e9e5d5ca9426fa76f264eb7c9c5f16a11d17cf66adbe2f807d5a6126c370017ea4ca506fcea + checksum: 4f02b226686ad98684128d64082388c8af3a2cd0bb986e8eb0339235d99f9a6bb55ba225da953291d975f341fe6d5d5dc006706d515f999be5ad49dd99f815e3 languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.13.8" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.13.12" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 + "@babel/plugin-proposal-optional-chaining": ^7.13.12 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: ad0b508a5c3f3436ff0ff598b7aad63686bfe7f846b19c862c09397bc987ab9244b866204440496cf6d1b7ec07ea01a6fe95fd3067dbdf58ec48d9d4d4d9a440 + languageName: node + linkType: hard + +"@babel/plugin-proposal-async-generator-functions@npm:^7.13.15": + version: 7.13.15 + resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.13.15" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/helper-remap-async-to-generator": ^7.13.0 "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 56610a31dcd26e8613a715dfd7ed2308ce6e3a8357325e3562996468104aae45c4780db373d8b12b659b56175e9ace2e078420838ae3246573499a5ab74b1632 + checksum: cfef2d2d97f4dee2930278ff8596940d3fef07522cf88b6635dd671cee055d23bd196eeba731600f7edb950e65ba915e363e5555982598087561e276a4fe6fce languageName: node linkType: hard @@ -617,16 +646,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.12.7, @babel/plugin-proposal-optional-chaining@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.13.8" +"@babel/plugin-proposal-optional-chaining@npm:^7.12.7, @babel/plugin-proposal-optional-chaining@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.13.12" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8295f1ceda1bc40eb281b611eeebc087db843de318bbffeecd245b0a0ffe7df723ec99c39579d2e1089af2694abde938f30defb16c5f909423fa6d57a7155598 + checksum: 8663cfbf5cdfe41f8765976b94de9525c223085d53bb48bd481a03539a7680f2aa3b3fd525d80144e1c1c646cbad817fea7ef8da573bbf0600ddde32fab7420b languageName: node linkType: hard @@ -863,7 +892,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.12.13": +"@babel/plugin-syntax-typescript@npm:^7.12.13, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.12.13 resolution: "@babel/plugin-syntax-typescript@npm:7.12.13" dependencies: @@ -1210,14 +1239,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-regenerator@npm:7.12.13" +"@babel/plugin-transform-regenerator@npm:^7.13.15": + version: 7.13.15 + resolution: "@babel/plugin-transform-regenerator@npm:7.13.15" dependencies: regenerator-transform: ^0.14.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4ee616942c712a94720b8613fa027db98bd08cfc677bc2d9bf444a40989571db269d502fcb4851d2959c34c2819e767ecd48fa61c572b3814cfe65c8a46ad0dd + checksum: ac1f6bda7e72c073b0957c543cba8a29a40d561582c17d938d4cd36ff0c441adfa2caa21dd80cf3be1674f18cca4cd936be29f8df659fbfb020b58f45c7787fa languageName: node linkType: hard @@ -1324,15 +1353,16 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.12.11": - version: 7.13.9 - resolution: "@babel/preset-env@npm:7.13.9" +"@babel/preset-env@npm:7.13.15, @babel/preset-env@npm:^7.12.11": + version: 7.13.15 + resolution: "@babel/preset-env@npm:7.13.15" dependencies: - "@babel/compat-data": ^7.13.8 - "@babel/helper-compilation-targets": ^7.13.8 + "@babel/compat-data": ^7.13.15 + "@babel/helper-compilation-targets": ^7.13.13 "@babel/helper-plugin-utils": ^7.13.0 "@babel/helper-validator-option": ^7.12.17 - "@babel/plugin-proposal-async-generator-functions": ^7.13.8 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.13.12 + "@babel/plugin-proposal-async-generator-functions": ^7.13.15 "@babel/plugin-proposal-class-properties": ^7.13.0 "@babel/plugin-proposal-dynamic-import": ^7.13.8 "@babel/plugin-proposal-export-namespace-from": ^7.12.13 @@ -1342,7 +1372,7 @@ __metadata: "@babel/plugin-proposal-numeric-separator": ^7.12.13 "@babel/plugin-proposal-object-rest-spread": ^7.13.8 "@babel/plugin-proposal-optional-catch-binding": ^7.13.8 - "@babel/plugin-proposal-optional-chaining": ^7.13.8 + "@babel/plugin-proposal-optional-chaining": ^7.13.12 "@babel/plugin-proposal-private-methods": ^7.13.0 "@babel/plugin-proposal-unicode-property-regex": ^7.12.13 "@babel/plugin-syntax-async-generators": ^7.8.4 @@ -1380,7 +1410,7 @@ __metadata: "@babel/plugin-transform-object-super": ^7.12.13 "@babel/plugin-transform-parameters": ^7.13.0 "@babel/plugin-transform-property-literals": ^7.12.13 - "@babel/plugin-transform-regenerator": ^7.12.13 + "@babel/plugin-transform-regenerator": ^7.13.15 "@babel/plugin-transform-reserved-words": ^7.12.13 "@babel/plugin-transform-shorthand-properties": ^7.12.13 "@babel/plugin-transform-spread": ^7.13.0 @@ -1390,15 +1420,15 @@ __metadata: "@babel/plugin-transform-unicode-escapes": ^7.12.13 "@babel/plugin-transform-unicode-regex": ^7.12.13 "@babel/preset-modules": ^0.1.4 - "@babel/types": ^7.13.0 - babel-plugin-polyfill-corejs2: ^0.1.4 - babel-plugin-polyfill-corejs3: ^0.1.3 - babel-plugin-polyfill-regenerator: ^0.1.2 + "@babel/types": ^7.13.14 + babel-plugin-polyfill-corejs2: ^0.2.0 + babel-plugin-polyfill-corejs3: ^0.2.0 + babel-plugin-polyfill-regenerator: ^0.2.0 core-js-compat: ^3.9.0 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 55ef45c648da2cf98d703a3f5128eeb883285580f02717059c1ac708ac8cb291e40705838dfdd4f4c59da3c96b816c13e2d2d0d9a7490e3bace4cf41ec8ba151 + checksum: bcab2e9ce31ba4c6d0d56ff4afc1f6a6365952f2ab1001bad91dec4ad72b2b7578cdecc214b173caf0a7bf19bd075844294786432d56113aefa0e14b61d67d79 languageName: node linkType: hard @@ -1444,7 +1474,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.12.7": +"@babel/preset-typescript@npm:7.13.0, @babel/preset-typescript@npm:^7.12.7": version: 7.13.0 resolution: "@babel/preset-typescript@npm:7.13.0" dependencies: @@ -1502,31 +1532,29 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.4.5": - version: 7.13.0 - resolution: "@babel/traverse@npm:7.13.0" +"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.13.13, @babel/traverse@npm:^7.13.15, @babel/traverse@npm:^7.13.17, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.2": + version: 7.13.17 + resolution: "@babel/traverse@npm:7.13.17" dependencies: "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.0 + "@babel/generator": ^7.13.16 "@babel/helper-function-name": ^7.12.13 "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/parser": ^7.13.0 - "@babel/types": ^7.13.0 + "@babel/parser": ^7.13.16 + "@babel/types": ^7.13.17 debug: ^4.1.0 globals: ^11.1.0 - lodash: ^4.17.19 - checksum: e5d1b690157da325b5bea98e472f4df0fff16048242a70880e2da7939b005ccd5b63d2b4527e203cfc71a422da0fa513c0ad84114bff002d583ebd7dbd2c8576 + checksum: e50e3a97a5704ed76558c00a632fbbee888a864054772361323075f436b3e767b7441c53fec34333a0c5ed2a88b856c76de8770932a050bb6a1553ece998b0c1 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.17, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.13.0 - resolution: "@babel/types@npm:7.13.0" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.17, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12, @babel/types@npm:^7.13.14, @babel/types@npm:^7.13.16, @babel/types@npm:^7.13.17, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.13.17 + resolution: "@babel/types@npm:7.13.17" dependencies: "@babel/helper-validator-identifier": ^7.12.11 - lodash: ^4.17.19 to-fast-properties: ^2.0.0 - checksum: a47357647a92c08ee2f5059210d37fd7fe190e8d4ef71dd97ba61c6ca7b7e979660bc8ba00fdc51249c037199b634dd984fde8d7a622fdd5e3e2161fe65e94c3 + checksum: d75193ea37008a039b2383f8ba3cbe492a092550c6656721f6aa76bd8565a9286b56165a0c82ea5a8423d6f65bd803eb2c73561a5fc7a098b97d19f692bc79a6 languageName: node linkType: hard @@ -2018,6 +2046,7 @@ __metadata: "@storybook/addon-essentials": 6.2.5 "@storybook/builder-webpack5": 6.2.5 "@storybook/react": 6.2.5 + "@testing-library/dom": 7.30.1 "@testing-library/react": 11.2.6 "@testing-library/react-hooks": 5.1.1 "@types/argparse": ^2.0.5 @@ -2148,7 +2177,7 @@ __metadata: dependencies: "@jest/types": 26.6.2 eventemitter3: 4.0.7 - jest: 26.6.3 + jest: 27.0.0-next.8 multicast-dns: 7.2.2 tslib: 2.2.0 typescript: 4.2.2 @@ -2193,8 +2222,8 @@ __metadata: "@foxglove/xmlrpc": "workspace:packages/xmlrpc" "@jest/types": 26.6.2 eventemitter3: 4.0.7 - jest: 26.6.3 - jest-circus: 26.6.3 + jest: 27.0.0-next.8 + jest-circus: 27.0.0-next.8 rosbag: "github:foxglove/rosbag.js#fc61125fbc01ff55698c5ed48987b2d9e7599572" tslib: 2.2.0 typescript: 4.2.2 @@ -2206,7 +2235,7 @@ __metadata: version: 0.0.0-use.local resolution: "@foxglove/rosmsg-deser@workspace:packages/rosmsg-deser" dependencies: - jest: 26.6.3 + jest: 27.0.0-next.8 typescript: 4.2.2 languageName: unknown linkType: soft @@ -2216,8 +2245,8 @@ __metadata: resolution: "@foxglove/velodyne-cloud@workspace:packages/velodyne-cloud" dependencies: "@jest/types": 26.6.2 - jest: 26.6.3 - jest-circus: 26.6.3 + jest: 27.0.0-next.8 + jest-circus: 27.0.0-next.8 kelonio: 0.6.0 rosbag: "github:foxglove/rosbag.js#fc61125fbc01ff55698c5ed48987b2d9e7599572" tslib: 2.2.0 @@ -2230,7 +2259,7 @@ __metadata: resolution: "@foxglove/wasm-bz2@workspace:packages/wasm-bz2" dependencies: "@types/emscripten": 1.39.4 - jest: 26.6.3 + jest: 27.0.0-next.8 languageName: unknown linkType: soft @@ -2242,8 +2271,8 @@ __metadata: "@jest/types": 26.6.2 "@types/sax": ^1.2.1 byte-base64: 1.1.0 - jest: 26.6.3 - jest-circus: 26.6.3 + jest: 27.0.0-next.8 + jest-circus: 27.0.0-next.8 sax: 1.2.4 tslib: 2.2.0 typescript: 4.2.2 @@ -2272,102 +2301,108 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/console@npm:26.6.2" +"@jest/console@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/console@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^26.6.2 - jest-util: ^26.6.2 + jest-message-util: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 slash: ^3.0.0 - checksum: 72920a893e4a622ce96786eb1d3f6ef0c88c9d1ec32fffbde4e25f582b5f1ccd5f5b7a370c0b1a4917fb74c046467f43422c0039c497df4b307527910759e0a5 + checksum: 21362d8f9f27822b3c3aa5407b4f0e38b73a3d1cce8d16d9ca5d15c53deb2a47d35cbbfc7993f1bd2ad06e90b67ad50b16032ff6ef86929b0b50970e24f0e7b1 languageName: node linkType: hard -"@jest/core@npm:^26.6.3": - version: 26.6.3 - resolution: "@jest/core@npm:26.6.3" +"@jest/core@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/core@npm:27.0.0-next.8" dependencies: - "@jest/console": ^26.6.2 - "@jest/reporters": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.8 + "@jest/reporters": ^27.0.0-next.8 + "@jest/test-result": ^27.0.0-next.8 + "@jest/transform": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 + emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-changed-files: ^26.6.2 - jest-config: ^26.6.3 - jest-haste-map: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-resolve-dependencies: ^26.6.3 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - jest-watcher: ^26.6.2 - micromatch: ^4.0.2 + jest-changed-files: ^27.0.0-next.8 + jest-config: ^27.0.0-next.8 + jest-haste-map: ^27.0.0-next.8 + jest-message-util: ^27.0.0-next.8 + jest-regex-util: ^27.0.0-next.0 + jest-resolve: ^27.0.0-next.8 + jest-resolve-dependencies: ^27.0.0-next.8 + jest-runner: ^27.0.0-next.8 + jest-runtime: ^27.0.0-next.8 + jest-snapshot: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + jest-validate: ^27.0.0-next.8 + jest-watcher: ^27.0.0-next.8 + micromatch: ^4.0.4 p-each-series: ^2.1.0 rimraf: ^3.0.0 slash: ^3.0.0 strip-ansi: ^6.0.0 - checksum: e0d35e40fcbda21997dbc126722db92f8d534926c9bcf4a30ee79aa772e40ead2fefd405866e3364bff7ee50b12f03705c3fea5491b77807091961b2c3a0d65e + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 8efa2817bc345c2164d5f61403b4fd2d26ed61c3e78f374a1b8404169ae83734f4584a73ba6eb523b1b1c4a1cf59a8fcf946e2fcefc093dd226952e292241709 languageName: node linkType: hard -"@jest/environment@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/environment@npm:26.6.2" +"@jest/environment@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/environment@npm:27.0.0-next.8" dependencies: - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/fake-timers": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" - jest-mock: ^26.6.2 - checksum: a4f426546801e79d2f5d1a516d80c330ccbe1638f7a7705f65110ac33f8a3ded08ccef75ad648610618122f2bfeba34e0c1e616eccc219a315956d63ff30d8fc + jest-mock: ^27.0.0-next.8 + checksum: dde346f855618187dbd7682c52014e150973223bff31ec6fbf679319c812bbeae356d5e61b80bbc47576612be7a6367e32623268b1bf8be82118b4019f778b9f languageName: node linkType: hard -"@jest/fake-timers@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/fake-timers@npm:26.6.2" +"@jest/fake-timers@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/fake-timers@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 - "@sinonjs/fake-timers": ^6.0.1 + "@jest/types": ^27.0.0-next.8 + "@sinonjs/fake-timers": ^7.0.2 "@types/node": "*" - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - checksum: a82aa6d2f31d5e9958484b32e4714cb2ebca6ce6baf590c29505c8eea638663bf27f27b98a30ab574023cb15ecffbe70dc75d14694d76c4ccc78bee37d2ec1d1 + jest-message-util: ^27.0.0-next.8 + jest-mock: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + checksum: 3163daa842e3f4d0c5150062a34ecacfbc3e23d53752f957c1986845db3be3ada22144c413cfdf8528309dff29960c33791accf837f7000d71a408e5efdec39f languageName: node linkType: hard -"@jest/globals@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/globals@npm:26.6.2" +"@jest/globals@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/globals@npm:27.0.0-next.8" dependencies: - "@jest/environment": ^26.6.2 - "@jest/types": ^26.6.2 - expect: ^26.6.2 - checksum: d8f68a24adf87f6e32ba34ec884502ec067ed79a2855852ed64daa50383a53daf2b97487dd049e77c6fd6cade28b32f8cad4f0a2d02ce6b8aa23f95a136db8a7 + "@jest/environment": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 + expect: ^27.0.0-next.8 + checksum: 365886e38e7edccd11ed74580a0cecf3dda9601dfa8756a5018b473fe4bd7abc30564c92523870c77582eec0e1886083597a4666194259fba2b91844078e77e3 languageName: node linkType: hard -"@jest/reporters@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/reporters@npm:26.6.2" +"@jest/reporters@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/reporters@npm:27.0.0-next.8" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.8 + "@jest/test-result": ^27.0.0-next.8 + "@jest/transform": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 exit: ^0.1.2 @@ -2378,56 +2413,57 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^26.6.2 - jest-resolve: ^26.6.2 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - node-notifier: ^8.0.0 + jest-haste-map: ^27.0.0-next.8 + jest-resolve: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + jest-worker: ^27.0.0-next.8 slash: ^3.0.0 source-map: ^0.6.0 string-length: ^4.0.1 terminal-link: ^2.0.0 v8-to-istanbul: ^7.0.0 - dependenciesMeta: + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: node-notifier: optional: true - checksum: 86ed8563dd4862de79c1b4f2e529a9a471d856b44aa66069c91b406d4c32ea70d909757797f99fc8d14a7eb2bd95286bd716346e289a92dba243e4b9eddef537 + checksum: 9b12d5f6fc0b19c7c98e61a8bd208ac44d8f54351437f0fe3b5296db6a176cb7db1f0c340684d75959501adb57f890d5f8c52bbea6f7cf0d0a93fec4265a2f0c languageName: node linkType: hard -"@jest/source-map@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/source-map@npm:26.6.2" +"@jest/source-map@npm:^27.0.0-next.3": + version: 27.0.0-next.3 + resolution: "@jest/source-map@npm:27.0.0-next.3" dependencies: callsites: ^3.0.0 graceful-fs: ^4.2.4 source-map: ^0.6.0 - checksum: 9a6d3e650660229fadfcf4d9789cdf99d645d3827b05cbce7676f39d19af2ab00cca728420ef188cf44b92289e06e2a5f3e5299085e3ae080cc0472ea1fa4cc9 + checksum: 359598f7458d13182c42d72a54c5eeefee7f6793cfe0319a5c802b7cc8036e0b7e8aeac2bb901bb7af4de5df891beaf6c432fb21152f004fd4d53b1850bf7dd1 languageName: node linkType: hard -"@jest/test-result@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/test-result@npm:26.6.2" +"@jest/test-result@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/test-result@npm:27.0.0-next.8" dependencies: - "@jest/console": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 0ecd35212bb19f2dee97d795193897780729c446739715a52cb37ed248020ad6a32bc2e9563812f56028be19c651237403c7dfec9ed967f443d9afcc385dd9dc + checksum: 58c1be413c217708e002ba1229cb20121f8197134eb0da7fa9439efaa854af5d1de35eb09b623ac50f63629712c769b8bb907f82a4e8d5a65ae072dcc7322c53 languageName: node linkType: hard -"@jest/test-sequencer@npm:^26.6.3": - version: 26.6.3 - resolution: "@jest/test-sequencer@npm:26.6.3" +"@jest/test-sequencer@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/test-sequencer@npm:27.0.0-next.8" dependencies: - "@jest/test-result": ^26.6.2 + "@jest/test-result": ^27.0.0-next.8 graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - checksum: c0c2c7917a0b6e25414b0ed570701c9cd5b2ba18fe0c55ac3a2d53ccf6aeeaf7ec388c14c78d13c27c4a7e7ee87bdca52d09d820c0ebf80a3e7d47f3fc52e9ef + jest-haste-map: ^27.0.0-next.8 + jest-runner: ^27.0.0-next.8 + jest-runtime: ^27.0.0-next.8 + checksum: b1800a127f081a148ac52da1e7cf8a4feb0d22ba87015996ca787c78c2b02c63251e94a66f0de27bce4ad75a422f56725d845a1e89015d59c19a74be2a30e9f0 languageName: node linkType: hard @@ -2454,6 +2490,29 @@ __metadata: languageName: node linkType: hard +"@jest/transform@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/transform@npm:27.0.0-next.8" + dependencies: + "@babel/core": ^7.1.0 + "@jest/types": ^27.0.0-next.8 + babel-plugin-istanbul: ^6.0.0 + chalk: ^4.0.0 + convert-source-map: ^1.4.0 + fast-json-stable-stringify: ^2.0.0 + graceful-fs: ^4.2.4 + jest-haste-map: ^27.0.0-next.8 + jest-regex-util: ^27.0.0-next.0 + jest-util: ^27.0.0-next.8 + micromatch: ^4.0.4 + pirates: ^4.0.1 + slash: ^3.0.0 + source-map: ^0.6.1 + write-file-atomic: ^3.0.0 + checksum: c54589f4c2fbac74af62b534549b60a401d5799e9cafa0d37cac7c8d1ff3e6cadb61e084ee6eb8cd2aa72536c62c4591e126784a546baf4eb67104b114389acd + languageName: node + linkType: hard + "@jest/types@npm:26.6.2, @jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -2467,6 +2526,19 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "@jest/types@npm:27.0.0-next.8" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^16.0.0 + chalk: ^4.0.0 + checksum: 4c9a6b4cb4863d12ad70f4fd4528cce2d7f7e5cd628a2c589504f85c6185047440dbc857b95a0ad02a4971ef8097e81e449656e6fa2037fbd5ebe89348a1ad75 + languageName: node + linkType: hard + "@malept/cross-spawn-promise@npm:^1.1.0": version: 1.1.1 resolution: "@malept/cross-spawn-promise@npm:1.1.1" @@ -3055,12 +3127,12 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^6.0.1": - version: 6.0.1 - resolution: "@sinonjs/fake-timers@npm:6.0.1" +"@sinonjs/fake-timers@npm:^7.0.2": + version: 7.0.5 + resolution: "@sinonjs/fake-timers@npm:7.0.5" dependencies: "@sinonjs/commons": ^1.7.0 - checksum: 64458b908773638dda08b555a00e6fbbbc679735348291dc1b7f437ada2f60242537fdc48e4ee82d2573d86984ec87e755b66a96c0ed9ebf0f46b4c6687ccde2 + checksum: 5cc43301d3d46affdace077854ecffd299b80ab3a438bf34f21b6d6d27e0be636ba475397d12fd5b8561bd30679d0597f9d7e8b5e0c82ad57a6c9b49e366e9b4 languageName: node linkType: hard @@ -4024,9 +4096,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^7.28.1": - version: 7.30.0 - resolution: "@testing-library/dom@npm:7.30.0" +"@testing-library/dom@npm:7.30.1, @testing-library/dom@npm:^7.28.1": + version: 7.30.1 + resolution: "@testing-library/dom@npm:7.30.1" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 @@ -4036,7 +4108,7 @@ __metadata: dom-accessibility-api: ^0.5.4 lz-string: ^1.4.4 pretty-format: ^26.6.2 - checksum: 5af9f762ff43265cf9c36bb62bba37d73da2858a6149a2f11f159c61bfb46d60f66d9c7c10ab9f201cf0749c9e0039494005379355b0a0d494c60f6b759cea34 + checksum: a886bdb20955e5f029fa10932184128dd701dac866dc8016e66f339d89ab5b63185c3584ea5eb2a5ffbcb779bad6952f1f0933cc47f6772450211cd85b55861e languageName: node linkType: hard @@ -4104,16 +4176,16 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.7": - version: 7.1.12 - resolution: "@types/babel__core@npm:7.1.12" +"@types/babel__core@npm:^7, @types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": + version: 7.1.14 + resolution: "@types/babel__core@npm:7.1.14" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: e2642b77b89af41254a19d85b6cc5b1096f9825aa2b6534d5426cee7fbf6d90cfeceb5c1621f233d32dc1925a9fe88c317e412f81a061cf7239dbd4e2dd413e4 + checksum: e0212770e1cd520b8ad241642e9f99ef20b5c609c157ffe154c42e136c85f3c3f598ad7bfd452fda8abb304c483d6bce92de0b8ed0612f9f1c57b6c4a18da7b3 languageName: node linkType: hard @@ -4126,6 +4198,13 @@ __metadata: languageName: node linkType: hard +"@types/babel__preset-env@npm:^7": + version: 7.9.1 + resolution: "@types/babel__preset-env@npm:7.9.1" + checksum: bb76f246000f396b1542a331bcdb62d60f49d2cf78208d44b156cbfd567f9c941614f0ed1aee8d494091455580dc3629dfddf08e73e13661339603c11822145f + languageName: node + linkType: hard + "@types/babel__template@npm:*": version: 7.4.0 resolution: "@types/babel__template@npm:7.4.0" @@ -4502,13 +4581,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:26.x": - version: 26.0.20 - resolution: "@types/jest@npm:26.0.20" +"@types/jest@npm:26.0.22": + version: 26.0.22 + resolution: "@types/jest@npm:26.0.22" dependencies: jest-diff: ^26.0.0 pretty-format: ^26.0.0 - checksum: 221e39c7c9ce8d71ae4b2ba6abeef1a5b04f1cd96419b9fbbb65534bef4c4215b650561183073dcf47584ff1888d1f4fa7d2af2a38492b7feb9a3bfdcd24c44f + checksum: 4c98ed058522f6cc74bcb47b8b7b104b77b2d4e42e087171f3d2d3ae5338c21f43ec26f2a186bc229c1bd72c3f776ad07faba837f0ec27f22cf94e154516c0b3 languageName: node linkType: hard @@ -4716,7 +4795,7 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:2.2.3, @types/prettier@npm:^2.0.0": +"@types/prettier@npm:2.2.3, @types/prettier@npm:^2.1.5": version: 2.2.3 resolution: "@types/prettier@npm:2.2.3" checksum: b7e80288f9f776caca84391a7a217b8baac6b4fce00bb9701af69299d465cb8faf17466f0af0803970c74d2c191767ca729a6d21a2f7e2ce552d1ef6cc0d653a @@ -5196,6 +5275,15 @@ __metadata: languageName: node linkType: hard +"@types/yargs@npm:^16.0.0": + version: 16.0.1 + resolution: "@types/yargs@npm:16.0.1" + dependencies: + "@types/yargs-parser": "*" + checksum: 7b141b6a9efe2da5af054b022f2fbfa3a34d664f1db384babc567b20e9935ac18924c8075780ea22f5e0da4f5714f24dc27b05b6475cd060031648f154183a45 + languageName: node + linkType: hard + "@types/yauzl@npm:^2.9.1": version: 2.9.1 resolution: "@types/yauzl@npm:2.9.1" @@ -6108,6 +6196,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10b01465c7a49cbfcc055188e3b79b00db6283319bb53c0d20ca9ad114d1477d6f48c1d01a3ed9678f616566ec33f11116926dfaa162fa7be9ee7d5d2c2ea7e1 + languageName: node + linkType: hard + "ansi-to-html@npm:^0.6.11": version: 0.6.14 resolution: "ansi-to-html@npm:0.6.14" @@ -6660,21 +6755,21 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^26.6.3": - version: 26.6.3 - resolution: "babel-jest@npm:26.6.3" +"babel-jest@npm:27.0.0-next.8, babel-jest@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "babel-jest@npm:27.0.0-next.8" dependencies: - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/babel__core": ^7.1.7 + "@jest/transform": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 + "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.0.0 - babel-preset-jest: ^26.6.2 + babel-preset-jest: ^27.0.0-next.3 chalk: ^4.0.0 graceful-fs: ^4.2.4 slash: ^3.0.0 peerDependencies: - "@babel/core": ^7.0.0 - checksum: 89231d00e6b73e1dc6f009cb97a74edb1af4426f2cfa5d9b71684d1382526651820f8dd301857b9007a44c6b7d1fb77242b201bdea3cff98488b893e9c7d7182 + "@babel/core": ^7.8.0 + checksum: 7080a47fd8d79f1018ebf64b28bfae99a286ed9d4c5db6586595444846b379c1b82fce0379565ad8c50550416a69f17a53c99a3c75bf7d878933503ee833f581 languageName: node linkType: hard @@ -6761,15 +6856,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^26.6.2": - version: 26.6.2 - resolution: "babel-plugin-jest-hoist@npm:26.6.2" +"babel-plugin-jest-hoist@npm:^27.0.0-next.3": + version: 27.0.0-next.3 + resolution: "babel-plugin-jest-hoist@npm:27.0.0-next.3" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.0.0 "@types/babel__traverse": ^7.0.6 - checksum: e9c1de0fced1c8220590a0d6f37631f5b975964a8e876f0426fc7fd224f4c154b01f156e87401de47556b873bf4414eb2a9632fb56765f35fc07fe69e5b76d31 + checksum: c419256eeb20541b73dafbcc8f9fc31cbcab2e58f303a893c211d0cff11759d8452b0ecf21e3ed67f826313fc40d736b86ab9d1942704fc0387f43832ba44bd5 languageName: node linkType: hard @@ -6804,20 +6899,20 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.1.4": - version: 0.1.10 - resolution: "babel-plugin-polyfill-corejs2@npm:0.1.10" +"babel-plugin-polyfill-corejs2@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-corejs2@npm:0.2.0" dependencies: - "@babel/compat-data": ^7.13.0 - "@babel/helper-define-polyfill-provider": ^0.1.5 + "@babel/compat-data": ^7.13.11 + "@babel/helper-define-polyfill-provider": ^0.2.0 semver: ^6.1.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b11a01d9d3a078de5f26eeef8216f29b104239eee3ae93767dccdff9df558d07d159a35941ce5d77d6c658b9017475922831a232f8e60d94056412ba6ef2692b + checksum: 5d2825a9f28b322956da8941b069c3e4130478bc3620ab20e4b680671b31ad95d1c69514c58df9d5e2d54c87aba9ca92df5a7dbad54005b25ac9587af252db07 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.1.0, babel-plugin-polyfill-corejs3@npm:^0.1.3": +"babel-plugin-polyfill-corejs3@npm:^0.1.0": version: 0.1.7 resolution: "babel-plugin-polyfill-corejs3@npm:0.1.7" dependencies: @@ -6829,14 +6924,26 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.1.2": - version: 0.1.6 - resolution: "babel-plugin-polyfill-regenerator@npm:0.1.6" +"babel-plugin-polyfill-corejs3@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.2.0" dependencies: - "@babel/helper-define-polyfill-provider": ^0.1.5 + "@babel/helper-define-polyfill-provider": ^0.2.0 + core-js-compat: ^3.9.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ae25400dd8764f737ecbd02f9aa3f35df62d3d239ad269edebab195551686b020d4b9b957cc303c6fbf9497c214e7b2f7fa3eee460d00b569d0d6f634ef3d5aa + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-regenerator@npm:0.2.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.2.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 49b98a19015074d3466e8b020928b7dc09ff2c1a62d8d8ba2f02f6e7e0cc99e3ac5e7624a7611acf0a8073d363c2d6aa6a0a6e7508b85f63982150164f1d7e25 + checksum: 538ab98e3062fb4ef4eae09587292513c03917902fe6d8c90b49001b26d41ffc3cd2da34b3b999b12e501cde1233e356af9f33f898c623720c94c6d9022d998c languageName: node linkType: hard @@ -6915,15 +7022,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^26.6.2": - version: 26.6.2 - resolution: "babel-preset-jest@npm:26.6.2" +"babel-preset-jest@npm:^27.0.0-next.3": + version: 27.0.0-next.3 + resolution: "babel-preset-jest@npm:27.0.0-next.3" dependencies: - babel-plugin-jest-hoist: ^26.6.2 + babel-plugin-jest-hoist: ^27.0.0-next.3 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 466ca17bba2638cadda5c25f3108dab1867b30e5d728366d0d2309be5d6555db8738a6cacd2c43284bee2ce7917e3285194c223a22b3d9817794f00c2775fdb2 + checksum: 7476a0ac7320af3f42dacb33af5b8ed604bd2d97ae765d88ac21a96120f25ffca884494540e288b0fcd460639e0def8ceb21c561b6e8c7c2ab411174bb6da17f languageName: node linkType: hard @@ -7378,27 +7485,18 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.3": - version: 4.16.3 - resolution: "browserslist@npm:4.16.3" +"browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.4": + version: 4.16.5 + resolution: "browserslist@npm:4.16.5" dependencies: - caniuse-lite: ^1.0.30001181 - colorette: ^1.2.1 - electron-to-chromium: ^1.3.649 + caniuse-lite: ^1.0.30001214 + colorette: ^1.2.2 + electron-to-chromium: ^1.3.719 escalade: ^3.1.1 - node-releases: ^1.1.70 + node-releases: ^1.1.71 bin: browserslist: cli.js - checksum: dfab0d3c3d9a3517cf3f8a274bc4e8245f3a02c1a5ae2a0e01498273d363952d11ee09fdce3b0ce551f6cab9d619ed2d9facf7b6471c9190df949a5ad39665c5 - languageName: node - linkType: hard - -"bs-logger@npm:0.x": - version: 0.2.6 - resolution: "bs-logger@npm:0.2.6" - dependencies: - fast-json-stable-stringify: 2.x - checksum: f5f2f1315d6ceac655c3945d149086a5f5a90b3c908780757e12e938aad0125a7aa563cae2f7153ccf43443adb1b88a44960a61063903c3973e1dfdda6fc2d8c + checksum: ea06cb8262a69d1479ab2c288eb939250ea0a6b172a181ce7ce9410f1ee29701095c8c13bd575b70baead87743866471814f8c0247c9785b229b04bef399e4c8 languageName: node linkType: hard @@ -7425,7 +7523,7 @@ __metadata: languageName: node linkType: hard -"buffer-from@npm:1.x, buffer-from@npm:^1.0.0": +"buffer-from@npm:^1.0.0": version: 1.1.1 resolution: "buffer-from@npm:1.1.1" checksum: 540ceb79c4f5bfcadaabbc18324fa84c50dc52905084be7c03596a339cf5a88513bee6831ce9b36ddd046fab09257a7c80686e129d0559a0cfd141da196ad956 @@ -7751,10 +7849,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001181": - version: 1.0.30001194 - resolution: "caniuse-lite@npm:1.0.30001194" - checksum: e2a47728f3fef1ac54ab0b6efb6f87943a99b8a4a402a567708b5c9a3a0ca0b6f56c436972b6dafd4268304fc1685e58aec3dc7fd5826a5081a76a60dd17f12e +"caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001214": + version: 1.0.30001214 + resolution: "caniuse-lite@npm:1.0.30001214" + checksum: 96c09af8989fe03e6aa0cc0130be3392c4a871093f0ae7190cb1185862a63b54de14483561578564d034cf993c315d4939727badee39ed76144e94ae4ab2a0f7 languageName: node linkType: hard @@ -8071,6 +8169,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.1.1": + version: 3.1.1 + resolution: "ci-info@npm:3.1.1" + checksum: 417d2bf17c320d477bc32997d3831bcc1b174d6b48616c2f0463765f042f073bfbfb15e06abdeea55b05ca9c8e054057eb9e0672e4e6031457e87216b2faddda + languageName: node + linkType: hard + "cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": version: 1.0.4 resolution: "cipher-base@npm:1.0.4" @@ -8090,10 +8195,10 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^0.6.0": - version: 0.6.0 - resolution: "cjs-module-lexer@npm:0.6.0" - checksum: 333671db7fb916d9c569a52fba714a86051881c69a4df784a07cb1dfec2a1796c7bcd7ba46ff9035cccb6e7aaff612a83f6505437c01a5ae14c4ebc6c36f762c +"cjs-module-lexer@npm:^1.0.0": + version: 1.1.1 + resolution: "cjs-module-lexer@npm:1.1.1" + checksum: d70f88eb7add9cb51b9634a4bea6ebcfb68aedb877312d7e7fbc7c786ed74ed0838eb05450a2acec68c70419d6f0481cb95d9b61bedf86a477e2bdbaaae6922c languageName: node linkType: hard @@ -8231,17 +8336,6 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^6.0.0": - version: 6.0.0 - resolution: "cliui@npm:6.0.0" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^6.2.0 - checksum: e59d0642946dd300b1b002e69f43b32d55e682c84f6f2073705ffe77477b400aeabd4f4795467db0771a21d35ee070071f6a31925e4f83b52a7fe1f5c8e6e860 - languageName: node - linkType: hard - "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -8747,13 +8841,13 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.8.1, core-js-compat@npm:^3.9.0": - version: 3.9.1 - resolution: "core-js-compat@npm:3.9.1" +"core-js-compat@npm:^3.8.1, core-js-compat@npm:^3.9.0, core-js-compat@npm:^3.9.1": + version: 3.11.0 + resolution: "core-js-compat@npm:3.11.0" dependencies: - browserslist: ^4.16.3 + browserslist: ^4.16.4 semver: 7.0.0 - checksum: 46c8bf3b40b1f5124527e969c41de6419da21399630230a3ba1679c7ad6c43469a67a8fcf9123b11eb13ec76a39229d48025c1f5d23e3dd5453056644d7fc0bd + checksum: 608d11356728f6c0df98b41c50cad9b3d54de600423e141fe964d6ae5ede1d2479398b4bbe1e4cd4dfbb9a2a721cfd88987aae6dd68131557efb2bb3f7f1896a languageName: node linkType: hard @@ -9806,6 +9900,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^27.0.0-next.0": + version: 27.0.0-next.0 + resolution: "diff-sequences@npm:27.0.0-next.0" + checksum: d0e0791a401993469a56c9ef6f9daca0c635979c428ffcfddf40aac8567f1db8e4830388328f63ddbab888b9ffd1ea5dd1b70cf8fd6906bc345c6a8c176fb938 + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -10416,10 +10517,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.3.564, electron-to-chromium@npm:^1.3.649": - version: 1.3.678 - resolution: "electron-to-chromium@npm:1.3.678" - checksum: 61ee1c1359f650fdbd09ac7977c82c39587a17fd0aca6e37565b40ff7e3b7ab5a7dead0f22615a964524bb858f6d2ec84aeb4beeb67e268df5c1abd2eaa64506 +"electron-to-chromium@npm:^1.3.564, electron-to-chromium@npm:^1.3.719": + version: 1.3.720 + resolution: "electron-to-chromium@npm:1.3.720" + checksum: 51bb3720af1ffe2ac04e0760f4cdcf319c2e371625e7ed9e433ee962c1c7ae09e65b44afbe7ddf5c71dc9a01583c8e0015ff04b86f0222ed7cc5b5871494078d languageName: node linkType: hard @@ -10482,10 +10583,10 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.7.1": - version: 0.7.2 - resolution: "emittery@npm:0.7.2" - checksum: 34acfef51922a1b73d75cb658bf43ecb279633b263ffa831fb87697abbbd3aa4241ef15d204eeaa6a3c62656bd7563de7145c416a2bb18c4805e54ce6d7cdac6 +"emittery@npm:^0.8.1": + version: 0.8.1 + resolution: "emittery@npm:0.8.1" + checksum: 1c9cd9a1045ce8e50e41b4433a6d3adf109cbb7585fe5d504399f2a035f423adb9b9bc6735aad672368575532007948d4483645e188fe99759c302a39542479d languageName: node linkType: hard @@ -11031,15 +11132,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-header@github:amacneil/eslint-plugin-header#notemplate": - version: 3.1.1 - resolution: "eslint-plugin-header@https://github.com/amacneil/eslint-plugin-header.git#commit=073d5559b1d83e4e6d3a390d37eb6ad392b21ba0" - peerDependencies: - eslint: ">=7.7.0" - checksum: fae4b7b87ee1b9ea82f53418ab2a7462b5b4e64dc32223b546fd833b2b247c20bd4a84fb8dc240a81e5a968d7a62cac63931e384873d09a7f96a86d5ec4579b5 - languageName: node - linkType: hard - "eslint-plugin-import@npm:2.22.1": version: 2.22.1 resolution: "eslint-plugin-import@npm:2.22.1" @@ -11406,17 +11498,17 @@ __metadata: languageName: node linkType: hard -"expect@npm:^26.6.2": - version: 26.6.2 - resolution: "expect@npm:26.6.2" +"expect@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "expect@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 - ansi-styles: ^4.0.0 - jest-get-type: ^26.3.0 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 - checksum: a4ec4cbafac8b05eb02a8af5f086dede84a3a701abbfdafeadca24a1d286bd07035b32b2864a6ff012a733009beb0b96c10469b40832c5ee0d2dd0bb6b50a5b0 + "@jest/types": ^27.0.0-next.8 + ansi-styles: ^5.0.0 + jest-get-type: ^27.0.0-next.0 + jest-matcher-utils: ^27.0.0-next.8 + jest-message-util: ^27.0.0-next.8 + jest-regex-util: ^27.0.0-next.0 + checksum: 2abec19388801c7c2a88858a745fe4171b4cb4d9bd70f8c93009e11749aa3874cce7e29db43cbb1d6b4e938b3dca0df3c2bd1352a6f0c67e61ac2b798f661f4b languageName: node linkType: hard @@ -11615,7 +11707,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 7df3fabfe445d65953b2d9d9d3958bd895438b215a40fb87dae8b2165c5169a897785eb5d51e6cf0eb03523af756e3d82ea01083f6ac6341fe16db532fee3016 @@ -12059,15 +12151,21 @@ __metadata: resolution: "foxglove-studio@workspace:." dependencies: "@actions/exec": 1.0.4 + "@babel/core": 7.13.16 + "@babel/preset-env": 7.13.15 + "@babel/preset-typescript": 7.13.0 "@foxglove/electron-socket": "workspace:packages/electron-socket" "@foxglove/velodyne-cloud": "workspace:packages/velodyne-cloud" "@jest/types": 26.6.2 "@pmmmwh/react-refresh-webpack-plugin": 0.5.0-beta.1 "@sentry/electron": 2.4.0 "@types/amplitude-js": 7.0.1 + "@types/babel__core": ^7 + "@types/babel__preset-env": ^7 "@types/case-sensitive-paths-webpack-plugin": 2.1.5 "@types/circular-dependency-plugin": ^5.0.2 "@types/electron-devtools-installer": 2.2.0 + "@types/jest": 26.0.22 "@types/license-checker": ^25.0.1 "@types/nearley": 2.11.1 "@types/pngjs": ^6 @@ -12079,6 +12177,7 @@ __metadata: "@typescript-eslint/eslint-plugin": 4.21.0 "@typescript-eslint/parser": 4.21.0 amplitude-js: 8.1.0 + babel-jest: 27.0.0-next.8 babel-plugin-transform-import-meta: 1.0.1 browserify-zlib: 0.2.0 circular-dependency-plugin: 5.2.2 @@ -12096,16 +12195,15 @@ __metadata: eslint-config-prettier: 8.1.0 eslint-import-resolver-webpack: 0.13.0 eslint-plugin-file-progress: 1.1.1 - eslint-plugin-header: "github:amacneil/eslint-plugin-header#notemplate" eslint-plugin-import: 2.22.1 eslint-plugin-prettier: 3.3.1 eslint-plugin-react: 7.23.1 eslint-plugin-react-hooks: 4.2.0 fork-ts-checker-webpack-plugin: 6.2.1 html-webpack-plugin: 5.3.1 - jest: 26.6.3 + jest: 27.0.0-next.8 jest-canvas-mock: 2.3.1 - jest-circus: 26.6.3 + jest-circus: 27.0.0-next.8 license-checker: 25.0.1 monaco-editor-webpack-plugin: 3.0.1 nearley: 2.20.1 @@ -12124,7 +12222,6 @@ __metadata: spectron: "https://github.com/foxglove/spectron.git#commit=7f88e8fe148ee14b3efc14c3646c08c4ed0a6747" string-replace-loader: 3.0.1 style-loader: 2.0.0 - ts-jest: 26.5.2 ts-loader: 8.1.0 ts-node: 9.1.1 typescript: 4.2.2 @@ -12261,7 +12358,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"fsevents@^2.1.2, fsevents@~2.3.1": +"fsevents@^2.1.2, fsevents@^2.2.1, fsevents@~2.3.1": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: @@ -12280,7 +12377,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.1.2#builtin, fsevents@patch:fsevents@~2.3.1#builtin": +"fsevents@patch:fsevents@^2.1.2#builtin, fsevents@patch:fsevents@^2.2.1#builtin, fsevents@patch:fsevents@~2.3.1#builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#builtin::version=2.3.2&hash=11e9ea" dependencies: @@ -12784,13 +12881,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"growly@npm:^1.3.0": - version: 1.3.0 - resolution: "growly@npm:1.3.0" - checksum: c87f7e8c785cac6ee60719c9d62f7d790a85dafa13d62c4667664e3a21ee771f5fd19df3f374d2f7bdf297b8f687cf70e19bb066aba4832e6f6caa5190812578 - languageName: node - linkType: hard - "gud@npm:^1.0.0": version: 1.0.0 resolution: "gud@npm:1.0.0" @@ -14002,6 +14092,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"is-ci@npm:^3.0.0": + version: 3.0.0 + resolution: "is-ci@npm:3.0.0" + dependencies: + ci-info: ^3.1.1 + bin: + is-ci: bin.js + checksum: 1e26d3ba6634ebee83f9d22f260354c5d950eada4d609c30cc2642069f8ba52f3aeb4c9bbf8099aaf04a2f44a1ed7beef2a24485f988753c8c078a57e9b3a2fd + languageName: node + linkType: hard + "is-core-module@npm:^2.2.0": version: 2.2.0 resolution: "is-core-module@npm:2.2.0" @@ -14694,101 +14795,105 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-changed-files@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-changed-files@npm:26.6.2" +"jest-changed-files@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-changed-files@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 - execa: ^4.0.0 - throat: ^5.0.0 - checksum: b15a1c524b32b16694aaa4b2823266b89b54dddbb7c37ed0fdea605ea79ee784ce1003dc6163aa041d47453dfa32e21a4ade56b464d58459cdaa8e2291c83d12 + "@jest/types": ^27.0.0-next.8 + execa: ^5.0.0 + throat: ^6.0.1 + checksum: 8f6bb05d2ac69798404a81ccdfe2a3f0a7ce35d6ce7efeaf43ad02833a17386174ef2cc6248e6253e6afaeca6a7a683d4cc3b737316c049c2b0e86144fa5f979 languageName: node linkType: hard -"jest-circus@npm:26.6.3": - version: 26.6.3 - resolution: "jest-circus@npm:26.6.3" +"jest-circus@npm:27.0.0-next.8, jest-circus@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-circus@npm:27.0.0-next.8" dependencies: - "@babel/traverse": ^7.1.0 - "@jest/environment": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/babel__traverse": ^7.0.4 + "@jest/environment": ^27.0.0-next.8 + "@jest/test-result": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 - expect: ^26.6.2 + expect: ^27.0.0-next.8 is-generator-fn: ^2.0.0 - jest-each: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 - stack-utils: ^2.0.2 - throat: ^5.0.0 - checksum: 8ef70b1ccd0837d19131889fcf4e7ed4d6f051a9140be71eb3536dd98d80ab4ab31dd5d445300f08f6e8d0bd6588e77159d53ea4fda808c5e55eb464755d1837 - languageName: node - linkType: hard - -"jest-cli@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-cli@npm:26.6.3" - dependencies: - "@jest/core": ^26.6.3 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 + jest-each: ^27.0.0-next.8 + jest-matcher-utils: ^27.0.0-next.8 + jest-message-util: ^27.0.0-next.8 + jest-runner: ^27.0.0-next.8 + jest-runtime: ^27.0.0-next.8 + jest-snapshot: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + pretty-format: ^27.0.0-next.8 + stack-utils: ^2.0.3 + throat: ^6.0.1 + checksum: a7e64ec4067713110f756d7a887e4edcde31bb979c3472735847cdb7efa178e9c055cacf15ad7feed98cffb9f2b04d4a8351139b1904de713fa367ecac9e80cb + languageName: node + linkType: hard + +"jest-cli@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-cli@npm:27.0.0-next.8" + dependencies: + "@jest/core": ^27.0.0-next.8 + "@jest/test-result": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - is-ci: ^2.0.0 - jest-config: ^26.6.3 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 + is-ci: ^3.0.0 + jest-config: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + jest-validate: ^27.0.0-next.8 prompts: ^2.0.1 - yargs: ^15.4.1 + yargs: ^16.0.3 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: + node-notifier: + optional: true bin: jest: bin/jest.js - checksum: 2d32e7e4b2802d230625cb041630abe25a8764fcea6a8ecf46a5ad68f23bd1498e5297bc43d1ba714832d433de6676d2bd3ac93d0fecec230665fe8421f23863 + checksum: a9e02c425d6c04a55e5459ebdc1a4e1192c713e6c7cbd601266b093b3b3b2ff6e385eb58304cc768bee77b169bad46f7e816c67d33646b963a5ff02af68afcad languageName: node linkType: hard -"jest-config@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-config@npm:26.6.3" +"jest-config@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-config@npm:27.0.0-next.8" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^26.6.3 - "@jest/types": ^26.6.2 - babel-jest: ^26.6.3 + "@jest/test-sequencer": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 + babel-jest: ^27.0.0-next.8 chalk: ^4.0.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 - jest-environment-jsdom: ^26.6.2 - jest-environment-node: ^26.6.2 - jest-get-type: ^26.3.0 - jest-jasmine2: ^26.6.3 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - micromatch: ^4.0.2 - pretty-format: ^26.6.2 + jest-circus: ^27.0.0-next.8 + jest-environment-jsdom: ^27.0.0-next.8 + jest-environment-node: ^27.0.0-next.8 + jest-get-type: ^27.0.0-next.0 + jest-jasmine2: ^27.0.0-next.8 + jest-regex-util: ^27.0.0-next.0 + jest-resolve: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + jest-validate: ^27.0.0-next.8 + micromatch: ^4.0.4 + pretty-format: ^27.0.0-next.8 peerDependencies: ts-node: ">=9.0.0" peerDependenciesMeta: ts-node: optional: true - checksum: 974e7690bab003cc204906802107b6a38a32bcb2033bf738bdecc6d8ee5b536b4ca11d65c8a511ad0e730ec631651d666787ffcaf86365869dcceacb06d4e875 + checksum: 3c8719b1e6aa0c7154cdfc5f52ed88e17a7928c789deaffc45331f9d886774af407899e734fdff9fa5320e437f8c3261874876ec62e71a61fa38bd5ba048cccc languageName: node linkType: hard -"jest-diff@npm:^26.0.0, jest-diff@npm:^26.6.2": +"jest-diff@npm:^26.0.0": version: 26.6.2 resolution: "jest-diff@npm:26.6.2" dependencies: @@ -14800,54 +14905,66 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-docblock@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-docblock@npm:26.0.0" +"jest-diff@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-diff@npm:27.0.0-next.8" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^27.0.0-next.0 + jest-get-type: ^27.0.0-next.0 + pretty-format: ^27.0.0-next.8 + checksum: 7b2e1da8cdf8c85b7fd94bc0f20bb0d7d777d7aae64992bc9c3391a30b78888fd6e182e40d2d5b13f3502ec65bb0c7416e807a71ccbf86a6401c1ebe0f260f73 + languageName: node + linkType: hard + +"jest-docblock@npm:^27.0.0-next.0": + version: 27.0.0-next.0 + resolution: "jest-docblock@npm:27.0.0-next.0" dependencies: detect-newline: ^3.0.0 - checksum: 54b8ea1c8445a4b15e9ee5035f1bd60b0d492b87258995133a1b5df43a07803c93b54e8adaa45eae05778bd61ad57745491c625e7aa65198a9aa4f0c79030b56 + checksum: 37bf56632a5ce39f1c90ed8920b9cc4c449aafb6166d1bdaf37474ffc3da79708b9c9b954731e0181005aacddbe446ca0444b3c620f3973f72ad4e270c9fa634 languageName: node linkType: hard -"jest-each@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-each@npm:26.6.2" +"jest-each@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-each@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.8 chalk: ^4.0.0 - jest-get-type: ^26.3.0 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 - checksum: 628eaeca647adb4d6cf75bdc17c9ceb8cbcbb6921d838a583cd4de3db188e3e49b62209e3a0703f1281db379d1b2c07254900e5d97e85d61dd193d7b40361d3a + jest-get-type: ^27.0.0-next.0 + jest-util: ^27.0.0-next.8 + pretty-format: ^27.0.0-next.8 + checksum: d6215138c7f312ee0d092d552f5a0b82290f109a6653587626f7e0cfb05c24932a8754f6bf4c22a13f6d260473899f01b7587d9d7f15006a32f92afc130cbdb7 languageName: node linkType: hard -"jest-environment-jsdom@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-environment-jsdom@npm:26.6.2" +"jest-environment-jsdom@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-environment-jsdom@npm:27.0.0-next.8" dependencies: - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/environment": ^27.0.0-next.8 + "@jest/fake-timers": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" - jest-mock: ^26.6.2 - jest-util: ^26.6.2 + jest-mock: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 jsdom: ^16.4.0 - checksum: 70af4860b71237274619cb93ebebf7da978ef086df2b6ad39ab23aba427b039e01e9c565afeee05f025d112d975252eee342a615416029b9b9a71ca7810b2a7d + checksum: 809216ce72f5809749c4cb5bba8feef7892e2c788e6770677893acd17c6a2f01f33437d72dd76211c36ebaee000a238728e86a15835117399513287a7d3de0d4 languageName: node linkType: hard -"jest-environment-node@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-environment-node@npm:26.6.2" +"jest-environment-node@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-environment-node@npm:27.0.0-next.8" dependencies: - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/environment": ^27.0.0-next.8 + "@jest/fake-timers": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - checksum: 68ea035d62b35faf1991c0a0a432c1d9547ce93949e9460761071748cbf4b1d818e47421df1eb7b15a3eda7c0846e284b4a5ece5d99122307a0ad742ea765a57 + jest-mock: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + checksum: 71edab6c93c809a9c654d0ad1604b352c50b378ed5a8c70594a50cd677f94f1d424e84f1cb194892b12d1d103cc75e61162c2096bfea002fee798c8d0ede4018 languageName: node linkType: hard @@ -14858,6 +14975,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-get-type@npm:^27.0.0-next.0": + version: 27.0.0-next.0 + resolution: "jest-get-type@npm:27.0.0-next.0" + checksum: 0d5463b49dec78d7199056fd4456ce304a7ab7fc50b8f8b5e475025da7ee5d654b0967061555d33d8c42c3048962464ab73e7468f5a40bba6e59206e0a51bfcd + languageName: node + linkType: hard + "jest-haste-map@npm:^26.6.2": version: 26.6.2 resolution: "jest-haste-map@npm:26.6.2" @@ -14883,78 +15007,102 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-jasmine2@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-jasmine2@npm:26.6.3" +"jest-haste-map@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-haste-map@npm:27.0.0-next.8" + dependencies: + "@jest/types": ^27.0.0-next.8 + "@types/graceful-fs": ^4.1.2 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.2.1 + graceful-fs: ^4.2.4 + jest-regex-util: ^27.0.0-next.0 + jest-serializer: ^27.0.0-next.0 + jest-util: ^27.0.0-next.8 + jest-worker: ^27.0.0-next.8 + micromatch: ^4.0.4 + walker: ^1.0.7 + dependenciesMeta: + fsevents: + optional: true + checksum: 9976db79cfaec1da46f91d417c26d60100be33d2b0e8fecb82310ebc5109aec74c45a5f6b23e26a9a976028a85d8a0f866896bdc24645e6b68fbb44508c67ba0 + languageName: node + linkType: hard + +"jest-jasmine2@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-jasmine2@npm:27.0.0-next.8" dependencies: "@babel/traverse": ^7.1.0 - "@jest/environment": ^26.6.2 - "@jest/source-map": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/environment": ^27.0.0-next.8 + "@jest/source-map": ^27.0.0-next.3 + "@jest/test-result": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - expect: ^26.6.2 + expect: ^27.0.0-next.8 is-generator-fn: ^2.0.0 - jest-each: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 - throat: ^5.0.0 - checksum: 18b15901f8eea23cb77b45dab7bbd9c9c15f6329516c4e5ccc36dff82153b9f992f7de264db45390a1a06b5cf730f073a9c49ed7b8905f7289c6f8055e8f7459 + jest-each: ^27.0.0-next.8 + jest-matcher-utils: ^27.0.0-next.8 + jest-message-util: ^27.0.0-next.8 + jest-runtime: ^27.0.0-next.8 + jest-snapshot: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + pretty-format: ^27.0.0-next.8 + throat: ^6.0.1 + checksum: af97b14e54eea20f5c19fbac3b1e44a5df6b3e9fd5ec00918f6457c27afbc0db328e39e572ab3c5e4e00a3a6e362d0427576bd70703c942a3609c002fcb24bd6 languageName: node linkType: hard -"jest-leak-detector@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-leak-detector@npm:26.6.2" +"jest-leak-detector@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-leak-detector@npm:27.0.0-next.8" dependencies: - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: 08c1bbb628c46d22bead4de7bcbe6a4c9d5761d55f15a1d938b9409473eeb6175545ebade44318f9ae950fcdf484e1cbffbbcdcce8600b946e21300d7d1ed206 + jest-get-type: ^27.0.0-next.0 + pretty-format: ^27.0.0-next.8 + checksum: 149b3950a48b22f07df227a593a6e20a8bb3037a1c7342b26f4ea83ebaf4fff913ec2b1a098eb7b596e7fe6566de744d677897917160e198688e99c824d3e081 languageName: node linkType: hard -"jest-matcher-utils@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-matcher-utils@npm:26.6.2" +"jest-matcher-utils@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-matcher-utils@npm:27.0.0-next.8" dependencies: chalk: ^4.0.0 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: c6db72f19e90d8c3b3f949bc174e4a1b95db5973080eaf716b69df0069faa9b9da2de4502cf9b5c1376387b49705611259f45f04efb7dfc3deb72bcf3602a6a1 + jest-diff: ^27.0.0-next.8 + jest-get-type: ^27.0.0-next.0 + pretty-format: ^27.0.0-next.8 + checksum: e81cf62924a2160aea53da65847c3524321565762e0a0bdbd7c9978dc15e7b23a2809eee063790d75699fb92049488293873e10fe323135b023219645851b42f languageName: node linkType: hard -"jest-message-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-message-util@npm:26.6.2" +"jest-message-util@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-message-util@npm:27.0.0-next.8" dependencies: - "@babel/code-frame": ^7.0.0 - "@jest/types": ^26.6.2 + "@babel/code-frame": ^7.12.13 + "@jest/types": ^27.0.0-next.8 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.4 - micromatch: ^4.0.2 - pretty-format: ^26.6.2 + micromatch: ^4.0.4 + pretty-format: ^27.0.0-next.8 slash: ^3.0.0 - stack-utils: ^2.0.2 - checksum: 7a47773259e5bb431e3dba44321fd75d9e3264b12fc4fe584378053a8b065c61d1c7d07625c8e2c432ccf2d7f0dc68a9f6547bc62d0d558b8e5da0e82f824ecd + stack-utils: ^2.0.3 + checksum: f696f43b95cbe380de25f5c47ed67a2f15004920a28829f52032a205eccb31744051358f95e052e89750cc2d80f3400690b5e97ff4d80fd43f6b028a45d889db languageName: node linkType: hard -"jest-mock@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-mock@npm:26.6.2" +"jest-mock@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-mock@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" - checksum: 98e658beca866a5391fd5c0503a985a928231fd0652dea31809efa706a043ac4c4559769215ba8c8d0cde758f5c5463fbf99f233441e82641cace68023308fb6 + checksum: 628e50998cc14d86d8107d4024dc92bad52742e5afd4d61b564ff703dd049c16e99d816312b48daffbd4f6a022ea5210846ec8e2a61fa2d90597aa48095fd931 languageName: node linkType: hard @@ -14977,95 +15125,100 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-resolve-dependencies@npm:26.6.3" +"jest-regex-util@npm:^27.0.0-next.0": + version: 27.0.0-next.0 + resolution: "jest-regex-util@npm:27.0.0-next.0" + checksum: 86681c00ba385e0050a48bf0f3a0606713cb5b9b71628d17529437bc258f3675ac70617bf3aec1da05956652ba67d654b985699bdbad88737a47a834b3a1985a + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-resolve-dependencies@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 - jest-regex-util: ^26.0.0 - jest-snapshot: ^26.6.2 - checksum: 72e7a200c404197f1c06aff7faa77de13e12c2bfdc1a0a6bd9f8b96cd23317b64e2b614a26b67beece86d51249c3ec7dbeb3dfe17d284930307cd769712ace25 + "@jest/types": ^27.0.0-next.8 + jest-regex-util: ^27.0.0-next.0 + jest-snapshot: ^27.0.0-next.8 + checksum: 52fa1735f874166f3f8bf0b6c39708e4b65f45296641c5f039eb764fe5454c67d090660f19a61bcb336edeb04c717226bc13e6969730542d135f6d635ca4dd1a languageName: node linkType: hard -"jest-resolve@npm:26.6.2, jest-resolve@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-resolve@npm:26.6.2" +"jest-resolve@npm:27.0.0-next.8, jest-resolve@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-resolve@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.8 chalk: ^4.0.0 + escalade: ^3.1.1 graceful-fs: ^4.2.4 jest-pnp-resolver: ^1.2.2 - jest-util: ^26.6.2 - read-pkg-up: ^7.0.1 - resolve: ^1.18.1 + jest-util: ^27.0.0-next.8 + resolve: ^1.20.0 slash: ^3.0.0 - checksum: 61e8884462b4bcdaa26dc8544b497f2e2dae0b0701c363d433afb482c7f2faa6d0ce691250ad64eddb7fff552dc025315c388e0449411c1522a4dd013cbe49ae + checksum: 7da5990797461dad2283e5f6f16d7dd9985b7ad5dca17b5a490a7cecba21680963474637f8e745d35478f2b0aa93ddd75da0f696196456fa791ded860eb32401 languageName: node linkType: hard -"jest-runner@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-runner@npm:26.6.3" +"jest-runner@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-runner@npm:27.0.0-next.8" dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": ^27.0.0-next.8 + "@jest/environment": ^27.0.0-next.8 + "@jest/test-result": ^27.0.0-next.8 + "@jest/transform": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" chalk: ^4.0.0 - emittery: ^0.7.1 + emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-config: ^26.6.3 - jest-docblock: ^26.0.0 - jest-haste-map: ^26.6.2 - jest-leak-detector: ^26.6.2 - jest-message-util: ^26.6.2 - jest-resolve: ^26.6.2 - jest-runtime: ^26.6.3 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 + jest-config: ^27.0.0-next.8 + jest-docblock: ^27.0.0-next.0 + jest-haste-map: ^27.0.0-next.8 + jest-leak-detector: ^27.0.0-next.8 + jest-message-util: ^27.0.0-next.8 + jest-resolve: ^27.0.0-next.8 + jest-runtime: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + jest-worker: ^27.0.0-next.8 source-map-support: ^0.5.6 - throat: ^5.0.0 - checksum: 7cac133ccfb4df461d32f536e7593c21e03b9b01fc97582f51b8487e673648444fe59ea3a96f1f6afddddecf62be86b1d8249723e3a3575cc04fa95f07a163c7 + throat: ^6.0.1 + checksum: 2ceef45e1951dbb90959fec456ef1bb82065c6789aebc0a93db1efd757d8cc9620f8e0304073ef8a1298d7c72c23486537d8dd39de9803dff7cae9834adfc9a9 languageName: node linkType: hard -"jest-runtime@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-runtime@npm:26.6.3" +"jest-runtime@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-runtime@npm:27.0.0-next.8" dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/globals": ^26.6.2 - "@jest/source-map": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/yargs": ^15.0.0 + "@jest/console": ^27.0.0-next.8 + "@jest/environment": ^27.0.0-next.8 + "@jest/fake-timers": ^27.0.0-next.8 + "@jest/globals": ^27.0.0-next.8 + "@jest/source-map": ^27.0.0-next.3 + "@jest/test-result": ^27.0.0-next.8 + "@jest/transform": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 + "@types/yargs": ^16.0.0 chalk: ^4.0.0 - cjs-module-lexer: ^0.6.0 + cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-config: ^26.6.3 - jest-haste-map: ^26.6.2 - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 + jest-haste-map: ^27.0.0-next.8 + jest-message-util: ^27.0.0-next.8 + jest-mock: ^27.0.0-next.8 + jest-regex-util: ^27.0.0-next.0 + jest-resolve: ^27.0.0-next.8 + jest-snapshot: ^27.0.0-next.8 + jest-util: ^27.0.0-next.8 + jest-validate: ^27.0.0-next.8 slash: ^3.0.0 strip-bom: ^4.0.0 - yargs: ^15.4.1 - bin: - jest-runtime: bin/jest-runtime.js - checksum: 5ef4ceaefb0cd8c140d58d2d4f660467cb6581d17622789d1c0bf1576fded6a9e0e831c3bb8b3f528ec81279f3fb38a6fb71e1d1a8960d7cdc8e048d33b71c32 + yargs: ^16.0.3 + checksum: bb2b5c441bdcd796d04a28484497cd5310aecef080ac381d86e6bd2a3a6bf7a7d3f0678eb0a37d41afd0950417a23a23f8ccfb81867ebf6265b63ef9f5541744 languageName: node linkType: hard @@ -15079,31 +15232,51 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-snapshot@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-snapshot@npm:26.6.2" +"jest-serializer@npm:^27.0.0-next.0": + version: 27.0.0-next.0 + resolution: "jest-serializer@npm:27.0.0-next.0" dependencies: + "@types/node": "*" + graceful-fs: ^4.2.4 + checksum: 6212465e75292bfa2e964a42a21ba204b310fdb13f5e32ea9db614765f82e9f6f00e339ade0a35eaea17f8f6f163fe98089b3d87db761435a9153a7151645d10 + languageName: node + linkType: hard + +"jest-snapshot@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-snapshot@npm:27.0.0-next.8" + dependencies: + "@babel/generator": ^7.7.2 + "@babel/parser": ^7.7.2 + "@babel/plugin-syntax-typescript": ^7.7.2 + "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.8 "@types/babel__traverse": ^7.0.4 - "@types/prettier": ^2.0.0 + "@types/prettier": ^2.1.5 + babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^26.6.2 + expect: ^27.0.0-next.8 graceful-fs: ^4.2.4 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - jest-haste-map: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-resolve: ^26.6.2 + jest-diff: ^27.0.0-next.8 + jest-get-type: ^27.0.0-next.0 + jest-haste-map: ^27.0.0-next.8 + jest-matcher-utils: ^27.0.0-next.8 + jest-message-util: ^27.0.0-next.8 + jest-resolve: ^27.0.0-next.8 natural-compare: ^1.4.0 - pretty-format: ^26.6.2 + pretty-format: ^27.0.0-next.8 semver: ^7.3.2 - checksum: 9cf50bd7b7b31736f914ea71f8049ddf8a9ebcfdbb663d262ad55045f1dd74cb599152946844193503363b9fbb32ee84f882ceae5067181e1dac537846801ae7 + peerDependencies: + "@babel/core": ^7.7.2 + peerDependenciesMeta: + "@babel/core": + optional: true + checksum: 101bba8985a112c2fb50bc2714230270b08b94d73114eac9f9358825fcc2fc25d4dd7d278301d9c0bdd74ed2467677db49cf5bce7147f60c6caad7fe14842e60 languageName: node linkType: hard -"jest-util@npm:^26.1.0, jest-util@npm:^26.6.2": +"jest-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-util@npm:26.6.2" dependencies: @@ -15117,32 +15290,46 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-validate@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-validate@npm:26.6.2" +"jest-util@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-util@npm:27.0.0-next.8" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": ^27.0.0-next.8 + "@types/node": "*" + chalk: ^4.0.0 + graceful-fs: ^4.2.4 + is-ci: ^3.0.0 + picomatch: ^2.2.3 + checksum: 291328109086f48132bf5d4fa0e63d739458586589a5b6edb65a1fdcdb7d56a99bbbbe210821c6c12e3d2974107c3008a33a9db4aa9a9ce80b79d3202599d204 + languageName: node + linkType: hard + +"jest-validate@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-validate@npm:27.0.0-next.8" + dependencies: + "@jest/types": ^27.0.0-next.8 camelcase: ^6.0.0 chalk: ^4.0.0 - jest-get-type: ^26.3.0 + jest-get-type: ^27.0.0-next.0 leven: ^3.1.0 - pretty-format: ^26.6.2 - checksum: b19fd33b8667a45fea08a56353189b70532ebe360a6ac2e2320eac5e047be410053dcb3a6bcfe99d5e580e03580710af722119268d26ad5185871f5bfa0f6ca2 + pretty-format: ^27.0.0-next.8 + checksum: abceb144ce803a5365b4a354923a88f3b341b0806068cdef858c4315212f6b59dbb9aed93dec0c490f4e726d781afa11eb9a304000810128c303878bfa67d52e languageName: node linkType: hard -"jest-watcher@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-watcher@npm:26.6.2" +"jest-watcher@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-watcher@npm:27.0.0-next.8" dependencies: - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/test-result": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.8 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - jest-util: ^26.6.2 + jest-util: ^27.0.0-next.8 string-length: ^4.0.1 - checksum: d4a13c17c7b9bd98616d7a4ff087c0c16346038ba6b6db6f4a15acbce2ea9a9c7b8b873d174ade3f458c9ad5607f7cadd29309aa13f03a844f984d3711b57805 + checksum: 4d7e0adde45d65548c31a1ecda75a5bfc7fcf749597b502adb0ea5f1316bd2d249260e9b9f47f1ee84b6b69e3c64238a60661191f42473374d69c71ea905fa3c languageName: node linkType: hard @@ -15157,16 +15344,32 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest@npm:26.6.3": - version: 26.6.3 - resolution: "jest@npm:26.6.3" +"jest-worker@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest-worker@npm:27.0.0-next.8" dependencies: - "@jest/core": ^26.6.3 + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: a16fe0e56c8c2f0fe36db3d7e1b39383f61aaa104922a3247b8c4546cd4fa60298cd4d0fba1b1c2c7837d088f81b247acf5a93a4388f53c561df1bdf1caaee11 + languageName: node + linkType: hard + +"jest@npm:27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "jest@npm:27.0.0-next.8" + dependencies: + "@jest/core": ^27.0.0-next.8 import-local: ^3.0.2 - jest-cli: ^26.6.3 + jest-cli: ^27.0.0-next.8 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 + peerDependenciesMeta: + node-notifier: + optional: true bin: jest: bin/jest.js - checksum: 4ffcfefa2b30999a71c205e1aacf2b3d7af10f36c17ba1baf45677684116ad5aa6a5bb162ad2dd418f9ea99d18f24b70d8c83fb317b765a3acac361a50e9db9f + checksum: a15195d4f15195d75cbf7bd046ecaf51d2a57948d8283783d3d820a44788ac09e617646a49b46279ed8df28dad1ad68ebd42fc0caa23655dbc71713767d00f05 languageName: node linkType: hard @@ -15360,17 +15563,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"json5@npm:2.x, json5@npm:^2.1.2, json5@npm:^2.1.3": - version: 2.2.0 - resolution: "json5@npm:2.2.0" - dependencies: - minimist: ^1.2.5 - bin: - json5: lib/cli.js - checksum: 07b1f90c2801dc52df2b0ac8d606cc400a85cda79130e754780fa2ab9805d0fb85a0e61b6a5cdd68e88e5d0c8f9109ec415af08283175556cdccaa8563853908 - languageName: node - linkType: hard - "json5@npm:^0.5.0": version: 0.5.1 resolution: "json5@npm:0.5.1" @@ -15391,6 +15583,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"json5@npm:^2.1.2, json5@npm:^2.1.3": + version: 2.2.0 + resolution: "json5@npm:2.2.0" + dependencies: + minimist: ^1.2.5 + bin: + json5: lib/cli.js + checksum: 07b1f90c2801dc52df2b0ac8d606cc400a85cda79130e754780fa2ab9805d0fb85a0e61b6a5cdd68e88e5d0c8f9109ec415af08283175556cdccaa8563853908 + languageName: node + linkType: hard + "jsondiffpatch@npm:0.4.1": version: 0.4.1 resolution: "jsondiffpatch@npm:0.4.1" @@ -16016,7 +16219,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:4.x, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": +"lodash@npm:4.17.21, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468 @@ -16172,7 +16375,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"make-error@npm:1.x, make-error@npm:^1.1.1": +"make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" checksum: 2c780bab8409b865e8ee86697c599a2bf2765ec64d21eb67ccda27050e039f983feacad05a0d43aba3c966ea03d305d2612e94fec45474bcbc61181f57c5bb88 @@ -16573,13 +16776,13 @@ fsevents@^1.2.7: languageName: node linkType: hard -"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2": - version: 4.0.2 - resolution: "micromatch@npm:4.0.2" +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": + version: 4.0.4 + resolution: "micromatch@npm:4.0.4" dependencies: braces: ^3.0.1 - picomatch: ^2.0.5 - checksum: 0cb0e11d647cbb65e398a0a8a1340a7fb751ae2722346219c435704cfac8b3275a94a6464236fe867f52ad46a24046d3bc4ac11b3d21ddb73bc44e27cf1e4904 + picomatch: ^2.2.3 + checksum: bc522ad93c086aa176f50fea2dc8060a8f7d7a621c811cf9ba02a1912577cc100190508166d721231465f10a575a40ec8a1bffc23bbc2c0108fcbf02e4be04ed languageName: node linkType: hard @@ -16815,15 +17018,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"mkdirp@npm:1.x, mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4, mkdirp@npm:~1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: 1aa3a6a2d7514f094a91329ec09994f5d32d2955a4985ecbb3d86f2aaeafc4aa11521f98d606144c1d49cd9835004d9a73342709b8c692c92e59eacf37412468 - languageName: node - linkType: hard - "mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": version: 0.5.5 resolution: "mkdirp@npm:0.5.5" @@ -16835,6 +17029,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4, mkdirp@npm:~1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 1aa3a6a2d7514f094a91329ec09994f5d32d2955a4985ecbb3d86f2aaeafc4aa11521f98d606144c1d49cd9835004d9a73342709b8c692c92e59eacf37412468 + languageName: node + linkType: hard + "moment-duration-format@npm:2.3.2": version: 2.3.2 resolution: "moment-duration-format@npm:2.3.2" @@ -17264,21 +17467,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"node-notifier@npm:^8.0.0": - version: 8.0.1 - resolution: "node-notifier@npm:8.0.1" - dependencies: - growly: ^1.3.0 - is-wsl: ^2.2.0 - semver: ^7.3.2 - shellwords: ^0.1.1 - uuid: ^8.3.0 - which: ^2.0.2 - checksum: ce9611cfd8a6021b9aed5b9ad36e4717b9e151b46fe2f434408791291d261e695f3f397000e61edf23f2d1e5d2b73390abeb04b81754a9cfa95f68cfb2954cf1 - languageName: node - linkType: hard - -"node-releases@npm:^1.1.61, node-releases@npm:^1.1.70": +"node-releases@npm:^1.1.61, node-releases@npm:^1.1.71": version: 1.1.71 resolution: "node-releases@npm:1.1.71" checksum: 9e283003f1deafd0ca7f9bbde9c4b5b05d880ca165217f5227b37406626d6689a246a5c4c72f9a8512be65cd51b13cc7d0f5d8bc68ad36089b620f1810292340 @@ -18295,7 +18484,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.0.5, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3": version: 2.2.3 resolution: "picomatch@npm:2.2.3" checksum: f8c9323bc3b21ff448e81dd32277135d781abae5d53a1415d69a4ce6317a2c11404d449c550110b8fa402c07d5e80ff0e2657f263a312517cc809e9010d25791 @@ -18743,6 +18932,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pretty-format@npm:^27.0.0-next.8": + version: 27.0.0-next.8 + resolution: "pretty-format@npm:27.0.0-next.8" + dependencies: + "@jest/types": ^27.0.0-next.8 + ansi-regex: ^5.0.0 + ansi-styles: ^5.0.0 + react-is: ^17.0.1 + checksum: fe1d639d282853b68259c4fcc1030906e9a0fa2095c82ae94d5ce8cfb62f24290d8358c9e83bde18c0143ed47a3e212cce31ec9115337c0764dcba91ecafc06b + languageName: node + linkType: hard + "pretty-hrtime@npm:^1.0.3": version: 1.0.3 resolution: "pretty-hrtime@npm:1.0.3" @@ -20816,7 +21017,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.3.2, resolve@^1.9.0": +"resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.9.0": version: 1.20.0 resolution: "resolve@npm:1.20.0" dependencies: @@ -20836,7 +21037,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#builtin, resolve@patch:resolve@^1.12.0#builtin, resolve@patch:resolve@^1.13.1#builtin, resolve@patch:resolve@^1.14.2#builtin, resolve@patch:resolve@^1.17.0#builtin, resolve@patch:resolve@^1.18.1#builtin, resolve@patch:resolve@^1.19.0#builtin, resolve@patch:resolve@^1.3.2#builtin, resolve@patch:resolve@^1.9.0#builtin": +"resolve@patch:resolve@^1.10.0#builtin, resolve@patch:resolve@^1.12.0#builtin, resolve@patch:resolve@^1.13.1#builtin, resolve@patch:resolve@^1.14.2#builtin, resolve@patch:resolve@^1.17.0#builtin, resolve@patch:resolve@^1.19.0#builtin, resolve@patch:resolve@^1.20.0#builtin, resolve@patch:resolve@^1.3.2#builtin, resolve@patch:resolve@^1.9.0#builtin": version: 1.20.0 resolution: "resolve@patch:resolve@npm%3A1.20.0#builtin::version=1.20.0&hash=3388aa" dependencies: @@ -21325,7 +21526,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"semver@npm:7.3.5, semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4": +"semver@npm:7.3.5, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4": version: 7.3.5 resolution: "semver@npm:7.3.5" dependencies: @@ -21563,13 +21764,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"shellwords@npm:^0.1.1": - version: 0.1.1 - resolution: "shellwords@npm:0.1.1" - checksum: 3559ff550917ece921d252edf42eb54827540e9676e537137ace236df8f9b78e48c542ae0b3f8876fea0faf5826c97629d5b8cb9ac7dee287260e9804fb8132c - languageName: node - linkType: hard - "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4" @@ -22054,7 +22248,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"stack-utils@npm:^2.0.2": +"stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "stack-utils@npm:2.0.3" dependencies: @@ -22551,6 +22745,15 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: 0219f5c91753fea8dc8046cd4b18d39458b5dc0c6421c67c1072209faae9ba93b89283252e3b05d5c18901fd9f8b95001e3247fb93e2265f66d584a676522c75 + languageName: node + linkType: hard + "supports-hyperlinks@npm:^2.0.0": version: 2.1.0 resolution: "supports-hyperlinks@npm:2.1.0" @@ -22846,10 +23049,10 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"throat@npm:^5.0.0": - version: 5.0.0 - resolution: "throat@npm:5.0.0" - checksum: 2fa41c09ccd97982cd6601eca704913f5d8ef5cc4070fcd71c67e7240da7c0df86f65f5cb23f5c3132ab5567154740114cc92379663aa098b6076a39481b0f5f +"throat@npm:^6.0.1": + version: 6.0.1 + resolution: "throat@npm:6.0.1" + checksum: c984a40b4725bbd6e8c49d57b2bd36ab36c5534e8a1bed0d278d480171fdf908f16ba343d61c3e9c2e3ed4b327a59c28432cfa44594453b756ec219a772395a8 languageName: node linkType: hard @@ -23134,30 +23337,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"ts-jest@npm:26.5.2": - version: 26.5.2 - resolution: "ts-jest@npm:26.5.2" - dependencies: - "@types/jest": 26.x - bs-logger: 0.x - buffer-from: 1.x - fast-json-stable-stringify: 2.x - jest-util: ^26.1.0 - json5: 2.x - lodash: 4.x - make-error: 1.x - mkdirp: 1.x - semver: 7.x - yargs-parser: 20.x - peerDependencies: - jest: ">=26 <27" - typescript: ">=3.8 <5.0" - bin: - ts-jest: cli.js - checksum: f9466241291bde18c6f6c5d61875d861983fa2a1b9b1a2164141418c129b874df2bc15bbc4fbde7fc2cb1fa9cae972d5fb292c79b4777afbe19f7ccf035e5d70 - languageName: node - linkType: hard - "ts-loader@npm:8.1.0": version: 8.1.0 resolution: "ts-loader@npm:8.1.0" @@ -24005,7 +24184,7 @@ typescript@4.2.2: languageName: node linkType: hard -"uuid@npm:8.3.2, uuid@npm:^8.0.0, uuid@npm:^8.3.0, uuid@npm:^8.3.2": +"uuid@npm:8.3.2, uuid@npm:^8.0.0, uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" bin: @@ -24790,17 +24969,6 @@ typescript@4.2.2: languageName: node linkType: hard -"wrap-ansi@npm:^6.2.0": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: ee4ed8b2994cfbdcd571f4eadde9d8ba00b8a74113483fe5d0c5f9e84054e43df8e9092d7da35c5b051faeca8fe32bd6cea8bf5ae8ad4896d6ea676a347e90af - languageName: node - linkType: hard - "wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -24999,13 +25167,6 @@ typescript@4.2.2: languageName: node linkType: hard -"yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": - version: 20.2.7 - resolution: "yargs-parser@npm:20.2.7" - checksum: 124e7f1c24c9609d5d1c343f14b83289634e19bb43770708ebb6a19852647aaa0f89edcbf0e5b18a21bee77f54513ab5051518b2950cda69eb607a7c6251aa4f - languageName: node - linkType: hard - "yargs-parser@npm:^13.1.2": version: 13.1.2 resolution: "yargs-parser@npm:13.1.2" @@ -25016,17 +25177,14 @@ typescript@4.2.2: languageName: node linkType: hard -"yargs-parser@npm:^18.1.2": - version: 18.1.3 - resolution: "yargs-parser@npm:18.1.3" - dependencies: - camelcase: ^5.0.0 - decamelize: ^1.2.0 - checksum: 33871721679053cc38165afc6356c06c3e820459589b5db78f315886105070eb90cbb583cd6515fa4231937d60c80262ca2b7c486d5942576802446318a39597 +"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": + version: 20.2.7 + resolution: "yargs-parser@npm:20.2.7" + checksum: 124e7f1c24c9609d5d1c343f14b83289634e19bb43770708ebb6a19852647aaa0f89edcbf0e5b18a21bee77f54513ab5051518b2950cda69eb607a7c6251aa4f languageName: node linkType: hard -"yargs@npm:16.2.0, yargs@npm:^16.2.0": +"yargs@npm:16.2.0, yargs@npm:^16.0.3, yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: @@ -25059,25 +25217,6 @@ typescript@4.2.2: languageName: node linkType: hard -"yargs@npm:^15.4.1": - version: 15.4.1 - resolution: "yargs@npm:15.4.1" - dependencies: - cliui: ^6.0.0 - decamelize: ^1.2.0 - find-up: ^4.1.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^4.2.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^18.1.2 - checksum: dbf687d6b938f01bbf11e158dde6df906282b70cd9295af0217ee8cefbd83ad09d49fa9458d0d5325b0e66f03df954a38986db96f91e5b46ccdbbaf9a0157b23 - languageName: node - linkType: hard - "yarn-or-npm@npm:^3.0.1": version: 3.0.1 resolution: "yarn-or-npm@npm:3.0.1"