From 1bc2883fed6dbac4c89a93f5fb20a3a2414fba2f Mon Sep 17 00:00:00 2001 From: Burt Harris Date: Sat, 11 Apr 2020 15:28:51 -0700 Subject: [PATCH 01/59] chore: eliminate 'npm link' from the build scripts. Use a relative path devDependency on antlr4ts-cli, that's cleaner. Add steps to cleanup any npm global mess made before. Added 'npm run reinstall' script for clean-up of truly ugly problems. Note: reinstall involves a 'git purge -idx'. It asks permission... --- CONTRIBUTING.md | 48 +++++++++++++++++++++++++++++++++++------------ package-lock.json | 8 ++++++++ package.json | 12 ++++++------ 3 files changed, 50 insertions(+), 18 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7944ccf4..cd400343 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,13 +8,21 @@ only be considered when sent from users who have signed the ## Building from Source +### NPM vs YARN + +There are two significant package managers these days, NPM (which is included with Node.js), and YARN (which has been innovating.) Unfortunately the build process for antlr4ts currently does not support YARN. + +We'll try to change that in the future, but for now the desire to ship a stable version 1.0 release overcomes any short-term advantages YARN may offer. So use NPM for now. + +If you are deeply into YARN, the problem seems to be in that NPM creates symbolic links in the project root's node_module folder for antlr4ts and antlr4ts-cli, while YARN apparently copies the files instead. Unfortunately, the timing of the copy doesn't work, because under YARN, node_modules\antlr4ts-cli\target\antlr4-typescript-4.7.3-SNAPSHOT-complete.jar doesn't get included because it is copied before its build. + ### Prerequisites Building this repository from source requires several tools: -* Node.js 6.7.x -* Maven 3.3.1+ (3.3.9+ recommended) -* Java Development Kit 1.6+ (1.8+ recommended) +- Node.js 6.7.x +- Maven 3.3.1+ (3.3.9+ recommended) +- Java Development Kit 1.6+ (1.8+ recommended) Users working in Visual Studio Code should update their workspace settings to specify the paths for the Java Development Kit and Apache Maven: @@ -67,7 +75,7 @@ the actual file name produced by the profiler. node --prof-process isolate-000001C4B0FF38A0-v8.log >profile.txt ``` -The resulting file, `profile.txt` will contain a summary of the results from running a sampling profiler. +The resulting file, `profile.txt` will contain a summary of the results from running a sampling profiler. ## Versioning @@ -116,38 +124,54 @@ ability to provide meaningful release notes. > > In addition to the above, building the design-time tool requires: > -> - A Java development kit, 1.8x or greater (see above.) -> - The [Maven](https://maven.apache.org/download.cgi) project system after downloading, [set it up according to these instructions](https://maven.apache.org/install.html). +> - A Java development kit, 1.8x or greater (see above.) +> - The [Maven](https://maven.apache.org/download.cgi) project system after downloading, [set it up according to these instructions](https://maven.apache.org/install.html). > -> After you clone the project, run `npm install` from the root directory, this will install other runtime- and development-time dependencies. +> After you clone the project, run `npm install` from the root directory, this will install other runtime- and development-time dependencies. > -> The first time you run `npm install`, it will build and install the current version of the **antlr4ts** tool locally. After that, if you update the tool, you will need to execute the command `npm install tool`. This includes if you pull any updates that change the tool. +> The first time you run `npm install`, it will build and install the current version of the **antlr4ts** tool locally. After that, if you update the tool, you will need to execute the command `npm install tool`. This includes if you pull any updates that change the tool. > > ## Dev setup with Visual Studio +> > Any edition of [Visual Studio 2015](https://www.visualstudio.com/vs/) (or greater) should work, including Communitity Edition. > You'll want to be sure you have the following VS extensions installed: +> > - [Node Tools for Visual Studio 1.2](https://www.visualstudio.com/vs/node-js/) (or greater) > - [TypeScript for Visual Studio 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48593) 2.03 or greater. > -> You ***should*** be able to run tests from the Test Explorer, etc... but there seems to be an unresolved problem making this work, for now use the command-line method below to be sure you run them all. +> You **_should_** be able to run tests from the Test Explorer, etc... but there seems to be an unresolved problem making this work, for now use the command-line method below to be sure you run them all. > > ### Running basic tests should be as simple as... +> > ``` > npm test > ``` +> > How we integrate with runtime-testsuite is TBD. > > ### Generating test code coverage report +> > ``` -> npm run cover +> npm run cover > ``` +> > This executes a code-coverage test run, then generates an interactive HTML report in `coverage/lcov-report/index.html`. > > ### Java Reference code -> To view the Java code this project was derived from, use the following commands in the project root directory. This *isn't* strictly needed for building the project, and the reference implementation is expected to be fairly stable. +> +> To view the Java code this project was derived from, use the following commands in the project root directory. This _isn't_ strictly needed for building the project, and the reference implementation is expected to be fairly stable. > > ``` > git submodule init > git submodule update > ``` -> The later (update) command may need to be repeated occasionally after another contributor updates the version of reference code. \ No newline at end of file +> +> The later (update) command may need to be repeated occasionally after another contributor updates the version of reference code. + +# A note on the build process + +The build process for this project has grown organically based on npm scripts. One part of those scripts used the +**npm link** command, and with further experience, this seems to have caused a fragile build situation. As stands the +build can leave npm **global** symlinks pointing into this build directory. They can effect what version of ANTLR4TS +is used by other projects, outside this repository. For this reason, I'm removing them from package.json, but leaving +in place a **npm run unlink** script which can help the cleanup process. diff --git a/package-lock.json b/package-lock.json index 52a8a97c..1c05851b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -457,6 +457,14 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, + "antlr4ts": { + "version": "file:target/src", + "dev": true + }, + "antlr4ts-cli": { + "version": "file:tool", + "dev": true + }, "append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", diff --git a/package.json b/package.json index ba00f826..e3462519 100644 --- a/package.json +++ b/package.json @@ -5,12 +5,10 @@ "private": true, "main": "index.js", "scripts": { - "prepare": "npm run buildtool && npm link antlr4ts-cli && npm run antlr4ts && npm run tsc && npm link target/src && npm run buildrts", - "unlink": "npm unlink antlr4ts && npm unlink target/src && npm unlink antlr4ts-cli && npm run unlinkruntime && npm run unlinktool", - "unlinkruntime": "cd target/src && npm unlink", - "buildtool": "cd tool && npm link -force", - "unlinktool": "cd tool && npm unlink", - "clean": "npm run unlink && git clean -idx", + "prepare": "npm run unlink && npm run buildtool && npm run antlr4ts && npm run tsc && npm run buildrts", + "unlink": "npm uninstall -g antlr4ts antlr4ts-cli", + "buildtool": "cd tool && npm run prepare", + "reinstall": "npm run unlink && git clean -idx && npm install", "antlr4ts": "npm run antlr4ts-runtime-xpath && npm run antlr4ts-test-runtime && npm run antlr4ts-test-labels && npm run antlr4ts-test-pattern && npm run antlr4ts-test-rewriter && npm run antlr4ts-test-xpath && npm run antlr4ts-benchmark", "antlr4ts-runtime-xpath": "cd src/tree/xpath && antlr4ts XPathLexer.g4 -DbaseImportPath=../..", "antlr4ts-test-runtime": "cd test/runtime && antlr4ts TestGrammar.g4 -DbaseImportPath=../../../../src -o gen/typescript_only", @@ -73,6 +71,8 @@ "@types/node": "^10.12.10", "@types/source-map-support": "^0.4.0", "@types/std-mocks": "^1.0.0", + "antlr4ts": "./target/src", + "antlr4ts-cli": "./tool", "codecov": "^3.6.5", "mocha": "^5.2.0", "mocha-typescript": "^1.1.14", From c03ef91bd6c279a8f0e511f5e0f24f550187b003 Mon Sep 17 00:00:00 2001 From: Burt Harris Date: Sat, 11 Apr 2020 16:58:21 -0700 Subject: [PATCH 02/59] Update vscode tasks.json --- .vscode/tasks.json | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index f8dd73cc..803f5046 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,18 +1,27 @@ { - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "command": "npm", - "type": "shell", - "args": ["run", "tsc-watch"], - "presentation": { - "echo": true, - "reveal": "silent", - "focus": false, - "panel": "shared", - "showReuseMessage": true, - "clear": false + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "command": "npm", + "tasks": [ + { + "type": "npm", + "script": "install", + "problemMatcher": [], + "label": "npm: install", + "detail": "install dependencies from package", + "group": "build" }, - "isBackground": true, - "problemMatcher": "$tsc" + { + "type": "npm", + "script": "tsc-watch", + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": [], + "label": "npm: tsc-watch", + "detail": "tsc -w -p ." + } + ] } From 6c3247386faacb46cd587c8d201fdcaf3e816688 Mon Sep 17 00:00:00 2001 From: Burt Harris Date: Wed, 15 Apr 2020 14:05:18 -0700 Subject: [PATCH 03/59] (tool) Update pom.xml removing ref to ../runtime Workaround for #458 --- tool/pom.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/tool/pom.xml b/tool/pom.xml index 8d7f6ba2..ad0d5767 100644 --- a/tool/pom.xml +++ b/tool/pom.xml @@ -166,9 +166,6 @@ Licensed under the BSD-3-Clause license. See LICENSE file in the project root fo test - - ../runtime - From db0b3460def32b4e138c0acc75a1c383a72dc650 Mon Sep 17 00:00:00 2001 From: Burt Harris Date: Tue, 14 Apr 2020 18:48:53 -0700 Subject: [PATCH 04/59] Relocate runtime build files to runtime/typescript Disentangle imports / directory reorg Makes antlr4ts more like the other ANTLR4 target directory structure Build process now split out for packages, with each getting it's own package.json, and tsconfig.json. Eliminate relative path imports anywhere outside the src/ directory. checking in .d.ts files to track any api changes --- .gitignore | 2 + .vscode/tasks.json | 43 +- benchmark/JavaUnicodeInputStream.ts | 44 +- benchmark/TestPerformance.ts | 778 +- benchmark/TimeLexerSpeed.ts | 10 +- benchmark/package-lock.json | 48 + benchmark/package.json | 38 + benchmark/tsconfig.json | 26 + lerna.json | 9 + package-lock.json | 8174 +++++++++++++---- package.json | 48 +- package.old | 77 + {target/src => runtime/typescript}/.npmignore | 0 runtime/typescript/atn.js | 1 + runtime/typescript/dfa.js | 1 + runtime/typescript/package-lock.json | 33 + .../src => runtime/typescript}/package.json | 17 +- runtime/typescript/tree.js | 1 + runtime/typescript/tsconfig.json | 31 + runtime/typescript/util.js | 1 + src/index.ts | 5 + src/misc/index.ts | 1 + src/tree/index.ts | 2 + test/TestArray2DHashSet.ts | 27 +- test/TestTokenStream.ts | 8 +- test/mocha.opts | 2 +- test/package-lock.json | 1351 +++ test/package.json | 45 + test/runtime/BaseTest.ts | 32 +- test/tsconfig.json | 28 + tool/antlr4ts | 2 +- tool/package-lock.json | 24 +- tool/package.json | 9 +- .../codegen/TypeScript/TypeScript.stg | 70 +- .../runtime/typescript/TypeScript.test.stg | 22 +- tsconfig.json | 19 +- 36 files changed, 8510 insertions(+), 2519 deletions(-) create mode 100644 benchmark/package-lock.json create mode 100644 benchmark/package.json create mode 100644 benchmark/tsconfig.json create mode 100644 lerna.json create mode 100644 package.old rename {target/src => runtime/typescript}/.npmignore (100%) create mode 100644 runtime/typescript/atn.js create mode 100644 runtime/typescript/dfa.js create mode 100644 runtime/typescript/package-lock.json rename {target/src => runtime/typescript}/package.json (59%) create mode 100644 runtime/typescript/tree.js create mode 100644 runtime/typescript/tsconfig.json create mode 100644 runtime/typescript/util.js create mode 100644 test/package-lock.json create mode 100644 test/package.json create mode 100644 test/tsconfig.json diff --git a/.gitignore b/.gitignore index 7b163977..7c73e4d6 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,5 @@ bin/ # NPM pack output *.tgz + +**/dist diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 803f5046..3e2edb1b 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,27 +1,18 @@ { - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "command": "npm", - "tasks": [ - { - "type": "npm", - "script": "install", - "problemMatcher": [], - "label": "npm: install", - "detail": "install dependencies from package", - "group": "build" - }, - { - "type": "npm", - "script": "tsc-watch", - "group": { - "kind": "build", - "isDefault": true - }, - "problemMatcher": [], - "label": "npm: tsc-watch", - "detail": "tsc -w -p ." - } - ] -} + "version": "2.0.0", + "tasks": [ + { + "type": "typescript", + "tsconfig": "benchmark/tsconfig.json", + "option": "watch", + "problemMatcher": [ + "$tsc-watch" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "label": "tsc: watch - benchmark/tsconfig.json" + } + ] +} \ No newline at end of file diff --git a/benchmark/JavaUnicodeInputStream.ts b/benchmark/JavaUnicodeInputStream.ts index d66c59ed..24e1ab91 100644 --- a/benchmark/JavaUnicodeInputStream.ts +++ b/benchmark/JavaUnicodeInputStream.ts @@ -5,11 +5,11 @@ // ConvertTo-TS run at 2016-10-04T11:27:01.9391717-07:00 -import { CharStream } from "../src/CharStream"; -import { IntegerList } from "../src/misc/IntegerList"; -import { Interval } from "../src/misc/Interval"; -import { NotNull } from "../src/Decorators"; -import { Override } from "../src/Decorators"; +import { CharStream } from "antlr4ts"; +import { IntegerList } from "antlr4ts"; +import { Interval } from "antlr4ts"; +import { NotNull } from "antlr4ts"; +import { Override } from "antlr4ts"; import * as assert from "assert"; @@ -29,9 +29,9 @@ const DIGIT_9 = "9".charCodeAt(0); export class JavaUnicodeInputStream implements CharStream { @NotNull private source: CharStream; - private escapeIndexes: IntegerList = new IntegerList(); - private escapeCharacters: IntegerList = new IntegerList(); - private escapeIndirectionLevels: IntegerList = new IntegerList(); + private escapeIndexes: IntegerList = new IntegerList(); + private escapeCharacters: IntegerList = new IntegerList(); + private escapeIndirectionLevels: IntegerList = new IntegerList(); private escapeListIndex: number = 0; private range: number = 0; @@ -39,7 +39,7 @@ export class JavaUnicodeInputStream implements CharStream { private la1: number; - constructor(@NotNull source: CharStream) { + constructor(@NotNull source: CharStream) { if (source == null) { throw new Error("NullPointerException: source"); } @@ -86,7 +86,7 @@ export class JavaUnicodeInputStream implements CharStream { this.slashCount++; } else { - let indirectionLevel: number = this.escapeIndirectionLevels.get(this.escapeListIndex); + let indirectionLevel: number = this.escapeIndirectionLevels.get(this.escapeListIndex); for (let i = 0; i < 6 + indirectionLevel; i++) { this.source.consume(); } @@ -120,7 +120,7 @@ export class JavaUnicodeInputStream implements CharStream { return this.source.LA(desiredIndex - this.index); } else { - let desiredIndex: number = this.index + i - 1; + let desiredIndex: number = this.index + i - 1; for (let j = this.escapeListIndex; j < this.escapeIndexes.size; j++) { if (this.escapeIndexes.get(j) === desiredIndex) { return this.escapeCharacters.get(j); @@ -133,11 +133,11 @@ export class JavaUnicodeInputStream implements CharStream { } } - let currentIndex: number[] = [this.index]; - let slashCountPtr: number[] = [this.slashCount]; - let indirectionLevelPtr: number[] = [0]; + let currentIndex: number[] = [this.index]; + let slashCountPtr: number[] = [this.slashCount]; + let indirectionLevelPtr: number[] = [0]; for (let j = 0; j < i; j++) { - let previousIndex: number = currentIndex[0]; + let previousIndex: number = currentIndex[0]; let c: number = this.readCharAt(currentIndex, slashCountPtr, indirectionLevelPtr); if (currentIndex[0] > this.range) { if (currentIndex[0] - previousIndex > 1) { @@ -215,27 +215,27 @@ export class JavaUnicodeInputStream implements CharStream { assert(slashCountPtr != null && slashCountPtr.length === 1); assert(indirectionLevelPtr != null && indirectionLevelPtr.length === 1); - let blockUnicodeEscape: boolean = (slashCountPtr[0] % 2) !== 0; + let blockUnicodeEscape: boolean = (slashCountPtr[0] % 2) !== 0; let c0: number = this.source.LA(nextIndexPtr[0] - this.index + 1); if (c0 === BACKSLASH) { slashCountPtr[0]++; if (!blockUnicodeEscape) { - let c1: number = this.source.LA(nextIndexPtr[0] - this.index + 2); + let c1: number = this.source.LA(nextIndexPtr[0] - this.index + 2); if (c1 === LOWER_U) { - let c2: number = this.source.LA(nextIndexPtr[0] - this.index + 3); + let c2: number = this.source.LA(nextIndexPtr[0] - this.index + 3); indirectionLevelPtr[0] = 0; while (c2 === LOWER_U) { indirectionLevelPtr[0]++; c2 = this.source.LA(nextIndexPtr[0] - this.index + 3 + indirectionLevelPtr[0]); } - let c3: number = this.source.LA(nextIndexPtr[0] - this.index + 4 + indirectionLevelPtr[0]); - let c4: number = this.source.LA(nextIndexPtr[0] - this.index + 5 + indirectionLevelPtr[0]); - let c5: number = this.source.LA(nextIndexPtr[0] - this.index + 6 + indirectionLevelPtr[0]); + let c3: number = this.source.LA(nextIndexPtr[0] - this.index + 4 + indirectionLevelPtr[0]); + let c4: number = this.source.LA(nextIndexPtr[0] - this.index + 5 + indirectionLevelPtr[0]); + let c5: number = this.source.LA(nextIndexPtr[0] - this.index + 6 + indirectionLevelPtr[0]); if (JavaUnicodeInputStream.isHexDigit(c2) && JavaUnicodeInputStream.isHexDigit(c3) && JavaUnicodeInputStream.isHexDigit(c4) && JavaUnicodeInputStream.isHexDigit(c5)) { - let value: number = JavaUnicodeInputStream.hexValue(c2); + let value: number = JavaUnicodeInputStream.hexValue(c2); value = (value << 4) + JavaUnicodeInputStream.hexValue(c3); value = (value << 4) + JavaUnicodeInputStream.hexValue(c4); value = (value << 4) + JavaUnicodeInputStream.hexValue(c5); diff --git a/benchmark/TestPerformance.ts b/benchmark/TestPerformance.ts index 43fe2854..7d5a205b 100644 --- a/benchmark/TestPerformance.ts +++ b/benchmark/TestPerformance.ts @@ -8,55 +8,55 @@ import * as sourceMapSupport from "source-map-support"; sourceMapSupport.install(); -import { ANTLRErrorListener } from "../src/ANTLRErrorListener"; -import { ANTLRInputStream } from "../src/ANTLRInputStream"; -import { Array2DHashSet } from "../src/misc/Array2DHashSet"; -import { ATN } from "../src/atn/ATN"; -import { ATNConfig } from "../src/atn/ATNConfig"; -import { ATNConfigSet } from "../src/atn/ATNConfigSet"; -import { ATNDeserializer } from "../src/atn/ATNDeserializer"; -import { BailErrorStrategy } from "../src/BailErrorStrategy"; -import { BitSet } from "../src/misc/BitSet"; -import { CharStream } from "../src/CharStream"; -import { CharStreams } from "../src/CharStreams"; -import { CodePointBuffer } from "../src/CodePointBuffer"; -import { CodePointCharStream } from "../src/CodePointCharStream"; -import { CommonTokenStream } from "../src/CommonTokenStream"; -import { DefaultErrorStrategy } from "../src/DefaultErrorStrategy"; -import { DFA } from "../src/dfa/DFA"; -import { DFAState } from "../src/dfa/DFAState"; -import { DiagnosticErrorListener } from "../src/DiagnosticErrorListener"; -import { ErrorNode } from "../src/tree/ErrorNode"; -import { Interval } from "../src/misc/Interval"; +import { ANTLRErrorListener } from "antlr4ts"; +import { ANTLRInputStream } from "antlr4ts"; +import { Array2DHashSet } from "antlr4ts"; +import { ATN } from "antlr4ts"; +import { ATNConfig } from "antlr4ts"; +import { ATNConfigSet } from "antlr4ts"; +import { ATNDeserializer } from "antlr4ts"; +import { BailErrorStrategy } from "antlr4ts"; +import { BitSet } from "antlr4ts"; +import { CharStream } from "antlr4ts"; +import { CharStreams } from "antlr4ts"; +import { CodePointBuffer } from "antlr4ts"; +import { CodePointCharStream } from "antlr4ts"; +import { CommonTokenStream } from "antlr4ts"; +import { DefaultErrorStrategy } from "antlr4ts"; +import { DFA } from "antlr4ts"; +import { DFAState } from "antlr4ts"; +import { DiagnosticErrorListener } from "antlr4ts"; +import { ErrorNode } from "antlr4ts"; +import { Interval } from "antlr4ts"; import { JavaUnicodeInputStream } from "./JavaUnicodeInputStream"; -import { Lexer } from "../src/Lexer"; -import { LexerATNSimulator } from "../src/atn/LexerATNSimulator"; -import { MurmurHash } from "../src/misc/MurmurHash"; -import { NotNull } from "../src/Decorators"; -import { ObjectEqualityComparator } from "../src/misc/ObjectEqualityComparator"; -import { Override } from "../src/Decorators"; -import { ParseCancellationException } from "../src/misc/ParseCancellationException"; -import { Parser } from "../src/Parser"; -import { ParserATNSimulator } from "../src/atn/ParserATNSimulator"; -import { ParserErrorListener } from "../src/ParserErrorListener"; -import { ParserInterpreter } from "../src/ParserInterpreter"; -import { ParserRuleContext } from "../src/ParserRuleContext"; -import { ParseTree } from "../src/tree/ParseTree"; -import { ParseTreeListener } from "../src/tree/ParseTreeListener"; -import { ParseTreeWalker } from "../src/tree/ParseTreeWalker"; -import { PredictionContextCache } from "../src/atn/PredictionContextCache"; -import { PredictionMode } from "../src/atn/PredictionMode"; -import { RecognitionException } from "../src/RecognitionException"; -import { Recognizer } from "../src/Recognizer"; -import { SimulatorState } from "../src/atn/SimulatorState"; +import { Lexer } from "antlr4ts"; +import { LexerATNSimulator } from "antlr4ts"; +import { MurmurHash } from "antlr4ts"; +import { NotNull } from "antlr4ts"; +import { ObjectEqualityComparator } from "antlr4ts"; +import { Override } from "antlr4ts"; +import { ParseCancellationException } from "antlr4ts"; +import { Parser } from "antlr4ts"; +import { ParserATNSimulator } from "antlr4ts"; +import { ParserErrorListener } from "antlr4ts"; +import { ParserInterpreter } from "antlr4ts"; +import { ParserRuleContext } from "antlr4ts"; +import { ParseTree } from "antlr4ts"; +import { ParseTreeListener } from "antlr4ts"; +import { ParseTreeWalker } from "antlr4ts"; +import { PredictionContextCache } from "antlr4ts"; +import { PredictionMode } from "antlr4ts"; +import { RecognitionException } from "antlr4ts"; +import { Recognizer } from "antlr4ts"; +import { SimulatorState } from "antlr4ts"; import { Stopwatch } from "./Stopwatch"; -import { TerminalNode } from "../src/tree/TerminalNode"; +import { TerminalNode } from "antlr4ts"; import { TimeSpan } from "./TimeSpan"; -import { Token } from "../src/Token"; -import { TokenSource } from "../src/TokenSource"; -import { TokenStream } from "../src/TokenStream"; +import { Token } from "antlr4ts"; +import { TokenSource } from "antlr4ts"; +import { TokenStream } from "antlr4ts"; -import * as Utils from "../src/misc/Utils"; +import * as Utils from "antlr4ts"; import { JavaLexer as JavaLexer } from "./gen/std/JavaLexer"; import { JavaLexer as JavaLexerAtn } from "./gen/std-atn/JavaLexer"; @@ -232,21 +232,21 @@ export class TestPerformance { /** * Parse each file with {@code JavaParser.compilationUnit}. */ - private static readonly RUN_PARSER: boolean = true; + private static readonly RUN_PARSER: boolean = true; /** * {@code true} to use {@link BailErrorStrategy}, {@code false} to use * {@link DefaultErrorStrategy}. */ - private static readonly BAIL_ON_ERROR: boolean = false; + private static readonly BAIL_ON_ERROR: boolean = false; /** * {@code true} to compute a checksum for verifying consistency across * optimizations and multiple passes. */ - private static readonly COMPUTE_CHECKSUM: boolean = true; + private static readonly COMPUTE_CHECKSUM: boolean = true; /** * This value is passed to {@link Parser#setBuildParseTree}. */ - private static readonly BUILD_PARSE_TREES: boolean = false; + private static readonly BUILD_PARSE_TREES: boolean = false; /** * Use * {@link ParseTreeWalker#DEFAULT}{@code .}{@link ParseTreeWalker#walk walk} @@ -255,9 +255,9 @@ export class TestPerformance { * will instead be called during the parsing process via * {@link Parser#addParseListener}. */ - private static readonly BLANK_LISTENER: boolean = false; + private static readonly BLANK_LISTENER: boolean = false; - private static readonly EXPORT_LARGEST_CONFIG_CONTEXTS: boolean = false; + private static readonly EXPORT_LARGEST_CONFIG_CONTEXTS: boolean = false; /** * Shows the number of {@link DFAState} and {@link ATNConfig} instances in @@ -266,21 +266,21 @@ export class TestPerformance { * will only apply to one file (the last file if {@link #NUMBER_OF_THREADS} * is 0, otherwise the last file which was parsed on the first thread). */ - private static readonly SHOW_DFA_STATE_STATS: boolean = true; + private static readonly SHOW_DFA_STATE_STATS: boolean = true; /** * If {@code true}, the DFA state statistics report includes a breakdown of * the number of DFA states contained in each decision (with rule names). */ - public static readonly DETAILED_DFA_STATE_STATS: boolean = true; + public static readonly DETAILED_DFA_STATE_STATS: boolean = true; - private static readonly ENABLE_LEXER_DFA: boolean = true; + private static readonly ENABLE_LEXER_DFA: boolean = true; - private static readonly ENABLE_PARSER_DFA: boolean = true; + private static readonly ENABLE_PARSER_DFA: boolean = true; /** * If {@code true}, the DFA will be used for full context parsing as well as * SLL parsing. */ - private static readonly ENABLE_PARSER_FULL_CONTEXT_DFA: boolean = false; + private static readonly ENABLE_PARSER_FULL_CONTEXT_DFA: boolean = false; /** * Specify the {@link PredictionMode} used by the @@ -288,48 +288,48 @@ export class TestPerformance { * {@code true}, this value only applies to the second stage, as the first * stage will always use {@link PredictionMode#SLL}. */ - private static readonly PREDICTION_MODE: PredictionMode = PredictionMode.LL; - private static readonly FORCE_GLOBAL_CONTEXT: boolean = false; - private static readonly TRY_LOCAL_CONTEXT_FIRST: boolean = true; - private static readonly OPTIMIZE_LL1: boolean = true; - private static readonly OPTIMIZE_UNIQUE_CLOSURE: boolean = true; - private static readonly OPTIMIZE_TAIL_CALLS: boolean = true; - private static readonly TAIL_CALL_PRESERVES_SLL: boolean = true; - private static readonly TREAT_SLLK1_CONFLICT_AS_AMBIGUITY: boolean = false; + private static readonly PREDICTION_MODE: PredictionMode = PredictionMode.LL; + private static readonly FORCE_GLOBAL_CONTEXT: boolean = false; + private static readonly TRY_LOCAL_CONTEXT_FIRST: boolean = true; + private static readonly OPTIMIZE_LL1: boolean = true; + private static readonly OPTIMIZE_UNIQUE_CLOSURE: boolean = true; + private static readonly OPTIMIZE_TAIL_CALLS: boolean = true; + private static readonly TAIL_CALL_PRESERVES_SLL: boolean = true; + private static readonly TREAT_SLLK1_CONFLICT_AS_AMBIGUITY: boolean = false; - private static readonly TWO_STAGE_PARSING: boolean = true; + private static readonly TWO_STAGE_PARSING: boolean = true; - private static readonly SHOW_CONFIG_STATS: boolean = false; + private static readonly SHOW_CONFIG_STATS: boolean = false; /** * If {@code true}, detailed statistics for the number of DFA edges were * taken while parsing each file, as well as the number of DFA edges which * required on-the-fly computation. */ - public static readonly COMPUTE_TRANSITION_STATS: boolean = false; - private static readonly SHOW_TRANSITION_STATS_PER_FILE: boolean = false; + public static readonly COMPUTE_TRANSITION_STATS: boolean = false; + private static readonly SHOW_TRANSITION_STATS_PER_FILE: boolean = false; /** * If {@code true}, the transition statistics will be adjusted to a running * total before reporting the final results. */ - private static readonly TRANSITION_RUNNING_AVERAGE: boolean = false; + private static readonly TRANSITION_RUNNING_AVERAGE: boolean = false; /** * If {@code true}, transition statistics will be weighted according to the * total number of transitions taken during the parsing of each file. */ - private static readonly TRANSITION_WEIGHTED_AVERAGE: boolean = false; + private static readonly TRANSITION_WEIGHTED_AVERAGE: boolean = false; /** * If {@code true}, after each pass a summary of the time required to parse * each file will be printed. */ - private static readonly COMPUTE_TIMING_STATS: boolean = false; + private static readonly COMPUTE_TIMING_STATS: boolean = false; /** * If {@code true}, the timing statistics for {@link #COMPUTE_TIMING_STATS} * will be cumulative (i.e. the time reported for the nth file will * be the total time required to parse the first n files). */ - private static readonly TIMING_CUMULATIVE: boolean = false; + private static readonly TIMING_CUMULATIVE: boolean = false; /** * If {@code true}, the timing statistics will include the parser only. This * flag allows for targeted measurements, and helps eliminate variance when @@ -337,17 +337,17 @@ export class TestPerformance { *

* This flag has no impact when {@link #RUN_PARSER} is {@code false}. */ - private static readonly TIME_PARSE_ONLY: boolean = false; + private static readonly TIME_PARSE_ONLY: boolean = false; /** * When {@code true}, messages will be printed to {@link System#err} when * the first stage (SLL) parsing resulted in a syntax error. This option is * ignored when {@link #TWO_STAGE_PARSING} is {@code false}. */ - private static readonly REPORT_SECOND_STAGE_RETRY: boolean = true; - public static readonly REPORT_SYNTAX_ERRORS: boolean = true; - public static readonly REPORT_AMBIGUITIES: boolean = false; - public static readonly REPORT_FULL_CONTEXT: boolean = false; + private static readonly REPORT_SECOND_STAGE_RETRY: boolean = true; + public static readonly REPORT_SYNTAX_ERRORS: boolean = true; + public static readonly REPORT_AMBIGUITIES: boolean = false; + public static readonly REPORT_FULL_CONTEXT: boolean = false; public static readonly REPORT_CONTEXT_SENSITIVITY: boolean = TestPerformance.REPORT_FULL_CONTEXT; /** @@ -355,27 +355,27 @@ export class TestPerformance { * {@link Lexer#setInputStream} will be called to initialize it for each * source file. Otherwise, a new instance will be created for each file. */ - private static readonly REUSE_LEXER: boolean = false; + private static readonly REUSE_LEXER: boolean = false; /** * If {@code true}, a single DFA will be used for lexing which is shared * across all threads and files. Otherwise, each file will be lexed with its * own DFA which is accomplished by creating one ATN instance per thread and * clearing its DFA cache before lexing each file. */ - private static readonly REUSE_LEXER_DFA: boolean = true; + private static readonly REUSE_LEXER_DFA: boolean = true; /** * If {@code true}, a single {@code JavaParser} will be used, and * {@link Parser#setInputStream} will be called to initialize it for each * source file. Otherwise, a new instance will be created for each file. */ - private static readonly REUSE_PARSER: boolean = false; + private static readonly REUSE_PARSER: boolean = false; /** * If {@code true}, a single DFA will be used for parsing which is shared * across all threads and files. Otherwise, each file will be parsed with * its own DFA which is accomplished by creating one ATN instance per thread * and clearing its DFA cache before parsing each file. */ - private static readonly REUSE_PARSER_DFA: boolean = true; + private static readonly REUSE_PARSER_DFA: boolean = true; /** * If {@code true}, the shared lexer and parser are reset after each pass. * If {@code false}, all passes after the first will be fully "warmed up", @@ -383,31 +383,31 @@ export class TestPerformance { * but it will not distinguish bytecode load/JIT time from warm-up time * during the first pass. */ - private static readonly CLEAR_DFA: boolean = false; + private static readonly CLEAR_DFA: boolean = false; /** * Total number of passes to make over the source. */ - private static readonly PASSES: number = 4; + private static readonly PASSES: number = 4; /** * This option controls the granularity of multi-threaded parse operations. * If {@code true}, the parsing operation will be parallelized across files; * otherwise the parsing will be parallelized across multiple iterations. */ - private static readonly FILE_GRANULARITY: boolean = true; + private static readonly FILE_GRANULARITY: boolean = true; /** * Number of parser threads to use. */ - public static readonly NUMBER_OF_THREADS: number = 1; + public static readonly NUMBER_OF_THREADS: number = 1; - private static readonly sharedLexers: Array = new Array(TestPerformance.NUMBER_OF_THREADS); - private static readonly sharedLexerATNs: Array = new Array(TestPerformance.NUMBER_OF_THREADS); + private static readonly sharedLexers: Array = new Array(TestPerformance.NUMBER_OF_THREADS); + private static readonly sharedLexerATNs: Array = new Array(TestPerformance.NUMBER_OF_THREADS); - private static readonly sharedParsers: Array = new Array(TestPerformance.NUMBER_OF_THREADS); - private static readonly sharedParserATNs: Array = new Array(TestPerformance.NUMBER_OF_THREADS); + private static readonly sharedParsers: Array = new Array(TestPerformance.NUMBER_OF_THREADS); + private static readonly sharedParserATNs: Array = new Array(TestPerformance.NUMBER_OF_THREADS); - private static readonly sharedListeners: Array = new Array(TestPerformance.NUMBER_OF_THREADS); + private static readonly sharedListeners: Array = new Array(TestPerformance.NUMBER_OF_THREADS); private static readonly totalTransitionsPerFile: Uint32Array[] = new Array(TestPerformance.PASSES); private static readonly computedTransitionsPerFile: Uint32Array[] = new Array(TestPerformance.PASSES); @@ -429,8 +429,8 @@ export class TestPerformance { assertTrue(jdkSourceRoot != null && jdkSourceRoot.length > 0, "The JDK_SOURCE_ROOT environment variable must be set for performance testing."); jdkSourceRoot = jdkSourceRoot as string; - let lexerCtor: {new(input: CharStream): JavaLRLexer | JavaLRLexerAtn | JavaLexer | JavaLexerAtn} = TestPerformance.USE_LR_GRAMMAR ? JavaLRLexer : JavaLexer; - let parserCtor: {new(input: TokenStream): JavaLRParser | JavaLRParserAtn | JavaParser | JavaParserAtn} = TestPerformance.USE_LR_GRAMMAR ? JavaLRParser : JavaParser; + let lexerCtor: { new(input: CharStream): JavaLRLexer | JavaLRLexerAtn | JavaLexer | JavaLexerAtn } = TestPerformance.USE_LR_GRAMMAR ? JavaLRLexer : JavaLexer; + let parserCtor: { new(input: TokenStream): JavaLRParser | JavaLRParserAtn | JavaParser | JavaParserAtn } = TestPerformance.USE_LR_GRAMMAR ? JavaLRParser : JavaParser; if (TestPerformance.FORCE_ATN) { lexerCtor = TestPerformance.USE_LR_GRAMMAR ? JavaLRLexerAtn : JavaLexerAtn; parserCtor = TestPerformance.USE_LR_GRAMMAR ? JavaLRParserAtn : JavaParserAtn; @@ -440,7 +440,7 @@ export class TestPerformance { } let listenerName: string = TestPerformance.USE_LR_GRAMMAR ? "JavaLRBaseListener" : "JavaBaseListener"; - let entryPoint: string = "compilationUnit"; + let entryPoint: string = "compilationUnit"; let factory: ParserFactory = this.getParserFactory(lexerCtor, parserCtor, EmptyListener, JavaLRParser.prototype.compilationUnit.name, (parser) => parser.compilationUnit()); if (TestPerformance.TOP_PACKAGE.length > 0) { @@ -451,7 +451,7 @@ export class TestPerformance { assertTrue(fs.lstatSync(directory).isDirectory()); let filesFilter: FilenameFilter = FilenameFilters.extension(".java", false); - let directoriesFilter: FilenameFilter = FilenameFilters.ALL_FILES; + let directoriesFilter: FilenameFilter = FilenameFilters.ALL_FILES; let sources: InputDescriptor[] = this.loadSources(directory, filesFilter, directoriesFilter, TestPerformance.RECURSIVE); for (let i = 0; i < TestPerformance.PASSES; i++) { @@ -491,10 +491,10 @@ export class TestPerformance { // } // })); for (let i = 0; i < TestPerformance.PASSES - 1; i++) { - let currentPass: number = i + 1; - // passResults.add(executorService.submit(new Runnable() { - // @Override - // run(): void { + let currentPass: number = i + 1; + // passResults.add(executorService.submit(new Runnable() { + // @Override + // run(): void { if (TestPerformance.CLEAR_DFA) { let index: number = TestPerformance.FILE_GRANULARITY ? 0 : 0; if (TestPerformance.sharedLexers.length > 0 && TestPerformance.sharedLexers[index] != null) { @@ -519,8 +519,8 @@ export class TestPerformance { // Logger.getLogger(TestPerformance.class.getName()).log(Level.SEVERE, null, ex); console.error(ex); } - // } - // })); + // } + // })); } // for (let passResult of passResults) { @@ -568,8 +568,8 @@ export class TestPerformance { } } - let sumNum: Uint32Array = new Uint32Array(TestPerformance.totalTransitionsPerFile[0].length); - let sumDen: Uint32Array = new Uint32Array(TestPerformance.totalTransitionsPerFile[0].length); + let sumNum: Uint32Array = new Uint32Array(TestPerformance.totalTransitionsPerFile[0].length); + let sumDen: Uint32Array = new Uint32Array(TestPerformance.totalTransitionsPerFile[0].length); let sumNormalized: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); for (let i = 0; i < TestPerformance.PASSES; i++) { let num: Uint32Array = TestPerformance.computedTransitionsPerFile[i]; @@ -584,7 +584,7 @@ export class TestPerformance { } let weightedAverage: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); - let average: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); + let average: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); for (let i = 0; i < average.length; i++) { if (sumDen[i] > 0) { weightedAverage[i] = sumNum[i] / sumDen[i]; @@ -596,15 +596,15 @@ export class TestPerformance { average[i] = sumNormalized[i] / TestPerformance.PASSES; } - let low95: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); - let high95: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); - let low67: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); - let high67: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); - let stddev: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); + let low95: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); + let high95: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); + let low67: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); + let high67: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); + let stddev: Float64Array = new Float64Array(TestPerformance.totalTransitionsPerFile[0].length); for (let i = 0; i < stddev.length; i++) { - let points: Float64Array = new Float64Array(TestPerformance.PASSES); + let points: Float64Array = new Float64Array(TestPerformance.PASSES); for (let j = 0; j < TestPerformance.PASSES; j++) { - let totalTransitions: number = TestPerformance.totalTransitionsPerFile[j][i]; + let totalTransitions: number = TestPerformance.totalTransitionsPerFile[j][i]; if (totalTransitions > 0) { points[j] = TestPerformance.computedTransitionsPerFile[j][i] / TestPerformance.totalTransitionsPerFile[j][i]; } @@ -615,15 +615,15 @@ export class TestPerformance { points.sort(); - let averageValue: number = TestPerformance.TRANSITION_WEIGHTED_AVERAGE ? weightedAverage[i] : average[i]; - let value: number = 0; + let averageValue: number = TestPerformance.TRANSITION_WEIGHTED_AVERAGE ? weightedAverage[i] : average[i]; + let value: number = 0; for (let j = 0; j < TestPerformance.PASSES; j++) { - let diff: number = points[j] - averageValue; + let diff: number = points[j] - averageValue; value += diff * diff; } - let ignoreCount95: number = Math.round(TestPerformance.PASSES * (1 - 0.95) / 2.0) | 0; - let ignoreCount67: number = Math.round(TestPerformance.PASSES * (1 - 0.667) / 2.0) | 0; + let ignoreCount95: number = Math.round(TestPerformance.PASSES * (1 - 0.95) / 2.0) | 0; + let ignoreCount67: number = Math.round(TestPerformance.PASSES * (1 - 0.667) / 2.0) | 0; low95[i] = points[ignoreCount95]; high95[i] = points[points.length - 1 - ignoreCount95]; low67[i] = points[ignoreCount67]; @@ -633,7 +633,7 @@ export class TestPerformance { console.log("File\tAverage\tStd. Dev.\t95%% Low\t95%% High\t66.7%% Low\t66.7%% High"); for (let i = 0; i < stddev.length; i++) { - let averageValue: number = TestPerformance.TRANSITION_WEIGHTED_AVERAGE ? weightedAverage[i] : average[i]; + let averageValue: number = TestPerformance.TRANSITION_WEIGHTED_AVERAGE ? weightedAverage[i] : average[i]; console.log(`${i + 1}\t${averageValue}\t${stddev[i]}\t${averageValue - low95[i]}\t${high95[i] - averageValue}\t${averageValue - low67[i]}\t${high67[i] - averageValue}`); } } @@ -671,28 +671,28 @@ export class TestPerformance { average[i] = sum[i] / TestPerformance.PASSES; } - let low95: Float64Array = new Float64Array(fileCount); - let high95: Float64Array = new Float64Array(fileCount); - let low67: Float64Array = new Float64Array(fileCount); - let high67: Float64Array = new Float64Array(fileCount); - let stddev: Float64Array = new Float64Array(fileCount); + let low95: Float64Array = new Float64Array(fileCount); + let high95: Float64Array = new Float64Array(fileCount); + let low67: Float64Array = new Float64Array(fileCount); + let high67: Float64Array = new Float64Array(fileCount); + let stddev: Float64Array = new Float64Array(fileCount); for (let i = 0; i < stddev.length; i++) { - let points: Float64Array = new Float64Array(TestPerformance.PASSES); + let points: Float64Array = new Float64Array(TestPerformance.PASSES); for (let j = 0; j < TestPerformance.PASSES; j++) { points[j] = TestPerformance.timePerFile[j][i] / TestPerformance.tokensPerFile[j][i]; } points.sort(); - let averageValue: number = average[i]; - let value: number = 0; + let averageValue: number = average[i]; + let value: number = 0; for (let j = 0; j < TestPerformance.PASSES; j++) { - let diff: number = points[j] - averageValue; + let diff: number = points[j] - averageValue; value += diff * diff; } - let ignoreCount95: number = Math.round(TestPerformance.PASSES * (1 - 0.95) / 2.0) | 0; - let ignoreCount67: number = Math.round(TestPerformance.PASSES * (1 - 0.667) / 2.0) | 0; + let ignoreCount95: number = Math.round(TestPerformance.PASSES * (1 - 0.95) / 2.0) | 0; + let ignoreCount67: number = Math.round(TestPerformance.PASSES * (1 - 0.667) / 2.0) | 0; low95[i] = points[ignoreCount95]; high95[i] = points[points.length - 1 - ignoreCount95]; low67[i] = points[ignoreCount67]; @@ -702,13 +702,13 @@ export class TestPerformance { console.log("File\tAverage\tStd. Dev.\t95% Low\t95% High\t66.7% Low\t66.7% High"); for (let i = 0; i < stddev.length; i++) { - let averageValue: number = average[i]; + let averageValue: number = average[i]; console.log(`${i + 1}\t${averageValue}\t${stddev[i]}\t${averageValue - low95[i]}\t${high95[i] - averageValue}\t${averageValue - low67[i]}\t${high67[i] - averageValue}`); } } private getSourceRoot(prefix: string): string | undefined { - let sourceRoot = process.env[prefix + "_SOURCE_ROOT"]; + let sourceRoot = process.env[prefix + "_SOURCE_ROOT"]; // if (sourceRoot == null) { // sourceRoot = System.getProperty(prefix+"_SOURCE_ROOT"); // } @@ -814,7 +814,7 @@ export class TestPerformance { } } - public configOutputSize: number = 0; + public configOutputSize: number = 0; protected parseSources(currentPass: number, factory: ParserFactory, sources: InputDescriptor[], shuffleSources: boolean): void { if (shuffleSources) { @@ -825,8 +825,8 @@ export class TestPerformance { let startTime: Stopwatch = Stopwatch.startNew(); TestPerformance.tokenCount[currentPass] = 0; - let inputSize: number = 0; - let inputCount: number = 0; + let inputSize: number = 0; + let inputCount: number = 0; let results: Array = []; // let executorService: ExecutorService; @@ -841,22 +841,22 @@ export class TestPerformance { break; } - let input: CharStream = inputDescriptor.getInputStream(); + let input: CharStream = inputDescriptor.getInputStream(); input.seek(0); inputSize += input.size; inputCount++; let futureChecksum: () => FileParseResult | undefined = () => { // @Override // call(): FileParseResult { - // this incurred a great deal of overhead and was causing significant variations in performance results. - // console.log(`Parsing file ${input.sourceName}`); - try { - return factory.parseFile(input, currentPass, 0); - } catch (ex) { - console.error(ex); - } + // this incurred a great deal of overhead and was causing significant variations in performance results. + // console.log(`Parsing file ${input.sourceName}`); + try { + return factory.parseFile(input, currentPass, 0); + } catch (ex) { + console.error(ex); + } - return undefined; + return undefined; // } }; @@ -864,12 +864,12 @@ export class TestPerformance { } let checksum = new MurmurHashChecksum(); - let currentIndex: number = -1; + let currentIndex: number = -1; for (let future of results) { currentIndex++; - let fileChecksum: number = 0; + let fileChecksum: number = 0; // try { - let fileResult: FileParseResult | undefined = future; + let fileResult: FileParseResult | undefined = future; if (fileResult == null) { continue; } @@ -909,14 +909,14 @@ export class TestPerformance { console.log(`${currentPass + 1}. Total parse time for ${inputCount} files (${Math.round(inputSize / 1024)} KiB, ${TestPerformance.tokenCount[currentPass]} tokens${TestPerformance.COMPUTE_CHECKSUM ? `, checksum 0x${(checksum.getValue() >>> 0).toString(16)}` : ""}): ${Math.round(startTime.elapsedMillis())}ms`); if (TestPerformance.sharedLexers.length > 0) { - let index: number = TestPerformance.FILE_GRANULARITY ? 0 : 0; - let lexer: Lexer = TestPerformance.sharedLexers[index]!; - let lexerInterpreter: LexerATNSimulator = lexer.interpreter; - let modeToDFA: DFA[] = lexerInterpreter.atn.modeToDFA; + let index: number = TestPerformance.FILE_GRANULARITY ? 0 : 0; + let lexer: Lexer = TestPerformance.sharedLexers[index]!; + let lexerInterpreter: LexerATNSimulator = lexer.interpreter; + let modeToDFA: DFA[] = lexerInterpreter.atn.modeToDFA; if (TestPerformance.SHOW_DFA_STATE_STATS) { - let states: number = 0; - let configs: number = 0; - let uniqueConfigs: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE); + let states: number = 0; + let configs: number = 0; + let uniqueConfigs: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE); for (let dfa of modeToDFA) { if (dfa == null) { @@ -935,17 +935,17 @@ export class TestPerformance { if (TestPerformance.DETAILED_DFA_STATE_STATS) { console.log("\tMode\tStates\tConfigs\tMode"); for (let i = 0; i < modeToDFA.length; i++) { - let dfa: DFA = modeToDFA[i]; + let dfa: DFA = modeToDFA[i]; if (dfa == null || dfa.states.isEmpty) { continue; } - let modeConfigs: number = 0; + let modeConfigs: number = 0; for (let state of dfa.states) { modeConfigs += state.configs.size; } - let modeName: string = lexer.modeNames[i]; + let modeName: string = lexer.modeNames[i]; console.log(`\t${dfa.decision}\t${dfa.states.size}\t${modeConfigs}\t${modeName}`); } } @@ -953,16 +953,16 @@ export class TestPerformance { } if (TestPerformance.RUN_PARSER && TestPerformance.sharedParsers.length > 0) { - let index: number = TestPerformance.FILE_GRANULARITY ? 0 : 0; - let parser: Parser = TestPerformance.sharedParsers[index]!; + let index: number = TestPerformance.FILE_GRANULARITY ? 0 : 0; + let parser: Parser = TestPerformance.sharedParsers[index]!; // make sure the individual DFAState objects actually have unique ATNConfig arrays - let interpreter: ParserATNSimulator = parser.interpreter; - let decisionToDFA: DFA[] = interpreter.atn.decisionToDFA; + let interpreter: ParserATNSimulator = parser.interpreter; + let decisionToDFA: DFA[] = interpreter.atn.decisionToDFA; if (TestPerformance.SHOW_DFA_STATE_STATS) { - let states: number = 0; - let configs: number = 0; - let uniqueConfigs: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE); + let states: number = 0; + let configs: number = 0; + let uniqueConfigs: Array2DHashSet = new Array2DHashSet(ObjectEqualityComparator.INSTANCE); for (let dfa of decisionToDFA) { if (dfa == null) { @@ -987,26 +987,26 @@ export class TestPerformance { } for (let i = 0; i < decisionToDFA.length; i++) { - let dfa: DFA = decisionToDFA[i]; + let dfa: DFA = decisionToDFA[i]; if (dfa == null || dfa.states.isEmpty) { continue; } - let decisionConfigs: number = 0; + let decisionConfigs: number = 0; for (let state of dfa.states) { decisionConfigs += state.configs.size; } - let ruleName: string = parser.ruleNames[parser.atn.decisionToState[dfa.decision].ruleIndex]; + let ruleName: string = parser.ruleNames[parser.atn.decisionToState[dfa.decision].ruleIndex]; - let calls: number = 0; - let fullContextCalls: number = 0; - let nonSllCalls: number = 0; - let transitions: number = 0; - let computedTransitions: number = 0; - let fullContextTransitions: number = 0; - let lookahead: number = 0; - let fullContextLookahead: number = 0; + let calls: number = 0; + let fullContextCalls: number = 0; + let nonSllCalls: number = 0; + let transitions: number = 0; + let computedTransitions: number = 0; + let fullContextTransitions: number = 0; + let lookahead: number = 0; + let fullContextLookahead: number = 0; let formatString: string; if (TestPerformance.COMPUTE_TRANSITION_STATS) { for (let data of TestPerformance.decisionInvocationsPerFile[currentPass]) { @@ -1053,11 +1053,11 @@ export class TestPerformance { } } - let localDfaCount: number = 0; - let globalDfaCount: number = 0; - let localConfigCount: number = 0; - let globalConfigCount: number = 0; - let contextsInDFAState: Int32Array = new Int32Array(0); + let localDfaCount: number = 0; + let globalDfaCount: number = 0; + let localConfigCount: number = 0; + let globalConfigCount: number = 0; + let contextsInDFAState: Int32Array = new Int32Array(0); for (let dfa of decisionToDFA) { if (dfa == null) { @@ -1073,7 +1073,7 @@ export class TestPerformance { } if (state.isAcceptState) { - let hasGlobal: boolean = false; + let hasGlobal: boolean = false; for (let config of state.configs) { if (config.reachesIntoOuterContext) { globalConfigCount++; @@ -1097,7 +1097,7 @@ export class TestPerformance { if (TestPerformance.EXPORT_LARGEST_CONFIG_CONTEXTS) { for (let state of dfa.states) { for (let config of state.configs) { - let configOutput: string = config.toDotString(); + let configOutput: string = config.toDotString(); if (configOutput.length <= this.configOutputSize) { continue; } @@ -1132,7 +1132,7 @@ export class TestPerformance { } private static sum(array: Uint32Array): number { - let result: number = 0; + let result: number = 0; for (let value of array) { result += value; } @@ -1159,7 +1159,7 @@ export class TestPerformance { } } - protected getParserFactory(lexerCtor: {new(input: CharStream): JavaLRLexer | JavaLRLexerAtn | JavaLexer | JavaLexerAtn}, parserCtor: {new(input: TokenStream): JavaLRParser | JavaLRParserAtn | JavaParser | JavaParserAtn}, listenerCtor: {new(): ParseTreeListener}, entryPointName: string, entryPoint: (parser: JavaLRParser | JavaLRParserAtn | JavaParser | JavaParserAtn) => ParserRuleContext): ParserFactory { + protected getParserFactory(lexerCtor: { new(input: CharStream): JavaLRLexer | JavaLRLexerAtn | JavaLexer | JavaLexerAtn }, parserCtor: { new(input: TokenStream): JavaLRParser | JavaLRParserAtn | JavaParser | JavaParserAtn }, listenerCtor: { new(): ParseTreeListener }, entryPointName: string, entryPoint: (parser: JavaLRParser | JavaLRParserAtn | JavaParser | JavaParserAtn) => ParserRuleContext): ParserFactory { // try { // let loader: ClassLoader = new URLClassLoader(new URL[] { new File(tmpdir).toURI().toURL() }, ClassLoader.getSystemClassLoader()); // lexerClass: Class = loader.loadClass(lexerName).asSubclass(Lexer.class); @@ -1169,88 +1169,171 @@ export class TestPerformance { // lexerCtor: Constructor = lexerClass.getConstructor(CharStream.class); // parserCtor: Constructor = parserClass.getConstructor(TokenStream.class); - // construct initial instances of the lexer and parser to deserialize their ATNs - let lexerInstance = new lexerCtor(CharStreams.fromString("")); - let parserInstance = new parserCtor(new CommonTokenStream(lexerInstance)); + // construct initial instances of the lexer and parser to deserialize their ATNs + let lexerInstance = new lexerCtor(CharStreams.fromString("")); + let parserInstance = new parserCtor(new CommonTokenStream(lexerInstance)); - if (!TestPerformance.REUSE_LEXER_DFA) { - let lexerSerializedATN: string = lexerInstance.serializedATN; - for (let i = 0; i < TestPerformance.NUMBER_OF_THREADS; i++) { - TestPerformance.sharedLexerATNs[i] = new ATNDeserializer().deserialize(Utils.toCharArray(lexerSerializedATN)); - } + if (!TestPerformance.REUSE_LEXER_DFA) { + let lexerSerializedATN: string = lexerInstance.serializedATN; + for (let i = 0; i < TestPerformance.NUMBER_OF_THREADS; i++) { + TestPerformance.sharedLexerATNs[i] = new ATNDeserializer().deserialize(Utils.toCharArray(lexerSerializedATN)); } + } - if (TestPerformance.RUN_PARSER && !TestPerformance.REUSE_PARSER_DFA) { - let parserSerializedATN: string = parserInstance.serializedATN; - for (let i = 0; i < TestPerformance.NUMBER_OF_THREADS; i++) { - TestPerformance.sharedParserATNs[i] = new ATNDeserializer().deserialize(Utils.toCharArray(parserSerializedATN)); - } + if (TestPerformance.RUN_PARSER && !TestPerformance.REUSE_PARSER_DFA) { + let parserSerializedATN: string = parserInstance.serializedATN; + for (let i = 0; i < TestPerformance.NUMBER_OF_THREADS; i++) { + TestPerformance.sharedParserATNs[i] = new ATNDeserializer().deserialize(Utils.toCharArray(parserSerializedATN)); } + } - return { - // @SuppressWarnings("unused") - // @Override - parseFile(input: CharStream, currentPass: number, thread: number): FileParseResult { - let checksum = new MurmurHashChecksum(); + return { + // @SuppressWarnings("unused") + // @Override + parseFile(input: CharStream, currentPass: number, thread: number): FileParseResult { + let checksum = new MurmurHashChecksum(); - let startTime: Stopwatch = Stopwatch.startNew(); - assert(thread >= 0 && thread < TestPerformance.NUMBER_OF_THREADS); + let startTime: Stopwatch = Stopwatch.startNew(); + assert(thread >= 0 && thread < TestPerformance.NUMBER_OF_THREADS); - try { - let listener: ParseTreeListener | undefined = TestPerformance.sharedListeners[thread]; - if (listener == null) { - listener = new listenerCtor(); - TestPerformance.sharedListeners[thread] = listener; + try { + let listener: ParseTreeListener | undefined = TestPerformance.sharedListeners[thread]; + if (listener == null) { + listener = new listenerCtor(); + TestPerformance.sharedListeners[thread] = listener; + } + + let lexer: Lexer | undefined = TestPerformance.sharedLexers[thread]; + if (TestPerformance.REUSE_LEXER && lexer != null) { + lexer.inputStream = input; + } else { + let previousLexer: Lexer | undefined = lexer; + lexer = new lexerCtor(input); + TestPerformance.sharedLexers[thread] = lexer; + let atn: ATN = (TestPerformance.FILE_GRANULARITY || previousLexer == null ? lexer : previousLexer).atn; + if (!TestPerformance.REUSE_LEXER_DFA || (!TestPerformance.FILE_GRANULARITY && previousLexer == null)) { + atn = TestPerformance.sharedLexerATNs[thread]!; } - let lexer: Lexer | undefined = TestPerformance.sharedLexers[thread]; - if (TestPerformance.REUSE_LEXER && lexer != null) { - lexer.inputStream = input; - } else { - let previousLexer: Lexer | undefined = lexer; - lexer = new lexerCtor(input); - TestPerformance.sharedLexers[thread] = lexer; - let atn: ATN = (TestPerformance.FILE_GRANULARITY || previousLexer == null ? lexer : previousLexer).atn; - if (!TestPerformance.REUSE_LEXER_DFA || (!TestPerformance.FILE_GRANULARITY && previousLexer == null)) { - atn = TestPerformance.sharedLexerATNs[thread]!; - } + if (!TestPerformance.ENABLE_LEXER_DFA) { + lexer.interpreter = new NonCachingLexerATNSimulator(atn, lexer); + } else if (!TestPerformance.REUSE_LEXER_DFA || TestPerformance.COMPUTE_TRANSITION_STATS) { + lexer.interpreter = new StatisticsLexerATNSimulator(atn, lexer); + } + } - if (!TestPerformance.ENABLE_LEXER_DFA) { - lexer.interpreter = new NonCachingLexerATNSimulator(atn, lexer); - } else if (!TestPerformance.REUSE_LEXER_DFA || TestPerformance.COMPUTE_TRANSITION_STATS) { - lexer.interpreter = new StatisticsLexerATNSimulator(atn, lexer); - } + lexer.removeErrorListeners(); + lexer.addErrorListener(DescriptiveLexerErrorListener.INSTANCE); + + lexer.interpreter.optimize_tail_calls = TestPerformance.OPTIMIZE_TAIL_CALLS; + if (TestPerformance.ENABLE_LEXER_DFA && !TestPerformance.REUSE_LEXER_DFA) { + lexer.interpreter.atn.clearDFA(); + } + + let tokens: CommonTokenStream = new CommonTokenStream(lexer); + tokens.fill(); + TestPerformance.tokenCount[currentPass] += tokens.size; + + if (TestPerformance.COMPUTE_CHECKSUM) { + for (let token of tokens.getTokens()) { + TestPerformance.updateChecksum(checksum, token); + } + } + + if (!TestPerformance.RUN_PARSER) { + return new FileParseResult(input.sourceName, checksum.getValue(), undefined, tokens.size, startTime, lexer, undefined); + } + + let parseStartTime: Stopwatch = Stopwatch.startNew(); + let parser: AnyJavaParser | undefined = TestPerformance.sharedParsers[thread]; + if (TestPerformance.REUSE_PARSER && parser != null) { + parser.inputStream = tokens; + } else { + let previousParser: Parser | undefined = parser; + + if (TestPerformance.USE_PARSER_INTERPRETER) { + let referenceParser: Parser = new parserCtor(tokens); + parser = new ParserInterpreter(referenceParser.grammarFileName, referenceParser.vocabulary, referenceParser.ruleNames, referenceParser.atn, tokens); + } + else { + parser = new parserCtor(tokens); } - lexer.removeErrorListeners(); - lexer.addErrorListener(DescriptiveLexerErrorListener.INSTANCE); + let atn: ATN = (TestPerformance.FILE_GRANULARITY || previousParser == null ? parser : previousParser).atn; + if (!TestPerformance.REUSE_PARSER_DFA || (!TestPerformance.FILE_GRANULARITY && previousParser == null)) { + atn = TestPerformance.sharedParserATNs[thread]!; + } - lexer.interpreter.optimize_tail_calls = TestPerformance.OPTIMIZE_TAIL_CALLS; - if (TestPerformance.ENABLE_LEXER_DFA && !TestPerformance.REUSE_LEXER_DFA) { - lexer.interpreter.atn.clearDFA(); + if (!TestPerformance.ENABLE_PARSER_DFA) { + parser.interpreter = new NonCachingParserATNSimulator(atn, parser); + } else if (!TestPerformance.REUSE_PARSER_DFA || TestPerformance.COMPUTE_TRANSITION_STATS) { + parser.interpreter = new StatisticsParserATNSimulator(atn, parser); } - let tokens: CommonTokenStream = new CommonTokenStream(lexer); - tokens.fill(); - TestPerformance.tokenCount[currentPass] += tokens.size; + TestPerformance.sharedParsers[thread] = parser; + } - if (TestPerformance.COMPUTE_CHECKSUM) { - for (let token of tokens.getTokens()) { - TestPerformance.updateChecksum(checksum, token); - } + parser.removeParseListeners(); + parser.removeErrorListeners(); + if (!TestPerformance.TWO_STAGE_PARSING) { + parser.addErrorListener(DescriptiveErrorListener.INSTANCE); + parser.addErrorListener(new SummarizingDiagnosticErrorListener()); + } + + if (TestPerformance.ENABLE_PARSER_DFA && !TestPerformance.REUSE_PARSER_DFA) { + parser.interpreter.atn.clearDFA(); + } + + parser.interpreter.setPredictionMode(TestPerformance.TWO_STAGE_PARSING ? PredictionMode.SLL : TestPerformance.PREDICTION_MODE); + parser.interpreter.force_global_context = TestPerformance.FORCE_GLOBAL_CONTEXT && !TestPerformance.TWO_STAGE_PARSING; + parser.interpreter.always_try_local_context = TestPerformance.TRY_LOCAL_CONTEXT_FIRST || TestPerformance.TWO_STAGE_PARSING; + parser.interpreter.enable_global_context_dfa = TestPerformance.ENABLE_PARSER_FULL_CONTEXT_DFA; + parser.interpreter.optimize_ll1 = TestPerformance.OPTIMIZE_LL1; + parser.interpreter.optimize_unique_closure = TestPerformance.OPTIMIZE_UNIQUE_CLOSURE; + parser.interpreter.optimize_tail_calls = TestPerformance.OPTIMIZE_TAIL_CALLS; + parser.interpreter.tail_call_preserves_sll = TestPerformance.TAIL_CALL_PRESERVES_SLL; + parser.interpreter.treat_sllk1_conflict_as_ambiguity = TestPerformance.TREAT_SLLK1_CONFLICT_AS_AMBIGUITY; + parser.buildParseTree = TestPerformance.BUILD_PARSE_TREES; + if (!TestPerformance.BUILD_PARSE_TREES && TestPerformance.BLANK_LISTENER) { + parser.addParseListener(listener); + } + if (TestPerformance.BAIL_ON_ERROR || TestPerformance.TWO_STAGE_PARSING) { + parser.errorHandler = new BailErrorStrategy(); + } + + // let parseMethod: Method = parserClass.getMethod(entryPoint); + let parseResult: ParserRuleContext; + + try { + if (TestPerformance.COMPUTE_CHECKSUM && !TestPerformance.BUILD_PARSE_TREES) { + parser.addParseListener(new ChecksumParseTreeListener(checksum)); + } + + if (parser instanceof ParserInterpreter) { + parseResult = parser.parse(parser.ruleNames.indexOf(entryPointName)); + } + else { + parseResult = entryPoint(parser); + } + } catch (ex) { + if (!TestPerformance.TWO_STAGE_PARSING) { + throw ex; } - if (!TestPerformance.RUN_PARSER) { - return new FileParseResult(input.sourceName, checksum.getValue(), undefined, tokens.size, startTime, lexer, undefined); + let sourceName: string = tokens.sourceName; + sourceName = sourceName != null && sourceName.length > 0 ? sourceName + ": " : ""; + if (TestPerformance.REPORT_SECOND_STAGE_RETRY) { + console.error(sourceName + "Forced to retry with full context."); } - let parseStartTime: Stopwatch = Stopwatch.startNew(); - let parser: AnyJavaParser | undefined = TestPerformance.sharedParsers[thread]; - if (TestPerformance.REUSE_PARSER && parser != null) { + if (!(ex instanceof ParseCancellationException)) { + throw ex; + } + + tokens.seek(0); + if (TestPerformance.REUSE_PARSER && TestPerformance.sharedParsers[thread] != null) { parser.inputStream = tokens; } else { - let previousParser: Parser | undefined = parser; - if (TestPerformance.USE_PARSER_INTERPRETER) { let referenceParser: Parser = new parserCtor(tokens); parser = new ParserInterpreter(referenceParser.grammarFileName, referenceParser.vocabulary, referenceParser.ruleNames, referenceParser.atn, tokens); @@ -1259,34 +1342,23 @@ export class TestPerformance { parser = new parserCtor(tokens); } - let atn: ATN = (TestPerformance.FILE_GRANULARITY || previousParser == null ? parser : previousParser).atn; - if (!TestPerformance.REUSE_PARSER_DFA || (!TestPerformance.FILE_GRANULARITY && previousParser == null)) { - atn = TestPerformance.sharedParserATNs[thread]!; - } - - if (!TestPerformance.ENABLE_PARSER_DFA) { - parser.interpreter = new NonCachingParserATNSimulator(atn, parser); - } else if (!TestPerformance.REUSE_PARSER_DFA || TestPerformance.COMPUTE_TRANSITION_STATS) { - parser.interpreter = new StatisticsParserATNSimulator(atn, parser); - } - TestPerformance.sharedParsers[thread] = parser; } parser.removeParseListeners(); parser.removeErrorListeners(); - if (!TestPerformance.TWO_STAGE_PARSING) { - parser.addErrorListener(DescriptiveErrorListener.INSTANCE); - parser.addErrorListener(new SummarizingDiagnosticErrorListener()); - } - - if (TestPerformance.ENABLE_PARSER_DFA && !TestPerformance.REUSE_PARSER_DFA) { - parser.interpreter.atn.clearDFA(); + parser.addErrorListener(DescriptiveErrorListener.INSTANCE); + parser.addErrorListener(new SummarizingDiagnosticErrorListener()); + if (!TestPerformance.ENABLE_PARSER_DFA) { + parser.interpreter = new NonCachingParserATNSimulator(parser.atn, parser); + } else if (!TestPerformance.REUSE_PARSER_DFA) { + parser.interpreter = new StatisticsParserATNSimulator(TestPerformance.sharedParserATNs[thread]!, parser); + } else if (TestPerformance.COMPUTE_TRANSITION_STATS) { + parser.interpreter = new StatisticsParserATNSimulator(parser.atn, parser); } - - parser.interpreter.setPredictionMode(TestPerformance.TWO_STAGE_PARSING ? PredictionMode.SLL : TestPerformance.PREDICTION_MODE); - parser.interpreter.force_global_context = TestPerformance.FORCE_GLOBAL_CONTEXT && !TestPerformance.TWO_STAGE_PARSING; - parser.interpreter.always_try_local_context = TestPerformance.TRY_LOCAL_CONTEXT_FIRST || TestPerformance.TWO_STAGE_PARSING; + parser.interpreter.setPredictionMode(TestPerformance.PREDICTION_MODE); + parser.interpreter.force_global_context = TestPerformance.FORCE_GLOBAL_CONTEXT; + parser.interpreter.always_try_local_context = TestPerformance.TRY_LOCAL_CONTEXT_FIRST; parser.interpreter.enable_global_context_dfa = TestPerformance.ENABLE_PARSER_FULL_CONTEXT_DFA; parser.interpreter.optimize_ll1 = TestPerformance.OPTIMIZE_LL1; parser.interpreter.optimize_unique_closure = TestPerformance.OPTIMIZE_UNIQUE_CLOSURE; @@ -1294,114 +1366,42 @@ export class TestPerformance { parser.interpreter.tail_call_preserves_sll = TestPerformance.TAIL_CALL_PRESERVES_SLL; parser.interpreter.treat_sllk1_conflict_as_ambiguity = TestPerformance.TREAT_SLLK1_CONFLICT_AS_AMBIGUITY; parser.buildParseTree = TestPerformance.BUILD_PARSE_TREES; + if (TestPerformance.COMPUTE_CHECKSUM && !TestPerformance.BUILD_PARSE_TREES) { + parser.addParseListener(new ChecksumParseTreeListener(checksum)); + } if (!TestPerformance.BUILD_PARSE_TREES && TestPerformance.BLANK_LISTENER) { parser.addParseListener(listener); } - if (TestPerformance.BAIL_ON_ERROR || TestPerformance.TWO_STAGE_PARSING) { + if (TestPerformance.BAIL_ON_ERROR) { parser.errorHandler = new BailErrorStrategy(); } - // let parseMethod: Method = parserClass.getMethod(entryPoint); - let parseResult: ParserRuleContext; - - try { - if (TestPerformance.COMPUTE_CHECKSUM && !TestPerformance.BUILD_PARSE_TREES) { - parser.addParseListener(new ChecksumParseTreeListener(checksum)); - } - - if (parser instanceof ParserInterpreter) { - parseResult = parser.parse(parser.ruleNames.indexOf(entryPointName)); - } - else { - parseResult = entryPoint(parser); - } - } catch (ex) { - if (!TestPerformance.TWO_STAGE_PARSING) { - throw ex; - } - - let sourceName: string = tokens.sourceName; - sourceName = sourceName != null && sourceName.length > 0 ? sourceName + ": " : ""; - if (TestPerformance.REPORT_SECOND_STAGE_RETRY) { - console.error(sourceName + "Forced to retry with full context."); - } - - if (!(ex instanceof ParseCancellationException)) { - throw ex; - } - - tokens.seek(0); - if (TestPerformance.REUSE_PARSER && TestPerformance.sharedParsers[thread] != null) { - parser.inputStream = tokens; - } else { - if (TestPerformance.USE_PARSER_INTERPRETER) { - let referenceParser: Parser = new parserCtor(tokens); - parser = new ParserInterpreter(referenceParser.grammarFileName, referenceParser.vocabulary, referenceParser.ruleNames, referenceParser.atn, tokens); - } - else { - parser = new parserCtor(tokens); - } - - TestPerformance.sharedParsers[thread] = parser; - } - - parser.removeParseListeners(); - parser.removeErrorListeners(); - parser.addErrorListener(DescriptiveErrorListener.INSTANCE); - parser.addErrorListener(new SummarizingDiagnosticErrorListener()); - if (!TestPerformance.ENABLE_PARSER_DFA) { - parser.interpreter = new NonCachingParserATNSimulator(parser.atn, parser); - } else if (!TestPerformance.REUSE_PARSER_DFA) { - parser.interpreter = new StatisticsParserATNSimulator(TestPerformance.sharedParserATNs[thread]!, parser); - } else if (TestPerformance.COMPUTE_TRANSITION_STATS) { - parser.interpreter = new StatisticsParserATNSimulator(parser.atn, parser); - } - parser.interpreter.setPredictionMode(TestPerformance.PREDICTION_MODE); - parser.interpreter.force_global_context = TestPerformance.FORCE_GLOBAL_CONTEXT; - parser.interpreter.always_try_local_context = TestPerformance.TRY_LOCAL_CONTEXT_FIRST; - parser.interpreter.enable_global_context_dfa = TestPerformance.ENABLE_PARSER_FULL_CONTEXT_DFA; - parser.interpreter.optimize_ll1 = TestPerformance.OPTIMIZE_LL1; - parser.interpreter.optimize_unique_closure = TestPerformance.OPTIMIZE_UNIQUE_CLOSURE; - parser.interpreter.optimize_tail_calls = TestPerformance.OPTIMIZE_TAIL_CALLS; - parser.interpreter.tail_call_preserves_sll = TestPerformance.TAIL_CALL_PRESERVES_SLL; - parser.interpreter.treat_sllk1_conflict_as_ambiguity = TestPerformance.TREAT_SLLK1_CONFLICT_AS_AMBIGUITY; - parser.buildParseTree = TestPerformance.BUILD_PARSE_TREES; - if (TestPerformance.COMPUTE_CHECKSUM && !TestPerformance.BUILD_PARSE_TREES) { - parser.addParseListener(new ChecksumParseTreeListener(checksum)); - } - if (!TestPerformance.BUILD_PARSE_TREES && TestPerformance.BLANK_LISTENER) { - parser.addParseListener(listener); - } - if (TestPerformance.BAIL_ON_ERROR) { - parser.errorHandler = new BailErrorStrategy(); - } - - if (parser instanceof ParserInterpreter) { - parseResult = parser.parse(parser.ruleNames.indexOf(entryPointName)); - } else { - parseResult = entryPoint(parser); - } - } - - if (TestPerformance.COMPUTE_CHECKSUM && TestPerformance.BUILD_PARSE_TREES) { - ParseTreeWalker.DEFAULT.walk(new ChecksumParseTreeListener(checksum), parseResult); - } - if (TestPerformance.BUILD_PARSE_TREES && TestPerformance.BLANK_LISTENER) { - ParseTreeWalker.DEFAULT.walk(listener, parseResult); + if (parser instanceof ParserInterpreter) { + parseResult = parser.parse(parser.ruleNames.indexOf(entryPointName)); + } else { + parseResult = entryPoint(parser); } + } - return new FileParseResult(input.sourceName, checksum.getValue(), parseResult, tokens.size, TestPerformance.TIME_PARSE_ONLY ? parseStartTime : startTime, lexer, parser); - } catch (e) { - if (!TestPerformance.REPORT_SYNTAX_ERRORS && e instanceof ParseCancellationException) { - return new FileParseResult("unknown", checksum.getValue(), undefined, 0, startTime, undefined, undefined); - } + if (TestPerformance.COMPUTE_CHECKSUM && TestPerformance.BUILD_PARSE_TREES) { + ParseTreeWalker.DEFAULT.walk(new ChecksumParseTreeListener(checksum), parseResult); + } + if (TestPerformance.BUILD_PARSE_TREES && TestPerformance.BLANK_LISTENER) { + ParseTreeWalker.DEFAULT.walk(listener, parseResult); + } - // e.printStackTrace(System.out); - console.error(e); - throw new Error("IllegalStateException: " + e); + return new FileParseResult(input.sourceName, checksum.getValue(), parseResult, tokens.size, TestPerformance.TIME_PARSE_ONLY ? parseStartTime : startTime, lexer, parser); + } catch (e) { + if (!TestPerformance.REPORT_SYNTAX_ERRORS && e instanceof ParseCancellationException) { + return new FileParseResult("unknown", checksum.getValue(), undefined, 0, startTime, undefined, undefined); } - }, - }; + + // e.printStackTrace(System.out); + console.error(e); + throw new Error("IllegalStateException: " + e); + } + }, + }; // } catch (Exception e) { // e.printStackTrace(System.out); // Assert.fail(e.getMessage()); @@ -1443,7 +1443,7 @@ export class FileParseResult { this.elapsedTime = this.startTime.elapsed(); if (lexer != null) { - let interpreter: LexerATNSimulator = lexer.interpreter; + let interpreter: LexerATNSimulator = lexer.interpreter; if (interpreter instanceof StatisticsLexerATNSimulator) { this.lexerTotalTransitions = interpreter.totalTransitions; this.lexerComputedTransitions = interpreter.computedTransitions; @@ -1452,7 +1452,7 @@ export class FileParseResult { this.lexerComputedTransitions = 0; } - let dfaSize: number = 0; + let dfaSize: number = 0; for (let dfa of interpreter.atn.decisionToDFA) { if (dfa != null) { dfaSize += dfa.states.size; @@ -1467,7 +1467,7 @@ export class FileParseResult { } if (parser != null) { - let interpreter: ParserATNSimulator = parser.interpreter; + let interpreter: ParserATNSimulator = parser.interpreter; if (interpreter instanceof StatisticsParserATNSimulator) { this.decisionInvocations = interpreter.decisionInvocations; this.fullContextFallback = interpreter.fullContextFallback; @@ -1484,7 +1484,7 @@ export class FileParseResult { this.parserFullContextTransitions = new Uint32Array(0); } - let dfaSize: number = 0; + let dfaSize: number = 0; for (let dfa of interpreter.atn.decisionToDFA) { if (dfa != null) { dfaSize += dfa.states.size; @@ -1599,7 +1599,7 @@ class StatisticsParserATNSimulator extends ParserATNSimulator { } class DescriptiveErrorListener implements ParserErrorListener { - public static INSTANCE: DescriptiveErrorListener = new DescriptiveErrorListener(); + public static INSTANCE: DescriptiveErrorListener = new DescriptiveErrorListener(); @Override public syntaxError(recognizer: Recognizer, offendingSymbol: T | undefined, line: number, charPositionInLine: number, msg: string, e: RecognitionException | undefined): void { @@ -1608,7 +1608,7 @@ class DescriptiveErrorListener implements ParserErrorListener { } let inputStream = recognizer.inputStream; - let sourceName: string = inputStream != null ? inputStream.sourceName : ""; + let sourceName: string = inputStream != null ? inputStream.sourceName : ""; if (sourceName.length > 0) { sourceName = `${sourceName}:${line}:${charPositionInLine}: `; } @@ -1619,7 +1619,7 @@ class DescriptiveErrorListener implements ParserErrorListener { } class DescriptiveLexerErrorListener implements ANTLRErrorListener { - public static INSTANCE: DescriptiveLexerErrorListener = new DescriptiveLexerErrorListener(); + public static INSTANCE: DescriptiveLexerErrorListener = new DescriptiveLexerErrorListener(); @Override public syntaxError(recognizer: Recognizer, offendingSymbol: T | undefined, line: number, charPositionInLine: number, msg: string, e: RecognitionException | undefined): void { @@ -1628,7 +1628,7 @@ class DescriptiveLexerErrorListener implements ANTLRErrorListener { } let inputStream = recognizer.inputStream; - let sourceName: string = inputStream != null ? inputStream.sourceName : ""; + let sourceName: string = inputStream != null ? inputStream.sourceName : ""; if (sourceName.length > 0) { sourceName = `${sourceName}:${line}:${charPositionInLine}: `; } @@ -1645,10 +1645,10 @@ class SummarizingDiagnosticErrorListener extends DiagnosticErrorListener { @Override public reportAmbiguity(recognizer: Parser, dfa: DFA, startIndex: number, stopIndex: number, exact: boolean, ambigAlts: BitSet | undefined, configs: ATNConfigSet): void { if (TestPerformance.COMPUTE_TRANSITION_STATS && TestPerformance.DETAILED_DFA_STATE_STATS) { - let sllPredictions: BitSet = this.getConflictingAlts(this._sllConflict, this._sllConfigs); - let sllPrediction: number = sllPredictions.nextSetBit(0); - let llPredictions: BitSet = this.getConflictingAlts(ambigAlts, configs); - let llPrediction: number = llPredictions.cardinality() === 0 ? ATN.INVALID_ALT_NUMBER : llPredictions.nextSetBit(0); + let sllPredictions: BitSet = this.getConflictingAlts(this._sllConflict, this._sllConfigs); + let sllPrediction: number = sllPredictions.nextSetBit(0); + let llPredictions: BitSet = this.getConflictingAlts(ambigAlts, configs); + let llPrediction: number = llPredictions.cardinality() === 0 ? ATN.INVALID_ALT_NUMBER : llPredictions.nextSetBit(0); if (sllPrediction !== llPrediction) { (recognizer.interpreter as StatisticsParserATNSimulator).nonSll[dfa.decision]++; } @@ -1659,9 +1659,9 @@ class SummarizingDiagnosticErrorListener extends DiagnosticErrorListener { } // show the rule name along with the decision - let decision: number = dfa.decision; - let rule: string = recognizer.ruleNames[dfa.atnStartState.ruleIndex]; - let input: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex)); + let decision: number = dfa.decision; + let rule: string = recognizer.ruleNames[dfa.atnStartState.ruleIndex]; + let input: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex)); recognizer.notifyErrorListeners(`reportAmbiguity d=${decision} (${rule}): ambigAlts=${ambigAlts}, input='${input}'`); } @@ -1674,18 +1674,18 @@ class SummarizingDiagnosticErrorListener extends DiagnosticErrorListener { } // show the rule name and viable configs along with the base info - let decision: number = dfa.decision; - let rule: string = recognizer.ruleNames[dfa.atnStartState.ruleIndex]; - let input: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex)); - let representedAlts: BitSet = this.getConflictingAlts(conflictingAlts, conflictState.s0.configs); + let decision: number = dfa.decision; + let rule: string = recognizer.ruleNames[dfa.atnStartState.ruleIndex]; + let input: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex)); + let representedAlts: BitSet = this.getConflictingAlts(conflictingAlts, conflictState.s0.configs); recognizer.notifyErrorListeners(`reportAttemptingFullContext d=${decision} (${rule}), input='${input}', viable=${representedAlts}`); } @Override public reportContextSensitivity(recognizer: Parser, dfa: DFA, startIndex: number, stopIndex: number, prediction: number, acceptState: SimulatorState): void { if (TestPerformance.COMPUTE_TRANSITION_STATS && TestPerformance.DETAILED_DFA_STATE_STATS) { - let sllPredictions: BitSet = this.getConflictingAlts(this._sllConflict, this._sllConfigs); - let sllPrediction: number = sllPredictions.nextSetBit(0); + let sllPredictions: BitSet = this.getConflictingAlts(this._sllConflict, this._sllConfigs); + let sllPrediction: number = sllPredictions.nextSetBit(0); if (sllPrediction !== prediction) { (recognizer.interpreter as StatisticsParserATNSimulator).nonSll[dfa.decision]++; } @@ -1696,9 +1696,9 @@ class SummarizingDiagnosticErrorListener extends DiagnosticErrorListener { } // show the rule name and viable configs along with the base info - let decision: number = dfa.decision; - let rule: string = recognizer.ruleNames[dfa.atnStartState.ruleIndex]; - let input: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex)); + let decision: number = dfa.decision; + let rule: string = recognizer.ruleNames[dfa.atnStartState.ruleIndex]; + let input: string = recognizer.inputStream.getText(Interval.of(startIndex, stopIndex)); recognizer.notifyErrorListeners(`reportContextSensitivity d=${decision} (${rule}), input='${input}', viable={${prediction}}`); } } @@ -1866,10 +1866,10 @@ class NonCachingParserATNSimulator extends StatisticsParserATNSimulator { } class ChecksumParseTreeListener implements ParseTreeListener { - private static VISIT_TERMINAL: number = 1; - private static VISIT_ERROR_NODE: number = 2; - private static ENTER_RULE: number = 3; - private static EXIT_RULE: number = 4; + private static VISIT_TERMINAL: number = 1; + private static VISIT_ERROR_NODE: number = 2; + private static ENTER_RULE: number = 3; + private static EXIT_RULE: number = 4; private checksum: MurmurHashChecksum; diff --git a/benchmark/TimeLexerSpeed.ts b/benchmark/TimeLexerSpeed.ts index 08b561b8..c884631d 100644 --- a/benchmark/TimeLexerSpeed.ts +++ b/benchmark/TimeLexerSpeed.ts @@ -7,13 +7,13 @@ import * as fs from "fs"; import * as path from "path"; import * as util from "util"; -import { ANTLRInputStream } from "../src/ANTLRInputStream"; -import { CharStream } from "../src/CharStream"; -import { CharStreams } from "../src/CharStreams"; -import { CommonTokenStream } from "../src/CommonTokenStream"; +import { ANTLRInputStream } from "antlr4ts"; +import { CharStream } from "antlr4ts"; +import { CharStreams } from "antlr4ts"; +import { CommonTokenStream } from "antlr4ts"; import { GraphemesLexer } from "./gen/GraphemesLexer"; import { JavaLexer } from "./gen/std/JavaLexer"; -import { Lexer } from "../src/Lexer"; +import { Lexer } from "antlr4ts"; import { Stopwatch } from "./Stopwatch"; import { TimeSpan } from "./TimeSpan"; diff --git a/benchmark/package-lock.json b/benchmark/package-lock.json new file mode 100644 index 00000000..d41cde8c --- /dev/null +++ b/benchmark/package-lock.json @@ -0,0 +1,48 @@ +{ + "name": "antlr4ts-benchmark", + "version": "0.5.0-dev", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/node": { + "version": "13.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", + "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", + "dev": true + }, + "@types/source-map-support": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.5.1.tgz", + "integrity": "sha512-VDqnZe9D2zR19qbeRvwYyHSp7AtUtCkTaRVFQ8wzwH9TXw9kKKq/vBhfEnFEXVupO2M0lBMA9mr/XyQ6gEkUOA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "typescript": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", + "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", + "dev": true + } + } +} diff --git a/benchmark/package.json b/benchmark/package.json new file mode 100644 index 00000000..fc784d68 --- /dev/null +++ b/benchmark/package.json @@ -0,0 +1,38 @@ +{ + "name": "antlr4ts-benchmark", + "version": "0.5.0-dev", + "description": "ANTLR 4 performance benchmark for JavaScript written in Typescript", + "scripts": { + "prepare": "npm run antlr && npm run tsc", + "antlr": "npm run antlr-benchmark-graphemes && npm run antlr-benchmark-std && npm run antlr-benchmark-std-atn && npm run antlr-benchmark-lr && npm run antlr-benchmark-lr-atn", + "antlr-benchmark-graphemes": "antlr4ts -visitor Graphemes.g4 -o gen", + "antlr-benchmark-std": "antlr4ts -visitor Java.g4 -o gen/std", + "antlr-benchmark-std-atn": "antlr4ts -visitor -Xforce-atn Java.g4 -o gen/std-atn", + "antlr-benchmark-lr": "antlr4ts -visitor JavaLR.g4 -o gen/lr", + "antlr-benchmark-lr-atn": "antlr4ts -visitor -Xforce-atn JavaLR.g4 -o gen/lr-atn", + "tsc": "tsc -p ." + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tunnelvisionlabs/antlr4ts.git" + }, + "keywords": [ + "ANTLR4", + "typescript" + ], + "author": "Terence Parr, Sam Harwell, and Burt Harris", + "license": "BSD-3-Clause", + "bugs": { + "url": "https://github.com/tunnelvisionlabs/antlr4ts/issues" + }, + "homepage": "https://github.com/tunnelvisionlabs/antlr4ts#readme", + "devDependencies": { + "@types/source-map-support": "^0.5.1", + "antlr4ts-cli": "0.5.0-dev", + "typescript": "^2.8.3" + }, + "dependencies": { + "antlr4ts": "0.5.0-dev", + "source-map-support": "^0.5.16" + } +} diff --git a/benchmark/tsconfig.json b/benchmark/tsconfig.json new file mode 100644 index 00000000..0959ebfe --- /dev/null +++ b/benchmark/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "outDir": "dist", + "sourceMap": true, + "inlineSources": true, + "module": "commonjs", + "target": "es2015", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "experimentalDecorators": true, + "declaration": true, + "preserveConstEnums": true, + "types": [ + "node" + ] + }, + "exclude": [ + "node_modules", + "../runtime/dist/", + "dist" + ] +} diff --git a/lerna.json b/lerna.json new file mode 100644 index 00000000..82ed6a0d --- /dev/null +++ b/lerna.json @@ -0,0 +1,9 @@ +{ + "packages": [ + "tool", + "runtime/typescript", + "benchmark", + "test" + ], + "version": "0.5.0-dev" +} diff --git a/package-lock.json b/package-lock.json index 1c05851b..fd0a111a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,2558 +4,6753 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "@evocateur/libnpmaccess": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz", + "integrity": "sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@evocateur/npm-registry-fetch": "^4.0.0", + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + } } }, - "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "@evocateur/libnpmpublish": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz", + "integrity": "sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "@evocateur/npm-registry-fetch": "^4.0.0", + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, - "@babel/generator": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.3.tgz", - "integrity": "sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ==", + "@evocateur/npm-registry-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz", + "integrity": "sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==", "dev": true, "requires": { - "@babel/types": "^7.9.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.1.2" } }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "@evocateur/pacote": { + "version": "9.6.5", + "resolved": "https://registry.npmjs.org/@evocateur/pacote/-/pacote-9.6.5.tgz", + "integrity": "sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@evocateur/npm-registry-fetch": "^4.0.0", + "bluebird": "^3.5.3", + "cacache": "^12.0.3", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.5.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.4.4", + "npm-pick-manifest": "^3.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.3", + "safe-buffer": "^5.2.0", + "semver": "^5.7.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "@lerna/add": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-3.20.0.tgz", + "integrity": "sha512-AnH1oRIEEg/VDa3SjYq4x1/UglEAvrZuV0WssHUMN81RTZgQk3we+Mv3qZNddrZ/fBcZu2IAdN/EQ3+ie2JxKQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@evocateur/pacote": "^9.6.3", + "@lerna/bootstrap": "3.20.0", + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.20.0", + "@lerna/npm-conf": "3.16.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "npm-package-arg": "^6.1.0", + "p-map": "^2.1.0", + "semver": "^6.2.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "@lerna/bootstrap": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.20.0.tgz", + "integrity": "sha512-Wylullx3uthKE7r4izo09qeRGL20Y5yONlQEjPCfnbxCC2Elu+QcPu4RC6kqKQ7b+g7pdC3OOgcHZjngrwr5XQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.20.0", + "@lerna/has-npm-version": "3.16.5", + "@lerna/npm-install": "3.16.5", + "@lerna/package-graph": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/rimraf-dir": "3.16.5", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/symlink-binary": "3.17.0", + "@lerna/symlink-dependencies": "3.17.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "get-port": "^4.2.0", + "multimatch": "^3.0.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0", + "p-waterfall": "^1.0.0", + "read-package-tree": "^5.1.6", + "semver": "^6.2.0" } }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "@lerna/changed": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-3.20.0.tgz", + "integrity": "sha512-+hzMFSldbRPulZ0vbKk6RD9f36gaH3Osjx34wrrZ62VB4pKmjyuS/rxVYkCA3viPLHoiIw2F8zHM5BdYoDSbjw==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@lerna/collect-updates": "3.20.0", + "@lerna/command": "3.18.5", + "@lerna/listable": "3.18.5", + "@lerna/output": "3.13.0" } }, - "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "@lerna/check-working-tree": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz", + "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" + "@lerna/collect-uncommitted": "3.16.5", + "@lerna/describe-ref": "3.16.5", + "@lerna/validation-error": "3.13.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "@lerna/child-process": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.16.5.tgz", + "integrity": "sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "chalk": "^2.3.1", + "execa": "^1.0.0", + "strong-log-transformer": "^2.0.0" } }, - "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "@lerna/clean": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.20.0.tgz", + "integrity": "sha512-9ZdYrrjQvR5wNXmHfDsfjWjp0foOkCwKe3hrckTzkAeQA1ibyz5llGwz5e1AeFrV12e2/OLajVqYfe+qdkZUgg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.20.0", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/rimraf-dir": "3.16.5", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0", + "p-waterfall": "^1.0.0" } }, - "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "@lerna/cli": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-3.18.5.tgz", + "integrity": "sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@lerna/global-options": "3.13.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2", + "yargs": "^14.2.2" } }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "@lerna/collect-uncommitted": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz", + "integrity": "sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@lerna/child-process": "3.16.5", + "chalk": "^2.3.1", + "figgy-pudding": "^3.5.1", + "npmlog": "^4.1.2" } }, - "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", - "dev": true + "@lerna/collect-updates": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.20.0.tgz", + "integrity": "sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/describe-ref": "3.16.5", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "slash": "^2.0.0" + } }, - "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "@lerna/command": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-3.18.5.tgz", + "integrity": "sha512-36EnqR59yaTU4HrR1C9XDFti2jRx0BgpIUBeWn129LZZB8kAB3ov1/dJNa1KcNRKp91DncoKHLY99FZ6zTNpMQ==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@lerna/child-process": "3.16.5", + "@lerna/package-graph": "3.18.5", + "@lerna/project": "3.18.0", + "@lerna/validation-error": "3.13.0", + "@lerna/write-log-file": "3.13.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^1.0.0", + "is-ci": "^2.0.0", + "npmlog": "^4.1.2" } }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "@lerna/conventional-commits": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.18.5.tgz", + "integrity": "sha512-qcvXIEJ3qSgalxXnQ7Yxp5H9Ta5TVyai6vEor6AAEHc20WiO7UIdbLDCxBtiiHMdGdpH85dTYlsoYUwsCJu3HQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - } + "@lerna/validation-error": "3.13.0", + "conventional-changelog-angular": "^5.0.3", + "conventional-changelog-core": "^3.1.6", + "conventional-recommended-bump": "^5.0.0", + "fs-extra": "^8.1.0", + "get-stream": "^4.0.0", + "lodash.template": "^4.5.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "pify": "^4.0.1", + "semver": "^6.2.0" } }, - "@babel/parser": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.3.tgz", - "integrity": "sha512-E6SpIDJZ0cZAKoCNk+qSDd0ChfTnpiJN9FfNf3RZ20dzwA2vL2oq5IX1XTVT+4vDmRlta2nGk5HGMMskJAR+4A==", - "dev": true + "@lerna/create": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-3.18.5.tgz", + "integrity": "sha512-cHpjocbpKmLopCuZFI7cKEM3E/QY8y+yC7VtZ4FQRSaLU8D8i2xXtXmYaP1GOlVNavji0iwoXjuNpnRMInIr2g==", + "dev": true, + "requires": { + "@evocateur/pacote": "^9.6.3", + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "@lerna/npm-conf": "3.16.0", + "@lerna/validation-error": "3.13.0", + "camelcase": "^5.0.0", + "dedent": "^0.7.0", + "fs-extra": "^8.1.0", + "globby": "^9.2.0", + "init-package-json": "^1.10.3", + "npm-package-arg": "^6.1.0", + "p-reduce": "^1.0.0", + "pify": "^4.0.1", + "semver": "^6.2.0", + "slash": "^2.0.0", + "validate-npm-package-license": "^3.0.3", + "validate-npm-package-name": "^3.0.0", + "whatwg-url": "^7.0.0" + } }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "@lerna/create-symlink": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.16.2.tgz", + "integrity": "sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@zkochan/cmd-shim": "^3.1.0", + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2" } }, - "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "@lerna/describe-ref": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.16.5.tgz", + "integrity": "sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@lerna/child-process": "3.16.5", + "npmlog": "^4.1.2" } }, - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "@lerna/diff": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-3.18.5.tgz", + "integrity": "sha512-u90lGs+B8DRA9Z/2xX4YaS3h9X6GbypmGV6ITzx9+1Ga12UWGTVlKaCXBgONMBjzJDzAQOK8qPTwLA57SeBLgA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "@lerna/validation-error": "3.13.0", + "npmlog": "^4.1.2" } }, - "@deboxsoft/cpx": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@deboxsoft/cpx/-/cpx-1.5.0.tgz", - "integrity": "sha512-4hkpKja/1jn+mxpGM3oczee2qXGGChunQYYnORIc7U+91XZPzSdXtvVr/yeH//rnM3Sl9QWzUjMKN9I+IqKu9g==", + "@lerna/exec": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-3.20.0.tgz", + "integrity": "sha512-pS1mmC7kzV668rHLWuv31ClngqeXjeHC8kJuM+W2D6IpUVMGQHLcCTYLudFgQsuKGVpl0DGNYG+sjLhAPiiu6A==", "dev": true, "requires": { - "co": "^4.6.0", - "debounce": "^1.1.0", - "debug": "^3.1.0", - "duplexer": "^0.1.1", - "fs-extra": "^6.0.1", - "glob": "^7.1.2", - "glob2base": "0.0.12", - "minimatch": "^3.0.4", - "resolve": "^1.8.1", - "safe-buffer": "^5.1.2", - "shell-quote": "^1.6.1", - "subarg": "^1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.20.0", + "@lerna/profiler": "3.20.0", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "p-map": "^2.1.0" } }, - "@istanbuljs/load-nyc-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", - "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "@lerna/filter-options": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.20.0.tgz", + "integrity": "sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g==", "dev": true, "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } + "@lerna/collect-updates": "3.20.0", + "@lerna/filter-packages": "3.18.0", + "dedent": "^0.7.0", + "figgy-pudding": "^3.5.1", + "npmlog": "^4.1.2" } }, - "@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", - "dev": true + "@lerna/filter-packages": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.18.0.tgz", + "integrity": "sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==", + "dev": true, + "requires": { + "@lerna/validation-error": "3.13.0", + "multimatch": "^3.0.0", + "npmlog": "^4.1.2" + } }, - "@tootallnate/once": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", - "integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==", - "dev": true + "@lerna/get-npm-exec-opts": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz", + "integrity": "sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true + "@lerna/get-packed": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.16.0.tgz", + "integrity": "sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "ssri": "^6.0.1", + "tar": "^4.4.8" + } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true + "@lerna/github-client": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.16.5.tgz", + "integrity": "sha512-rHQdn8Dv/CJrO3VouOP66zAcJzrHsm+wFuZ4uGAai2At2NkgKH+tpNhQy2H1PSC0Ezj9LxvdaHYrUzULqVK5Hw==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@octokit/plugin-enterprise-rest": "^3.6.1", + "@octokit/rest": "^16.28.4", + "git-url-parse": "^11.1.2", + "npmlog": "^4.1.2" + } }, - "@types/mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-YeDiSEzznwZwwp766SJ6QlrTyBYUGPSIwmREHVTmktUYiT/WADdWtpt9iH0KuUSf8lZLdI4lP0X6PBzPo5//JQ==", - "dev": true + "@lerna/gitlab-client": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz", + "integrity": "sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==", + "dev": true, + "requires": { + "node-fetch": "^2.5.0", + "npmlog": "^4.1.2", + "whatwg-url": "^7.0.0" + } }, - "@types/node": { - "version": "10.12.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.10.tgz", - "integrity": "sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w==", + "@lerna/global-options": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.13.0.tgz", + "integrity": "sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==", "dev": true }, - "@types/source-map-support": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.4.0.tgz", - "integrity": "sha512-9oVAi1Jlr274pbMGPEe0S3IPImV9knVNafa6E4MookD/fjOZAE6EmLkFX5ZjtZ9OXNPi2FCIZzUSMvwAUUKeSg==", + "@lerna/has-npm-version": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz", + "integrity": "sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==", "dev": true, "requires": { - "@types/node": "*" + "@lerna/child-process": "3.16.5", + "semver": "^6.2.0" } }, - "@types/std-mocks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/std-mocks/-/std-mocks-1.0.0.tgz", - "integrity": "sha512-0PDd05AK/u41wFxr0ytOYhQz15uAhkmwe8fOp33UN506zGARdLVx/Yc/WSeGs+8zKjMMTp1vlB+OXGwD7HmImg==", - "dev": true + "@lerna/import": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-3.18.5.tgz", + "integrity": "sha512-PH0WVLEgp+ORyNKbGGwUcrueW89K3Iuk/DDCz8mFyG2IG09l/jOF0vzckEyGyz6PO5CMcz4TI1al/qnp3FrahQ==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "fs-extra": "^8.1.0", + "p-map-series": "^1.0.0" + } }, - "agent-base": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", - "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "@lerna/info": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-3.20.0.tgz", + "integrity": "sha512-Rsz+KQF9mczbGUbPTrtOed1N0C+cA08Qz0eX/oI+NNjvsryZIju/o7uedG4I3P55MBiAioNrJI88fHH3eTgYug==", "dev": true, "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@lerna/command": "3.18.5", + "@lerna/output": "3.13.0", + "envinfo": "^7.3.1" } }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "@lerna/init": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-3.18.5.tgz", + "integrity": "sha512-oCwipWrha98EcJAHm8AGd2YFFLNI7AW9AWi0/LbClj1+XY9ah+uifXIgYGfTk63LbgophDd8936ZEpHMxBsbAg==", "dev": true, "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "fs-extra": "^8.1.0", + "p-map": "^2.1.0", + "write-json-file": "^3.2.0" } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "@lerna/link": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-3.18.5.tgz", + "integrity": "sha512-xTN3vktJpkT7Nqc3QkZRtHO4bT5NvuLMtKNIBDkks0HpGxC9PRyyqwOoCoh1yOGbrWIuDezhfMg3Qow+6I69IQ==", + "dev": true, + "requires": { + "@lerna/command": "3.18.5", + "@lerna/package-graph": "3.18.5", + "@lerna/symlink-dependencies": "3.17.0", + "p-map": "^2.1.0", + "slash": "^2.0.0" + } }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "@lerna/list": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-3.20.0.tgz", + "integrity": "sha512-fXTicPrfioVnRzknyPawmYIVkzDRBaQqk9spejS1S3O1DOidkihK0xxNkr8HCVC0L22w6f92g83qWDp2BYRUbg==", + "dev": true, + "requires": { + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.20.0", + "@lerna/listable": "3.18.5", + "@lerna/output": "3.13.0" + } }, - "antlr4ts": { - "version": "file:target/src", - "dev": true + "@lerna/listable": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-3.18.5.tgz", + "integrity": "sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==", + "dev": true, + "requires": { + "@lerna/query-graph": "3.18.5", + "chalk": "^2.3.1", + "columnify": "^1.5.4" + } }, - "antlr4ts-cli": { - "version": "file:tool", - "dev": true + "@lerna/log-packed": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.16.0.tgz", + "integrity": "sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==", + "dev": true, + "requires": { + "byte-size": "^5.0.1", + "columnify": "^1.5.4", + "has-unicode": "^2.0.1", + "npmlog": "^4.1.2" + } }, - "append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "@lerna/npm-conf": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.16.0.tgz", + "integrity": "sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==", "dev": true, "requires": { - "default-require-extensions": "^3.0.0" + "config-chain": "^1.1.11", + "pify": "^4.0.1" } }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true + "@lerna/npm-dist-tag": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz", + "integrity": "sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "@lerna/otplease": "3.18.5", + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2" + } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "@lerna/npm-install": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.16.5.tgz", + "integrity": "sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "@lerna/child-process": "3.16.5", + "@lerna/get-npm-exec-opts": "3.13.0", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "signal-exit": "^3.0.2", + "write-pkg": "^3.1.0" } }, - "argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", - "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", - "dev": true + "@lerna/npm-publish": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.18.5.tgz", + "integrity": "sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==", + "dev": true, + "requires": { + "@evocateur/libnpmpublish": "^1.2.2", + "@lerna/otplease": "3.18.5", + "@lerna/run-lifecycle": "3.16.2", + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "pify": "^4.0.1", + "read-package-json": "^2.0.13" + } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "@lerna/npm-run-script": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz", + "integrity": "sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@lerna/child-process": "3.16.5", + "@lerna/get-npm-exec-opts": "3.13.0", + "npmlog": "^4.1.2" } }, - "backbone": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz", - "integrity": "sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ==", + "@lerna/otplease": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-3.18.5.tgz", + "integrity": "sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==", "dev": true, "requires": { - "underscore": ">=1.8.3" + "@lerna/prompt": "3.18.5", + "figgy-pudding": "^3.5.1" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "@lerna/output": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-3.13.0.tgz", + "integrity": "sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "@lerna/pack-directory": { + "version": "3.16.4", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.16.4.tgz", + "integrity": "sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@lerna/get-packed": "3.16.0", + "@lerna/package": "3.16.0", + "@lerna/run-lifecycle": "3.16.2", + "figgy-pudding": "^3.5.1", + "npm-packlist": "^1.4.4", + "npmlog": "^4.1.2", + "tar": "^4.4.10", + "temp-write": "^3.4.0" } }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "@lerna/package": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-3.16.0.tgz", + "integrity": "sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==", + "dev": true, + "requires": { + "load-json-file": "^5.3.0", + "npm-package-arg": "^6.1.0", + "write-pkg": "^3.1.0" + } }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true + "@lerna/package-graph": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.18.5.tgz", + "integrity": "sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==", + "dev": true, + "requires": { + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/validation-error": "3.13.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "semver": "^6.2.0" + } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true + "@lerna/prerelease-id-from-version": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz", + "integrity": "sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==", + "dev": true, + "requires": { + "semver": "^6.2.0" + } }, - "caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "@lerna/profiler": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-3.20.0.tgz", + "integrity": "sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg==", "dev": true, "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2", + "upath": "^1.2.0" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "@lerna/project": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-3.18.0.tgz", + "integrity": "sha512-+LDwvdAp0BurOAWmeHE3uuticsq9hNxBI0+FMHiIai8jrygpJGahaQrBYWpwbshbQyVLeQgx3+YJdW2TbEdFWA==", + "dev": true, + "requires": { + "@lerna/package": "3.16.0", + "@lerna/validation-error": "3.13.0", + "cosmiconfig": "^5.1.0", + "dedent": "^0.7.0", + "dot-prop": "^4.2.0", + "glob-parent": "^5.0.0", + "globby": "^9.2.0", + "load-json-file": "^5.3.0", + "npmlog": "^4.1.2", + "p-map": "^2.1.0", + "resolve-from": "^4.0.0", + "write-json-file": "^3.2.0" + } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "@lerna/prompt": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.18.5.tgz", + "integrity": "sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "inquirer": "^6.2.0", + "npmlog": "^4.1.2" } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "@lerna/publish": { + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-3.20.2.tgz", + "integrity": "sha512-N7Y6PdhJ+tYQPdI1tZum8W25cDlTp4D6brvRacKZusweWexxaopbV8RprBaKexkEX/KIbncuADq7qjDBdQHzaA==", + "dev": true, + "requires": { + "@evocateur/libnpmaccess": "^3.1.2", + "@evocateur/npm-registry-fetch": "^4.0.0", + "@evocateur/pacote": "^9.6.3", + "@lerna/check-working-tree": "3.16.5", + "@lerna/child-process": "3.16.5", + "@lerna/collect-updates": "3.20.0", + "@lerna/command": "3.18.5", + "@lerna/describe-ref": "3.16.5", + "@lerna/log-packed": "3.16.0", + "@lerna/npm-conf": "3.16.0", + "@lerna/npm-dist-tag": "3.18.5", + "@lerna/npm-publish": "3.18.5", + "@lerna/otplease": "3.18.5", + "@lerna/output": "3.13.0", + "@lerna/pack-directory": "3.16.4", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "@lerna/version": "3.20.2", + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-pipe": "^1.2.0", + "semver": "^6.2.0" + } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "@lerna/pulse-till-done": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz", + "integrity": "sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } + "npmlog": "^4.1.2" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "codecov": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.6.5.tgz", - "integrity": "sha512-v48WuDMUug6JXwmmfsMzhCHRnhUf8O3duqXvltaYJKrO1OekZWpB/eH6iIoaxMl8Qli0+u3OxptdsBOYiD7VAQ==", + "@lerna/query-graph": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-3.18.5.tgz", + "integrity": "sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==", "dev": true, "requires": { - "argv": "0.0.2", - "ignore-walk": "3.0.3", - "js-yaml": "3.13.1", - "teeny-request": "6.0.1", - "urlgrey": "0.4.4" + "@lerna/package-graph": "3.18.5", + "figgy-pudding": "^3.5.1" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "@lerna/resolve-symlink": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz", + "integrity": "sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2", + "read-cmd-shim": "^1.0.1" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "@lerna/rimraf-dir": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz", + "integrity": "sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "npmlog": "^4.1.2", + "path-exists": "^3.0.0", + "rimraf": "^2.6.2" + } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "@lerna/run": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-3.20.0.tgz", + "integrity": "sha512-9U3AqeaCeB7KsGS9oyKNp62s9vYoULg/B4cqXTKZkc+OKL6QOEjYHYVSBcMK9lUXrMjCjDIuDSX3PnTCPxQ2Dw==", + "dev": true, + "requires": { + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.20.0", + "@lerna/npm-run-script": "3.16.5", + "@lerna/output": "3.13.0", + "@lerna/profiler": "3.20.0", + "@lerna/run-topologically": "3.18.5", + "@lerna/timer": "3.13.0", + "@lerna/validation-error": "3.13.0", + "p-map": "^2.1.0" + } }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "@lerna/run-lifecycle": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz", + "integrity": "sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "@lerna/npm-conf": "3.16.0", + "figgy-pudding": "^3.5.1", + "npm-lifecycle": "^3.1.2", + "npmlog": "^4.1.2" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "@lerna/run-topologically": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-3.18.5.tgz", + "integrity": "sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "@lerna/query-graph": "3.18.5", + "figgy-pudding": "^3.5.1", + "p-queue": "^4.0.0" } }, - "debounce": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", - "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==", - "dev": true + "@lerna/symlink-binary": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz", + "integrity": "sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==", + "dev": true, + "requires": { + "@lerna/create-symlink": "3.16.2", + "@lerna/package": "3.16.0", + "fs-extra": "^8.1.0", + "p-map": "^2.1.0" + } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "@lerna/symlink-dependencies": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz", + "integrity": "sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==", "dev": true, "requires": { - "ms": "2.0.0" + "@lerna/create-symlink": "3.16.2", + "@lerna/resolve-symlink": "3.16.0", + "@lerna/symlink-binary": "3.17.0", + "fs-extra": "^8.1.0", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "@lerna/timer": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-3.13.0.tgz", + "integrity": "sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==", "dev": true }, - "default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "@lerna/validation-error": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.13.0.tgz", + "integrity": "sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==", "dev": true, "requires": { - "strip-bom": "^4.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - } + "npmlog": "^4.1.2" } }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true + "@lerna/version": { + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-3.20.2.tgz", + "integrity": "sha512-ckBJMaBWc+xJen0cMyCE7W67QXLLrc0ELvigPIn8p609qkfNM0L0CF803MKxjVOldJAjw84b8ucNWZLvJagP/Q==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "3.16.5", + "@lerna/child-process": "3.16.5", + "@lerna/collect-updates": "3.20.0", + "@lerna/command": "3.18.5", + "@lerna/conventional-commits": "3.18.5", + "@lerna/github-client": "3.16.5", + "@lerna/gitlab-client": "3.15.0", + "@lerna/output": "3.13.0", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/prompt": "3.18.5", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "chalk": "^2.3.1", + "dedent": "^0.7.0", + "load-json-file": "^5.3.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-map": "^2.1.0", + "p-pipe": "^1.2.0", + "p-reduce": "^1.0.0", + "p-waterfall": "^1.0.0", + "semver": "^6.2.0", + "slash": "^2.0.0", + "temp-write": "^3.4.0", + "write-json-file": "^3.2.0" + } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "@lerna/write-log-file": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.13.0.tgz", + "integrity": "sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==", + "dev": true, + "requires": { + "npmlog": "^4.1.2", + "write-file-atomic": "^2.3.0" + } }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "@octokit/auth-token": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz", + "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.0" + } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "@octokit/endpoint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.0.tgz", + "integrity": "sha512-3nx+MEYoZeD0uJ+7F/gvELLvQJzLXhep2Az0bBSXagbApDvDW0LWwpnAIY/hb0Jwe17A0fJdz0O12dPh05cj7A==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.0", + "is-plain-object": "^3.0.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + }, + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "dev": true, + "requires": { + "os-name": "^3.1.0" + } + } + } }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "@octokit/plugin-enterprise-rest": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-3.6.2.tgz", + "integrity": "sha512-3wF5eueS5OHQYuAEudkpN+xVeUsg8vYEMMenEzLphUZ7PRZ8OJtDcsreL3ad9zxXmBbaFWzLmFcdob5CLyZftA==", "dev": true }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "@octokit/types": "^2.0.1" } }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "@octokit/plugin-request-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", + "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==", "dev": true }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" } }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "@octokit/request": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.0.tgz", + "integrity": "sha512-uAJO6GI8z8VHBqtY7VTL9iFy1Y+UTp5ShpI97tY5z0qBfYKE9rZCRsCm23VmF00x+IoNJ7a0nuVITs/+wS9/mg==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "@octokit/endpoint": "^6.0.0", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^2.8.2", + "deprecation": "^2.0.0", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^5.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "@octokit/request-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.0.tgz", + "integrity": "sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" } }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "isobject": "^4.0.0" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", "dev": true, "requires": { - "isexe": "^2.0.0" + "os-name": "^3.1.0" } } } }, - "fromentries": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", - "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", - "dev": true + "@octokit/request-error": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "@octokit/rest": { + "version": "16.43.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz", + "integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - } + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "@octokit/types": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.9.0.tgz", + "integrity": "sha512-IzptUpoDsFlXF+AOys+KnfItIVY3EK+eH9Akv+lJYELnMSGkJnIcClt6Cm0QRR4ecsUTsmFJWn10iFgJ9BQqIQ==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", "dev": true }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "@types/node": { + "version": "13.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", + "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==" + }, + "@types/source-map-support": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.5.1.tgz", + "integrity": "sha512-VDqnZe9D2zR19qbeRvwYyHSp7AtUtCkTaRVFQ8wzwH9TXw9kKKq/vBhfEnFEXVupO2M0lBMA9mr/XyQ6gEkUOA==", + "requires": { + "@types/node": "*" + } + }, + "@zkochan/cmd-shim": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz", + "integrity": "sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==", + "dev": true, + "requires": { + "is-windows": "^1.0.0", + "mkdirp-promise": "^5.0.1", + "mz": "^2.5.0" + } + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" } }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "find-index": "^0.1.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz", + "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "dev": true + }, + "byte-size": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz", + "integrity": "sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "dev": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + }, + "dependencies": { + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + } + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "conventional-changelog-angular": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz", + "integrity": "sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz", + "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==", + "dev": true, + "requires": { + "conventional-changelog-writer": "^4.0.6", + "conventional-commits-parser": "^3.0.3", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "2.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^2.0.3", + "lodash": "^4.2.1", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.0.tgz", + "integrity": "sha512-/rHb32J2EJnEXeK4NpDgMaAVTFZS3o1ExmjKMtYVgIC4MQn0vkNSbYpdGRotkfGGRWiqk3Ri3FBkiZGbAfIfOQ==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz", + "integrity": "sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "conventional-commits-filter": "^2.0.2", + "dateformat": "^3.0.0", + "handlebars": "^4.4.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^5.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-commits-filter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz", + "integrity": "sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz", + "integrity": "sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.1", + "lodash": "^4.17.15", + "meow": "^5.0.0", + "split2": "^2.0.0", + "through2": "^3.0.0", + "trim-off-newlines": "^1.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-recommended-bump": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz", + "integrity": "sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.1.1", + "conventional-commits-filter": "^2.0.2", + "conventional-commits-parser": "^3.0.3", + "git-raw-commits": "2.0.0", + "git-semver-tags": "^2.0.3", + "meow": "^4.0.0", + "q": "^1.5.1" + }, + "dependencies": { + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true + }, + "envinfo": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.0.tgz", + "integrity": "sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-raw-commits": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", + "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", + "dev": true, + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + } + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "git-semver-tags": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz", + "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==", + "dev": true, + "requires": { + "meow": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + } + } + }, + "git-up": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz", + "integrity": "sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^5.0.0" + } + }, + "git-url-parse": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.1.2.tgz", + "integrity": "sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ==", + "dev": true, + "requires": { + "git-up": "^4.0.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "init-package-json": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz", + "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.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", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + } + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-ssh": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz", + "integrity": "sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg==", + "dev": true, + "requires": { + "protocols": "^1.1.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lerna": { + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.20.2.tgz", + "integrity": "sha512-bjdL7hPLpU3Y8CBnw/1ys3ynQMUjiK6l9iDWnEGwFtDy48Xh5JboR9ZJwmKGCz9A/sarVVIGwf1tlRNKUG9etA==", + "dev": true, + "requires": { + "@lerna/add": "3.20.0", + "@lerna/bootstrap": "3.20.0", + "@lerna/changed": "3.20.0", + "@lerna/clean": "3.20.0", + "@lerna/cli": "3.18.5", + "@lerna/create": "3.18.5", + "@lerna/diff": "3.18.5", + "@lerna/exec": "3.20.0", + "@lerna/import": "3.18.5", + "@lerna/info": "3.20.0", + "@lerna/init": "3.18.5", + "@lerna/link": "3.18.5", + "@lerna/list": "3.20.0", + "@lerna/publish": "3.20.2", + "@lerna/run": "3.20.0", + "@lerna/version": "3.20.2", + "import-local": "^2.0.0", + "npmlog": "^4.1.2" + } + }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "macos-release": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "dev": true, + "requires": { + "mkdirp": "*" + } + }, + "mocha": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz", + "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.3", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multimatch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz", + "integrity": "sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==", + "dev": true, + "requires": { + "array-differ": "^2.0.3", + "array-union": "^1.0.2", + "arrify": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-gyp": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.0.tgz", + "integrity": "sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-lifecycle": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", + "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", + "dev": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-map-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", + "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", + "dev": true + }, + "p-queue": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-4.0.0.tgz", + "integrity": "sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg==", + "dev": true, + "requires": { + "eventemitter3": "^3.1.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "p-waterfall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-1.0.0.tgz", + "integrity": "sha1-ftlLPOszMngjU69qrhGqn8I1uwA=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz", + "integrity": "sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "is-ssh": "^1.3.0", + "protocols": "^1.4.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "hasha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", - "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", + "parse-url": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz", + "integrity": "sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg==", "dev": true, "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" + "is-ssh": "^1.3.0", + "normalize-url": "^3.3.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, - "highlight.js": { - "version": "9.16.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.16.2.tgz", - "integrity": "sha512-feMUrVLZvjy0oC7FVJQcSQRqbBq9kwqnYE4+Kj9ZjbHh3g+BisiPgF49NyQbVLNdrL/qqZr3Ca9yOKwgn2i/tw==", + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, - "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "html-escaper": { + "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz", - "integrity": "sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ==", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "pify": "^3.0.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } } }, - "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "agent-base": "5", - "debug": "4" - }, - "dependencies": { - "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "pinkie": "^2.0.0" } }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "minimatch": "^3.0.4" + "find-up": "^3.0.0" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "err-code": "^1.0.0", + "retry": "^0.10.0" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", + "dev": true, + "requires": { + "read": "1" + } }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", "dev": true }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "protocols": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz", + "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==", "dev": true }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "builtin-modules": "^1.0.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", "dev": true }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true + "read-cmd-shim": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz", + "integrity": "sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } }, - "istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "read-package-json": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz", + "integrity": "sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A==", "dev": true, "requires": { - "append-transform": "^2.0.0" + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" } }, - "istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } } }, - "istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "locate-path": "^2.0.0" } }, - "shebang-command": { + "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "isexe": "^2.0.0" + "p-limit": "^1.1.0" } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true } } }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" } }, - "istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A==", + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, - "jquery": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", - "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==", + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "path-parse": "^1.0.6" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "minimist": "^1.2.5" + "resolve-from": "^3.0.0" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true } } }, - "jsonfile": { + "resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "glob": "^7.1.3" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "run-async": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "is-promise": "^2.1.0" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { - "p-locate": "^4.1.0" + "aproba": "^1.1.1" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", "dev": true }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "ret": "~0.1.10" } }, - "lunr": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", - "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { - "semver": "^6.0.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } } } }, - "marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "kind-of": "^6.0.2" } }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "shebang-regex": "^1.0.0" } }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ms": "2.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "has-flag": "^3.0.0" + "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "mocha-typescript": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/mocha-typescript/-/mocha-typescript-1.1.14.tgz", - "integrity": "sha512-5wqL0Y+3BOmec/Myc4Eepn1mavI88KbFLFRb3UEveQ3Z8DovepII0S5FO+jYn7H0aQrq9PElxaCwFDO77wbwlQ==", + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "@types/mocha": "*", - "chalk": "^1.1.3", - "cross-spawn": "^5.1.0", - "yargs": "^6.5.0" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "kind-of": "^6.0.0" } }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", - "dev": true - }, - "node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "process-on-spawn": "^1.0.0" + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "ip": "1.1.5", + "smart-buffer": "^4.1.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nyc": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz", - "integrity": "sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg==", + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", "dev": true, "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", - "js-yaml": "^3.13.1", - "make-dir": "^3.0.0", - "node-preload": "^0.2.0", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "uuid": "^3.3.3", - "yargs": "^15.0.2" + "agent-base": "~4.2.1", + "socks": "~2.3.2" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "es6-promisify": "^5.0.0" } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true } } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "dev": true, "requires": { - "wrappy": "1" + "is-plain-obj": "^1.0.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" }, "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { - "p-try": "^2.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true }, - "p-map": { + "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "aggregate-error": "^3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, - "package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - } + "through": "2" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "error-ex": "^1.2.0" + "extend-shallow": "^3.0.0" } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "through2": "^2.0.2" } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { - "pinkie": "^2.0.0" + "figgy-pudding": "^3.5.1" } }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "find-up": "^4.0.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "is-descriptor": "^0.1.0" } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true } } }, - "process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dev": true, "requires": { - "fromentries": "^1.2.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" } }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, - "pseudomap": { + "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "read-pkg-up": { + "string.prototype.trimend": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", "dev": true, "requires": { - "resolve": "^1.1.6" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" } }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", "dev": true, "requires": { - "es6-error": "^4.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { + "string.prototype.trimstart": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "glob": "^7.1.3" + "ansi-regex": "^2.0.0" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "set-blocking": { + "strip-indent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", "dev": true }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true - }, - "shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" + "has-flag": "^3.0.0" } }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", "dev": true }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "temp-write": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz", + "integrity": "sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI=", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "graceful-fs": "^4.1.2", + "is-stream": "^1.1.0", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } } }, - "spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", "dev": true, "requires": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "any-promise": "^1.0.0" } }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", "dev": true, "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "thenify": ">= 3.1.0 < 4" } }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, - "std-mocks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/std-mocks/-/std-mocks-1.0.1.tgz", - "integrity": "sha1-0ziIdte+66PHD72OK8r0brB9ef4=", + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "lodash": "^4.11.1" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, - "stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "stubs": "^3.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "punycode": "^2.1.0" } }, - "strip-bom": { + "trim-newlines": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.0.tgz", + "integrity": "sha512-j5wNQBWaql8gr06dOUrfaohHlscboQZ9B8sNsoK5o4sBjm7Ht9dxSbrMXyktQpA16Acaij8AcoozteaPYZON0g==", "dev": true, + "optional": true, "requires": { - "is-utf8": "^0.2.0" + "commander": "~2.20.3" } }, - "stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", "dev": true }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "umask": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz", + "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { - "minimist": "^1.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "unique-slug": "^2.0.0" } }, - "teeny-request": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.1.tgz", - "integrity": "sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g==", + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^4.0.0", - "node-fetch": "^2.2.0", - "stream-events": "^1.0.5", - "uuid": "^3.3.2" + "imurmurhash": "^0.1.4" } }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "universal-user-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", + "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", "dev": true, "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "os-name": "^3.1.0" } }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "tslint": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", - "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "babel-code-frame": "^6.22.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.7.0", - "minimatch": "^3.0.4", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { - "tslib": "^1.8.1" + "punycode": "^2.1.0" } }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", "dev": true, "requires": { - "is-typedarray": "^1.0.0" + "object.getownpropertydescriptors": "^2.0.3" } }, - "typedoc": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.15.2.tgz", - "integrity": "sha512-K2nFEtyDQTVdXOzYtECw3TwuT3lM91Zc0dzGSLuor5R8qzZbwqBoCw7xYGVBow6+mEZAvKGznLFsl7FzG+wAgQ==", + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { - "@types/minimatch": "3.0.3", - "fs-extra": "^8.1.0", - "handlebars": "^4.5.1", - "highlight.js": "^9.16.2", - "lodash": "^4.17.15", - "marked": "^0.7.0", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.3", - "typedoc-default-themes": "^0.6.1", - "typescript": "3.7.x" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "typescript": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", - "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", - "dev": true - } + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "typedoc-default-themes": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.6.1.tgz", - "integrity": "sha512-z5AWKqQDz7igl9WkUuafx8cEm4MPVQGMpbWE+3lwVOaq+U4UoLKBMnpFQWh/4fqQ3bGysXpOstMxy2OOzHezyw==", + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", "dev": true, "requires": { - "backbone": "^1.4.0", - "jquery": "^3.4.1", - "lunr": "^2.3.8", - "underscore": "^1.9.1" + "builtins": "^1.0.3" } }, - "typescript": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", - "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", - "dev": true + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } }, - "uglify-js": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", - "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, - "optional": true, "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } + "defaults": "^1.0.3" } }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } }, - "urlgrey": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", - "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", - "dev": true + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "string-width": "^1.0.2 || 2" } }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "windows-release": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.0.tgz", + "integrity": "sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ==", "dev": true, "requires": { - "isexe": "^2.0.0" + "execa": "^1.0.0" } }, - "which-module": { + "wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "wrappy": { @@ -2565,124 +6760,226 @@ "dev": true }, "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, "requires": { + "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.2" + } + }, + "write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "write-pkg": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", + "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", + "dev": true, + "requires": { + "sort-keys": "^2.0.0", + "write-json-file": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" + } + } } }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", "dev": true, "requires": { - "cliui": "^6.0.0", + "cliui": "^5.0.0", "decamelize": "^1.2.0", - "find-up": "^4.1.0", + "find-up": "^3.0.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^4.2.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" + "yargs-parser": "^15.0.1" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^4.1.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } }, "yargs-parser": { - "version": "18.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.1.tgz", - "integrity": "sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -2690,23 +6987,6 @@ } } } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } } } } diff --git a/package.json b/package.json index e3462519..e9c11d5a 100644 --- a/package.json +++ b/package.json @@ -5,29 +5,20 @@ "private": true, "main": "index.js", "scripts": { - "prepare": "npm run unlink && npm run buildtool && npm run antlr4ts && npm run tsc && npm run buildrts", + "prepare": "lerna bootstrap", + "preparexx": "npm run unlink && npm run build-tool && npm run build-runtime && npm run build-benchmark", "unlink": "npm uninstall -g antlr4ts antlr4ts-cli", - "buildtool": "cd tool && npm run prepare", + "build-tool": "cd tool && npm install", + "build-runtime": "cd runtime && npm install", + "build-benchmark": "cd benchmark && npm install", + "build-test": "cd test && npm install", + "build-rts": "cd test/runtime && tsc", "reinstall": "npm run unlink && git clean -idx && npm install", - "antlr4ts": "npm run antlr4ts-runtime-xpath && npm run antlr4ts-test-runtime && npm run antlr4ts-test-labels && npm run antlr4ts-test-pattern && npm run antlr4ts-test-rewriter && npm run antlr4ts-test-xpath && npm run antlr4ts-benchmark", - "antlr4ts-runtime-xpath": "cd src/tree/xpath && antlr4ts XPathLexer.g4 -DbaseImportPath=../..", - "antlr4ts-test-runtime": "cd test/runtime && antlr4ts TestGrammar.g4 -DbaseImportPath=../../../../src -o gen/typescript_only", - "antlr4ts-test-labels": "cd test/runtime/TestReferenceToListLabels && antlr4ts T.g4 -no-listener -DbaseImportPath=antlr4ts -o gen", - "antlr4ts-test-pattern": "cd test/tool && antlr4ts ParseTreeMatcherX1.g4 ParseTreeMatcherX2.g4 ParseTreeMatcherX3.g4 ParseTreeMatcherX4.g4 ParseTreeMatcherX5.g4 ParseTreeMatcherX6.g4 ParseTreeMatcherX7.g4 ParseTreeMatcherX8.g4 -no-listener -DbaseImportPath=../../../../src -o gen/matcher", - "antlr4ts-test-rewriter": "cd test/tool && antlr4ts RewriterLexer1.g4 RewriterLexer2.g4 RewriterLexer3.g4 -DbaseImportPath=../../../../src -o gen/rewriter", - "antlr4ts-test-xpath": "cd test/tool && antlr4ts TestXPath.g4 -no-listener -DbaseImportPath=../../../../src -o gen/xpath", - "antlr4ts-benchmark": "npm run antlr4ts-benchmark-graphemes && npm run antlr4ts-benchmark-std && npm run antlr4ts-benchmark-std-atn && npm run antlr4ts-benchmark-lr && npm run antlr4ts-benchmark-lr-atn", - "antlr4ts-benchmark-graphemes": "cd benchmark && antlr4ts -visitor Graphemes.g4 -DbaseImportPath=../../src -o gen", - "antlr4ts-benchmark-std": "cd benchmark && antlr4ts -visitor Java.g4 -DbaseImportPath=../../../src -o gen/std", - "antlr4ts-benchmark-std-atn": "cd benchmark && antlr4ts -visitor -Xforce-atn Java.g4 -DbaseImportPath=../../../src -o gen/std-atn", - "antlr4ts-benchmark-lr": "cd benchmark && antlr4ts -visitor JavaLR.g4 -DbaseImportPath=../../../src -o gen/lr", - "antlr4ts-benchmark-lr-atn": "cd benchmark && antlr4ts -visitor -Xforce-atn JavaLR.g4 -DbaseImportPath=../../../src -o gen/lr-atn", "tslint": "npm run tslint-runtime && npm run tslint-tests", "tslint-runtime": "tslint -p ./tsconfig.json", "tslint-tests": "tslint -p ./test/runtime/tsconfig.json", - "tsc": "tsc", + "tsc": "echo tsc", "tsc-watch": "tsc -w -p .", - "buildrts": "cd test/runtime && tsc", "test": "mocha", "cover": "nyc --reporter=none mocha --timeout=10000", "postcover": "nyc report --reporter=html", @@ -66,22 +57,11 @@ }, "homepage": "https://github.com/tunnelvisionlabs/antlr4ts#readme", "devDependencies": { - "@deboxsoft/cpx": "^1.5.0", - "@types/mocha": "^5.2.0", - "@types/node": "^10.12.10", - "@types/source-map-support": "^0.4.0", - "@types/std-mocks": "^1.0.0", - "antlr4ts": "./target/src", - "antlr4ts-cli": "./tool", - "codecov": "^3.6.5", - "mocha": "^5.2.0", - "mocha-typescript": "^1.1.14", - "nyc": "^15.0.0", - "source-map-support": "^0.5.6", - "std-mocks": "^1.0.1", - "tslint": "^5.11.0", - "typedoc": "^0.15.2", - "typescript": "^2.8.3" + "lerna": "^3.20.2", + "mocha": "^7.1.1" }, - "dependencies": {} + "dependencies": { + "@types/source-map-support": "^0.5.1", + "source-map-support": "^0.5.16" + } } diff --git a/package.old b/package.old new file mode 100644 index 00000000..43b39604 --- /dev/null +++ b/package.old @@ -0,0 +1,77 @@ +{ + "name": "antlr4ts-root", + "version": "0.5.0-dev", + "description": "Root project for ANTLR 4 runtime for Typescript", + "private": true, + "main": "index.js", + "scripts": { + "prepare": "lerna bootstrap", + "preparexx": "npm run unlink && npm run build-tool && npm run build-runtime && npm run build-benchmark", + "unlink": "npm uninstall -g antlr4ts antlr4ts-cli", + "build-tool": "cd tool && npm install", + "build-runtime": "cd runtime && npm install", + "build-benchmark": "cd benchmark && npm install", + "build-test": "cd test && npm install", + "build-rts": "cd test/runtime && tsc", + "reinstall": "npm run unlink && git clean -idx && npm install", + "tslint": "npm run tslint-runtime && npm run tslint-tests", + "tslint-runtime": "tslint -p ./tsconfig.json", + "tslint-tests": "tslint -p ./test/runtime/tsconfig.json", + "tsc": "echo tsc", + "tsc-watch": "tsc -w -p .", + "test": "mocha", + "cover": "nyc --reporter=none mocha --timeout=10000", + "postcover": "nyc report --reporter=html", + "dev-test-watch": "mocha-typescript-watch", + "typedoc": "typedoc --ignoreCompilerErrors --out doc src --name antlr4ts", + "prepack": "npm run pack-tool && npm run pack-runtime", + "pack-tool": "npm pack ./tool", + "copy-runtime-extras": "cpx README.md target/src && cpx LICENSE target/src", + "pack-runtime": "npm run copy-runtime-extras && npm pack ./target/src", + "prebenchmark": "npm run antlr4ts-benchmark && tsc", + "benchmark": "npm run benchmark-core", + "benchmark-core": "node target/benchmark/TestPerformance.js", + "prebenchmark-lexer": "npm run antlr4ts-benchmark-graphemes && tsc", + "benchmark-lexer": "npm run benchmark-lexer-core", + "benchmark-lexer-core": "node target/benchmark/TimeLexerSpeed.js", + "preprofile": "npm run antlr4ts-benchmark && tsc", + "profile": "npm run profile-core", + "profile-core": "node --prof target/benchmark/TestPerformance.js", + "preprofile-lexer": "npm run antlr4ts-benchmark-graphemes && tsc", + "profile-lexer": "npm run profile-lexer-core", + "profile-lexer-core": "node --prof target/benchmark/TimeLexerSpeed.js" + }, + "sideEffects": false, + "repository": { + "type": "git", + "url": "git+https://github.com/tunnelvisionlabs/antlr4ts.git" + }, + "keywords": [ + "ANTLR4", + "typescript" + ], + "author": "Terence Parr, Sam Harwell, and Burt Harris", + "license": "BSD-3-Clause", + "bugs": { + "url": "https://github.com/tunnelvisionlabs/antlr4ts/issues" + }, + "homepage": "https://github.com/tunnelvisionlabs/antlr4ts#readme", + "dependencies": {}, + "devDependencies": { + "@deboxsoft/cpx": "^1.5.0", + "@types/mocha": "^5.2.0", + "@types/node": "^10.12.10", + "@types/source-map-support": "^0.4.0", + "@types/std-mocks": "^1.0.0", + "codecov": "^3.6.5", + "lerna": "^3.20.2", + "mocha": "^5.2.0", + "mocha-typescript": "^1.1.14", + "nyc": "^15.0.0", + "source-map-support": "^0.5.6", + "std-mocks": "^1.0.1", + "tslint": "^5.11.0", + "typedoc": "^0.15.2", + "typescript": "2.8.3" + } +} diff --git a/target/src/.npmignore b/runtime/typescript/.npmignore similarity index 100% rename from target/src/.npmignore rename to runtime/typescript/.npmignore diff --git a/runtime/typescript/atn.js b/runtime/typescript/atn.js new file mode 100644 index 00000000..e2b96031 --- /dev/null +++ b/runtime/typescript/atn.js @@ -0,0 +1 @@ +export * from "./dist/atn/index.js" diff --git a/runtime/typescript/dfa.js b/runtime/typescript/dfa.js new file mode 100644 index 00000000..dde8b3ce --- /dev/null +++ b/runtime/typescript/dfa.js @@ -0,0 +1 @@ +export * from "./dist/dfa/index.js" diff --git a/runtime/typescript/package-lock.json b/runtime/typescript/package-lock.json new file mode 100644 index 00000000..b8bf50f7 --- /dev/null +++ b/runtime/typescript/package-lock.json @@ -0,0 +1,33 @@ +{ + "name": "antlr4ts", + "version": "0.5.0-dev", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "typescript": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", + "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", + "dev": true + } + } +} diff --git a/target/src/package.json b/runtime/typescript/package.json similarity index 59% rename from target/src/package.json rename to runtime/typescript/package.json index 5735a32f..717ae74c 100644 --- a/target/src/package.json +++ b/runtime/typescript/package.json @@ -2,8 +2,12 @@ "name": "antlr4ts", "version": "0.5.0-dev", "description": "ANTLR 4 runtime for JavaScript written in Typescript", - "main": "index.js", - "scripts": {}, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "prepare": "npm run antlr && tsc -p .", + "antlr": "cd ../../src/tree/xpath && antlr4ts XPathLexer.g4 -DbaseImportPath=../.." + }, "repository": { "type": "git", "url": "git+https://github.com/tunnelvisionlabs/antlr4ts.git" @@ -18,6 +22,11 @@ "url": "https://github.com/tunnelvisionlabs/antlr4ts/issues" }, "homepage": "https://github.com/tunnelvisionlabs/antlr4ts#readme", - "devDependencies": {}, - "dependencies": {} + "devDependencies": { + "antlr4ts-cli": "^0.5.0-dev", + "typescript": "^2.8.3" + }, + "dependencies": { + "source-map-support": "^0.5.16" + } } diff --git a/runtime/typescript/tree.js b/runtime/typescript/tree.js new file mode 100644 index 00000000..a73dc268 --- /dev/null +++ b/runtime/typescript/tree.js @@ -0,0 +1 @@ +export * from "./dist/tree/index.js" diff --git a/runtime/typescript/tsconfig.json b/runtime/typescript/tsconfig.json new file mode 100644 index 00000000..119f5e7b --- /dev/null +++ b/runtime/typescript/tsconfig.json @@ -0,0 +1,31 @@ +{ + "include": [ + "../../src/**/*.ts" + ], + "exclude": [ + "dist", + "node_modules", + "target", + "tool", + "test/runtime" + ], + "compilerOptions": { + "outDir": "dist", + "sourceMap": true, + "inlineSources": true, + "module": "commonjs", + "target": "es2015", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "experimentalDecorators": true, + "declaration": true, + "preserveConstEnums": true, + "types": [ + "node" + ] + } +} diff --git a/runtime/typescript/util.js b/runtime/typescript/util.js new file mode 100644 index 00000000..6afa01ae --- /dev/null +++ b/runtime/typescript/util.js @@ -0,0 +1 @@ +export * from "./dist/util/index.jss" diff --git a/src/index.ts b/src/index.ts index 316e8483..131c65d7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,10 @@ * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information. */ +export * from "./atn"; +export * from "./dfa"; +export * from "./misc"; +export * from "./tree"; export * from "./ANTLRErrorListener"; export * from "./ANTLRErrorStrategy"; // export * from "./ANTLRFileStream"; @@ -17,6 +21,7 @@ export * from "./CommonToken"; export * from "./CommonTokenFactory"; export * from "./CommonTokenStream"; export * from "./ConsoleErrorListener"; +export * from "./Decorators"; export * from "./DefaultErrorStrategy"; export * from "./Dependents"; export * from "./DiagnosticErrorListener"; diff --git a/src/misc/index.ts b/src/misc/index.ts index 2ec5695b..87503d54 100644 --- a/src/misc/index.ts +++ b/src/misc/index.ts @@ -26,6 +26,7 @@ export * from "./MurmurHash"; export * from "./ObjectEqualityComparator"; // export * from "./OrderedHashSet"; export * from "./ParseCancellationException"; +export * from "./Stubs"; // export * from "./RuleDependencyChecker"; // export * from "./RuleDependencyProcessor"; export * from "./Utils"; diff --git a/src/tree/index.ts b/src/tree/index.ts index 90ef09c7..8dcf5faa 100644 --- a/src/tree/index.ts +++ b/src/tree/index.ts @@ -15,3 +15,5 @@ export * from "./SyntaxTree"; export * from "./TerminalNode"; export * from "./Tree"; export * from "./Trees"; +export * from "./xpath"; +export * from "./pattern"; diff --git a/test/TestArray2DHashSet.ts b/test/TestArray2DHashSet.ts index 51c92b80..3bef4851 100644 --- a/test/TestArray2DHashSet.ts +++ b/test/TestArray2DHashSet.ts @@ -3,15 +3,14 @@ * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information. */ -import {Equatable} from "../src/misc/Stubs"; -import {Array2DHashSet} from "../src/misc/Array2DHashSet"; -import {MurmurHash} from "../src/misc/MurmurHash"; +import { Array2DHashSet } from "antlr4ts"; +import { MurmurHash } from "antlr4ts"; import { suite, test } from "mocha-typescript"; import * as assert from "assert"; -class EquatableTest implements Equatable { +class EquatableTest { - constructor( public a: string, public b: string ){} + constructor(public a: string, public b: string) { } public equals(o: any) { if (this === o) { @@ -36,18 +35,18 @@ const beta = new EquatableTest("beta", "1"); describe("EquatableTest", () => { it("should respect identity", () => { - assert( alpha.equals(alpha)); - assert( alpha_again.equals(alpha_again)); - assert( beta.equals(beta)); + assert(alpha.equals(alpha)); + assert(alpha_again.equals(alpha_again)); + assert(beta.equals(beta)); }); it("should compare equality by value", () => { - assert( alpha.equals(alpha_again)); - assert( alpha_again.equals(alpha)); + assert(alpha.equals(alpha_again)); + assert(alpha_again.equals(alpha)); }); it("should detect difference by value", () => { - assert( !alpha.equals(beta)); + assert(!alpha.equals(beta)); }); it("should hash identical values the same", () => { @@ -65,10 +64,10 @@ describe("Array2DHashSet", () => { beforeEach(() => { set = new Array2DHashSet(); }); it("shoud count entities", () => { - assert( set.isEmpty ); - assert.strictEqual( set.size, 0 ); + assert(set.isEmpty); + assert.strictEqual(set.size, 0); set.add(alpha); - assert( !set.isEmpty); + assert(!set.isEmpty); assert.strictEqual(set.size, 1); set.add(beta); assert.strictEqual(set.size, 2); diff --git a/test/TestTokenStream.ts b/test/TestTokenStream.ts index 199373f5..18c6e358 100644 --- a/test/TestTokenStream.ts +++ b/test/TestTokenStream.ts @@ -3,10 +3,10 @@ * Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information. */ -import { BufferedTokenStream } from "../src/BufferedTokenStream"; -import { CharStreams } from "../src/CharStreams"; -import { Token } from "../src/Token"; -import { XPathLexer } from "../src/tree/xpath/XPathLexer"; +import { BufferedTokenStream } from "antlr4ts"; +import { CharStreams } from "antlr4ts"; +import { Token } from "antlr4ts"; +import { XPathLexer } from "antlr4ts"; import { suite, test } from "mocha-typescript"; diff --git a/test/mocha.opts b/test/mocha.opts index f07c5b4e..d432d9a4 100644 --- a/test/mocha.opts +++ b/test/mocha.opts @@ -1,3 +1,3 @@ --require source-map-support/register --recursive -target/test \ No newline at end of file +test/test \ No newline at end of file diff --git a/test/package-lock.json b/test/package-lock.json new file mode 100644 index 00000000..0780f099 --- /dev/null +++ b/test/package-lock.json @@ -0,0 +1,1351 @@ +{ + "name": "antlr4ts-test", + "version": "0.5.0-dev", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", + "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", + "dev": true + }, + "@types/node": { + "version": "13.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", + "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", + "dev": true + }, + "@types/std-mocks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/std-mocks/-/std-mocks-1.0.0.tgz", + "integrity": "sha512-0PDd05AK/u41wFxr0ytOYhQz15uAhkmwe8fOp33UN506zGARdLVx/Yc/WSeGs+8zKjMMTp1vlB+OXGwD7HmImg==", + "dev": true + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz", + "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.3", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + } + }, + "mocha-typescript": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/mocha-typescript/-/mocha-typescript-1.1.17.tgz", + "integrity": "sha512-Ge6pCQkZumkkhxVNdAf3JxunskShgaynCb30HYD7TT1Yhog/7NW2+6w5RcRHI+nuQrCMTX6z1+qf2pD8qwCoQA==", + "dev": true, + "requires": { + "@types/mocha": "^5.2.0", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "yargs": "^11.0.0" + }, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "std-mocks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/std-mocks/-/std-mocks-1.0.1.tgz", + "integrity": "sha1-0ziIdte+66PHD72OK8r0brB9ef4=", + "dev": true, + "requires": { + "lodash": "^4.11.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + } + } +} diff --git a/test/package.json b/test/package.json new file mode 100644 index 00000000..51ade9e7 --- /dev/null +++ b/test/package.json @@ -0,0 +1,45 @@ +{ + "name": "antlr4ts-test", + "private": true, + "version": "0.5.0-dev", + "description": "ANTLR 4 test suite for JavaScript written in Typescript", + "scripts": { + "prepare": "npm run antlr && npm run tsc", + "antlr": "npm run antlr4ts-test-runtime && npm run antlr4ts-test-labels && npm run antlr4ts-test-pattern && npm run antlr4ts-test-rewriter && npm run antlr4ts-test-xpath", + "antlr4ts-test-runtime": "cd runtime && antlr4ts TestGrammar.g4 -o gen/typescript_only", + "antlr4ts-test-labels": "cd runtime/TestReferenceToListLabels && antlr4ts T.g4 -no-listener -o gen", + "antlr4ts-test-pattern": "cd tool && antlr4ts ParseTreeMatcherX1.g4 ParseTreeMatcherX2.g4 ParseTreeMatcherX3.g4 ParseTreeMatcherX4.g4 ParseTreeMatcherX5.g4 ParseTreeMatcherX6.g4 ParseTreeMatcherX7.g4 ParseTreeMatcherX8.g4 -no-listener -o gen/matcher", + "antlr4ts-test-rewriter": "cd tool && antlr4ts RewriterLexer1.g4 RewriterLexer2.g4 RewriterLexer3.g4 -o gen/rewriter", + "antlr4ts-test-xpath": "cd tool && antlr4ts TestXPath.g4 -no-listener -o gen/xpath", + "tsc": "tsc -p .", + "test": "mocha ." + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tunnelvisionlabs/antlr4ts.git" + }, + "keywords": [ + "ANTLR4", + "typescript" + ], + "author": "Terence Parr, Sam Harwell, and Burt Harris", + "license": "BSD-3-Clause", + "bugs": { + "url": "https://github.com/tunnelvisionlabs/antlr4ts/issues" + }, + "homepage": "https://github.com/tunnelvisionlabs/antlr4ts#readme", + "devDependencies": { + "@types/mocha": "^7.0.2", + "@types/node": "^13.11.1", + "@types/std-mocks": "^1.0.0", + "antlr4ts": "0.5.0-dev", + "antlr4ts-cli": "0.5.0-dev", + "mocha": "^7.1.1", + "mocha-typescript": "^1.1.17", + "std-mocks": "^1.0.1", + "typescript": "^2.8.3" + }, + "dependencies": { + "source-map-support": "^0.5.16" + } +} diff --git a/test/runtime/BaseTest.ts b/test/runtime/BaseTest.ts index 4867b63b..792522d6 100644 --- a/test/runtime/BaseTest.ts +++ b/test/runtime/BaseTest.ts @@ -7,17 +7,17 @@ import * as assert from "assert"; import * as stdMocks from "std-mocks"; import { Console } from "console"; -import { CharStream } from "antlr4ts/CharStream"; -import { CharStreams } from "antlr4ts/CharStreams"; -import { CommonTokenStream } from "antlr4ts/CommonTokenStream"; -import { DiagnosticErrorListener } from "antlr4ts/DiagnosticErrorListener"; -import { Lexer } from "antlr4ts/Lexer"; -import { Parser } from "antlr4ts/Parser"; -import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; -import { ParseTree } from "antlr4ts/tree/ParseTree"; -import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; -import { ParseTreeWalker } from "antlr4ts/tree/ParseTreeWalker"; -import { RuleNode } from "antlr4ts/tree/RuleNode"; +import { CharStream } from "antlr4ts"; +import { CharStreams } from "antlr4ts"; +import { CommonTokenStream } from "antlr4ts"; +import { DiagnosticErrorListener } from "antlr4ts"; +import { Lexer } from "antlr4ts"; +import { Parser } from "antlr4ts"; +import { ParserRuleContext } from "antlr4ts"; +import { ParseTree } from "antlr4ts"; +import { ParseTreeListener } from "antlr4ts"; +import { ParseTreeWalker } from "antlr4ts"; +import { RuleNode } from "antlr4ts"; function trySetConsole(valueFactory: () => Console): boolean { try { @@ -33,7 +33,7 @@ function trySetConsole(valueFactory: () => Console): boolean { } } -function expectConsole( expectedOutput: string, expectedErrors: string, testFunction: () => void ) { +function expectConsole(expectedOutput: string, expectedErrors: string, testFunction: () => void) { let priorConsole = console; try { trySetConsole(() => new Console({ stdout: process.stdout, stderr: process.stderr, colorMode: false })); @@ -58,7 +58,7 @@ function expectConsole( expectedOutput: string, expectedErrors: string, testFunc export interface LexerTestOptions { testName: string; - lexer: new(s: CharStream) => Lexer; + lexer: new (s: CharStream) => Lexer; input: string; expectedOutput: string; expectedErrors: string; @@ -66,7 +66,7 @@ export interface LexerTestOptions { } export interface ParserTestOptions extends LexerTestOptions { - parser: new(s: CommonTokenStream) => TParser; + parser: new (s: CommonTokenStream) => TParser; parserStartRule: (parser: TParser) => ParseTree; debug: boolean; } @@ -86,7 +86,7 @@ export function lexerTest(options: LexerTestOptions) { const inputStream: CharStream = CharStreams.fromString(options.input); const lex = new options.lexer(inputStream); const tokens = new CommonTokenStream(lex); - expectConsole( options.expectedOutput, options.expectedErrors, () => { + expectConsole(options.expectedOutput, options.expectedErrors, () => { tokens.fill(); tokens.getTokens().forEach((t) => console.log(t.toString())); if (options.showDFA) { @@ -106,7 +106,7 @@ export function parserTest(options: ParserTestOptions { + expectConsole(options.expectedOutput, options.expectedErrors, () => { const tree = options.parserStartRule(parser); ParseTreeWalker.DEFAULT.walk(new TreeShapeListener(), tree); }); diff --git a/test/tsconfig.json b/test/tsconfig.json new file mode 100644 index 00000000..ee606e58 --- /dev/null +++ b/test/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "outDir": "dist", + "sourceMap": true, + "module": "commonjs", + "target": "es2015", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "experimentalDecorators": true, + "declaration": true, + "preserveConstEnums": true, + "types": [ + "node", + "mocha" + ] + }, + "exclude": [ + "node_modules", + "dist/**", + "target", + "tool", + "test/runtime" + ] +} diff --git a/tool/antlr4ts b/tool/antlr4ts index 6b9911e8..68a83689 100755 --- a/tool/antlr4ts +++ b/tool/antlr4ts @@ -1,3 +1,3 @@ #!/usr/bin/env node -require("antlr4ts-cli") +require("./index.js"); diff --git a/tool/package-lock.json b/tool/package-lock.json index bff1381f..7aa2c150 100644 --- a/tool/package-lock.json +++ b/tool/package-lock.json @@ -1,5 +1,27 @@ { "name": "antlr4ts-cli", "version": "0.5.0-dev", - "lockfileVersion": 1 + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } } diff --git a/tool/package.json b/tool/package.json index 54cac7ba..960b74be 100644 --- a/tool/package.json +++ b/tool/package.json @@ -3,6 +3,7 @@ "version": "0.5.0-dev", "preferGlobal": true, "description": "ANTLR 4 command line tool for TypeScript", + "main": "index.js", "files": [ "LICENSE", "target/antlr4-typescript-4.7.3-SNAPSHOT-complete.jar", @@ -13,7 +14,8 @@ "antlr4ts": "./antlr4ts" }, "scripts": { - "prepare": "mvn verify" + "prepare": "mvn verify", + "xxx": "mvn verify -Dmaven.test.skip=true" }, "repository": { "type": "git", @@ -29,5 +31,8 @@ "bugs": { "url": "https://github.com/tunnelvisionlabs/antlr4ts/issues" }, - "homepage": "https://github.com/tunnelvisionlabs/antlr4ts/tool#readme" + "homepage": "https://github.com/tunnelvisionlabs/antlr4ts/tool#readme", + "dependencies": { + "source-map-support": "^0.5.16" + } } diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg index 74d7c606..642169ad 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg @@ -20,27 +20,27 @@ ParserFile(file, parser, namedActions, contextSuperClass) ::= << -import { ATN } from "/atn/ATN"; -import { ATNDeserializer } from "/atn/ATNDeserializer"; -import { FailedPredicateException } from "/FailedPredicateException"; -import { NotNull } from "/Decorators"; -import { NoViableAltException } from "/NoViableAltException"; -import { Override } from "/Decorators"; -import { Parser } from "/Parser"; -import { ParserRuleContext } from "/ParserRuleContext"; -import { ParserATNSimulator } from "/atn/ParserATNSimulator"; -import { ParseTreeListener } from "/tree/ParseTreeListener"; -import { ParseTreeVisitor } from "/tree/ParseTreeVisitor"; -import { RecognitionException } from "/RecognitionException"; -import { RuleContext } from "/RuleContext"; -//import { RuleVersion } from "/RuleVersion"; -import { TerminalNode } from "/tree/TerminalNode"; -import { Token } from "/Token"; -import { TokenStream } from "/TokenStream"; -import { Vocabulary } from "/Vocabulary"; -import { VocabularyImpl } from "/VocabularyImpl"; - -import * as Utils from "/misc/Utils"; +import { ATN } from ""; +import { ATNDeserializer } from ""; +import { FailedPredicateException } from ""; +import { NotNull } from ""; +import { NoViableAltException } from ""; +import { Override } from ""; +import { Parser } from ""; +import { ParserRuleContext } from ""; +import { ParserATNSimulator } from ""; +import { ParseTreeListener } from ""; +import { ParseTreeVisitor } from ""; +import { RecognitionException } from ""; +import { RuleContext } from ""; +//import { RuleVersion } from ""; +import { TerminalNode } from ""; +import { Token } from ""; +import { TokenStream } from ""; +import { Vocabulary } from ""; +import { VocabularyImpl } from ""; + +import * as Utils from ""; import { Listener } from "./Listener"; @@ -61,7 +61,7 @@ ListenerFile(file, header, namedActions) ::= <<

-import { ParseTreeListener } from "/tree/ParseTreeListener"; +import { ParseTreeListener } from ""; Context \} from "./";}; separator="\n"> @@ -103,7 +103,7 @@ VisitorFile(file, header, namedActions) ::= <<
-import { ParseTreeVisitor } from "/tree/ParseTreeVisitor"; +import { ParseTreeVisitor } from ""; Context \} from "./";}; separator="\n"> @@ -868,18 +868,18 @@ LexerFile(file, lexer, namedActions) ::= << -import { ATN } from "/atn/ATN"; -import { ATNDeserializer } from "/atn/ATNDeserializer"; -import { CharStream } from "/CharStream"; -import { Lexer } from "/Lexer"; -import { LexerATNSimulator } from "/atn/LexerATNSimulator"; -import { NotNull } from "/Decorators"; -import { Override } from "/Decorators"; -import { RuleContext } from "/RuleContext"; -import { Vocabulary } from "/Vocabulary"; -import { VocabularyImpl } from "/VocabularyImpl"; - -import * as Utils from "/misc/Utils"; +import { ATN } from ""; +import { ATNDeserializer } from ""; +import { CharStream } from ""; +import { Lexer } from ""; +import { LexerATNSimulator } from ""; +import { NotNull } from ""; +import { Override } from ""; +import { RuleContext } from ""; +import { Vocabulary } from ""; +import { VocabularyImpl } from ""; + +import * as Utils from ""; diff --git a/tool/test/org/antlr/v4/test/runtime/typescript/TypeScript.test.stg b/tool/test/org/antlr/v4/test/runtime/typescript/TypeScript.test.stg index 4f8cc737..d374cc6f 100644 --- a/tool/test/org/antlr/v4/test/runtime/typescript/TypeScript.test.stg +++ b/tool/test/org/antlr/v4/test/runtime/typescript/TypeScript.test.stg @@ -223,21 +223,21 @@ ImportListener(X) ::= "" ImportVisitor(grammarName) ::= << @parser::header { -import { AbstractParseTreeVisitor } from "antlr4ts/tree/AbstractParseTreeVisitor"; -import { RuleNode } from "antlr4ts/tree/RuleNode"; -import { ErrorNode } from "antlr4ts/tree/ErrorNode"; +import { AbstractParseTreeVisitor } from "antlr4ts"; +import { RuleNode } from "antlr4ts"; +import { ErrorNode } from "antlr4ts"; } >> ImportPredictionMode() ::= << @beforeParser { -import { PredictionMode } from "antlr4ts/atn/PredictionMode"; +import { PredictionMode } from "antlr4ts"; } >> ImportBailErrorStrategy() ::= << @beforeParser { -import { BailErrorStrategy } from "antlr4ts/BailErrorStrategy"; +import { BailErrorStrategy } from "antlr4ts"; } >> @@ -352,7 +352,7 @@ export class PositionAdjustingLexerATNSimulator extends LexerATNSimulator { BasicListener(X) ::= << @parser::beforeParser { -import { ParseTreeWalker } from "antlr4ts/tree/ParseTreeWalker"; +import { ParseTreeWalker } from "antlr4ts"; } @parser::afterParser { @@ -370,7 +370,7 @@ ParseTreeWalker.DEFAULT.walk\(new LeafListener(), ); TreeNodeWithAltNumField(X) ::= << @parser::beforeParser { -import { ParserRuleContext as PRC } from "antlr4ts/ParserRuleContext"; +import { ParserRuleContext as PRC } from "antlr4ts"; export class MyRuleNode extends PRC { private altNum: number; @@ -386,7 +386,7 @@ export class MyRuleNode extends PRC { TokenGetterListener(X) ::= << @parser::beforeParser { -import { ParseTreeWalker } from "antlr4ts/tree/ParseTreeWalker"; +import { ParseTreeWalker } from "antlr4ts"; } @parser::afterParser { @@ -405,7 +405,7 @@ export class LeafListener implements TListener { RuleGetterListener(X) ::= << @parser::beforeParser { -import { ParseTreeWalker } from "antlr4ts/tree/ParseTreeWalker"; +import { ParseTreeWalker } from "antlr4ts"; } @parser::afterParser { @@ -424,7 +424,7 @@ export class LeafListener implements TListener { LRListener(X) ::= << @parser::beforeParser { -import { ParseTreeWalker } from "antlr4ts/tree/ParseTreeWalker"; +import { ParseTreeWalker } from "antlr4ts"; } @parser::afterParser { @@ -443,7 +443,7 @@ export class LeafListener implements TListener { LRWithLabelsListener(X) ::= << @parser::beforeParser { -import { ParseTreeWalker } from "antlr4ts/tree/ParseTreeWalker"; +import { ParseTreeWalker } from "antlr4ts"; } @parser::afterParser { diff --git a/tsconfig.json b/tsconfig.json index 1c42583d..d868e0e9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,15 @@ { + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "node_modules", + "test", + "benchmark", + "target", + "tool", + "test/runtime" + ], "compilerOptions": { "outDir": "target", "sourceMap": true, @@ -21,11 +32,5 @@ "node", "mocha" ] - }, - "exclude": [ - "node_modules", - "target", - "tool", - "test/runtime" - ] + } } From 5078dfeb73a28cf8c0736c597fc521432a86a0f3 Mon Sep 17 00:00:00 2001 From: Burt Harris Date: Wed, 15 Apr 2020 16:24:44 -0700 Subject: [PATCH 05/59] Move custom tool under tool/typescript --- .gitignore | 2 +- lerna.json | 2 +- tool/{ => typescript}/LICENSE | 0 tool/{ => typescript}/README.md | 0 tool/{ => typescript}/antlr4ts | 0 tool/{ => typescript}/index.js | 0 tool/{ => typescript}/package-lock.json | 0 tool/{ => typescript}/package.json | 0 tool/{ => typescript}/pom.xml | 0 .../codegen/TypeScript/TypeScript.stg | 0 .../src/org/antlr/v4/TypeScriptTool.java | 0 .../v4/codegen/target/TypeScriptTarget.java | 0 ...script-4.7.3-SNAPSHOT-complete-sources.jar | Bin 0 -> 1968166 bytes ...lr4-typescript-4.7.3-SNAPSHOT-complete.jar | Bin 0 -> 1832386 bytes .../antlr4-typescript-4.7.3-SNAPSHOT.jar | Bin 0 -> 17790 bytes .../classes/org/antlr/v4/TypeScriptTool.class | Bin 0 -> 3275 bytes .../codegen/target/TypeScriptTarget$1.class | Bin 0 -> 1859 bytes .../v4/codegen/target/TypeScriptTarget.class | Bin 0 -> 4646 bytes .../codegen/TypeScript/TypeScript.stg | 988 ++++ .../v4/test/runtime/TestBaseContext.java | 444 ++ .../v4/test/runtime/TestCompositeLexers.java | 68 + .../v4/test/runtime/TestCompositeParsers.java | 457 ++ .../test/runtime/TestFullContextParsing.java | 892 +++ .../v4/test/runtime/TestLeftRecursion.java | 3240 +++++++++++ .../v4/test/runtime/TestLexerErrors.java | 236 + .../antlr/v4/test/runtime/TestLexerExec.java | 4987 +++++++++++++++++ .../antlr/v4/test/runtime/TestListeners.java | 367 ++ .../antlr/v4/test/runtime/TestParseTrees.java | 321 ++ .../v4/test/runtime/TestParserErrors.java | 688 +++ .../antlr/v4/test/runtime/TestParserExec.java | 865 +++ .../v4/test/runtime/TestPerformance.java | 461 ++ .../v4/test/runtime/TestSemPredEvalLexer.java | 230 + .../test/runtime/TestSemPredEvalParser.java | 713 +++ .../org/antlr/v4/test/runtime/TestSets.java | 603 ++ .../antlr/v4/test/runtime/TestVisitors.java | 307 + .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 3 + .../compile/default-compile/inputFiles.lst | 2 + .../default-testCompile/createdFiles.lst | 18 + .../default-testCompile/inputFiles.lst | 18 + ....antlr.v4.test.runtime.TestBaseContext.xml | 79 + ...lr.v4.test.runtime.TestCompositeLexers.xml | 69 + ...r.v4.test.runtime.TestCompositeParsers.xml | 82 + ...v4.test.runtime.TestFullContextParsing.xml | 92 + ...ntlr.v4.test.runtime.TestLeftRecursion.xml | 165 + ....antlr.v4.test.runtime.TestLexerErrors.xml | 79 + ...rg.antlr.v4.test.runtime.TestLexerExec.xml | 105 + ...rg.antlr.v4.test.runtime.TestListeners.xml | 74 + ...g.antlr.v4.test.runtime.TestParseTrees.xml | 77 + ...antlr.v4.test.runtime.TestParserErrors.xml | 101 + ...g.antlr.v4.test.runtime.TestParserExec.xml | 104 + ....antlr.v4.test.runtime.TestPerformance.xml | 76 + ...r.v4.test.runtime.TestSemPredEvalLexer.xml | 75 + ....v4.test.runtime.TestSemPredEvalParser.xml | 93 + ...EST-org.antlr.v4.test.runtime.TestSets.xml | 99 + ...org.antlr.v4.test.runtime.TestVisitors.xml | 72 + ....antlr.v4.test.runtime.TestBaseContext.txt | 4 + ...lr.v4.test.runtime.TestCompositeLexers.txt | 4 + ...r.v4.test.runtime.TestCompositeParsers.txt | 4 + ...v4.test.runtime.TestFullContextParsing.txt | 4 + ...ntlr.v4.test.runtime.TestLeftRecursion.txt | 4 + ....antlr.v4.test.runtime.TestLexerErrors.txt | 4 + ...rg.antlr.v4.test.runtime.TestLexerExec.txt | 4 + ...rg.antlr.v4.test.runtime.TestListeners.txt | 4 + ...g.antlr.v4.test.runtime.TestParseTrees.txt | 4 + ...antlr.v4.test.runtime.TestParserErrors.txt | 4 + ...g.antlr.v4.test.runtime.TestParserExec.txt | 4 + ....antlr.v4.test.runtime.TestPerformance.txt | 4 + ...r.v4.test.runtime.TestSemPredEvalLexer.txt | 4 + ....v4.test.runtime.TestSemPredEvalParser.txt | 4 + .../org.antlr.v4.test.runtime.TestSets.txt | 4 + ...org.antlr.v4.test.runtime.TestVisitors.txt | 4 + .../v4/test/runtime/TestBaseContext.class | Bin 0 -> 7808 bytes .../v4/test/runtime/TestCompositeLexers.class | Bin 0 -> 2066 bytes .../test/runtime/TestCompositeParsers.class | Bin 0 -> 10585 bytes .../test/runtime/TestFullContextParsing.class | Bin 0 -> 15673 bytes .../v4/test/runtime/TestLeftRecursion.class | Bin 0 -> 54479 bytes .../v4/test/runtime/TestLexerErrors.class | Bin 0 -> 5551 bytes .../antlr/v4/test/runtime/TestLexerExec.class | Bin 0 -> 177842 bytes .../antlr/v4/test/runtime/TestListeners.class | Bin 0 -> 6987 bytes .../v4/test/runtime/TestParseTrees.class | Bin 0 -> 6387 bytes .../v4/test/runtime/TestParserErrors.class | Bin 0 -> 14009 bytes .../v4/test/runtime/TestParserExec.class | Bin 0 -> 15687 bytes .../v4/test/runtime/TestPerformance.class | Bin 0 -> 26645 bytes .../test/runtime/TestSemPredEvalLexer.class | Bin 0 -> 5188 bytes .../test/runtime/TestSemPredEvalParser.class | Bin 0 -> 14958 bytes .../org/antlr/v4/test/runtime/TestSets.class | Bin 0 -> 11314 bytes .../antlr/v4/test/runtime/TestVisitors.class | Bin 0 -> 6987 bytes .../v4/test/runtime/typescript/BaseTest.class | Bin 0 -> 11462 bytes .../v4/test/runtime/typescript/BaseTest.java | 0 .../test/runtime/typescript/ErrorQueue.class | Bin 0 -> 3055 bytes .../test/runtime/typescript/ErrorQueue.java | 0 .../runtime/typescript/TypeScript.test.stg | 0 .../v4/test/runtime/typescript/package.json | 0 .../v4/test/runtime/typescript/tsconfig.json | 0 .../v4/test/runtime/typescript/BaseTest.java | 314 ++ .../test/runtime/typescript/ErrorQueue.java | 82 + .../runtime/typescript/TypeScript.test.stg | 639 +++ .../v4/test/runtime/typescript/package.json | 18 + .../v4/test/runtime/typescript/tsconfig.json | 27 + tool/{ => typescript}/tsconfig.json | 0 101 files changed, 18501 insertions(+), 2 deletions(-) rename tool/{ => typescript}/LICENSE (100%) rename tool/{ => typescript}/README.md (100%) rename tool/{ => typescript}/antlr4ts (100%) mode change 100755 => 100644 rename tool/{ => typescript}/index.js (100%) rename tool/{ => typescript}/package-lock.json (100%) rename tool/{ => typescript}/package.json (100%) rename tool/{ => typescript}/pom.xml (100%) rename tool/{ => typescript}/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg (100%) rename tool/{ => typescript}/src/org/antlr/v4/TypeScriptTool.java (100%) rename tool/{ => typescript}/src/org/antlr/v4/codegen/target/TypeScriptTarget.java (100%) create mode 100644 tool/typescript/target/antlr4-typescript-4.7.3-SNAPSHOT-complete-sources.jar create mode 100644 tool/typescript/target/antlr4-typescript-4.7.3-SNAPSHOT-complete.jar create mode 100644 tool/typescript/target/antlr4-typescript-4.7.3-SNAPSHOT.jar create mode 100644 tool/typescript/target/classes/org/antlr/v4/TypeScriptTool.class create mode 100644 tool/typescript/target/classes/org/antlr/v4/codegen/target/TypeScriptTarget$1.class create mode 100644 tool/typescript/target/classes/org/antlr/v4/codegen/target/TypeScriptTarget.class create mode 100644 tool/typescript/target/classes/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestBaseContext.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestCompositeLexers.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestCompositeParsers.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestFullContextParsing.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestLeftRecursion.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestLexerErrors.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestLexerExec.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestListeners.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestParseTrees.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestParserErrors.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestParserExec.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestPerformance.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestSemPredEvalLexer.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestSemPredEvalParser.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestSets.java create mode 100644 tool/typescript/target/generated-test-sources/antlr4-tests/org/antlr/v4/test/runtime/TestVisitors.java create mode 100644 tool/typescript/target/maven-archiver/pom.properties create mode 100644 tool/typescript/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 tool/typescript/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 tool/typescript/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 tool/typescript/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestBaseContext.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestCompositeLexers.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestCompositeParsers.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestFullContextParsing.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestLeftRecursion.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestLexerErrors.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestLexerExec.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestListeners.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestParseTrees.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestParserErrors.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestParserExec.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestPerformance.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestSemPredEvalLexer.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestSemPredEvalParser.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestSets.xml create mode 100644 tool/typescript/target/surefire-reports/TEST-org.antlr.v4.test.runtime.TestVisitors.xml create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestBaseContext.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestCompositeLexers.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestCompositeParsers.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestFullContextParsing.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestLeftRecursion.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestLexerErrors.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestLexerExec.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestListeners.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestParseTrees.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestParserErrors.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestParserExec.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestPerformance.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestSemPredEvalLexer.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestSemPredEvalParser.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestSets.txt create mode 100644 tool/typescript/target/surefire-reports/org.antlr.v4.test.runtime.TestVisitors.txt create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestBaseContext.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestCompositeLexers.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestCompositeParsers.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestFullContextParsing.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestLeftRecursion.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestLexerErrors.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestLexerExec.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestListeners.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestParseTrees.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestParserErrors.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestParserExec.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestPerformance.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestSemPredEvalLexer.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestSemPredEvalParser.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestSets.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/TestVisitors.class create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/typescript/BaseTest.class rename tool/{test => typescript/target/test-classes}/org/antlr/v4/test/runtime/typescript/BaseTest.java (100%) create mode 100644 tool/typescript/target/test-classes/org/antlr/v4/test/runtime/typescript/ErrorQueue.class rename tool/{test => typescript/target/test-classes}/org/antlr/v4/test/runtime/typescript/ErrorQueue.java (100%) rename tool/{test => typescript/target/test-classes}/org/antlr/v4/test/runtime/typescript/TypeScript.test.stg (100%) rename tool/{test => typescript/target/test-classes}/org/antlr/v4/test/runtime/typescript/package.json (100%) rename tool/{test => typescript/target/test-classes}/org/antlr/v4/test/runtime/typescript/tsconfig.json (100%) create mode 100644 tool/typescript/test/org/antlr/v4/test/runtime/typescript/BaseTest.java create mode 100644 tool/typescript/test/org/antlr/v4/test/runtime/typescript/ErrorQueue.java create mode 100644 tool/typescript/test/org/antlr/v4/test/runtime/typescript/TypeScript.test.stg create mode 100644 tool/typescript/test/org/antlr/v4/test/runtime/typescript/package.json create mode 100644 tool/typescript/test/org/antlr/v4/test/runtime/typescript/tsconfig.json rename tool/{ => typescript}/tsconfig.json (100%) diff --git a/.gitignore b/.gitignore index 7c73e4d6..325f3386 100644 --- a/.gitignore +++ b/.gitignore @@ -42,7 +42,7 @@ jspm_packages/ /src/tree/xpath/XPathLexer.ts gen/ /target/ -/tool/target/ +/tool/typescript/target/ doc/ # Visual Studio build output and per-user files diff --git a/lerna.json b/lerna.json index 82ed6a0d..5f134ea2 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "packages": [ - "tool", + "tool/typescript", "runtime/typescript", "benchmark", "test" diff --git a/tool/LICENSE b/tool/typescript/LICENSE similarity index 100% rename from tool/LICENSE rename to tool/typescript/LICENSE diff --git a/tool/README.md b/tool/typescript/README.md similarity index 100% rename from tool/README.md rename to tool/typescript/README.md diff --git a/tool/antlr4ts b/tool/typescript/antlr4ts old mode 100755 new mode 100644 similarity index 100% rename from tool/antlr4ts rename to tool/typescript/antlr4ts diff --git a/tool/index.js b/tool/typescript/index.js similarity index 100% rename from tool/index.js rename to tool/typescript/index.js diff --git a/tool/package-lock.json b/tool/typescript/package-lock.json similarity index 100% rename from tool/package-lock.json rename to tool/typescript/package-lock.json diff --git a/tool/package.json b/tool/typescript/package.json similarity index 100% rename from tool/package.json rename to tool/typescript/package.json diff --git a/tool/pom.xml b/tool/typescript/pom.xml similarity index 100% rename from tool/pom.xml rename to tool/typescript/pom.xml diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg b/tool/typescript/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg similarity index 100% rename from tool/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg rename to tool/typescript/resources/org/antlr/v4/tool/templates/codegen/TypeScript/TypeScript.stg diff --git a/tool/src/org/antlr/v4/TypeScriptTool.java b/tool/typescript/src/org/antlr/v4/TypeScriptTool.java similarity index 100% rename from tool/src/org/antlr/v4/TypeScriptTool.java rename to tool/typescript/src/org/antlr/v4/TypeScriptTool.java diff --git a/tool/src/org/antlr/v4/codegen/target/TypeScriptTarget.java b/tool/typescript/src/org/antlr/v4/codegen/target/TypeScriptTarget.java similarity index 100% rename from tool/src/org/antlr/v4/codegen/target/TypeScriptTarget.java rename to tool/typescript/src/org/antlr/v4/codegen/target/TypeScriptTarget.java diff --git a/tool/typescript/target/antlr4-typescript-4.7.3-SNAPSHOT-complete-sources.jar b/tool/typescript/target/antlr4-typescript-4.7.3-SNAPSHOT-complete-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..c96aed8f6ef4c6a2599c41086afea9a51c1beae7 GIT binary patch literal 1968166 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ΩHmCG> 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