@samitouri / QOS-React / commits / 00a58cdab1

Option to validate output with ESLint

Adds a new compiler option `validateNoUseBeforeDefine`, which enables a post-codegen pass to validate that there are no usages of values before they are defined (which causes a ReferenceError at runtime). This can occur when a value is accessed when its in the TDZ (temporary dead zone), after the hoisted _declaration_ but before the variable is defined: ```javascript function foo() { x; // x is in the TDX here: the binding from the subsequent statement is hoisted, but x is not yet defined. let x; } ``` * The validation is off by default, but enabled in transform-test * The validation crashes compilation, rather than bailout, because the code has already been mangled and we can't roll back at the point the validation runs. * The validator uses ESLint's no-use-before-define rule by printing the program to source and then configuring ESLint to use Hermes parser. * transform-test now supports tests prefixed with "error." to indicate tests for which compilation is expected to crash (not just bailout), and the expect file includes the error message.

Joseph Savona committed Oct 19, 2022 at 13:00 UTC 00a58cdab16569521585b5fabedb9b1e55534921
10 files changed +663 -40
compiler/forget/package.json
+3
@@ -39,11 +39,14 @@
39 "@hpcc-js/wasm": "^1.15.0",
40 "@testing-library/react": "^13.4.0",
41 "@tsconfig/node16-strictest": "^1.0.3",
42 + "@types/eslint": "^8.4.6",
43 "@types/invariant": "^2.2.35",
44 "@types/jest": "^29.0.3",
45 "@types/node": "^18.7.18",
46 "babel-jest": "^29.0.3",
47 "concurrently": "^7.4.0",
48 + "eslint": "^8.25.0",
49 + "hermes-eslint": "^0.9.0",
50 "jest": "^29.0.3",
51 "jest-environment-jsdom": "^29.0.3",
52 "react": "^18.2.0",
compiler/forget/src/BackEnd/PostCodegenValidator.ts new
+39
@@ -0,0 +1,39 @@
1 +/**
2 + * Copyright (c) Facebook, Inc. and its affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + */
7 +
8 +import type { CompilerContext } from "../CompilerContext";
9 +import * as LIR from "../LIR";
10 +import { PassKind, PassName } from "../Pass";
11 +
12 +/**
13 + * Optional post-codegen pass to validate the generated source code does not introduce
14 + * bugs. Enable by passing a `postCodegenValidator` validation function in compiler options.
15 + */
16 +export default {
17 + name: PassName.Validator,
18 + kind: PassKind.LIRProg as const,
19 + run,
20 +};
21 +
22 +export function run(lirProg: LIR.Prog, context: CompilerContext) {
23 + const postCodegenValidator = context.opts.postCodegenValidator;
24 + if (postCodegenValidator === null) {
25 + return;
26 + }
27 + const prog = lirProg.ir.ast;
28 + const source = String(prog);
29 + const errors = postCodegenValidator(source);
30 + if (errors != null && errors.length > 0) {
31 + const messages = [];
32 + for (const error of errors) {
33 + messages.push(error.message);
34 + }
35 + throw new Error(
36 + `Generated code failed validation:\n${messages.join("\n")}`
37 + );
38 + }
39 +}
compiler/forget/src/BackEnd/index.ts
+1
@@ -14,4 +14,5 @@ export { default as DumpLIR } from "./DumpLIR";
14 export { default as JSGen } from "./JSGen";
15 export { default as LIRGen } from "./LIRGen";
16 export { default as MemoCacheAlloc } from "./MemoCacheAlloc";
17 +export { default as PostCodegenValidator } from "./PostCodegenValidator";
18 export { default as SanityCheck } from "./SanityCheck";
compiler/forget/src/CompilerDriver.ts
+3
@@ -58,6 +58,9 @@ export function createCompilerDriver(
58 // JS Generation.
59 passManager.addPass(BE.JSGen);
60
61 + // Optionally sanity-check the transformed output
62 + passManager.addPass(BE.PostCodegenValidator);
63 +
64 passManager.runAll();
65 },
66 };
compiler/forget/src/CompilerOptions.ts
+28
@@ -43,6 +43,23 @@ export type CompilerOptions = {
43 * Capitalized identifier names that can be used in call expressions.
44 */
45 allowedCapitalizedUserFunctions: Set<string>;
46 +
47 + /**
48 + * Function to validate source code after codegen. The function is called
49 + * with the *transformed* source code and should return:
50 + * - null or an empty array if there are no errors
51 + * - a list of validation erros with line and column information as well
52 + * as a message describing the error.
53 + */
54 + postCodegenValidator:
55 + | ((source: string) => Array<PostCodegenValidationError> | null)
56 + | null;
57 +};
58 +
59 +type PostCodegenValidationError = {
60 + line: number;
61 + column: number;
62 + message: string;
63 };
64
65 /**
@@ -114,6 +131,16 @@ export function parseCompilerOptions(
131 }
132 resOpts.allowedCapitalizedUserFunctions = allowedCapitalizedUserFunctions;
133 }
134 + if (hasOwnProperty(inputOpts, "postCodegenValidator")) {
135 + const postCodegenValidator = inputOpts.postCodegenValidator;
136 + if (
137 + postCodegenValidator !== null &&
138 + typeof postCodegenValidator !== "function"
139 + ) {
140 + throw `Invalid value for 'postCodegenValidator'`;
141 + }
142 + resOpts.postCodegenValidator = postCodegenValidator;
143 + }
144 return resOpts;
145 }
146
@@ -128,5 +155,6 @@ export function createCompilerOptions(): CompilerOptions {
155 optIn: false,
156 logger: noopLogger,
157 allowedCapitalizedUserFunctions: new Set(),
158 + postCodegenValidator: null,
159 };
160 }
compiler/forget/src/Pass.ts
+1
@@ -28,6 +28,7 @@ export enum PassName {
28 DumpLIR,
29 JSGen,
30 DumpCFG,
31 + Validator,
32 }
33
34 export function isBackEndPass(pass: PassName) {
compiler/forget/src/__tests__/CompilerOptions-test.ts
+1
@@ -65,6 +65,7 @@ describe("CompilerOptions", () => {
65 stopPass: PassName.JSGen,
66 logger: noopLogger,
67 allowedCapitalizedUserFunctions: new Set(),
68 + postCodegenValidator: null,
69 };
70 expect(parseCompilerOptions(fullInput)).toEqual(fullInput);
71 });
compiler/forget/src/__tests__/test-utils/validateNoUseBeforeDefine.ts new
+36
@@ -0,0 +1,36 @@
1 +/**
2 + * Copyright (c) Facebook, Inc. and its affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + */
7 +
8 +// @ts-ignore-line
9 +import { Linter } from "../../../node_modules/eslint/lib/linter";
10 +// @ts-ignore-line
11 +import * as HermesESLint from "hermes-eslint";
12 +
13 +const ESLINT_CONFIG: Linter.Config = {
14 + parser: "hermes-eslint",
15 + parserOptions: {
16 + sourceType: "module",
17 + },
18 + rules: {
19 + "no-use-before-define": "error",
20 + },
21 +};
22 +
23 +/**
24 + * Post-codegen pass to validate that the generated code does not introduce bugs.
25 + * Note that the compiler currently incorrectly reorders code in some cases: this
26 + * step detects this using ESLint's no-use-before-define rule at its strictest
27 + * setting.
28 + */
29 +export default function validateNoUseBeforeDefine(
30 + source: string
31 +): Array<{ line: number; column: number; message: string }> | null {
32 + const linter = new Linter();
33 + linter.defineParser("hermes-eslint", HermesESLint);
34 + const errors = linter.verify(source, ESLINT_CONFIG);
35 + return errors;
36 +}
compiler/forget/src/__tests__/transform-test.ts
+54 -28
@@ -24,6 +24,7 @@ import { printDiagnostic } from "../Diagnostic";
24 import { createArrayLogger } from "../Logger";
25 import { PassName } from "../Pass";
26 import generateTestsFromFixtures from "./test-utils/generateTestsFromFixtures";
27 +import validateNoUseBeforeDefine from "./test-utils/validateNoUseBeforeDefine";
28 import * as TestDriver from "./TestDriver";
29
30 enum DebugPragma {
@@ -55,7 +56,7 @@ describe("React Forget", () => {
56 };
57 let flags: CompilerFlags = createCompilerFlags();
58 let outputKinds: OutputKind[] = [];
58 - let stopPass: PassName = PassName.JSGen;
59 + let stopPass: PassName = PassName.Validator;
60 for (const match of matches) {
61 const [, key, value] = match;
62 switch (key as DebugPragma) {
@@ -109,28 +110,48 @@ describe("React Forget", () => {
110 let realConsoleLog = console.log;
111
112 const logs: string[] = [];
112 - const compilerOutputs = TestDriver.compile(
113 - input,
114 - {
115 - outputKinds,
116 - stopPass,
117 - flags,
118 - logger: createArrayLogger(logs),
119 - allowedCapitalizedUserFunctions: new Set([
120 - "ReactForgetSecretInternals",
121 - ]),
122 - },
123 - compileOptions
124 - );
113 + let compilerOutputs = null;
114 + let error = null;
115 + try {
116 + compilerOutputs = TestDriver.compile(
117 + input,
118 + {
119 + outputKinds,
120 + stopPass,
121 + flags,
122 + logger: createArrayLogger(logs),
123 + allowedCapitalizedUserFunctions: new Set([
124 + "ReactForgetSecretInternals",
125 + ]),
126 + postCodegenValidator: validateNoUseBeforeDefine,
127 + },
128 + compileOptions
129 + );
130 + } catch (_error) {
131 + error = _error;
132 + }
133 const context = getMostRecentCompilerContext();
134 const logOutput =
135 logs.length === 0
136 ? "(Empty)"
137 : `${wrapWithTripleBackticks(logs.join("\n\n"))}`;
138
139 + const expectError = file.startsWith("error.");
140 + const hasError = error !== null;
141 + if (hasError !== expectError) {
142 + if (expectError) {
143 + throw new Error(
144 + `Expected Forget to error on '${file}' but it did not.\nLogs:\n${logOutput}`
145 + );
146 + } else {
147 + console.error(error);
148 + throw new Error(`Expected '${file}' to succeed but it errored`);
149 + }
150 + }
151 +
152 const hasBailout = context.bailouts.length > 0;
153 const expectBailout = file.startsWith("bailout.");
133 - if (hasBailout !== expectBailout) {
154 + if (!hasError && hasBailout !== expectBailout) {
155 if (expectBailout) {
156 throw new Error(
157 `Expected Forget to bail out on '${file}' but it did not.\nLogs:\n${logOutput}`
@@ -141,20 +162,25 @@ describe("React Forget", () => {
162 }
163 }
164
144 - const prettyOutputs = stringifyCompilerOutputs(compilerOutputs);
145 -
165 const outputs: string[] = [];
147 - outputKinds.forEach((outputKind) => {
148 - const prettyOutput = prettyOutputs[outputKind];
149 - const isJS = isSyntacticallyValidJS(outputKind);
150 -
151 - outputs.push(
152 - `## ${outputKind}\n\n${wrapWithTripleBackticks(
153 - prettyOutput ?? "",
154 - isJS ? "js" : ""
155 - )}`
156 - );
157 - });
166 + if (compilerOutputs !== null) {
167 + const prettyOutputs = stringifyCompilerOutputs(compilerOutputs);
168 +
169 + outputKinds.forEach((outputKind) => {
170 + const prettyOutput = prettyOutputs[outputKind];
171 + const isJS = isSyntacticallyValidJS(outputKind);
172 +
173 + outputs.push(
174 + `## ${outputKind}\n\n${wrapWithTripleBackticks(
175 + prettyOutput ?? "",
176 + isJS ? "js" : ""
177 + )}`
178 + );
179 + });
180 + }
181 + if (error !== null) {
182 + outputs.push(error.message);
183 + }
184
185 const diagnosticsOutput =
186 context.diagnostics.length === 0
compiler/forget/yarn.lock
+497 -12
@@ -537,6 +537,21 @@
537 dependencies:
538 "@jridgewell/trace-mapping" "0.3.9"
539
540 +"@eslint/eslintrc@^1.3.3":
541 + version "1.3.3"
542 + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95"
543 + integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==
544 + dependencies:
545 + ajv "^6.12.4"
546 + debug "^4.3.2"
547 + espree "^9.4.0"
548 + globals "^13.15.0"
549 + ignore "^5.2.0"
550 + import-fresh "^3.2.1"
551 + js-yaml "^4.1.0"
552 + minimatch "^3.1.2"
553 + strip-json-comments "^3.1.1"
554 +
555 "@hpcc-js/wasm@^1.15.0":
556 version "1.16.5"
557 resolved "https://registry.yarnpkg.com/@hpcc-js/wasm/-/wasm-1.16.5.tgz#4dbfd517b4f92ffe17922ea02a434be60c8aef26"
@@ -544,6 +559,25 @@
559 dependencies:
560 yargs "17.5.1"
561
562 +"@humanwhocodes/config-array@^0.10.5":
563 + version "0.10.7"
564 + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc"
565 + integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==
566 + dependencies:
567 + "@humanwhocodes/object-schema" "^1.2.1"
568 + debug "^4.1.1"
569 + minimatch "^3.0.4"
570 +
571 +"@humanwhocodes/module-importer@^1.0.1":
572 + version "1.0.1"
573 + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
574 + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
575 +
576 +"@humanwhocodes/object-schema@^1.2.1":
577 + version "1.2.1"
578 + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
579 + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
580 +
581 "@istanbuljs/load-nyc-config@^1.0.0":
582 version "1.1.0"
583 resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
@@ -810,6 +844,27 @@
844 "@jridgewell/resolve-uri" "^3.0.3"
845 "@jridgewell/sourcemap-codec" "^1.4.10"
846
847 +"@nodelib/fs.scandir@2.1.5":
848 + version "2.1.5"
849 + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
850 + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
851 + dependencies:
852 + "@nodelib/fs.stat" "2.0.5"
853 + run-parallel "^1.1.9"
854 +
855 +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
856 + version "2.0.5"
857 + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
858 + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
859 +
860 +"@nodelib/fs.walk@^1.2.3":
861 + version "1.2.8"
862 + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
863 + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
864 + dependencies:
865 + "@nodelib/fs.scandir" "2.1.5"
866 + fastq "^1.6.0"
867 +
868 "@sinclair/typebox@^0.24.1":
869 version "0.24.42"
870 resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.42.tgz#a74b608d494a1f4cc079738e050142a678813f52"
@@ -920,6 +975,19 @@
975 dependencies:
976 "@babel/types" "^7.3.0"
977
978 +"@types/eslint@^8.4.6":
979 + version "8.4.6"
980 + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207"
981 + integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==
982 + dependencies:
983 + "@types/estree" "*"
984 + "@types/json-schema" "*"
985 +
986 +"@types/estree@*":
987 + version "1.0.0"
988 + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
989 + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
990 +
991 "@types/graceful-fs@^4.1.3":
992 version "4.1.5"
993 resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15"
@@ -976,6 +1044,11 @@
1044 "@types/tough-cookie" "*"
1045 parse5 "^7.0.0"
1046
1047 +"@types/json-schema@*":
1048 + version "7.0.11"
1049 + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
1050 + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
1051 +
1052 "@types/node@*", "@types/node@^18.7.18":
1053 version "18.7.19"
1054 resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.19.tgz#ad83aa9b7af470fab7e0f562be87e97dc8ffe08e"
@@ -1054,6 +1127,11 @@ acorn-globals@^6.0.0:
1127 acorn "^7.1.1"
1128 acorn-walk "^7.1.1"
1129
1130 +acorn-jsx@^5.3.2:
1131 + version "5.3.2"
1132 + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
1133 + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
1134 +
1135 acorn-walk@^7.1.1:
1136 version "7.2.0"
1137 resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
@@ -1069,7 +1147,7 @@ acorn@^7.1.1:
1147 resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
1148 integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
1149
1072 -acorn@^8.4.1, acorn@^8.7.1:
1150 +acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.0:
1151 version "8.8.0"
1152 resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
1153 integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
@@ -1081,6 +1159,16 @@ agent-base@6:
1159 dependencies:
1160 debug "4"
1161
1162 +ajv@^6.10.0, ajv@^6.12.4:
1163 + version "6.12.6"
1164 + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
1165 + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
1166 + dependencies:
1167 + fast-deep-equal "^3.1.1"
1168 + fast-json-stable-stringify "^2.0.0"
1169 + json-schema-traverse "^0.4.1"
1170 + uri-js "^4.2.2"
1171 +
1172 ansi-escapes@^4.2.1:
1173 version "4.3.2"
1174 resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
@@ -1137,11 +1225,21 @@ argparse@^1.0.7:
1225 dependencies:
1226 sprintf-js "~1.0.2"
1227
1228 +argparse@^2.0.1:
1229 + version "2.0.1"
1230 + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
1231 + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
1232 +
1233 aria-query@^5.0.0:
1234 version "5.0.2"
1235 resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.2.tgz#0b8a744295271861e1d933f8feca13f9b70cfdc1"
1236 integrity sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==
1237
1238 +array-union@^2.1.0:
1239 + version "2.1.0"
1240 + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
1241 + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
1242 +
1243 asynckit@^0.4.0:
1244 version "0.4.0"
1245 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -1410,7 +1508,7 @@ create-require@^1.1.0:
1508 resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
1509 integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
1510
1413 -cross-spawn@^7.0.3:
1511 +cross-spawn@^7.0.2, cross-spawn@^7.0.3:
1512 version "7.0.3"
1513 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
1514 integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -1455,7 +1553,7 @@ date-fns@^2.29.1:
1553 resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8"
1554 integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==
1555
1458 -debug@4, debug@^4.1.0, debug@^4.1.1:
1556 +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2:
1557 version "4.3.4"
1558 resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
1559 integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -1472,7 +1570,7 @@ dedent@^0.7.0:
1570 resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
1571 integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
1572
1475 -deep-is@~0.1.3:
1573 +deep-is@^0.1.3, deep-is@~0.1.3:
1574 version "0.1.4"
1575 resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
1576 integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
@@ -1510,6 +1608,20 @@ diff@^4.0.1:
1608 resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
1609 integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
1610
1611 +dir-glob@^3.0.1:
1612 + version "3.0.1"
1613 + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
1614 + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
1615 + dependencies:
1616 + path-type "^4.0.0"
1617 +
1618 +doctrine@^3.0.0:
1619 + version "3.0.0"
1620 + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
1621 + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
1622 + dependencies:
1623 + esutils "^2.0.2"
1624 +
1625 dom-accessibility-api@^0.5.9:
1626 version "0.5.14"
1627 resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56"
@@ -1564,6 +1676,11 @@ escape-string-regexp@^2.0.0:
1676 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
1677 integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
1678
1679 +escape-string-regexp@^4.0.0:
1680 + version "4.0.0"
1681 + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
1682 + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
1683 +
1684 escodegen@^2.0.0:
1685 version "2.0.0"
1686 resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
@@ -1576,12 +1693,104 @@ escodegen@^2.0.0:
1693 optionalDependencies:
1694 source-map "~0.6.1"
1695
1696 +eslint-scope@^7.1.1:
1697 + version "7.1.1"
1698 + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
1699 + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
1700 + dependencies:
1701 + esrecurse "^4.3.0"
1702 + estraverse "^5.2.0"
1703 +
1704 +eslint-utils@^3.0.0:
1705 + version "3.0.0"
1706 + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
1707 + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
1708 + dependencies:
1709 + eslint-visitor-keys "^2.0.0"
1710 +
1711 +eslint-visitor-keys@^2.0.0:
1712 + version "2.1.0"
1713 + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
1714 + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
1715 +
1716 +eslint-visitor-keys@^3.3.0:
1717 + version "3.3.0"
1718 + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
1719 + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
1720 +
1721 +eslint@^8.25.0:
1722 + version "8.25.0"
1723 + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.25.0.tgz#00eb962f50962165d0c4ee3327708315eaa8058b"
1724 + integrity sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==
1725 + dependencies:
1726 + "@eslint/eslintrc" "^1.3.3"
1727 + "@humanwhocodes/config-array" "^0.10.5"
1728 + "@humanwhocodes/module-importer" "^1.0.1"
1729 + ajv "^6.10.0"
1730 + chalk "^4.0.0"
1731 + cross-spawn "^7.0.2"
1732 + debug "^4.3.2"
1733 + doctrine "^3.0.0"
1734 + escape-string-regexp "^4.0.0"
1735 + eslint-scope "^7.1.1"
1736 + eslint-utils "^3.0.0"
1737 + eslint-visitor-keys "^3.3.0"
1738 + espree "^9.4.0"
1739 + esquery "^1.4.0"
1740 + esutils "^2.0.2"
1741 + fast-deep-equal "^3.1.3"
1742 + file-entry-cache "^6.0.1"
1743 + find-up "^5.0.0"
1744 + glob-parent "^6.0.1"
1745 + globals "^13.15.0"
1746 + globby "^11.1.0"
1747 + grapheme-splitter "^1.0.4"
1748 + ignore "^5.2.0"
1749 + import-fresh "^3.0.0"
1750 + imurmurhash "^0.1.4"
1751 + is-glob "^4.0.0"
1752 + js-sdsl "^4.1.4"
1753 + js-yaml "^4.1.0"
1754 + json-stable-stringify-without-jsonify "^1.0.1"
1755 + levn "^0.4.1"
1756 + lodash.merge "^4.6.2"
1757 + minimatch "^3.1.2"
1758 + natural-compare "^1.4.0"
1759 + optionator "^0.9.1"
1760 + regexpp "^3.2.0"
1761 + strip-ansi "^6.0.1"
1762 + strip-json-comments "^3.1.0"
1763 + text-table "^0.2.0"
1764 +
1765 +espree@^9.4.0:
1766 + version "9.4.0"
1767 + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a"
1768 + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==
1769 + dependencies:
1770 + acorn "^8.8.0"
1771 + acorn-jsx "^5.3.2"
1772 + eslint-visitor-keys "^3.3.0"
1773 +
1774 esprima@^4.0.0, esprima@^4.0.1:
1775 version "4.0.1"
1776 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
1777 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
1778
1584 -estraverse@^5.2.0:
1779 +esquery@^1.4.0:
1780 + version "1.4.0"
1781 + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
1782 + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
1783 + dependencies:
1784 + estraverse "^5.1.0"
1785 +
1786 +esrecurse@^4.3.0:
1787 + version "4.3.0"
1788 + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
1789 + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
1790 + dependencies:
1791 + estraverse "^5.2.0"
1792 +
1793 +estraverse@^5.1.0, estraverse@^5.2.0:
1794 version "5.3.0"
1795 resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
1796 integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
@@ -1622,16 +1831,39 @@ expect@^29.0.0, expect@^29.0.3:
1831 jest-message-util "^29.0.3"
1832 jest-util "^29.0.3"
1833
1625 -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0:
1834 +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
1835 + version "3.1.3"
1836 + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1837 + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1838 +
1839 +fast-glob@^3.2.9:
1840 + version "3.2.12"
1841 + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
1842 + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
1843 + dependencies:
1844 + "@nodelib/fs.stat" "^2.0.2"
1845 + "@nodelib/fs.walk" "^1.2.3"
1846 + glob-parent "^5.1.2"
1847 + merge2 "^1.3.0"
1848 + micromatch "^4.0.4"
1849 +
1850 +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
1851 version "2.1.0"
1852 resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1853 integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1854
1630 -fast-levenshtein@~2.0.6:
1855 +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
1856 version "2.0.6"
1857 resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
1858 integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
1859
1860 +fastq@^1.6.0:
1861 + version "1.13.0"
1862 + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
1863 + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
1864 + dependencies:
1865 + reusify "^1.0.4"
1866 +
1867 fb-watchman@^2.0.0:
1868 version "2.0.2"
1869 resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
@@ -1639,6 +1871,13 @@ fb-watchman@^2.0.0:
1871 dependencies:
1872 bser "2.1.1"
1873
1874 +file-entry-cache@^6.0.1:
1875 + version "6.0.1"
1876 + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
1877 + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
1878 + dependencies:
1879 + flat-cache "^3.0.4"
1880 +
1881 fill-range@^7.0.1:
1882 version "7.0.1"
1883 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -1654,6 +1893,27 @@ find-up@^4.0.0, find-up@^4.1.0:
1893 locate-path "^5.0.0"
1894 path-exists "^4.0.0"
1895
1896 +find-up@^5.0.0:
1897 + version "5.0.0"
1898 + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
1899 + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
1900 + dependencies:
1901 + locate-path "^6.0.0"
1902 + path-exists "^4.0.0"
1903 +
1904 +flat-cache@^3.0.4:
1905 + version "3.0.4"
1906 + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
1907 + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
1908 + dependencies:
1909 + flatted "^3.1.0"
1910 + rimraf "^3.0.2"
1911 +
1912 +flatted@^3.1.0:
1913 + version "3.2.7"
1914 + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
1915 + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
1916 +
1917 form-data@^4.0.0:
1918 version "4.0.0"
1919 resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -1707,6 +1967,20 @@ get-stream@^6.0.0:
1967 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1968 integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
1969
1970 +glob-parent@^5.1.2:
1971 + version "5.1.2"
1972 + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1973 + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1974 + dependencies:
1975 + is-glob "^4.0.1"
1976 +
1977 +glob-parent@^6.0.1:
1978 + version "6.0.2"
1979 + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
1980 + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
1981 + dependencies:
1982 + is-glob "^4.0.3"
1983 +
1984 glob@^7.1.3, glob@^7.1.4:
1985 version "7.2.3"
1986 resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
@@ -1724,11 +1998,35 @@ globals@^11.1.0:
1998 resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
1999 integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
2000
2001 +globals@^13.15.0:
2002 + version "13.17.0"
2003 + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4"
2004 + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==
2005 + dependencies:
2006 + type-fest "^0.20.2"
2007 +
2008 +globby@^11.1.0:
2009 + version "11.1.0"
2010 + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
2011 + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
2012 + dependencies:
2013 + array-union "^2.1.0"
2014 + dir-glob "^3.0.1"
2015 + fast-glob "^3.2.9"
2016 + ignore "^5.2.0"
2017 + merge2 "^1.4.1"
2018 + slash "^3.0.0"
2019 +
2020 graceful-fs@^4.2.9:
2021 version "4.2.10"
2022 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
2023 integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
2024
2025 +grapheme-splitter@^1.0.4:
2026 + version "1.0.4"
2027 + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
2028 + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
2029 +
2030 has-flag@^3.0.0:
2031 version "3.0.0"
2032 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -1758,6 +2056,27 @@ has@^1.0.3:
2056 dependencies:
2057 function-bind "^1.1.1"
2058
2059 +hermes-eslint@^0.9.0:
2060 + version "0.9.0"
2061 + resolved "https://registry.yarnpkg.com/hermes-eslint/-/hermes-eslint-0.9.0.tgz#f1423abe3dfd959257430d61a9bccd4700b59e09"
2062 + integrity sha512-rlkK51UpGwo0ZWg8hu8DVICth7RfGSvaEJzFflos8bDOYm/d842/J3IXi0lB9R9waOp4VGGSc8VDmh+a9p2Q2w==
2063 + dependencies:
2064 + esrecurse "^4.3.0"
2065 + hermes-estree "0.9.0"
2066 + hermes-parser "0.9.0"
2067 +
2068 +hermes-estree@0.9.0:
2069 + version "0.9.0"
2070 + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.9.0.tgz#026e0abe6db1dcf50a81a79014b779a83db3b814"
2071 + integrity sha512-5DZ7Y0CbHVk8zPqgRCvqp8iw+P05svnQDI1aJFjdqCfXJ/1CZ+8aYpGlhJ29zCG5SE5duGTzSxogAYYI4QqXqw==
2072 +
2073 +hermes-parser@0.9.0:
2074 + version "0.9.0"
2075 + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.9.0.tgz#ede3044d50479c61843cef5bbdcea83933d4e4ec"
2076 + integrity sha512-IcvJIlAn+9tpHkP+HTsxWKrIdQPp0gvGrrQmxlL4XnNS+Oh6R/Fpxbcoflm2kY3zgQjEvxZxLiK/2+k3/5wsrw==
2077 + dependencies:
2078 + hermes-estree "0.9.0"
2079 +
2080 html-encoding-sniffer@^3.0.0:
2081 version "3.0.0"
2082 resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9"
@@ -1799,6 +2118,19 @@ iconv-lite@0.6.3:
2118 dependencies:
2119 safer-buffer ">= 2.1.2 < 3.0.0"
2120
2121 +ignore@^5.2.0:
2122 + version "5.2.0"
2123 + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
2124 + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
2125 +
2126 +import-fresh@^3.0.0, import-fresh@^3.2.1:
2127 + version "3.3.0"
2128 + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
2129 + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
2130 + dependencies:
2131 + parent-module "^1.0.0"
2132 + resolve-from "^4.0.0"
2133 +
2134 import-local@^3.0.2:
2135 version "3.1.0"
2136 resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
@@ -1844,6 +2176,11 @@ is-core-module@^2.9.0:
2176 dependencies:
2177 has "^1.0.3"
2178
2179 +is-extglob@^2.1.1:
2180 + version "2.1.1"
2181 + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
2182 + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
2183 +
2184 is-fullwidth-code-point@^3.0.0:
2185 version "3.0.0"
2186 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
@@ -1854,6 +2191,13 @@ is-generator-fn@^2.0.0:
2191 resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
2192 integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
2193
2194 +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
2195 + version "4.0.3"
2196 + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
2197 + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
2198 + dependencies:
2199 + is-extglob "^2.1.1"
2200 +
2201 is-number@^7.0.0:
2202 version "7.0.0"
2203 resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
@@ -2289,6 +2633,11 @@ jest@^29.0.3:
2633 import-local "^3.0.2"
2634 jest-cli "^29.0.3"
2635
2636 +js-sdsl@^4.1.4:
2637 + version "4.1.5"
2638 + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a"
2639 + integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==
2640 +
2641 "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
2642 version "4.0.0"
2643 resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -2302,6 +2651,13 @@ js-yaml@^3.13.1:
2651 argparse "^1.0.7"
2652 esprima "^4.0.0"
2653
2654 +js-yaml@^4.1.0:
2655 + version "4.1.0"
2656 + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
2657 + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
2658 + dependencies:
2659 + argparse "^2.0.1"
2660 +
2661 jsdom@^20.0.0:
2662 version "20.0.0"
2663 resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.0.tgz#882825ac9cc5e5bbee704ba16143e1fa78361ebf"
@@ -2345,6 +2701,16 @@ json-parse-even-better-errors@^2.3.0:
2701 resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
2702 integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
2703
2704 +json-schema-traverse@^0.4.1:
2705 + version "0.4.1"
2706 + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
2707 + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
2708 +
2709 +json-stable-stringify-without-jsonify@^1.0.1:
2710 + version "1.0.1"
2711 + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
2712 + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
2713 +
2714 json5@^2.1.0, json5@^2.2.1:
2715 version "2.2.1"
2716 resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
@@ -2360,6 +2726,14 @@ leven@^3.1.0:
2726 resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
2727 integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
2728
2729 +levn@^0.4.1:
2730 + version "0.4.1"
2731 + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
2732 + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
2733 + dependencies:
2734 + prelude-ls "^1.2.1"
2735 + type-check "~0.4.0"
2736 +
2737 levn@~0.3.0:
2738 version "0.3.0"
2739 resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -2380,11 +2754,23 @@ locate-path@^5.0.0:
2754 dependencies:
2755 p-locate "^4.1.0"
2756
2757 +locate-path@^6.0.0:
2758 + version "6.0.0"
2759 + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
2760 + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
2761 + dependencies:
2762 + p-locate "^5.0.0"
2763 +
2764 lodash.memoize@4.x:
2765 version "4.1.2"
2766 resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
2767 integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
2768
2769 +lodash.merge@^4.6.2:
2770 + version "4.6.2"
2771 + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
2772 + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
2773 +
2774 lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.21:
2775 version "4.17.21"
2776 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@@ -2433,6 +2819,11 @@ merge-stream@^2.0.0:
2819 resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
2820 integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
2821
2822 +merge2@^1.3.0, merge2@^1.4.1:
2823 + version "1.4.1"
2824 + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
2825 + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
2826 +
2827 micromatch@^4.0.4:
2828 version "4.0.5"
2829 resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
@@ -2458,7 +2849,7 @@ mimic-fn@^2.1.0:
2849 resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
2850 integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
2851
2461 -minimatch@^3.0.4, minimatch@^3.1.1:
2852 +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
2853 version "3.1.2"
2854 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
2855 integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -2543,6 +2934,18 @@ optionator@^0.8.1:
2934 type-check "~0.3.2"
2935 word-wrap "~1.2.3"
2936
2937 +optionator@^0.9.1:
2938 + version "0.9.1"
2939 + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
2940 + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
2941 + dependencies:
2942 + deep-is "^0.1.3"
2943 + fast-levenshtein "^2.0.6"
2944 + levn "^0.4.1"
2945 + prelude-ls "^1.2.1"
2946 + type-check "^0.4.0"
2947 + word-wrap "^1.2.3"
2948 +
2949 p-limit@^2.2.0:
2950 version "2.3.0"
2951 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
@@ -2550,7 +2953,7 @@ p-limit@^2.2.0:
2953 dependencies:
2954 p-try "^2.0.0"
2955
2553 -p-limit@^3.1.0:
2956 +p-limit@^3.0.2, p-limit@^3.1.0:
2957 version "3.1.0"
2958 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
2959 integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
@@ -2564,11 +2967,25 @@ p-locate@^4.1.0:
2967 dependencies:
2968 p-limit "^2.2.0"
2969
2970 +p-locate@^5.0.0:
2971 + version "5.0.0"
2972 + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
2973 + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
2974 + dependencies:
2975 + p-limit "^3.0.2"
2976 +
2977 p-try@^2.0.0:
2978 version "2.2.0"
2979 resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
2980 integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
2981
2982 +parent-module@^1.0.0:
2983 + version "1.0.1"
2984 + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
2985 + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
2986 + dependencies:
2987 + callsites "^3.0.0"
2988 +
2989 parse-json@^5.2.0:
2990 version "5.2.0"
2991 resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
@@ -2606,6 +3023,11 @@ path-parse@^1.0.7:
3023 resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
3024 integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
3025
3026 +path-type@^4.0.0:
3027 + version "4.0.0"
3028 + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
3029 + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
3030 +
3031 picocolors@^1.0.0:
3032 version "1.0.0"
3033 resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@@ -2628,6 +3050,11 @@ pkg-dir@^4.2.0:
3050 dependencies:
3051 find-up "^4.0.0"
3052
3053 +prelude-ls@^1.2.1:
3054 + version "1.2.1"
3055 + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
3056 + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
3057 +
3058 prelude-ls@~1.1.2:
3059 version "1.1.2"
3060 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -2679,7 +3106,7 @@ psl@^1.1.33:
3106 resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
3107 integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
3108
2682 -punycode@^2.1.1:
3109 +punycode@^2.1.0, punycode@^2.1.1:
3110 version "2.1.1"
3111 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
3112 integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
@@ -2689,6 +3116,11 @@ querystringify@^2.1.1:
3116 resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
3117 integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
3118
3119 +queue-microtask@^1.2.2:
3120 + version "1.2.3"
3121 + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
3122 + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
3123 +
3124 react-dom@^18.2.0:
3125 version "18.2.0"
3126 resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
@@ -2724,6 +3156,11 @@ regenerator-runtime@^0.13.4:
3156 resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
3157 integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
3158
3159 +regexpp@^3.2.0:
3160 + version "3.2.0"
3161 + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
3162 + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
3163 +
3164 require-directory@^2.1.1:
3165 version "2.1.1"
3166 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -2741,6 +3178,11 @@ resolve-cwd@^3.0.0:
3178 dependencies:
3179 resolve-from "^5.0.0"
3180
3181 +resolve-from@^4.0.0:
3182 + version "4.0.0"
3183 + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
3184 + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
3185 +
3186 resolve-from@^5.0.0:
3187 version "5.0.0"
3188 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
@@ -2760,6 +3202,25 @@ resolve@^1.20.0, resolve@^1.3.2:
3202 path-parse "^1.0.7"
3203 supports-preserve-symlinks-flag "^1.0.0"
3204
3205 +reusify@^1.0.4:
3206 + version "1.0.4"
3207 + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
3208 + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
3209 +
3210 +rimraf@^3.0.2:
3211 + version "3.0.2"
3212 + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
3213 + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
3214 + dependencies:
3215 + glob "^7.1.3"
3216 +
3217 +run-parallel@^1.1.9:
3218 + version "1.2.0"
3219 + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
3220 + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
3221 + dependencies:
3222 + queue-microtask "^1.2.2"
3223 +
3224 rxjs@^7.0.0:
3225 version "7.5.6"
3226 resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc"
@@ -2909,7 +3370,7 @@ strip-final-newline@^2.0.0:
3370 resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
3371 integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
3372
2912 -strip-json-comments@^3.1.1:
3373 +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
3374 version "3.1.1"
3375 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
3376 integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
@@ -2970,6 +3431,11 @@ test-exclude@^6.0.0:
3431 glob "^7.1.4"
3432 minimatch "^3.0.4"
3433
3434 +text-table@^0.2.0:
3435 + version "0.2.0"
3436 + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
3437 + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
3438 +
3439 tmpl@1.0.5:
3440 version "1.0.5"
3441 resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
@@ -3052,6 +3518,13 @@ tslib@^2.1.0:
3518 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
3519 integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
3520
3521 +type-check@^0.4.0, type-check@~0.4.0:
3522 + version "0.4.0"
3523 + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
3524 + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
3525 + dependencies:
3526 + prelude-ls "^1.2.1"
3527 +
3528 type-check@~0.3.2:
3529 version "0.3.2"
3530 resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -3064,6 +3537,11 @@ type-detect@4.0.8:
3537 resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
3538 integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
3539
3540 +type-fest@^0.20.2:
3541 + version "0.20.2"
3542 + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
3543 + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
3544 +
3545 type-fest@^0.21.3:
3546 version "0.21.3"
3547 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
@@ -3087,6 +3565,13 @@ update-browserslist-db@^1.0.9:
3565 escalade "^3.1.1"
3566 picocolors "^1.0.0"
3567
3568 +uri-js@^4.2.2:
3569 + version "4.4.1"
3570 + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
3571 + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
3572 + dependencies:
3573 + punycode "^2.1.0"
3574 +
3575 url-parse@^1.5.3:
3576 version "1.5.10"
3577 resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
@@ -3162,7 +3647,7 @@ which@^2.0.1:
3647 dependencies:
3648 isexe "^2.0.0"
3649
3165 -word-wrap@~1.2.3:
3650 +word-wrap@^1.2.3, word-wrap@~1.2.3:
3651 version "1.2.3"
3652 resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
3653 integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==