From fd4a29e7788677fd6f1870f5e65f5c29e630067a Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Thu, 8 Apr 2021 19:26:32 +0200 Subject: [PATCH] feat: duplicate packages checker (#104) --- ...-b441afbc-23b8-4537-81d8-f6a9b996c360.json | 7 + .../metro-plugin-duplicates-checker/README.md | 41 ++ .../babel.config.js | 6 + .../just.config.js | 2 + .../package.json | 40 ++ .../src/SourceMap.ts | 25 + .../src/checkForDuplicatePackages.ts | 63 ++ .../src/gatherModules.ts | 71 +++ .../src/index.ts | 72 +++ .../__snapshots__/gatherModules.test.ts.snap | 30 + .../test/checkForDuplicatePackages.test.ts | 113 ++++ .../test/gatherModules.test.ts | 539 ++++++++++++++++++ .../tsconfig.json | 4 + scripts/package.json | 6 +- scripts/src/tasks/depcheck.js | 6 +- yarn.lock | 372 ++++++++++-- 16 files changed, 1358 insertions(+), 39 deletions(-) create mode 100644 change/@rnx-kit-metro-plugin-duplicates-checker-b441afbc-23b8-4537-81d8-f6a9b996c360.json create mode 100644 packages/metro-plugin-duplicates-checker/README.md create mode 100644 packages/metro-plugin-duplicates-checker/babel.config.js create mode 100644 packages/metro-plugin-duplicates-checker/just.config.js create mode 100644 packages/metro-plugin-duplicates-checker/package.json create mode 100644 packages/metro-plugin-duplicates-checker/src/SourceMap.ts create mode 100644 packages/metro-plugin-duplicates-checker/src/checkForDuplicatePackages.ts create mode 100644 packages/metro-plugin-duplicates-checker/src/gatherModules.ts create mode 100644 packages/metro-plugin-duplicates-checker/src/index.ts create mode 100644 packages/metro-plugin-duplicates-checker/test/__snapshots__/gatherModules.test.ts.snap create mode 100644 packages/metro-plugin-duplicates-checker/test/checkForDuplicatePackages.test.ts create mode 100644 packages/metro-plugin-duplicates-checker/test/gatherModules.test.ts create mode 100644 packages/metro-plugin-duplicates-checker/tsconfig.json diff --git a/change/@rnx-kit-metro-plugin-duplicates-checker-b441afbc-23b8-4537-81d8-f6a9b996c360.json b/change/@rnx-kit-metro-plugin-duplicates-checker-b441afbc-23b8-4537-81d8-f6a9b996c360.json new file mode 100644 index 000000000..457cbc473 --- /dev/null +++ b/change/@rnx-kit-metro-plugin-duplicates-checker-b441afbc-23b8-4537-81d8-f6a9b996c360.json @@ -0,0 +1,7 @@ +{ + "type": "minor", + "comment": "Tool for detecting duplicate packages in JS bundles", + "packageName": "@rnx-kit/metro-plugin-duplicates-checker", + "email": "4123478+tido64@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/metro-plugin-duplicates-checker/README.md b/packages/metro-plugin-duplicates-checker/README.md new file mode 100644 index 000000000..ee1b2d9ef --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/README.md @@ -0,0 +1,41 @@ +# @rnx-kit/metro-plugin-duplicates-checker + +`@rnx-kit/metro-plugin-duplicates-checker` checks for duplicate packages in your +bundle. + +## Usage + +There are several ways to use this package. You can check for duplicate packages +after a bundle is created: + +```js +const { + checkForDuplicatePackagesInFile, +} = require("@rnx-kit/metro-plugin-duplicates-checker"); + +checkForDuplicatePackagesInFile(pathToSourceMap, { + ignoredModules: [], + bannedModules: [], +}); +``` + +If you have a source map object, you can pass that directly to +`checkForDuplicatePackages()`: + +```js +const { + checkForDuplicatePackages, +} = require("@rnx-kit/metro-plugin-duplicates-checker"); + +checkForDuplicatePackages(mySourceMap, { + ignoredModules: [], + bannedModules: [], +}); +``` + +## Options + +| Key | Type | Default | Description | +| :------------- | :------- | :------ | :----------------------------------- | +| bannedModules | string[] | `[]` | List of modules that are banned. | +| ignoredModules | string[] | `[]` | List of modules that can be ignored. | diff --git a/packages/metro-plugin-duplicates-checker/babel.config.js b/packages/metro-plugin-duplicates-checker/babel.config.js new file mode 100644 index 000000000..dd242dc90 --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + ["@babel/preset-env", { targets: { node: "current" } }], + "@babel/preset-typescript", + ], +}; diff --git a/packages/metro-plugin-duplicates-checker/just.config.js b/packages/metro-plugin-duplicates-checker/just.config.js new file mode 100644 index 000000000..57dcd06cf --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/just.config.js @@ -0,0 +1,2 @@ +const { configureJust } = require("rnx-kit-scripts"); +configureJust(); diff --git a/packages/metro-plugin-duplicates-checker/package.json b/packages/metro-plugin-duplicates-checker/package.json new file mode 100644 index 000000000..f2416105e --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/package.json @@ -0,0 +1,40 @@ +{ + "name": "@rnx-kit/metro-plugin-duplicates-checker", + "version": "1.0.0-alpha", + "description": "Duplicate packages checker", + "homepage": "https://github.com/microsoft/rnx-kit/tree/main/packages/metro-plugin-duplicates-checker#rnx-kitmetro-plugin-duplicates-checker", + "license": "MIT", + "files": [ + "lib/*" + ], + "main": "lib/index.js", + "bin": { + "check-duplicates": "lib/index.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/microsoft/rnx-kit", + "directory": "packages/metro-plugin-duplicates-checker" + }, + "scripts": { + "build": "rnx-kit-scripts build", + "format": "prettier --write src/*.ts test/*.ts", + "test": "rnx-kit-scripts test" + }, + "dependencies": { + "pkg-dir": "^5.0.0" + }, + "devDependencies": { + "@types/jest": "^26.0.0", + "@types/node": "^12.0.0", + "prettier": "^2.0.0", + "rnx-kit-scripts": "*", + "typescript": "^4.0.0" + }, + "jest": { + "roots": [ + "test" + ], + "testRegex": "/test/.*\\.test\\.ts$" + } +} diff --git a/packages/metro-plugin-duplicates-checker/src/SourceMap.ts b/packages/metro-plugin-duplicates-checker/src/SourceMap.ts new file mode 100644 index 000000000..ffd7e9209 --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/src/SourceMap.ts @@ -0,0 +1,25 @@ +// Adapted from: https://github.com/facebook/metro/blob/master/packages/metro-source-map/src/source-map.js + +export type BasicSourceMap = { + sources: Array; +}; + +export type IndexMapSection = { + map: IndexMap | BasicSourceMap; + offset: { + line: number; + column: number; + }; +}; + +export type IndexMap = { + sections: IndexMapSection[]; +}; + +export type MixedSourceMap = IndexMap | BasicSourceMap; + +export type PostProcessBundleSourceMap = { + code: string | Buffer; + map: MixedSourceMap; + outFileName: string; +}; diff --git a/packages/metro-plugin-duplicates-checker/src/checkForDuplicatePackages.ts b/packages/metro-plugin-duplicates-checker/src/checkForDuplicatePackages.ts new file mode 100644 index 000000000..6cf5a9734 --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/src/checkForDuplicatePackages.ts @@ -0,0 +1,63 @@ +import { gatherModules, ModuleMap } from "./gatherModules"; +import type { MixedSourceMap } from "./SourceMap"; + +export type Options = { + ignoredModules?: string[]; + bannedModules?: string[]; +}; + +export const defaultOptions: Options = { + ignoredModules: [], + bannedModules: [], +}; + +export function countCopies(module: ModuleMap[string]): number { + return Object.keys(module).reduce((count, version) => { + return count + module[version].size; + }, 0); +} + +export function printDuplicates(module: ModuleMap[string]): void { + Object.keys(module) + .sort() + .forEach((version) => { + Array.from(module[version]) + .sort() + .forEach((p) => console.warn(` ${version} ${p}`)); + }); +} + +export function detectDuplicatePackages( + bundledModules: ModuleMap, + { ignoredModules = [], bannedModules = [] }: Options +): number { + return Object.keys(bundledModules).reduce((count, name) => { + if (ignoredModules.includes(name)) { + return count; + } + + const currentModule = bundledModules[name]; + + if (bannedModules.includes(name)) { + console.error(`${name} (banned)`); + printDuplicates(currentModule); + return count + 1; + } + + const numCopies = countCopies(currentModule); + if (numCopies > 1) { + console.error(`${name} (found ${numCopies} copies)`); + printDuplicates(currentModule); + return count + 1; + } + + return count; + }, 0); +} + +export function checkForDuplicatePackages( + sourceMap: MixedSourceMap, + options: Options = defaultOptions +): number { + return detectDuplicatePackages(gatherModules(sourceMap, {}), options); +} diff --git a/packages/metro-plugin-duplicates-checker/src/gatherModules.ts b/packages/metro-plugin-duplicates-checker/src/gatherModules.ts new file mode 100644 index 000000000..2928f2ac4 --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/src/gatherModules.ts @@ -0,0 +1,71 @@ +import { join } from "path"; +import pkgDir from "pkg-dir"; +import type { BasicSourceMap, IndexMap, MixedSourceMap } from "./SourceMap"; + +export type ModuleMap = { + [name: string]: { + [version: string]: Set; + }; +}; + +export function normalizePath(p: string): string { + return p + .replace(/webpack:\/\/\//g, "") + .replace(/[\\]+/g, "/") + .toLowerCase(); +} + +export function resolveModule(source: string): [string, string, string] { + const pkg = pkgDir.sync(source); + if (!pkg) { + throw new Error(`Unable to find package '${pkg}'`); + } + + const { name, version } = require(join(pkg, "package.json")); + if (!name) { + throw new Error(`Unable to parse name of '${pkg}'`); + } + + return [name, version, pkg]; +} + +export function gatherModulesFromSections( + sections: IndexMap["sections"], + moduleMap: ModuleMap +): ModuleMap { + sections.forEach((section) => gatherModules(section.map, moduleMap)); + return moduleMap; +} + +export function gatherModulesFromSources( + sources: BasicSourceMap["sources"], + moduleMap: ModuleMap +): ModuleMap { + sources.forEach((source) => { + const normalizedPath = normalizePath(source); + if (normalizedPath.includes("node_modules/")) { + const [name, version, pkg] = resolveModule(normalizedPath); + if (!moduleMap[name]) { + moduleMap[name] = {}; + } + if (!moduleMap[name][version]) { + moduleMap[name][version] = new Set(); + } + moduleMap[name][version].add(pkg); + } + }); + return moduleMap; +} + +export function gatherModules( + sourceMap: MixedSourceMap, + moduleMap: ModuleMap +): ModuleMap { + if ("sources" in sourceMap) { + gatherModulesFromSources(sourceMap.sources, moduleMap); + } + if ("sections" in sourceMap) { + gatherModulesFromSections(sourceMap.sections, moduleMap); + } + return moduleMap; +} diff --git a/packages/metro-plugin-duplicates-checker/src/index.ts b/packages/metro-plugin-duplicates-checker/src/index.ts new file mode 100644 index 000000000..194bd3f17 --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/src/index.ts @@ -0,0 +1,72 @@ +import { readFile } from "fs"; +import { + checkForDuplicatePackages, + defaultOptions, + Options, +} from "./checkForDuplicatePackages"; +import type { MixedSourceMap, PostProcessBundleSourceMap } from "./SourceMap"; + +export { checkForDuplicatePackages }; + +export function checkForDuplicatePackagesInFile( + sourceMap: string, + options: Options = defaultOptions +): Promise { + return new Promise((resolve, reject) => + readFile(sourceMap, { encoding: "utf-8" }, (error, data) => { + if (error) { + reject(error); + return; + } + + const sourceMap = JSON.parse(data) as MixedSourceMap; + const count = checkForDuplicatePackages(sourceMap, options); + if (count > 0) { + reject(new Error("Duplicates found! ⚠️")); + } else { + resolve(); + } + }) + ); +} + +/** + * Intended to be used as a Metro bundle source map + * [post-processor](https://github.com/facebook/metro/blob/601f6cd133004e26a293272f711808219c88e508/docs/Configuration.md#postprocessbundlesourcemap) + * but the hook was removed in + * [0.56](https://github.com/facebook/metro/commit/cd67cd47941a942509a360bac3d8a11c5ce070ff#diff-660c08c7ccb569e12d8a268bd8fa2011?w=1) + * for some reason. + * + * Usage: + * + * // metro.config.js + * { + * projectRoot: __dirname, + * serializer: { + * postProcessBundleSourcemap: DuplicatesPlugin({ + * ignoredModules: [], + * bannedModules: [], + * }), + * }, + * } + * + * @see https://github.com/facebook/metro/pull/608 + */ +export function DuplicatesPlugin( + options: Options = defaultOptions +): (bundleSourceMap: PostProcessBundleSourceMap) => PostProcessBundleSourceMap { + return (bundleSourceMap: PostProcessBundleSourceMap) => { + const { map } = bundleSourceMap; + checkForDuplicatePackages(map, options); + return bundleSourceMap; + }; +} + +if (require.main === module) { + checkForDuplicatePackagesInFile(process.argv[2]).catch((error) => { + if (error) { + console.error(error.message); + process.exit(1); + } + }); +} diff --git a/packages/metro-plugin-duplicates-checker/test/__snapshots__/gatherModules.test.ts.snap b/packages/metro-plugin-duplicates-checker/test/__snapshots__/gatherModules.test.ts.snap new file mode 100644 index 000000000..c4c0bd31b --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/test/__snapshots__/gatherModules.test.ts.snap @@ -0,0 +1,30 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`gatherModules() builds module map from a basic source map 1`] = ` +Array [ + "@babel/runtime", + "abort-controller", + "anser", + "base64-js", + "event-target-shim", + "eventemitter3", + "fbjs", + "invariant", + "metro", + "nullthrows", + "object-assign", + "pretty-format", + "promise", + "prop-types", + "react", + "react-devtools-core", + "react-is", + "react-native", + "react-refresh", + "regenerator-runtime", + "scheduler", + "stacktrace-parser", + "use-subscription", + "whatwg-fetch", +] +`; diff --git a/packages/metro-plugin-duplicates-checker/test/checkForDuplicatePackages.test.ts b/packages/metro-plugin-duplicates-checker/test/checkForDuplicatePackages.test.ts new file mode 100644 index 000000000..863c913f4 --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/test/checkForDuplicatePackages.test.ts @@ -0,0 +1,113 @@ +import { + countCopies, + detectDuplicatePackages, + Options, + printDuplicates, +} from "../src/checkForDuplicatePackages"; + +const defaultOptions: Options = { + ignoredModules: [], + bannedModules: [], +}; + +const testModuleMap = { + "@babel/runtime": { + "7.13.10": new Set(["/~/node_modules/@babel/runtime"]), + }, + fbjs: { + "1.0.0": new Set([ + "/~/node_modules/fbjs", + "/~/node_modules/react-native/node_modules/fbjs", + ]), + }, + metro: { + "0.58.0": new Set(["/~/node_modules/metro"]), + "0.59.0": new Set(["/~/node_modules/metro"]), + }, + invariant: { + "2.2.4": new Set(["/~/node_modules/invariant"]), + }, + react: { + "16.13.1": new Set(["/~/node_modules/react"]), + }, + "react-native": { + "0.63.4": new Set(["/~/node_modules/react-native"]), + }, +}; + +describe("countCopies()", () => { + test("returns number of copies of a package", () => { + expect(countCopies(testModuleMap["fbjs"])).toBe(2); + expect(countCopies(testModuleMap["metro"])).toBe(2); + expect(countCopies(testModuleMap["react-native"])).toBe(1); + }); +}); + +describe("printDuplicates()", () => { + const consoleWarnSpy = jest.spyOn(global.console, "warn"); + + beforeEach(() => { + consoleWarnSpy.mockReset(); + }); + + afterAll(() => { + jest.clearAllMocks(); + }); + + test("prints all versions and locations of a package", () => { + printDuplicates(testModuleMap["fbjs"]); + expect(consoleWarnSpy).toBeCalledTimes(2); + consoleWarnSpy.mockReset(); + + printDuplicates(testModuleMap["metro"]); + expect(consoleWarnSpy).toBeCalledTimes(2); + consoleWarnSpy.mockReset(); + + printDuplicates(testModuleMap["react-native"]); + expect(consoleWarnSpy).toBeCalledTimes(1); + consoleWarnSpy.mockReset(); + }); +}); + +describe("detectDuplicatePackages()", () => { + const consoleErrorSpy = jest.spyOn(global.console, "error"); + const consoleWarnSpy = jest.spyOn(global.console, "warn"); + + beforeEach(() => { + consoleErrorSpy.mockReset(); + consoleWarnSpy.mockReset(); + }); + + afterAll(() => { + jest.clearAllMocks(); + }); + + test("returns number of duplicated packages", () => { + expect(detectDuplicatePackages(testModuleMap, defaultOptions)).toBe(2); + }); + + test("ignores specified packages", () => { + expect( + detectDuplicatePackages(testModuleMap, { ignoredModules: ["fbjs"] }) + ).toBe(1); + expect( + detectDuplicatePackages(testModuleMap, { + ignoredModules: ["fbjs", "metro"], + }) + ).toBe(0); + }); + + test("counts banned packages", () => { + expect( + detectDuplicatePackages(testModuleMap, { + bannedModules: ["react", "react-native"], + }) + ).toBe(4); + }); + + test("prints the duplicated packages", () => { + detectDuplicatePackages(testModuleMap, defaultOptions); + expect(consoleErrorSpy).toBeCalledTimes(2); + expect(consoleWarnSpy).toBeCalledTimes(4); + }); +}); diff --git a/packages/metro-plugin-duplicates-checker/test/gatherModules.test.ts b/packages/metro-plugin-duplicates-checker/test/gatherModules.test.ts new file mode 100644 index 000000000..0d6d3c8e3 --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/test/gatherModules.test.ts @@ -0,0 +1,539 @@ +import path from "path"; +import pkgDir from "pkg-dir"; +import { + gatherModules, + gatherModulesFromSources, + normalizePath, + resolveModule, +} from "../src/gatherModules"; + +const repoRoot = pkgDir.sync(path.resolve(__dirname, "..", "..")); + +const bundleSourceMap = { + version: 3, + sources: [ + "__prelude__", + `${repoRoot}/node_modules/metro/src/lib/polyfills/require.js`, + `${repoRoot}/node_modules/react-native/Libraries/polyfills/console.js`, + `${repoRoot}/node_modules/react-native/Libraries/polyfills/error-guard.js`, + `${repoRoot}/node_modules/react-native/Libraries/polyfills/Object.es7.js`, + `${repoRoot}/packages/test-app/lib/src/index.js`, + `${repoRoot}/node_modules/react-native/index.js`, + `${repoRoot}/node_modules/invariant/browser.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/warnOnce.js`, + `${repoRoot}/node_modules/fbjs/lib/warning.js`, + `${repoRoot}/node_modules/fbjs/lib/emptyFunction.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/interopRequireDefault.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/interopRequireWildcard.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/typeof.js`, + `${repoRoot}/node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.js`, + `${repoRoot}/node_modules/react-native/Libraries/BatchedBridge/NativeModules.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/extends.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/slicedToArray.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/arrayWithHoles.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/arrayLikeToArray.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/nonIterableRest.js`, + `${repoRoot}/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js`, + `${repoRoot}/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/toConsumableArray.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/iterableToArray.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/nonIterableSpread.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/classCallCheck.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/createClass.js`, + `${repoRoot}/node_modules/react-native/Libraries/vendor/core/ErrorUtils.js`, + `${repoRoot}/node_modules/react-native/Libraries/Performance/Systrace.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/stringifySafe.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/defineLazyObjectProperty.js`, + `${repoRoot}/node_modules/react-native/Libraries/Promise.js`, + `${repoRoot}/node_modules/promise/setimmediate/es6-extensions.js`, + `${repoRoot}/node_modules/promise/setimmediate/core.js`, + `${repoRoot}/node_modules/promise/setimmediate/done.js`, + `${repoRoot}/node_modules/promise/setimmediate/finally.js`, + `${repoRoot}/node_modules/promise/setimmediate/rejection-tracking.js`, + `${repoRoot}/node_modules/react-native/node_modules/pretty-format/build-es5/index.js`, + `${repoRoot}/node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/get.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/superPropBase.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/getPrototypeOf.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/inherits.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/setPrototypeOf.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/assertThisInitialized.js`, + `${repoRoot}/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js`, + `${repoRoot}/node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js`, + `${repoRoot}/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js`, + `${repoRoot}/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/defineProperty.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/objectWithoutProperties.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/Platform.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/NativePlatformConstantsIOS.js`, + `${repoRoot}/node_modules/react/index.js`, + `${repoRoot}/node_modules/react/cjs/react.production.min.js`, + `${repoRoot}/node_modules/object-assign/index.js`, + `${repoRoot}/node_modules/react/cjs/react.development.js`, + `${repoRoot}/node_modules/prop-types/checkPropTypes.js`, + `${repoRoot}/node_modules/prop-types/lib/ReactPropTypesSecret.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/PixelRatio.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/Dimensions.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/NativeDeviceInfo.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedImageStylePropTypes.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedColorPropType.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/normalizeColor.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/processColor.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedLayoutPropTypes.js`, + `${repoRoot}/node_modules/prop-types/index.js`, + `${repoRoot}/node_modules/react-is/index.js`, + `${repoRoot}/node_modules/react-is/cjs/react-is.production.min.js`, + `${repoRoot}/node_modules/react-is/cjs/react-is.development.js`, + `${repoRoot}/node_modules/prop-types/factoryWithTypeCheckers.js`, + `${repoRoot}/node_modules/prop-types/factoryWithThrowingShims.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedShadowPropTypesIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTransformPropTypes.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/deprecatedPropType.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/UIManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/DummyUIManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/PaperUIManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/NativeUIManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/UIManagerProperties.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTextStylePropTypes.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewStylePropTypes.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/processTransform.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/MatrixMath.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/View/View.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/View/ViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/codegenNativeCommands.js`, + `${repoRoot}/node_modules/react-native/Libraries/Renderer/shims/ReactNative.js`, + `${repoRoot}/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/InitializeCore.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpGlobals.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpPerformance.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpSystrace.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpErrorHandling.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/ExceptionsManager.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/wrapNativeSuper.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/isNativeFunction.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/construct.js`, + `${repoRoot}/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/Data/LogBoxData.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/Data/LogBoxLog.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/Data/LogBoxSymbolication.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/Devtools/symbolicateStackTrace.js`, + `${repoRoot}/node_modules/@babel/runtime/regenerator/index.js`, + `${repoRoot}/node_modules/regenerator-runtime/runtime.js`, + `${repoRoot}/node_modules/react-native/Libraries/NativeModules/specs/NativeSourceCode.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/Devtools/getDevServer.js`, + `${repoRoot}/node_modules/react-native/Libraries/Network/fetch.js`, + `${repoRoot}/node_modules/whatwg-fetch/dist/fetch.umd.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/Data/parseLogBoxLog.js`, + `${repoRoot}/node_modules/react-native/Libraries/UTFSequence.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/Devtools/parseErrorStack.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/Devtools/parseHermesStack.js`, + `${repoRoot}/node_modules/stacktrace-parser/dist/stack-trace-parser.cjs.js`, + `${repoRoot}/node_modules/react-native/Libraries/NativeModules/specs/NativeLogBox.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/NativeExceptionsManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/polyfillPromise.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/PolyfillFunctions.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpRegeneratorRuntime.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpTimers.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/Timers/JSTimers.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/Timers/NativeTiming.js`, + `${repoRoot}/node_modules/fbjs/lib/performanceNow.js`, + `${repoRoot}/node_modules/fbjs/lib/performance.js`, + `${repoRoot}/node_modules/fbjs/lib/ExecutionEnvironment.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpXHR.js`, + `${repoRoot}/node_modules/react-native/Libraries/Network/XMLHttpRequest.js`, + `${repoRoot}/node_modules/react-native/Libraries/Blob/BlobManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/Blob/NativeBlobModule.js`, + `${repoRoot}/node_modules/react-native/Libraries/Blob/Blob.js`, + `${repoRoot}/node_modules/react-native/Libraries/Blob/BlobRegistry.js`, + `${repoRoot}/node_modules/event-target-shim/dist/event-target-shim.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/GlobalPerformanceLogger.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/createPerformanceLogger.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/infoLog.js`, + `${repoRoot}/node_modules/react-native/Libraries/Network/RCTNetworking.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Network/NativeNetworkingIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js`, + `${repoRoot}/node_modules/react-native/Libraries/Network/convertRequestBody.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/binaryToBase64.js`, + `${repoRoot}/node_modules/base64-js/index.js`, + `${repoRoot}/node_modules/react-native/Libraries/Network/FormData.js`, + `${repoRoot}/node_modules/react-native/Libraries/WebSocket/WebSocket.js`, + `${repoRoot}/node_modules/react-native/Libraries/WebSocket/NativeWebSocketModule.js`, + `${repoRoot}/node_modules/react-native/Libraries/WebSocket/WebSocketEvent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Blob/File.js`, + `${repoRoot}/node_modules/react-native/Libraries/Blob/FileReader.js`, + `${repoRoot}/node_modules/react-native/Libraries/Blob/NativeFileReaderModule.js`, + `${repoRoot}/node_modules/react-native/Libraries/Blob/URL.js`, + `${repoRoot}/node_modules/abort-controller/dist/abort-controller.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpAlert.js`, + `${repoRoot}/node_modules/react-native/Libraries/Alert/Alert.js`, + `${repoRoot}/node_modules/react-native/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js`, + `${repoRoot}/node_modules/react-native/Libraries/Alert/RCTAlertManager.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Alert/NativeAlertManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpNavigator.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpBatchedBridge.js`, + `${repoRoot}/node_modules/react-native/Libraries/HeapCapture/HeapCapture.js`, + `${repoRoot}/node_modules/react-native/Libraries/HeapCapture/NativeJSCHeapCapture.js`, + `${repoRoot}/node_modules/react-native/Libraries/Performance/SamplingProfiler.js`, + `${repoRoot}/node_modules/react-native/Libraries/Performance/NativeJSCSamplingProfiler.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/RCTLog.js`, + `${repoRoot}/node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/JSDevSupportModule.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/NativeJSDevSupport.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/HMRClient.js`, + `${repoRoot}/node_modules/react-native/Libraries/NativeModules/specs/NativeRedBox.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/DevSettings.js`, + `${repoRoot}/node_modules/react-native/Libraries/NativeModules/specs/NativeDevSettings.js`, + `${repoRoot}/node_modules/metro/src/lib/bundle-modules/HMRClient.js`, + `${repoRoot}/node_modules/eventemitter3/index.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/LoadingView.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/NativeDevLoadingView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/HMRClientProdShim.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpSegmentFetcher.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/checkNativeVersion.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/ReactNativeVersionCheck.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/ReactNativeVersion.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpDeveloperTools.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpReactDevTools.js`, + `${repoRoot}/node_modules/react-devtools-core/dist/backend.js`, + `${repoRoot}/node_modules/react-native/Libraries/AppState/AppState.js`, + `${repoRoot}/node_modules/react-native/Libraries/AppState/NativeAppState.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/logError.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/View/ReactNativeViewViewConfig.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/differ/insetsDiffer.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/differ/matricesDiffer.js`, + `${repoRoot}/node_modules/react-native/Libraries/JSInspector/JSInspector.js`, + `${repoRoot}/node_modules/react-native/Libraries/JSInspector/NetworkAgent.js`, + `${repoRoot}/node_modules/react-native/Libraries/JSInspector/InspectorAgent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/setUpReactRefresh.js`, + `${repoRoot}/node_modules/react-refresh/runtime.js`, + `${repoRoot}/node_modules/react-refresh/cjs/react-refresh-runtime.production.min.js`, + `${repoRoot}/node_modules/react-refresh/cjs/react-refresh-runtime.development.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactPrivate/ReactNativePrivateInterface.js`, + `${repoRoot}/node_modules/react-native/Libraries/EventEmitter/RCTEventEmitter.js`, + `${repoRoot}/node_modules/react-native/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/getNativeComponentAttributes.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/differ/pointsDiffer.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/processColorArray.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/resolveAssetSource.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/AssetRegistry.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/AssetSourceResolver.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/assetPathUtils.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputViewConfig.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/RCTSinglelineTextInputViewConfig.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/ReactFiberErrorDialog.js`, + `${repoRoot}/node_modules/scheduler/index.js`, + `${repoRoot}/node_modules/scheduler/cjs/scheduler.production.min.js`, + `${repoRoot}/node_modules/scheduler/cjs/scheduler.development.js`, + `${repoRoot}/node_modules/scheduler/tracing.js`, + `${repoRoot}/node_modules/scheduler/cjs/scheduler-tracing.production.min.js`, + `${repoRoot}/node_modules/scheduler/cjs/scheduler-tracing.development.js`, + `${repoRoot}/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/registerGeneratedViewConfig.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/verifyComponentAttributeEquivalence.js`, + `${repoRoot}/node_modules/react-native/Libraries/Text/TextAncestor.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/codegenNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Button.js`, + `${repoRoot}/node_modules/react-native/Libraries/Text/Text.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTextPropTypes.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedEdgeInsetsPropType.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedStyleSheetPropType.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/deprecatedCreateStrictShapeTypeChecker.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/View/ReactNativeViewAttributes.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/Touchable.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/BoundingDimensions.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/PooledClass.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/Position.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/AppleTV/TVEventHandler.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/AppleTV/NativeTVNavigationEventEmitter.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Sound/SoundManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Sound/NativeSoundManager.js`, + `${repoRoot}/node_modules/fbjs/lib/keyMirror.js`, + `${repoRoot}/node_modules/fbjs/lib/invariant.js`, + `${repoRoot}/node_modules/nullthrows/nullthrows.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js`, + `${repoRoot}/node_modules/react-native/Libraries/Pressability/Pressability.js`, + `${repoRoot}/node_modules/react-native/Libraries/Pressability/HoverState.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/Rect.js`, + `${repoRoot}/node_modules/react-native/Libraries/Pressability/PressabilityDebug.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/TVTouchable.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/Animated.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/AnimatedMock.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/AnimatedEvent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedValue.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedInterpolation.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedNode.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/NativeAnimatedHelper.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/NativeAnimatedModule.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedWithChildren.js`, + `${repoRoot}/node_modules/react-native/Libraries/Interaction/InteractionManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/Interaction/TaskQueue.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedAddition.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedDiffClamp.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedDivision.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedModulo.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedMultiplication.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedProps.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedStyle.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedTransform.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedSubtraction.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedTracking.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedValueXY.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/animations/DecayAnimation.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/animations/Animation.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/animations/SpringAnimation.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/SpringConfig.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/animations/TimingAnimation.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/Easing.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/bezier.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/createAnimatedComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/setAndForwardRef.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/components/AnimatedFlatList.js`, + `${repoRoot}/node_modules/react-native/Libraries/Lists/FlatList.js`, + `${repoRoot}/node_modules/react-native/Libraries/Lists/VirtualizedList.js`, + `${repoRoot}/node_modules/react-native/Libraries/Interaction/Batchinator.js`, + `${repoRoot}/node_modules/react-native/Libraries/Lists/FillRateHelper.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewViewConfig.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollResponder.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewCommands.js`, + `${repoRoot}/node_modules/react-native/Libraries/Interaction/FrameRateLogger.js`, + `${repoRoot}/node_modules/react-native/Libraries/Interaction/NativeFrameRateLogger.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Keyboard/Keyboard.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Keyboard/NativeKeyboardObserver.js`, + `${repoRoot}/node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/dismissKeyboard.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ScrollView/processDecelerationRate.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/splitLayoutProps.js`, + `${repoRoot}/node_modules/react-native/Libraries/Lists/ViewabilityHelper.js`, + `${repoRoot}/node_modules/react-native/Libraries/Lists/VirtualizeUtils.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/components/AnimatedImage.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/Image.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/NativeImageLoaderIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/ImageViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/ImageViewViewConfig.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedImagePropType.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedImageSourcePropType.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/components/AnimatedScrollView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/components/AnimatedSectionList.js`, + `${repoRoot}/node_modules/react-native/Libraries/Lists/SectionList.js`, + `${repoRoot}/node_modules/react-native/Libraries/Lists/VirtualizedSectionList.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/components/AnimatedText.js`, + `${repoRoot}/node_modules/react-native/Libraries/Animated/src/components/AnimatedView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/CheckBox/CheckBox.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/ImageBackground.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/MaskedView/MaskedViewIOS.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/MaskedView/RCTMaskedViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Modal/Modal.js`, + `${repoRoot}/node_modules/react-native/Libraries/Modal/RCTModalHostViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/AppContainer.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/RootTagContext.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/Inspector.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/ElementBox.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/BorderBox.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/resolveBoxStyle.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/I18nManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/NativeI18nManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/InspectorPanel.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/ElementProperties.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/BoxInspector.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/StyleInspector.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/mapWithSeparator.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/Devtools/openFileInEditor.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/NetworkOverlay.js`, + `${repoRoot}/node_modules/react-native/Libraries/WebSocket/WebSocketInterceptor.js`, + `${repoRoot}/node_modules/react-native/Libraries/Network/XHRInterceptor.js`, + `${repoRoot}/node_modules/react-native/Libraries/Inspector/PerformanceOverlay.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/LogBoxNotificationContainer.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxNotification.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxButton.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxStyle.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxMessage.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxImages/close.png`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/LogBox.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Picker/Picker.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Picker/PickerAndroid.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Picker/PickerIOS.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Picker/RCTPickerNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Pressable/Pressable.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Pressable/useAndroidRippleForView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Pressability/usePressability.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Slider/Slider.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Slider/SliderNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Switch/Switch.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Switch/AndroidSwitchNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Switch/SwitchNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/StatusBar/StatusBar.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/TextInput.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewPropTypes.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewAccessibility.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js`, + `${repoRoot}/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/ActionSheetIOS/NativeActionSheetManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/Appearance.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/NativeAppearance.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/DebugEnvironment.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/AppRegistry.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/HeadlessJsTaskError.js`, + `${repoRoot}/node_modules/react-native/Libraries/BugReporting/BugReporting.js`, + `${repoRoot}/node_modules/react-native/Libraries/BugReporting/NativeBugReporting.js`, + `${repoRoot}/node_modules/react-native/Libraries/BugReporting/dumpReactTree.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/SceneTracker.js`, + `${repoRoot}/node_modules/react-native/Libraries/ReactNative/renderApplication.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/PerformanceLoggerContext.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/BackHandler.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Renderer/shims/ReactFabric.js`, + `${repoRoot}/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js`, + `${repoRoot}/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/LogBoxInspectorContainer.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspector.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/AnsiHighlight.js`, + `${repoRoot}/node_modules/anser/lib/index.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorSection.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorFooter.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/DeviceInfo.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxImages/loader.png`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxInspectorHeader.js`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxImages/chevron-left.png`, + `${repoRoot}/node_modules/react-native/Libraries/LogBox/UI/LogBoxImages/chevron-right.png`, + `${repoRoot}/node_modules/react-native/Libraries/Storage/AsyncStorage.js`, + `${repoRoot}/node_modules/react-native/Libraries/Storage/NativeAsyncStorage.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Clipboard/Clipboard.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/Clipboard/NativeClipboard.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/ImagePickerIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/Image/NativeImagePickerIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/Linking/Linking.js`, + `${repoRoot}/node_modules/react-native/Libraries/Linking/NativeLinking.js`, + `${repoRoot}/node_modules/react-native/Libraries/Interaction/PanResponder.js`, + `${repoRoot}/node_modules/react-native/Libraries/Interaction/TouchHistoryMath.js`, + `${repoRoot}/node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js`, + `${repoRoot}/node_modules/react-native/Libraries/PermissionsAndroid/NativePermissionsAndroid.js`, + `${repoRoot}/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/Settings/Settings.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Settings/NativeSettingsManager.js`, + `${repoRoot}/node_modules/react-native/Libraries/Share/Share.js`, + `${repoRoot}/node_modules/react-native/Libraries/Share/NativeShareModule.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.js`, + `${repoRoot}/node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/useColorScheme.js`, + `${repoRoot}/node_modules/use-subscription/index.js`, + `${repoRoot}/node_modules/use-subscription/cjs/use-subscription.production.min.js`, + `${repoRoot}/node_modules/use-subscription/cjs/use-subscription.development.js`, + `${repoRoot}/node_modules/react-native/Libraries/Utilities/useWindowDimensions.js`, + `${repoRoot}/node_modules/react-native/Libraries/Vibration/Vibration.js`, + `${repoRoot}/node_modules/react-native/Libraries/Vibration/NativeVibration.js`, + `${repoRoot}/node_modules/react-native/Libraries/YellowBox/YellowBoxDeprecated.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js`, + `${repoRoot}/node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesAndroid.js`, + `${repoRoot}/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedPointPropType.js`, + `${repoRoot}/packages/test-app/lib/src/App.js`, + `${repoRoot}/node_modules/react-native/Libraries/NewAppScreen/index.js`, + `${repoRoot}/node_modules/react-native/Libraries/NewAppScreen/components/Header.js`, + `${repoRoot}/node_modules/react-native/Libraries/NewAppScreen/components/Colors.js`, + `${repoRoot}/node_modules/react-native/Libraries/NewAppScreen/components/logo.png`, + `${repoRoot}/node_modules/react-native/Libraries/NewAppScreen/components/LearnMoreLinks.js`, + `${repoRoot}/node_modules/react-native/Libraries/Core/Devtools/openURLInBrowser.js`, + `${repoRoot}/node_modules/react-native/Libraries/NewAppScreen/components/DebugInstructions.js`, + `${repoRoot}/node_modules/react-native/Libraries/NewAppScreen/components/ReloadInstructions.js`, + `${repoRoot}/packages/test-app/lib/app.json`, + ], +}; + +describe("normalizePath()", () => { + test("trims Webpack URLs", () => { + expect(normalizePath("webpack:///file")).toBe("file"); + expect(normalizePath("webpack:////file")).toBe("/file"); + }); + + test("handles Windows paths", () => { + expect(normalizePath("C:\\Users\\Arnold\\source\\rnx-kit")).toBe( + "c:/users/arnold/source/rnx-kit" + ); + }); +}); + +describe("resolveModule()", () => { + test("throws if a package is not found", () => { + expect(() => resolveModule("/this-package-does-not-exist")).toThrow( + "Unable to find package" + ); + }); +}); + +describe("gatherModules()", () => { + test("builds module map from a basic source map", () => { + const modules = gatherModulesFromSources(bundleSourceMap.sources, {}); + + expect(Object.keys(modules).sort()).toMatchSnapshot(); + + Object.keys(modules).forEach((name) => { + expect(Object.keys(modules[name]).length).toBe(1); + }); + + expect(gatherModules(bundleSourceMap, {})).toEqual(modules); + }); +}); diff --git a/packages/metro-plugin-duplicates-checker/tsconfig.json b/packages/metro-plugin-duplicates-checker/tsconfig.json new file mode 100644 index 000000000..89647d9c7 --- /dev/null +++ b/packages/metro-plugin-duplicates-checker/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "rnx-kit-scripts/tsconfig.json", + "include": ["src"] +} diff --git a/scripts/package.json b/scripts/package.json index 2d587f5cf..8efcc7e7d 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -12,8 +12,12 @@ "depcheck": "just-scripts depcheck", "prettier": "node ./lib/just-scripts.js prettier" }, - "devDependencies": { + "dependencies": { + "@babel/core": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@babel/preset-typescript": "^7.0.0", "@types/jest": "^26.0.0", + "babel-jest": "^26.6.3", "chalk": "^4.1.0", "depcheck": "^1.0.0", "jest": "^26.0.0", diff --git a/scripts/src/tasks/depcheck.js b/scripts/src/tasks/depcheck.js index 7b3ab5dc3..6afd7fc17 100644 --- a/scripts/src/tasks/depcheck.js +++ b/scripts/src/tasks/depcheck.js @@ -14,9 +14,9 @@ function mergeOneLevel(a, b = {}) { return result; } -function scriptsDevDeps() { +function scriptsDeps() { const config = require("rnx-kit-scripts/package.json"); - return Object.keys(config.devDependencies); + return Object.keys(config.dependencies); } function depcheckTask() { @@ -31,7 +31,7 @@ function depcheckTask() { const options = mergeOneLevel( { ignorePatterns: ["*eslint*", "/lib/*", "/lib-commonjs/*"], - ignoreMatches: ["rnx-kit-scripts", ...scriptsDevDeps()], + ignoreMatches: ["rnx-kit-scripts", ...scriptsDeps()], specials: [ depcheck.special.eslint, depcheck.special.webpack, diff --git a/yarn.lock b/yarn.lock index 30d9d4d50..0fbea78ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -165,7 +165,7 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.8": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.8": version "7.13.13" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5" integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ== @@ -231,6 +231,14 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-hoist-variables@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" + integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== + dependencies: + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" @@ -266,11 +274,20 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== +"@babel/helper-remap-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" + integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-wrap-function" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" @@ -312,6 +329,16 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== +"@babel/helper-wrap-function@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" + integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helpers@^7.13.10": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" @@ -335,6 +362,15 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df" integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" + integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ== + 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" + "@babel/plugin-external-helpers@^7.0.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.12.13.tgz#65ef9f4576297250dc601d2aa334769790d9966d" @@ -342,7 +378,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-proposal-class-properties@^7.0.0": +"@babel/plugin-proposal-async-generator-functions@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" + integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== + 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" + +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== @@ -350,6 +395,14 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-dynamic-import@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" + integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-export-default-from@^7.0.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.13.tgz#f110284108a9b2b96f01b15b3be9e54c2610a989" @@ -358,7 +411,31 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-export-default-from" "^7.12.13" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0": +"@babel/plugin-proposal-export-namespace-from@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" + integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" + integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a" + integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== @@ -366,7 +443,15 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-object-rest-spread@^7.0.0": +"@babel/plugin-proposal-numeric-separator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" + integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== @@ -377,7 +462,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.13.0" -"@babel/plugin-proposal-optional-catch-binding@^7.0.0": +"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== @@ -385,7 +470,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.0.0": +"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ== @@ -394,6 +479,22 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-proposal-private-methods@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" + integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" + integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -408,14 +509,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-dynamic-import@^7.0.0": +"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== @@ -429,6 +530,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.13", "@babel/plugin-syntax-flow@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" @@ -457,7 +565,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -471,7 +579,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -499,7 +607,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== @@ -513,28 +621,37 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-arrow-functions@^7.0.0": +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-block-scoped-functions@^7.0.0": +"@babel/plugin-transform-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" + integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoping@^7.0.0": +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-classes@^7.0.0": +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== @@ -547,21 +664,36 @@ "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0": +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-destructuring@^7.0.0": +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-exponentiation-operator@^7.0.0": +"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" + integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-duplicate-keys@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" + integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== @@ -577,14 +709,14 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-flow" "^7.12.13" -"@babel/plugin-transform-for-of@^7.0.0": +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-function-name@^7.0.0": +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== @@ -592,21 +724,30 @@ "@babel/helper-function-name" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-literals@^7.0.0": +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-member-expression-literals@^7.0.0": +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-modules-commonjs@^7.0.0": +"@babel/plugin-transform-modules-amd@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" + integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== @@ -616,6 +757,39 @@ "@babel/helper-simple-access" "^7.12.13" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" + integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== + dependencies: + "@babel/helper-hoist-variables" "^7.13.0" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-identifier" "^7.12.11" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" + integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" + integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + +"@babel/plugin-transform-new-target@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" + integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-object-assign@^7.0.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.13.tgz#d9b9200a69e03403a813e44a933ad9f4bddfd050" @@ -623,7 +797,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-object-super@^7.0.0": +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== @@ -638,7 +812,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-property-literals@^7.0.0": +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== @@ -677,13 +851,20 @@ "@babel/plugin-syntax-jsx" "^7.12.13" "@babel/types" "^7.13.12" -"@babel/plugin-transform-regenerator@^7.0.0": +"@babel/plugin-transform-regenerator@^7.0.0", "@babel/plugin-transform-regenerator@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== dependencies: regenerator-transform "^0.14.2" +"@babel/plugin-transform-reserved-words@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" + integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-runtime@^7.0.0": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz#a1e40d22e2bf570c591c9c7e5ab42d6bf1e419e1" @@ -696,14 +877,14 @@ babel-plugin-polyfill-regenerator "^0.1.2" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.0.0": +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-spread@^7.0.0": +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== @@ -711,21 +892,28 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.0.0": +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-template-literals@^7.0.0": +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-typescript@^7.5.0": +"@babel/plugin-transform-typeof-symbol@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" + integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typescript@^7.13.0", "@babel/plugin-transform-typescript@^7.5.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== @@ -734,7 +922,14 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-typescript" "^7.12.13" -"@babel/plugin-transform-unicode-regex@^7.0.0": +"@babel/plugin-transform-unicode-escapes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" + integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== @@ -742,6 +937,101 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" +"@babel/preset-env@^7.0.0": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.12.tgz#6dff470478290582ac282fb77780eadf32480237" + integrity sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA== + dependencies: + "@babel/compat-data" "^7.13.12" + "@babel/helper-compilation-targets" "^7.13.10" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" + "@babel/plugin-proposal-async-generator-functions" "^7.13.8" + "@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" + "@babel/plugin-proposal-json-strings" "^7.13.8" + "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@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.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" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.12.13" + "@babel/plugin-transform-arrow-functions" "^7.13.0" + "@babel/plugin-transform-async-to-generator" "^7.13.0" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-classes" "^7.13.0" + "@babel/plugin-transform-computed-properties" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.13.0" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@babel/plugin-transform-for-of" "^7.13.0" + "@babel/plugin-transform-function-name" "^7.12.13" + "@babel/plugin-transform-literals" "^7.12.13" + "@babel/plugin-transform-member-expression-literals" "^7.12.13" + "@babel/plugin-transform-modules-amd" "^7.13.0" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/plugin-transform-modules-systemjs" "^7.13.8" + "@babel/plugin-transform-modules-umd" "^7.13.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@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-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.13.0" + "@babel/plugin-transform-sticky-regex" "^7.12.13" + "@babel/plugin-transform-template-literals" "^7.13.0" + "@babel/plugin-transform-typeof-symbol" "^7.12.13" + "@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.12" + babel-plugin-polyfill-corejs2 "^0.1.4" + babel-plugin-polyfill-corejs3 "^0.1.3" + babel-plugin-polyfill-regenerator "^0.1.2" + core-js-compat "^3.9.0" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.0.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" + integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-typescript" "^7.13.0" + "@babel/register@^7.0.0": version "7.13.14" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.13.14.tgz#bbfa8f4f027c2ebc432e8e69e078b632605f2d9b" @@ -783,7 +1073,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": +"@babel/types@^7.0.0", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.13.14" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d" integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ== @@ -1538,6 +1828,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.56.tgz#010c9e047c3ff09ddcd11cbb6cf5912725cdc2b3" integrity sha512-LuAa6t1t0Bfw4CuSR0UITsm1hP17YL+u82kfHGrHUWdhlBtH7sa7jGY5z7glGaIj/WDYDkRtgGd+KCjCzxBW1w== +"@types/node@^12.0.0": + version "12.20.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.7.tgz#1cb61fd0c85cb87e728c43107b5fd82b69bc9ef8" + integrity sha512-gWL8VUkg8VRaCAUgG9WmhefMqHmMblxe2rVpMF86nZY/+ZysU+BkAp+3cz03AixWDSSz0ks5WX59yAhv/cDwFA== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -3089,7 +3384,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.8.1: +core-js-compat@^3.8.1, core-js-compat@^3.9.0: version "3.10.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.10.0.tgz#3600dc72869673c110215ee7a005a8609dea0fe1" integrity sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ== @@ -7251,6 +7546,13 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"