From 1cdca10c26fa0b755d61fcea7ead924bc372de4c Mon Sep 17 00:00:00 2001
From: Chenng
Date: Sat, 16 Feb 2019 21:00:40 +0800
Subject: [PATCH 001/163] Add a new config: 'outputFolder' to support generate
file into a customized folder (#123)
---
package.json | 5 ++++
src/commands/show.ts | 59 ++++++++++++++++++++++++++++++++++++--------
2 files changed, 54 insertions(+), 10 deletions(-)
diff --git a/package.json b/package.json
index d6b87f8e..54ff1440 100644
--- a/package.json
+++ b/package.json
@@ -247,6 +247,11 @@
"leetcode-cn"
],
"description": "Endpoint of the user account."
+ },
+ "leetcode.outputFolder": {
+ "type": "string",
+ "scope": "application",
+ "description": "Specify the relative path to save the problem files."
}
}
}
diff --git a/src/commands/show.ts b/src/commands/show.ts
index 780aa45e..f9796621 100644
--- a/src/commands/show.ts
+++ b/src/commands/show.ts
@@ -2,8 +2,10 @@
// Licensed under the MIT license.
import * as fse from "fs-extra";
+import * as path from "path";
import * as vscode from "vscode";
import { LeetCodeNode } from "../explorer/LeetCodeNode";
+import { leetCodeChannel } from "../leetCodeChannel";
import { leetCodeExecutor } from "../leetCodeExecutor";
import { leetCodeManager } from "../leetCodeManager";
import { IProblem, IQuickItemEx, languages, ProblemState } from "../shared";
@@ -16,7 +18,7 @@ export async function showProblem(node?: LeetCodeNode): Promise {
if (!node) {
return;
}
- await showProblemInternal(node.id);
+ await showProblemInternal(node);
}
export async function searchProblem(): Promise {
@@ -24,7 +26,7 @@ export async function searchProblem(): Promise {
promptForSignIn();
return;
}
- const choice: IQuickItemEx | undefined = await vscode.window.showQuickPick(
+ const choice: IQuickItemEx | undefined = await vscode.window.showQuickPick(
parseProblemsToPicks(list.listProblems()),
{
matchOnDetail: true,
@@ -37,7 +39,7 @@ export async function searchProblem(): Promise {
await showProblemInternal(choice.value);
}
-async function showProblemInternal(id: string): Promise {
+async function showProblemInternal(node: IProblem): Promise {
try {
const leetCodeConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("leetcode");
let defaultLanguage: string | undefined = leetCodeConfig.get("defaultLanguage");
@@ -49,9 +51,21 @@ async function showProblemInternal(id: string): Promise {
return;
}
- const outDir: string = await selectWorkspaceFolder();
+ let outDir: string = await selectWorkspaceFolder();
+ let relativePath: string = (leetCodeConfig.get("outputFolder") || "").trim();
+ const matchResult: RegExpMatchArray | null = relativePath.match(/\$\{(.*?)\}/);
+ if (matchResult) {
+ const resolvedPath: string | undefined = await resolveRelativePath(matchResult[1].toLocaleLowerCase(), node, language);
+ if (!resolvedPath) {
+ leetCodeChannel.appendLine("Showing problem canceled by user.");
+ return;
+ }
+ relativePath = resolvedPath;
+ }
+
+ outDir = path.join(outDir, relativePath);
await fse.ensureDir(outDir);
- const result: string = await leetCodeExecutor.showProblem(id, language, outDir);
+ const result: string = await leetCodeExecutor.showProblem(node.id, language, outDir);
const reg: RegExp = /\* Source Code:\s*(.*)/;
const match: RegExpMatchArray | null = result.match(reg);
if (match && match.length >= 2) {
@@ -76,17 +90,17 @@ async function showProblemInternal(id: string): Promise {
}
}
} catch (error) {
- await promptForOpenOutputChannel("Failed to fetch the problem information. Please open the output channel for details.", DialogType.error);
+ await promptForOpenOutputChannel("Failed to show the problem. Please open the output channel for details.", DialogType.error);
}
}
-async function parseProblemsToPicks(p: Promise): Promise>> {
- return new Promise(async (resolve: (res: Array>) => void): Promise => {
- const picks: Array> = (await p).map((problem: IProblem) => Object.assign({}, {
+async function parseProblemsToPicks(p: Promise): Promise>> {
+ return new Promise(async (resolve: (res: Array>) => void): Promise => {
+ const picks: Array> = (await p).map((problem: IProblem) => Object.assign({}, {
label: `${parseProblemDecorator(problem.state, problem.locked)}${problem.id}.${problem.name}`,
description: "",
detail: `AC rate: ${problem.passRate}, Difficulty: ${problem.difficulty}`,
- value: problem.id,
+ value: problem,
}));
resolve(picks);
});
@@ -102,3 +116,28 @@ function parseProblemDecorator(state: ProblemState, locked: boolean): string {
return locked ? "$(lock) " : "";
}
}
+
+async function resolveRelativePath(value: string, node: IProblem, selectedLanguage: string): Promise {
+ switch (value) {
+ case "tag":
+ if (node.tags.length === 1) {
+ return node.tags[0];
+ }
+ return await vscode.window.showQuickPick(
+ node.tags,
+ {
+ matchOnDetail: true,
+ placeHolder: "Multiple tags available, please select one",
+ ignoreFocusOut: true,
+ },
+ );
+ case "language":
+ return selectedLanguage;
+ case "difficulty":
+ return node.difficulty;
+ default:
+ const errorMsg: string = `The config '${value}' is not supported.`;
+ leetCodeChannel.appendLine(errorMsg);
+ throw new Error(errorMsg);
+ }
+}
From f1719372d677ad9ad71d759db505f8899c84d842 Mon Sep 17 00:00:00 2001
From: "sheche@microsoft.com"
Date: Mon, 18 Feb 2019 21:15:34 +0800
Subject: [PATCH 002/163] Add Chinese troubleshooting documents
---
README.md | 2 +-
docs/README_zh-CN.md | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5a8c9416..6f3af5e6 100644
--- a/README.md
+++ b/README.md
@@ -123,7 +123,7 @@
| `leetcode.endpoint` | Specify the active endpoint. Supported endpoints are: `leetcode`, `leetcode-cn` | `leetcode` |
## Troubleshooting
-When you meet any problem, you can check the [Troubleshooting page](https://github.com/jdneo/vscode-leetcode/wiki/Troubleshooting) first.
+When you meet any problem, you can check the [Troubleshooting Page](https://github.com/jdneo/vscode-leetcode/wiki/Troubleshooting) first.
## Release Notes
diff --git a/docs/README_zh-CN.md b/docs/README_zh-CN.md
index c91f8860..7b00e220 100644
--- a/docs/README_zh-CN.md
+++ b/docs/README_zh-CN.md
@@ -122,6 +122,9 @@
| `leetcode.useWsl` | 指定是否启用 WSL | `false` |
| `leetcode.endpoint` | 指定使用的终端,可用终端有:`leetcode`, `leetcode-cn` | `leetcode` |
+## 疑难解答
+在遇到任何问题时,可以先查看一下[疑难解答](https://github.com/jdneo/vscode-leetcode/wiki/%E7%96%91%E9%9A%BE%E8%A7%A3%E7%AD%94)文档寻求帮助。
+
## 更新日志
请参考[更新日志](https://github.com/jdneo/vscode-leetcode/blob/master/CHANGELOG.md)
From 72acef9a2e7fb390bb07834d83fdaa8ca1a8460e Mon Sep 17 00:00:00 2001
From: Jason
Date: Wed, 20 Feb 2019 15:16:33 +0800
Subject: [PATCH 003/163] Add tooltips for sub-category folder (#143)
---
src/explorer/LeetCodeTreeDataProvider.ts | 32 ++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/src/explorer/LeetCodeTreeDataProvider.ts b/src/explorer/LeetCodeTreeDataProvider.ts
index 83a97534..25ebbb8b 100644
--- a/src/explorer/LeetCodeTreeDataProvider.ts
+++ b/src/explorer/LeetCodeTreeDataProvider.ts
@@ -1,6 +1,7 @@
// Copyright (c) jdneo. All rights reserved.
// Licensed under the MIT license.
+import * as os from "os";
import * as path from "path";
import * as vscode from "vscode";
import * as list from "../commands/list";
@@ -46,6 +47,7 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider
Date: Wed, 20 Feb 2019 20:11:13 +0800
Subject: [PATCH 004/163] Update documents (#144)
---
ACKNOWLEDGEMENTS.md | 2 ++
CHANGELOG.md | 5 +++++
README.md | 1 +
docs/README_zh-CN.md | 1 +
4 files changed, 9 insertions(+)
diff --git a/ACKNOWLEDGEMENTS.md b/ACKNOWLEDGEMENTS.md
index bd9d602f..fab81786 100644
--- a/ACKNOWLEDGEMENTS.md
+++ b/ACKNOWLEDGEMENTS.md
@@ -6,3 +6,5 @@ A big thanks to the following individuals for contributing:
- [@Xeonacid](https://github.com/Xeonacid) for contributing [#58](https://github.com/jdneo/vscode-leetcode/pull/58).
- [@Himself65](https://github.com/Himself65) for contributing [#61](https://github.com/jdneo/vscode-leetcode/pull/61)
- [@Vigilans](https://github.com/Vigilans) for contributing [#94](https://github.com/jdneo/vscode-leetcode/pull/94)
+- [@ringcrl](https://github.com/ringcrl) for contributing [#123](https://github.com/jdneo/vscode-leetcode/pull/123)
+- [@pujiaxun](https://github.com/pujiaxun) for contributing [#143](https://github.com/jdneo/vscode-leetcode/pull/143)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32e2661a..cf77cb28 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,11 @@ All notable changes to the "leetcode" extension will be documented in this file.
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
+## [Unreleased]
+## Added
+- Add new setting: `leetcode.outputFolder` to customize the sub-directory to save the files generated by 'Show Problem' [#119](https://github.com/jdneo/vscode-leetcode/issues/119)
+- Add tooltips for sub-category nodes in LeetCode Explorer [#143](https://github.com/jdneo/vscode-leetcode/pull/143)
+
## [0.10.2]
## Fixed
- Test cases cannot have double quotes [#60](https://github.com/jdneo/vscode-leetcode/issues/60)
diff --git a/README.md b/README.md
index 6f3af5e6..0cfae21e 100644
--- a/README.md
+++ b/README.md
@@ -121,6 +121,7 @@
| `leetcode.defaultLanguage` | Specify the default language used to solve the problem. Supported languages are: `bash`, `c`, `cpp`, `csharp`, `golang`, `java`, `javascript`, `kotlin`, `mysql`, `python`,`python3`,`ruby`,`scala`,`swift` | `N/A` |
| `leetcode.useWsl` | Specify whether to use WSL or not | `false` |
| `leetcode.endpoint` | Specify the active endpoint. Supported endpoints are: `leetcode`, `leetcode-cn` | `leetcode` |
+| `leetcode.outputFolder`| Specify the relative path to save the problem files. Besides using customized path, there are also several reserved words which can be used here: - `${tag}`: Categorize the problem according to their tags.
- `${language}`: Categorize the problem according to their language.
- `${difficulty}`: Categorize the problem according to their difficulty.
| N/A |
## Troubleshooting
When you meet any problem, you can check the [Troubleshooting Page](https://github.com/jdneo/vscode-leetcode/wiki/Troubleshooting) first.
diff --git a/docs/README_zh-CN.md b/docs/README_zh-CN.md
index 7b00e220..ef1c6824 100644
--- a/docs/README_zh-CN.md
+++ b/docs/README_zh-CN.md
@@ -121,6 +121,7 @@
| `leetcode.defaultLanguage` | 指定答题时使用的默认语言,可选语言有:`bash`, `c`, `cpp`, `csharp`, `golang`, `java`, `javascript`, `kotlin`, `mysql`, `python`,`python3`,`ruby`,`scala`,`swift` | `N/A` |
| `leetcode.useWsl` | 指定是否启用 WSL | `false` |
| `leetcode.endpoint` | 指定使用的终端,可用终端有:`leetcode`, `leetcode-cn` | `leetcode` |
+| `leetcode.outputFolder` | 指定保存文件时所用的相对文件夹路径。除了用户自定义路径外,也可以使用保留项,包括:- `${tag}`: 根据题目的类别进行分类。
- `${language}`: 根据题目的语言进行分类。
- `${difficulty}`: 根据题目的难度进行分类。
| N/A |
## 疑难解答
在遇到任何问题时,可以先查看一下[疑难解答](https://github.com/jdneo/vscode-leetcode/wiki/%E7%96%91%E9%9A%BE%E8%A7%A3%E7%AD%94)文档寻求帮助。
From 7ca9b8a2038b0a261f47447599c155c91657bae8 Mon Sep 17 00:00:00 2001
From: PoppinL
Date: Sun, 24 Feb 2019 20:10:57 +0800
Subject: [PATCH 005/163] feat: support load code from local file for issue 59
(#149)
---
package-lock.json | 1600 ++++++++++---------------------------
package.json | 2 +
src/commands/show.ts | 12 +-
src/leetCodeExecutor.ts | 15 +-
src/shared.ts | 17 +
src/utils/osUtils.ts | 2 +-
src/utils/problemUtils.ts | 16 +
7 files changed, 484 insertions(+), 1180 deletions(-)
create mode 100644 src/utils/problemUtils.ts
diff --git a/package-lock.json b/package-lock.json
index 0b273108..0fb6f995 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,6 +13,21 @@
"@types/node": "*"
}
},
+ "@types/lodash": {
+ "version": "4.14.121",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.121.tgz",
+ "integrity": "sha512-ORj7IBWj13iYufXt/VXrCNMbUuCTJfhzme5kx9U/UtcIPdJYuvPDUAlHlbNhz/8lKCLy9XGIZnGrqXOtQbPGoQ==",
+ "dev": true
+ },
+ "@types/lodash.kebabcase": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@types/lodash.kebabcase/-/lodash.kebabcase-4.1.5.tgz",
+ "integrity": "sha512-ECK1g+MWiRBdJKR9tktE55dU4B340N7HUfIb89WNBb31J1L1rSsD4YOUZ8Uv1bI458OuB8IKptoUh/COR1DdtQ==",
+ "dev": true,
+ "requires": {
+ "@types/lodash": "*"
+ }
+ },
"@types/mocha": {
"version": "2.2.48",
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz",
@@ -20,9 +35,9 @@
"dev": true
},
"@types/node": {
- "version": "7.0.65",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.65.tgz",
- "integrity": "sha512-iUdyWWikcQnGvIZnYh5ZxnxeREykndA9+iGdo068NGNutibWknDjmmNMq/8cnS1eaTCcgqJsPsFppw3XJWNlUg==",
+ "version": "7.10.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.3.tgz",
+ "integrity": "sha512-HeyK+csRk7Khhg9krpMGJeT9pLzjsmiJFHYRzYpPv/dQ5tPclQsbvceiX/HKynRt/9lMLorWUYTbBHC3hRI4sg==",
"dev": true
},
"@types/require-from-string": {
@@ -39,12 +54,13 @@
},
"acorn": {
"version": "2.7.0",
- "resolved": "http://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
- "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc="
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
+ "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=",
+ "optional": true
},
"acorn-globals": {
"version": "1.0.9",
- "resolved": "http://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
"integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=",
"optional": true,
"requires": {
@@ -52,14 +68,14 @@
}
},
"ajv": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz",
+ "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==",
"requires": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
+ "fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
}
},
"ansi-cyan": {
@@ -115,14 +131,6 @@
"dev": true,
"requires": {
"sprintf-js": "~1.0.2"
- },
- "dependencies": {
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- }
}
},
"arr-diff": {
@@ -174,12 +182,6 @@
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"dev": true
},
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
- },
"arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
@@ -187,9 +189,12 @@
"dev": true
},
"asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
},
"assert-plus": {
"version": "1.0.0",
@@ -198,7 +203,7 @@
},
"async": {
"version": "1.5.2",
- "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
"integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
},
"asynckit": {
@@ -212,9 +217,9 @@
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
- "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"babel-code-frame": {
"version": "6.26.0",
@@ -260,10 +265,9 @@
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
- "optional": true,
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"requires": {
"tweetnacl": "^0.14.3"
}
@@ -282,14 +286,6 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
- "boom": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
- "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
- "requires": {
- "hoek": "4.x.x"
- }
- },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -299,17 +295,6 @@
"concat-map": "0.0.1"
}
},
- "braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
- "dev": true,
- "requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
- }
- },
"browser-stdout": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
@@ -351,36 +336,18 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.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==",
- "requires": {
- "color-convert": "^1.9.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==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
}
},
"cheerio": {
"version": "0.20.0",
- "resolved": "http://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz",
"integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=",
"requires": {
"css-select": "~1.2.0",
@@ -415,10 +382,9 @@
}
},
"clone": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
- "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
- "dev": true
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
},
"clone-buffer": {
"version": "1.0.0",
@@ -475,22 +441,17 @@
}
}
},
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
- },
"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="
},
"color-convert": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
- "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
- "color-name": "^1.1.1"
+ "color-name": "1.1.3"
}
},
"color-name": {
@@ -499,22 +460,22 @@
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"colors": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz",
- "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ=="
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
+ "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg=="
},
"combined-stream": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
- "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
+ "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
"dev": true
},
"concat-map": {
@@ -548,27 +509,9 @@
"which": "^1.2.9"
}
},
- "cryptiles": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.4.tgz",
- "integrity": "sha512-8I1sgZHfVwcSOY6mSGpVU3lw/GSIZvusg8dD2+OGehCJpOhQRLNcH0qb9upQnOH4XhgxxFJSg6E2kx95deb1Tw==",
- "requires": {
- "boom": "5.x.x"
- },
- "dependencies": {
- "boom": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
- "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
- "requires": {
- "hoek": "4.x.x"
- }
- }
- }
- },
"css-select": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"requires": {
"boolbase": "~1.0.0",
@@ -578,14 +521,15 @@
}
},
"css-what": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz",
- "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg=="
},
"cssom": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
- "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog=="
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz",
+ "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==",
+ "optional": true
},
"cssstyle": {
"version": "0.2.37",
@@ -649,13 +593,6 @@
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
"requires": {
"clone": "^1.0.2"
- },
- "dependencies": {
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
- }
}
},
"define-properties": {
@@ -679,25 +616,18 @@
"dev": true
},
"dom-serializer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
- "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
+ "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
"requires": {
- "domelementtype": "~1.1.1",
- "entities": "~1.1.1"
- },
- "dependencies": {
- "domelementtype": {
- "version": "1.1.3",
- "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
- }
+ "domelementtype": "^1.3.0",
+ "entities": "^1.1.1"
}
},
"domelementtype": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz",
- "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA=="
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
},
"domhandler": {
"version": "2.3.0",
@@ -723,9 +653,9 @@
"dev": true
},
"duplexify": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz",
- "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==",
+ "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",
@@ -767,19 +697,18 @@
}
},
"ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
- "optional": true,
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"requires": {
- "jsbn": "~0.1.0"
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
}
},
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
- "dev": true,
"requires": {
"once": "^1.4.0"
}
@@ -795,9 +724,9 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"escodegen": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
- "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz",
+ "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==",
"optional": true,
"requires": {
"esprima": "^3.1.3",
@@ -840,12 +769,12 @@
}
},
"execa": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
- "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"requires": {
"cross-spawn": "^6.0.0",
- "get-stream": "^3.0.0",
+ "get-stream": "^4.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
@@ -853,28 +782,10 @@
"strip-eof": "^1.0.0"
}
},
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
- "dev": true,
- "requires": {
- "is-posix-bracket": "^0.1.0"
- }
- },
- "expand-range": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
- "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
- "dev": true,
- "requires": {
- "fill-range": "^2.1.0"
- }
- },
"extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extend-shallow": {
"version": "1.1.4",
@@ -885,23 +796,6 @@
"kind-of": "^1.1.0"
}
},
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- },
- "dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- }
- }
- },
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
@@ -913,9 +807,9 @@
"integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
},
"fast-deep-equal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
- "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
@@ -937,25 +831,6 @@
"pend": "~1.2.0"
}
},
- "filename-regex": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
- "dev": true
- },
- "fill-range": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
- "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
- "dev": true,
- "requires": {
- "is-number": "^2.1.0",
- "isobject": "^2.0.0",
- "randomatic": "^3.0.0",
- "repeat-element": "^1.1.2",
- "repeat-string": "^1.5.2"
- }
- },
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
@@ -964,20 +839,14 @@
"locate-path": "^3.0.0"
}
},
- "first-chunk-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
- "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=",
- "dev": true
- },
"flush-write-stream": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
- "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
+ "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.1",
- "readable-stream": "^2.0.4"
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
},
"dependencies": {
"isarray": {
@@ -988,7 +857,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -1012,33 +881,18 @@
}
}
},
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"form-data": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
- "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"requires": {
"asynckit": "^0.4.0",
- "combined-stream": "1.0.6",
+ "combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
@@ -1097,9 +951,12 @@
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
},
"get-stream": {
- "version": "3.0.0",
- "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "requires": {
+ "pump": "^3.0.0"
+ }
},
"getpass": {
"version": "0.1.7",
@@ -1110,9 +967,9 @@
}
},
"glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -1122,42 +979,6 @@
"path-is-absolute": "^1.0.0"
}
},
- "glob-base": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
- "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
- "dev": true,
- "requires": {
- "glob-parent": "^2.0.0",
- "is-glob": "^2.0.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "dev": true,
- "requires": {
- "is-glob": "^2.0.0"
- }
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- }
- }
- },
"glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -1169,62 +990,59 @@
}
},
"glob-stream": {
- "version": "5.3.5",
- "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
- "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
+ "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
"dev": true,
"requires": {
"extend": "^3.0.0",
- "glob": "^5.0.3",
- "glob-parent": "^3.0.0",
- "micromatch": "^2.3.7",
- "ordered-read-streams": "^0.3.0",
- "through2": "^0.6.0",
- "to-absolute-glob": "^0.1.1",
+ "glob": "^7.1.1",
+ "glob-parent": "^3.1.0",
+ "is-negated-glob": "^1.0.0",
+ "ordered-read-streams": "^1.0.0",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.1.5",
+ "remove-trailing-separator": "^1.0.1",
+ "to-absolute-glob": "^2.0.0",
"unique-stream": "^2.0.2"
},
"dependencies": {
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "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"
}
},
- "through2": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
- "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "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": {
- "readable-stream": ">=1.0.33-1 <1.1.0-0",
- "xtend": ">=4.0.0 <4.1.0-0"
+ "safe-buffer": "~5.1.0"
}
}
}
},
"graceful-fs": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+ "version": "4.1.15",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"growl": {
"version": "1.10.3",
@@ -1329,56 +1147,6 @@
}
}
},
- "gulp-sourcemaps": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
- "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
- "dev": true,
- "requires": {
- "convert-source-map": "^1.1.1",
- "graceful-fs": "^4.1.2",
- "strip-bom": "^2.0.0",
- "through2": "^2.0.0",
- "vinyl": "^1.0.0"
- },
- "dependencies": {
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
- "dev": true
- },
- "replace-ext": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
- "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
- "dev": true
- },
- "vinyl": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
- "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
- "dev": true,
- "requires": {
- "clone": "^1.0.0",
- "clone-stats": "^0.0.1",
- "replace-ext": "0.0.1"
- }
- }
- }
- },
- "gulp-symdest": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.1.tgz",
- "integrity": "sha512-UHd3MokfIN7SrFdsbV5uZTwzBpL0ZSTu7iq98fuDqBGZ0dlHxgbQBJwfd6qjCW83snkQ3Hz9IY4sMRMz2iTq7w==",
- "dev": true,
- "requires": {
- "event-stream": "3.3.4",
- "mkdirp": "^0.5.1",
- "queue": "^3.1.0",
- "vinyl-fs": "^2.4.3"
- }
- },
"gulp-untar": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.7.tgz",
@@ -1392,12 +1160,6 @@
"vinyl": "^1.2.0"
},
"dependencies": {
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
- "dev": true
- },
"replace-ext": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
@@ -1444,88 +1206,6 @@
"integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
"dev": true
},
- "glob-stream": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
- "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
- "dev": true,
- "requires": {
- "extend": "^3.0.0",
- "glob": "^7.1.1",
- "glob-parent": "^3.1.0",
- "is-negated-glob": "^1.0.0",
- "ordered-read-streams": "^1.0.0",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.1.5",
- "remove-trailing-separator": "^1.0.1",
- "to-absolute-glob": "^2.0.0",
- "unique-stream": "^2.0.2"
- }
- },
- "is-valid-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
- "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "ordered-read-streams": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
- "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.1"
- }
- },
- "queue": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.1.tgz",
- "integrity": "sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw==",
- "dev": true,
- "requires": {
- "inherits": "~2.0.0"
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "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"
- }
- },
- "to-absolute-glob": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
- "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
- "dev": true,
- "requires": {
- "is-absolute": "^1.0.0",
- "is-negated-glob": "^1.0.0"
- }
- },
"vinyl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
@@ -1539,31 +1219,6 @@
"remove-trailing-separator": "^1.0.1",
"replace-ext": "^1.0.0"
}
- },
- "vinyl-fs": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
- "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
- "dev": true,
- "requires": {
- "fs-mkdirp-stream": "^1.0.0",
- "glob-stream": "^6.1.0",
- "graceful-fs": "^4.0.0",
- "is-valid-glob": "^1.0.0",
- "lazystream": "^1.0.0",
- "lead": "^1.0.0",
- "object.assign": "^4.0.4",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.3.3",
- "remove-bom-buffer": "^3.0.0",
- "remove-bom-stream": "^1.2.0",
- "resolve-options": "^1.1.0",
- "through2": "^2.0.0",
- "to-through": "^2.0.0",
- "value-or-function": "^3.0.0",
- "vinyl": "^2.0.0",
- "vinyl-sourcemap": "^1.1.0"
- }
}
}
},
@@ -1573,11 +1228,11 @@
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"requires": {
- "ajv": "^5.1.0",
+ "ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
@@ -1610,31 +1265,14 @@
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
"dev": true
},
- "hawk": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
- "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
- "requires": {
- "boom": "4.x.x",
- "cryptiles": "3.x.x",
- "hoek": "4.x.x",
- "sntp": "2.x.x"
- }
- },
"he": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
- "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
- "dev": true
- },
- "hoek": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
- "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"htmlparser2": {
"version": "3.8.3",
- "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
"requires": {
"domelementtype": "1",
@@ -1646,7 +1284,7 @@
"dependencies": {
"entities": {
"version": "1.0.0",
- "resolved": "http://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
}
}
@@ -1691,9 +1329,9 @@
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
},
"is": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz",
- "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz",
+ "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==",
"dev": true
},
"is-absolute": {
@@ -1712,27 +1350,6 @@
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
- "is-dotfile": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
- "dev": true
- },
- "is-equal-shallow": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
- "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
- "dev": true,
- "requires": {
- "is-primitive": "^2.0.0"
- }
- },
- "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",
@@ -1762,44 +1379,12 @@
"integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
"dev": true
},
- "is-number": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
- "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-posix-bracket": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
- "dev": true
- },
- "is-primitive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
- "dev": true
- },
"is-relative": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
@@ -1835,9 +1420,9 @@
"dev": true
},
"is-valid-glob": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
- "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
+ "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
"dev": true
},
"is-windows": {
@@ -1856,23 +1441,6 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
- "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"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- }
- }
- },
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
@@ -1885,9 +1453,9 @@
"dev": true
},
"js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
+ "version": "3.12.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
+ "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -1895,9 +1463,9 @@
},
"dependencies": {
"esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+ "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
}
}
@@ -1905,12 +1473,11 @@
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "optional": true
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"jsdom": {
"version": "7.2.2",
- "resolved": "http://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz",
"integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=",
"optional": true,
"requires": {
@@ -1937,18 +1504,15 @@
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
},
"json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
+ "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=="
},
- "json-stable-stringify": {
+ "json-stable-stringify-without-jsonify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
- "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
- "dev": true,
- "requires": {
- "jsonify": "~0.0.0"
- }
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
},
"json-stringify-safe": {
"version": "5.0.1",
@@ -1963,12 +1527,6 @@
"graceful-fs": "^4.1.6"
}
},
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
- "dev": true
- },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -2058,116 +1616,10 @@
"ora": "3.0.0",
"prompt": "1.0.0",
"request": "2.88.0",
- "supports-color": "5.5.0",
- "underscore": "1.9.1",
- "wordwrap": "1.0.0",
- "yargs": "12.0.4"
- },
- "dependencies": {
- "ajv": {
- "version": "6.6.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz",
- "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==",
- "requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
- },
- "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==",
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- }
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
- },
- "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=="
- },
- "mime-db": {
- "version": "1.37.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
- "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
- },
- "mime-types": {
- "version": "2.1.21",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
- "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
- "requires": {
- "mime-db": "~1.37.0"
- }
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
- },
- "request": {
- "version": "2.88.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "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.0",
- "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.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
- "tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- }
- },
- "uuid": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
- }
+ "supports-color": "5.5.0",
+ "underscore": "1.9.1",
+ "wordwrap": "1.0.0",
+ "yargs": "12.0.4"
}
},
"levn": {
@@ -2194,11 +1646,10 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
},
- "lodash.isequal": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
- "dev": true
+ "lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY="
},
"log-symbols": {
"version": "2.2.0",
@@ -2222,130 +1673,27 @@
"integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
"dev": true
},
- "math-random": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
- "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
- "dev": true
- },
"mem": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
- "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz",
+ "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==",
"requires": {
"map-age-cleaner": "^0.1.1",
"mimic-fn": "^1.0.0",
- "p-is-promise": "^1.1.0"
- }
- },
- "merge-stream": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
- "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "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"
- }
- }
- }
- },
- "micromatch": {
- "version": "2.3.11",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
- "dev": true,
- "requires": {
- "arr-diff": "^2.0.0",
- "array-unique": "^0.2.1",
- "braces": "^1.8.2",
- "expand-brackets": "^0.1.4",
- "extglob": "^0.3.1",
- "filename-regex": "^2.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.1",
- "kind-of": "^3.0.2",
- "normalize-path": "^2.0.1",
- "object.omit": "^2.0.0",
- "parse-glob": "^3.0.4",
- "regex-cache": "^0.4.2"
- },
- "dependencies": {
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1"
- }
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.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"
- }
- }
+ "p-is-promise": "^2.0.0"
}
},
"mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
+ "version": "1.38.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
+ "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg=="
},
"mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "version": "2.1.22",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
+ "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
"requires": {
- "mime-db": "~1.33.0"
+ "mime-db": "~1.38.0"
}
},
"mimic-fn": {
@@ -2404,12 +1752,32 @@
"integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==",
"dev": true
},
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "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"
+ }
+ },
"has-flag": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
"dev": true
},
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
"supports-color": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
@@ -2422,9 +1790,9 @@
}
},
"moment": {
- "version": "2.22.2",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
- "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
+ "version": "2.24.0",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
+ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
},
"ms": {
"version": "2.0.0",
@@ -2445,9 +1813,9 @@
}
},
"mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
},
"nconf": {
"version": "0.10.0",
@@ -2462,7 +1830,7 @@
"dependencies": {
"yargs": {
"version": "3.32.0",
- "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
"integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
"requires": {
"camelcase": "^2.0.1",
@@ -2478,7 +1846,7 @@
},
"ncp": {
"version": "1.0.1",
- "resolved": "http://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz",
"integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY="
},
"nice-try": {
@@ -2542,20 +1910,14 @@
"optional": true
},
"oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
- },
- "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
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"object-keys": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
- "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz",
+ "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==",
"dev": true
},
"object.assign": {
@@ -2570,16 +1932,6 @@
"object-keys": "^1.0.11"
}
},
- "object.omit": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
- "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
- "dev": true,
- "requires": {
- "for-own": "^0.1.4",
- "is-extendable": "^0.1.1"
- }
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -2639,12 +1991,11 @@
}
},
"ordered-read-streams": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
- "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
+ "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
"dev": true,
"requires": {
- "is-stream": "^1.0.1",
"readable-stream": "^2.0.1"
},
"dependencies": {
@@ -2682,7 +2033,7 @@
},
"os-locale": {
"version": "1.4.0",
- "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"requires": {
"lcid": "^1.0.0"
@@ -2699,14 +2050,14 @@
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
},
"p-is-promise": {
- "version": "1.1.0",
- "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
- "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz",
+ "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg=="
},
"p-limit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
- "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
"requires": {
"p-try": "^2.0.0"
}
@@ -2724,35 +2075,6 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
"integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ=="
},
- "parse-glob": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
- "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
- "dev": true,
- "requires": {
- "glob-base": "^0.3.0",
- "is-dotfile": "^1.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.0"
- },
- "dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- }
- }
- },
"parse5": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
@@ -2781,9 +2103,9 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
},
"path-parse": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
- "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "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
},
"pause-stream": {
@@ -2827,13 +2149,8 @@
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
- },
- "preserve": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
- "dev": true
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "optional": true
},
"process-nextick-args": {
"version": "2.0.0",
@@ -2855,15 +2172,14 @@
}
},
"psl": {
- "version": "1.1.29",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
- "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
+ "version": "1.1.31",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
+ "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw=="
},
"pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -2878,12 +2194,24 @@
"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"
+ }
+ }
}
},
"punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qs": {
"version": "6.5.2",
@@ -2897,39 +2225,14 @@
"dev": true
},
"queue": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz",
- "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=",
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.1.tgz",
+ "integrity": "sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw==",
"dev": true,
"requires": {
"inherits": "~2.0.0"
}
},
- "randomatic": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
- "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
- "dev": true,
- "requires": {
- "is-number": "^4.0.0",
- "kind-of": "^6.0.0",
- "math-random": "^1.0.1"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
- },
"read": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
@@ -2940,7 +2243,7 @@
},
"readable-stream": {
"version": "1.1.14",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"requires": {
"core-util-is": "~1.0.0",
@@ -2949,15 +2252,6 @@
"string_decoder": "~0.10.x"
}
},
- "regex-cache": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
- "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
- "dev": true,
- "requires": {
- "is-equal-shallow": "^0.1.3"
- }
- },
"remove-bom-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
@@ -2985,18 +2279,6 @@
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
"dev": true
},
- "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
- },
"replace-ext": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
@@ -3004,32 +2286,46 @@
"dev": true
},
"request": {
- "version": "2.83.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
- "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"requires": {
"aws-sign2": "~0.7.0",
- "aws4": "^1.6.0",
+ "aws4": "^1.8.0",
"caseless": "~0.12.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.1",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
"forever-agent": "~0.6.1",
- "form-data": "~2.3.1",
- "har-validator": "~5.0.3",
- "hawk": "~6.0.2",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.17",
- "oauth-sign": "~0.8.2",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
- "qs": "~6.5.1",
- "safe-buffer": "^5.1.1",
- "stringstream": "~0.0.5",
- "tough-cookie": "~2.3.3",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
- "uuid": "^3.1.0"
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ }
}
},
"require-directory": {
@@ -3054,12 +2350,12 @@
"dev": true
},
"resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
+ "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"dev": true,
"requires": {
- "path-parse": "^1.0.5"
+ "path-parse": "^1.0.6"
}
},
"resolve-options": {
@@ -3086,11 +2382,11 @@
"integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs="
},
"rimraf": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"requires": {
- "glob": "^7.0.5"
+ "glob": "^7.1.3"
}
},
"safe-buffer": {
@@ -3098,6 +2394,11 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
@@ -3110,9 +2411,9 @@
"integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o="
},
"semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
},
"set-blocking": {
"version": "2.0.0",
@@ -3137,23 +2438,15 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
- "sntp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
- "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
- "requires": {
- "hoek": "4.x.x"
- }
- },
"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.9",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
- "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
+ "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -3169,10 +2462,16 @@
"through": "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
+ },
"sshpk": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
- "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
@@ -3181,6 +2480,7 @@
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
@@ -3272,11 +2572,6 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
},
- "stringstream": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
- "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="
- },
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -3285,28 +2580,9 @@
"ansi-regex": "^2.0.0"
}
},
- "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-bom-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
- "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
- "dev": true,
- "requires": {
- "first-chunk-stream": "^1.0.0",
- "strip-bom": "^2.0.0"
- }
- },
"strip-eof": {
"version": "1.0.0",
- "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
},
"supports-color": {
@@ -3383,9 +2659,9 @@
}
},
"through2-filter": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
- "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
+ "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
"dev": true,
"requires": {
"through2": "~2.0.0",
@@ -3393,23 +2669,13 @@
}
},
"to-absolute-glob": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
- "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
+ "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
"dev": true,
"requires": {
- "extend-shallow": "^2.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"
- }
- }
+ "is-absolute": "^1.0.0",
+ "is-negated-glob": "^1.0.0"
}
},
"to-through": {
@@ -3422,11 +2688,13 @@
}
},
"tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "optional": true,
"requires": {
- "punycode": "^1.4.1"
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
}
},
"tr46": {
@@ -3436,15 +2704,15 @@
"optional": true
},
"tslib": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.1.tgz",
- "integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg==",
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
"dev": true
},
"tslint": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz",
- "integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=",
+ "version": "5.12.1",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.12.1.tgz",
+ "integrity": "sha512-sfodBHOucFg6egff8d1BvuofoOQ/nOeYNfbp7LDlKBcLNrL3lmS5zoiDGyOMdT7YsEXAwWpTdAHwOGOc8eRZAw==",
"dev": true,
"requires": {
"babel-code-frame": "^6.22.0",
@@ -3458,13 +2726,13 @@
"resolve": "^1.3.2",
"semver": "^5.3.0",
"tslib": "^1.8.0",
- "tsutils": "^2.12.1"
+ "tsutils": "^2.27.2"
}
},
"tsutils": {
- "version": "2.27.1",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz",
- "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==",
+ "version": "2.29.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
+ "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
"dev": true,
"requires": {
"tslib": "^1.8.1"
@@ -3481,21 +2749,21 @@
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "optional": true
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
},
"type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "optional": true,
"requires": {
"prelude-ls": "~1.1.2"
}
},
"typescript": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz",
- "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==",
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
+ "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
"dev": true
},
"unc-path-regex": {
@@ -3510,19 +2778,19 @@
"integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg=="
},
"unique-stream": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
- "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
+ "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
"dev": true,
"requires": {
- "json-stable-stringify": "^1.0.0",
- "through2-filter": "^2.0.0"
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "through2-filter": "^3.0.0"
}
},
"universalify": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
- "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc="
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"uri-js": {
"version": "4.2.2",
@@ -3530,13 +2798,6 @@
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"requires": {
"punycode": "^2.1.0"
- },
- "dependencies": {
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- }
}
},
"url-parse": {
@@ -3570,21 +2831,15 @@
"dependencies": {
"async": {
"version": "0.9.2",
- "resolved": "http://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
}
}
},
"uuid": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
- "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
- },
- "vali-date": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
- "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
- "dev": true
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"value-or-function": {
"version": "3.0.0",
@@ -3610,37 +2865,51 @@
"requires": {
"clone": "^0.2.0",
"clone-stats": "^0.0.1"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
+ "dev": true
+ }
}
},
"vinyl-fs": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
- "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
+ "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
"dev": true,
"requires": {
- "duplexify": "^3.2.0",
- "glob-stream": "^5.3.2",
+ "fs-mkdirp-stream": "^1.0.0",
+ "glob-stream": "^6.1.0",
"graceful-fs": "^4.0.0",
- "gulp-sourcemaps": "1.6.0",
- "is-valid-glob": "^0.3.0",
+ "is-valid-glob": "^1.0.0",
"lazystream": "^1.0.0",
- "lodash.isequal": "^4.0.0",
- "merge-stream": "^1.0.0",
- "mkdirp": "^0.5.0",
- "object-assign": "^4.0.0",
- "readable-stream": "^2.0.4",
- "strip-bom": "^2.0.0",
- "strip-bom-stream": "^1.0.0",
+ "lead": "^1.0.0",
+ "object.assign": "^4.0.4",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.3.3",
+ "remove-bom-buffer": "^3.0.0",
+ "remove-bom-stream": "^1.2.0",
+ "resolve-options": "^1.1.0",
"through2": "^2.0.0",
- "through2-filter": "^2.0.0",
- "vali-date": "^1.0.0",
- "vinyl": "^1.0.0"
+ "to-through": "^2.0.0",
+ "value-or-function": "^3.0.0",
+ "vinyl": "^2.0.0",
+ "vinyl-sourcemap": "^1.1.0"
},
"dependencies": {
"clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
"dev": true
},
"isarray": {
@@ -3664,12 +2933,6 @@
"util-deprecate": "~1.0.1"
}
},
- "replace-ext": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
- "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
- "dev": true
- },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -3680,14 +2943,17 @@
}
},
"vinyl": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
- "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
+ "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
"dev": true,
"requires": {
- "clone": "^1.0.0",
- "clone-stats": "^0.0.1",
- "replace-ext": "0.0.1"
+ "clone": "^2.1.1",
+ "clone-buffer": "^1.0.0",
+ "clone-stats": "^1.0.0",
+ "cloneable-readable": "^1.0.0",
+ "remove-trailing-separator": "^1.0.1",
+ "replace-ext": "^1.0.0"
}
}
}
@@ -3746,9 +3012,9 @@
}
},
"vscode": {
- "version": "1.1.22",
- "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.22.tgz",
- "integrity": "sha512-G/zu7PRAN1yF80wg+l6ebIexDflU3uXXeabacJuLearTIfObKw4JaI8aeHwDEmpnCkc3MkIr3Bclkju2gtEz6A==",
+ "version": "1.1.30",
+ "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.30.tgz",
+ "integrity": "sha512-YDj5w0TGOcS8XLIdekT4q6LlLV6hv1ZvuT2aGT3KJll4gMz6dUPDgo2VVAf0i0E8igbbZthwvmaUGRwW9yPIaw==",
"dev": true,
"requires": {
"glob": "^7.1.2",
@@ -3756,14 +3022,14 @@
"gulp-filter": "^5.0.1",
"gulp-gunzip": "1.0.0",
"gulp-remote-src-vscode": "^0.5.1",
- "gulp-symdest": "^1.1.1",
"gulp-untar": "^0.0.7",
"gulp-vinyl-zip": "^2.1.2",
"mocha": "^4.0.1",
- "request": "^2.83.0",
+ "request": "^2.88.0",
"semver": "^5.4.1",
"source-map-support": "^0.5.0",
"url-parse": "^1.4.3",
+ "vinyl-fs": "^3.0.3",
"vinyl-source-stream": "^1.1.0"
}
},
@@ -3810,7 +3076,7 @@
},
"winston": {
"version": "2.1.1",
- "resolved": "http://registry.npmjs.org/winston/-/winston-2.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz",
"integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=",
"requires": {
"async": "~1.0.0",
@@ -3824,12 +3090,12 @@
"dependencies": {
"async": {
"version": "1.0.0",
- "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
"integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k="
},
"colors": {
"version": "1.0.3",
- "resolved": "http://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
},
"pkginfo": {
@@ -3846,7 +3112,7 @@
},
"wrap-ansi": {
"version": "2.1.0",
- "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"requires": {
"string-width": "^1.0.1",
@@ -3928,11 +3194,11 @@
}
},
"os-locale": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
- "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
+ "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==",
"requires": {
- "execa": "^0.10.0",
+ "execa": "^1.0.0",
"lcid": "^2.0.0",
"mem": "^4.0.0"
}
@@ -3983,9 +3249,9 @@
}
},
"yazl": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.0.tgz",
- "integrity": "sha512-rgptqKwX/f1/7bIRF1FHb4HGsP5k11QyxBpDl1etUDfNpTa7CNjDOYNPFnIaEzZ9dRq0c47IEJS+sy+T39JCLw==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
+ "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
"dev": true,
"requires": {
"buffer-crc32": "~0.2.3"
diff --git a/package.json b/package.json
index 54ff1440..6433ccc1 100644
--- a/package.json
+++ b/package.json
@@ -267,6 +267,7 @@
},
"devDependencies": {
"@types/fs-extra": "5.0.0",
+ "@types/lodash.kebabcase": "^4.1.5",
"@types/mocha": "^2.2.42",
"@types/node": "^7.0.43",
"@types/require-from-string": "^1.2.0",
@@ -277,6 +278,7 @@
"dependencies": {
"fs-extra": "^6.0.1",
"leetcode-cli": "2.6.1",
+ "lodash.kebabcase": "^4.1.1",
"require-from-string": "^2.0.2"
}
}
diff --git a/src/commands/show.ts b/src/commands/show.ts
index f9796621..d1ce1cf4 100644
--- a/src/commands/show.ts
+++ b/src/commands/show.ts
@@ -65,16 +65,10 @@ async function showProblemInternal(node: IProblem): Promise {
outDir = path.join(outDir, relativePath);
await fse.ensureDir(outDir);
- const result: string = await leetCodeExecutor.showProblem(node.id, language, outDir);
- const reg: RegExp = /\* Source Code:\s*(.*)/;
- const match: RegExpMatchArray | null = result.match(reg);
- if (match && match.length >= 2) {
- const filePath: string = wsl.useWsl() ? await wsl.toWinPath(match[1].trim()) : match[1].trim();
- await vscode.window.showTextDocument(vscode.Uri.file(filePath), { preview: false });
- } else {
- throw new Error("Failed to fetch the problem information.");
- }
+ const originFilePath: string = await leetCodeExecutor.showProblem(node, language, outDir);
+ const filePath: string = wsl.useWsl() ? await wsl.toWinPath(originFilePath) : originFilePath;
+ await vscode.window.showTextDocument(vscode.Uri.file(filePath), { preview: false });
if (!defaultLanguage && leetCodeConfig.get("showSetDefaultLanguageHint")) {
const choice: vscode.MessageItem | undefined = await vscode.window.showInformationMessage(
diff --git a/src/leetCodeExecutor.ts b/src/leetCodeExecutor.ts
index b43b02bc..995c5ca3 100644
--- a/src/leetCodeExecutor.ts
+++ b/src/leetCodeExecutor.ts
@@ -6,8 +6,9 @@ import * as fse from "fs-extra";
import * as path from "path";
import * as requireFromString from "require-from-string";
import * as vscode from "vscode";
-import { Endpoint } from "./shared";
+import { Endpoint, IProblem } from "./shared";
import { executeCommand, executeCommandWithProgress } from "./utils/cpUtils";
+import { genFileName } from "./utils/problemUtils";
import { DialogOptions, openUrl } from "./utils/uiUtils";
import * as wsl from "./utils/wslUtils";
@@ -74,8 +75,16 @@ class LeetCodeExecutor {
);
}
- public async showProblem(id: string, language: string, outDir: string): Promise {
- return await this.executeCommandWithProgressEx("Fetching problem data...", "node", [await this.getLeetCodeBinaryPath(), "show", id, "-gx", "-l", language, "-o", `"${outDir}"`]);
+ public async showProblem(node: IProblem, language: string, outDir: string): Promise {
+ const fileName: string = genFileName(node, language);
+ const filePath: string = path.join(outDir, fileName);
+
+ if (!await fse.pathExists(filePath)) {
+ const codeTemplate: string = await this.executeCommandWithProgressEx("Fetching problem data...", "node", [await this.getLeetCodeBinaryPath(), "show", node.id, "-cx", "-l", language]);
+ await fse.writeFile(filePath, codeTemplate);
+ }
+
+ return filePath;
}
public async listSessions(): Promise {
diff --git a/src/shared.ts b/src/shared.ts
index 5e58a351..5c21e5ab 100644
--- a/src/shared.ts
+++ b/src/shared.ts
@@ -29,6 +29,23 @@ export const languages: string[] = [
"swift",
];
+export const langExt: Map = new Map([
+ ["bash", "sh"],
+ ["c", "c"],
+ ["cpp", "cpp"],
+ ["csharp", "cs"],
+ ["golang", "go"],
+ ["java", "java"],
+ ["javascript", "js"],
+ ["kotlin", "kt"],
+ ["mysql", "sql"],
+ ["python", "py"],
+ ["python3", "py"],
+ ["ruby", "rb"],
+ ["scala", "scala"],
+ ["swift", "swift"],
+]);
+
export enum ProblemState {
AC = 1,
NotAC = 2,
diff --git a/src/utils/osUtils.ts b/src/utils/osUtils.ts
index c2a9c237..7637f8b0 100644
--- a/src/utils/osUtils.ts
+++ b/src/utils/osUtils.ts
@@ -6,7 +6,7 @@ export function isWindows(): boolean {
}
export function usingCmd(): boolean {
- const comSpec: string = process.env.ComSpec;
+ const comSpec: string | undefined = process.env.ComSpec;
// 'cmd.exe' is used as a fallback if process.env.ComSpec is unavailable.
if (!comSpec) {
return true;
diff --git a/src/utils/problemUtils.ts b/src/utils/problemUtils.ts
new file mode 100644
index 00000000..c7946bbc
--- /dev/null
+++ b/src/utils/problemUtils.ts
@@ -0,0 +1,16 @@
+import kebabCase = require("lodash.kebabcase");
+import { IProblem, langExt } from "../shared";
+
+export function genFileExt(language: string): string {
+ const ext: string | undefined = langExt.get(language);
+ if (!ext) {
+ throw new Error(`The language "${language}" is not supported.`);
+ }
+ return ext;
+}
+
+export function genFileName(node: IProblem, language: string): string {
+ const slug: string = kebabCase(node.name);
+ const ext: string = genFileExt(language);
+ return `${node.id}.${slug}.${ext}`;
+}
From 06e33d21cb4e87a8d8e5ca91ac8de5a00d47b124 Mon Sep 17 00:00:00 2001
From: Edvard Chen
Date: Sun, 24 Feb 2019 20:29:05 +0800
Subject: [PATCH 006/163] Pass http proxy as env to command (fix #136, #117)
(#147)
---
src/leetCodeManager.ts | 6 +++++-
src/utils/cpUtils.ts | 17 ++++++++++++++++-
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/src/leetCodeManager.ts b/src/leetCodeManager.ts
index 0456d2d1..1db3f5e2 100644
--- a/src/leetCodeManager.ts
+++ b/src/leetCodeManager.ts
@@ -7,6 +7,7 @@ import * as vscode from "vscode";
import { leetCodeChannel } from "./leetCodeChannel";
import { leetCodeExecutor } from "./leetCodeExecutor";
import { UserStatus } from "./shared";
+import { createEnvOption } from "./utils/cpUtils";
import { DialogType, promptForOpenOutputChannel } from "./utils/uiUtils";
import * as wsl from "./utils/wslUtils";
@@ -42,7 +43,10 @@ class LeetCodeManager extends EventEmitter {
const childProc: cp.ChildProcess = wsl.useWsl()
? cp.spawn("wsl", ["node", leetCodeBinaryPath, "user", "-l"], { shell: true })
- : cp.spawn("node", [leetCodeBinaryPath, "user", "-l"], { shell: true });
+ : cp.spawn("node", [leetCodeBinaryPath, "user", "-l"], {
+ shell: true,
+ env: createEnvOption(),
+ });
childProc.stdout.on("data", (data: string | Buffer) => {
data = data.toString();
diff --git a/src/utils/cpUtils.ts b/src/utils/cpUtils.ts
index eeb7c007..6e265e48 100644
--- a/src/utils/cpUtils.ts
+++ b/src/utils/cpUtils.ts
@@ -9,7 +9,7 @@ export async function executeCommand(command: string, args: string[], options: c
return new Promise((resolve: (res: string) => void, reject: (e: Error) => void): void => {
let result: string = "";
- const childProc: cp.ChildProcess = cp.spawn(command, args, options);
+ const childProc: cp.ChildProcess = cp.spawn(command, args, { ...options, env: createEnvOption() });
childProc.stdout.on("data", (data: string | Buffer) => {
data = data.toString();
@@ -45,3 +45,18 @@ export async function executeCommandWithProgress(message: string, command: strin
});
return result;
}
+
+// clone process.env and add http proxy
+export function createEnvOption(): {} {
+ const proxy: string | undefined = getHttpAgent();
+ if (proxy) {
+ const env: any = Object.create(process.env);
+ env.http_proxy = proxy;
+ return env;
+ }
+ return process.env;
+}
+
+function getHttpAgent(): string | undefined {
+ return vscode.workspace.getConfiguration("http").get("proxy");
+}
From 5b7a5848a82b57d8479776a2a07ea1c7f51406d8 Mon Sep 17 00:00:00 2001
From: Sheng Chen
Date: Sun, 24 Feb 2019 20:55:40 +0800
Subject: [PATCH 007/163] Prepare 0.11.0 (#150)
---
ACKNOWLEDGEMENTS.md | 2 ++
CHANGELOG.md | 8 +++++++-
package-lock.json | 6 +++---
package.json | 2 +-
4 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/ACKNOWLEDGEMENTS.md b/ACKNOWLEDGEMENTS.md
index fab81786..8dc829ef 100644
--- a/ACKNOWLEDGEMENTS.md
+++ b/ACKNOWLEDGEMENTS.md
@@ -8,3 +8,5 @@ A big thanks to the following individuals for contributing:
- [@Vigilans](https://github.com/Vigilans) for contributing [#94](https://github.com/jdneo/vscode-leetcode/pull/94)
- [@ringcrl](https://github.com/ringcrl) for contributing [#123](https://github.com/jdneo/vscode-leetcode/pull/123)
- [@pujiaxun](https://github.com/pujiaxun) for contributing [#143](https://github.com/jdneo/vscode-leetcode/pull/143)
+- [@edvardchen](https://github.com/edvardchen) for contributing [#147](https://github.com/jdneo/vscode-leetcode/pull/147)
+- [@poppinlp](https://github.com/poppinlp) for contributing [#149](https://github.com/jdneo/vscode-leetcode/pull/149)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cf77cb28..84d1ac9c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,11 +3,17 @@ All notable changes to the "leetcode" extension will be documented in this file.
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
-## [Unreleased]
+## [0.11.0]
## Added
- Add new setting: `leetcode.outputFolder` to customize the sub-directory to save the files generated by 'Show Problem' [#119](https://github.com/jdneo/vscode-leetcode/issues/119)
- Add tooltips for sub-category nodes in LeetCode Explorer [#143](https://github.com/jdneo/vscode-leetcode/pull/143)
+## Changed
+- Now when triggering 'Show Problem', the extension will not generate a new file if it already exists [#59](https://github.com/jdneo/vscode-leetcode/issues/59)
+
+## Fixed
+- Log in timeout when proxy is enabled [#117](https://github.com/jdneo/vscode-leetcode/issues/117)
+
## [0.10.2]
## Fixed
- Test cases cannot have double quotes [#60](https://github.com/jdneo/vscode-leetcode/issues/60)
diff --git a/package-lock.json b/package-lock.json
index 0fb6f995..632f6f87 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "vscode-leetcode",
- "version": "0.10.2",
+ "version": "0.11.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -857,7 +857,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -872,7 +872,7 @@
},
"string_decoder": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
diff --git a/package.json b/package.json
index 6433ccc1..9f2db0af 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "vscode-leetcode",
"displayName": "LeetCode",
"description": "Solve LeetCode problems in VS Code",
- "version": "0.10.2",
+ "version": "0.11.0",
"author": "Sheng Chen",
"publisher": "shengchen",
"license": "MIT",
From 7092f8ddc8a3dac13fea90f0ad97bfe453941ecb Mon Sep 17 00:00:00 2001
From: Sheng Chen
Date: Fri, 1 Mar 2019 11:45:06 +0800
Subject: [PATCH 008/163] Speed up the load time of the explorer (#167)
---
src/explorer/LeetCodeTreeDataProvider.ts | 39 +++++++++++-------------
1 file changed, 18 insertions(+), 21 deletions(-)
diff --git a/src/explorer/LeetCodeTreeDataProvider.ts b/src/explorer/LeetCodeTreeDataProvider.ts
index 25ebbb8b..593dd103 100644
--- a/src/explorer/LeetCodeTreeDataProvider.ts
+++ b/src/explorer/LeetCodeTreeDataProvider.ts
@@ -65,27 +65,24 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider void): Promise => {
- await this.getProblemData();
- resolve([
- new LeetCodeNode(Object.assign({}, defaultProblem, {
- id: Category.Difficulty,
- name: Category.Difficulty,
- }), "ROOT", false),
- new LeetCodeNode(Object.assign({}, defaultProblem, {
- id: Category.Tag,
- name: Category.Tag,
- }), "ROOT", false),
- new LeetCodeNode(Object.assign({}, defaultProblem, {
- id: Category.Company,
- name: Category.Company,
- }), "ROOT", false),
- new LeetCodeNode(Object.assign({}, defaultProblem, {
- id: Category.Favorite,
- name: Category.Favorite,
- }), "ROOT", false),
- ]);
- });
+ return [
+ new LeetCodeNode(Object.assign({}, defaultProblem, {
+ id: Category.Difficulty,
+ name: Category.Difficulty,
+ }), "ROOT", false),
+ new LeetCodeNode(Object.assign({}, defaultProblem, {
+ id: Category.Tag,
+ name: Category.Tag,
+ }), "ROOT", false),
+ new LeetCodeNode(Object.assign({}, defaultProblem, {
+ id: Category.Company,
+ name: Category.Company,
+ }), "ROOT", false),
+ new LeetCodeNode(Object.assign({}, defaultProblem, {
+ id: Category.Favorite,
+ name: Category.Favorite,
+ }), "ROOT", false),
+ ];
} else {
switch (element.name) { // First-level
case Category.Favorite:
From 390a313cbf5acc4087612c0352bf8d8972ca08b4 Mon Sep 17 00:00:00 2001
From: PoppinL
Date: Sat, 2 Mar 2019 11:54:58 +0800
Subject: [PATCH 009/163] fix: use a new icon svg (#175)
---
resources/LeetCode.svg | 49 +-----------------------------------------
1 file changed, 1 insertion(+), 48 deletions(-)
diff --git a/resources/LeetCode.svg b/resources/LeetCode.svg
index 99109742..3a17d608 100644
--- a/resources/LeetCode.svg
+++ b/resources/LeetCode.svg
@@ -1,48 +1 @@
-
-
-
+
\ No newline at end of file
From a39de3cd4dad76f7bbc13736a851bb2bfea4cfaf Mon Sep 17 00:00:00 2001
From: Sheng Chen
Date: Sat, 2 Mar 2019 16:36:36 +0800
Subject: [PATCH 010/163] feat: add a new command to support switching the
default language (#178)
---
CHANGELOG.md | 4 ++++
README.md | 2 ++
docs/README_zh-CN.md | 2 ++
package.json | 6 ++++++
src/commands/language.ts | 38 ++++++++++++++++++++++++++++++++++++++
src/extension.ts | 2 ++
6 files changed, 54 insertions(+)
create mode 100644 src/commands/language.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 84d1ac9c..ef04d8cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,10 @@ All notable changes to the "leetcode" extension will be documented in this file.
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
+## [0.12.0]
+## Added
+- Add new command `LeetCode: Switch Default Language` to support switching the default language [#115](https://github.com/jdneo/vscode-leetcode/issues/115)
+
## [0.11.0]
## Added
- Add new setting: `leetcode.outputFolder` to customize the sub-directory to save the files generated by 'Show Problem' [#119](https://github.com/jdneo/vscode-leetcode/issues/119)
diff --git a/README.md b/README.md
index 0cfae21e..f18fd631 100644
--- a/README.md
+++ b/README.md
@@ -71,6 +71,8 @@
> Note: If no folder is opened in VS Code, the extension will save the problem files in **$HOME/.leetcode/**.
+ > You can switch the default language by triggering the command: `LeetCode: Switch Default Language`.
+
---
### Submit the Answer
diff --git a/docs/README_zh-CN.md b/docs/README_zh-CN.md
index ef1c6824..fa01450e 100644
--- a/docs/README_zh-CN.md
+++ b/docs/README_zh-CN.md
@@ -71,6 +71,8 @@
> 注意:若当前 VS Code 没有已打开的文件夹,则生成的题目文件会存储于 **$HOME/.leetcode/** 目录下。
+ > 注意:你可以通过 `LeetCode: Switch Default Language` 命令变更答题时默认使用编程语言。
+
---
### 提交答案
diff --git a/package.json b/package.json
index 9f2db0af..0d5451c1 100644
--- a/package.json
+++ b/package.json
@@ -36,6 +36,7 @@
"onCommand:leetcode.searchProblem",
"onCommand:leetcode.testSolution",
"onCommand:leetcode.submitSolution",
+ "onCommand:leetcode.switchDefaultLanguage",
"onView:leetCodeExplorer"
],
"main": "./out/src/extension",
@@ -111,6 +112,11 @@
"command": "leetcode.submitSolution",
"title": "Submit to LeetCode",
"category": "LeetCode"
+ },
+ {
+ "command": "leetcode.switchDefaultLanguage",
+ "title": "Switch Default Language",
+ "category": "LeetCode"
}
],
"viewsContainers": {
diff --git a/src/commands/language.ts b/src/commands/language.ts
new file mode 100644
index 00000000..5728e0a9
--- /dev/null
+++ b/src/commands/language.ts
@@ -0,0 +1,38 @@
+// Copyright (c) jdneo. All rights reserved.
+// Licensed under the MIT license.
+
+import { QuickPickItem, window, workspace, WorkspaceConfiguration } from "vscode";
+import { languages } from "../shared";
+
+export async function switchDefaultLanguage(): Promise {
+ const leetCodeConfig: WorkspaceConfiguration = workspace.getConfiguration("leetcode");
+ const defaultLanguage: string | undefined = leetCodeConfig.get("defaultLanguage");
+ const languageItems: QuickPickItem[] = [];
+ for (const language of languages) {
+ languageItems.push({
+ label: language,
+ description: defaultLanguage === language ? "Currently used" : undefined,
+ });
+ }
+ // Put the default language at the top of the list
+ languageItems.sort((a: QuickPickItem, b: QuickPickItem) => {
+ if (a.description) {
+ return Number.MIN_SAFE_INTEGER;
+ } else if (b.description) {
+ return Number.MAX_SAFE_INTEGER;
+ }
+ return a.label.localeCompare(b.label);
+ });
+
+ const selectedItem: QuickPickItem | undefined = await window.showQuickPick(languageItems, {
+ placeHolder: "Please the default language",
+ ignoreFocusOut: true,
+ });
+
+ if (!selectedItem) {
+ return;
+ }
+
+ leetCodeConfig.update("defaultLanguage", selectedItem.label, true /* Global */);
+ window.showInformationMessage(`Successfully set the default language to ${selectedItem.label}`);
+}
diff --git a/src/extension.ts b/src/extension.ts
index 9685b3f4..aaf2ee4f 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -4,6 +4,7 @@
import * as vscode from "vscode";
import { codeLensProvider } from "./codeLensProvider";
import * as cache from "./commands/cache";
+import { switchDefaultLanguage } from "./commands/language";
import * as plugin from "./commands/plugin";
import * as session from "./commands/session";
import * as show from "./commands/show";
@@ -47,6 +48,7 @@ export async function activate(context: vscode.ExtensionContext): Promise
vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()),
vscode.commands.registerCommand("leetcode.testSolution", (uri?: vscode.Uri) => test.testSolution(uri)),
vscode.commands.registerCommand("leetcode.submitSolution", (uri?: vscode.Uri) => submit.submitSolution(uri)),
+ vscode.commands.registerCommand("leetcode.switchDefaultLanguage", () => switchDefaultLanguage()),
);
await leetCodeExecutor.switchEndpoint(plugin.getLeetCodeEndpoint());
From d3d522a1524fa6f5eab305a53fc3d2dceadf5bef Mon Sep 17 00:00:00 2001
From: PoppinL
Date: Sun, 3 Mar 2019 15:53:40 +0800
Subject: [PATCH 011/163] chore: add github issue templates (#171)
---
.github/ISSUE_TEMPLATE.md | 1 +
.github/ISSUE_TEMPLATE/bug.md | 24 ++++++++++++++++++++++++
.github/ISSUE_TEMPLATE/feature.md | 16 ++++++++++++++++
.github/ISSUE_TEMPLATE/question.md | 10 ++++++++++
.vscodeignore | 1 +
5 files changed, 52 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE.md
create mode 100644 .github/ISSUE_TEMPLATE/bug.md
create mode 100644 .github/ISSUE_TEMPLATE/feature.md
create mode 100644 .github/ISSUE_TEMPLATE/question.md
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 00000000..06563787
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1 @@
+*It's really recommended to create an issue by a template.*
diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
new file mode 100644
index 00000000..c519c3bb
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.md
@@ -0,0 +1,24 @@
+---
+name: 🐛 Bug report
+about: Create a report to help us improve
+---
+
+## 🐛 Bug Report
+
+A clear and concise description of what the bug is.
+
+## To Reproduce
+
+Steps to reproduce the behavior.
+
+## Expected behavior
+
+A clear and concise description of what you expected to happen.
+
+## Your Environment
+
+- *os*:
+- *extension settings*:
+- *nodejs version*:
+- *vscode version*:
+- *extension version*:
diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md
new file mode 100644
index 00000000..17c8f5ab
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature.md
@@ -0,0 +1,16 @@
+---
+name: 🚀 Feature Proposal
+about: Submit a proposal for a new feature
+---
+
+## 🚀 Feature Proposal
+
+A clear and concise description of what the feature is.
+
+## Motivation
+
+Please outline the motivation for the proposal.
+
+## Contribution
+
+Please describe the solution if you'd like to submit a PR.
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
new file mode 100644
index 00000000..fc6d387f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -0,0 +1,10 @@
+---
+name: 💬 Questions / Help
+about: If you have questions, please check our documents first
+---
+
+Before you submit an question we recommend you to check out the [DOCUMENT](https://github.com/jdneo/vscode-leetcode/blob/master/README.md) and [TROUBLESHOOTING PAGE](https://github.com/jdneo/vscode-leetcode/wiki/Troubleshooting) first.
+
+## 💬 Questions and Help
+
+Please outline the questions.
diff --git a/.vscodeignore b/.vscodeignore
index 3a0fe8ce..8cdceec0 100644
--- a/.vscodeignore
+++ b/.vscodeignore
@@ -12,3 +12,4 @@ tslint.json
**/*.gif
ACKNOWLEDGEMENTS.md
docs
+.github
From bc6144747d651d06b7c064980e9177b3c0c9acb2 Mon Sep 17 00:00:00 2001
From: Sheng Chen
Date: Sun, 3 Mar 2019 19:09:19 +0800
Subject: [PATCH 012/163] Use internal build cli (#179)
---
README.md | 2 +-
docs/README_zh-CN.md | 2 +-
package-lock.json | 40 ++++++++++++++++++++--------------------
package.json | 2 +-
src/leetCodeExecutor.ts | 2 +-
src/shared.ts | 4 ++++
6 files changed, 28 insertions(+), 24 deletions(-)
diff --git a/README.md b/README.md
index f18fd631..7f953679 100644
--- a/README.md
+++ b/README.md
@@ -120,7 +120,7 @@
|---|---|---|
| `leetcode.hideSolved` | Specify to hide the solved problems or not | `false` |
| `leetcode.showLocked` | Specify to show the locked problems or not. Only Premium users could open the locked problems | `false` |
-| `leetcode.defaultLanguage` | Specify the default language used to solve the problem. Supported languages are: `bash`, `c`, `cpp`, `csharp`, `golang`, `java`, `javascript`, `kotlin`, `mysql`, `python`,`python3`,`ruby`,`scala`,`swift` | `N/A` |
+| `leetcode.defaultLanguage` | Specify the default language used to solve the problem. Supported languages are: `bash`, `c`, `cpp`, `csharp`, `golang`, `java`, `javascript`, `kotlin`, `mysql`, `php`, `python`,`python3`,`ruby`,`rust`, `scala`,`swift` | `N/A` |
| `leetcode.useWsl` | Specify whether to use WSL or not | `false` |
| `leetcode.endpoint` | Specify the active endpoint. Supported endpoints are: `leetcode`, `leetcode-cn` | `leetcode` |
| `leetcode.outputFolder`| Specify the relative path to save the problem files. Besides using customized path, there are also several reserved words which can be used here: - `${tag}`: Categorize the problem according to their tags.
- `${language}`: Categorize the problem according to their language.
- `${difficulty}`: Categorize the problem according to their difficulty.
| N/A |
diff --git a/docs/README_zh-CN.md b/docs/README_zh-CN.md
index fa01450e..b1e8cec5 100644
--- a/docs/README_zh-CN.md
+++ b/docs/README_zh-CN.md
@@ -120,7 +120,7 @@
|---|---|---|
| `leetcode.hideSolved` | 指定是否要隐藏已解决的问题 | `false` |
| `leetcode.showLocked` | 指定是否显示付费题目,只有付费账户才可以打开付费题目 | `false` |
-| `leetcode.defaultLanguage` | 指定答题时使用的默认语言,可选语言有:`bash`, `c`, `cpp`, `csharp`, `golang`, `java`, `javascript`, `kotlin`, `mysql`, `python`,`python3`,`ruby`,`scala`,`swift` | `N/A` |
+| `leetcode.defaultLanguage` | 指定答题时使用的默认语言,可选语言有:`bash`, `c`, `cpp`, `csharp`, `golang`, `java`, `javascript`, `kotlin`, `mysql`, `php`, `python`,`python3`,`ruby`, `rust`, `scala`,`swift` | `N/A` |
| `leetcode.useWsl` | 指定是否启用 WSL | `false` |
| `leetcode.endpoint` | 指定使用的终端,可用终端有:`leetcode`, `leetcode-cn` | `leetcode` |
| `leetcode.outputFolder` | 指定保存文件时所用的相对文件夹路径。除了用户自定义路径外,也可以使用保留项,包括:- `${tag}`: 根据题目的类别进行分类。
- `${language}`: 根据题目的语言进行分类。
- `${difficulty}`: 根据题目的难度进行分类。
| N/A |
diff --git a/package-lock.json b/package-lock.json
index 632f6f87..edf39d94 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1602,26 +1602,6 @@
"flush-write-stream": "^1.0.2"
}
},
- "leetcode-cli": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/leetcode-cli/-/leetcode-cli-2.6.1.tgz",
- "integrity": "sha512-B3OXkxcsHUBnXoO2X5JOt2tDAEjMO+Mf3PxVJwgLhjdbK5XeR2GKDa6YcMuBv5fhJRzGUfQ+l6KEMQE6lRl8eg==",
- "requires": {
- "ansi-styles": "3.2.1",
- "cheerio": "0.20.0",
- "he": "1.2.0",
- "mkdirp": "0.5.1",
- "moment": "^2.20.1",
- "nconf": "0.10.0",
- "ora": "3.0.0",
- "prompt": "1.0.0",
- "request": "2.88.0",
- "supports-color": "5.5.0",
- "underscore": "1.9.1",
- "wordwrap": "1.0.0",
- "yargs": "12.0.4"
- }
- },
"levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
@@ -3011,6 +2991,26 @@
}
}
},
+ "vsc-leetcode-cli": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/vsc-leetcode-cli/-/vsc-leetcode-cli-2.6.2.tgz",
+ "integrity": "sha512-tJC2Cj64MNdPnGP+ozju/uOq2qD8mJoPd4jFodA7fFXylrMKtG2JSNz9nZkKrU63iRgDyjRwljHvz5U5Et42fg==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "cheerio": "0.20.0",
+ "he": "1.2.0",
+ "mkdirp": "0.5.1",
+ "moment": "^2.20.1",
+ "nconf": "0.10.0",
+ "ora": "3.0.0",
+ "prompt": "1.0.0",
+ "request": "2.88.0",
+ "supports-color": "5.5.0",
+ "underscore": "1.9.1",
+ "wordwrap": "1.0.0",
+ "yargs": "12.0.4"
+ }
+ },
"vscode": {
"version": "1.1.30",
"resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.30.tgz",
diff --git a/package.json b/package.json
index 0d5451c1..2d2494f5 100644
--- a/package.json
+++ b/package.json
@@ -283,7 +283,7 @@
},
"dependencies": {
"fs-extra": "^6.0.1",
- "leetcode-cli": "2.6.1",
+ "vsc-leetcode-cli": "2.6.2",
"lodash.kebabcase": "^4.1.1",
"require-from-string": "^2.0.2"
}
diff --git a/src/leetCodeExecutor.ts b/src/leetCodeExecutor.ts
index 995c5ca3..373bda11 100644
--- a/src/leetCodeExecutor.ts
+++ b/src/leetCodeExecutor.ts
@@ -17,7 +17,7 @@ class LeetCodeExecutor {
private leetCodeRootPathInWsl: string;
constructor() {
- this.leetCodeRootPath = path.join(__dirname, "..", "..", "node_modules", "leetcode-cli");
+ this.leetCodeRootPath = path.join(__dirname, "..", "..", "node_modules", "vsc-leetcode-cli");
this.leetCodeRootPathInWsl = "";
}
diff --git a/src/shared.ts b/src/shared.ts
index 5c21e5ab..942e5ba1 100644
--- a/src/shared.ts
+++ b/src/shared.ts
@@ -22,9 +22,11 @@ export const languages: string[] = [
"javascript",
"kotlin",
"mysql",
+ "php",
"python",
"python3",
"ruby",
+ "rust",
"scala",
"swift",
];
@@ -39,9 +41,11 @@ export const langExt: Map = new Map([
["javascript", "js"],
["kotlin", "kt"],
["mysql", "sql"],
+ ["php", "php"],
["python", "py"],
["python3", "py"],
["ruby", "rb"],
+ ["rust", "rs"],
["scala", "scala"],
["swift", "swift"],
]);
From e93470230e4e5a3b357dedcdaca9888140caed59 Mon Sep 17 00:00:00 2001
From: Sheng Chen
Date: Sun, 3 Mar 2019 19:32:45 +0800
Subject: [PATCH 013/163] Prepare 0.12.0 (#180)
---
ACKNOWLEDGEMENTS.md | 2 +-
CHANGELOG.md | 5 +++++
package-lock.json | 2 +-
package.json | 2 +-
4 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/ACKNOWLEDGEMENTS.md b/ACKNOWLEDGEMENTS.md
index 8dc829ef..91c0d2d5 100644
--- a/ACKNOWLEDGEMENTS.md
+++ b/ACKNOWLEDGEMENTS.md
@@ -9,4 +9,4 @@ A big thanks to the following individuals for contributing:
- [@ringcrl](https://github.com/ringcrl) for contributing [#123](https://github.com/jdneo/vscode-leetcode/pull/123)
- [@pujiaxun](https://github.com/pujiaxun) for contributing [#143](https://github.com/jdneo/vscode-leetcode/pull/143)
- [@edvardchen](https://github.com/edvardchen) for contributing [#147](https://github.com/jdneo/vscode-leetcode/pull/147)
-- [@poppinlp](https://github.com/poppinlp) for contributing [#149](https://github.com/jdneo/vscode-leetcode/pull/149)
+- [@poppinlp](https://github.com/poppinlp) for contributing [#149](https://github.com/jdneo/vscode-leetcode/pull/149), [#171](https://github.com/jdneo/vscode-leetcode/pull/171), [#175](https://github.com/jdneo/vscode-leetcode/pull/175)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ef04d8cf..f3265517 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,11 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
## [0.12.0]
## Added
- Add new command `LeetCode: Switch Default Language` to support switching the default language [#115](https://github.com/jdneo/vscode-leetcode/issues/115)
+- Support `PHP` and `Rust` ([#83](https://github.com/jdneo/vscode-leetcode/issues/83), [#103](https://github.com/jdneo/vscode-leetcode/issues/103))
+
+## Fixed
+- Cannot retrieve time and memory result [#105](https://github.com/jdneo/vscode-leetcode/issues/105)
+- Power operator displays in a wrong way [#74](https://github.com/jdneo/vscode-leetcode/issues/74)
## [0.11.0]
## Added
diff --git a/package-lock.json b/package-lock.json
index edf39d94..1869c5ed 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "vscode-leetcode",
- "version": "0.11.0",
+ "version": "0.12.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 2d2494f5..8a316d76 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "vscode-leetcode",
"displayName": "LeetCode",
"description": "Solve LeetCode problems in VS Code",
- "version": "0.11.0",
+ "version": "0.12.0",
"author": "Sheng Chen",
"publisher": "shengchen",
"license": "MIT",
From ccb62f54e4bbf2839d15525bef6b0516863595e2 Mon Sep 17 00:00:00 2001
From: Sheng Chen
Date: Mon, 4 Mar 2019 10:17:40 +0800
Subject: [PATCH 014/163] bug: wrong order of the difficulty nodes (#182)
---
src/explorer/LeetCodeTreeDataProvider.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/explorer/LeetCodeTreeDataProvider.ts b/src/explorer/LeetCodeTreeDataProvider.ts
index 593dd103..da9ca751 100644
--- a/src/explorer/LeetCodeTreeDataProvider.ts
+++ b/src/explorer/LeetCodeTreeDataProvider.ts
@@ -249,6 +249,7 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider {
@@ -260,6 +261,7 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider b.name) - Number(a.name < b.name);
}
});
+ break;
default:
break;
}
From b85611b59fb28156cec98ceb23336c85f5cae126 Mon Sep 17 00:00:00 2001
From: ZainChen <2384439266@qq.com>
Date: Mon, 11 Mar 2019 09:47:11 +0800
Subject: [PATCH 015/163] vscode versions to v1.31.0, add collapes all. (#197)
---
package-lock.json | 10 +++-------
package.json | 2 +-
src/extension.ts | 2 +-
3 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1869c5ed..c9156d9c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -55,8 +55,7 @@
"acorn": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
- "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=",
- "optional": true
+ "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc="
},
"acorn-globals": {
"version": "1.0.9",
@@ -528,8 +527,7 @@
"cssom": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz",
- "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==",
- "optional": true
+ "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A=="
},
"cssstyle": {
"version": "0.2.37",
@@ -2129,8 +2127,7 @@
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "optional": true
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
},
"process-nextick-args": {
"version": "2.0.0",
@@ -2735,7 +2732,6 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "optional": true,
"requires": {
"prelude-ls": "~1.1.2"
}
diff --git a/package.json b/package.json
index 8a316d76..fa39fb68 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"license": "MIT",
"icon": "resources/LeetCode.png",
"engines": {
- "vscode": "^1.23.0"
+ "vscode": "^1.30.1"
},
"repository": {
"type": "git",
diff --git a/src/extension.ts b/src/extension.ts
index aaf2ee4f..e1321f61 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -35,7 +35,7 @@ export async function activate(context: vscode.ExtensionContext): Promise
leetCodeStatusBarItem,
leetCodeChannel,
leetCodeResultProvider,
- vscode.window.registerTreeDataProvider("leetCodeExplorer", leetCodeTreeDataProvider),
+ vscode.window.createTreeView("leetCodeExplorer", { treeDataProvider: leetCodeTreeDataProvider, showCollapseAll: true }),
vscode.languages.registerCodeLensProvider({ scheme: "file" }, codeLensProvider),
vscode.commands.registerCommand("leetcode.deleteCache", () => cache.deleteCache()),
vscode.commands.registerCommand("leetcode.toggleLeetCodeCn", () => plugin.switchEndpoint()),
From f77737d5549761e394f608628c53e317693dd3ab Mon Sep 17 00:00:00 2001
From: Hyuni
Date: Tue, 12 Mar 2019 19:45:56 +0800
Subject: [PATCH 016/163] Add Click the tree explorer should open the topic
(#132) (#186)
---
package.json | 15 ++++
src/explorer/LeetCodeNode.ts | 10 +++
src/explorer/LeetCodeTreeDataProvider.ts | 1 +
src/extension.ts | 4 +
src/leetCodeExecutor.ts | 10 ++-
src/leetCodePreviewProvider.ts | 107 +++++++++++++++++++++++
6 files changed, 144 insertions(+), 3 deletions(-)
create mode 100644 src/leetCodePreviewProvider.ts
diff --git a/package.json b/package.json
index fa39fb68..f86cfa7b 100644
--- a/package.json
+++ b/package.json
@@ -33,6 +33,7 @@
"onCommand:leetcode.createSession",
"onCommand:leetcode.refreshExplorer",
"onCommand:leetcode.showProblem",
+ "onCommand:leetcode.previewProblem",
"onCommand:leetcode.searchProblem",
"onCommand:leetcode.testSolution",
"onCommand:leetcode.submitSolution",
@@ -94,6 +95,11 @@
"title": "Show Problem",
"category": "LeetCode"
},
+ {
+ "command": "leetcode.previewProblem",
+ "title": "Preview Problem",
+ "category": "LeetCode"
+ },
{
"command": "leetcode.searchProblem",
"title": "Search Problem",
@@ -164,12 +170,21 @@
"command": "leetcode.showProblem",
"when": "view == leetCodeExplorer && viewItem == problem",
"group": "leetcode@1"
+ },
+ {
+ "command": "leetcode.previewProblem",
+ "when": "view == leetCodeExplorer && viewItem == problem",
+ "group": "leetcode@1"
}
],
"commandPalette": [
{
"command": "leetcode.showProblem",
"when": "never"
+ },
+ {
+ "command": "leetcode.previewProblem",
+ "when": "never"
}
],
"explorer/context": [
diff --git a/src/explorer/LeetCodeNode.ts b/src/explorer/LeetCodeNode.ts
index ad5211cb..3f685b70 100644
--- a/src/explorer/LeetCodeNode.ts
+++ b/src/explorer/LeetCodeNode.ts
@@ -1,6 +1,7 @@
// Copyright (c) jdneo. All rights reserved.
// Licensed under the MIT license.
+import { Command } from "vscode";
import { IProblem, ProblemState } from "../shared";
export class LeetCodeNode {
@@ -48,4 +49,13 @@ export class LeetCodeNode {
public get parentName(): string {
return this.parentNodeName;
}
+
+ public get previewCommand(): Command {
+ return {
+ title: "Preview Problem",
+ command: "leetcode.previewProblem",
+ arguments: [this],
+ };
+ }
+
}
diff --git a/src/explorer/LeetCodeTreeDataProvider.ts b/src/explorer/LeetCodeTreeDataProvider.ts
index da9ca751..8b5ed89d 100644
--- a/src/explorer/LeetCodeTreeDataProvider.ts
+++ b/src/explorer/LeetCodeTreeDataProvider.ts
@@ -52,6 +52,7 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider
});
const leetCodeTreeDataProvider: LeetCodeTreeDataProvider = new LeetCodeTreeDataProvider(context);
+ leetCodePreviewProvider.initialize(context);
leetCodeResultProvider.initialize(context);
context.subscriptions.push(
leetCodeStatusBarItem,
leetCodeChannel,
+ leetCodePreviewProvider,
leetCodeResultProvider,
vscode.window.createTreeView("leetCodeExplorer", { treeDataProvider: leetCodeTreeDataProvider, showCollapseAll: true }),
vscode.languages.registerCodeLensProvider({ scheme: "file" }, codeLensProvider),
@@ -43,6 +46,7 @@ export async function activate(context: vscode.ExtensionContext): Promise
vscode.commands.registerCommand("leetcode.signout", () => leetCodeManager.signOut()),
vscode.commands.registerCommand("leetcode.selectSessions", () => session.selectSession()),
vscode.commands.registerCommand("leetcode.createSession", () => session.createSession()),
+ vscode.commands.registerCommand("leetcode.previewProblem", (node: LeetCodeNode) => leetCodePreviewProvider.preview(node)),
vscode.commands.registerCommand("leetcode.showProblem", (node: LeetCodeNode) => show.showProblem(node)),
vscode.commands.registerCommand("leetcode.searchProblem", () => show.searchProblem()),
vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()),
diff --git a/src/leetCodeExecutor.ts b/src/leetCodeExecutor.ts
index 373bda11..f4080a95 100644
--- a/src/leetCodeExecutor.ts
+++ b/src/leetCodeExecutor.ts
@@ -75,18 +75,22 @@ class LeetCodeExecutor {
);
}
- public async showProblem(node: IProblem, language: string, outDir: string): Promise {
- const fileName: string = genFileName(node, language);
+ public async showProblem(problemNode: IProblem, language: string, outDir: string): Promise {
+ const fileName: string = genFileName(problemNode, language);
const filePath: string = path.join(outDir, fileName);
if (!await fse.pathExists(filePath)) {
- const codeTemplate: string = await this.executeCommandWithProgressEx("Fetching problem data...", "node", [await this.getLeetCodeBinaryPath(), "show", node.id, "-cx", "-l", language]);
+ const codeTemplate: string = await this.executeCommandWithProgressEx("Fetching problem data...", "node", [await this.getLeetCodeBinaryPath(), "show", problemNode.id, "-cx", "-l", language]);
await fse.writeFile(filePath, codeTemplate);
}
return filePath;
}
+ public async getDescription(problemNode: IProblem): Promise {
+ return await this.executeCommandWithProgressEx("Fetching problem description...", "node", [await this.getLeetCodeBinaryPath(), "show", problemNode.id, "-x"]);
+ }
+
public async listSessions(): Promise {
return await this.executeCommandEx("node", [await this.getLeetCodeBinaryPath(), "session"]);
}
diff --git a/src/leetCodePreviewProvider.ts b/src/leetCodePreviewProvider.ts
new file mode 100644
index 00000000..5d418a8f
--- /dev/null
+++ b/src/leetCodePreviewProvider.ts
@@ -0,0 +1,107 @@
+import { commands, Disposable, ExtensionContext, ViewColumn, WebviewPanel, window } from "vscode";
+import { leetCodeExecutor } from "./leetCodeExecutor";
+import { IProblem } from "./shared";
+class LeetCodePreviewProvider implements Disposable {
+
+ private context: ExtensionContext;
+ private panel: WebviewPanel | undefined;
+
+ public initialize(context: ExtensionContext): void {
+ this.context = context;
+ }
+
+ public async preview(node: IProblem): Promise {
+ if (!this.panel) {
+ const panelType: string = "previewProblem";
+ const panelTitle: string = node.name;
+ this.panel = window.createWebviewPanel(panelType, panelTitle, ViewColumn.Active, {
+ enableScripts: true,
+ enableCommandUris: true,
+ enableFindWidget: true,
+ retainContextWhenHidden: true,
+ });
+ }
+
+ this.panel.onDidDispose(() => {
+ this.panel = undefined;
+ }, null, this.context.subscriptions);
+
+ this.panel.webview.onDidReceiveMessage(async (message: IWebViewMessage) => {
+ switch (message.command) {
+ case "ShowProblem":
+ await commands.executeCommand("leetcode.showProblem", node);
+ this.dispose();
+ return;
+ }
+ });
+ this.panel.webview.html = await this.provideHtmlContent(node);
+ }
+
+ public dispose(): void {
+ if (this.panel) {
+ this.panel.dispose();
+ }
+ }
+
+ public async provideHtmlContent(node: IProblem): Promise {
+ return await this.renderHTML(node);
+ }
+
+ private async renderHTML(node: IProblem): Promise {
+ const description: string = await leetCodeExecutor.getDescription(node);
+ const descriptionHTML: string = description.replace(/\n/g, "
");
+ const htmlTemplate: string = `
+
+
+
+
+
+ Preview Problem
+
+
+
+
+ ${ descriptionHTML}
+
+
+
+
+
+ `;
+ return htmlTemplate;
+ }
+
+}
+export interface IWebViewMessage {
+ command: string;
+}
+
+export const leetCodePreviewProvider: LeetCodePreviewProvider = new LeetCodePreviewProvider();
From be4f2d535ce938d4c1774ede3b3dbe4c4d122517 Mon Sep 17 00:00:00 2001
From: Sheng Chen
Date: Wed, 13 Mar 2019 15:35:18 +0800
Subject: [PATCH 017/163] [bugfix] Correct the content shown in status-bar
(#202)
---
src/leetCodeManager.ts | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/leetCodeManager.ts b/src/leetCodeManager.ts
index 1db3f5e2..7356bf05 100644
--- a/src/leetCodeManager.ts
+++ b/src/leetCodeManager.ts
@@ -24,7 +24,7 @@ class LeetCodeManager extends EventEmitter {
public async getLoginStatus(): Promise {
try {
const result: string = await leetCodeExecutor.getUserInfo();
- this.currentUser = result.slice("You are now login as".length).trim();
+ this.currentUser = this.tryParseUserName(result);
this.userStatus = UserStatus.SignedIn;
} catch (error) {
this.currentUser = undefined;
@@ -117,6 +117,16 @@ class LeetCodeManager extends EventEmitter {
public getUser(): string | undefined {
return this.currentUser;
}
+
+ private tryParseUserName(output: string): string {
+ const reg: RegExp = /^\s*.\s*(.+?)\s*https:\/\/leetcode/m;
+ const match: RegExpMatchArray | null = output.match(reg);
+ if (match && match.length === 2) {
+ return match[1].trim();
+ }
+
+ return "Unknown";
+ }
}
export const leetCodeManager: LeetCodeManager = new LeetCodeManager();
From 9164acbaf4ebbee6dd363680a360132f060755e4 Mon Sep 17 00:00:00 2001
From: Sheng Chen
Date: Wed, 13 Mar 2019 16:47:27 +0800
Subject: [PATCH 018/163] Add sponsor
---
README.md | 3 +++
docs/README_zh-CN.md | 3 +++
docs/imgs/sponsor_coding.jpg | Bin 0 -> 194114 bytes
3 files changed, 6 insertions(+)
create mode 100644 docs/imgs/sponsor_coding.jpg
diff --git a/README.md b/README.md
index 7f953679..5995d759 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,9 @@
+## Sponsor
+[](https://e.coding.net/?utm_source=leetcode)
+
- [English Document](#Requirements)
- [中文文档](https://github.com/jdneo/vscode-leetcode/blob/master/docs/README_zh-CN.md)
diff --git a/docs/README_zh-CN.md b/docs/README_zh-CN.md
index b1e8cec5..1c61d43b 100644
--- a/docs/README_zh-CN.md
+++ b/docs/README_zh-CN.md
@@ -20,6 +20,9 @@
+## Sponsor
+[](https://e.coding.net/?utm_source=leetcode)
+
- [English Document](#Requirements)
- [中文文档](https://github.com/jdneo/vscode-leetcode/blob/master/docs/README_zh-CN.md)
diff --git a/docs/imgs/sponsor_coding.jpg b/docs/imgs/sponsor_coding.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e6ee2385712092cd8c50b61bbf48e8993ce9b346
GIT binary patch
literal 194114
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
RBE00c?)VMB!dWAwS$QmmQWY2iiZu<|57k5%WvL
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