From cc561722bb4f97646131c8b7009c1ae076fba1fe Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Thu, 15 Aug 2019 13:10:34 -0400 Subject: [PATCH] Updates eslint & fixes lint issues --- .eslintrc.json | 21 +- .vscodeignore | 3 +- package.json | 12 +- src/annotations/annotationProvider.ts | 2 +- src/annotations/annotations.ts | 2 +- src/annotations/fileAnnotationController.ts | 4 +- src/annotations/gutterBlameAnnotationProvider.ts | 4 +- src/annotations/heatmapBlameAnnotationProvider.ts | 2 +- src/commands/diffWith.ts | 6 +- src/commands/git/checkout.ts | 2 +- src/commands/git/stash.ts | 6 +- src/commands/gitCommands.ts | 3 +- src/commands/openFileRevision.ts | 4 +- src/commands/openInRemote.ts | 3 +- src/commands/openWorkingFile.ts | 2 +- src/commands/showQuickCommitDetails.ts | 4 +- src/commands/showQuickCommitFileDetails.ts | 4 +- src/configuration.ts | 32 +- src/extension.ts | 2 +- src/git/formatters/formatter.ts | 4 +- src/git/fsProvider.ts | 4 +- src/git/gitService.ts | 12 +- src/git/gitUri.ts | 6 +- src/git/models/branch.ts | 4 +- src/git/models/repository.ts | 4 +- src/git/models/status.ts | 2 +- src/git/parsers/blameParser.ts | 4 +- src/git/parsers/diffParser.ts | 2 +- src/git/parsers/logParser.ts | 2 +- src/git/parsers/statusParser.ts | 4 +- src/git/shell.ts | 13 +- src/messages.ts | 2 +- src/quickpicks/commonQuickPicks.ts | 15 +- src/quickpicks/fileHistoryQuickPick.ts | 4 +- src/system/array.ts | 2 +- src/system/function.ts | 2 +- src/trackers/documentTracker.ts | 2 +- src/trackers/gitLineTracker.ts | 2 +- src/views/nodes/branchesNode.ts | 2 +- src/views/nodes/commitNode.ts | 4 +- src/views/nodes/fileHistoryTrackerNode.ts | 6 +- src/views/nodes/lineHistoryTrackerNode.ts | 6 +- src/views/nodes/remoteNode.ts | 2 +- src/views/nodes/resultsFilesNode.ts | 2 +- src/views/nodes/stashNode.ts | 6 +- src/views/nodes/statusFilesNode.ts | 2 +- src/views/nodes/tagsNode.ts | 2 +- src/views/searchView.ts | 2 +- src/views/viewCommands.ts | 2 +- src/webviews/apps/shared/events.ts | 8 +- src/webviews/protocol.ts | 2 +- src/webviews/webviewBase.ts | 10 +- tsconfig.eslint.json | 8 + tsconfig.webviews.json | 10 + webpack.config.js | 4 +- webviews.tsconfig.json | 20 -- yarn.lock | 357 ++++++++++++---------- 57 files changed, 351 insertions(+), 312 deletions(-) create mode 100644 tsconfig.eslint.json create mode 100644 tsconfig.webviews.json delete mode 100644 webviews.tsconfig.json diff --git a/.eslintrc.json b/.eslintrc.json index 6cc5f63..c9c6783 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,6 +6,8 @@ "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:@typescript-eslint/eslint-recommended", "plugin:import/errors", "plugin:import/warnings", "plugin:import/typescript", @@ -18,13 +20,15 @@ "sourceType": "module", "ecmaFeatures": { "impliedStrict": true - } + }, + "project": "tsconfig.eslint.json" }, "plugins": ["import", "prettiest", "@typescript-eslint"], "rules": { "arrow-parens": ["off"], "brace-style": ["off", "stroustrup"], "consistent-return": "error", + "curly": ["error", "multi-line", "consistent"], "eol-last": "error", "linebreak-style": ["error", "unix"], "new-parens": "error", @@ -36,7 +40,6 @@ "no-duplicate-imports": "error", "no-else-return": "warn", "no-empty": ["warn", { "allowEmptyCatch": true }], - "no-empty-function": ["warn", { "allow": ["constructors"] }], "no-eval": "error", "no-ex-assign": "warn", "no-extend-native": "error", @@ -80,7 +83,6 @@ "quotes": ["error", "single", { "avoidEscape": true }], // Turn off until fix for: https://github.com/eslint/eslint/issues/11899 "require-atomic-updates": "off", - "require-await": "error", "semi": ["error", "always"], "semi-style": ["error", "last"], "sort-imports": [ @@ -112,14 +114,25 @@ } ], "prettiest/no-block-after-closing": "error", + "@typescript-eslint/consistent-type-assertions": [ + "error", + { + "assertionStyle": "as", + "objectLiteralTypeAssertions": "allow-as-parameter" + } + ], "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/explicit-member-accessibility": "off", + "@typescript-eslint/no-empty-function": ["warn", { "allow": ["constructors"] }], "@typescript-eslint/no-empty-interface": "off", "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": ["warn", { "ignoreParameters": true, "ignoreProperties": true }], + "@typescript-eslint/no-misused-promises": ["error", { "checksVoidReturn": false }], "@typescript-eslint/no-namespace": "off", "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-parameter-properties": "off", "@typescript-eslint/no-unused-vars": ["warn", { "args": "none" }], - "@typescript-eslint/no-use-before-define": "off" + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/unbound-method": "off" // Too many bugs right now: https://github.com/typescript-eslint/typescript-eslint/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+unbound-method } } diff --git a/.vscodeignore b/.vscodeignore index be337ff..6287909 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -18,6 +18,7 @@ CONTRIBUTING.md generateEmojiShortcodeMap.js package-lock.json tsconfig.json +tsconfig.eslint.json +tsconfig.webviews.json webpack.config.js -webviews.tsconfig.json yarn.lock diff --git a/package.json b/package.json index 98cbe21..450659d 100644 --- a/package.json +++ b/package.json @@ -5423,11 +5423,11 @@ "@types/lodash-es": "4.17.3", "@types/node": "10.11.7", "@types/vscode": "1.36.0", - "@typescript-eslint/eslint-plugin": "1.13.0", - "@typescript-eslint/parser": "1.13.0", - "circular-dependency-plugin": "5.0.2", + "@typescript-eslint/eslint-plugin": "2.0.0", + "@typescript-eslint/parser": "2.0.0", + "circular-dependency-plugin": "5.2.0", "clean-webpack-plugin": "3.0.0", - "css-loader": "3.1.0", + "css-loader": "3.2.0", "eslint": "6.1.0", "eslint-cli": "1.1.1", "eslint-config-prettier": "6.0.0", @@ -5442,12 +5442,12 @@ "node-sass": "4.12.0", "prettier": "1.18.2", "prettier-eslint": "9.0.0", - "sass-loader": "7.1.0", + "sass-loader": "7.2.0", "terser-webpack-plugin": "1.4.1", "ts-loader": "6.0.4", "typescript": "3.5.3", "vsce": "1.66.0", - "webpack": "4.39.1", + "webpack": "4.39.2", "webpack-bundle-analyzer": "3.4.1", "webpack-cli": "3.3.6" } diff --git a/src/annotations/annotationProvider.ts b/src/annotations/annotationProvider.ts index 76a6acc..981aec9 100644 --- a/src/annotations/annotationProvider.ts +++ b/src/annotations/annotationProvider.ts @@ -116,7 +116,7 @@ export abstract class AnnotationProviderBase implements Disposable { highlightDecoration: TextEditorDecorationType | undefined; }) { if (this._resetDebounced === undefined) { - this._resetDebounced = Functions.debounce(this.onReset, 250); + this._resetDebounced = Functions.debounce(this.onReset.bind(this), 250); } this._resetDebounced(changes); diff --git a/src/annotations/annotations.ts b/src/annotations/annotations.ts index b7edf83..daedb08 100644 --- a/src/annotations/annotations.ts +++ b/src/annotations/annotations.ts @@ -170,7 +170,7 @@ export class Annotations { message = `[\`Changes\`](${DiffWithCommand.getMarkdownCommandArgs(commit, editorLine)} "Open Changes")`; previous = `[\`${commit.previousShortSha}\`](${ShowQuickCommitDetailsCommand.getMarkdownCommandArgs( - commit.previousSha! + commit.previousSha )} "Show Commit Details")`; current = `[\`${commit.shortSha}\`](${ShowQuickCommitDetailsCommand.getMarkdownCommandArgs( diff --git a/src/annotations/fileAnnotationController.ts b/src/annotations/fileAnnotationController.ts index 1ab3888..33f5959 100644 --- a/src/annotations/fileAnnotationController.ts +++ b/src/annotations/fileAnnotationController.ts @@ -408,7 +408,7 @@ export class FileAnnotationController implements Disposable { } const provider = this.getProvider(editor); - if (provider === undefined) return this.show(editor!, type, shaOrLine); + if (provider === undefined) return this.show(editor, type, shaOrLine); const reopen = provider.annotationType !== type; if (on === true && !reopen) return true; @@ -496,7 +496,7 @@ export class FileAnnotationController implements Disposable { break; } - progress!.report({ + progress.report({ message: `Computing ${annotationsLabel} for ${paths.basename(editor.document.fileName)}` }); } diff --git a/src/annotations/gutterBlameAnnotationProvider.ts b/src/annotations/gutterBlameAnnotationProvider.ts index 0ab9257..271270f 100644 --- a/src/annotations/gutterBlameAnnotationProvider.ts +++ b/src/annotations/gutterBlameAnnotationProvider.ts @@ -85,7 +85,7 @@ export class GutterBlameAnnotationProvider extends BlameAnnotationProviderBase { }; if (separateLines) { - gutter.renderOptions!.before!.textDecoration = 'none'; + gutter.renderOptions.before!.textDecoration = 'none'; } compacted = true; @@ -146,7 +146,7 @@ export class GutterBlameAnnotationProvider extends BlameAnnotationProviderBase { if (this.decorations.length) { start = process.hrtime(); - this.editor.setDecorations(this.decoration!, this.decorations); + this.editor.setDecorations(this.decoration, this.decorations); if (avatars) { this.additionalDecorations = []; diff --git a/src/annotations/heatmapBlameAnnotationProvider.ts b/src/annotations/heatmapBlameAnnotationProvider.ts index 1bcd477..d94c2c1 100644 --- a/src/annotations/heatmapBlameAnnotationProvider.ts +++ b/src/annotations/heatmapBlameAnnotationProvider.ts @@ -61,7 +61,7 @@ export class HeatmapBlameAnnotationProvider extends BlameAnnotationProviderBase if (this.decorations.length) { start = process.hrtime(); - this.editor.setDecorations(this.decoration!, this.decorations); + this.editor.setDecorations(this.decoration, this.decorations); Logger.log(cc, `${Strings.getDurationMilliseconds(start)} ms to apply recent changes annotations`); } diff --git a/src/commands/diffWith.ts b/src/commands/diffWith.ts index 1bb7f51..9ef5ceb 100644 --- a/src/commands/diffWith.ts +++ b/src/commands/diffWith.ts @@ -51,7 +51,7 @@ export class DiffWithCommand extends ActiveEditorCommand { repoPath: commit.repoPath, lhs: { sha: commit.previousSha !== undefined ? commit.previousSha : GitService.deletedOrMissingSha, - uri: commit.previousUri! + uri: commit.previousUri }, rhs: { sha: commit.sha, @@ -77,8 +77,8 @@ export class DiffWithCommand extends ActiveEditorCommand { args = { ...args, - lhs: { ...(args.lhs as DiffWithCommandArgsRevision) }, - rhs: { ...(args.rhs as DiffWithCommandArgsRevision) }, + lhs: { ...args.lhs }, + rhs: { ...args.rhs }, showOptions: args.showOptions === undefined ? undefined : { ...args.showOptions } }; diff --git a/src/commands/git/checkout.ts b/src/commands/git/checkout.ts index 6674228..00dbd7d 100644 --- a/src/commands/git/checkout.ts +++ b/src/commands/git/checkout.ts @@ -213,7 +213,7 @@ export class CheckoutGitCommand extends QuickCommandBase { value = value.trim(); if (value.length === 0) return [false, 'Please enter a valid branch name']; - const valid = Boolean(await Container.git.validateBranchName(value!)); + const valid = Boolean(await Container.git.validateBranchName(value)); return [valid, valid ? undefined : `'${value}' isn't a valid branch name`]; } }); diff --git a/src/commands/git/stash.ts b/src/commands/git/stash.ts index 249d923..4e6433a 100644 --- a/src/commands/git/stash.ts +++ b/src/commands/git/stash.ts @@ -408,7 +408,7 @@ export class StashGitCommand extends QuickCommandBase { { label: `${this.title} ${state.subcommand}`, description: `${state.stash.stashName}${Strings.pad(GlyphChars.Dash, 2, 2)}${message}`, - detail: `Will delete ${state.stash!.stashName}` + detail: `Will delete ${state.stash.stashName}` } ], { placeholder: `Confirm ${this.title} ${state.subcommand}` } @@ -420,13 +420,13 @@ export class StashGitCommand extends QuickCommandBase { } } - void Container.git.stashDelete(state.repo.path, state.stash!.stashName); + void Container.git.stashDelete(state.repo.path, state.stash.stashName); throw new BreakQuickCommand(); } } - // eslint-disable-next-line require-await + // eslint-disable-next-line @typescript-eslint/require-await private async *push(state: StashStepState): AsyncIterableIterator { while (true) { if (state.message === undefined || state.counter < 3) { diff --git a/src/commands/gitCommands.ts b/src/commands/gitCommands.ts index 4556e98..e797c4e 100644 --- a/src/commands/gitCommands.ts +++ b/src/commands/gitCommands.ts @@ -261,8 +261,9 @@ export class GitCommandsCommand extends Command { if (value.length === 0) return; const step = commandsStep.command && commandsStep.command.value; - if (step === undefined || !isQuickPickStep(step) || step.onDidAccept === undefined) + if (step === undefined || !isQuickPickStep(step) || step.onDidAccept === undefined) { return; + } quickpick.busy = true; diff --git a/src/commands/openFileRevision.ts b/src/commands/openFileRevision.ts index 3963b6e..08bd65b 100644 --- a/src/commands/openFileRevision.ts +++ b/src/commands/openFileRevision.ts @@ -181,10 +181,10 @@ export class OpenFileRevisionCommand extends ActiveEditorCommand { args.showOptions.selection = new Range(args.line, 0, args.line, 0); } - const e = await openEditor(args.uri!, { ...args.showOptions, rethrow: true }); + const e = await openEditor(args.uri, { ...args.showOptions, rethrow: true }); if (args.annotationType === undefined) return e; - return Container.fileAnnotations.show(e!, args.annotationType, args.line); + return Container.fileAnnotations.show(e, args.annotationType, args.line); } catch (ex) { Logger.error(ex, 'OpenFileRevisionCommand'); diff --git a/src/commands/openInRemote.ts b/src/commands/openInRemote.ts index 08a0db5..1201f46 100644 --- a/src/commands/openInRemote.ts +++ b/src/commands/openInRemote.ts @@ -114,8 +114,9 @@ export class OpenInRemoteCommand extends ActiveEditorCommand { args.remotes === undefined || args.resource === undefined || args.resource.type !== RemoteResourceType.Branch - ) + ) { return; + } // Check to see if the remote is in the branch const [remotePart, branchPart] = Strings.splitSingle(args.resource.branch, '/'); diff --git a/src/commands/openWorkingFile.ts b/src/commands/openWorkingFile.ts index 8359c08..c749e07 100644 --- a/src/commands/openWorkingFile.ts +++ b/src/commands/openWorkingFile.ts @@ -57,7 +57,7 @@ export class OpenWorkingFileCommand extends ActiveEditorCommand { const e = await openEditor(args.uri, { ...args.showOptions, rethrow: true }); if (args.annotationType === undefined) return e; - return Container.fileAnnotations.show(e!, args.annotationType, args.line); + return Container.fileAnnotations.show(e, args.annotationType, args.line); } catch (ex) { Logger.error(ex, 'OpenWorkingFileCommand'); diff --git a/src/commands/showQuickCommitDetails.ts b/src/commands/showQuickCommitDetails.ts index 3f472bb..10a1a0b 100644 --- a/src/commands/showQuickCommitDetails.ts +++ b/src/commands/showQuickCommitDetails.ts @@ -99,7 +99,7 @@ export class ShowQuickCommitDetailsCommand extends ActiveEditorCachedCommand { try { if (args.commit === undefined || args.commit.isFile) { if (args.repoLog !== undefined) { - args.commit = args.repoLog.commits.get(args.sha!); + args.commit = args.repoLog.commits.get(args.sha); // If we can't find the commit, kill the repoLog if (args.commit === undefined) { args.repoLog = undefined; @@ -112,7 +112,7 @@ export class ShowQuickCommitDetailsCommand extends ActiveEditorCachedCommand { return Messages.showCommitNotFoundWarningMessage('Unable to show commit details'); } - args.commit = log.commits.get(args.sha!); + args.commit = log.commits.get(args.sha); } } diff --git a/src/commands/showQuickCommitFileDetails.ts b/src/commands/showQuickCommitFileDetails.ts index f262039..377dbd2 100644 --- a/src/commands/showQuickCommitFileDetails.ts +++ b/src/commands/showQuickCommitFileDetails.ts @@ -104,7 +104,7 @@ export class ShowQuickCommitFileDetailsCommand extends ActiveEditorCachedCommand try { if (args.commit === undefined || !args.commit.isFile) { if (args.fileLog !== undefined) { - args.commit = args.fileLog.commits.get(args.sha!); + args.commit = args.fileLog.commits.get(args.sha); // If we can't find the commit, kill the fileLog if (args.commit === undefined) { args.fileLog = undefined; @@ -124,7 +124,7 @@ export class ShowQuickCommitFileDetailsCommand extends ActiveEditorCachedCommand return Messages.showCommitNotFoundWarningMessage('Unable to show commit file details'); } - const shortSha = GitService.shortenSha(args.sha!); + const shortSha = GitService.shortenSha(args.sha); if (args.goBackCommand === undefined) { const commandArgs: ShowQuickCommitDetailsCommandArgs = { diff --git a/src/configuration.ts b/src/configuration.ts index 18e217b..26eff87 100644 --- a/src/configuration.ts +++ b/src/configuration.ts @@ -14,7 +14,6 @@ import { Config } from './config'; import { extensionId } from './constants'; import { Functions } from './system'; -// eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion const emptyConfig: Config = new Proxy({} as Config, { get: function() { return emptyConfig; @@ -74,20 +73,21 @@ export class Configuration { get(section?: string, resource?: Uri | null, defaultValue?: T): T { return defaultValue === undefined ? workspace - .getConfiguration(section === undefined ? undefined : extensionId, resource!) + .getConfiguration(section === undefined ? undefined : extensionId, resource) .get(section === undefined ? extensionId : section)! : workspace - .getConfiguration(section === undefined ? undefined : extensionId, resource!) + .getConfiguration(section === undefined ? undefined : extensionId, resource) .get(section === undefined ? extensionId : section, defaultValue)!; } getAny(section: string, resource?: Uri | null, defaultValue?: T) { return defaultValue === undefined - ? workspace.getConfiguration(undefined, resource!).get(section)! - : workspace.getConfiguration(undefined, resource!).get(section, defaultValue)!; + ? workspace.getConfiguration(undefined, resource).get(section)! + : workspace.getConfiguration(undefined, resource).get(section, defaultValue)!; } changed(e: ConfigurationChangeEvent, section: string, resource?: Uri | null) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion return e.affectsConfiguration(`${extensionId}.${section}`, resource!); } @@ -97,12 +97,12 @@ export class Configuration { inspect(section?: string, resource?: Uri | null) { return workspace - .getConfiguration(section === undefined ? undefined : extensionId, resource!) + .getConfiguration(section === undefined ? undefined : extensionId, resource) .inspect(section === undefined ? extensionId : section); } inspectAny(section: string, resource?: Uri | null) { - return workspace.getConfiguration(undefined, resource!).inspect(section); + return workspace.getConfiguration(undefined, resource).inspect(section); } async migrate( @@ -238,7 +238,7 @@ export class Configuration { } name(name: K) { - return Functions.propOf(emptyConfig as Config, name); + return Functions.propOf(emptyConfig, name); } update(section: string, value: any, target: ConfigurationTarget, resource?: Uri | null) { @@ -253,25 +253,25 @@ export class Configuration { .update(section, value, target); } - async updateEffective(section: string, value: any, resource: Uri | null = null) { - const inspect = await configuration.inspect(section, resource)!; + updateEffective(section: string, value: any, resource: Uri | null = null): Thenable { + const inspect = configuration.inspect(section, resource)!; if (inspect.workspaceFolderValue !== undefined) { - if (value === inspect.workspaceFolderValue) return undefined; + if (value === inspect.workspaceFolderValue) return Promise.resolve(undefined); - return void configuration.update(section, value, ConfigurationTarget.WorkspaceFolder, resource); + return configuration.update(section, value, ConfigurationTarget.WorkspaceFolder, resource); } if (inspect.workspaceValue !== undefined) { - if (value === inspect.workspaceValue) return undefined; + if (value === inspect.workspaceValue) return Promise.resolve(undefined); - return void configuration.update(section, value, ConfigurationTarget.Workspace); + return configuration.update(section, value, ConfigurationTarget.Workspace); } if (inspect.globalValue === value || (inspect.globalValue === undefined && value === inspect.defaultValue)) { - return undefined; + return Promise.resolve(undefined); } - return void configuration.update( + return configuration.update( section, value === inspect.defaultValue ? undefined : value, ConfigurationTarget.Global diff --git a/src/extension.ts b/src/extension.ts index 37aab77..76eef68 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -34,7 +34,7 @@ export async function activate(context: ExtensionContext) { const gitlens = extensions.getExtension(extensionQualifiedId)!; const gitlensVersion = gitlens.packageJSON.version; - const enabled = workspace.getConfiguration('git', null!).get('enabled', true); + const enabled = workspace.getConfiguration('git', null).get('enabled', true); if (!enabled) { Logger.log(`GitLens (v${gitlensVersion}) was NOT activated -- "git.enabled": false`); setCommandContext(CommandContext.Enabled, false); diff --git a/src/git/formatters/formatter.ts b/src/git/formatters/formatter.ts index 1372faf..c24d595 100644 --- a/src/git/formatters/formatter.ts +++ b/src/git/formatters/formatter.ts @@ -28,7 +28,7 @@ export abstract class Formatter; + const searchTree = TernarySearchTree.forPaths(); const trees = await Container.git.getTreeForRevision(repoPath, ref); // Add a fake root folder so that searches will work @@ -175,7 +175,7 @@ export class GitFileSystemProvider implements FileSystemProvider, Disposable { private async getTree(path: string, ref: string, repoPath: string) { const searchTree = await this.getOrCreateSearchTree(ref, repoPath); // Add the fake root folder to the path - return searchTree!.findSuperstr(`/~/${path}`, true); + return searchTree.findSuperstr(`/~/${path}`, true); } } diff --git a/src/git/gitService.ts b/src/git/gitService.ts index 913c6f8..e58756b 100644 --- a/src/git/gitService.ts +++ b/src/git/gitService.ts @@ -484,7 +484,7 @@ export class GitService implements Disposable { patch = await Git.diff(uri.repoPath, uri.fsPath, ref1, ref2, { similarityThreshold: Container.config.advanced.similarityThreshold }); - void (await Git.apply(uri.repoPath!, patch)); + void (await Git.apply(uri.repoPath, patch)); } catch (ex) { if (patch && /patch does not apply/i.test(ex.message)) { @@ -498,7 +498,7 @@ export class GitService implements Disposable { if (result.title === 'Yes') { try { - void (await Git.apply(uri.repoPath!, patch, { allowConflicts: true })); + void (await Git.apply(uri.repoPath, patch, { allowConflicts: true })); return; } catch (e) { @@ -1119,7 +1119,7 @@ export class GitService implements Disposable { const branchesAndTagsBySha = Arrays.groupByFilterMap( (branches as { name: string; sha: string }[]).concat(tags as { name: string; sha: string }[]), - bt => bt.sha!, + bt => bt.sha, bt => (bt.name === currentName ? undefined : bt.name) ); @@ -1974,11 +1974,11 @@ export class GitService implements Disposable { } // First, check if we have a diff in the working tree - let hunkLine = await this.getDiffForLine(gitUri!, editorLine, undefined); + let hunkLine = await this.getDiffForLine(gitUri, editorLine, undefined); if (hunkLine === undefined) { // Next, check if we have a diff in the index (staged) hunkLine = await this.getDiffForLine( - gitUri!, + gitUri, editorLine, undefined, GitService.uncommittedStagedSha @@ -2339,7 +2339,7 @@ export class GitService implements Disposable { if (repo === undefined && isVslsScheme !== false && Container.vsls.isMaybeGuest) { if (!vslsUriPrefixRegex.test(path)) { path = Strings.normalizePath(path); - const vslsPath = `/~0${path[0] === slash ? path : `/${path}`}`; + const vslsPath = `/~0${path.startsWith(slash) ? path : `/${path}`}`; repo = repositoryTree.findSubstr(vslsPath); } } diff --git a/src/git/gitUri.ts b/src/git/gitUri.ts index 3d2b09d..17fdfca 100644 --- a/src/git/gitUri.ts +++ b/src/git/gitUri.ts @@ -106,7 +106,7 @@ export class GitUri extends ((Uri as any) as UriEx) { if (!fsPath) { path = slash; } - else if (fsPath[0] !== slash) { + else if (!fsPath.startsWith(slash)) { path = `/${fsPath}`; } else { @@ -202,7 +202,7 @@ export class GitUri extends ((Uri as any) as UriEx) { private static ensureValidUNCPath(authority: string, fsPath: string): [string, string] { // Taken from https://github.com/Microsoft/vscode/blob/e444eaa768a1e8bd8315f2cee265d725e96a8162/src/vs/base/common/uri.ts#L300-L325 // check for authority as used in UNC shares or use the path as given - if (fsPath[0] === slash && fsPath[1] === slash) { + if (fsPath.startsWith(slash) && fsPath[1] === slash) { const index = fsPath.indexOf(slash, 2); if (index === -1) { authority = fsPath.substring(2); @@ -427,7 +427,7 @@ export class GitUri extends ((Uri as any) as UriEx) { const uri = Uri.parse( // Replace / in the authority with a similar unicode characters otherwise parsing will be wrong - `${DocumentSchemes.GitLens}://${encodeURIComponent(shortSha!.replace(/\//g, '\u200A\u2215\u200A'))}${ + `${DocumentSchemes.GitLens}://${encodeURIComponent(shortSha.replace(/\//g, '\u200A\u2215\u200A'))}${ // Change encoded / back to / otherwise uri parsing won't work properly filePath === slash ? emptyStr : encodeURIComponent(filePath).replace(/%2F/g, slash) }?${encodeURIComponent(JSON.stringify(data))}` diff --git a/src/git/models/branch.ts b/src/git/models/branch.ts index a53cf2c..8cf0732 100644 --- a/src/git/models/branch.ts +++ b/src/git/models/branch.ts @@ -5,6 +5,8 @@ import { Git, GitRemote } from '../git'; import { GitStatus } from './status'; import { memoize } from '../../system'; +const whitespaceRegex = /\s/; + export interface GitTrackingState { ahead: number; behind: number; @@ -141,6 +143,6 @@ export class GitBranch { static isDetached(name: string): boolean { // If there is whitespace in the name assume this is not a valid branch name // Deals with detached HEAD states - return name.match(/\s/) !== null || name.match(/\(detached\)/) !== null; + return whitespaceRegex.test(name) || name.includes('(detached)'); } } diff --git a/src/git/models/repository.ts b/src/git/models/repository.ts index 51eb291..97f165f 100644 --- a/src/git/models/repository.ts +++ b/src/git/models/repository.ts @@ -511,7 +511,7 @@ export class Repository implements Disposable { private fireChange(...reasons: RepositoryChange[]) { if (this._fireChangeDebounced === undefined) { - this._fireChangeDebounced = Functions.debounce(this.fireChangeCore, 250); + this._fireChangeDebounced = Functions.debounce(this.fireChangeCore.bind(this), 250); } if (this._pendingChanges.repo === undefined) { @@ -539,7 +539,7 @@ export class Repository implements Disposable { private fireFileSystemChange(uri: Uri) { if (this._fireFileSystemChangeDebounced === undefined) { - this._fireFileSystemChangeDebounced = Functions.debounce(this.fireFileSystemChangeCore, 2500); + this._fireFileSystemChangeDebounced = Functions.debounce(this.fireFileSystemChangeCore.bind(this), 2500); } if (this._pendingChanges.fs === undefined) { diff --git a/src/git/models/status.ts b/src/git/models/status.ts index dc6571f..48df0b7 100644 --- a/src/git/models/status.ts +++ b/src/git/models/status.ts @@ -149,7 +149,7 @@ export class GitStatusFile implements GitFile { ) {} get status(): GitFileStatus { - return (this.indexStatus || this.workingTreeStatus || '?') as GitFileStatus; + return this.indexStatus || this.workingTreeStatus || '?'; } get staged() { diff --git a/src/git/parsers/blameParser.ts b/src/git/parsers/blameParser.ts index ed4593a..1c67565 100644 --- a/src/git/parsers/blameParser.ts +++ b/src/git/parsers/blameParser.ts @@ -138,14 +138,14 @@ export class GitBlameParser { // Try to get the repoPath from the most recent commit repoPath = Strings.normalizePath( fileName.replace( - fileName.startsWith(slash) ? `/${entry.fileName}` : entry.fileName!, + fileName.startsWith(slash) ? `/${entry.fileName}` : entry.fileName, emptyStr ) ); relativeFileName = Strings.normalizePath(paths.relative(repoPath, fileName)); } else { - relativeFileName = entry.fileName!; + relativeFileName = entry.fileName; } first = false; diff --git a/src/git/parsers/diffParser.ts b/src/git/parsers/diffParser.ts index cb6e990..9f3d4af 100644 --- a/src/git/parsers/diffParser.ts +++ b/src/git/parsers/diffParser.ts @@ -137,7 +137,7 @@ export class GitDiffParser { files.push({ repoPath: repoPath, - status: (status[0] !== '.' ? status[0].trim() : '?') as GitFileStatus, + status: (!status.startsWith('.') ? status[0].trim() : '?') as GitFileStatus, indexStatus: undefined, workingTreeStatus: undefined, // Stops excessive memory usage -- https://bugs.chromium.org/p/v8/issues/detail?id=2869 diff --git a/src/git/parsers/logParser.ts b/src/git/parsers/logParser.ts index b4668ad..41fab65 100644 --- a/src/git/parsers/logParser.ts +++ b/src/git/parsers/logParser.ts @@ -437,7 +437,7 @@ export class GitLogParser { type === GitCommitType.Log ? entry.parentShas![0] : undefined, undefined, entry.fileStats, - entry.parentShas!, + entry.parentShas, entry.line ); diff --git a/src/git/parsers/statusParser.ts b/src/git/parsers/statusParser.ts index da291d9..8d09dcc 100644 --- a/src/git/parsers/statusParser.ts +++ b/src/git/parsers/statusParser.ts @@ -50,7 +50,7 @@ export class GitStatusParser { else { const rawStatus = line.substring(0, 2); const fileName = line.substring(3); - if (rawStatus[0] === 'R') { + if (rawStatus.startsWith('R')) { const [file1, file2] = fileName.replace(/"/g, emptyStr).split('->'); files.push(this.parseStatusFile(repoPath, rawStatus, file2.trim(), file1.trim())); } @@ -137,7 +137,7 @@ export class GitStatusParser { fileName: string, originalFileName?: string ): GitStatusFile { - let indexStatus = rawStatus[0] !== '.' ? rawStatus[0].trim() : undefined; + let indexStatus = !rawStatus.startsWith('.') ? rawStatus[0].trim() : undefined; if (indexStatus == null || indexStatus.length === 0) { indexStatus = undefined; } diff --git a/src/git/shell.ts b/src/git/shell.ts index 7346fcd..e3e14d0 100644 --- a/src/git/shell.ts +++ b/src/git/shell.ts @@ -7,6 +7,11 @@ import { Logger } from '../logger'; const isWindows = process.platform === 'win32'; +const slashesRegex = /[\\/]/; +const ps1Regex = /\.ps1$/i; +const batOrCmdRegex = /\.(bat|cmd)$/i; +const jsRegex = /\.(js)$/i; + /** * Search PATH to see if a file exists in any of the path folders. * @@ -21,7 +26,7 @@ function runDownPath(exe: string): string { // Posix does // Files with any directory path don't get this applied - if (exe.match(/[\\/]/)) return exe; + if (slashesRegex.test(exe)) return exe; const target = paths.join('.', exe); try { @@ -81,7 +86,7 @@ export function findExecutable(exe: string, args: string[]): { cmd: string; args } } - if (exe.match(/\.ps1$/i)) { + if (ps1Regex.test(exe)) { const cmd = paths.join( process.env.SYSTEMROOT || 'C:\\WINDOWS', 'System32', @@ -94,14 +99,14 @@ export function findExecutable(exe: string, args: string[]): { cmd: string; args return { cmd: cmd, args: psargs.concat(args) }; } - if (exe.match(/\.(bat|cmd)$/i)) { + if (batOrCmdRegex.test(exe)) { const cmd = paths.join(process.env.SYSTEMROOT || 'C:\\WINDOWS', 'System32', 'cmd.exe'); const cmdArgs = ['/C', exe, ...args]; return { cmd: cmd, args: cmdArgs }; } - if (exe.match(/\.(js)$/i)) { + if (jsRegex.test(exe)) { const cmd = process.execPath; const nodeArgs = [exe]; diff --git a/src/messages.ts b/src/messages.ts index 3d07a60..0a663a2 100644 --- a/src/messages.ts +++ b/src/messages.ts @@ -128,7 +128,7 @@ export class Messages { if (uri !== undefined) { await setCommandContext(CommandContext.ViewsHideSupportGitLens, true); - await this.suppressedMessage(SuppressedMessages.SupportGitLensNotification!); + await this.suppressedMessage(SuppressedMessages.SupportGitLensNotification); await env.openExternal(uri); } } diff --git a/src/quickpicks/commonQuickPicks.ts b/src/quickpicks/commonQuickPicks.ts index ec666af..756f96f 100644 --- a/src/quickpicks/commonQuickPicks.ts +++ b/src/quickpicks/commonQuickPicks.ts @@ -133,16 +133,11 @@ export class ShowCommitSearchResultsInViewQuickPickItem extends CommandQuickPick super(item, undefined, undefined); } - async execute(): Promise<{} | undefined> { - return void (await Container.searchView.showSearchResults( - this.results.repoPath, - this.search, - this.searchBy, - this.results, - { - label: this.resultsLabel - } - )); + execute(): Promise<{} | undefined> { + Container.searchView.showSearchResults(this.results.repoPath, this.search, this.searchBy, this.results, { + label: this.resultsLabel + }); + return Promise.resolve(undefined); } } diff --git a/src/quickpicks/fileHistoryQuickPick.ts b/src/quickpicks/fileHistoryQuickPick.ts index 274a1e5..09df263 100644 --- a/src/quickpicks/fileHistoryQuickPick.ts +++ b/src/quickpicks/fileHistoryQuickPick.ts @@ -111,7 +111,7 @@ export class FileHistoryQuickPick { } if (!options.pickerOnly) { - const branch = await Container.git.getBranch(uri.repoPath!); + const branch = await Container.git.getBranch(uri.repoPath); if (branch !== undefined) { const commandArgs: ShowQuickFileHistoryCommandArgs = { @@ -150,7 +150,7 @@ export class FileHistoryQuickPick { ); } - const remotes = await Container.git.getRemotes(uri.repoPath!, { sort: true }); + const remotes = await Container.git.getRemotes(uri.repoPath, { sort: true }); if (remotes.length) { const resource: RemoteResource = uri.sha !== undefined diff --git a/src/system/array.ts b/src/system/array.ts index 32f0ad7..df0df8f 100644 --- a/src/system/array.ts +++ b/src/system/array.ts @@ -112,7 +112,7 @@ export namespace Arrays { folder.children = new Map(); } - let f = folder.children!.get(folderName); + let f = folder.children.get(folderName); if (f === undefined) { f = { name: folderName, diff --git a/src/system/function.ts b/src/system/function.ts index e7b53fc..4c1f739 100644 --- a/src/system/function.ts +++ b/src/system/function.ts @@ -105,7 +105,7 @@ export namespace Functions { fnBody = fnBody.slice(open, close); fnBody = `(${fnBody})`; - const match = fnBody.match(fnBodyRegex); + const match = fnBodyRegex.exec(fnBody); return match != null ? match[1].split(comma).map(param => param.trim().replace(fnBodyStripParamDefaultValueRegex, emptyStr)) : []; diff --git a/src/trackers/documentTracker.ts b/src/trackers/documentTracker.ts index aad1162..602c3fb 100644 --- a/src/trackers/documentTracker.ts +++ b/src/trackers/documentTracker.ts @@ -266,7 +266,7 @@ export class DocumentTracker implements Disposable { document = documentOrId; } - const doc = await this.addCore(document); + const doc = this.addCore(document); await doc.ensureInitialized(); return doc; diff --git a/src/trackers/gitLineTracker.ts b/src/trackers/gitLineTracker.ts index 16c4821..b5d3130 100644 --- a/src/trackers/gitLineTracker.ts +++ b/src/trackers/gitLineTracker.ts @@ -133,7 +133,7 @@ export class GitLineTracker extends LineTracker { for (const line of lines) { const commitLine = blame.lines[line]; - this.setState(line, new GitLineState(blame.commits.get(commitLine.sha)!)); + this.setState(line, new GitLineState(blame.commits.get(commitLine.sha))); } } diff --git a/src/views/nodes/branchesNode.ts b/src/views/nodes/branchesNode.ts index e5e3023..63229cf 100644 --- a/src/views/nodes/branchesNode.ts +++ b/src/views/nodes/branchesNode.ts @@ -49,7 +49,7 @@ export class BranchesNode extends ViewNode { hierarchy, 'branches' ); - this._children = await root.getChildren(); + this._children = root.getChildren(); } return this._children; } diff --git a/src/views/nodes/commitNode.ts b/src/views/nodes/commitNode.ts index 5ea2a65..cc57b2d 100644 --- a/src/views/nodes/commitNode.ts +++ b/src/views/nodes/commitNode.ts @@ -27,7 +27,7 @@ export class CommitNode extends ViewRefNode { return this.commit.sha; } - async getChildren(): Promise { + getChildren(): ViewNode[] { const commit = this.commit; let children: FileNode[] = [ ...Iterables.map(commit.files, s => new CommitFileNode(this.view, this, s, commit.toFileCommit(s))) @@ -42,7 +42,7 @@ export class CommitNode extends ViewRefNode { ); const root = new FolderNode(this.view, this, this.repoPath, '', hierarchy); - children = (await root.getChildren()) as FileNode[]; + children = root.getChildren() as FileNode[]; } else { children.sort((a, b) => diff --git a/src/views/nodes/fileHistoryTrackerNode.ts b/src/views/nodes/fileHistoryTrackerNode.ts index 863fc14..9aece7a 100644 --- a/src/views/nodes/fileHistoryTrackerNode.ts +++ b/src/views/nodes/fileHistoryTrackerNode.ts @@ -68,7 +68,7 @@ export class FileHistoryTrackerNode extends SubscribeableViewNode { hierarchy, `remote(${this.remote.name}` ); - const children = (await root.getChildren()) as (BranchOrTagFolderNode | BranchNode)[]; + const children = root.getChildren() as (BranchOrTagFolderNode | BranchNode)[]; return children; } diff --git a/src/views/nodes/resultsFilesNode.ts b/src/views/nodes/resultsFilesNode.ts index 18d7cbd..f78c21d 100644 --- a/src/views/nodes/resultsFilesNode.ts +++ b/src/views/nodes/resultsFilesNode.ts @@ -47,7 +47,7 @@ export class ResultsFilesNode extends ViewNode { ); const root = new FolderNode(this.view, this, this.repoPath, '', hierarchy); - children = (await root.getChildren()) as FileNode[]; + children = root.getChildren() as FileNode[]; } else { children.sort( diff --git a/src/views/nodes/stashNode.ts b/src/views/nodes/stashNode.ts index 0721b85..f8fbf3a 100644 --- a/src/views/nodes/stashNode.ts +++ b/src/views/nodes/stashNode.ts @@ -21,13 +21,13 @@ export class StashNode extends ViewRefNode { } async getChildren(): Promise { - const files = (this.commit as GitStashCommit).files; + const files = this.commit.files; // Check for any untracked files -- since git doesn't return them via `git stash list` :( // See https://stackoverflow.com/questions/12681529/ const log = await Container.git.getLog(this.commit.repoPath, { maxCount: 1, - ref: `${(this.commit as GitStashCommit).stashName}^3` + ref: `${this.commit.stashName}^3` }); if (log !== undefined) { const commit = Iterables.first(log.commits.values()); @@ -39,7 +39,7 @@ export class StashNode extends ViewRefNode { } const children = files.map(s => new StashFileNode(this.view, this, s, this.commit.toFileCommit(s))); - children.sort((a, b) => a.label!.localeCompare(b.label!, undefined, { numeric: true, sensitivity: 'base' })); + children.sort((a, b) => a.label.localeCompare(b.label, undefined, { numeric: true, sensitivity: 'base' })); return children; } diff --git a/src/views/nodes/statusFilesNode.ts b/src/views/nodes/statusFilesNode.ts index 2c7d3ec..3b975b6 100644 --- a/src/views/nodes/statusFilesNode.ts +++ b/src/views/nodes/statusFilesNode.ts @@ -101,7 +101,7 @@ export class StatusFilesNode extends ViewNode { ); const root = new FolderNode(this.view, this, repoPath, '', hierarchy, true); - children = (await root.getChildren()) as FileNode[]; + children = root.getChildren() as FileNode[]; } else { children.sort( diff --git a/src/views/nodes/tagsNode.ts b/src/views/nodes/tagsNode.ts index c60eece..50f54cc 100644 --- a/src/views/nodes/tagsNode.ts +++ b/src/views/nodes/tagsNode.ts @@ -43,7 +43,7 @@ export class TagsNode extends ViewNode { hierarchy, 'tags' ); - const children = (await root.getChildren()) as (BranchOrTagFolderNode | TagNode)[]; + const children = root.getChildren() as (BranchOrTagFolderNode | TagNode)[]; return children; } diff --git a/src/views/searchView.ts b/src/views/searchView.ts index d9be68c..112bb9c 100644 --- a/src/views/searchView.ts +++ b/src/views/searchView.ts @@ -159,7 +159,7 @@ export class SearchView extends ViewBase { const root = this.ensureRoot(); root.addOrReplace(results, !this.keepResults); - setImmediate(() => this.reveal(results, { select: true, expand: true })); + setImmediate(() => void this.reveal(results, { select: true, expand: true })); } private getSearchLabel( diff --git a/src/views/viewCommands.ts b/src/views/viewCommands.ts index 955eb2e..3d860dd 100644 --- a/src/views/viewCommands.ts +++ b/src/views/viewCommands.ts @@ -180,7 +180,7 @@ export class ViewCommands { if (message.includes('Co-authored-by: ')) { newlines = '\n'; } - else if (message.length !== 0 && message[message.length - 1] === '\n') { + else if (message.length !== 0 && message.endsWith('\n')) { newlines = '\n\n'; } else { diff --git a/src/webviews/apps/shared/events.ts b/src/webviews/apps/shared/events.ts index 86f5001..35db99a 100644 --- a/src/webviews/apps/shared/events.ts +++ b/src/webviews/apps/shared/events.ts @@ -21,7 +21,7 @@ export interface EmitterOptions { } export class Emitter { - // eslint-disable-next-line no-empty-function + // eslint-disable-next-line @typescript-eslint/no-empty-function private static readonly _noop = function() {}; private readonly _options?: EmitterOptions; @@ -199,7 +199,7 @@ class LinkedList { } else if (atTheEnd) { // push - const oldLast = this._last!; + const oldLast = this._last; this._last = newNode; newNode.prev = oldLast; oldLast.next = newNode; @@ -254,12 +254,12 @@ class LinkedList { } else if (node.next === Node.Undefined) { // last - this._last = this._last!.prev!; + this._last = this._last.prev; this._last.next = Node.Undefined; } else if (node.prev === Node.Undefined) { // first - this._first = this._first!.next!; + this._first = this._first.next; this._first.prev = Node.Undefined; } diff --git a/src/webviews/protocol.ts b/src/webviews/protocol.ts index 3c8efd5..8947323 100644 --- a/src/webviews/protocol.ts +++ b/src/webviews/protocol.ts @@ -20,7 +20,7 @@ export class IpcCommandType

{ export function onIpcCommand( type: CT, command: IpcMessage, - fn: (params: IpcCommandParamsOf) => void + fn: (params: IpcCommandParamsOf) => unknown ) { fn(command.params); } diff --git a/src/webviews/webviewBase.ts b/src/webviews/webviewBase.ts index c5ea937..63a6770 100644 --- a/src/webviews/webviewBase.ts +++ b/src/webviews/webviewBase.ts @@ -94,14 +94,18 @@ export abstract class WebviewBase implements Disposable { params.scope === 'workspace' ? ConfigurationTarget.Workspace : ConfigurationTarget.Global; for (const key in params.changes) { - const inspect = await configuration.inspect(key)!; + const inspect = configuration.inspect(key)!; const value = params.changes[key]; - await configuration.update(key, value === inspect.defaultValue ? undefined : value, target); + void (await configuration.update( + key, + value === inspect.defaultValue ? undefined : value, + target + )); } for (const key of params.removes) { - await configuration.update(key, undefined, target); + void (await configuration.update(key, undefined, target)); } }); diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 0000000..068f7f8 --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["dom", "dom.iterable", "es2018"], + "skipLibCheck": true + }, + "exclude": ["node_modules", "test"] +} diff --git a/tsconfig.webviews.json b/tsconfig.webviews.json new file mode 100644 index 0000000..3d3eff7 --- /dev/null +++ b/tsconfig.webviews.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["dom", "dom.iterable", "es2018"], + "outDir": "dist/webviews", + "skipLibCheck": true + }, + "include": ["src/config.ts", "src/webviews/protocol.ts", "src/webviews/apps/**/*"], + "exclude": ["node_modules", "test"] +} diff --git a/webpack.config.js b/webpack.config.js index b038baa..de014fd 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -137,7 +137,7 @@ function getWebviewsConfig(env) { const plugins = [ new CleanPlugin({ cleanOnceBeforeBuildPatterns: clean }), new ForkTsCheckerPlugin({ - tsconfig: path.resolve(__dirname, 'webviews.tsconfig.json'), + tsconfig: path.resolve(__dirname, 'tsconfig.webviews.json'), async: false, eslint: true, useTypescriptIncrementalApi: true @@ -229,7 +229,7 @@ function getWebviewsConfig(env) { use: { loader: 'ts-loader', options: { - configFile: 'webviews.tsconfig.json', + configFile: 'tsconfig.webviews.json', transpileOnly: true, experimentalWatchApi: true } diff --git a/webviews.tsconfig.json b/webviews.tsconfig.json deleted file mode 100644 index 4d4c351..0000000 --- a/webviews.tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "lib": ["dom", "dom.iterable", "es2018"], - "module": "esnext", - "moduleResolution": "node", - "noFallthroughCasesInSwitch": true, - "noImplicitReturns": true, - "noUnusedLocals": false, - "outDir": "dist/webviews", - "rootDir": "src", - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "target": "es2018" - }, - "include": ["src/config.ts", "src/webviews/protocol.ts", "src/webviews/apps/**/*"], - "exclude": ["node_modules"] -} diff --git a/yarn.lock b/yarn.lock index b058308..3503c2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -119,9 +119,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "12.6.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.9.tgz#ffeee23afdc19ab16e979338e7b536fdebbbaeaf" - integrity sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw== + version "12.7.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.2.tgz#c4e63af5e8823ce9cc3f0b34f7b998c2171f0c44" + integrity sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg== "@types/node@10.11.7": version "10.11.7" @@ -166,16 +166,16 @@ "@types/uglify-js" "*" source-map "^0.6.0" -"@typescript-eslint/eslint-plugin@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f" - integrity sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g== +"@typescript-eslint/eslint-plugin@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.0.0.tgz#609a5d7b00ce21a6f94d7ef282eba9da57ca1e42" + integrity sha512-Mo45nxTTELODdl7CgpZKJISvLb+Fu64OOO2ZFc2x8sYSnUpFrBUW3H+H/ZGYmEkfnL6VkdtOSxgdt+Av79j0sA== dependencies: - "@typescript-eslint/experimental-utils" "1.13.0" - eslint-utils "^1.3.1" + "@typescript-eslint/experimental-utils" "2.0.0" + eslint-utils "^1.4.0" functional-red-black-tree "^1.0.1" regexpp "^2.0.1" - tsutils "^3.7.0" + tsutils "^3.14.0" "@typescript-eslint/experimental-utils@1.13.0": version "1.13.0" @@ -186,7 +186,26 @@ "@typescript-eslint/typescript-estree" "1.13.0" eslint-scope "^4.0.0" -"@typescript-eslint/parser@1.13.0", "@typescript-eslint/parser@^1.10.2": +"@typescript-eslint/experimental-utils@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.0.0.tgz#f3d298bb411357f35c4184e24280b256b6321949" + integrity sha512-XGJG6GNBXIEx/mN4eTRypN/EUmsd0VhVGQ1AG+WTgdvjHl0G8vHhVBHrd/5oI6RRYBRnedNymSYWW1HAdivtmg== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.0.0" + eslint-scope "^4.0.0" + +"@typescript-eslint/parser@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.0.0.tgz#4273bb19d03489daf8372cdaccbc8042e098178f" + integrity sha512-ibyMBMr0383ZKserIsp67+WnNVoM402HKkxqXGlxEZsXtnGGurbnY90pBO3e0nBUM7chEEOcxUhgw9aPq7fEBA== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.0.0" + "@typescript-eslint/typescript-estree" "2.0.0" + eslint-visitor-keys "^1.0.0" + +"@typescript-eslint/parser@^1.10.2": version "1.13.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355" integrity sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ== @@ -204,6 +223,14 @@ lodash.unescape "4.0.1" semver "5.5.0" +"@typescript-eslint/typescript-estree@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.0.0.tgz#c9f6c0efd1b11475540d6a55dc973cc5b9a67e77" + integrity sha512-NXbmzA3vWrSgavymlzMWNecgNOuiMMp62MO3kI7awZRLRcsA1QrYWo6q08m++uuAGVbXH/prZi2y1AWuhSu63w== + dependencies: + lodash.unescape "4.0.1" + semver "^6.2.0" + "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" @@ -401,9 +428,9 @@ acorn@^5.5.0: integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== acorn@^6.0.7, acorn@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" - integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== + version "6.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" + integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== ajv-errors@^1.0.0: version "1.0.1" @@ -430,10 +457,12 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" + integrity sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q== + dependencies: + type-fest "^0.5.2" ansi-regex@^2.0.0: version "2.1.1" @@ -674,9 +703,9 @@ balanced-match@^1.0.0: integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== base@^0.11.1: version "0.11.2" @@ -955,9 +984,9 @@ buffer@^4.3.0: isarray "^1.0.0" buffer@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" - integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== + version "5.4.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.0.tgz#33294f5c1f26e08461e528b69fa06de3c45cbd8c" + integrity sha512-Xpgy0IwHK2N01ncykXTy6FpCWuM+CJSHoPVBLyNqyrWxsedpLvwsYUhf0ME3WRFNUhos0dMamz9cOS/xRDtU5g== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1158,10 +1187,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-dependency-plugin@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz#da168c0b37e7b43563fb9f912c1c007c213389ef" - integrity sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA== +circular-dependency-plugin@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz#e09dbc2dd3e2928442403e2d45b41cea06bc0a93" + integrity sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw== class-utils@^0.3.5: version "0.3.6" @@ -1188,12 +1217,12 @@ clean-webpack-plugin@3.0.0: "@types/webpack" "^4.4.31" del "^4.1.1" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - restore-cursor "^2.0.0" + restore-cursor "^3.1.0" cli-width@^2.0.0: version "2.2.0" @@ -1218,15 +1247,14 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-deep@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" - integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - for-own "^1.0.0" is-plain-object "^2.0.4" - kind-of "^6.0.0" - shallow-clone "^1.0.0" + kind-of "^6.0.2" + shallow-clone "^3.0.0" clone-response@1.0.2: version "1.0.2" @@ -1408,9 +1436,9 @@ core-js@^2.4.0: integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== core-js@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07" - integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ== + version "3.2.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" + integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -1493,10 +1521,10 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-loader@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.1.0.tgz#6f008b993b8ce812e6bab57f3cbfdc7a7cf28685" - integrity sha512-MuL8WsF/KSrHCBCYaozBKlx+r7vIfUaDTEreo7wR7Vv3J6N0z6fqWjRk3e/6wjneitXN1r/Y9FTK1psYNOBdJQ== +css-loader@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2" + integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ== dependencies: camelcase "^5.3.1" cssesc "^3.0.0" @@ -1978,6 +2006,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -2139,7 +2172,7 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: +eslint-utils@^1.3.1, eslint-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.0.tgz#e2c3c8dba768425f897cf0f9e51fe2e241485d4c" integrity sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ== @@ -2147,9 +2180,9 @@ eslint-utils@^1.3.1: eslint-visitor-keys "^1.0.0" eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== eslint@6.1.0: version "6.1.0" @@ -2282,9 +2315,9 @@ esrecurse@^4.1.0: estraverse "^4.1.0" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== esutils@^2.0.2: version "2.0.3" @@ -2537,10 +2570,10 @@ figures@^1.3.5: escape-string-regexp "^1.0.5" object-assign "^4.1.0" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" + integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g== dependencies: escape-string-regexp "^1.0.5" @@ -2701,23 +2734,11 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -3066,9 +3087,9 @@ got@^8.3.1: url-to-options "^1.0.1" graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d" - integrity sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw== + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== "graceful-readlink@>= 1.0.0": version "1.0.1" @@ -3211,11 +3232,9 @@ hoopy@^0.1.4: integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== hosted-git-info@^2.1.4: - version "2.8.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.2.tgz#a35c3f355ac1249f1093c0c2a542ace8818c171a" - integrity sha512-CyjlXII6LMsPMyUzxpTt8fzh5QwzGqPmQXgY/Jyf4Zfp27t/FvfhwoE/8laaMUcMy816CkWF20I7NeQhwwY88w== - dependencies: - lru-cache "^5.1.1" + version "2.8.4" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" + integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== html-comment-regex@^1.1.0: version "1.1.2" @@ -3526,21 +3545,21 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@^6.2.2, inquirer@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== + version "6.5.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.1.tgz#8bfb7a5ac02dac6ff641ac4c5ff17da112fcdb42" + integrity sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" rxjs "^6.4.0" - string-width "^2.1.0" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -3681,6 +3700,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-gif@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-3.0.0.tgz#c4be60b26a301d695bb833b20d9b5d66c6cf83b1" @@ -4081,17 +4105,12 @@ lodash.merge@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= - lodash.unescape@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= -lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -4359,12 +4378,7 @@ mime@1.6.0, mime@^1.3.4: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -4450,14 +4464,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -4492,12 +4498,7 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@~0.0.4: +mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -4822,12 +4823,12 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - mimic-fn "^1.0.0" + mimic-fn "^2.1.0" opener@^1.5.1: version "1.5.1" @@ -5295,9 +5296,9 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: uniq "^1.0.1" postcss-value-parser@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.1.tgz#e3f6172cc91302912c89da55a42454025485250f" - integrity sha512-3Jk+/CVH0HBfgSSFWALKm9Hyzf4kumPjZfUxkRYZNcqFztELb2APKxv0nlX8HCdc1/ymePmT/nFf1ST6fjWH2A== + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.5, postcss@^7.0.6: version "7.0.17" @@ -5781,12 +5782,12 @@ responselike@1.0.2: dependencies: lowercase-keys "^1.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" ret@~0.1.10: @@ -5794,7 +5795,14 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2, rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -5835,7 +5843,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -5862,16 +5870,15 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" - integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== +sass-loader@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.2.0.tgz#e34115239309d15b2527cb62b5dfefb62a96ff7f" + integrity sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA== dependencies: - clone-deep "^2.0.1" + clone-deep "^4.0.1" loader-utils "^1.0.1" - lodash.tail "^4.1.1" neo-async "^2.5.0" - pify "^3.0.0" + pify "^4.0.1" semver "^5.5.0" sax@^1.2.4, sax@~1.2.4: @@ -5889,9 +5896,9 @@ schema-utils@^1.0.0: ajv-keywords "^3.1.0" schema-utils@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.0.1.tgz#1eec2e059556af841b7f3a83b61af13d7a3f9196" - integrity sha512-HJFKJ4JixDpRur06QHwi8uu2kZbng318ahWEKgBjc0ZklcE4FDvmm2wghb448q0IRaABxIESt8vqPFvwgMB80A== + version "2.1.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.1.0.tgz#940363b6b1ec407800a22951bdcc23363c039393" + integrity sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw== dependencies: ajv "^6.1.0" ajv-keywords "^3.1.0" @@ -5924,16 +5931,16 @@ semver-truncate@^1.1.2: semver "^5.3.0" "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@^6.0.0, semver@^6.1.2: +semver@^6.0.0, semver@^6.1.2, semver@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -6010,14 +6017,12 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" - integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - is-extendable "^0.1.1" - kind-of "^5.0.0" - mixin-object "^2.0.1" + kind-of "^6.0.2" shebang-command@^1.2.0: version "1.2.0" @@ -6287,7 +6292,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.0: +"string-width@^1.0.2 || 2": version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -6304,12 +6309,21 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" + integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^5.2.0" + string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" @@ -6504,9 +6518,9 @@ terser-webpack-plugin@1.4.1, terser-webpack-plugin@^1.4.1: worker-farm "^1.7.0" terser@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.3.tgz#6074fbcf3517561c3272ea885f422c7a8c32d689" - integrity sha512-on13d+cnpn5bMouZu+J8tPYQecsdRJCJuxFJ+FVoPBoLJgk5bCBkp+Uen2hWyi0KIUm6eDarnlAlH+KgIx/PuQ== + version "4.1.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.4.tgz#4478b6a08bb096a61e793fea1a4434408bab936c" + integrity sha512-+ZwXJvdSwbd60jG0Illav0F06GDJF0R4ydZ21Q3wGAFKoBGyJGo34F63vzJHgvYxc1ukOtIjvwEvl9MkjzM6Pg== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -6536,9 +6550,9 @@ timed-out@^4.0.0, timed-out@^4.0.1: integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== dependencies: setimmediate "^1.0.4" @@ -6656,10 +6670,10 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tsutils@^3.7.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.0.tgz#c3ccab927a475aa2beef6a3695c2ff76da13cdf8" - integrity sha512-fyveWOtAXfumAxIqkcMHuPaaVyLBKjB8Y00ANZkqh+HITBAQscCbQIHwwBTJdvQq7RykLEbOPcUUnJ16X4NA0g== +tsutils@^3.14.0: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== dependencies: tslib "^1.8.1" @@ -6692,6 +6706,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" + integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -7025,10 +7044,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.39.1: - version "4.39.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.39.1.tgz#60ed9fb2b72cd60f26ea526c404d2a4cc97a1bd8" - integrity sha512-/LAb2TJ2z+eVwisldp3dqTEoNhzp/TLCZlmZm3GGGAlnfIWDgOEE758j/9atklNLfRyhKbZTCOIoPqLJXeBLbQ== +webpack@4.39.2: + version "4.39.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.39.2.tgz#c9aa5c1776d7c309d1b3911764f0288c8c2816aa" + integrity sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5"