diff --git a/README.md b/README.md
index 5438ca6..3ca4f03 100644
--- a/README.md
+++ b/README.md
@@ -50,6 +50,7 @@ Particular codechecks can be distributed as **npm** packages and can be setup in
| Package | Version | Description |
| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| [`@codechecks/client`](/packages/client) | [](https://www.npmjs.com/package/@codechecks/client) | TypeScript/JavaScript client used for executing codechecks |
+| [`@codechecks/client`](/packages/utils) | [](https://www.npmjs.com/package/@codechecks/utils) | Utils to simplify codechecks plugins development |
Note: Currently we are in the process of open sourcing whole platform.
diff --git a/package.json b/package.json
index 24c6679..4e99566 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"license": "MIT",
"scripts": {
"prepare": "patch-package",
- "build": "rm -rf ./dist && tsc -p ./tsconfig.prod.json && (cd packages/client/ && yarn build)",
+ "build": "rm -rf ./dist && tsc -p ./tsconfig.prod.json && (cd packages/client/ && yarn build) && (cd packages/utils/ && yarn build)",
"tsc": "tsc -p . --noEmit && tsc -p ./tsconfig.prod.json --noEmit",
"tslint": "tslint -p ./tsconfig.json -e 'node_modules/**/*' -e '**/node_modules/**/*' 'packages/**/*.ts'",
"tslint:fix": "tslint --fix --format stylish -p ./tsconfig.json -e 'node_modules/**/*' -e '**/node_modules/**/*' 'packages/**/*.ts'",
@@ -30,7 +30,7 @@
"ts-node": "^7.0.1",
"tsconfig-paths": "^3.7.0",
"tslint": "^5.11.0",
- "typescript": "^3.1.6",
+ "typescript": "^3.6.3",
"typestrict": "^1.0.1",
"wsrun": "^5.0.0"
},
diff --git a/packages/client/package.json b/packages/client/package.json
index cca144d..5090445 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -21,7 +21,7 @@
"types": "dist/index.d.ts",
"license": "MIT",
"scripts": {
- "build": "rm -rf ./dist && cp -R '../../dist/client/' ./dist/ && cp -R ./src/js ./dist/js && chmod +x ./dist/runner.js",
+ "build": "rm -rf ./dist && cp -R '../../dist/client/src/' ./dist/ && cp -R ./src/js ./dist/js && chmod +x ./dist/runner.js",
"prepublishOnly": "cd ../../ && yarn build"
},
"dependencies": {
@@ -42,7 +42,7 @@
"promise": "^8.0.2",
"request": "^2.88.0",
"request-promise": "^4.2.2",
- "ts-essentials": "^1.0.2",
+ "ts-essentials": "^3.0.2",
"ts-node": "^8.0.2",
"url-join": "^4.0.0"
},
diff --git a/packages/client/src/file-handling/settings.ts b/packages/client/src/file-handling/settings.ts
index d57b220..014bdd7 100644
--- a/packages/client/src/file-handling/settings.ts
+++ b/packages/client/src/file-handling/settings.ts
@@ -3,7 +3,6 @@ import { join, extname } from "path";
import { existsSync } from "fs";
import { loadJson } from "../file-executors/executeJson";
import { loadYaml } from "../file-executors/executeYaml";
-import { DeepPartial } from "ts-essentials";
import { crash } from "../utils/errors";
const CODECHECKS_SETTINGS_FILES_NAMES = ["codechecks.yml", "codechecks.yaml", "codechecks.json"];
@@ -37,7 +36,7 @@ function loadSettingsFromFile(filePath: string): CodeChecksSettings | undefined
}
}
-function normalizeSettings(userProvidedSettings: DeepPartial = {}): CodeChecksSettings {
+function normalizeSettings(userProvidedSettings: Partial = {}): CodeChecksSettings {
return {
speculativeBranchSelection: userProvidedSettings.speculativeBranchSelection === false ? false : true,
branches: userProvidedSettings.branches || ["master"],
diff --git a/packages/utils/README.md b/packages/utils/README.md
new file mode 100644
index 0000000..7c343fe
--- /dev/null
+++ b/packages/utils/README.md
@@ -0,0 +1,13 @@
+
+
+
Code Checks Utils
+
+ Utils to simplify codechecks plugins development
+
+
+
+
+
+
+
+
diff --git a/packages/utils/package.json b/packages/utils/package.json
new file mode 100644
index 0000000..604577d
--- /dev/null
+++ b/packages/utils/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "@codechecks/utils",
+ "description": "Utils to simplify codechecks plugins development",
+ "keywords": [
+ "codechecks",
+ "utils"
+ ],
+ "repository": "codechecks/monorepo",
+ "author": "Chris Kaczor ",
+ "version": "0.1.2",
+ "main": "dist/index.js",
+ "bin": {
+ "codechecks": "dist/runner.js"
+ },
+ "types": "dist/index.d.ts",
+ "license": "MIT",
+ "scripts": {
+ "build": "rm -rf ./dist && cp -R '../../dist/utils/src/' ./dist/",
+ "prepublishOnly": "cd ../../ && yarn build"
+ },
+ "dependencies": {
+ "@types/debug": "^4.1.5",
+ "debug": "^4.1.1",
+ "execa": "^2.0.4",
+ "lodash": "^4.17.15",
+ "promise": "^8.0.2",
+ "promise-all": "^1.0.0",
+ "tmp-promise": "^2.0.2",
+ "ts-essentials": "^3.0.2",
+ "ts-node": "^8.0.2",
+ "url-join": "^4.0.0"
+ },
+ "devDependencies": {
+ "@types/lodash": "^4.14.138",
+ "@types/tmp": "^0.1.0"
+ },
+ "files": [
+ "dist/**/*"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+}
diff --git a/packages/utils/src/createDebug.ts b/packages/utils/src/createDebug.ts
new file mode 100644
index 0000000..e9bcd23
--- /dev/null
+++ b/packages/utils/src/createDebug.ts
@@ -0,0 +1,5 @@
+import * as debugLib from "debug";
+
+export function createDebug(name: string): debugLib.Debugger {
+ return debugLib(`codechecks:${name}`);
+}
diff --git a/packages/utils/src/execute.ts b/packages/utils/src/execute.ts
new file mode 100644
index 0000000..1f126c4
--- /dev/null
+++ b/packages/utils/src/execute.ts
@@ -0,0 +1,42 @@
+import * as execa from "execa";
+import { Readable } from "stream";
+import { createDebug } from "./createDebug";
+import { Debugger } from "debug";
+
+interface SharedOptions extends execa.CommonOptions {}
+
+interface ExecuteOptions extends SharedOptions {
+ file: string;
+ args?: string[];
+}
+interface ExecuteCommandOptions extends SharedOptions {
+ cmd: string;
+}
+
+type ExecuteResult = execa.ExecaChildProcess;
+
+export function execute(options: ExecuteOptions): ExecuteResult {
+ const executionResult = execa(options.file, options.args, options);
+ logResult(executionResult, "execute");
+ return executionResult;
+}
+
+export function executeCommand(options: ExecuteCommandOptions): ExecuteResult {
+ const executionResult = (execa as any).command(options.cmd, options);
+ logResult(executionResult, "executeCommand");
+ return executionResult;
+}
+
+function logResult(result: ExecuteResult, namespace: string): void {
+ function logStream(stream: Readable, debug: Debugger): void {
+ stream.on("close", () => debug("close"));
+ stream.on("error", (e: any) => debug("error", e));
+ stream.on("end", () => debug("end"));
+ stream.on("data", (data: any) => debug(data.toString()));
+ }
+
+ const outDebug = createDebug(`utils:${namespace}:out`);
+ logStream(result.stdout, outDebug);
+ const errDebug = createDebug(`utils:${namespace}:err`);
+ logStream(result.stderr, errDebug);
+}
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
new file mode 100644
index 0000000..99abba9
--- /dev/null
+++ b/packages/utils/src/index.ts
@@ -0,0 +1,4 @@
+export * from "./createDebug";
+export * from "./using";
+export * from "./tmpDir";
+export * from "./execute";
diff --git a/packages/utils/src/tmpDir.ts b/packages/utils/src/tmpDir.ts
new file mode 100644
index 0000000..eefa383
--- /dev/null
+++ b/packages/utils/src/tmpDir.ts
@@ -0,0 +1,27 @@
+import { dir } from "tmp-promise";
+import { DisposableResource } from "./using";
+import { createDebug } from "./createDebug";
+
+const SHARED_PREFIX = "codechecks";
+
+const debug = createDebug("utils/tmp-dir");
+
+export async function createTmpDir(): Promise {
+ const { path: tmpPathDir } = await dir({ prefix: SHARED_PREFIX });
+ debug(`Created tmp dir:`, tmpPathDir);
+
+ return tmpPathDir;
+}
+
+export async function disposableTmpDir(): Promise> {
+ const tmpDir = await dir({ prefix: SHARED_PREFIX });
+ debug(`Created tmp dir:`, tmpDir.path);
+
+ return {
+ resource: tmpDir.path,
+ dispose: async () => {
+ debug(`Deleting tmp dir:`, tmpDir.path);
+ await tmpDir.cleanup();
+ },
+ };
+}
diff --git a/packages/utils/src/using.ts b/packages/utils/src/using.ts
new file mode 100644
index 0000000..2bd89ee
--- /dev/null
+++ b/packages/utils/src/using.ts
@@ -0,0 +1,26 @@
+import { AsyncOrSync } from "ts-essentials";
+import { mapValues } from "lodash";
+import { Dictionary } from "ts-essentials";
+const promiseAll = require("promise-all");
+
+export type DisposableResource = {
+ resource: T;
+ dispose: () => AsyncOrSync;
+};
+
+declare type DisposableResourceMap = {
+ [P in keyof T]: T[P] extends () => AsyncOrSync> ? R : never
+};
+
+export async function using AsyncOrSync>>>(
+ disposable: T,
+ fn: (resources: DisposableResourceMap) => any,
+): Promise {
+ const allDisposablePromises = mapValues(disposable, d => d());
+ const resources = await promiseAll(allDisposablePromises);
+
+ await fn(resources);
+
+ const disposeAllResources = mapValues(resources, r => r.dispose());
+ await promiseAll(disposeAllResources);
+}
diff --git a/tsconfig.json b/tsconfig.json
index 4b2acbc..fb528eb 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -16,7 +16,7 @@
"lib": ["es2015", "esnext.asynciterable", "dom"],
"sourceMap": true,
"declaration": true,
- "outDir": "dist/client",
+ "outDir": "./dist",
"baseUrl": "packages",
"paths": {
"codechecks": ["client/src"]
diff --git a/yarn.lock b/yarn.lock
index 25f71ec..c3089e0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -933,6 +933,11 @@
resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8"
integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==
+"@types/debug@^4.1.5":
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
+ integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==
+
"@types/dotenv@^6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-6.1.0.tgz#fba2bfd1f28a46eadaa049f3313ebb89bdedfc53"
@@ -1014,6 +1019,11 @@
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.135.tgz#d2607c35dd68f70c2b35ba020c667493dedd8447"
integrity sha512-Ed+tSZ9qM1oYpi5kzdsBuOzcAIn1wDW+e8TFJ50IMJMlSopGdJgKAbhHzN6h1E1OfjlGOr2JepzEWtg9NIfoNg==
+"@types/lodash@^4.14.138":
+ version "4.14.138"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.138.tgz#34f52640d7358230308344e579c15b378d91989e"
+ integrity sha512-A4uJgHz4hakwNBdHNPdxOTkYmXNgmUAKLbXZ7PKGslgeV0Mb8P3BlbYfPovExek1qnod4pDfRbxuzcVs3dlFLg==
+
"@types/marked-terminal@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@types/marked-terminal/-/marked-terminal-3.1.1.tgz#130214af1afafda611f69e8528c07230a00b32b2"
@@ -1079,6 +1089,11 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
+"@types/tmp@^0.1.0":
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.1.0.tgz#19cf73a7bcf641965485119726397a096f0049bd"
+ integrity sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA==
+
"@types/tough-cookie@*":
version "2.3.5"
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.5.tgz#9da44ed75571999b65c37b60c9b2b88db54c585d"
@@ -2061,7 +2076,7 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
shebang-command "^1.2.0"
which "^1.2.9"
-cross-spawn@^6.0.0:
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
@@ -2488,6 +2503,21 @@ execa@^0.7.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
+execa@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-2.0.4.tgz#2f5cc589c81db316628627004ea4e37b93391d8e"
+ integrity sha512-VcQfhuGD51vQUQtKIq2fjGDLDbL6N1DTQVpYzxZ7LPIXw3HqTuIz6uxRmpV1qf8i31LHf2kjiaGI+GdHwRgbnQ==
+ dependencies:
+ cross-spawn "^6.0.5"
+ get-stream "^5.0.0"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^3.0.0"
+ onetime "^5.1.0"
+ p-finally "^2.0.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
exit@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
@@ -2853,6 +2883,13 @@ get-stream@^4.0.0, get-stream@^4.1.0:
dependencies:
pump "^3.0.0"
+get-stream@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
+ integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==
+ dependencies:
+ pump "^3.0.0"
+
get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
@@ -3508,6 +3545,11 @@ is-stream@^1.0.0, is-stream@^1.1.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+is-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+ integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
is-subset@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
@@ -4402,6 +4444,11 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+lodash@^4.17.15:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+
loose-envify@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -4566,6 +4613,11 @@ merge-stream@^1.0.1:
dependencies:
readable-stream "^2.0.1"
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
merge2@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
@@ -4607,6 +4659,11 @@ mimic-fn@^1.0.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
minimatch@3, minimatch@^3.0.0, minimatch@^3.0.3, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -5006,6 +5063,13 @@ npm-run-path@^2.0.0:
dependencies:
path-key "^2.0.0"
+npm-run-path@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5"
+ integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==
+ dependencies:
+ path-key "^3.0.0"
+
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2, npmlog@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
@@ -5086,6 +5150,13 @@ onetime@^2.0.0:
dependencies:
mimic-fn "^1.0.0"
+onetime@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
+ integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
+ dependencies:
+ mimic-fn "^2.1.0"
+
optimist@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
@@ -5159,6 +5230,11 @@ p-finally@^1.0.0:
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+p-finally@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561"
+ integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==
+
p-is-promise@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
@@ -5359,6 +5435,11 @@ path-key@^2.0.0, path-key@^2.0.1:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+path-key@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3"
+ integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==
+
path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
@@ -5468,6 +5549,13 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
+promise-all@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/promise-all/-/promise-all-1.0.0.tgz#96f2c71973c94f1126f000463648e13a2d100b84"
+ integrity sha1-lvLHGXPJTxEm8ABGNkjhOi0QC4Q=
+ dependencies:
+ is-plain-object "^2.0.1"
+
promise-inflight@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
@@ -5922,6 +6010,13 @@ rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
dependencies:
glob "^7.0.5"
+rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
rsvp@^4.8.4:
version "4.8.4"
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911"
@@ -6346,6 +6441,11 @@ strip-eof@^1.0.0:
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
strip-indent@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
@@ -6524,6 +6624,20 @@ timed-out@^4.0.0:
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
+tmp-promise@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-2.0.2.tgz#ee605edb10f100954be5dd8b9dbe1bfd56194202"
+ integrity sha512-zl71nFWjPKW2KXs+73gEk8RmqvtAeXPxhWDkTUoa3MSMkjq3I+9OeknjF178MQoMYsdqL730hfzvNfEkePxq9Q==
+ dependencies:
+ tmp "0.1.0"
+
+tmp@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877"
+ integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==
+ dependencies:
+ rimraf "^2.6.3"
+
tmp@^0.0.31:
version "0.0.31"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
@@ -6621,10 +6735,10 @@ trim-right@^1.0.1:
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
-ts-essentials@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.2.tgz#ae3e50824e06ea8fbe7e25179a41c3618f79b798"
- integrity sha512-D9TbEdIS+809h3tEESsHwgRFz0FtaCUEXCadqyFW9dw1/eMWjMeGzBsfkestAPexfNxMky6Fu1acI25XrgpIrw==
+ts-essentials@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-3.0.2.tgz#143a60857a97c0e431b12bddbc4f3a7d7f3c40d4"
+ integrity sha512-vOdAnCS2tt+4fML/Xnf5iWvr+3bAhG0odly05UprbuwgI5hfRhUZ9a+K3hdYSSM0TPRn8/VS3F4Pza1uNqsTKw==
ts-jest@^24.0.1:
version "24.0.1"
@@ -6795,10 +6909,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@^3.1.6:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5"
- integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==
+typescript@^3.6.3:
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.3.tgz#fea942fabb20f7e1ca7164ff626f1a9f3f70b4da"
+ integrity sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==
typestrict@^1.0.1:
version "1.0.2"