feat: duplicate packages checker (#104)

This commit is contained in:
Tommy Nguyen 2021-04-08 19:26:32 +02:00 коммит произвёл GitHub
Родитель 778831a92e
Коммит fd4a29e778
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
16 изменённых файлов: 1358 добавлений и 39 удалений

Просмотреть файл

@ -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"
}

Просмотреть файл

@ -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. |

Просмотреть файл

@ -0,0 +1,6 @@
module.exports = {
presets: [
["@babel/preset-env", { targets: { node: "current" } }],
"@babel/preset-typescript",
],
};

Просмотреть файл

@ -0,0 +1,2 @@
const { configureJust } = require("rnx-kit-scripts");
configureJust();

Просмотреть файл

@ -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$"
}
}

Просмотреть файл

@ -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<string>;
};
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;
};

Просмотреть файл

@ -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);
}

Просмотреть файл

@ -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<string>;
};
};
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;
}

Просмотреть файл

@ -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<void> {
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);
}
});
}

Просмотреть файл

@ -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",
]
`;

Просмотреть файл

@ -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);
});
});

Просмотреть файл

@ -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);
});
});

Просмотреть файл

@ -0,0 +1,4 @@
{
"extends": "rnx-kit-scripts/tsconfig.json",
"include": ["src"]
}

Просмотреть файл

@ -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",

Просмотреть файл

@ -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,

372
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"