1
0
Fork 0

Add TypeScript to the linting process (#13495)

This commit allows developers to write TypeScript files and lint them
(either via a language server in their editor of choice or through the
`yarn lint` command).

The new TypeScript configuration as well as the updated ESLint
configuration not only includes support for parsing TypeScript files,
but also provides some compatibility between JavaScript and TypeScript.
That is, it makes it possible for a TypeScript file that imports a
JavaScript file or a JavaScript file that imports a TypeScript file to
be linted.

Note that this commit does not integrate TypeScript into the build
system yet, so we cannot start converting files to TypeScript and
pushing them to the repo until that final step is complete.
This commit is contained in:
Elliot Winkler 2022-03-21 12:54:47 -06:00 committed by GitHub
parent ea4181d227
commit 4447727eb6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 2563 additions and 103 deletions

View File

@ -19,6 +19,7 @@ ignores:
- '@metamask/forwarder'
- '@metamask/test-dapp'
- '@metamask/design-tokens' # Only imported in index.css
- '@tsconfig/node14' # required dynamically by TS, used in tsconfig.json
- '@sentry/cli' # invoked as `sentry-cli`
- 'chromedriver'
- 'depcheck' # ooo meta

View File

@ -7,8 +7,9 @@ module.exports = {
ignorePatterns: [
'app/vendor/**',
'builds/**/*',
'dist/**/*',
'development/chromereload.js',
'dist/**/*',
'node_modules/**/*',
],
overrides: [
/**
@ -41,6 +42,7 @@ module.exports = {
path.resolve(__dirname, '.eslintrc.base.js'),
path.resolve(__dirname, '.eslintrc.node.js'),
path.resolve(__dirname, '.eslintrc.babel.js'),
path.resolve(__dirname, '.eslintrc.typescript-compat.js'),
],
parserOptions: {
sourceType: 'module',
@ -50,6 +52,23 @@ module.exports = {
// trust that all of the files specified above are indeed modules.
'import/unambiguous': 'off',
},
settings: {
'import/resolver': {
// When determining the location of a `require()` call, use Node's
// resolution algorithm, then fall back to TypeScript's. This allows
// TypeScript files (which Node's algorithm doesn't recognize) to be
// imported from JavaScript files, while also preventing issues when
// using packages like `prop-types` (where we would otherwise get "No
// default export found in imported module 'prop-types'" from
// TypeScript because imports work differently there).
node: {},
typescript: {
// Always try to resolve types under `<root>/@types` directory even
// it doesn't contain any source code, like `@types/unist`
alwaysTryTypes: true,
},
},
},
},
/**
* Modules (ES module syntax)
@ -75,10 +94,82 @@ module.exports = {
path.resolve(__dirname, '.eslintrc.base.js'),
path.resolve(__dirname, '.eslintrc.node.js'),
path.resolve(__dirname, '.eslintrc.babel.js'),
path.resolve(__dirname, '.eslintrc.typescript-compat.js'),
],
parserOptions: {
sourceType: 'module',
},
settings: {
'import/resolver': {
// When determining the location of an `import`, use Node's resolution
// algorithm, then fall back to TypeScript's. This allows TypeScript
// files (which Node's algorithm doesn't recognize) to be imported
// from JavaScript files, while also preventing issues when using
// packages like `prop-types` (where we would otherwise get "No
// default export found in imported module 'prop-types'" from
// TypeScript because imports work differently there).
node: {},
typescript: {
// Always try to resolve types under `<root>/@types` directory even
// it doesn't contain any source code, like `@types/unist`
alwaysTryTypes: true,
},
},
},
},
/**
* TypeScript files
*/
{
files: ['*.{ts,tsx}'],
extends: [
path.resolve(__dirname, '.eslintrc.base.js'),
'@metamask/eslint-config-typescript',
path.resolve(__dirname, '.eslintrc.typescript-compat.js'),
],
rules: {
// Turn these off, as it's recommended by typescript-eslint.
// See: <https://typescript-eslint.io/docs/linting/troubleshooting#eslint-plugin-import>
'import/named': 'off',
'import/namespace': 'off',
'import/default': 'off',
'import/no-named-as-default-member': 'off',
// Disabled due to incompatibility with Record<string, unknown>.
// See: <https://github.com/Microsoft/TypeScript/issues/15300#issuecomment-702872440>
'@typescript-eslint/consistent-type-definitions': 'off',
// Modified to include the 'ignoreRestSiblings' option.
// TODO: Migrate this rule change back into `@metamask/eslint-config`
'@typescript-eslint/no-unused-vars': [
'error',
{
vars: 'all',
args: 'all',
argsIgnorePattern: '[_]+',
ignoreRestSiblings: true,
},
],
},
settings: {
'import/resolver': {
// When determining the location of an `import`, prefer TypeScript's
// resolution algorithm. Note that due to how we've configured
// TypeScript in `tsconfig.json`, we are able to import JavaScript
// files from TypeScript files.
typescript: {
// Always try to resolve types under `<root>/@types` directory even
// it doesn't contain any source code, like `@types/unist`
alwaysTryTypes: true,
},
},
},
},
{
files: ['*.d.ts'],
parserOptions: {
sourceType: 'script',
},
},
/**

View File

@ -0,0 +1,8 @@
module.exports = {
settings: {
'import/extensions': ['.js', '.ts', '.tsx'],
'import/parsers': {
'@typescript-eslint/parser': ['.ts', '.tsx'],
},
},
};

3
.gitignore vendored
View File

@ -46,3 +46,6 @@ notes.txt
.nyc_output
.metamaskrc
# TypeScript
tsout/

View File

@ -39,9 +39,11 @@ require('@babel/eslint-parser');
require('@babel/eslint-plugin');
require('@metamask/eslint-config');
require('@metamask/eslint-config-nodejs');
require('@typescript-eslint/parser');
require('eslint');
require('eslint-config-prettier');
require('eslint-import-resolver-node');
require('eslint-import-resolver-typescript');
require('eslint-plugin-import');
require('eslint-plugin-jsdoc');
require('eslint-plugin-node');

View File

@ -1,7 +0,0 @@
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs"
},
"include": ["ui/**/*.js", "app/**/*.js", "shared/**/*.js"]
}

View File

@ -19,6 +19,8 @@
"@babel/eslint-plugin": true,
"@metamask/eslint-config": true,
"@metamask/eslint-config-nodejs": true,
"@metamask/eslint-config-typescript": true,
"@typescript-eslint/eslint-plugin": true,
"eslint": true,
"eslint-config-prettier": true,
"eslint-plugin-import": true,
@ -29,20 +31,58 @@
"eslint-plugin-react-hooks": true
}
},
"eslint-module-utils": {
"@typescript-eslint/eslint-plugin": {
"packages": {
"eslint-import-resolver-node": true,
"@babel/eslint-parser": true
"@typescript-eslint/experimental-utils": true,
"@typescript-eslint/scope-manager": true,
"debug": true,
"eslint": true,
"ignore": true,
"regexpp": true,
"semver": true,
"tsutils": true,
"typescript": true
}
},
"node-sass": {
"native": true
"@typescript-eslint/experimental-utils": {
"builtin": {
"path": true
},
"packages": {
"@typescript-eslint/scope-manager": true,
"@typescript-eslint/types": true,
"eslint": true,
"eslint-scope": true,
"eslint-utils": true
}
},
"@typescript-eslint/scope-manager": {
"packages": {
"@typescript-eslint/types": true,
"@typescript-eslint/visitor-keys": true
}
},
"@typescript-eslint/visitor-keys": {
"packages": {
"eslint-visitor-keys": true
}
},
"eslint-module-utils": {
"packages": {
"@babel/eslint-parser": true,
"@typescript-eslint/parser": true,
"eslint-import-resolver-node": true,
"eslint-import-resolver-typescript": true
}
},
"module-deps": {
"packages": {
"loose-envify": true
}
},
"node-sass": {
"native": true
},
"sass": {
"env": "unfrozen",
"builtin": {
@ -51,6 +91,17 @@
"globals": {
"Buffer": true
}
},
"tsutils": {
"packages": {
"typescript": true,
"tslib": true
}
},
"typescript": {
"globals": {
"globalThis": true
}
}
}
}

View File

@ -964,6 +964,48 @@
"unist-util-find-all-after": true
}
},
"@typescript-eslint/parser": {
"packages": {
"@typescript-eslint/scope-manager": true,
"@typescript-eslint/typescript-estree": true,
"debug": true,
"typescript": true
}
},
"@typescript-eslint/scope-manager": {
"packages": {
"@typescript-eslint/types": true,
"@typescript-eslint/visitor-keys": true
}
},
"@typescript-eslint/typescript-estree": {
"builtin": {
"fs": true,
"path": true
},
"globals": {
"console.log": true,
"console.warn": true,
"new": true,
"process": true,
"target": true
},
"packages": {
"@typescript-eslint/types": true,
"@typescript-eslint/visitor-keys": true,
"debug": true,
"globby": true,
"is-glob": true,
"semver": true,
"tsutils": true,
"typescript": true
}
},
"@typescript-eslint/visitor-keys": {
"packages": {
"eslint-visitor-keys": true
}
},
"JSONStream": {
"globals": {
"Buffer": true
@ -1982,6 +2024,22 @@
"resolve": true
}
},
"eslint-import-resolver-typescript": {
"builtin": {
"path": true
},
"globals": {
"console.warn": true,
"process.cwd": true
},
"packages": {
"debug": true,
"glob": true,
"is-glob": true,
"resolve": true,
"tsconfig-paths": true
}
},
"eslint-module-utils": {
"builtin": {
"crypto.createHash": true,
@ -2518,12 +2576,7 @@
"builtin": {
"assert": true,
"events.EventEmitter": true,
"fs.lstat": true,
"fs.lstatSync": true,
"fs.readdir": true,
"fs.readdirSync": true,
"fs.stat": true,
"fs.statSync": true,
"fs": true,
"path.join": true,
"path.resolve": true,
"util": true
@ -5056,17 +5109,41 @@
"builtin": {
"fs.existsSync": true,
"fs.lstatSync": true,
"fs.readFile": true,
"fs.readFileSync": true,
"fs.stat": true,
"fs.statSync": true,
"module._resolveFilename": true,
"module.builtinModules": true,
"path.dirname": true,
"path.isAbsolute": true,
"path.join": true,
"path.resolve": true
"path.resolve": true,
"path.sep": true
},
"globals": {
"console.warn": true,
"process.argv.slice": true,
"process.cwd": true,
"process.env": true
},
"packages": {
"json5": true,
"minimist": true,
"strip-bom": true
}
},
"tslib": {
"globals": {
"define": true
}
},
"tsutils": {
"packages": {
"tslib": true,
"typescript": true
}
},
"type-check": {
"packages": {
"prelude-ls": true
@ -5084,29 +5161,19 @@
"builtin": {
"buffer.Buffer": true,
"crypto": true,
"fs.closeSync": true,
"fs.mkdirSync": true,
"fs.openSync": true,
"fs.readFileSync": true,
"fs.readdirSync": true,
"fs.realpathSync": true,
"fs.statSync": true,
"fs.unlinkSync": true,
"fs.unwatchFile": true,
"fs.utimesSync": true,
"fs.watch": true,
"fs.watchFile": true,
"fs.writeFileSync": true,
"fs.writeSync": true,
"fs": true,
"inspector": true,
"os.EOL": true,
"os.platform": true,
"path.dirname": true,
"path.join": true,
"path.resolve": true
"path.resolve": true,
"perf_hooks.PerformanceObserver": true,
"perf_hooks.performance": true
},
"globals": {
"Intl": true,
"PerformanceObserver": true,
"TypeScript": "write",
"__dirname": true,
"__filename": true,
@ -5115,7 +5182,6 @@
"console.log": true,
"gc": true,
"globalThis": "write",
"onProfilerEvent": true,
"performance": true,
"process": true,
"setTimeout": true,

View File

@ -37,16 +37,21 @@
"test:coverage:jest": "yarn test:unit:jest --coverage --maxWorkers=2",
"ganache:start": "./development/run-ganache.sh",
"sentry:publish": "node ./development/sentry-publish.js",
"lint:prettier": "prettier '**/*.json'",
"lint": "yarn lint:prettier --check '**/*.json' && eslint . --ext js,snap --cache && yarn lint:styles",
"lint:fix": "yarn lint:prettier --write '**/*.json' && eslint . --ext js --cache --fix && yarn lint:styles --fix",
"lint": "yarn lint:prettier && yarn lint:eslint && yarn lint:tsc && yarn lint:styles",
"lint:fix": "yarn lint:prettier:fix && yarn lint:eslint:fix && yarn lint:styles:fix",
"lint:prettier": "prettier '**/*.json' --check",
"lint:prettier:fix": "prettier '**/*.json' --write",
"lint:changed": "{ git ls-files --others --exclude-standard ; git diff-index --name-only --diff-filter=d HEAD ; } | grep --regexp='[.]js$' | tr '\\n' '\\0' | xargs -0 eslint",
"lint:changed:fix": "{ git ls-files --others --exclude-standard ; git diff-index --name-only --diff-filter=d HEAD ; } | grep --regexp='[.]js$' | tr '\\n' '\\0' | xargs -0 eslint --fix",
"lint:changelog": "auto-changelog validate",
"lint:changelog:rc": "auto-changelog validate --rc",
"lint:eslint": "eslint . --ext js,ts,tsx,snap --cache",
"lint:eslint:fix": "yarn lint:eslint --fix",
"lint:lockfile": "lockfile-lint --path yarn.lock --allowed-hosts npm yarn github.com codeload.github.com --empty-hostname false --allowed-schemes \"https:\" \"git+https:\"",
"lint:shellcheck": "./development/shellcheck.sh",
"lint:styles": "stylelint '*/**/*.scss'",
"lint:lockfile": "lockfile-lint --path yarn.lock --allowed-hosts npm yarn github.com codeload.github.com --empty-hostname false --allowed-schemes \"https:\" \"git+https:\"",
"lint:styles:fix": "yarn lint:styles --fix",
"lint:tsc": "tsc --project tsconfig.json --noEmit",
"validate-source-maps": "node ./development/sourcemap-validator.js",
"verify-locales": "node ./development/verify-locale-strings.js",
"verify-locales:fix": "node ./development/verify-locale-strings.js --fix",
@ -244,6 +249,7 @@
"@metamask/eslint-config-jest": "^9.0.0",
"@metamask/eslint-config-mocha": "^9.0.0",
"@metamask/eslint-config-nodejs": "^9.0.0",
"@metamask/eslint-config-typescript": "^9.0.1",
"@metamask/forwarder": "^1.1.0",
"@metamask/test-dapp": "^5.0.0",
"@sentry/cli": "^1.58.0",
@ -264,7 +270,10 @@
"@testing-library/react": "^10.4.8",
"@testing-library/react-hooks": "^3.2.1",
"@testing-library/user-event": "^14.0.0-beta.12",
"@tsconfig/node14": "^1.0.1",
"@types/react": "^16.9.53",
"@typescript-eslint/eslint-plugin": "^4.20.0",
"@typescript-eslint/parser": "^4.20.0",
"addons-linter": "1.14.0",
"babelify": "^10.0.0",
"bify-module-groups": "^1.0.0",
@ -287,6 +296,7 @@
"eslint": "^7.23.0",
"eslint-config-prettier": "^8.1.0",
"eslint-import-resolver-node": "^0.3.4",
"eslint-import-resolver-typescript": "^2.5.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^24.3.4",
"eslint-plugin-jsdoc": "^37.0.3",
@ -357,6 +367,7 @@
"terser": "^5.7.0",
"through2": "^4.0.2",
"ttest": "^2.1.1",
"typescript": "~4.4.0",
"vinyl": "^2.2.1",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0",

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,68 @@
diff --git a/node_modules/await-semaphore/index.ts b/node_modules/await-semaphore/index.ts
deleted file mode 100644
index 69ce92a..0000000
--- a/node_modules/await-semaphore/index.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-export class Semaphore {
- private tasks: (() => void)[] = [];
- count: number;
-
- constructor(count: number) {
- this.count = count;
- }
-
- private sched() {
- if (this.count > 0 && this.tasks.length > 0) {
- this.count--;
- let next = this.tasks.shift();
- if (next === undefined) {
- throw "Unexpected undefined value in tasks list";
- }
-
- next();
- }
- }
-
- public acquire() {
- return new Promise<() => void>((res, rej) => {
- var task = () => {
- var released = false;
- res(() => {
- if (!released) {
- released = true;
- this.count++;
- this.sched();
- }
- });
- };
- this.tasks.push(task);
- if (process && process.nextTick) {
- process.nextTick(this.sched.bind(this));
- } else {
- setImmediate(this.sched.bind(this));
- }
- });
- }
-
- public use<T>(f: () => Promise<T>) {
- return this.acquire()
- .then(release => {
- return f()
- .then((res) => {
- release();
- return res;
- })
- .catch((err) => {
- release();
- throw err;
- });
- });
- }
-}
-
-export class Mutex extends Semaphore {
- constructor() {
- super(1);
- }
-}

View File

@ -0,0 +1,29 @@
diff --git a/node_modules/eslint-import-resolver-typescript/lib/cjs.js b/node_modules/eslint-import-resolver-typescript/lib/cjs.js
index 5aeddb5..1fe0cbf 100644
--- a/node_modules/eslint-import-resolver-typescript/lib/cjs.js
+++ b/node_modules/eslint-import-resolver-typescript/lib/cjs.js
@@ -49,13 +49,19 @@ function __spreadArray(to, from) {
var IMPORTER_NAME = 'eslint-import-resolver-typescript';
var log = debug__default['default'](IMPORTER_NAME);
-var defaultExtensions = __spreadArray(__spreadArray([
+/**
+ * In the original version of this package, `Object.keys(require.extensions)`
+ * gets added to `defaultExtensions`. `require.extensions` resolves to undefined
+ * when this file is run through LavaMoat, and ESLint emits a warning that
+ * `require.extensions` is deprecated anyway. So we hardcode this list here.
+ */
+var defaultExtensions = [
'.ts',
'.tsx',
- '.d.ts'
-], Object.keys(require.extensions)), [
- '.jsx',
-]);
+ '.d.ts',
+ '.js',
+ '.jsx'
+];
var interfaceVersion = 2;
/**
* @param {string} source the module to resolve; i.e './some-module'

View File

@ -0,0 +1,250 @@
diff --git a/node_modules/typescript/lib/typescript.js b/node_modules/typescript/lib/typescript.js
index 323de6f..367063a 100644
--- a/node_modules/typescript/lib/typescript.js
+++ b/node_modules/typescript/lib/typescript.js
@@ -24,11 +24,58 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
return to.concat(ar || Array.prototype.slice.call(from));
};
var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
+ __assign = function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
+ for (var p in s) {
+ if (Object.prototype.hasOwnProperty.call(s, p)) {
+ /**
+ * In the original version of this package, this was:
+ *
+ * t[p] = s[p]
+ *
+ * Unfortunately LavaMoat trips up on this, so we have to change
+ * it.
+ *
+ * Internally LavaMoat uses `lockdown` (part of SES, which is
+ * part of Endo) to freeze modifications to "intrinsics" — core
+ * things like `Object.prototype`, `Function.prototype`, etc.
+ * This will cause code which is responsible for said
+ * modifications to fail at runtime, because it makes the
+ * properties of these intrinsics non-writable.
+ *
+ * The reason we have to change *this* code is that later on,
+ * this `__assign` function is used to merge two objects, and
+ * one of those objects contains a `constructor` property. As we
+ * know, `constructor` is a special property, as it's a property
+ * on `Object.prototype` that stores the constructor used to
+ * create that object. But when used in this context, there is
+ * nothing inherently special about it it's just a property on
+ * an object we're setting. Unfortunately, that's not how it's
+ * being treated. Because `lockdown` freezes `Object.prototype`,
+ * `Object.prototype.constructor` is non-writable, and due to a
+ * "mistake" in the ES5 spec [1], that means `constructor` on
+ * *any* object is non-writable too. So an error is thrown when
+ * this code is executed.
+ *
+ * There is a way to get around this, which is to configure
+ * `lockdown` with the option `overrideTaming: 'severe'`.
+ * The mechanics of this option, as well as more information
+ * about the "mistake" this option solves, are explained here
+ * [2]. Unfortunately, we cannot enable this option because
+ * LavaMoat is the one running `lockdown` here [3]. So to work
+ * around this, we use `Object.defineProperty` to define the
+ * property we want. As this does not use property assignment
+ * (`object[key] = value`) but rather defines the property more
+ * directly, this bypasses the "override mistake".
+ *
+ * [1]: https://web.archive.org/web/20141230041441/http://wiki.ecmascript.org/doku.php?id=strawman:fixing_override_mistake
+ * [2]: https://github.com/endojs/endo/blob/864f086f87e1e7ef78a401a7550ff0aeb664bba0/packages/ses/src/enable-property-overrides.js#L28
+ * [3]: https://github.com/LavaMoat/LavaMoat/blob/7c15bf8ba34ba1a9ceb3ffe591b1b2bfb084bead/packages/core/src/kernelTemplate.js#L32-L43
+ */
+ Object.defineProperty(t, p, Object.getOwnPropertyDescriptor(s, p))
+ }
+ }
}
return t;
};
@@ -9820,87 +9867,94 @@ var ts;
}
ts.tokenIsIdentifierOrKeywordOrGreaterThan = tokenIsIdentifierOrKeywordOrGreaterThan;
/** @internal */
- ts.textToKeywordObj = (_a = {
- abstract: 126 /* AbstractKeyword */,
- any: 129 /* AnyKeyword */,
- as: 127 /* AsKeyword */,
- asserts: 128 /* AssertsKeyword */,
- bigint: 156 /* BigIntKeyword */,
- boolean: 132 /* BooleanKeyword */,
- break: 81 /* BreakKeyword */,
- case: 82 /* CaseKeyword */,
- catch: 83 /* CatchKeyword */,
- class: 84 /* ClassKeyword */,
- continue: 86 /* ContinueKeyword */,
- const: 85 /* ConstKeyword */
- },
- _a["" + "constructor"] = 133 /* ConstructorKeyword */,
- _a.debugger = 87 /* DebuggerKeyword */,
- _a.declare = 134 /* DeclareKeyword */,
- _a.default = 88 /* DefaultKeyword */,
- _a.delete = 89 /* DeleteKeyword */,
- _a.do = 90 /* DoKeyword */,
- _a.else = 91 /* ElseKeyword */,
- _a.enum = 92 /* EnumKeyword */,
- _a.export = 93 /* ExportKeyword */,
- _a.extends = 94 /* ExtendsKeyword */,
- _a.false = 95 /* FalseKeyword */,
- _a.finally = 96 /* FinallyKeyword */,
- _a.for = 97 /* ForKeyword */,
- _a.from = 154 /* FromKeyword */,
- _a.function = 98 /* FunctionKeyword */,
- _a.get = 135 /* GetKeyword */,
- _a.if = 99 /* IfKeyword */,
- _a.implements = 117 /* ImplementsKeyword */,
- _a.import = 100 /* ImportKeyword */,
- _a.in = 101 /* InKeyword */,
- _a.infer = 136 /* InferKeyword */,
- _a.instanceof = 102 /* InstanceOfKeyword */,
- _a.interface = 118 /* InterfaceKeyword */,
- _a.intrinsic = 137 /* IntrinsicKeyword */,
- _a.is = 138 /* IsKeyword */,
- _a.keyof = 139 /* KeyOfKeyword */,
- _a.let = 119 /* LetKeyword */,
- _a.module = 140 /* ModuleKeyword */,
- _a.namespace = 141 /* NamespaceKeyword */,
- _a.never = 142 /* NeverKeyword */,
- _a.new = 103 /* NewKeyword */,
- _a.null = 104 /* NullKeyword */,
- _a.number = 145 /* NumberKeyword */,
- _a.object = 146 /* ObjectKeyword */,
- _a.package = 120 /* PackageKeyword */,
- _a.private = 121 /* PrivateKeyword */,
- _a.protected = 122 /* ProtectedKeyword */,
- _a.public = 123 /* PublicKeyword */,
- _a.override = 157 /* OverrideKeyword */,
- _a.readonly = 143 /* ReadonlyKeyword */,
- _a.require = 144 /* RequireKeyword */,
- _a.global = 155 /* GlobalKeyword */,
- _a.return = 105 /* ReturnKeyword */,
- _a.set = 147 /* SetKeyword */,
- _a.static = 124 /* StaticKeyword */,
- _a.string = 148 /* StringKeyword */,
- _a.super = 106 /* SuperKeyword */,
- _a.switch = 107 /* SwitchKeyword */,
- _a.symbol = 149 /* SymbolKeyword */,
- _a.this = 108 /* ThisKeyword */,
- _a.throw = 109 /* ThrowKeyword */,
- _a.true = 110 /* TrueKeyword */,
- _a.try = 111 /* TryKeyword */,
- _a.type = 150 /* TypeKeyword */,
- _a.typeof = 112 /* TypeOfKeyword */,
- _a.undefined = 151 /* UndefinedKeyword */,
- _a.unique = 152 /* UniqueKeyword */,
- _a.unknown = 153 /* UnknownKeyword */,
- _a.var = 113 /* VarKeyword */,
- _a.void = 114 /* VoidKeyword */,
- _a.while = 115 /* WhileKeyword */,
- _a.with = 116 /* WithKeyword */,
- _a.yield = 125 /* YieldKeyword */,
- _a.async = 130 /* AsyncKeyword */,
- _a.await = 131 /* AwaitKeyword */,
- _a.of = 158 /* OfKeyword */,
- _a);
+ /**
+ * In the original version of this package, this object was built by
+ * initializing one object and then adding more properties to that object.
+ * This ends up throwing an error when this code is executed due to
+ * the same issue as explained at the top of this file: essentially,
+ * the `constructor` property of any object cannot be set due to the
+ * "override mistake". The fix for this is to just build one big object.
+ */
+ ts.textToKeywordObj = {
+ abstract: 126 /* AbstractKeyword */,
+ any: 129 /* AnyKeyword */,
+ as: 127 /* AsKeyword */,
+ asserts: 128 /* AssertsKeyword */,
+ bigint: 156 /* BigIntKeyword */,
+ boolean: 132 /* BooleanKeyword */,
+ break: 81 /* BreakKeyword */,
+ case: 82 /* CaseKeyword */,
+ catch: 83 /* CatchKeyword */,
+ class: 84 /* ClassKeyword */,
+ continue: 86 /* ContinueKeyword */,
+ const: 85 /* ConstKeyword */,
+ ["constructor"]: 133 /* ConstructorKeyword */,
+ debugger: 87 /* DebuggerKeyword */,
+ declare: 134 /* DeclareKeyword */,
+ default: 88 /* DefaultKeyword */,
+ delete: 89 /* DeleteKeyword */,
+ do: 90 /* DoKeyword */,
+ else: 91 /* ElseKeyword */,
+ enum: 92 /* EnumKeyword */,
+ export: 93 /* ExportKeyword */,
+ extends: 94 /* ExtendsKeyword */,
+ false: 95 /* FalseKeyword */,
+ finally: 96 /* FinallyKeyword */,
+ for: 97 /* ForKeyword */,
+ from: 154 /* FromKeyword */,
+ function: 98 /* FunctionKeyword */,
+ get: 135 /* GetKeyword */,
+ if: 99 /* IfKeyword */,
+ implements: 117 /* ImplementsKeyword */,
+ import: 100 /* ImportKeyword */,
+ in: 101 /* InKeyword */,
+ infer: 136 /* InferKeyword */,
+ instanceof: 102 /* InstanceOfKeyword */,
+ interface: 118 /* InterfaceKeyword */,
+ intrinsic: 137 /* IntrinsicKeyword */,
+ is: 138 /* IsKeyword */,
+ keyof: 139 /* KeyOfKeyword */,
+ let: 119 /* LetKeyword */,
+ module: 140 /* ModuleKeyword */,
+ namespace: 141 /* NamespaceKeyword */,
+ never: 142 /* NeverKeyword */,
+ new: 103 /* NewKeyword */,
+ null: 104 /* NullKeyword */,
+ number: 145 /* NumberKeyword */,
+ object: 146 /* ObjectKeyword */,
+ package: 120 /* PackageKeyword */,
+ private: 121 /* PrivateKeyword */,
+ protected: 122 /* ProtectedKeyword */,
+ public: 123 /* PublicKeyword */,
+ override: 157 /* OverrideKeyword */,
+ readonly: 143 /* ReadonlyKeyword */,
+ require: 144 /* RequireKeyword */,
+ global: 155 /* GlobalKeyword */,
+ return: 105 /* ReturnKeyword */,
+ set: 147 /* SetKeyword */,
+ static: 124 /* StaticKeyword */,
+ string: 148 /* StringKeyword */,
+ super: 106 /* SuperKeyword */,
+ switch: 107 /* SwitchKeyword */,
+ symbol: 149 /* SymbolKeyword */,
+ this: 108 /* ThisKeyword */,
+ throw: 109 /* ThrowKeyword */,
+ true: 110 /* TrueKeyword */,
+ try: 111 /* TryKeyword */,
+ type: 150 /* TypeKeyword */,
+ typeof: 112 /* TypeOfKeyword */,
+ undefined: 151 /* UndefinedKeyword */,
+ unique: 152 /* UniqueKeyword */,
+ unknown: 153 /* UnknownKeyword */,
+ var: 113 /* VarKeyword */,
+ void: 114 /* VoidKeyword */,
+ while: 115 /* WhileKeyword */,
+ with: 116 /* WithKeyword */,
+ yield: 125 /* YieldKeyword */,
+ async: 130 /* AsyncKeyword */,
+ await: 131 /* AwaitKeyword */,
+ of: 158 /* OfKeyword */
+ };
var textToKeyword = new ts.Map(ts.getEntries(ts.textToKeywordObj));
var textToToken = new ts.Map(ts.getEntries(__assign(__assign({}, ts.textToKeywordObj), { "{": 18 /* OpenBraceToken */, "}": 19 /* CloseBraceToken */, "(": 20 /* OpenParenToken */, ")": 21 /* CloseParenToken */, "[": 22 /* OpenBracketToken */, "]": 23 /* CloseBracketToken */, ".": 24 /* DotToken */, "...": 25 /* DotDotDotToken */, ";": 26 /* SemicolonToken */, ",": 27 /* CommaToken */, "<": 29 /* LessThanToken */, ">": 31 /* GreaterThanToken */, "<=": 32 /* LessThanEqualsToken */, ">=": 33 /* GreaterThanEqualsToken */, "==": 34 /* EqualsEqualsToken */, "!=": 35 /* ExclamationEqualsToken */, "===": 36 /* EqualsEqualsEqualsToken */, "!==": 37 /* ExclamationEqualsEqualsToken */, "=>": 38 /* EqualsGreaterThanToken */, "+": 39 /* PlusToken */, "-": 40 /* MinusToken */, "**": 42 /* AsteriskAsteriskToken */, "*": 41 /* AsteriskToken */, "/": 43 /* SlashToken */, "%": 44 /* PercentToken */, "++": 45 /* PlusPlusToken */, "--": 46 /* MinusMinusToken */, "<<": 47 /* LessThanLessThanToken */, "</": 30 /* LessThanSlashToken */, ">>": 48 /* GreaterThanGreaterThanToken */, ">>>": 49 /* GreaterThanGreaterThanGreaterThanToken */, "&": 50 /* AmpersandToken */, "|": 51 /* BarToken */, "^": 52 /* CaretToken */, "!": 53 /* ExclamationToken */, "~": 54 /* TildeToken */, "&&": 55 /* AmpersandAmpersandToken */, "||": 56 /* BarBarToken */, "?": 57 /* QuestionToken */, "??": 60 /* QuestionQuestionToken */, "?.": 28 /* QuestionDotToken */, ":": 58 /* ColonToken */, "=": 63 /* EqualsToken */, "+=": 64 /* PlusEqualsToken */, "-=": 65 /* MinusEqualsToken */, "*=": 66 /* AsteriskEqualsToken */, "**=": 67 /* AsteriskAsteriskEqualsToken */, "/=": 68 /* SlashEqualsToken */, "%=": 69 /* PercentEqualsToken */, "<<=": 70 /* LessThanLessThanEqualsToken */, ">>=": 71 /* GreaterThanGreaterThanEqualsToken */, ">>>=": 72 /* GreaterThanGreaterThanGreaterThanEqualsToken */, "&=": 73 /* AmpersandEqualsToken */, "|=": 74 /* BarEqualsToken */, "^=": 78 /* CaretEqualsToken */, "||=": 75 /* BarBarEqualsToken */, "&&=": 76 /* AmpersandAmpersandEqualsToken */, "??=": 77 /* QuestionQuestionEqualsToken */, "@": 59 /* AtToken */, "#": 62 /* HashToken */, "`": 61 /* BacktickToken */ })));
/*
@@ -159858,6 +159912,7 @@ var ts;
delete Object.prototype.__magic__;
}
catch (error) {
+ throw error;
// In IE8, Object.defineProperty only works on DOM objects.
// If we hit this code path, assume `window` exists.
//@ts-ignore

26
tsconfig.json Normal file
View File

@ -0,0 +1,26 @@
{
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"inlineSources": true,
"isolatedModules": true,
"jsx": "react",
"lib": ["dom", "es2020"],
"moduleResolution": "node",
"noEmitOnError": true,
"outDir": "tsout",
"rootDir": ".",
"sourceMap": true,
"strict": true
},
"exclude": [
"**/*.test.js",
"**/*.test.ts",
"**/*.test.tsx",
".storybook/**/*",
"builds/**/*",
"dist/**/*",
"node_modules/**"
],
"extends": "@tsconfig/node14/tsconfig.json"
}

157
yarn.lock
View File

@ -2807,6 +2807,11 @@
resolved "https://registry.yarnpkg.com/@metamask/eslint-config-nodejs/-/eslint-config-nodejs-9.0.0.tgz#ec737a47c04febfb921ce844362d875ca2cae9e7"
integrity sha512-kPUrMPdpGeapbdG+LxysnDNzM9SlBNUvqVl1XoKnOGjo1pbZXB8hOI36PT3IlR1qa2FJumKYfgDSu7JLmOLxqQ==
"@metamask/eslint-config-typescript@^9.0.1":
version "9.0.1"
resolved "https://registry.yarnpkg.com/@metamask/eslint-config-typescript/-/eslint-config-typescript-9.0.1.tgz#900d53579ce074734ac9bf4e3f66fc20b92bd6af"
integrity sha512-+W7MXCoq8Q29wvkAv0ycwKB82xMbl+LfkUoM8oWN4n7vyMDXgcgbNjY7ug+quJPZfDTJJ7fxgPmG8m4LrkEImw==
"@metamask/eslint-config@^9.0.0":
version "9.0.0"
resolved "https://registry.yarnpkg.com/@metamask/eslint-config/-/eslint-config-9.0.0.tgz#22d4911b705f7e4e566efbdda0e37912da33e30f"
@ -4344,6 +4349,11 @@
dependencies:
node-gyp-build "4.3.0"
"@tsconfig/node14@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2"
integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==
"@types/aria-query@^4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0"
@ -4530,7 +4540,7 @@
jest-diff "^26.0.0"
pretty-format "^26.0.0"
"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7":
version "7.0.9"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
@ -4832,76 +4842,74 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/experimental-utils@^4.0.1":
version "4.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.21.0.tgz#0b0bb7c15d379140a660c003bdbafa71ae9134b6"
integrity sha512-cEbgosW/tUFvKmkg3cU7LBoZhvUs+ZPVM9alb25XvR0dal4qHL3SiUqHNrzoWSxaXA9gsifrYrS1xdDV6w/gIA==
"@typescript-eslint/eslint-plugin@^4.20.0":
version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
dependencies:
"@types/json-schema" "^7.0.3"
"@typescript-eslint/scope-manager" "4.21.0"
"@typescript-eslint/types" "4.21.0"
"@typescript-eslint/typescript-estree" "4.21.0"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
"@typescript-eslint/experimental-utils" "4.33.0"
"@typescript-eslint/scope-manager" "4.33.0"
debug "^4.3.1"
functional-red-black-tree "^1.0.1"
ignore "^5.1.8"
regexpp "^3.1.0"
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/scope-manager@4.21.0":
version "4.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.21.0.tgz#c81b661c4b8af1ec0c010d847a8f9ab76ab95b4d"
integrity sha512-kfOjF0w1Ix7+a5T1knOw00f7uAP9Gx44+OEsNQi0PvvTPLYeXJlsCJ4tYnDj5PQEYfpcgOH5yBlw7K+UEI9Agw==
"@typescript-eslint/experimental-utils@4.33.0", "@typescript-eslint/experimental-utils@^4.0.1":
version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==
dependencies:
"@typescript-eslint/types" "4.21.0"
"@typescript-eslint/visitor-keys" "4.21.0"
"@types/json-schema" "^7.0.7"
"@typescript-eslint/scope-manager" "4.33.0"
"@typescript-eslint/types" "4.33.0"
"@typescript-eslint/typescript-estree" "4.33.0"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
"@typescript-eslint/types@4.21.0":
version "4.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.21.0.tgz#abdc3463bda5d31156984fa5bc316789c960edef"
integrity sha512-+OQaupjGVVc8iXbt6M1oZMwyKQNehAfLYJJ3SdvnofK2qcjfor9pEM62rVjBknhowTkh+2HF+/KdRAc/wGBN2w==
"@typescript-eslint/types@4.31.1":
version "4.31.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.31.1.tgz#5f255b695627a13401d2fdba5f7138bc79450d66"
integrity sha512-kixltt51ZJGKENNW88IY5MYqTBA8FR0Md8QdGbJD2pKZ+D5IvxjTYDNtJPDxFBiXmka2aJsITdB1BtO1fsgmsQ==
"@typescript-eslint/typescript-estree@4.21.0":
version "4.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.21.0.tgz#3817bd91857beeaeff90f69f1f112ea58d350b0a"
integrity sha512-ZD3M7yLaVGVYLw4nkkoGKumb7Rog7QID9YOWobFDMQKNl+vPxqVIW/uDk+MDeGc+OHcoG2nJ2HphwiPNajKw3w==
"@typescript-eslint/parser@^4.20.0":
version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==
dependencies:
"@typescript-eslint/types" "4.21.0"
"@typescript-eslint/visitor-keys" "4.21.0"
debug "^4.1.1"
globby "^11.0.1"
is-glob "^4.0.1"
semver "^7.3.2"
tsutils "^3.17.1"
"@typescript-eslint/scope-manager" "4.33.0"
"@typescript-eslint/types" "4.33.0"
"@typescript-eslint/typescript-estree" "4.33.0"
debug "^4.3.1"
"@typescript-eslint/typescript-estree@^4.8.2":
version "4.31.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.1.tgz#4a04d5232cf1031232b7124a9c0310b577a62d17"
integrity sha512-EGHkbsUvjFrvRnusk6yFGqrqMBTue5E5ROnS5puj3laGQPasVUgwhrxfcgkdHNFECHAewpvELE1Gjv0XO3mdWg==
"@typescript-eslint/scope-manager@4.33.0":
version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==
dependencies:
"@typescript-eslint/types" "4.31.1"
"@typescript-eslint/visitor-keys" "4.31.1"
"@typescript-eslint/types" "4.33.0"
"@typescript-eslint/visitor-keys" "4.33.0"
"@typescript-eslint/types@4.33.0":
version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
"@typescript-eslint/typescript-estree@4.33.0", "@typescript-eslint/typescript-estree@^4.8.2":
version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==
dependencies:
"@typescript-eslint/types" "4.33.0"
"@typescript-eslint/visitor-keys" "4.33.0"
debug "^4.3.1"
globby "^11.0.3"
is-glob "^4.0.1"
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/visitor-keys@4.21.0":
version "4.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.21.0.tgz#990a9acdc124331f5863c2cf21c88ba65233cd8d"
integrity sha512-dH22dROWGi5Z6p+Igc8bLVLmwy7vEe8r+8c+raPQU0LxgogPUrRAtRGtvBWmlr9waTu3n+QLt/qrS/hWzk1x5w==
"@typescript-eslint/visitor-keys@4.33.0":
version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==
dependencies:
"@typescript-eslint/types" "4.21.0"
eslint-visitor-keys "^2.0.0"
"@typescript-eslint/visitor-keys@4.31.1":
version "4.31.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.1.tgz#f2e7a14c7f20c4ae07d7fc3c5878c4441a1da9cc"
integrity sha512-PCncP8hEqKw6SOJY+3St4LVtoZpPPn+Zlpm7KW5xnviMhdqcsBty4Lsg4J/VECpJjw1CkROaZhH4B8M1OfnXTQ==
dependencies:
"@typescript-eslint/types" "4.31.1"
"@typescript-eslint/types" "4.33.0"
eslint-visitor-keys "^2.0.0"
"@vue/compiler-core@3.1.4":
@ -10700,6 +10708,17 @@ eslint-import-resolver-node@^0.3.4:
debug "^2.6.9"
resolve "^1.13.1"
eslint-import-resolver-typescript@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.5.0.tgz#07661966b272d14ba97f597b51e1a588f9722f0a"
integrity sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==
dependencies:
debug "^4.3.1"
glob "^7.1.7"
is-glob "^4.0.1"
resolve "^1.20.0"
tsconfig-paths "^3.9.0"
eslint-module-utils@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
@ -10827,7 +10846,7 @@ eslint-scope@^4.0.3:
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint-scope@^5.0.0, eslint-scope@^5.1.0, eslint-scope@^5.1.1:
eslint-scope@^5.1.0, eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@ -10849,6 +10868,13 @@ eslint-utils@^2.0.0, eslint-utils@^2.1.0:
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
@ -13292,10 +13318,10 @@ glob@7.1.4:
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@ -26663,7 +26689,7 @@ tsscmp@1.0.6:
resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"
integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==
tsutils@^3.17.1, tsutils@^3.21.0:
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
@ -26804,6 +26830,11 @@ typescript@^3.9.7:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8"
integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==
typescript@~4.4.0:
version "4.4.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
typical@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/typical/-/typical-5.1.0.tgz#7116ca103caf2574985fc84fbaa8fd0ee5ea1684"